Repository: Mint-green/UnlearnableWord Branch: master Commit: b7aabd362e13 Files: 111 Total size: 1.9 MB Directory structure: gitextract_osqeb7xx/ ├── .eslintrc.js ├── LICENSE ├── README.md ├── cloudfunctions/ │ ├── statisticRouter/ │ │ ├── config.json │ │ ├── index.js │ │ ├── package.json │ │ └── utils/ │ │ └── response_content.js │ ├── userRouter/ │ │ ├── config.json │ │ ├── index.js │ │ ├── package.json │ │ └── utils/ │ │ ├── default_avatar_pic.js │ │ ├── init_of_matrix.js │ │ └── response_content.js │ └── wordRouter/ │ ├── config.json │ ├── index.js │ ├── package.json │ └── utils/ │ ├── format_time.js │ ├── get_all_sort_list.js │ ├── response_content.js │ └── sm-5.js ├── miniprogram/ │ ├── app.js │ ├── app.json │ ├── app.wxss │ ├── components/ │ │ ├── cloudTipModal/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── ec-canvas/ │ │ │ ├── ec-canvas.js │ │ │ ├── ec-canvas.json │ │ │ ├── ec-canvas.wxml │ │ │ ├── ec-canvas.wxss │ │ │ ├── echarts.js │ │ │ ├── echartsForBar.js │ │ │ └── wx-canvas.js │ │ ├── image-cropper/ │ │ │ ├── image-cropper.js │ │ │ ├── image-cropper.json │ │ │ ├── image-cropper.wxml │ │ │ └── image-cropper.wxss │ │ └── mp-progress/ │ │ ├── mp-progress.js │ │ ├── mp-progress.json │ │ ├── mp-progress.wxml │ │ └── progress.js │ ├── envList.js │ ├── lib/ │ │ ├── runtime/ │ │ │ └── runtime.js │ │ └── sm-5.js │ ├── pages/ │ │ ├── image_cropper/ │ │ │ ├── image_cropper.js │ │ │ ├── image_cropper.json │ │ │ ├── image_cropper.less │ │ │ ├── image_cropper.wxml │ │ │ └── image_cropper.wxss │ │ ├── index/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── learning/ │ │ │ ├── learning.js │ │ │ ├── learning.json │ │ │ ├── learning.less │ │ │ ├── learning.wxml │ │ │ └── learning.wxss │ │ ├── login/ │ │ │ ├── login.js │ │ │ ├── login.json │ │ │ ├── login.less │ │ │ ├── login.wxml │ │ │ └── login.wxss │ │ ├── overview/ │ │ │ ├── overview.js │ │ │ ├── overview.json │ │ │ ├── overview.less │ │ │ ├── overview.wxml │ │ │ └── overview.wxss │ │ ├── review/ │ │ │ ├── review.js │ │ │ ├── review.json │ │ │ ├── review.less │ │ │ ├── review.wxml │ │ │ └── review.wxss │ │ ├── search/ │ │ │ ├── search.js │ │ │ ├── search.json │ │ │ ├── search.less │ │ │ ├── search.wxml │ │ │ └── search.wxss │ │ ├── user/ │ │ │ ├── user.js │ │ │ ├── user.json │ │ │ ├── user.less │ │ │ ├── user.wxml │ │ │ └── user.wxss │ │ ├── user_settings/ │ │ │ ├── user_settings.js │ │ │ ├── user_settings.json │ │ │ ├── user_settings.less │ │ │ ├── user_settings.wxml │ │ │ └── user_settings.wxss │ │ ├── word_detail/ │ │ │ ├── word_detail.js │ │ │ ├── word_detail.json │ │ │ ├── word_detail.less │ │ │ ├── word_detail.wxml │ │ │ └── word_detail.wxss │ │ └── word_list/ │ │ ├── word_list.js │ │ ├── word_list.json │ │ ├── word_list.less │ │ ├── word_list.wxml │ │ └── word_list.wxss │ ├── sitemap.json │ ├── static/ │ │ ├── color.wxss │ │ └── iconfont.wxss │ └── utils/ │ ├── color.js │ ├── format_time.js │ ├── response_content.js │ ├── userApi.js │ ├── wordApi.js │ └── word_utils.js ├── project.config.json └── project.private.config.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .eslintrc.js ================================================ /* * Eslint config file * Documentation: https://eslint.org/docs/user-guide/configuring/ * Install the Eslint extension before using this feature. */ module.exports = { env: { es6: true, browser: true, node: true, }, ecmaFeatures: { modules: true, }, parserOptions: { ecmaVersion: 2018, sourceType: 'module', }, globals: { wx: true, App: true, Page: true, getCurrentPages: true, getApp: true, Component: true, requirePlugin: true, requireMiniProgram: true, }, // extends: 'eslint:recommended', rules: {}, } ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2022 Mint-green Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # 学不会单词 一个背单词小程序 ### 词汇数据来源 [ECDICT](https://github.com/skywind3000/ECDICT) ### 简介 这是一个背单词小程序,是仿**不背单词**App做的(因为不背的UI真的太好看了),词库是刚好找到了大佬的**ECDICT**项目,把这些数据稍微做了些处理导入了数据库。 主要实现搜索,学习单词,复习单词,统计,登录等功能。 ### 整体结构 ![框架](./images/整体框架图.png) ### 功能模块及页面 - [x] 登录模块(支持账号密码、微信登录&注册) - [x] 主页 - [x] 每日一句(获取&发音) - [x] 主页显示需要背以及复习的量 - [x] 概述页 - [x] 显示相关基础及统计数据(词书、已背数量等) - [x] 切换词书 - [x] 查看所有学过/未学习的单词等各项统计的单词队列 - [x] 收藏夹 - [x] 每日任务 - [x] ECharts显示历史学习记录 - [x] 个人主页 - [x] 个人信息更改(头像、昵称、密码) - [x] 单词详情页 - [x] 搜索模块 - [x] 用英文搜索(前缀、搜原型、空格模糊搜索) - [x] 中文释义进行搜索(直接当空格模糊使,近义词替代和自动分词太难了没做) - [x] 历史搜索 - [x] 切换大小词库(小的快/大的全) - [x] 学习/复习单词 - [x] 三种题型(看词选义、看词识义、看义识词) - [x] 遮挡单词or词义样式(倒计时自动取消or遮挡条点击取消) - [x] 循环逻辑及实现 - [x] 跳过or设置为已掌握 - [x] 复习时间间隔算法(参考SuperMemo系列SM-5算法) - [ ] 拼写页面 - [x] 设置页 ### 效果图 首页登录前  个人页登录前  登录页  首页登录后  个人页登录后 图名1 概览页登录后1  概览页登录后2  单词列表  学习/复习页1  学习/复习页2 图名2 学习/复习页3  学习/复习页4  学习/复习页5  学习/复习页6  搜索页 图名3 小词库搜索  大词库搜索  释义搜索  单词详情  设置页 图名4 ### 体验 ~~想要玩一下的可以扫描以下二维码~~: 小程序二维码 由于微信要取消云开发基础套餐的免费使用了,而本人暂无精力完善此项目,这个月(22.10)20号会清除本项目的云开发数据,目前已将已有数据备份,有机会会再放出来给大家体验的! 不过还是老样子,大家有什么需求或问题都可以提一下issue,我会竭力帮大家解决的~ ### 自行部署 1. 由于本项目依托微信小程序提供的云开发能力,因此需要一些注册等的基本操作,可以参考我的另一个项目...的指引,如果会申请小程序使用云开发能力的可以朋友可以略过这一步:[GuGuMusic的使用方法](https://github.com/Mint-green/GuGumusic#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95) 2. 下载基础数据库的文件,最近还是没能力完善说明各个表格的具体字段等,大家可以查看数据后大致判断,[度盘链接](https://pan.baidu.com/s/1LR6Q6BojBTQ0ywWiJVFX6w),提取码:dddd 3. cloudfunctions文件夹在的云函数右键部署,在云开发服务的地方也按照2中的文档建好并导入需要的数据后,应该就可以用了 ### 更多 最近比较忙,先简单列列已完成的and放放效果图(请原谅我放那么多图),详细的介绍之后再上,持续更新ing~ 有问题都可以提问,有什么想法也可以提一提呀~ ### 更新日志 **22.10.02** 修复第一个用户(普通/微信)无法创建成功问题 **22.10.02** 由于微信调整云开发计费规则,本项目小程序测试版将于22年10月中旬停止开放 ================================================ FILE: cloudfunctions/statisticRouter/config.json ================================================ { "permissions": { "openapi": [ ] } } ================================================ FILE: cloudfunctions/statisticRouter/index.js ================================================ // 云函数入口文件 const cloud = require('wx-server-sdk') const TcbRouter = require('tcb-router') // 导入小程序路由 const rescontent = require('utils/response_content.js') cloud.init({ env: 'music-cloud-1v7x1' }) // 此处请切换为你自己的小程序云环境 id const db = cloud.database({ throwOnNotFound: false }) const _ = db.command const $ = db.command.aggregate // 云函数入口函数 exports.main = async (event, context) => { // const wxContext = cloud.getWXContext() const app = new TcbRouter({ event }) console.log(event.$url) app.use(async (ctx, next) => { console.log('router name:', event.$url) await next() // 执行下一中间件 }); app.router('getWBLearnData', async (ctx, next) => { let user_id = event.user_id let wd_bk_id = event.wd_bk_id try { // 某书的学习情况(区分未学习、学习中、已掌握)(原方案耗时较长,使用两个同步查询替换) // let res = await db.collection('word_in_book') // .aggregate() // .match({ // 从词书与单词的关系表里获取当前学习的书的所有单词 // wd_bk_id: wd_bk_id // }) // .lookup({ // lookup-1,从学习记录中匹配学过的单词 // from: 'learning_record', // let: { // wordId: '$word_id', // }, // pipeline: $.pipeline() // .match(_.expr($.and([ // $.eq(['$user_id', user_id]), // $.eq(['$word_id', '$$wordId']), // ]))) // .done(), // as: 'word_list' // }) // .replaceRoot({ // newRoot: $.mergeObjects([$.arrayElemAt(['$word_list', 0]), '$$ROOT']) // }) // .group({ // _id: { // list_size: $.size('$word_list'), // is_master: '$master' // }, // num: $.sum(1) // }) // .end() let learnedRes = db.collection('learning_record') .aggregate() .match({ // 从学习记录中筛选当前用户学过的所有单词 user_id: user_id, }) .lookup({ // lookup-1,从词书词表中匹配在所学词书中的单词 from: 'word_in_book', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$wd_bk_id', wd_bk_id]), $.eq(['$word_id', '$$wordId']), ]))) .done(), as: 'word_list' }) .match(_.expr( // 匹配已经学过的单词 $.eq([$.size('$word_list'), 1]), )) .group({ // 根据是否掌握分类并计数 _id: '$master', num: $.sum(1) }) .end() // {list:[{_id:true, num:xxx}, {_id:false, num:xxx}]} let totalRes = db.collection('word_in_book') .aggregate() .match({ wd_bk_id: wd_bk_id }) .count('total') .end() // {list:[{total:xxx}]} let resList = await Promise.all([learnedRes, totalRes]) let bkLearnData = { notLearn: 0, learn: 0, master: 0 } for (let i = 0; i < resList[0].list.length; i++) { if (resList[0].list[i]['_id']) { bkLearnData.master = resList[0].list[i].num } bkLearnData.learn += resList[0].list[i].num } let total = 0 if (resList[1].list.length > 0 && resList[1].list[0].total >= 0) total = resList[1].list[0].total bkLearnData.notLearn = total - bkLearnData.learn ctx.body = { ...rescontent.SUCCESS, data: bkLearnData } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getAllWBData', async (ctx, next) => { try { let total = (await db.collection('word_book').count()).total let batchTimes = Math.ceil(total / 10) let tasks = [] for (let i = 0; i < batchTimes; i++) { let promise = db.collection('word_book').skip(i * 10).limit(10).get() tasks.push(promise) } let resList = await (await Promise.all(tasks)).reduce((acc, currentValue, i) => { console.log('batch', i, 'done') return { data: acc.data.concat(currentValue.data), errMsg: acc.errMsg, } }, { data: [] }) ctx.body = { ...rescontent.SUCCESS, data: resList.data } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getSingleWBData', async (ctx, next) => { let wd_bk_id = event.wd_bk_id try { let res = await db.collection('word_book').where({ wd_bk_id }).get() let bkDetail = { name: res.data[0].name, description: res.data[0].description, total: res.data[0].total, coverType: res.data[0].cover_type } if (bkDetail.coverType == 'color') { bkDetail.color = res.data[0].color } else if (bkDetail.coverType == 'pic') { bkDetail.coverUrl = res.data[0].cover_url } ctx.body = { ...rescontent.SUCCESS, data: bkDetail } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getAllLearnData', async (ctx, next) => { let user_id = event.user_id try { let res = await db.collection('learning_record') .aggregate() .match({ // 从词书与单词的关系表里获取当前学习的所有单词 user_id: user_id, }) .group({ _id: '$master', num: $.sum(1) }) .end() let allLearnData = { learn: 0, master: 0 } for (let i = 0; i < res.list.length; i++) { allLearnData.learn += res.list[i].num if (res.list[i]['_id']) allLearnData.master = res.list[i].num } ctx.body = { ...rescontent.SUCCESS, data: allLearnData } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getTodayLearnData', async (ctx, next) => { let user_id = event.user_id let now = new Date() now.setMilliseconds(0) now.setSeconds(0) now.setMinutes(0) now.setHours(0) let date = now.getTime() try { let res = await db.collection('daily_sum') .aggregate() .match({ // 获取时间为当天的学习数据 user_id: user_id, date, }) .project({ _id: 0, l_time: 1, learn: 1, review: 1, }) .end() let data = { l_time: 0, learn: 0, review: 0, } if (res.list.length != 0) data = res.list[0] ctx.body = { ...rescontent.SUCCESS, data } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getDailySum', async (ctx, next) => { let user_id = event.user_id let skip = event.skip if (skip == undefined) skip = 0 let now = new Date().getTime() try { let res = await db.collection('daily_sum') .where({ user_id: user_id, date: _.lte(now) }) // .count() .field({ _id: false, date: true, learn: true, review: true, }) .orderBy('date', 'desc') .skip(skip) .limit(10) .get() // 当判断到获取数量少于10(包括0)则表示已经取完了 ctx.body = { ...rescontent.SUCCESS, data: res.data } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getNoteBookWord', async (ctx, next) => { let user_id = event.user_id let skip = event.skip if (skip == undefined) skip = 0 let getNum = event.num if (getNum == undefined) getNum = 20 let batchTimes = Math.ceil(getNum / 10) try { let tasks = [] for (let i = 0; i < batchTimes; i++) { let num = i * 10 + 10 > getNum ? getNum - (i * 10) : 10 let skipNum = skip + i * 10 let promise = db.collection('notebook') .aggregate() .match({ user_id: user_id, }) .project({ _id: 0, word_id: 1, }) .lookup({ // 从单词库中获取单词信息,默认从word找,没有再单独取word_all找 from: 'word', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr( $.eq(['$word_id', '$$wordId']), )) .project({ _id: 0, word: 1, translation: 1, }) .done(), as: 'word_detail' }) .skip(skipNum) .limit(num) .end() tasks.push(promise) } let resList = (await Promise.all(tasks)).reduce((acc, currentValue, index) => { // console.log(acc) acc = acc.concat(currentValue.list) // console.log(currentValue) return acc }, []) // console.log('resList', resList) let notInSmallDB = [] let notInSmallDBIndex = [] let data = [] for (let i = 0; i < resList.length; i++) { let translation = '' let word = '' if (resList[i].word_detail.length == 0) { notInSmallDB.push(resList[i].word_id) notInSmallDBIndex.push(i) } else { translation = resList[i].word_detail[0].translation word = resList[i].word_detail[0].word } data.push({ word_id: resList[i].word_id, word, translation }) } // console.log('data', data) // 接下来进行小数据库中找不到的词的数据获取 if (notInSmallDB.length > 0) { let res = await db.collection('word_all') .aggregate() .match({ word_id: _.in(notInSmallDB), }) .project({ _id: 0, word_id: 1, word: 1, translation: 1, }) .end() for (let j = 0; j < res.list.length; j++) { let i = notInSmallDB.indexOf(res.list[j].word_id) let index = notInSmallDBIndex[i] data[index] = { word_id: res.list[j].word_id, word: res.list[j].word, translation: res.list[j].translation } } } ctx.body = { ...rescontent.SUCCESS, data: data } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getBkLearnedWord', async (ctx, next) => { let user_id = event.user_id let wd_bk_id = event.wd_bk_id let skip = event.skip if (!skip) skip = 0 try { let res = await db.collection('learning_record') .aggregate() .match({ user_id: user_id, }) .lookup({ // lookup-1,筛选在所学词书中的单词 from: 'word_in_book', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$wd_bk_id', wd_bk_id]), $.eq(['$word_id', '$$wordId']), ]))) .done(), as: 'word_list' }) .match(_.expr( $.eq([$.size('$word_list'), 1]), )) .skip(skip) .limit(20) .lookup({ // lookup-2,获取已取得单词的详细信息 from: 'word', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr( $.eq(['$word_id', '$$wordId']), )) .project({ _id: 0, word: 1, translation: 1, }) .done(), as: 'word_detail' }) .replaceRoot({ newRoot: $.mergeObjects([$.arrayElemAt(['$word_detail', 0]), '$$ROOT']) }) .project({ _id: 0, word: 1, word_id: 1, translation: 1, }) .end() ctx.body = { ...rescontent.SUCCESS, data: res.list } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getBkMasteredWord', async (ctx, next) => { let user_id = event.user_id let wd_bk_id = event.wd_bk_id let skip = event.skip if (!skip) skip = 0 try { let res = await db.collection('learning_record') .aggregate() .match({ user_id: user_id, master: true, }) .lookup({ // lookup-1,筛选在某本书里的单词 from: 'word_in_book', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$wd_bk_id', wd_bk_id]), $.eq(['$word_id', '$$wordId']), ]))) .done(), as: 'word_list' }) .match(_.expr( $.eq([$.size('$word_list'), 1]), )) .skip(skip) .limit(20) .lookup({ // lookup-2,获取已取得单词的详细信息 from: 'word', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr( $.eq(['$word_id', '$$wordId']), )) .project({ _id: 0, word: 1, translation: 1, }) .done(), as: 'word_detail' }) .replaceRoot({ newRoot: $.mergeObjects([$.arrayElemAt(['$word_detail', 0]), '$$ROOT']) }) .project({ _id: 0, word: 1, word_id: 1, translation: 1, }) .end() ctx.body = { ...rescontent.SUCCESS, data: res.list } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getBkUnlearnedWord', async (ctx, next) => { let user_id = event.user_id let wd_bk_id = event.wd_bk_id // console.log('user_id', user_id) // console.log('wd_bk_id', wd_bk_id) let skip = event.skip if (!skip) skip = 0 try { let res = await db.collection('word_in_book') .aggregate() .match({ wd_bk_id: wd_bk_id, }) .sort({ wd_index: 1, }) .lookup({ // lookup-1,筛选在未学过的单词 from: 'learning_record', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$user_id', user_id]), $.eq(['$word_id', '$$wordId']), ]))) .done(), as: 'word_list' }) .match(_.expr( $.eq([$.size('$word_list'), 0]), )) .skip(skip) .limit(20) .lookup({ // lookup-2,获取已取得单词的详细信息 from: 'word', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr( $.eq(['$word_id', '$$wordId']), )) .project({ _id: 0, word: 1, translation: 1, }) .done(), as: 'word_detail' }) .replaceRoot({ newRoot: $.mergeObjects([$.arrayElemAt(['$word_detail', 0]), '$$ROOT']) }) .project({ _id: 0, word: 1, word_id: 1, translation: 1, }) .end() ctx.body = { ...rescontent.SUCCESS, data: res.list } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getBkWord', async (ctx, next) => { let wd_bk_id = event.wd_bk_id let skip = event.skip if (!skip) skip = 0 try { let res = await db.collection('word_in_book') .aggregate() .match({ wd_bk_id: wd_bk_id, }) .sort({ wd_index: 1, }) .skip(skip) .limit(20) .lookup({ // lookup-2,获取已取得单词的详细信息 from: 'word', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr( $.eq(['$word_id', '$$wordId']), )) .project({ _id: 0, word: 1, translation: 1, }) .done(), as: 'word_detail' }) .replaceRoot({ newRoot: $.mergeObjects([$.arrayElemAt(['$word_detail', 0]), '$$ROOT']) }) .project({ _id: 0, word: 1, word_id: 1, translation: 1, }) .end() ctx.body = { ...rescontent.SUCCESS, data: res.list } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getLearnedWord', async (ctx, next) => { let user_id = event.user_id let skip = event.skip if (!skip) skip = 0 try { let res = await db.collection('learning_record') .aggregate() .match({ user_id: user_id, }) .skip(skip) .limit(20) .lookup({ // 获取已取得单词的详细信息 from: 'word', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr( $.eq(['$word_id', '$$wordId']), )) .project({ _id: 0, word: 1, translation: 1, }) .done(), as: 'word_detail' }) .replaceRoot({ newRoot: $.mergeObjects([$.arrayElemAt(['$word_detail', 0]), '$$ROOT']) }) .project({ _id: 0, word: 1, word_id: 1, translation: 1, }) .end() ctx.body = { ...rescontent.SUCCESS, data: res.list } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getMasteredWord', async (ctx, next) => { let user_id = event.user_id let skip = event.skip if (!skip) skip = 0 try { let res = await db.collection('learning_record') .aggregate() .match({ user_id: user_id, master: true, }) .skip(skip) .limit(20) .lookup({ // 获取已取得单词的详细信息 from: 'word', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr( $.eq(['$word_id', '$$wordId']), )) .project({ _id: 0, word: 1, translation: 1, }) .done(), as: 'word_detail' }) .replaceRoot({ newRoot: $.mergeObjects([$.arrayElemAt(['$word_detail', 0]), '$$ROOT']) }) .project({ _id: 0, word: 1, word_id: 1, translation: 1, }) .end() ctx.body = { ...rescontent.SUCCESS, data: res.list } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getReviewWord', async (ctx, next) => { const user_id = event.user_id let skip = event.skip if (!skip) skip = 0 try { let res = await db.collection('learning_record') .aggregate() .match({ // 选取还未掌握的单词 user_id: user_id, master: false, }) .skip(skip) .limit(20) .lookup({ // 获取取得的单词的详细数据 from: 'word', localField: 'word_id', foreignField: 'word_id', as: 'word_detail' }) .replaceRoot({ // 把单词详情合并到对象属性中 newRoot: $.mergeObjects([$.arrayElemAt(['$word_detail', 0]), '$$ROOT']) }) .project({ _id: 0, word_id: 1, word: 1, translation: 1, }) .end() ctx.body = { ...rescontent.SUCCESS, data: res.list } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getTodayLearnWord', async (ctx, next) => { const user_id = event.user_id let skip = event.skip if (!skip) skip = 0 let now = new Date() now.setMilliseconds(0) now.setSeconds(0) now.setMinutes(0) now.setHours(0) let date = now.getTime() try { let res = await db.collection('learning_record') .aggregate() .match({ // 选取还未掌握的单词 user_id: user_id, c_time: date, }) .skip(skip) .limit(20) .lookup({ // 获取取得的单词的详细数据 from: 'word', localField: 'word_id', foreignField: 'word_id', as: 'word_detail' }) .replaceRoot({ // 把单词详情合并到对象属性中 newRoot: $.mergeObjects([$.arrayElemAt(['$word_detail', 0]), '$$ROOT']) }) .project({ _id: 0, word_id: 1, word: 1, translation: 1, }) .end() ctx.body = { ...rescontent.SUCCESS, data: res.list } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getTodayReviewWord', async (ctx, next) => { const user_id = event.user_id let skip = event.skip if (!skip) skip = 0 let now = new Date() now.setMilliseconds(0) now.setSeconds(0) now.setMinutes(0) now.setHours(0) let date = now.getTime() try { let res = await db.collection('learning_record') .aggregate() .match({ // 选取还未掌握的单词 user_id: user_id, last_l: date, c_time: _.neq(date), }) .skip(skip) .limit(20) .lookup({ // 获取取得的单词的详细数据 from: 'word', localField: 'word_id', foreignField: 'word_id', as: 'word_detail' }) .replaceRoot({ // 把单词详情合并到对象属性中 newRoot: $.mergeObjects([$.arrayElemAt(['$word_detail', 0]), '$$ROOT']) }) .project({ _id: 0, word_id: 1, word: 1, translation: 1, }) .end() ctx.body = { ...rescontent.SUCCESS, data: res.list } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) return app.serve() } ================================================ FILE: cloudfunctions/statisticRouter/package.json ================================================ { "name": "statisticRouter", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "wx-server-sdk": "~2.5.3", "tcb-router": "^1.1.2" } } ================================================ FILE: cloudfunctions/statisticRouter/utils/response_content.js ================================================ const SUCCESS = { errorcode: 100, errormsg: "success" } //成功 const LOGINOK = { errorcode: 1, errormsg: "Login successfully" } //登录成功 const REGISTEROK= { errorcode: 2, errormsg: "Register successfully" } //注册成功 const DBERR = { errorcode: -1, errormsg: "Database error!" } //数据库操作失败 const ROUTERERR = { errorcode: -2, errormsg: "Wrong router name" } //路由名字有误 const LOGINERR = { errorcode: -3, errormsg: "Wrong username or pwd" } //登录信息有误 const DATAERR = { errorcode: -4, errormsg: "Wrong data!" } //数据有误 const UNKOWNERR = { errorcode: -100, errormsg: "Unkown error!" } //出现未知错误 module.exports={ SUCCESS: SUCCESS, LOGINOK: LOGINOK, REGISTEROK: REGISTEROK, DBERR: DBERR, ROUTERERR: ROUTERERR, LOGINERR: LOGINERR, DATAERR: DATAERR, UNKOWNERR: UNKOWNERR, } ================================================ FILE: cloudfunctions/userRouter/config.json ================================================ { "permissions": { "openapi": [ ] } } ================================================ FILE: cloudfunctions/userRouter/index.js ================================================ // 云函数入口文件 const cloud = require('wx-server-sdk') const TcbRouter = require('tcb-router') // 导入小程序路由 const rescontent = require('utils/response_content.js') const InitOFMatrix = require('utils/init_of_matrix.js') const DefaultAvatarList = require('utils/default_avatar_pic.js') cloud.init({ env: 'music-cloud-1v7x1' }) // 此处请切换为你自己的小程序云环境 id const db = cloud.database({ throwOnNotFound: false }) const learnerDB = db.collection('learner') // 云函数入口函数 exports.main = async (event, context) => { const app = new TcbRouter({ event }) // console.log('event:', event) // console.log('context:', context) // app.use 表示该中间件会适用于所有的路由 app.use(async (ctx, next) => { console.log('router name:', event.$url) await next() // 执行下一中间件 }); app.router('checkUsername', async (ctx, next) => { let username = event.username try { let res = await learnerDB.where({ username }).get() let isFind = false if (res.data.length > 0) { isFind = true } ctx.body = { ...rescontent.SUCCESS, data: { isFind } } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('register', async (ctx, next) => { let userinfo = {} // 构建新用户记录对象 let time = new Date() console.log('Start handling request', time.getTime()) userinfo.username = event.username userinfo.pwd = event.pwd userinfo.c_time = time.toISOString() userinfo.last_login = userinfo.c_time userinfo.l_book_id = -1 userinfo.settings = {} userinfo.open_id = '' userinfo.wx_user = false random_num = Math.floor(Math.random() * DefaultAvatarList.length) userinfo.avatar_pic = DefaultAvatarList[random_num] || DefaultAvatarList[0] userinfo.of_matrix = InitOFMatrix try { let res1 = await learnerDB.orderBy('user_id', 'desc').limit(1).get() // 获得当前最大的user_id if (res1.data.length == 0) { console.log('there\'s no other user, this is the first user his/her id will be 0') userinfo.user_id = 0 } else { console.log('Get last user_id, which is', res1.data[0].user_id, 'then creating account', new Date().getTime()) userinfo.user_id = res1.data[0].user_id + 1 } let res2 = await learnerDB.add({ data: userinfo }) // 向数据库添加新用户记录 if (!res2._id) { ctx.body = { ...rescontent.DBERR } return } console.log('Create successfully, done.', new Date().getTime()) let returnInfo = { username: userinfo.username, last_login: userinfo.last_login, l_book_id: userinfo.l_book_id, settings: userinfo.settings, wx_user: userinfo.wx_user, avatar_pic: userinfo.avatar_pic, user_id: userinfo.user_id, } ctx.body = { ...rescontent.REGISTEROK, data: returnInfo } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('login', async (ctx, next) => { let time = new Date() console.log('Start handling request', time.getTime()) let last_login = time.toISOString() try { let res1 = await learnerDB.where({ username: event.username, pwd: event.pwd, }).limit(1).field({ // 获取用户的基本数据(user_id、词书、设置等) _id: false, c_time: false, open_id: false, pwd: false, of_matrix: false, }).get() if (res1.data.toString() == "") { ctx.body = { ...rescontent.LOGINERR } return } console.log('Get userinfo, then update login time', new Date().getTime()) // console.log(res1) let res2 = await learnerDB.where({ username: event.username, pwd: event.pwd, }).update({ data: { last_login: last_login } }) // console.log(res2) if (res2.stats.updated == 0) { ctx.body = { ...rescontent.DBERR } return } console.log('Done', new Date().getTime()) ctx.body = { ...rescontent.LOGINOK, data: res1.data[0] } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('wxLogin', async (ctx, next) => { let time = new Date() console.log('Start handling request', time.getTime()) const wxContext = cloud.getWXContext() let open_id = wxContext.OPENID let username = event.username try { let res1 = await learnerDB.where({ open_id }).limit(1).field({ // 尝试获取用户的基本数据(user_id、词书、设置等) _id: false, c_time: false, open_id: false, pwd: false, }).get() if (res1.data.toString() == "") { // 结果为空表示该用户没注册,需要创建相应记录 console.log('User not find, now create an account') let userinfo = {} userinfo.username = username userinfo.pwd = '' userinfo.c_time = time.toISOString() userinfo.last_login = userinfo.c_time userinfo.l_book_id = -1 userinfo.settings = { auto_update_avatar: true, auto_update_username: true } userinfo.open_id = open_id userinfo.wx_user = true userinfo.avatar_pic = event.avatar_pic userinfo.of_matrix = InitOFMatrix let res2 = await learnerDB.orderBy('user_id', 'desc').limit(1).get() if (res2.data.length == 0) { console.log('there\'s no other user, this is the first user his/her id will be 0') userinfo.user_id = 0 } else { console.log('Get last user_id, which is', res2.data[0].user_id, 'then creating account', new Date().getTime()) userinfo.user_id = res2.data[0].user_id + 1 } let res3 = await learnerDB.add({ data: userinfo }) if (!res3._id) { ctx.body = { ...rescontent.DBERR } return } let returnInfo = { username: userinfo.username, last_login: userinfo.last_login, l_book_id: userinfo.l_book_id, settings: userinfo.settings, wx_user: userinfo.wx_user, avatar_pic: userinfo.avatar_pic, user_id: userinfo.user_id, } console.log('Create successfully, done.', new Date().getTime()) ctx.body = { ...rescontent.REGISTEROK, data: returnInfo } return } else { // 结果不为空表示改用户已注册,则更新上次登录时间 console.log('Find user, now update last login time') let data = { last_login: time.toISOString() } if (res1.data[0].settings.auto_update_avatar) { data.avatar_pic = event.avatar_pic res1.data[0].avatar_pic = event.avatar_pic } if (res1.data[0].settings.auto_update_username) { data.username = event.username res1.data[0].username = event.username } let res2 = await learnerDB.where({ open_id: open_id }).update({ data }) if (res2.stats.updated == 0) { ctx.body = { ...rescontent.DBERR } return } console.log('Done', new Date().getTime()) ctx.body = { ...rescontent.LOGINOK, data: res1.data[0] } } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('changeWordBook', async (ctx, next) => { let user_id = event.user_id let wd_bk_id = event.wd_bk_id try { let res = await db.collection('learner') .where({ user_id }) .update({ data: { l_book_id: wd_bk_id, } }) console.log(res) let data = false if (res.stats.updated == 1) { data = true } ctx.body = { ...rescontent.SUCCESS, data: data } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('changeSettings', async (ctx, next) => { let user_id = event.user_id let settings = event.settings try { let res = await db.collection('learner') .where({ user_id }) .update({ data: { settings: settings, } }) console.log(res) let data = false if (res.stats.updated == 1) { data = true } ctx.body = { ...rescontent.SUCCESS, data: data } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('changeUserInfo', async (ctx, next) => { let user_id = event.user_id let fieldName = event.type let value = event.value let validRange = ['username', 'avatar_pic', 'l_book_id', 'settings'] try { let updateData = {} if (typeof (fieldName) == 'string') { if (validRange.indexOf(fieldName) == -1) { ctx.body = { ...rescontent.DATAERR } return } updateData[fieldName] = value } else if (typeof (fieldName) == 'object' && typeof (fieldName[0]) == 'string') { for (let i = 0; i < fieldName.length; i++) { if (validRange.indexOf(fieldName[i]) == -1) { ctx.body = { ...rescontent.DATAERR } return } updateData[fieldName[i]] = value[i] } } else { ctx.body = { ...rescontent.DATAERR } return } let res = await db.collection('learner') .where({ user_id }) .update({ data: updateData }) console.log(res) let data = false if (res.stats.updated == 1) { data = true } ctx.body = { ...rescontent.SUCCESS, data: data } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('changePwd', async (ctx, next) => { let user_id = event.user_id let oldPwd = event.oldPwd let newPwd = event.newPwd try { let res = await db.collection('learner') .where({ user_id, pwd: oldPwd, }) .update({ data: { pwd: newPwd } }) console.log(res) let data = false if (res.stats.updated == 1) { data = true } ctx.body = { ...rescontent.SUCCESS, data: data } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getUserInfoViaId', async (ctx, next) => { let user_id = event.user_id let time = new Date() let last_login = time.toISOString() try { let updateRes = db.collection('learner') .where({ user_id, }).update({ data: { last_login: last_login } }) let getRes = db.collection('learner') .where({ user_id }) .field({ _id: -1, user_id: 1, wx_user: 1, username: 1, avatar_pic: 1, l_book_id: 1, settings: 1, last_login: 1, }) .get() let resList = await Promise.all([updateRes, getRes]) let state = false if (resList[0].stats.updated == 1 && resList[1].data.length == 1) { state = true resList[1].data[0].last_login = last_login } if (state) { ctx.body = { ...rescontent.SUCCESS, data: resList[1].data[0] } } else { ctx.body = { ...rescontent.LOGINERR, data: '自动登录失败' } } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) return app.serve() } ================================================ FILE: cloudfunctions/userRouter/package.json ================================================ { "name": "userRouter", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "tcb-router": "^1.1.2", "wx-server-sdk": "~2.5.3" } } ================================================ FILE: cloudfunctions/userRouter/utils/default_avatar_pic.js ================================================ module.exports = [ 'https://pic2.zhimg.com/50/v2-34395fd10798f4b5bad583d61f98c849_hd.jpg?source=1940ef5c', 'https://pic2.zhimg.com/50/v2-b1e4eb7f72908a04306958f13ce45d94_hd.jpg?source=1940ef5c', 'https://inews.gtimg.com/newsapp_bt/0/13804696252/1000', 'https://inews.gtimg.com/newsapp_bt/0/13808742009/1000' ] ================================================ FILE: cloudfunctions/userRouter/utils/init_of_matrix.js ================================================ module.exports = { '1.3': [5], '1.4': [5], '1.5': [5], '1.6': [5], '1.7': [5], '1.8': [5], '1.9': [5], '2.0': [5], '2.1': [5], '2.2': [5], '2.3': [5], '2.4': [5], '2.5': [5], '2.6': [5], '2.7': [5], '2.8': [5], } ================================================ FILE: cloudfunctions/userRouter/utils/response_content.js ================================================ const SUCCESS = { errorcode: 100, errormsg: "success" } //成功 const LOGINOK = { errorcode: 1, errormsg: "Login successfully" } //登录成功 const REGISTEROK= { errorcode: 2, errormsg: "Register successfully" } //注册成功 const DBERR = { errorcode: -1, errormsg: "Database error!" } //数据库操作失败 const ROUTERERR = { errorcode: -2, errormsg: "Wrong router name" } //路由名字有误 const LOGINERR = { errorcode: -3, errormsg: "Wrong username or pwd" } //登录信息有误 const DATAERR = { errorcode: -4, errormsg: "Wrong data!" } //数据有误 const UNKOWNERR = { errorcode: -100, errormsg: "Unkown error!" } //出现未知错误 module.exports={ SUCCESS: SUCCESS, LOGINOK: LOGINOK, REGISTEROK: REGISTEROK, DBERR: DBERR, ROUTERERR: ROUTERERR, LOGINERR: LOGINERR, DATAERR: DATAERR, UNKOWNERR: UNKOWNERR, } ================================================ FILE: cloudfunctions/wordRouter/config.json ================================================ { "permissions": { "openapi": [ ] } } ================================================ FILE: cloudfunctions/wordRouter/index.js ================================================ // 云函数入口文件 const cloud = require('wx-server-sdk') const TcbRouter = require('tcb-router') // 导入小程序路由 // const request = require('request') const format_time = require('utils/format_time.js') const rescontent = require('utils/response_content.js') const sm_5_js = require('utils/sm-5.js') const get_all_sort_list = require('utils/get_all_sort_list.js') const bent = require('bent') cloud.init({ env: 'music-cloud-1v7x1' }) // 此处请切换为你自己的小程序云环境 id const db = cloud.database({ throwOnNotFound: false }) const _ = db.command const $ = db.command.aggregate cloud.init() // 云函数入口函数 exports.main = async (event, context) => { // const wxContext = cloud.getWXContext() const app = new TcbRouter({ event }) console.log(event.$url) app.use(async (ctx, next) => { console.log('router name:', event.$url) await next() // 执行下一中间件 }); app.router('getDailySentence', async (ctx, next) => { let time = new Date().getTime() console.log(time) let dateStr = format_time.formatDate(time) console.log(dateStr) // let requestUrl = [requestUrl_youdao, requestUrl_iciba, requestUrl_shanbay] // console.log(requestUrl) try { let dailySentenceDB = db.collection('dailySentence') let res = await dailySentenceDB.where({ date: dateStr }).get() if (res.data.toString() != "") { ctx.body = { ...rescontent.SUCCESS, data: res.data[0].dailySentence } return } console.log("Can't find", new Date().getTime()) const getJSON = bent('json') let requestUrl_youdao = 'https://dict.youdao.com/infoline?mode=publish&date=' + dateStr + '&update=auto&apiversion=5.0' let requestUrl_iciba = 'https://sentence.iciba.com/index.php?c=dailysentence&m=getdetail&title=' + dateStr let requestUrl_shanbay = 'https://apiv3.shanbay.com/weapps/dailyquote/quote/?date=' + dateStr let dailySentence = [] let promise1 = getJSON(requestUrl_youdao) let promise2 = getJSON(requestUrl_iciba) let promise3 = getJSON(requestUrl_shanbay) let tasks = [promise1, promise2, promise3] let resList = await Promise.all(tasks) // for Youdao-------------------------------------------------------- let res1 = resList[0] let result_list = res1[dateStr] let dateNum = format_time.dateNum(time) * 10000 let i = 0 for (i; i < result_list.length; i++) { if (result_list[i].startTime - dateNum < 10000 && result_list[i].voice && result_list[i].voice != '') { break } } // console.log('Youdao sentence', result_list[i]) dailySentence.push({ source: 'Youdao', content: result_list[i].title, translation: result_list[i].summary, voiceUrl: result_list[i].voice }) // ------------------------------------------------------------------ // for iCIBA--------------------------------------------------------- let res2 = resList[1] dailySentence.push({ source: 'iCIBA', content: res2.content, translation: res2.note, voiceUrl: res2.tts }) // ------------------------------------------------------------------ // for Shanbay------------------------------------------------------- let res3 = resList[2] dailySentence.push({ source: 'Shanbay', content: res3.content, translation: res3.translation, author: res3.author }) // ------------------------------------------------------------------ console.log("request done", new Date().getTime()) console.log(dailySentence) let t1 = new Date().toISOString() let res4 = await dailySentenceDB.add({ data: { date: dateStr, c_time: t1, dailySentence } }) // if (!res4._id) { // 获取即可,添加失败可让下一位有缘人请求的时候顺便添加 // ctx.body = { ...rescontent.DBERR } // return // } console.log('Recording successfully, done.', new Date().getTime()) ctx.body = { ...rescontent.SUCCESS, data: dailySentence } } catch (e) { console.log(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getSearchResult', async (ctx, next) => { let keyword = event.keyword let DBtype = event.DBtype let DBname = (DBtype == 0) ? 'word' : 'word_all' let getLemma = event.getLemma let skip = event.skip if (getLemma === undefined) getLemma = true if (skip === undefined) skip = 0 let recordLimit = (DBtype == 0) ? 20 : 30 let zhExp = /[\u4e00-\u9fa5]/ let isTranslation = zhExp.test(keyword) keyword = keyword.replace(/-/g, '') keyword = keyword.replace(/\'/g, '\\\'') keyword = keyword.replace(/\./g, '\\\.') try { console.log('keyword:', keyword) if (!isTranslation && keyword.indexOf(' ') == -1) { console.log('don\'t have space') // 无空格情况 // 查找原型 let lemmaSearch = [] if (getLemma) { let lemmaRes = await db.collection('lemma') .where({ words: _.elemMatch(_.eq(keyword)) }) .field({ _id: false, words: false, }) .get() console.log('lemmaRes:', lemmaRes) if (lemmaRes.data.length > 0) { // 若存在原型则获取其释义,首先从将结果转化成原型数组再对数组中的词获取详情 let lemmaWords = [] for (let i = 0; i < lemmaRes.data.length; i++) { lemmaWords.push(lemmaRes.data[i].stem) } let stemDetailRes = await db.collection('word') .where({ word: _.in(lemmaWords) }) .field({ _id: false, word: true, word_id: true, exchange: true, translation: true, }) .get() if (stemDetailRes.data.length != lemmaWords.length) { stemDetailRes = await db.collection('word_all') .where({ word: _.in(lemmaWords) }) .field({ _id: false, word: true, word_id: true, exchange: true, translation: true, }) .get() } lemmaSearch = stemDetailRes.data } console.log('lemmaSearch:', lemmaSearch) } // 使用sw字段进行前缀模糊查找 let exp = new RegExp('^' + keyword + '.*', 'i') // console.log('exp:', exp) let prefixRes = await db.collection(DBname) .where({ strip_word: exp, }) .skip(skip) .limit(recordLimit) .field({ _id: false, word: true, word_id: true, translation: true, }) .get() console.log('prefixRes.data', prefixRes.data) ctx.body = { ...rescontent.SUCCESS, data: { lemmaSearch, directSearch: prefixRes.data } } } else if (!isTranslation) { // 有空格情况,不进行原型查找,将空格换为任意位数通配符进行匹配 // 获取由空格分割的每个部分的索引并求和 let kwSpiltBySpace = keyword.split(' ') keyword = keyword.replace(/ /g, '.*') let exp = new RegExp('^.*' + keyword, 'mi') let indexSumList = [] let accLen = 0 for (let i = 0; i < kwSpiltBySpace.length; i++) { // 进行求索引表达式的数组的构造,为求和做准备 if (kwSpiltBySpace[i] == '') continue if (i > 0) accLen += kwSpiltBySpace[i - 1].length indexSumList.push($.indexOfCP(['$word', kwSpiltBySpace[i], accLen])) // console.log('$.indexOfCP([\'$word\',', kwSpiltBySpace[i], ',', accLen, '])', $.indexOfCP(['$word', kwSpiltBySpace[i], accLen])) } // console.log('indexSumList:', indexSumList) let res = await db.collection(DBname).aggregate() .match({ word: exp, }) .project({ _id: false, word: true, word_id: true, translation: true, // indexsum: $.sum([$.indexOfCP(['$word', 's', 2]), $.indexOfCP(['$word', 't', 3])]) indexSum: $.sum(indexSumList) }) .sort({ indexSum: 1, word_id: 1 }) .skip(skip) .limit(recordLimit) .project({ indexSum: false, }) .end() console.log('res.list', res.list) ctx.body = { ...rescontent.SUCCESS, data: { lemmaSearch: [], directSearch: res.list } } } else { // 中文的情况,直接按照有空格处理 // 将空格换为任意位数通配符进行匹配,同时允许空格切分的中文前后顺序不同 // 获取由空格分割的每个部分的第一个次出现位置索引并求和 let kwSpiltBySpace = keyword.split(' ') kwSpiltBySpace = kwSpiltBySpace.filter(subStr => subStr.length > 0) // 因为释义关键词前后顺序不定,故生成所有排列组合并构造正则表达式 let kwSpiltBySpaceAllList = get_all_sort_list.getAllSortList(kwSpiltBySpace.concat(), kwSpiltBySpace.length, true) let expList = [] for (let k = 0; k < kwSpiltBySpaceAllList.length; k++) { let expStr = '.*' + kwSpiltBySpaceAllList[k].join('.*') + '.*' let exp = new RegExp(expStr, 'mi') expList.push(exp) } // 动态生成 各部分出现次数求和 以及 第一次出现位置的索引的和 的待求和数组 let numSumList = [] let indexSumList = [] for (let i = 0; i < kwSpiltBySpace.length; i++) { if (kwSpiltBySpace[i] == '') continue numSumList.push($.subtract([$.size($.split(['$translation', kwSpiltBySpace[i]])), 1])) indexSumList.push($.indexOfCP(['$translation', kwSpiltBySpace[i]])) } let res = await db.collection(DBname) .aggregate() .match({ // translation: _.or([/.*棒.*球.*/, /.*球.*棒.*/]), translation: _.or(expList), }) .project({ _id: false, word: true, word_id: true, translation: true, // numSum: $.sum([$.size($.split(['$translation', '棒'])), $.size($.split(['$translation', '球']))]), // indexSum: $.sum([$.indexOfCP(['$translation', '棒']), $.split(['$translation', '球'])]) numSum: $.sum(numSumList), indexSum: $.sum(indexSumList), }) .sort({ numSum: -1, indexSum: 1, word_id: 1 }) .skip(skip) .limit(recordLimit) .project({ indexSum: 0, numSum: 0, }) .end() console.log('res.list', res.list) ctx.body = { ...rescontent.SUCCESS, data: { lemmaSearch: [], directSearch: res.list } } } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getwordDetail', async (ctx, next) => { let word_id = event.word_id let user_id = event.user_id let DBname = (word_id > 29999) ? 'word_all' : 'word' try { let res = await db.collection(DBname) .aggregate() .match({ word_id }) .lookup({ // lookup-1,查找该单词是否在对应用户的生词本中 from: 'notebook', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$user_id', user_id]), $.eq(['$word_id', '$$wordId']), ]))) .done(), as: 'in_notebook' }) .lookup({ // lookup-1,查找该词的所有tag及tag名字 from: 'word_in_book', let: { wd_id: '$word_id' }, pipeline: $.pipeline() // 一级lookup,查找该词的所有tag .match(_.expr($.eq(['$word_id', '$$wd_id']))) .project({ _id: 0, wd_bk_id: 1 }) .lookup({ // 二级lookup,查找每个tag的对应名字 from: 'word_book', localField: 'wd_bk_id', foreignField: 'wd_bk_id', as: 'book' }) .replaceRoot({ newRoot: $.mergeObjects([$.arrayElemAt(['$book', 0]), '$$ROOT']) }) .project({ _id: 0, wd_bk_id: 1, tag: 1, name: 1 }) .done(), as: 'tagList', }) .project({ _id: 0, strip_word: 0, }) .end() console.log(res) if (res.list[0].in_notebook.length > 0) { res.list[0].in_notebook = true } else { res.list[0].in_notebook = false } if (res.list.length != 1) { ctx.body = { ...rescontent.DATAERR } } else { ctx.body = { ...rescontent.SUCCESS, data: res.list[0] } } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getBasicLearningData', async (ctx, next) => { let user_id = event.user_id let wd_bk_id = event.wd_bk_id // console.log(event) try { // 获取未学数量(此方案较慢,通过两个同步执行的查询替换,已废弃) // let needToLearnRes = db.collection('word_in_book') // .aggregate() // .match({ // 从词书与单词的关系表里获取当前学习的书的所有单词 // wd_bk_id: wd_bk_id // }) // .lookup({ // lookup-1,从学习记录中匹配学过的单词 // from: 'learning_record', // let: { // wordId: '$word_id', // }, // pipeline: $.pipeline() // .match(_.expr($.and([ // $.eq(['$user_id', user_id]), // $.eq(['$word_id', '$$wordId']), // ]))) // .done(), // as: 'word_list' // }) // .match(_.expr( // 删去已经学过的单词(之前的lookup未匹配到说明没有学过) // $.eq([$.size('$word_list'), 0]), // )) // // .project({ // // _id: 1 // // }) // .count('numToLearn') // .end() // console.log('needToLearnRes', needToLearnRes) // {list:[{needTolearn:xxx}]} let learnedNumRes = db.collection('learning_record') .aggregate() .match({ // 从词书与单词的关系表里获取当前学习的书的所有单词 user_id: user_id, }) .lookup({ // lookup-1,从学习记录中匹配学过的单词 from: 'word_in_book', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$wd_bk_id', wd_bk_id]), $.eq(['$word_id', '$$wordId']), ]))) .done(), as: 'word_list' }) .match(_.expr( // 删去已经学过的单词(之前的lookup未匹配到说明没有学过) $.eq([$.size('$word_list'), 1]), )) .count('learned') .end() // {list:[{learned:xxx}]} let totalnumRes = db.collection('word_in_book') .aggregate() .match({ wd_bk_id: wd_bk_id }) .count('total') .end() // {list:[{total:xxx}]} let timeStamp = new Date().getTime() let needToReviewRes = db.collection('learning_record') // .where({ // 选取复习时间不晚于今天的所有记录 // user_id: user_id, // master: false, // next_l: _.lte(timeStamp), // }) // .count() .aggregate() .match({ // 选取复习时间不晚于今天的所有记录 user_id: user_id, master: false, next_l: _.lte(timeStamp), }) .count('numToReview') .end() // console.log('needToReviewRes', needToReviewRes) // {list:[{numToReview:xxx}]} // let resList = [needToLearnRes, needToReviewRes] let resList = await Promise.all([learnedNumRes, totalnumRes, needToReviewRes]) // console.log(resList) let total = 0 let learned = 0 let numToReview = 0 if (resList[1].list.length > 0 && resList[1].list[0].total >= 0) total = resList[1].list[0].total if (resList[0].list.length > 0 && resList[0].list[0].learned >= 0) learned = resList[0].list[0].learned if (resList[2].list.length > 0 && resList[2].list[0].numToReview >= 0) numToReview = resList[2].list[0].numToReview let nums = { needToLearn: total - learned, needToReview: numToReview, // needToReview: resList[1].total, } ctx.body = { ...rescontent.SUCCESS, data: nums } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getLearningData', async (ctx, next) => { const wd_bk_id = event.wd_bk_id const user_id = event.user_id let groupSize = event.groupSize const getSize = Math.round(groupSize * 1.5) const batchTimes = Math.ceil(getSize / 10) const sampleSize = event.sample ? 9 : 0 try { let tasks = [] for (let i = 0; i < batchTimes; i++) { let num = i * 10 + 10 > getSize ? getSize - (i * 10) : 10 let promise = db.collection('word_in_book') .aggregate() .match({ // 从词书与单词的关系表里获取当前学习的书的所有单词 wd_bk_id: wd_bk_id }) .sort({ wd_index: 1, }) .lookup({ // lookup-1,从学习记录中匹配学过的单词 from: 'learning_record', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$user_id', user_id]), $.eq(['$word_id', '$$wordId']), ]))) .done(), as: 'word_list' }) .match(_.expr( // 删去已经学过的单词(之前的lookup未匹配到说明没有学过) $.eq([$.size('$word_list'), 0]), )) .project({ _id: 0, word_list: 0, }) .skip(i * 10) .limit(num) .lookup({ // lookup-2,查找获取取得的单词是否在对应用户的生词本中 from: 'notebook', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$user_id', user_id]), $.eq(['$word_id', '$$wordId']), ]))) .done(), as: 'nb_record' }) .lookup({ // lookup-3,查找获取取得的单词是否有学习过的“缓存” from: 'learning_record_temp', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$user_id', user_id]), $.eq(['$word_id', '$$wordId']), ]))) .done(), as: 'l_r_temp_list' }) .lookup({ // lookup-4,获取取得的单词的详细数据 from: 'word', localField: 'word_id', foreignField: 'word_id', as: 'word_list' }) .replaceRoot({ // 把单词详情合并到对象属性中 newRoot: $.mergeObjects([$.arrayElemAt(['$word_list', 0]), '$$ROOT']) }) .project({ _id: 0, word_id: 1, word: 1, translation: 1, phonetic: 1, in_notebook: $.gte([$.size('$nb_record'), 1]), learning_record: $.arrayElemAt(['$l_r_temp_list', 0]) }) .lookup({ // lookup-5 在同一本词书中为每个单词随机取9个词做释义干扰项 from: 'word_in_book', let: { wordId: '$word_id', }, pipeline: $.pipeline() // 一级lookup,筛选同本词书且word_id不同的词 .match({ wd_bk_id: wd_bk_id, word_id: _.neq('$$wordId'), }) .sample({ // 随机取出9个单词(做干扰项) size: sampleSize }) .lookup({ // 二级lookup,为取出的单词查找单词详细信息 from: 'word', localField: 'word_id', foreignField: 'word_id', as: 'word_list', }) .replaceRoot({ // 把单词详情合并到samplelist每个成员的对象属性中 newRoot: $.mergeObjects([$.arrayElemAt(['$word_list', 0]), '$$ROOT']) }) .project({ _id: 0, word_id: 1, word: 1, translation: 1, }) .done(), as: 'sample_list' }) .end() tasks.push(promise) } // 等所有批次返回结果后处理 let res = (await Promise.all(tasks)).reduce((acc, currentValue, index) => { // console.log(acc) acc.data = acc.data.concat(currentValue.list) let wordIdList = [] for (let m = 0; m < currentValue.list.length; m++) { if (currentValue.list[m].learning_record) { wordIdList.push(currentValue.list[m].word_id) } } acc.wordIdList = acc.wordIdList.concat(wordIdList) // console.log(currentValue) return acc }, { data: [], wordIdList: [] }) // 删除取出来的临时记录 if (res.wordIdList.length > 0) { let res1 = await db.collection('learning_record_temp') .where({ user_id, word_id: _.in(res.wordIdList) }) .remove() console.log('remove list', res.wordIdList, ' for user', user_id) console.log(res1) } ctx.body = { ...rescontent.SUCCESS, data: res.data } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('getReviewData', async (ctx, next) => { const wd_bk_id = event.wd_bk_id const user_id = event.user_id let groupSize = event.groupSize const batchTimes = Math.ceil(groupSize / 10) const sampleSize = event.sample ? 9 : 0 try { let tasks = [] let timeStamp = new Date().getTime() for (let i = 0; i < batchTimes; i++) { let num = i * 10 + 10 > groupSize ? groupSize - (i * 10) : 10 let promise = db.collection('learning_record') .aggregate() .match({ // 选取复习时间不晚于今天的所有记录 user_id: user_id, master: false, next_l: _.lte(timeStamp), }) .sort({ next_l: 1, }) .skip(i * 10) .limit(num) .lookup({ // lookup-1,查找获取取得的单词是否在对应用户的生词本中 from: 'notebook', let: { wordId: '$word_id', }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$user_id', user_id]), $.eq(['$word_id', '$$wordId']), ]))) .done(), as: 'nb_record' }) .lookup({ // lookup-2,获取取得的单词的详细数据 from: 'word', localField: 'word_id', foreignField: 'word_id', as: 'word_list' }) .replaceRoot({ // 把单词详情合并到对象属性中 newRoot: $.mergeObjects([$.arrayElemAt(['$word_list', 0]), '$$ROOT']) }) .addFields({ in_notebook: $.eq([$.size('$nb_record'), 1]), record: { EF: '$EF', NOI: '$NOI', last_l: '$last_l', next_l: '$next_l', master: '$master', word_id: '$word_id', next_n: '$next_n', }, }) .project({ _id: 0, word_id: 1, word: 1, translation: 1, phonetic: 1, in_notebook: 1, record: 1 }) .lookup({ // lookup-3 在同一本词书中为每个单词随机取9个词做释义干扰项 from: 'word_in_book', let: { wordId: '$word_id', }, pipeline: $.pipeline() // 一级lookup,筛选同本词书且word_id不同的词 .match({ wd_bk_id: wd_bk_id, word_id: _.neq('$$wordId'), }) .sample({ // 随机取出9个单词(做干扰项) size: sampleSize }) .lookup({ // 二级lookup,为取出的单词查找单词详细信息 from: 'word', localField: 'word_id', foreignField: 'word_id', as: 'word_list', }) .replaceRoot({ // 把单词详情合并到samplelist每个成员的对象属性中 newRoot: $.mergeObjects([$.arrayElemAt(['$word_list', 0]), '$$ROOT']) }) .project({ _id: 0, word_id: 1, word: 1, translation: 1, }) .done(), as: 'sample_list' }) .end() tasks.push(promise) } // 等所有批次返回结果后处理 let res = (await Promise.all(tasks)).reduce((acc, currentValue, index) => { // console.log(acc) acc = acc.concat(currentValue.list) // console.log(currentValue) return acc }, []) ctx.body = { ...rescontent.SUCCESS, data: res } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('toggleAddToNB', async (ctx, next) => { const user_id = event.user_id const word_id = event.word_id try { let res = undefined if (event.add) { res = await db.collection('notebook') .add({ data: { user_id, word_id, c_time: new Date().getTime() } }) console.log(res) } else { res = await db.collection('notebook') .where({ user_id, word_id, }) .remove() console.log(res) } let correctMsg = event.add ? "collection.add:ok" : "collection.remove:ok" if (res.errMsg == correctMsg) { ctx.body = { ...rescontent.SUCCESS, data: true } } else { ctx.body = { ...rescontent.DBERR, data: false, err: res } } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('addLearningRecord', async (ctx, next) => { const user_id = event.user_id let wordLearningRecord = event.learnedRecord let learningRecord = event.learningRecord const batchTimesForLearned = Math.ceil(wordLearningRecord.length / 10) let batchTimesForLearning = 0 if (learningRecord) batchTimesForLearning = Math.ceil(learningRecord.length / 10) let now = new Date() now.setMilliseconds(0) now.setSeconds(0) now.setMinutes(0) now.setHours(0) let last_l = now.getTime() let next_l = last_l + 86400000 // 检查属性,means允许自定义 for (let i = 0; i < wordLearningRecord.length; i++) { if (wordLearningRecord[i].last_l === undefined) wordLearningRecord[i].last_l = last_l if (wordLearningRecord[i].next_l === undefined) wordLearningRecord[i].next_l = next_l if (wordLearningRecord[i].NOI === undefined) wordLearningRecord[i].NOI = 1 if (wordLearningRecord[i].EF === undefined) wordLearningRecord[i].EF = '2.5' if (wordLearningRecord[i].next_n === undefined) wordLearningRecord[i].next_n = 0 if (wordLearningRecord[i].master === undefined) wordLearningRecord[i].master = false if (wordLearningRecord[i].c_time === undefined) wordLearningRecord[i].c_time = last_l } console.log(wordLearningRecord) try { // 将完成学习的单词加入学习记录数据库(learning_record) let learnedRes = [] for (let i = 0; i < batchTimesForLearned; i++) { // 承载所有读操作的 promise 的数组 let tasks = [] let start = i * 10 let end = ((start + 10) > wordLearningRecord.length) ? wordLearningRecord.length : (start + 10) // 等待所有 for (let j = start; j < end; j++) { wordLearningRecord[j].user_id = user_id let promise = db.collection('learning_record') .add({ data: wordLearningRecord[j] }) tasks.push(promise) } let resInner = (await Promise.all(tasks)).reduce((acc, currentValue, index) => { acc[index] = currentValue._id // console.log(cur._id) return acc }, []) console.log('learned record batch', i, 'done') console.log('learned record batch', i, ':', resInner) learnedRes = learnedRes.concat(resInner) } // 下面更新daily_sum对应数据 let addNum = 0 for (let k = 0; k < learnedRes.length; k++) { if (learnedRes[k] && learnedRes[k] != '') addNum++ } let updateDailySumRes = await db.collection('daily_sum') .where({ user_id, date: last_l, }) .update({ data: { learn: _.inc(addNum) } }) if (updateDailySumRes.stats.updated != 1) { let createDailySumRes = await db.collection('daily_sum') .add({ data: { user_id, date: last_l, learn: addNum, review: 0, l_time: 0, } }) if (createDailySumRes._id && createDailySumRes._id != '') { console.log('createDailySumRes for user', user_id, 'successfully') } } // 将完成学习的单词加入临时记录的数据库(learning_record) let tempRes = [] if (batchTimesForLearning > 0) { for (let m = 0; m < batchTimesForLearning; m++) { // 承载所有读操作的 promise 的数组 let tasks = [] let start = m * 10 let end = ((start + 10) > learningRecord.length) ? learningRecord.length : (start + 10) // 等待所有 for (let n = start; n < end; n++) { learningRecord[n].user_id = user_id let promise = db.collection('learning_record_temp') .add({ data: learningRecord[n] }) tasks.push(promise) } let resInner = (await Promise.all(tasks)).reduce((acc, currentValue, index) => { acc[index] = currentValue._id // console.log(cur._id) return acc }, []) console.log('learning recordbatch', m, 'done') console.log('learning recordbatch', m, ':', resInner) tempRes = tempRes.concat(resInner) } } ctx.body = { ...rescontent.SUCCESS, data: { learnedRes, tempRes } } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) app.router('updateLearningRecord', async (ctx, next) => { const user_id = event.user_id const wordLearningRecord = event.wordLearningRecord const batchTimes = Math.ceil(wordLearningRecord.length / 10) try { // 先获取用户的OF矩阵 let userRes = await db.collection('learner') .where({ user_id }) .field({ of_matrix: true, }) .get() console.log('userRes', userRes) let of_matrix = userRes.data[0].of_matrix // console.log(of_matrix) let res = [] let updateNum = 0 for (let i = 0; i < batchTimes; i++) { // 承载所有读操作的 promise 的数组 let tasks = [] let start = i * 10 let end = ((start + 10) > wordLearningRecord.length) ? wordLearningRecord.length : (start + 10) // 等待所有 for (let j = start; j < end; j++) { let result = sm_5_js.sm_5(of_matrix, wordLearningRecord[j]) let record = result.wd_learning_record wordLearningRecord[j].newNOI = record.NOI wordLearningRecord[j].newMaster = record.master of_matrix = result.OF record.user_id = user_id let promise = db.collection('learning_record') .where({ user_id, word_id: wordLearningRecord[j].word_id }) .update({ data: record }) tasks.push(promise) } // 更新of_矩阵 let updateUserPromiseIndex = -1 if (i == batchTimes - 1) { let updateUserPromise = db.collection('learner') .where({ user_id }) .update({ data: { of_matrix: _.set(of_matrix) } }) tasks.push(updateUserPromise) updateUserPromiseIndex = tasks.length - 1 } let resInner = (await Promise.all(tasks)).reduce((acc, currentValue, index) => { if (updateUserPromiseIndex != -1 && index == updateUserPromiseIndex) { console.log('update of_matrix result', currentValue) } else if (currentValue.stats.updated > 0) { acc[index] = { word_id: wordLearningRecord[index].word_id, NOI: wordLearningRecord[index].newNOI, master: wordLearningRecord[index].newMaster, updated: currentValue.stats.updated, success: true, } updateNum++ } else { acc[index] = { word_id: wordLearningRecord[index].word_id, updated: currentValue.stats.updated, success: false, } } return acc }, []) console.log('batch', i, 'done') console.log('batch', i, ':', resInner) res = res.concat(resInner) } // 下面更新daily_sum对应数据 let now = new Date() now.setMilliseconds(0) now.setSeconds(0) now.setMinutes(0) now.setHours(0) let date = now.getTime() let updateDailySumRes = await db.collection('daily_sum') .where({ user_id, date, }) .update({ data: { review: _.inc(updateNum) } }) if (updateDailySumRes.stats.updated != 1) { let createDailySumRes = await db.collection('daily_sum') .add({ data: { user_id, date, learn: 0, review: updateNum, l_time: 0, } }) if (createDailySumRes._id && createDailySumRes._id != '') { console.log('createDailySumRes for user', user_id, 'successfully') } } ctx.body = { ...rescontent.SUCCESS, data: res } } catch (e) { // 抛出错误 console.error(e) ctx.body = { ...rescontent.DBERR, err: e } } }) return app.serve() } ================================================ FILE: cloudfunctions/wordRouter/package.json ================================================ { "name": "wordRouter", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "tcb-router": "^1.1.2", "wx-server-sdk": "~2.5.3", "bent": "<=7.3.12" } } ================================================ FILE: cloudfunctions/wordRouter/utils/format_time.js ================================================ // 传入时间的毫秒数(date.getTime())获取时间详情 const formatTime = (time) => { var date = new Date(time) var y = date.getFullYear() var m = date.getMonth() + 1 var d = date.getDate() var h = date.getHours() var min = date.getMinutes() var s = date.getSeconds() var timeStr = y + "-" + enterZero(m) + "-" + enterZero(d) + " " + enterZero(h) + ":" + enterZero(min) + ":" + enterZero(s) return timeStr } const formatDate = (time) => { var date = new Date(time) var y = date.getFullYear() var m = date.getMonth() + 1 var d = date.getDate() var dateStr = y + "-" + enterZero(m) + "-" + enterZero(d) return dateStr } const dateNum = (time) => { var date = new Date(time) var y = date.getFullYear() var m = date.getMonth() + 1 var d = date.getDate() var num = y *10000 + m*100 + d return num } const enterZero = (num) => { num = Math.abs(num) if (num <= 9) { num = "0" + num } return num } module.exports = { formatTime: formatTime, formatDate: formatDate, dateNum: dateNum, } ================================================ FILE: cloudfunctions/wordRouter/utils/get_all_sort_list.js ================================================ /** * * @param {*} source 源数组 * @param {*} count 要取出多少项 * @param {*} isPermutation 是否使用排列的方式 * @return {any[]} 所有排列组合,格式为 [ [1,2], [1,3]] ... */ const getAllSortList = (source, count, isPermutation = true) => { //如果只取一位,返回数组中的所有项,例如 [ [1], [2], [3] ] let currentList = source.map((item) => [item]); if (count === 1) { return currentList; } let result = []; //取出第一项后,再取出后面count - 1 项的排列组合,并把第一项的所有可能(currentList)和 后面count-1项所有可能交叉组合 for (let i = 0; i < currentList.length; i++) { let current = currentList[i]; //如果是排列的方式,在取count-1时,源数组中排除当前项 let children = []; if (isPermutation) { children = getAllSortList(source.filter(item => item !== current[0]), count - 1, isPermutation); } //如果是组合的方法,在取count-1时,源数组只使用当前项之后的 else { children = getAllSortList(source.slice(i + 1), count - 1, isPermutation); } for (let child of children) { result.push([...current, ...child]); } } return result; } // let arr = [1, 2, 3]; // const result = getNumbers(arr, 2, false); // console.log(result); // //[ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ] ] // const result2 = getNumbers(arr, 2); // console.log(result2); // //[ [ 1, 2 ], [ 1, 3 ], [ 2, 1 ], [ 2, 3 ], [ 3, 1 ], [ 3, 2 ] ] module.exports = { getAllSortList: getAllSortList, } ================================================ FILE: cloudfunctions/wordRouter/utils/response_content.js ================================================ const SUCCESS = { errorcode: 100, errormsg: "success" } //成功 const LOGINOK = { errorcode: 1, errormsg: "Login successfully" } //登录成功 const REGISTEROK= { errorcode: 2, errormsg: "Register successfully" } //注册成功 const DBERR = { errorcode: -1, errormsg: "Database error!" } //数据库操作失败 const ROUTERERR = { errorcode: -2, errormsg: "Wrong router name" } //路由名字有误 const LOGINERR = { errorcode: -3, errormsg: "Wrong username or pwd" } //登录信息有误 const DATAERR = { errorcode: -4, errormsg: "Wrong data!" } //数据有误 const UNKOWNERR = { errorcode: -100, errormsg: "Unkown error!" } //出现未知错误 module.exports={ SUCCESS: SUCCESS, LOGINOK: LOGINOK, REGISTEROK: REGISTEROK, DBERR: DBERR, ROUTERERR: ROUTERERR, LOGINERR: LOGINERR, DATAERR: DATAERR, UNKOWNERR: UNKOWNERR, } ================================================ FILE: cloudfunctions/wordRouter/utils/sm-5.js ================================================ // SM-5算法 // 计算下一个最优间隔的同时更新OF矩阵,从而单词在学习的时候不是一个个体,而是 // 用于生成最佳区间的随机散布 NOI--near-optimal intervals // ------------------------------------------------------------- // 优点1: 通过一些差异值来加速OF矩阵优化过程 // 优点2: 消除复习的块状问题,将同一时期学习的内容适当分散进行复习 // 公式: NOI=PI+(OI-PI)*(1+m) m∈(-0.5, 0.5) // m需满足(设概率密度函数为f(x)): // (0, 0.5)内的概率为0.5,即 ∫[0, 0.5]f(x)dx=0.5 // m=0的概率为m=0.5的概率的100倍 即 f(0)/f(0.5)=100 // 假设概率密度函数为 f(x)=a*exp(-b*x) // ------------------------------------------------------------- // Piotr Wozniak求得 a=0.047; b=0.092; // 从0到m的积分记为概率p,对于每一个p都有一个对应的m存在,p∈(0, 0.5) // 生成一个(0, 1)之间的随机数,减去0.5得p,则|p|∈(0, 0.5),而p的符号可以控制m的符号 // 则 ∫[0, m]f(x)dx=|p| => ∫[0, m]d( a*exp(-b*x) / (-b) )=|p| => m=-1/b*ln(1-b/a*|p|)) // // const createNOI = (PI, OI) => { // let a = 0.047 // let b = 0.092 // let randNum = Math.random() // let p = randNum - 0.5 // console.log('random p', p) // let m = -1 / b * (Math.log((1 - b / a * Math.abs(p)))) // m = m * Math.sign(p) // console.log('random m', m) // let NOI = PI + (OI - PI) * (1 + m) // NOI = Math.round(NOI) // return NOI // } // ------------------------------------------------------------- // 由于作者给出的参数带入是有误的,采用类正态分布实现分布函数 // 原型(标准正态分布):f(x) = 1/(√(2π)*Ω) * e(-x^2/(2Ω^2)) // 简化:f(x) = a*e^(-b*x^2) // f(0) = 100*f(0.5) 可求得 b = -18.420680743952367 // ∫[0, 0.5]f(x)dx = 0.5 可求得 a = 2.4273047133848933 // 积分计算器网址: https://zh.numberempire.com/definiteintegralcalculator.php // 画函数图像网址:https://www.desmos.com/calculator?lang=zh-CN // 这里使用能解正态分布分位数的库进行运算 // f(0) = 100*f(0.5) 按正态分布算,可求得 std=0.1647525572455652 // X ~ N(0,0.1647525572455652) 从0~0.5的累计分布值为0.4987967402705885 // 故若要满足∫[0, 0.5]f(x)dx = 0.5,要在前面再乘上 // JStat库的jStat.normal.inv( p, mean, std )可以求出N(mean,std)分布从负无穷开始累计分布为p的分位点 // 因此思路转变为,首先随机获取[0, 1)的数r, r-0.5得到[-0.5, 0.5)的数m,(m*0.4987967402705885/0.5+0.5)得到累计值 // 即jStat.normal.inv(abs(m*0.4987967402705885/0.5)+0.5, 0, 0.1647525572455652) 可得到分位点 const jStat = require("./jstat.min.js") const createNOI = (PI, OI) => { let mean = 0 let std = 0.1647525572455652 let randNum = Math.random() // console.log('randNum', randNum) let p = Math.abs((randNum - 0.5) * 0.4987967402705885 / 0.5) + 0.5 // console.log('random p', p) let inv_cdf = jStat.normal.inv(p, mean, std) let m = inv_cdf * Math.sign(randNum - 0.5) // console.log('random m', m) let NOI = PI + (OI - PI) * (1 + m) NOI = Math.round(NOI) return NOI } // 符号函数 const sgn = (num) => { if (num < 0) { return -1 } else if (num == 0) { return 0 } else { return 1 } } // 计算新的OF矩阵对应项 // 输入: // last_i - 用于相关项目的最后(上一个)间隔(原文描述为the last interval used for the item in question) // q - 重复响应的质量 // used_OF - 用于计算相关项目的最后一个间隔时使用的最佳因子 // old_OF - 与项目的相关重复次数和电子因子相对应的 OF 条目的前一个值 // fraction - 属于确定修改速率的范围 (0,1) 的数字 (OF矩阵的变化越快) // 输出: // new_OF - 考虑的 OF 矩阵条目的新计算值 // 局部变量: // modifier - 确定 OF 值将增加或减少多少次的数字 // mod5 - 在 q=5 的情况下为修饰符建议的值 // mod2 - 在 q=2 的情况下为修饰符建议的值 const calculateNewOF = (last_i, q, used_OF, old_OF, fraction = 0.8) => { let modifier let mod5 = (last_i + 1) / last_i if (mod5 < 1.05) mod5 = 1.05 let mod2 = (last_i - 1) / last_i if (mod2 > 0.75) mod2 = 0.75 if (q > 4) { modifier = 1 + (mod5 - 1) * (q - 4) } else { modifier = 1 - (1 - mod2) / 2 * (4 - q) } if (modifier < 0.05) modifier = 0.05 let new_OF = used_OF * modifier if (q > 4) if (new_OF < old_OF) new_OF = old_OF if (q < 4) if (new_OF > old_OF) new_OF = old_OF new_OF = new_OF * fraction + old_OF * (1 - fraction) if (new_OF < 1.2) new_OF = 1.2 new_OF = new_OF.toFixed(4) new_OF = parseFloat(new_OF) return new_OF } // 单词记录提供数据:循环次数,上次的EF,上次的间隔时间(/天), q(quality,回忆质量) // 其他:OF矩阵 const sm_5 = (OF, wd_learning_record) => { let EF = wd_learning_record.EF let q = wd_learning_record.q let last_NOI = wd_learning_record.NOI let n = wd_learning_record.next_n let last_l = wd_learning_record.last_l let next_l = wd_learning_record.next_l let master = wd_learning_record.master if (master) { return { wd_learning_record: { word_id: wd_learning_record.word_id, last_l, next_l, NOI: last_NOI, EF, next_n: n, master, }, OF, } } // 计算此时与上次复习/学习的时间差(/天) let now = new Date() now.setMilliseconds(0) now.setSeconds(0) now.setMinutes(0) now.setHours(0) let last_i = Math.ceil((now.getTime() - last_l) / 86400000) // console.log('word', wd_learning_record.word_id, 'last interval', last_i) // 更改EF(由于作为键,EF规定为一位小数转换成的字符串) EF = parseFloat(EF) + (0.1 - (5 - q) * (0.08 + (5 - q) * 0.02)) if (EF < 1.3) EF = 1.3 if (EF > 2.8) EF = 2.8 EF = EF.toFixed(1) // 更改矩阵对应项,这里认为若实际间隔时间超过所需间隔时间的1.5倍 // 则视为极大异常值,规整为1.5倍,且不更改矩阵 let used_OF = OF[EF][n - 1] if (!used_OF) used_OF = 1.2 n++ if (!OF[EF][n - 1]) OF[EF][n - 1] = 1.2 if (last_i <= 1.5 * last_NOI) { let old_OF = OF[EF][n - 1] let new_OF = calculateNewOF(last_i, q, used_OF, old_OF) // console.log('new_OF of', 'OF[', EF, '][', n - 1, ']:', new_OF) OF[EF][n - 1] = new_OF } else { // console.log('last_i', last_i, 'is longer than 1.5 expected interval :', last_NOI) last_i = Math.round(last_NOI * 1.5) } // 计算最优间隔时长并进行指定分布的随机分散 // 同时计算下次需要复习的时间(1970.1.1至今毫秒数表示) let NOI if (q < 2) { n = 0 NOI = 1 } else if (q < 3) { n = 1 let interval = OF[EF][0] NOI = Math.round(interval) } else { let interval = n == 1 ? 5 : OF[EF][n - 1] * last_i // 若下个最优间隔时间大于100天,则将单词标记为已掌握 if (interval > 100) master = true console.log('next optimal interval', interval) NOI = Math.round(createNOI(last_i, interval)) if (NOI > 100 && !master) NOI = 100 if (NOI < 0 && !master) NOI = 1 } last_l = now.getTime() next_l = last_l + NOI * 86400000 return { wd_learning_record: { word_id: wd_learning_record.word_id, last_l, next_l, NOI, EF, next_n: n, master, }, OF, } } module.exports = { sm_5: sm_5, } ================================================ FILE: miniprogram/app.js ================================================ // app.js const rescontent = require('./utils/response_content.js') const { formatTime } = require('./utils/format_time.js') const userApi = require("./utils/userApi.js") App({ onLaunch: function () { if (!wx.cloud) { console.error('请使用 2.2.3 或以上的基础库以使用云能力'); } else { wx.cloud.init({ // env 参数说明: // env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源 // 此处请填入环境 ID, 环境 ID 可打开云控制台查看 // 如不填则使用默认环境(第一个创建的环境) // env: 'my-env-id', traceUser: true, }); } this.checkLogin() wx.disableAlertBeforeUnload() }, globalData: { isLogin: false, tryingLogin: true, userInfo: { // user_id: 2, // l_book_id: 2, settings: { // learn_repeat_t: 3, // group_size: 10, // learn_first_m: 'chooseTrans', // learn_second_m: 'recallTrans', // learn_third_m: 'recallWord', // learn_fourth_m: 'recallTrans', // timing: true, // timing_duration: 1000, // autoplay: false, // type: 1, // review_repeat_t: 2, // review_first_m: 'recallTrans', // review_second_m: 'chooseTrans', // review_second_m: 'recallWord', // review_third_m: 'recallTrans', } }, updatedForIndex: false, updatedForOverview: false, forChangeAvatar: { change: false, tempImgSrc: '', imgSrc: '', } }, checkLogin: async function () { this.globalData.tryingLogin = true // let history = wx.getStorageSync('history') // wx.clearStorageSync() // wx.setStorageSync('history', history) // console.log('checkLogin') // console.log('this.globalData.tryingLogin ', this.globalData.tryingLogin) let storageContent = wx.getStorageSync('userInfo') if (storageContent && (new Date().getTime() - storageContent.time) < 86400000 * 2) { let res = await userApi.getUserInfoViaId({ user_id: storageContent.info.user_id }) if (res.errorcode == rescontent.SUCCESS.errorcode) { this.globalData.isLogin = true this.globalData.userInfo = res.data let lastlogin = formatTime(res.data.last_login) wx.showToast({ title: `自动登录成功,上次登录时间 ${lastlogin}`, icon: 'none', duration: 1500, }) storageContent.info = res.data wx.setStorageSync('userInfo', storageContent) } else { wx.showToast({ title: '自动登录失败,请重新登录', icon: 'none', duration: 1500, }) wx.removeStorageSync('userInfo') } } else if (storageContent) { wx.showToast({ title: '登录已过期,请重新登录', icon: 'none', duration: 1500, }) wx.removeStorageSync('userInfo') } this.globalData.tryingLogin = false // console.log('this.globalData.tryingLogin ', this.globalData.tryingLogin) }, }); ================================================ FILE: miniprogram/app.json ================================================ { "pages": [ "pages/index/index", "pages/user/user", "pages/overview/overview", "pages/login/login", "pages/search/search", "pages/word_detail/word_detail", "pages/learning/learning", "pages/review/review", "pages/word_list/word_list", "pages/image_cropper/image_cropper", "pages/user_settings/user_settings" ], "window": { "backgroundColor": "#FFFFFF", "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#FFFFFF", "navigationBarTitleText": "学不会单词", "navigationBarTextStyle": "black" }, "tabBar": { "color": "#F0F0F0", "backgroundColor": "#FFFFFF", "selectedColor": "#6DAFFE", "borderStyle": "white", "position": "bottom", "list": [ { "pagePath": "pages/index/index", "text": " ", "iconPath": "static/images/tab-learn-CDCDCD.png", "selectedIconPath": "static/images/tab-learn-A6D6FA.png" }, { "pagePath": "pages/overview/overview", "text": " ", "iconPath": "static/images/tab-overview-CDCDCD.png", "selectedIconPath": "static/images/tab-overview-A6D6FA.png" }, { "pagePath": "pages/user/user", "text": " ", "iconPath": "static/images/tab-user-CDCDCD.png", "selectedIconPath": "static/images/tab-user-A6D6FA.png" } ] }, "sitemapLocation": "sitemap.json", "style": "v2", "lazyCodeLoading": "requiredComponents" } ================================================ FILE: miniprogram/app.wxss ================================================ /**app.wxss**/ @import './static/iconfont.wxss'; @import './static/color.wxss'; .container { display: flex; flex-direction: column; align-items: center; box-sizing: border-box; } button { background: initial; } button:focus { outline: 0; } button::after { border: none; } page { background: #f6f6f6; display: flex; flex-direction: column; justify-content: flex-start; /* overflow: hidden; */ } ================================================ FILE: miniprogram/components/cloudTipModal/index.js ================================================ // miniprogram/components/cloudTipModal/index.js const { isMac } = require('../../envList.js'); Component({ /** * 页面的初始数据 */ data: { showUploadTip: false, tipText: isMac ? 'sh ./uploadCloudFunction.sh' : './uploadCloudFunction.bat' }, properties: { showUploadTipProps: Boolean }, observers: { showUploadTipProps: function(showUploadTipProps) { this.setData({ showUploadTip: showUploadTipProps }); } }, methods: { onChangeShowUploadTip() { this.setData({ showUploadTip: !this.data.showUploadTip }); }, copyShell() { wx.setClipboardData({ data: this.data.tipText, }); }, } }); ================================================ FILE: miniprogram/components/cloudTipModal/index.json ================================================ { "usingComponents": {}, "component": true } ================================================ FILE: miniprogram/components/cloudTipModal/index.wxml ================================================ 体验前需部署云资源 请开启调试器进入终端窗口,复制并运行以下命令 {{tipText}} 复制 已执行命令 ================================================ FILE: miniprogram/components/cloudTipModal/index.wxss ================================================ .install_tip_back { position: fixed; top: 0; right: 0; bottom: 0; left: 0; background-color: rgba(0,0,0,0.4); z-index: 1; } .install_tip_detail { position: fixed; background-color: white; right: 0; bottom: 0; left: 0; top: 60%; border-radius: 40rpx 40rpx 0 0; padding: 50rpx; z-index: 9; } .install_tip_detail_title { font-weight: 400; font-size: 40rpx; text-align: center; } .install_tip_detail_tip { font-size: 25rpx; color: rgba(0,0,0,0.4); margin-top: 20rpx; text-align: center; } .install_tip_detail_shell { margin: 70rpx 0; display: flex; justify-content: center; } .install_tip_detail_copy { color: #546488; margin-left: 10rpx; } .install_tip_detail_button { color: #07C160; font-weight: 500; background-color: rgba(0,0,0,0.1); width: 60%; text-align: center; height: 90rpx; line-height: 90rpx; border-radius: 10rpx; margin: 0 auto; } ================================================ FILE: miniprogram/components/ec-canvas/ec-canvas.js ================================================ import WxCanvas from './wx-canvas'; import * as echarts from './echarts'; // import * as echarts from './echartsForBar'; let ctx; function compareVersion(v1, v2) { v1 = v1.split('.') v2 = v2.split('.') const len = Math.max(v1.length, v2.length) while (v1.length < len) { v1.push('0') } while (v2.length < len) { v2.push('0') } for (let i = 0; i < len; i++) { const num1 = parseInt(v1[i]) const num2 = parseInt(v2[i]) if (num1 > num2) { return 1 } else if (num1 < num2) { return -1 } } return 0 } Component({ properties: { canvasId: { type: String, value: 'ec-canvas' }, ec: { type: Object }, forceUseOldCanvas: { type: Boolean, value: false } }, data: { isUseNewCanvas: false }, ready: function () { // Disable prograssive because drawImage doesn't support DOM as parameter // See https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.drawImage.html echarts.registerPreprocessor(option => { if (option && option.series) { if (option.series.length > 0) { option.series.forEach(series => { series.progressive = 0; }); } else if (typeof option.series === 'object') { option.series.progressive = 0; } } }); if (!this.data.ec) { console.warn('组件需绑定 ec 变量,例:'); return; } if (!this.data.ec.lazyLoad) { this.init(); this.triggerEvent('initok', {isinit: true}, {}) } }, methods: { init: function (callback) { const version = wx.getSystemInfoSync().SDKVersion const canUseNewCanvas = compareVersion(version, '2.9.0') >= 0; const forceUseOldCanvas = this.data.forceUseOldCanvas; const isUseNewCanvas = canUseNewCanvas && !forceUseOldCanvas; this.setData({ isUseNewCanvas }); if (forceUseOldCanvas && canUseNewCanvas) { console.warn('开发者强制使用旧canvas,建议关闭'); } if (isUseNewCanvas) { // console.log('微信基础库版本大于2.9.0,开始使用'); // 2.9.0 可以使用 this.initByNewWay(callback); } else { const isValid = compareVersion(version, '1.9.91') >= 0 if (!isValid) { console.error('微信基础库版本过低,需大于等于 1.9.91。' + '参见:https://github.com/ecomfe/echarts-for-weixin' + '#%E5%BE%AE%E4%BF%A1%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82'); return; } else { console.warn('建议将微信基础库调整大于等于2.9.0版本。升级后绘图将有更好性能'); this.initByOldWay(callback); } } }, initByOldWay(callback) { // 1.9.91 <= version < 2.9.0:原来的方式初始化 ctx = wx.createCanvasContext(this.data.canvasId, this); const canvas = new WxCanvas(ctx, this.data.canvasId, false); echarts.setCanvasCreator(() => { return canvas; }); // const canvasDpr = wx.getSystemInfoSync().pixelRatio // 微信旧的canvas不能传入dpr const canvasDpr = 1 var query = wx.createSelectorQuery().in(this); query.select('.ec-canvas').boundingClientRect(res => { if (typeof callback === 'function') { this.chart = callback(canvas, res.width, res.height, canvasDpr); } else if (this.data.ec && typeof this.data.ec.onInit === 'function') { this.chart = this.data.ec.onInit(canvas, res.width, res.height, canvasDpr); } else { this.triggerEvent('init', { canvas: canvas, width: res.width, height: res.height, canvasDpr: canvasDpr // 增加了dpr,可方便外面echarts.init }); } }).exec(); }, initByNewWay(callback) { // version >= 2.9.0:使用新的方式初始化 const query = wx.createSelectorQuery().in(this) query .select('.ec-canvas') .fields({ node: true, size: true }) .exec(res => { const canvasNode = res[0].node this.canvasNode = canvasNode const canvasDpr = wx.getSystemInfoSync().pixelRatio const canvasWidth = res[0].width const canvasHeight = res[0].height const ctx = canvasNode.getContext('2d') const canvas = new WxCanvas(ctx, this.data.canvasId, true, canvasNode) echarts.setCanvasCreator(() => { return canvas }) if (typeof callback === 'function') { this.chart = callback(canvas, canvasWidth, canvasHeight, canvasDpr) } else if (this.data.ec && typeof this.data.ec.onInit === 'function') { this.chart = this.data.ec.onInit(canvas, canvasWidth, canvasHeight, canvasDpr) } else { this.triggerEvent('init', { canvas: canvas, width: canvasWidth, height: canvasHeight, dpr: canvasDpr }) } }) }, canvasToTempFilePath(opt) { if (this.data.isUseNewCanvas) { // 新版 const query = wx.createSelectorQuery().in(this) query .select('.ec-canvas') .fields({ node: true, size: true }) .exec(res => { const canvasNode = res[0].node opt.canvas = canvasNode wx.canvasToTempFilePath(opt) }) } else { // 旧的 if (!opt.canvasId) { opt.canvasId = this.data.canvasId; } ctx.draw(true, () => { wx.canvasToTempFilePath(opt, this); }); } }, touchStart(e) { if (this.chart && e.touches.length > 0) { var touch = e.touches[0]; var handler = this.chart.getZr().handler; handler.dispatch('mousedown', { zrX: touch.x, zrY: touch.y }); handler.dispatch('mousemove', { zrX: touch.x, zrY: touch.y }); handler.processGesture(wrapTouch(e), 'start'); } }, touchMove(e) { if (this.chart && e.touches.length > 0) { var touch = e.touches[0]; var handler = this.chart.getZr().handler; handler.dispatch('mousemove', { zrX: touch.x, zrY: touch.y }); handler.processGesture(wrapTouch(e), 'change'); } }, touchEnd(e) { if (this.chart) { const touch = e.changedTouches ? e.changedTouches[0] : {}; var handler = this.chart.getZr().handler; handler.dispatch('mouseup', { zrX: touch.x, zrY: touch.y }); handler.dispatch('click', { zrX: touch.x, zrY: touch.y }); handler.processGesture(wrapTouch(e), 'end'); } } } }); function wrapTouch(event) { for (let i = 0; i < event.touches.length; ++i) { const touch = event.touches[i]; touch.offsetX = touch.x; touch.offsetY = touch.y; } return event; } ================================================ FILE: miniprogram/components/ec-canvas/ec-canvas.json ================================================ { "component": true, "usingComponents": {} } ================================================ FILE: miniprogram/components/ec-canvas/ec-canvas.wxml ================================================ ================================================ FILE: miniprogram/components/ec-canvas/ec-canvas.wxss ================================================ .ec-canvas { width: 100%; height: 100%; } ================================================ FILE: miniprogram/components/ec-canvas/echarts.js ================================================ /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).echarts={})}(this,(function(t){"use strict"; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,n)};function n(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,i=arguments.length;n18);a&&(n.weChat=!0);e.canvasSupported=!!document.createElement("canvas").getContext,e.svgSupported="undefined"!=typeof SVGRect,e.touchEventsSupported="ontouchstart"in window&&!n.ie&&!n.edge,e.pointerEventsSupported="onpointerdown"in window&&(n.edge||n.ie&&+n.version>=11),e.domSupported="undefined"!=typeof document;var s=document.documentElement.style;e.transform3dSupported=(n.ie&&"transition"in s||n.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||n.ie&&+n.version>=9}(navigator.userAgent,a);var s={"[object Function]":!0,"[object RegExp]":!0,"[object Date]":!0,"[object Error]":!0,"[object CanvasGradient]":!0,"[object CanvasPattern]":!0,"[object Image]":!0,"[object Canvas]":!0},l={"[object Int8Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Int16Array]":!0,"[object Uint16Array]":!0,"[object Int32Array]":!0,"[object Uint32Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0},u=Object.prototype.toString,h=Array.prototype,c=h.forEach,p=h.filter,d=h.slice,f=h.map,g=function(){}.constructor,y=g?g.prototype:null,v={};function m(t,e){v[t]=e}var _=2311;function x(){return _++}function b(){for(var t=[],e=0;e>1)%2;a.style.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",i[s]+":0",r[l]+":0",i[1-s]+":auto",r[1-l]+":auto",""].join("!important;"),t.appendChild(a),n.push(a)}return n}(e,o),o,r);if(s)return s(t,n,i),!0}return!1}function Yt(t){return"CANVAS"===t.nodeName.toUpperCase()}var Zt="undefined"!=typeof window&&!!window.addEventListener,jt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,qt=[];function Kt(t,e,n,i){return n=n||{},i||!a.canvasSupported?$t(t,e,n):a.browser.firefox&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):$t(t,e,n),n}function $t(t,e,n){if(a.domSupported&&t.getBoundingClientRect){var i=e.clientX,r=e.clientY;if(Yt(t)){var o=t.getBoundingClientRect();return n.zrX=i-o.left,void(n.zrY=r-o.top)}if(Xt(qt,t,i,r))return n.zrX=qt[0],void(n.zrY=qt[1])}n.zrX=n.zrY=0}function Jt(t){return t||window.event}function Qt(t,e,n){if(null!=(e=Jt(e)).zrX)return e;var i=e.type;if(i&&i.indexOf("touch")>=0){var r="touchend"!==i?e.targetTouches[0]:e.changedTouches[0];r&&Kt(t,r,e,n)}else{Kt(t,e,e,n);var o=function(t){var e=t.wheelDelta;if(e)return e;var n=t.deltaX,i=t.deltaY;if(null==n||null==i)return e;return 3*(0!==i?Math.abs(i):Math.abs(n))*(i>0?-1:i<0?1:n>0?-1:1)}(e);e.zrDelta=o?o/120:-(e.detail||0)/3}var a=e.button;return null==e.which&&void 0!==a&&jt.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function te(t,e,n,i){Zt?t.addEventListener(e,n,i):t.attachEvent("on"+e,n)}var ee=Zt?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};function ne(t){return 2===t.which||3===t.which}var ie=function(){function t(){this._track=[]}return t.prototype.recognize=function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},t.prototype.clear=function(){return this._track.length=0,this},t.prototype._doTrack=function(t,e,n){var i=t.touches;if(i){for(var r={points:[],touches:[],target:e,event:t},o=0,a=i.length;o1&&r&&r.length>1){var a=re(r)/re(o);!isFinite(a)&&(a=1),e.pinchScale=a;var s=[((i=r)[0][0]+i[1][0])/2,(i[0][1]+i[1][1])/2];return e.pinchX=s[0],e.pinchY=s[1],{type:"pinch",target:t[0].target,event:e}}}}},ae="silent";function se(){ee(this.event)}var le=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.handler=null,e}return n(e,t),e.prototype.dispose=function(){},e.prototype.setCursor=function(){},e}(Ft),ue=function(t,e){this.x=t,this.y=e},he=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ce=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o._hovered=new ue(0,0),o.storage=e,o.painter=n,o.painterRoot=r,i=i||new le,o.proxy=null,o.setHandlerProxy(i),o._draggingMgr=new Bt(o),o}return n(e,t),e.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(P(he,(function(e){t.on&&t.on(e,this[e],this)}),this),t.handler=this),this.proxy=t},e.prototype.mousemove=function(t){var e=t.zrX,n=t.zrY,i=de(this,e,n),r=this._hovered,o=r.target;o&&!o.__zr&&(o=(r=this.findHover(r.x,r.y)).target);var a=this._hovered=i?new ue(e,n):this.findHover(e,n),s=a.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),o&&s!==o&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(a,"mousemove",t),s&&s!==o&&this.dispatchToElement(a,"mouseover",t)},e.prototype.mouseout=function(t){var e=t.zrEventControl;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&this.trigger("globalout",{type:"globalout",event:t})},e.prototype.resize=function(){this._hovered=new ue(0,0)},e.prototype.dispatch=function(t,e){var n=this[t];n&&n.call(this,e)},e.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},e.prototype.setCursorStyle=function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},e.prototype.dispatchToElement=function(t,e,n){var i=(t=t||{}).target;if(!i||!i.silent){for(var r="on"+e,o=function(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:se}}(e,t,n);i&&(i[r]&&(o.cancelBubble=!!i[r].call(i,o)),i.trigger(e,o),i=i.__hostTarget?i.__hostTarget:i.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer((function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)})))}},e.prototype.findHover=function(t,e,n){for(var i=this.storage.getDisplayList(),r=new ue(t,e),o=i.length-1;o>=0;o--){var a=void 0;if(i[o]!==n&&!i[o].ignore&&(a=pe(i[o],t,e))&&(!r.topTarget&&(r.topTarget=i[o]),a!==ae)){r.target=i[o];break}}return r},e.prototype.processGesture=function(t,e){this._gestureMgr||(this._gestureMgr=new ie);var n=this._gestureMgr;"start"===e&&n.clear();var i=n.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&n.clear(),i){var r=i.type;t.gestureEvent=r;var o=new ue;o.target=i.target,this.dispatchToElement(o,r,i.event)}},e}(Ft);function pe(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){for(var i=t,r=void 0,o=!1;i;){if(i.ignoreClip&&(o=!0),!o){var a=i.getClipPath();if(a&&!a.contain(e,n))return!1;i.silent&&(r=!0)}var s=i.__hostTarget;i=s||i.parent}return!r||ae}return!1}function de(t,e,n){var i=t.painter;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}P(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],(function(t){ce.prototype[t]=function(e){var n,i,r=e.zrX,o=e.zrY,a=de(this,r,o);if("mouseup"===t&&a||(i=(n=this.findHover(r,o)).target),"mousedown"===t)this._downEl=i,this._downPoint=[e.zrX,e.zrY],this._upEl=i;else if("mouseup"===t)this._upEl=i;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||Lt(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,t,e)}}));function fe(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){for(;r=0;)r++;return r-e}function ge(t,e,n,i,r){for(i===e&&i++;i>>1])<0?l=o:s=o+1;var u=i-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]=a}}function ye(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])>0){for(s=i-r;l0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;ls&&(l=s);var u=a;a=r-l,l=r-u}for(a++;a>>1);o(t,e[n+h])>0?a=h+1:l=h}return l}function ve(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])<0){for(s=r+1;ls&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=i-r;l=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a>>1);o(t,e[n+h])<0?l=h:a=h+1}return l}function me(t,e){var n,i,r=7,o=0;t.length;var a=[];function s(s){var l=n[s],u=i[s],h=n[s+1],c=i[s+1];i[s]=u+c,s===o-3&&(n[s+1]=n[s+2],i[s+1]=i[s+2]),o--;var p=ve(t[h],t,l,u,0,e);l+=p,0!==(u-=p)&&0!==(c=ye(t[l+u-1],t,h,c,c-1,e))&&(u<=c?function(n,i,o,s){var l=0;for(l=0;l=7||d>=7);if(f)break;g<0&&(g=0),g+=2}if((r=g)<1&&(r=1),1===i){for(l=0;l=0;l--)t[d+l]=t[p+l];return void(t[c]=a[h])}var f=r;for(;;){var g=0,y=0,v=!1;do{if(e(a[h],t[u])<0){if(t[c--]=t[u--],g++,y=0,0==--i){v=!0;break}}else if(t[c--]=a[h--],y++,g=0,1==--s){v=!0;break}}while((g|y)=0;l--)t[d+l]=t[p+l];if(0===i){v=!0;break}}if(t[c--]=a[h--],1==--s){v=!0;break}if(0!==(y=s-ye(t[u],a,0,s,s-1,e))){for(s-=y,d=(c-=y)+1,p=(h-=y)+1,l=0;l=7||y>=7);if(v)break;f<0&&(f=0),f+=2}(r=f)<1&&(r=1);if(1===s){for(d=(c-=i)+1,p=(u-=i)+1,l=i-1;l>=0;l--)t[d+l]=t[p+l];t[c]=a[h]}else{if(0===s)throw new Error;for(p=c-(s-1),l=0;l1;){var t=o-2;if(t>=1&&i[t-1]<=i[t]+i[t+1]||t>=2&&i[t-2]<=i[t]+i[t-1])i[t-1]i[t+1])break;s(t)}},forceMergeRuns:function(){for(;o>1;){var t=o-2;t>0&&i[t-1]=32;)e|=1&t,t>>=1;return t+e}(r);do{if((o=fe(t,n,i,e))s&&(l=s),ge(t,n,n+l,n+o,e),o=l}a.pushRun(n,o),a.mergeRuns(),r-=o,n+=o}while(0!==r);a.forceMergeRuns()}}}var xe=!1;function be(){xe||(xe=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}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}var Se=function(){function t(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=we}return t.prototype.traverse=function(t,e){for(var n=0;n0&&(u.__clipPaths=[]),isNaN(u.z)&&(be(),u.z=0),isNaN(u.z2)&&(be(),u.z2=0),isNaN(u.zlevel)&&(be(),u.zlevel=0),this._displayList[this._displayListLen++]=u}var h=t.getDecalElement&&t.getDecalElement();h&&this._updateAndAddDisplayable(h,e,n);var c=t.getTextGuideLine();c&&this._updateAndAddDisplayable(c,e,n);var p=t.getTextContent();p&&this._updateAndAddDisplayable(p,e,n)}},t.prototype.addRoot=function(t){t.__zr&&t.__zr.storage===this||this._roots.push(t)},t.prototype.delRoot=function(t){if(t instanceof Array)for(var e=0,n=t.length;e=0&&this._roots.splice(i,1)}},t.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},t.prototype.getRoots=function(){return this._roots},t.prototype.dispose=function(){this._displayList=null,this._roots=null},t}(),Me="undefined"!=typeof window&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){return setTimeout(t,16)},Ie={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,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=i*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.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-Ie.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*Ie.bounceIn(2*t):.5*Ie.bounceOut(2*t-1)+.5}},Te=function(){function t(t){this._initialized=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,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}return t.prototype.step=function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),!this._paused){var n=(t-this._startTime-this._pausedTime)/this._life;n<0&&(n=0),n=Math.min(n,1);var i=this.easing,r="string"==typeof i?Ie[i]:i,o="function"==typeof r?r(n):n;if(this.onframe&&this.onframe(o),1===n){if(!this.loop)return!0;this._restart(t),this.onrestart&&this.onrestart()}return!1}this._pausedTime+=e},t.prototype._restart=function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){this._paused=!1},t}(),Ce=function(t){this.value=t},De=function(){function t(){this._len=0}return t.prototype.insert=function(t){var e=new Ce(t);return this.insertEntry(e),e},t.prototype.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++},t.prototype.remove=function(t){var e=t.prev,n=t.next;e?e.next=n:this.head=n,n?n.prev=e:this.tail=e,t.next=t.prev=null,this._len--},t.prototype.len=function(){return this._len},t.prototype.clear=function(){this.head=this.tail=null,this._len=0},t}(),Ae=function(){function t(t){this._list=new De,this._maxSize=10,this._map={},this._maxSize=t}return t.prototype.put=function(t,e){var n=this._list,i=this._map,r=null;if(null==i[t]){var o=n.len(),a=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var s=n.head;n.remove(s),delete i[s.key],r=s.value,this._lastRemovedEntry=s}a?a.value=e:a=new Ce(e),a.key=t,n.insertEntry(a),i[t]=a}return r},t.prototype.get=function(t){var e=this._map[t],n=this._list;if(null!=e)return e!==n.tail&&(n.remove(e),n.insertEntry(e)),e.value},t.prototype.clear=function(){this._list.clear(),this._map={}},t.prototype.len=function(){return this._list.len()},t}(),Le={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function ke(t){return(t=Math.round(t))<0?0:t>255?255:t}function Pe(t){return t<0?0:t>1?1:t}function Oe(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?ke(parseFloat(e)/100*255):ke(parseInt(e,10))}function Re(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?Pe(parseFloat(e)/100):Pe(parseFloat(e))}function Ne(t,e,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}function ze(t,e,n){return t+(e-t)*n}function Ee(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}function Ve(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var Be=new Ae(20),Fe=null;function Ge(t,e){Fe&&Ve(Fe,e),Fe=Be.put(t,Fe||e.slice())}function He(t,e){if(t){e=e||[];var n=Be.get(t);if(n)return Ve(e,n);var i=(t+="").replace(/ /g,"").toLowerCase();if(i in Le)return Ve(e,Le[i]),Ge(t,e),e;var r,o=i.length;if("#"===i.charAt(0))return 4===o||5===o?(r=parseInt(i.slice(1,4),16))>=0&&r<=4095?(Ee(e,(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,5===o?parseInt(i.slice(4),16)/15:1),Ge(t,e),e):void Ee(e,0,0,0,1):7===o||9===o?(r=parseInt(i.slice(1,7),16))>=0&&r<=16777215?(Ee(e,(16711680&r)>>16,(65280&r)>>8,255&r,9===o?parseInt(i.slice(7),16)/255:1),Ge(t,e),e):void Ee(e,0,0,0,1):void 0;var a=i.indexOf("("),s=i.indexOf(")");if(-1!==a&&s+1===o){var l=i.substr(0,a),u=i.substr(a+1,s-(a+1)).split(","),h=1;switch(l){case"rgba":if(4!==u.length)return 3===u.length?Ee(e,+u[0],+u[1],+u[2],1):Ee(e,0,0,0,1);h=Re(u.pop());case"rgb":return 3!==u.length?void Ee(e,0,0,0,1):(Ee(e,Oe(u[0]),Oe(u[1]),Oe(u[2]),h),Ge(t,e),e);case"hsla":return 4!==u.length?void Ee(e,0,0,0,1):(u[3]=Re(u[3]),We(u,e),Ge(t,e),e);case"hsl":return 3!==u.length?void Ee(e,0,0,0,1):(We(u,e),Ge(t,e),e);default:return}}Ee(e,0,0,0,1)}}function We(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=Re(t[1]),r=Re(t[2]),o=r<=.5?r*(i+1):r+i-r*i,a=2*r-o;return Ee(e=e||[],ke(255*Ne(a,o,n+1/3)),ke(255*Ne(a,o,n)),ke(255*Ne(a,o,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Ue(t,e){var n=He(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,n[i]>255?n[i]=255:n[i]<0&&(n[i]=0);return Je(n,4===n.length?"rgba":"rgb")}}function Xe(t){var e=He(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ye(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[];var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=e[r],s=e[o],l=i-r;return n[0]=ke(ze(a[0],s[0],l)),n[1]=ke(ze(a[1],s[1],l)),n[2]=ke(ze(a[2],s[2],l)),n[3]=Pe(ze(a[3],s[3],l)),n}}var Ze=Ye;function je(t,e,n){if(e&&e.length&&t>=0&&t<=1){var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=He(e[r]),s=He(e[o]),l=i-r,u=Je([ke(ze(a[0],s[0],l)),ke(ze(a[1],s[1],l)),ke(ze(a[2],s[2],l)),Pe(ze(a[3],s[3],l))],"rgba");return n?{color:u,leftIndex:r,rightIndex:o,value:i}:u}}var qe=je;function Ke(t,e,n,i){var r=He(t);if(t)return r=function(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(i,r,o),s=Math.max(i,r,o),l=s-a,u=(s+a)/2;if(0===l)e=0,n=0;else{n=u<.5?l/(s+a):l/(2-s-a);var h=((s-i)/6+l/2)/l,c=((s-r)/6+l/2)/l,p=((s-o)/6+l/2)/l;i===s?e=p-c:r===s?e=1/3+h-p:o===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var d=[360*e,n,u];return null!=t[3]&&d.push(t[3]),d}}(r),null!=e&&(r[0]=function(t){return(t=Math.round(t))<0?0:t>360?360:t}(e)),null!=n&&(r[1]=Re(n)),null!=i&&(r[2]=Re(i)),Je(We(r),"rgba")}function $e(t,e){var n=He(t);if(n&&null!=e)return n[3]=Pe(e),Je(n,"rgba")}function Je(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}}function Qe(t,e){var n=He(t);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[3]/255+(1-n[3])*e:0}var tn=Object.freeze({__proto__:null,parse:He,lift:Ue,toHex:Xe,fastLerp:Ye,fastMapToColor:Ze,lerp:je,mapToColor:qe,modifyHSL:Ke,modifyAlpha:$e,stringify:Je,lum:Qe,random:function(){return"rgb("+Math.round(255*Math.random())+","+Math.round(255*Math.random())+","+Math.round(255*Math.random())+")"}}),en=Array.prototype.slice;function nn(t,e,n){return(e-t)*n+t}function rn(t,e,n,i){for(var r=e.length,o=0;oa)i.length=a;else for(var s=o;s=2&&this.interpolable},t.prototype.getAdditiveTrack=function(){return this._additiveTrack},t.prototype.addKeyframe=function(t,e){t>=this.maxTime?this.maxTime=t:this._needsSort=!0;var n=this.keyframes,i=n.length;if(this.interpolable)if(k(e)){var r=function(t){return k(t&&t[0])?2:1}(e);if(i>0&&this.arrDim!==r)return void(this.interpolable=!1);if(1===r&&"number"!=typeof e[0]||2===r&&"number"!=typeof e[0][0])return void(this.interpolable=!1);if(i>0){var o=n[i-1];this._isAllValueEqual&&(1===r&&ln(e,o.value)||(this._isAllValueEqual=!1))}this.arrDim=r}else{if(this.arrDim>0)return void(this.interpolable=!1);if("string"==typeof e){var a=He(e);a?(e=a,this.isValueColor=!0):this.interpolable=!1}else if("number"!=typeof e||isNaN(e))return void(this.interpolable=!1);if(this._isAllValueEqual&&i>0){o=n[i-1];(this.isValueColor&&!ln(o.value,e)||o.value!==e)&&(this._isAllValueEqual=!1)}}var s={time:t,value:e,percent:0};return this.keyframes.push(s),s},t.prototype.prepare=function(t){var e=this.keyframes;this._needsSort&&e.sort((function(t,e){return t.time-e.time}));for(var n=this.arrDim,i=e.length,r=e[i-1],o=0;o0&&o!==i-1&&sn(e[o].value,r.value,n);if(t&&this.needsAnimate()&&t.needsAnimate()&&n===t.arrDim&&this.isValueColor===t.isValueColor&&!t._finished){this._additiveTrack=t;var a=e[0].value;for(o=0;o=0&&!(o[n].percent<=e);n--);n=Math.min(n,a-2)}else{for(n=this._lastFrame;ne);n++);n=Math.min(n-1,a-2)}var h=o[n+1],c=o[n];if(c&&h){this._lastFrame=n,this._lastFramePercent=e;var p=h.percent-c.percent;if(0!==p){var d=(e-c.percent)/p,f=i?this._additiveValue:u?gn:t[s];if((l>0||u)&&!f&&(f=this._additiveValue=[]),this.useSpline){var g=o[n][r],y=o[0===n?n:n-1][r],v=o[n>a-2?a-1:n+1][r],m=o[n>a-3?a-1:n+2][r];if(l>0)1===l?hn(f,y,g,v,m,d,d*d,d*d*d):function(t,e,n,i,r,o,a,s){for(var l=e.length,u=e[0].length,h=0;h0)1===l?rn(f,c[r],h[r],d):function(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;a.5?e:t}(c[r],h[r],d),i?this._additiveValue=_:t[s]=_}i&&this._addToTarget(t)}}}},t.prototype._addToTarget=function(t){var e=this.arrDim,n=this.propName,i=this._additiveValue;0===e?this.isValueColor?(He(t[n],gn),on(gn,gn,i,1),t[n]=pn(gn)):t[n]=t[n]+i:1===e?on(t[n],t[n],i,1):2===e&&an(t[n],t[n],i,1)},t}(),vn=function(){function t(t,e,n){this._tracks={},this._trackKeys=[],this._delay=0,this._maxTime=0,this._paused=!1,this._started=0,this._clip=null,this._target=t,this._loop=e,e&&n?b("Can' use additive animation on looped animation."):this._additiveAnimators=n}return t.prototype.getTarget=function(){return this._target},t.prototype.changeTarget=function(t){this._target=t},t.prototype.when=function(t,e){return this.whenWithKeys(t,e,E(e))},t.prototype.whenWithKeys=function(t,e,n){for(var i=this._tracks,r=0;r0)){this._started=1;for(var n=this,i=[],r=0;r1){var a=o.pop();r.addKeyframe(a.time,t[i]),r.prepare(r.getAdditiveTrack())}}}},t}(),mn=function(t){function e(e){var n=t.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,e=e||{},n.stage=e.stage||{},n.onframe=e.onframe||function(){},n}return n(e,t),e.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._clipsHead?(this._clipsTail.next=t,t.prev=this._clipsTail,t.next=null,this._clipsTail=t):this._clipsHead=this._clipsTail=t,t.animation=this},e.prototype.addAnimator=function(t){t.animation=this;var e=t.getClip();e&&this.addClip(e)},e.prototype.removeClip=function(t){if(t.animation){var e=t.prev,n=t.next;e?e.next=n:this._clipsHead=n,n?n.prev=e:this._clipsTail=e,t.next=t.prev=t.animation=null}},e.prototype.removeAnimator=function(t){var e=t.getClip();e&&this.removeClip(e),t.animation=null},e.prototype.update=function(t){for(var e=(new Date).getTime()-this._pausedTime,n=e-this._time,i=this._clipsHead;i;){var r=i.next;i.step(e,n)?(i.ondestroy&&i.ondestroy(),this.removeClip(i),i=r):i=r}this._time=e,t||(this.onframe(n),this.trigger("frame",n),this.stage.update&&this.stage.update())},e.prototype._startLoop=function(){var t=this;this._running=!0,Me((function e(){t._running&&(Me(e),!t._paused&&t.update())}))},e.prototype.start=function(){this._running||(this._time=(new Date).getTime(),this._pausedTime=0,this._startLoop())},e.prototype.stop=function(){this._running=!1},e.prototype.pause=function(){this._paused||(this._pauseStart=(new Date).getTime(),this._paused=!0)},e.prototype.resume=function(){this._paused&&(this._pausedTime+=(new Date).getTime()-this._pauseStart,this._paused=!1)},e.prototype.clear=function(){for(var t=this._clipsHead;t;){var e=t.next;t.prev=t.next=t.animation=null,t=e}this._clipsHead=this._clipsTail=null},e.prototype.isFinished=function(){return null==this._clipsHead},e.prototype.animate=function(t,e){e=e||{},this.start();var n=new vn(t,e.loop);return this.addAnimator(n),n},e}(Ft),_n=a.domSupported,xn=(fn={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},{mouse:dn=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],touch:["touchstart","touchend","touchmove"],pointer:O(dn,(function(t){var e=t.replace("mouse","pointer");return fn.hasOwnProperty(e)?e:t}))}),bn=["mousemove","mouseup"],wn=["pointermove","pointerup"],Sn=!1;function Mn(t){var e=t.pointerType;return"pen"===e||"touch"===e}function In(t){t&&(t.zrByTouch=!0)}function Tn(t,e){for(var n=e,i=!1;n&&9!==n.nodeType&&!(i=n.domBelongToZr||n!==e&&n===t.painterRoot);)n=n.parentNode;return i}var Cn=function(t,e){this.stopPropagation=ft,this.stopImmediatePropagation=ft,this.preventDefault=ft,this.type=e.type,this.target=this.currentTarget=t.dom,this.pointerType=e.pointerType,this.clientX=e.clientX,this.clientY=e.clientY},Dn={mousedown:function(t){t=Qt(this.dom,t),this.__mayPointerCapture=[t.zrX,t.zrY],this.trigger("mousedown",t)},mousemove:function(t){t=Qt(this.dom,t);var e=this.__mayPointerCapture;!e||t.zrX===e[0]&&t.zrY===e[1]||this.__togglePointerCapture(!0),this.trigger("mousemove",t)},mouseup:function(t){t=Qt(this.dom,t),this.__togglePointerCapture(!1),this.trigger("mouseup",t)},mouseout:function(t){Tn(this,(t=Qt(this.dom,t)).toElement||t.relatedTarget)||(this.__pointerCapturing&&(t.zrEventControl="no_globalout"),this.trigger("mouseout",t))},wheel:function(t){Sn=!0,t=Qt(this.dom,t),this.trigger("mousewheel",t)},mousewheel:function(t){Sn||(t=Qt(this.dom,t),this.trigger("mousewheel",t))},touchstart:function(t){In(t=Qt(this.dom,t)),this.__lastTouchMoment=new Date,this.handler.processGesture(t,"start"),Dn.mousemove.call(this,t),Dn.mousedown.call(this,t)},touchmove:function(t){In(t=Qt(this.dom,t)),this.handler.processGesture(t,"change"),Dn.mousemove.call(this,t)},touchend:function(t){In(t=Qt(this.dom,t)),this.handler.processGesture(t,"end"),Dn.mouseup.call(this,t),+new Date-+this.__lastTouchMoment<300&&Dn.click.call(this,t)},pointerdown:function(t){Dn.mousedown.call(this,t)},pointermove:function(t){Mn(t)||Dn.mousemove.call(this,t)},pointerup:function(t){Dn.mouseup.call(this,t)},pointerout:function(t){Mn(t)||Dn.mouseout.call(this,t)}};P(["click","dblclick","contextmenu"],(function(t){Dn[t]=function(e){e=Qt(this.dom,e),this.trigger(t,e)}}));var An={pointermove:function(t){Mn(t)||An.mousemove.call(this,t)},pointerup:function(t){An.mouseup.call(this,t)},mousemove:function(t){this.trigger("mousemove",t)},mouseup:function(t){var e=this.__pointerCapturing;this.__togglePointerCapture(!1),this.trigger("mouseup",t),e&&(t.zrEventControl="only_globalout",this.trigger("mouseout",t))}};function Ln(t,e){var n=e.domHandlers;a.pointerEventsSupported?P(xn.pointer,(function(i){Pn(e,i,(function(e){n[i].call(t,e)}))})):(a.touchEventsSupported&&P(xn.touch,(function(i){Pn(e,i,(function(r){n[i].call(t,r),function(t){t.touching=!0,null!=t.touchTimer&&(clearTimeout(t.touchTimer),t.touchTimer=null),t.touchTimer=setTimeout((function(){t.touching=!1,t.touchTimer=null}),700)}(e)}))})),P(xn.mouse,(function(i){Pn(e,i,(function(r){r=Jt(r),e.touching||n[i].call(t,r)}))})))}function kn(t,e){function n(n){Pn(e,n,(function(i){i=Jt(i),Tn(t,i.target)||(i=function(t,e){return Qt(t.dom,new Cn(t,e),!0)}(t,i),e.domHandlers[n].call(t,i))}),{capture:!0})}a.pointerEventsSupported?P(wn,n):a.touchEventsSupported||P(bn,n)}function Pn(t,e,n,i){t.mounted[e]=n,t.listenerOpts[e]=i,te(t.domTarget,e,n,i)}function On(t){var e,n,i,r,o=t.mounted;for(var a in o)o.hasOwnProperty(a)&&(e=t.domTarget,n=a,i=o[a],r=t.listenerOpts[a],Zt?e.removeEventListener(n,i,r):e.detachEvent("on"+n,i));t.mounted={}}var Rn=function(t,e){this.mounted={},this.listenerOpts={},this.touching=!1,this.domTarget=t,this.domHandlers=e},Nn=function(t){function e(e,n){var i=t.call(this)||this;return i.__pointerCapturing=!1,i.dom=e,i.painterRoot=n,i._localHandlerScope=new Rn(e,Dn),_n&&(i._globalHandlerScope=new Rn(document,An)),Ln(i,i._localHandlerScope),i}return n(e,t),e.prototype.dispose=function(){On(this._localHandlerScope),_n&&On(this._globalHandlerScope)},e.prototype.setCursor=function(t){this.dom.style&&(this.dom.style.cursor=t||"default")},e.prototype.__togglePointerCapture=function(t){if(this.__mayPointerCapture=null,_n&&+this.__pointerCapturing^+t){this.__pointerCapturing=t;var e=this._globalHandlerScope;t?kn(this,e):On(e)}},e}(Ft),zn=1;"undefined"!=typeof window&&(zn=Math.max(window.devicePixelRatio||window.screen&&window.screen.deviceXDPI/window.screen.logicalXDPI||1,1));var En=zn,Vn="#333",Bn="#ccc";function Fn(){return[1,0,0,1,0,0]}function Gn(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function Hn(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 Wn(t,e,n){var i=e[0]*n[0]+e[2]*n[1],r=e[1]*n[0]+e[3]*n[1],o=e[0]*n[2]+e[2]*n[3],a=e[1]*n[2]+e[3]*n[3],s=e[0]*n[4]+e[2]*n[5]+e[4],l=e[1]*n[4]+e[3]*n[5]+e[5];return t[0]=i,t[1]=r,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t}function Un(t,e,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+n[0],t[5]=e[5]+n[1],t}function Xn(t,e,n){var i=e[0],r=e[2],o=e[4],a=e[1],s=e[3],l=e[5],u=Math.sin(n),h=Math.cos(n);return t[0]=i*h+a*u,t[1]=-i*u+a*h,t[2]=r*h+s*u,t[3]=-r*u+h*s,t[4]=h*o+u*l,t[5]=h*l-u*o,t}function Yn(t,e,n){var i=n[0],r=n[1];return t[0]=e[0]*i,t[1]=e[1]*r,t[2]=e[2]*i,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*r,t}function Zn(t,e){var n=e[0],i=e[2],r=e[4],o=e[1],a=e[3],s=e[5],l=n*a-o*i;return l?(l=1/l,t[0]=a*l,t[1]=-o*l,t[2]=-i*l,t[3]=n*l,t[4]=(i*s-a*r)*l,t[5]=(o*r-n*s)*l,t):null}function jn(t){var e=[1,0,0,1,0,0];return Hn(e,t),e}var qn=Object.freeze({__proto__:null,create:Fn,identity:Gn,copy:Hn,mul:Wn,translate:Un,rotate:Xn,scale:Yn,invert:Zn,clone:jn}),Kn=Gn,$n=5e-5;function Jn(t){return t>$n||t<-5e-5}var Qn,ti,ei=[],ni=[],ii=[1,0,0,1,0,0],ri=Math.abs,oi=function(){function t(){}return t.prototype.setPosition=function(t){this.x=t[0],this.y=t[1]},t.prototype.setScale=function(t){this.scaleX=t[0],this.scaleY=t[1]},t.prototype.setSkew=function(t){this.skewX=t[0],this.skewY=t[1]},t.prototype.setOrigin=function(t){this.originX=t[0],this.originY=t[1]},t.prototype.needLocalTransform=function(){return Jn(this.rotation)||Jn(this.x)||Jn(this.y)||Jn(this.scaleX-1)||Jn(this.scaleY-1)},t.prototype.updateTransform=function(){var t=this.parent,e=t&&t.transform,n=this.needLocalTransform(),i=this.transform;n||e?(i=i||[1,0,0,1,0,0],n?this.getLocalTransform(i):Kn(i),e&&(n?Wn(i,t.transform,i):Hn(i,t.transform)),this.transform=i,this._resolveGlobalScaleRatio(i)):i&&Kn(i)},t.prototype._resolveGlobalScaleRatio=function(t){var e=this.globalScaleRatio;if(null!=e&&1!==e){this.getGlobalScale(ei);var n=ei[0]<0?-1:1,i=ei[1]<0?-1:1,r=((ei[0]-n)*e+n)/ei[0]||0,o=((ei[1]-i)*e+i)/ei[1]||0;t[0]*=r,t[1]*=r,t[2]*=o,t[3]*=o}this.invTransform=this.invTransform||[1,0,0,1,0,0],Zn(this.invTransform,t)},t.prototype.getLocalTransform=function(e){return t.getLocalTransform(this,e)},t.prototype.getComputedTransform=function(){for(var t=this,e=[];t;)e.push(t),t=t.parent;for(;t=e.pop();)t.updateTransform();return this.transform},t.prototype.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3],i=Math.atan2(t[1],t[0]),r=Math.PI/2+i-Math.atan2(t[3],t[2]);n=Math.sqrt(n)*Math.cos(r),e=Math.sqrt(e),this.skewX=r,this.skewY=0,this.rotation=-i,this.x=+t[4],this.y=+t[5],this.scaleX=e,this.scaleY=n,this.originX=0,this.originY=0}},t.prototype.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(Wn(ni,t.invTransform,e),e=ni);var n=this.originX,i=this.originY;(n||i)&&(ii[4]=n,ii[5]=i,Wn(ni,e,ii),ni[4]-=n,ni[5]-=i,e=ni),this.setLocalTransform(e)}},t.prototype.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)},t.prototype.transformCoordToLocal=function(t,e){var n=[t,e],i=this.invTransform;return i&&Rt(n,n,i),n},t.prototype.transformCoordToGlobal=function(t,e){var n=[t,e],i=this.transform;return i&&Rt(n,n,i),n},t.prototype.getLineScale=function(){var t=this.transform;return t&&ri(t[0]-1)>1e-10&&ri(t[3]-1)>1e-10?Math.sqrt(ri(t[0]*t[3]-t[2]*t[1])):1},t.getLocalTransform=function(t,e){e=e||[];var n=t.originX||0,i=t.originY||0,r=t.scaleX,o=t.scaleY,a=t.rotation||0,s=t.x,l=t.y,u=t.skewX?Math.tan(t.skewX):0,h=t.skewY?Math.tan(-t.skewY):0;return n||i?(e[4]=-n*r-u*i*o,e[5]=-i*o-h*n*r):e[4]=e[5]=0,e[0]=r,e[3]=o,e[1]=h*r,e[2]=u*o,a&&Xn(e,e,a),e[4]+=n+s,e[5]+=i+l,e},t.initDefaultProps=function(){var e=t.prototype;e.x=0,e.y=0,e.scaleX=1,e.scaleY=1,e.originX=0,e.originY=0,e.skewX=0,e.skewY=0,e.rotation=0,e.globalScaleRatio=1}(),t}(),ai=function(){function t(t,e){this.x=t||0,this.y=e||0}return t.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},t.prototype.clone=function(){return new t(this.x,this.y)},t.prototype.set=function(t,e){return this.x=t,this.y=e,this},t.prototype.equal=function(t){return t.x===this.x&&t.y===this.y},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},t.prototype.scale=function(t){this.x*=t,this.y*=t},t.prototype.scaleAndAdd=function(t,e){this.x+=t.x*e,this.y+=t.y*e},t.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},t.prototype.dot=function(t){return this.x*t.x+this.y*t.y},t.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},t.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},t.prototype.normalize=function(){var t=this.len();return this.x/=t,this.y/=t,this},t.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},t.prototype.distanceSquare=function(t){var e=this.x-t.x,n=this.y-t.y;return e*e+n*n},t.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},t.prototype.transform=function(t){if(t){var e=this.x,n=this.y;return this.x=t[0]*e+t[2]*n+t[4],this.y=t[1]*e+t[3]*n+t[5],this}},t.prototype.toArray=function(t){return t[0]=this.x,t[1]=this.y,t},t.prototype.fromArray=function(t){this.x=t[0],this.y=t[1]},t.set=function(t,e,n){t.x=e,t.y=n},t.copy=function(t,e){t.x=e.x,t.y=e.y},t.len=function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},t.lenSquare=function(t){return t.x*t.x+t.y*t.y},t.dot=function(t,e){return t.x*e.x+t.y*e.y},t.add=function(t,e,n){t.x=e.x+n.x,t.y=e.y+n.y},t.sub=function(t,e,n){t.x=e.x-n.x,t.y=e.y-n.y},t.scale=function(t,e,n){t.x=e.x*n,t.y=e.y*n},t.scaleAndAdd=function(t,e,n,i){t.x=e.x+n.x*i,t.y=e.y+n.y*i},t.lerp=function(t,e,n,i){var r=1-i;t.x=r*e.x+i*n.x,t.y=r*e.y+i*n.y},t}(),si=Math.min,li=Math.max,ui=new ai,hi=new ai,ci=new ai,pi=new ai,di=new ai,fi=new ai,gi=function(){function t(t,e,n,i){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i),this.x=t,this.y=e,this.width=n,this.height=i}return t.prototype.union=function(t){var e=si(t.x,this.x),n=si(t.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=li(t.x+t.width,this.x+this.width)-e:this.width=t.width,isFinite(this.y)&&isFinite(this.height)?this.height=li(t.y+t.height,this.y+this.height)-n:this.height=t.height,this.x=e,this.y=n},t.prototype.applyTransform=function(e){t.applyTransform(this,this,e)},t.prototype.calculateTransform=function(t){var e=this,n=t.width/e.width,i=t.height/e.height,r=[1,0,0,1,0,0];return Un(r,r,[-e.x,-e.y]),Yn(r,r,[n,i]),Un(r,r,[t.x,t.y]),r},t.prototype.intersect=function(e,n){if(!e)return!1;e instanceof t||(e=t.create(e));var i=this,r=i.x,o=i.x+i.width,a=i.y,s=i.y+i.height,l=e.x,u=e.x+e.width,h=e.y,c=e.y+e.height,p=!(of&&(f=_,gf&&(f=x,v=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},t.prototype.clone=function(){return new t(this.x,this.y,this.width,this.height)},t.prototype.copy=function(e){t.copy(this,e)},t.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},t.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},t.prototype.isZero=function(){return 0===this.width||0===this.height},t.create=function(e){return new t(e.x,e.y,e.width,e.height)},t.copy=function(t,e){t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height},t.applyTransform=function(e,n,i){if(i){if(i[1]<1e-5&&i[1]>-1e-5&&i[2]<1e-5&&i[2]>-1e-5){var r=i[0],o=i[3],a=i[4],s=i[5];return e.x=n.x*r+a,e.y=n.y*o+s,e.width=n.width*r,e.height=n.height*o,e.width<0&&(e.x+=e.width,e.width=-e.width),void(e.height<0&&(e.y+=e.height,e.height=-e.height))}ui.x=ci.x=n.x,ui.y=pi.y=n.y,hi.x=pi.x=n.x+n.width,hi.y=ci.y=n.y+n.height,ui.transform(i),pi.transform(i),hi.transform(i),ci.transform(i),e.x=si(ui.x,hi.x,ci.x,pi.x),e.y=si(ui.y,hi.y,ci.y,pi.y);var l=li(ui.x,hi.x,ci.x,pi.x),u=li(ui.y,hi.y,ci.y,pi.y);e.width=l-e.x,e.height=u-e.y}else e!==n&&t.copy(e,n)},t}(),yi={},vi="12px sans-serif";var mi={measureText:function(t,e){return Qn||(Qn=C().getContext("2d")),ti!==e&&(ti=Qn.font=e||vi),Qn.measureText(t)}};function _i(t,e){var n=yi[e=e||vi];n||(n=yi[e]=new Ae(500));var i=n.get(t);return null==i&&(i=mi.measureText(t,e).width,n.put(t,i)),i}function xi(t,e,n,i){var r=_i(t,e),o=Mi(e),a=wi(0,r,n),s=Si(0,o,i);return new gi(a,s,r,o)}function bi(t,e,n,i){var r=((t||"")+"").split("\n");if(1===r.length)return xi(r[0],e,n,i);for(var o=new gi(0,0,0,0),a=0;a=0?parseFloat(t)/100*e:parseFloat(t):t}function Ti(t,e,n){var i=e.position||"inside",r=null!=e.distance?e.distance:5,o=n.height,a=n.width,s=o/2,l=n.x,u=n.y,h="left",c="top";if(i instanceof Array)l+=Ii(i[0],n.width),u+=Ii(i[1],n.height),h=null,c=null;else switch(i){case"left":l-=r,u+=s,h="right",c="middle";break;case"right":l+=r+a,u+=s,c="middle";break;case"top":l+=a/2,u-=r,h="center",c="bottom";break;case"bottom":l+=a/2,u+=o+r,h="center";break;case"inside":l+=a/2,u+=s,h="center",c="middle";break;case"insideLeft":l+=r,u+=s,c="middle";break;case"insideRight":l+=a-r,u+=s,h="right",c="middle";break;case"insideTop":l+=a/2,u+=r,h="center";break;case"insideBottom":l+=a/2,u+=o-r,h="center",c="bottom";break;case"insideTopLeft":l+=r,u+=r;break;case"insideTopRight":l+=a-r,u+=r,h="right";break;case"insideBottomLeft":l+=r,u+=o-r,c="bottom";break;case"insideBottomRight":l+=a-r,u+=o-r,h="right",c="bottom"}return(t=t||{}).x=l,t.y=u,t.align=h,t.verticalAlign=c,t}var Ci="__zr_normal__",Di=["x","y","scaleX","scaleY","originX","originY","rotation","ignore"],Ai={x:!0,y:!0,scaleX:!0,scaleY:!0,originX:!0,originY:!0,rotation:!0,ignore:!1},Li={},ki=new gi(0,0,0,0),Pi=function(){function t(t){this.id=x(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return t.prototype._init=function(t){this.attr(t)},t.prototype.drift=function(t,e,n){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=e,this.decomposeTransform(),this.markRedraw()},t.prototype.beforeUpdate=function(){},t.prototype.afterUpdate=function(){},t.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},t.prototype.updateInnerText=function(t){var e=this._textContent;if(e&&(!e.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,i=n.local,r=e.attachedTransform,o=void 0,a=void 0,s=!1;r.parent=i?this:null;var l=!1;if(r.x=e.x,r.y=e.y,r.originX=e.originX,r.originY=e.originY,r.rotation=e.rotation,r.scaleX=e.scaleX,r.scaleY=e.scaleY,null!=n.position){var u=ki;n.layoutRect?u.copy(n.layoutRect):u.copy(this.getBoundingRect()),i||u.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(Li,n,u):Ti(Li,n,u),r.x=Li.x,r.y=Li.y,o=Li.align,a=Li.verticalAlign;var h=n.origin;if(h&&null!=n.rotation){var c=void 0,p=void 0;"center"===h?(c=.5*u.width,p=.5*u.height):(c=Ii(h[0],u.width),p=Ii(h[1],u.height)),l=!0,r.originX=-r.x+c+(i?0:u.x),r.originY=-r.y+p+(i?0:u.y)}}null!=n.rotation&&(r.rotation=n.rotation);var d=n.offset;d&&(r.x+=d[0],r.y+=d[1],l||(r.originX=-d[0],r.originY=-d[1]));var f=null==n.inside?"string"==typeof n.position&&n.position.indexOf("inside")>=0:n.inside,g=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),y=void 0,v=void 0,m=void 0;f&&this.canBeInsideText()?(y=n.insideFill,v=n.insideStroke,null!=y&&"auto"!==y||(y=this.getInsideTextFill()),null!=v&&"auto"!==v||(v=this.getInsideTextStroke(y),m=!0)):(y=n.outsideFill,v=n.outsideStroke,null!=y&&"auto"!==y||(y=this.getOutsideFill()),null!=v&&"auto"!==v||(v=this.getOutsideStroke(y),m=!0)),(y=y||"#000")===g.fill&&v===g.stroke&&m===g.autoStroke&&o===g.align&&a===g.verticalAlign||(s=!0,g.fill=y,g.stroke=v,g.autoStroke=m,g.align=o,g.verticalAlign=a,e.setDefaultTextStyle(g)),e.__dirty|=1,s&&e.dirtyStyle(!0)}},t.prototype.canBeInsideText=function(){return!0},t.prototype.getInsideTextFill=function(){return"#fff"},t.prototype.getInsideTextStroke=function(t){return"#000"},t.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?Bn:Vn},t.prototype.getOutsideStroke=function(t){var e=this.__zr&&this.__zr.getBackgroundColor(),n="string"==typeof e&&He(e);n||(n=[255,255,255,1]);for(var i=n[3],r=this.__zr.isDarkMode(),o=0;o<3;o++)n[o]=n[o]*i+(r?0:255)*(1-i);return n[3]=1,Je(n,"rgba")},t.prototype.traverse=function(t,e){},t.prototype.attrKV=function(t,e){"textConfig"===t?this.setTextConfig(e):"textContent"===t?this.setTextContent(e):"clipPath"===t?this.setClipPath(e):"extra"===t?(this.extra=this.extra||{},I(this.extra,e)):this[t]=e},t.prototype.hide=function(){this.ignore=!0,this.markRedraw()},t.prototype.show=function(){this.ignore=!1,this.markRedraw()},t.prototype.attr=function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(X(t))for(var n=E(t),i=0;i0},t.prototype.getState=function(t){return this.states[t]},t.prototype.ensureState=function(t){var e=this.states;return e[t]||(e[t]={}),e[t]},t.prototype.clearStates=function(t){this.useState(Ci,!1,t)},t.prototype.useState=function(t,e,n,i){var r=t===Ci;if(this.hasState()||!r){var o=this.currentStates,a=this.stateTransition;if(!(D(o,t)>=0)||!e&&1!==o.length){var s;if(this.stateProxy&&!r&&(s=this.stateProxy(t)),s||(s=this.states&&this.states[t]),s||r){r||this.saveCurrentToNormalState(s);var l=!!(s&&s.hoverLayer||i);l&&this._toggleHoverLayerFlag(!0),this._applyStateObj(t,s,this._normalState,e,!n&&!this.__inHover&&a&&a.duration>0,a);var u=this._textContent,h=this._textGuide;return u&&u.useState(t,e,n,l),h&&h.useState(t,e,n,l),r?(this.currentStates=[],this._normalState={}):e?this.currentStates.push(t):this.currentStates=[t],this._updateAnimationTargets(),this.markRedraw(),!l&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2),s}b("State "+t+" not exists.")}}},t.prototype.useStates=function(t,e,n){if(t.length){var i=[],r=this.currentStates,o=t.length,a=o===r.length;if(a)for(var s=0;s0,d);var f=this._textContent,g=this._textGuide;f&&f.useStates(t,e,c),g&&g.useStates(t,e,c),this._updateAnimationTargets(),this.currentStates=t.slice(),this.markRedraw(),!c&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2)}else this.clearStates()},t.prototype._updateAnimationTargets=function(){for(var t=0;t=0){var n=this.currentStates.slice();n.splice(e,1),this.useStates(n)}},t.prototype.replaceState=function(t,e,n){var i=this.currentStates.slice(),r=D(i,t),o=D(i,e)>=0;r>=0?o?i.splice(r,1):i[r]=e:n&&!o&&i.push(e),this.useStates(i)},t.prototype.toggleState=function(t,e){e?this.useState(t,!0):this.removeState(t)},t.prototype._mergeStates=function(t){for(var e,n={},i=0;i=0&&e.splice(n,1)})),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},t.prototype.updateDuringAnimation=function(t){this.markRedraw()},t.prototype.stopAnimation=function(t,e){for(var n=this.animators,i=n.length,r=[],o=0;o8)&&(r("position","_legacyPos","x","y"),r("scale","_legacyScale","scaleX","scaleY"),r("origin","_legacyOrigin","originX","originY"))}(),t}();function Oi(t,e,n,i,r){var o=[];zi(t,"",t,e,n=n||{},i,o,r);var a=o.length,s=!1,l=n.done,u=n.aborted,h=function(){s=!0,--a<=0&&(s?l&&l():u&&u())},c=function(){--a<=0&&(s?l&&l():u&&u())};a||l&&l(),o.length>0&&n.during&&o[0].during((function(t,e){n.during(e)}));for(var p=0;p0||r.force&&!a.length){for(var m=t.animators,_=[],x=0;x=0&&(n.splice(i,0,t),this._doAdd(t))}return this},e.prototype.replaceAt=function(t,e){var n=this._children,i=n[e];if(t&&t!==this&&t.parent!==this&&t!==i){n[e]=t,i.parent=null;var r=this.__zr;r&&i.removeSelfFromZr(r),this._doAdd(t)}return this},e.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__zr;e&&e!==t.__zr&&t.addSelfToZr(e),e&&e.refresh()},e.prototype.remove=function(t){var e=this.__zr,n=this._children,i=D(n,t);return i<0||(n.splice(i,1),t.parent=null,e&&t.removeSelfFromZr(e),e&&e.refresh()),this},e.prototype.removeAll=function(){for(var t=this._children,e=this.__zr,n=0;n0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},t.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},t.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},t.prototype.addHover=function(t){},t.prototype.removeHover=function(t){},t.prototype.clearHover=function(){},t.prototype.refreshHover=function(){this._needsRefreshHover=!0},t.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover()},t.prototype.resize=function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},t.prototype.clearAnimation=function(){this.animation.clear()},t.prototype.getWidth=function(){return this.painter.getWidth()},t.prototype.getHeight=function(){return this.painter.getHeight()},t.prototype.pathToImage=function(t,e){if(this.painter.pathToImage)return this.painter.pathToImage(t,e)},t.prototype.setCursorStyle=function(t){this.handler.setCursorStyle(t)},t.prototype.findHover=function(t,e){return this.handler.findHover(t,e)},t.prototype.on=function(t,e,n){return this.handler.on(t,e,n),this},t.prototype.off=function(t,e){this.handler.off(t,e)},t.prototype.trigger=function(t,e){this.handler.trigger(t,e)},t.prototype.clear=function(){for(var t=this.storage.getRoots(),e=0;e0){if(t<=r)return a;if(t>=o)return s}else{if(t>=r)return a;if(t<=o)return s}else{if(t===r)return a;if(t===o)return s}return(t-r)/l*u+a}function Zi(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?(n=t,n.replace(/^\s+|\s+$/g,"")).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t;var n}function ji(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),n?t:+t}function qi(t){return t.sort((function(t,e){return t-e})),t}function Ki(t){if(t=+t,isNaN(t))return 0;if(t>1e-14)for(var e=1,n=0;n<15;n++,e*=10)if(Math.round(t*e)/e===t)return n;return $i(t)}function $i(t){var e=t.toString().toLowerCase(),n=e.indexOf("e"),i=n>0?+e.slice(n+1):0,r=n>0?n:e.length,o=e.indexOf("."),a=o<0?0:r-1-o;return Math.max(0,a-i)}function Ji(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),o=Math.round(n(Math.abs(e[1]-e[0]))/i),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20}function Qi(t,e,n){if(!t[e])return 0;var i=R(t,(function(t,e){return t+(isNaN(e)?0:e)}),0);if(0===i)return 0;for(var r=Math.pow(10,n),o=O(t,(function(t){return(isNaN(t)?0:t)/i*r*100})),a=100*r,s=O(o,(function(t){return Math.floor(t)})),l=R(s,(function(t,e){return t+e}),0),u=O(o,(function(t,e){return t-s[e]}));lh&&(h=u[p],c=p);++s[c],u[c]=0,++l}return s[e]/r}function tr(t,e){var n=Math.max(Ki(t),Ki(e)),i=t+e;return n>20?i:ji(i,n)}var er=9007199254740991;function nr(t){var e=2*Math.PI;return(t%e+e)%e}function ir(t){return t>-1e-4&&t=10&&e++,e}function lr(t,e){var n=sr(t),i=Math.pow(10,n),r=t/i;return t=(e?r<1.5?1:r<2.5?2:r<4?3:r<7?5:10:r<1?1:r<2?2:r<3?3:r<5?5:10)*i,n>=-20?+t.toFixed(n<0?-n:0):t}function ur(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r}function hr(t){t.sort((function(t,e){return s(t,e,0)?-1:1}));for(var e=-1/0,n=1,i=0;i=0||r&&D(r,s)<0)){var l=n.getShallow(s,e);null!=l&&(o[t[a][0]]=l)}}return o}}var Jr=$r([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),Qr=function(){function t(){}return t.prototype.getAreaStyle=function(t,e){return Jr(this,t,e)},t}(),to=new Ae(50);function eo(t){if("string"==typeof t){var e=to.get(t);return e&&e.image}return t}function no(t,e,n,i,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!n)return e;var o=to.get(t),a={hostEl:n,cb:i,cbPayload:r};return o?!ro(e=o.image)&&o.pending.push(a):((e=new Image).onload=e.onerror=io,to.put(t,e.__cachedImgObj={image:e,pending:[a]}),e.src=e.__zrImageSrc=t),e}return t}return e}function io(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;e=a;l++)s-=a;var u=_i(n,e);return u>s&&(n="",u=0),s=t-u,r.ellipsis=n,r.ellipsisWidth=u,r.contentWidth=s,r.containerWidth=t,r}function lo(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)return"";var o=_i(t,i);if(o<=n)return t;for(var a=0;;a++){if(o<=r||a>=e.maxIterations){t+=e.ellipsis;break}var s=0===a?uo(t,r,e.ascCharWidth,e.cnCharWidth):o>0?Math.floor(t.length*r/o):0;o=_i(t=t.substr(0,s),i)}return""===t&&(t=e.placeholder),t}function uo(t,e,n,i){for(var r=0,o=0,a=t.length;o0&&f+i.accumWidth>i.width&&(o=e.split("\n"),c=!0),i.accumWidth=f}else{var g=vo(e,h,i.width,i.breakAll,i.accumWidth);i.accumWidth=g.accumWidth+d,a=g.linesWidths,o=g.lines}}else o=e.split("\n");for(var y=0;y=33&&e<=255}(t)||!!go[t]}function vo(t,e,n,i,r){for(var o=[],a=[],s="",l="",u=0,h=0,c=0;cn:r+h+d>n)?h?(s||l)&&(f?(s||(s=l,l="",h=u=0),o.push(s),a.push(h-u),l+=p,s="",h=u+=d):(l&&(s+=l,h+=u,l="",u=0),o.push(s),a.push(h),s=p,h=d)):f?(o.push(l),a.push(u),l=p,u=d):(o.push(p),a.push(d)):(h+=d,f?(l+=p,u+=d):(l&&(s+=l,l="",u=0),s+=p))}else l&&(s+=l,h+=u),o.push(s),a.push(h),s="",l="",u=0,h=0}return o.length||s||(s=t,l="",u=0),l&&(s+=l),s&&(o.push(s),a.push(h)),1===o.length&&(h+=r),{accumWidth:h,lines:o,linesWidths:a}}var mo="__zr_style_"+Math.round(10*Math.random()),_o={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},xo={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};_o[mo]=!0;var bo=["z","z2","invisible"],wo=["invisible"],So=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype._init=function(e){for(var n=E(e),i=0;i-1e-8&&tDo||t<-1e-8}function Eo(t,e,n,i,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*i+3*o*n)}function Vo(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r*r)}function Bo(t,e,n,i,r,o){var a=i+3*(e-n)-t,s=3*(n-2*e+t),l=3*(e-t),u=t-r,h=s*s-3*a*l,c=s*l-9*a*u,p=l*l-3*s*u,d=0;if(No(h)&&No(c)){if(No(s))o[0]=0;else(M=-l/s)>=0&&M<=1&&(o[d++]=M)}else{var f=c*c-4*h*p;if(No(f)){var g=c/h,y=-g/2;(M=-s/a+g)>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y)}else if(f>0){var v=Co(f),m=h*s+1.5*a*(-c+v),_=h*s+1.5*a*(-c-v);(M=(-s-((m=m<0?-To(-m,ko):To(m,ko))+(_=_<0?-To(-_,ko):To(_,ko))))/(3*a))>=0&&M<=1&&(o[d++]=M)}else{var x=(2*h*s-3*a*c)/(2*Co(h*h*h)),b=Math.acos(x)/3,w=Co(h),S=Math.cos(b),M=(-s-2*w*S)/(3*a),I=(y=(-s+w*(S+Lo*Math.sin(b)))/(3*a),(-s+w*(S-Lo*Math.sin(b)))/(3*a));M>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y),I>=0&&I<=1&&(o[d++]=I)}}return d}function Fo(t,e,n,i,r){var o=6*n-12*e+6*t,a=9*e+3*i-3*t-9*n,s=3*e-3*t,l=0;if(No(a)){if(zo(o))(h=-s/o)>=0&&h<=1&&(r[l++]=h)}else{var u=o*o-4*a*s;if(No(u))r[0]=-o/(2*a);else if(u>0){var h,c=Co(u),p=(-o-c)/(2*a);(h=(-o+c)/(2*a))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}function Go(t,e,n,i,r,o){var a=(e-t)*r+t,s=(n-e)*r+e,l=(i-n)*r+n,u=(s-a)*r+a,h=(l-s)*r+s,c=(h-u)*r+u;o[0]=t,o[1]=a,o[2]=u,o[3]=c,o[4]=c,o[5]=h,o[6]=l,o[7]=i}function Ho(t,e,n,i,r,o,a,s,l,u,h){var c,p,d,f,g,y=.005,v=1/0;Po[0]=l,Po[1]=u;for(var m=0;m<1;m+=.05)Oo[0]=Eo(t,n,r,a,m),Oo[1]=Eo(e,i,o,s,m),(f=Pt(Po,Oo))=0&&f=0&&y1e-4)return s[0]=t-n,s[1]=e-i,l[0]=t+n,void(l[1]=e+i);if(ea[0]=Qo(r)*n+t,ea[1]=Jo(r)*i+e,na[0]=Qo(o)*n+t,na[1]=Jo(o)*i+e,u(s,ea,na),h(l,ea,na),(r%=ta)<0&&(r+=ta),(o%=ta)<0&&(o+=ta),r>o&&!a?o+=ta:rr&&(ia[0]=Qo(d)*n+t,ia[1]=Jo(d)*i+e,u(s,ia,s),h(l,ia,l))}var ca={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},pa=[],da=[],fa=[],ga=[],ya=[],va=[],ma=Math.min,_a=Math.max,xa=Math.cos,ba=Math.sin,wa=Math.sqrt,Sa=Math.abs,Ma=Math.PI,Ia=2*Ma,Ta="undefined"!=typeof Float32Array,Ca=[];function Da(t){return Math.round(t/Ma*1e8)/1e8%2*Ma}function Aa(t,e){var n=Da(t[0]);n<0&&(n+=Ia);var i=n-t[0],r=t[1];r+=i,!e&&r-n>=Ia?r=n+Ia:e&&n-r>=Ia?r=n-Ia:!e&&n>r?r=n+(Ia-Da(n-r)):e&&n0&&(this._ux=Sa(n/En/t)||0,this._uy=Sa(n/En/e)||0)},t.prototype.setDPR=function(t){this.dpr=t},t.prototype.setContext=function(t){this._ctx=t},t.prototype.getContext=function(){return this._ctx},t.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},t.prototype.reset=function(){this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},t.prototype.moveTo=function(t,e){return this._drawPendingPt(),this.addData(ca.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},t.prototype.lineTo=function(t,e){var n=Sa(t-this._xi),i=Sa(e-this._yi),r=n>this._ux||i>this._uy;if(this.addData(ca.L,t,e),this._ctx&&r&&(this._needsDash?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),r)this._xi=t,this._yi=e,this._pendingPtDist=0;else{var o=n*n+i*i;o>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=e,this._pendingPtDist=o)}return this},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){return this.addData(ca.C,t,e,n,i,r,o),this._ctx&&(this._needsDash?this._dashedBezierTo(t,e,n,i,r,o):this._ctx.bezierCurveTo(t,e,n,i,r,o)),this._xi=r,this._yi=o,this},t.prototype.quadraticCurveTo=function(t,e,n,i){return this.addData(ca.Q,t,e,n,i),this._ctx&&(this._needsDash?this._dashedQuadraticTo(t,e,n,i):this._ctx.quadraticCurveTo(t,e,n,i)),this._xi=n,this._yi=i,this},t.prototype.arc=function(t,e,n,i,r,o){Ca[0]=i,Ca[1]=r,Aa(Ca,o),i=Ca[0];var a=(r=Ca[1])-i;return this.addData(ca.A,t,e,n,n,i,a,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,o),this._xi=xa(r)*n+t,this._yi=ba(r)*n+e,this},t.prototype.arcTo=function(t,e,n,i,r){return this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},t.prototype.rect=function(t,e,n,i){return this._ctx&&this._ctx.rect(t,e,n,i),this.addData(ca.R,t,e,n,i),this},t.prototype.closePath=function(){this._drawPendingPt(),this.addData(ca.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&(this._needsDash&&this._dashedLineTo(e,n),t.closePath()),this._xi=e,this._yi=n,this},t.prototype.fill=function(t){t&&t.fill(),this.toStatic()},t.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},t.prototype.setLineDash=function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,n=0;nu.length&&(this._expandData(),u=this.data);for(var h=0;h0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},t.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],e=0;e0&&d<=t||h<0&&d>=t||0===h&&(c>0&&f<=e||c<0&&f>=e);)d+=h*(n=o[i=this._dashIdx]),f+=c*n,this._dashIdx=(i+1)%g,h>0&&dl||c>0&&fu||a[i%2?"moveTo":"lineTo"](h>=0?ma(d,t):_a(d,t),c>=0?ma(f,e):_a(f,e));h=d-t,c=f-e,this._dashOffset=-wa(h*h+c*c)},t.prototype._dashedBezierTo=function(t,e,n,i,r,o){var a,s,l,u,h,c=this._ctx,p=this._dashSum,d=this._dashOffset,f=this._lineDash,g=this._xi,y=this._yi,v=0,m=this._dashIdx,_=f.length,x=0;for(d<0&&(d=p+d),d%=p,a=0;a<1;a+=.1)s=Eo(g,t,n,r,a+.1)-Eo(g,t,n,r,a),l=Eo(y,e,i,o,a+.1)-Eo(y,e,i,o,a),v+=wa(s*s+l*l);for(;m<_&&!((x+=f[m])>d);m++);for(a=(x-d)/v;a<=1;)u=Eo(g,t,n,r,a),h=Eo(y,e,i,o,a),m%2?c.moveTo(u,h):c.lineTo(u,h),a+=f[m]/v,m=(m+1)%_;m%2!=0&&c.lineTo(r,o),s=r-u,l=o-h,this._dashOffset=-wa(s*s+l*l)},t.prototype._dashedQuadraticTo=function(t,e,n,i){var r=n,o=i;n=(n+2*t)/3,i=(i+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,n,i,r,o)},t.prototype.toStatic=function(){if(this._saveData){this._drawPendingPt();var t=this.data;t instanceof Array&&(t.length=this._len,Ta&&this._len>11&&(this.data=new Float32Array(t)))}},t.prototype.getBoundingRect=function(){fa[0]=fa[1]=ya[0]=ya[1]=Number.MAX_VALUE,ga[0]=ga[1]=va[0]=va[1]=-Number.MAX_VALUE;var t,e=this.data,n=0,i=0,r=0,o=0;for(t=0;tn||Sa(y)>i||c===e-1)&&(f=Math.sqrt(A*A+y*y),r=g,o=_);break;case ca.C:var v=t[c++],m=t[c++],_=(g=t[c++],t[c++]),x=t[c++],b=t[c++];f=Wo(r,o,v,m,g,_,x,b,10),r=x,o=b;break;case ca.Q:f=qo(r,o,v=t[c++],m=t[c++],g=t[c++],_=t[c++],10),r=g,o=_;break;case ca.A:var w=t[c++],S=t[c++],M=t[c++],I=t[c++],T=t[c++],C=t[c++],D=C+T;c+=1;t[c++];d&&(a=xa(T)*M+w,s=ba(T)*I+S),f=_a(M,I)*ma(Ia,Math.abs(C)),r=xa(D)*M+w,o=ba(D)*I+S;break;case ca.R:a=r=t[c++],s=o=t[c++],f=2*t[c++]+2*t[c++];break;case ca.Z:var A=a-r;y=s-o;f=Math.sqrt(A*A+y*y),r=a,o=s}f>=0&&(l[h++]=f,u+=f)}return this._pathLen=u,u},t.prototype.rebuildPath=function(t,e){var n,i,r,o,a,s,l,u,h,c,p=this.data,d=this._ux,f=this._uy,g=this._len,y=e<1,v=0,m=0,_=0;if(!y||(this._pathSegLen||this._calculateLength(),l=this._pathSegLen,u=e*this._pathLen))t:for(var x=0;x0&&(t.lineTo(h,c),_=0),n=r=p[x++],i=o=p[x++],t.moveTo(r,o);break;case ca.L:a=p[x++],s=p[x++];var S=Sa(a-r),M=Sa(s-o);if(S>d||M>f){if(y){if(v+(j=l[m++])>u){var I=(u-v)/j;t.lineTo(r*(1-I)+a*I,o*(1-I)+s*I);break t}v+=j}t.lineTo(a,s),r=a,o=s,_=0}else{var T=S*S+M*M;T>_&&(h=a,c=s,_=T)}break;case ca.C:var C=p[x++],D=p[x++],A=p[x++],L=p[x++],k=p[x++],P=p[x++];if(y){if(v+(j=l[m++])>u){Go(r,C,A,k,I=(u-v)/j,pa),Go(o,D,L,P,I,da),t.bezierCurveTo(pa[1],da[1],pa[2],da[2],pa[3],da[3]);break t}v+=j}t.bezierCurveTo(C,D,A,L,k,P),r=k,o=P;break;case ca.Q:C=p[x++],D=p[x++],A=p[x++],L=p[x++];if(y){if(v+(j=l[m++])>u){Zo(r,C,A,I=(u-v)/j,pa),Zo(o,D,L,I,da),t.quadraticCurveTo(pa[1],da[1],pa[2],da[2]);break t}v+=j}t.quadraticCurveTo(C,D,A,L),r=A,o=L;break;case ca.A:var O=p[x++],R=p[x++],N=p[x++],z=p[x++],E=p[x++],V=p[x++],B=p[x++],F=!p[x++],G=N>z?N:z,H=Sa(N-z)>.001,W=E+V,U=!1;if(y)v+(j=l[m++])>u&&(W=E+V*(u-v)/j,U=!0),v+=j;if(H&&t.ellipse?t.ellipse(O,R,N,z,B,E,W,F):t.arc(O,R,G,E,W,F),U)break t;w&&(n=xa(E)*N+O,i=ba(E)*z+R),r=xa(W)*N+O,o=ba(W)*z+R;break;case ca.R:n=r=p[x],i=o=p[x+1],a=p[x++],s=p[x++];var X=p[x++],Y=p[x++];if(y){if(v+(j=l[m++])>u){var Z=u-v;t.moveTo(a,s),t.lineTo(a+ma(Z,X),s),(Z-=X)>0&&t.lineTo(a+X,s+ma(Z,Y)),(Z-=Y)>0&&t.lineTo(a+_a(X-Z,0),s+Y),(Z-=X)>0&&t.lineTo(a,s+_a(Y-Z,0));break t}v+=j}t.rect(a,s,X,Y);break;case ca.Z:if(_>0&&(t.lineTo(h,c),_=0),y){var j;if(v+(j=l[m++])>u){I=(u-v)/j;t.lineTo(r*(1-I)+n*I,o*(1-I)+i*I);break t}v+=j}t.closePath(),r=n,o=i}}},t.CMD=ca,t.initDefaultProps=function(){var e=t.prototype;e._saveData=!0,e._needsDash=!1,e._dashOffset=0,e._dashIdx=0,e._dashSum=0,e._ux=0,e._uy=0,e._pendingPtDist=0,e._version=0}(),t}();function ka(t,e,n,i,r,o,a){if(0===r)return!1;var s=r,l=0;if(a>e+s&&a>i+s||at+s&&o>n+s||oe+c&&h>i+c&&h>o+c&&h>s+c||ht+c&&u>n+c&&u>r+c&&u>a+c||ue+u&&l>i+u&&l>o+u||lt+u&&s>n+u&&s>r+u||sn||h+ur&&(r+=za);var p=Math.atan2(l,s);return p<0&&(p+=za),p>=i&&p<=r||p+za>=i&&p+za<=r}function Va(t,e,n,i,r,o){if(o>e&&o>i||or?s:0}var Ba=La.CMD,Fa=2*Math.PI;var Ga=[-1,-1,-1],Ha=[-1,-1];function Wa(t,e,n,i,r,o,a,s,l,u){if(u>e&&u>i&&u>o&&u>s||u1&&(h=void 0,h=Ha[0],Ha[0]=Ha[1],Ha[1]=h),f=Eo(e,i,o,s,Ha[0]),d>1&&(g=Eo(e,i,o,s,Ha[1]))),2===d?ve&&s>i&&s>o||s=0&&h<=1&&(r[l++]=h);else{var u=a*a-4*o*s;if(No(u))(h=-a/(2*o))>=0&&h<=1&&(r[l++]=h);else if(u>0){var h,c=Co(u),p=(-a-c)/(2*o);(h=(-a+c)/(2*o))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}(e,i,o,s,Ga);if(0===l)return 0;var u=Yo(e,i,o);if(u>=0&&u<=1){for(var h=0,c=Uo(e,i,o,u),p=0;pn||s<-n)return 0;var l=Math.sqrt(n*n-s*s);Ga[0]=-l,Ga[1]=l;var u=Math.abs(i-r);if(u<1e-4)return 0;if(u>=Fa-1e-4){i=0,r=Fa;var h=o?1:-1;return a>=Ga[0]+t&&a<=Ga[1]+t?h:0}if(i>r){var c=i;i=r,r=c}i<0&&(i+=Fa,r+=Fa);for(var p=0,d=0;d<2;d++){var f=Ga[d];if(f+t>a){var g=Math.atan2(s,f);h=o?1:-1;g<0&&(g=Fa+g),(g>=i&&g<=r||g+Fa>=i&&g+Fa<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),p+=h)}}return p}function Ya(t,e,n,i,r){for(var o,a,s,l,u=t.data,h=t.len(),c=0,p=0,d=0,f=0,g=0,y=0;y1&&(n||(c+=Va(p,d,f,g,i,r))),m&&(f=p=u[y],g=d=u[y+1]),v){case Ba.M:p=f=u[y++],d=g=u[y++];break;case Ba.L:if(n){if(ka(p,d,u[y],u[y+1],e,i,r))return!0}else c+=Va(p,d,u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case Ba.C:if(n){if(Pa(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=Wa(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case Ba.Q:if(n){if(Oa(p,d,u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=Ua(p,d,u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case Ba.A:var _=u[y++],x=u[y++],b=u[y++],w=u[y++],S=u[y++],M=u[y++];y+=1;var I=!!(1-u[y++]);o=Math.cos(S)*b+_,a=Math.sin(S)*w+x,m?(f=o,g=a):c+=Va(p,d,o,a,i,r);var T=(i-_)*w/b+_;if(n){if(Ea(_,x,w,S,S+M,I,e,T,r))return!0}else c+=Xa(_,x,w,S,S+M,I,T,r);p=Math.cos(S+M)*b+_,d=Math.sin(S+M)*w+x;break;case Ba.R:if(f=p=u[y++],g=d=u[y++],o=f+u[y++],a=g+u[y++],n){if(ka(f,g,o,g,e,i,r)||ka(o,g,o,a,e,i,r)||ka(o,a,f,a,e,i,r)||ka(f,a,f,g,e,i,r))return!0}else c+=Va(o,g,o,a,i,r),c+=Va(f,a,f,g,i,r);break;case Ba.Z:if(n){if(ka(p,d,f,g,e,i,r))return!0}else c+=Va(p,d,f,g,i,r);p=f,d=g}}return n||(s=d,l=g,Math.abs(s-l)<1e-4)||(c+=Va(p,d,f,g,i,r)||0),0!==c}var Za=T({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},_o),ja={style:T({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},xo.style)},qa=["x","y","rotation","scaleX","scaleY","originX","originY","invisible","culling","z","z2","zlevel","parent"],Ka=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype.update=function(){var n=this;t.prototype.update.call(this);var i=this.style;if(i.decal){var r=this._decalEl=this._decalEl||new e;r.buildPath===e.prototype.buildPath&&(r.buildPath=function(t){n.buildPath(t,n.shape)}),r.silent=!0;var o=r.style;for(var a in i)o[a]!==i[a]&&(o[a]=i[a]);o.fill=i.fill?i.decal:null,o.decal=null,o.shadowColor=null,i.strokeFirst&&(o.stroke=null);for(var s=0;s.5?Vn:e>.2?"#eee":Bn}if(t)return Bn}return Vn},e.prototype.getInsideTextStroke=function(t){var e=this.style.fill;if(H(e)){var n=this.__zr;if(!(!n||!n.isDarkMode())===Qe(t,0)<.4)return e}},e.prototype.buildPath=function(t,e,n){},e.prototype.pathUpdated=function(){this.__dirty&=-5},e.prototype.createPathProxy=function(){this.path=new La(!1)},e.prototype.hasStroke=function(){var t=this.style,e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.getBoundingRect=function(){var t=this._rect,e=this.style,n=!t;if(n){var i=!1;this.path||(i=!0,this.createPathProxy());var r=this.path;(i||4&this.__dirty)&&(r.beginPath(),this.buildPath(r,this.shape,!1),this.pathUpdated()),t=r.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||n){o.copy(t);var a=e.strokeNoScale?this.getLineScale():1,s=e.lineWidth;if(!this.hasFill()){var l=this.strokeContainThreshold;s=Math.max(s,null==l?4:l)}a>1e-10&&(o.width+=s/a,o.height+=s/a,o.x-=s/a/2,o.y-=s/a/2)}return o}return t},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect(),r=this.style;if(t=n[0],e=n[1],i.contain(t,e)){var o=this.path;if(this.hasStroke()){var a=r.lineWidth,s=r.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(this.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),function(t,e,n,i){return Ya(t,e,!0,n,i)}(o,a/s,t,e)))return!0}if(this.hasFill())return function(t,e,n){return Ya(t,0,!1,e,n)}(o,t,e)}return!1},e.prototype.dirtyShape=function(){this.__dirty|=4,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},e.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},e.prototype.animateShape=function(t){return this.animate("shape",t)},e.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():"shape"===t?this.dirtyShape():this.markRedraw()},e.prototype.attrKV=function(e,n){"shape"===e?this.setShape(n):t.prototype.attrKV.call(this,e,n)},e.prototype.setShape=function(t,e){var n=this.shape;return n||(n=this.shape={}),"string"==typeof t?n[t]=e:I(n,t),this.dirtyShape(),this},e.prototype.shapeChanged=function(){return!!(4&this.__dirty)},e.prototype.createStyle=function(t){return pt(Za,t)},e.prototype._innerSaveToNormal=function(e){t.prototype._innerSaveToNormal.call(this,e);var n=this._normalState;e.shape&&!n.shape&&(n.shape=I({},this.shape))},e.prototype._applyStateObj=function(e,n,i,r,o,a){t.prototype._applyStateObj.call(this,e,n,i,r,o,a);var s,l=!(n&&r);if(n&&n.shape?o?r?s=n.shape:(s=I({},i.shape),I(s,n.shape)):(s=I({},r?this.shape:i.shape),I(s,n.shape)):l&&(s=i.shape),s)if(o){this.shape=I({},this.shape);for(var u={},h=E(s),c=0;c0},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.createStyle=function(t){return pt($a,t)},e.prototype.setBoundingRect=function(t){this._rect=t},e.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var e=t.text;null!=e?e+="":e="";var n=bi(e,t.font,t.textAlign,t.textBaseline);if(n.x+=t.x||0,n.y+=t.y||0,this.hasStroke()){var i=t.lineWidth;n.x-=i/2,n.y-=i/2,n.width+=i,n.height+=i}this._rect=n}return this._rect},e.initDefaultProps=void(e.prototype.dirtyRectTolerance=10),e}(So);Ja.prototype.type="tspan";var Qa=T({x:0,y:0},_o),ts={style:T({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},xo.style)};var es=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.createStyle=function(t){return pt(Qa,t)},e.prototype._getSize=function(t){var e=this.style,n=e[t];if(null!=n)return n;var i,r=(i=e.image)&&"string"!=typeof i&&i.width&&i.height?e.image:this.__image;if(!r)return 0;var o="width"===t?"height":"width",a=e[o];return null==a?r[t]:r[t]/r[o]*a},e.prototype.getWidth=function(){return this._getSize("width")},e.prototype.getHeight=function(){return this._getSize("height")},e.prototype.getAnimationStyleProps=function(){return ts},e.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new gi(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},e}(So);es.prototype.type="image";var ns=Math.round;function is(t,e,n){if(e){var i=e.x1,r=e.x2,o=e.y1,a=e.y2;t.x1=i,t.x2=r,t.y1=o,t.y2=a;var s=n&&n.lineWidth;return s?(ns(2*i)===ns(2*r)&&(t.x1=t.x2=os(i,s,!0)),ns(2*o)===ns(2*a)&&(t.y1=t.y2=os(o,s,!0)),t):t}}function rs(t,e,n){if(e){var i=e.x,r=e.y,o=e.width,a=e.height;t.x=i,t.y=r,t.width=o,t.height=a;var s=n&&n.lineWidth;return s?(t.x=os(i,s,!0),t.y=os(r,s,!0),t.width=Math.max(os(i+o,s,!1)-t.x,0===o?0:1),t.height=Math.max(os(r+a,s,!1)-t.y,0===a?0:1),t):t}}function os(t,e,n){if(!e)return t;var i=ns(2*t);return(i+ns(e))%2==0?i/2:(i+(n?1:-1))/2}var as=function(){this.x=0,this.y=0,this.width=0,this.height=0},ss={},ls=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new as},e.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=rs(ss,e,this.style);n=a.x,i=a.y,r=a.width,o=a.height,a.r=e.r,e=a}else n=e.x,i=e.y,r=e.width,o=e.height;e.r?function(t,e){var n,i,r,o,a,s=e.x,l=e.y,u=e.width,h=e.height,c=e.r;u<0&&(s+=u,u=-u),h<0&&(l+=h,h=-h),"number"==typeof c?n=i=r=o=c:c instanceof Array?1===c.length?n=i=r=o=c[0]:2===c.length?(n=r=c[0],i=o=c[1]):3===c.length?(n=c[0],i=o=c[1],r=c[2]):(n=c[0],i=c[1],r=c[2],o=c[3]):n=i=r=o=0,n+i>u&&(n*=u/(a=n+i),i*=u/a),r+o>u&&(r*=u/(a=r+o),o*=u/a),i+r>h&&(i*=h/(a=i+r),r*=h/a),n+o>h&&(n*=h/(a=n+o),o*=h/a),t.moveTo(s+n,l),t.lineTo(s+u-i,l),0!==i&&t.arc(s+u-i,l+i,i,-Math.PI/2,0),t.lineTo(s+u,l+h-r),0!==r&&t.arc(s+u-r,l+h-r,r,0,Math.PI/2),t.lineTo(s+o,l+h),0!==o&&t.arc(s+o,l+h-o,o,Math.PI/2,Math.PI),t.lineTo(s,l+n),0!==n&&t.arc(s+n,l+n,n,Math.PI,1.5*Math.PI)}(t,e):t.rect(n,i,r,o)},e.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},e}(Ka);ls.prototype.type="rect";var us={fill:"#000"},hs={style:T({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},xo.style)},cs=function(t){function e(e){var n=t.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=us,n.attr(e),n}return n(e,t),e.prototype.childrenRef=function(){return this._children},e.prototype.update=function(){this.styleChanged()&&this._updateSubTexts();for(var e=0;ep&&u){var d=Math.floor(p/l);n=n.slice(0,d)}var f=p,g=h;if(r&&(f+=r[0]+r[2],null!=g&&(g+=r[1]+r[3])),t&&a&&null!=g)for(var y=so(h,o,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),v=0;v0,I=null!=t.width&&("truncate"===t.overflow||"break"===t.overflow||"breakAll"===t.overflow),T=i.calculatedLineHeight,C=0;Cl&&fo(n,t.substring(l,u),e,s),fo(n,i[2],e,s,i[1]),l=oo.lastIndex}lo){b>0?(m.tokens=m.tokens.slice(0,b),y(m,x,_),n.lines=n.lines.slice(0,v+1)):n.lines=n.lines.slice(0,v);break t}var C=w.width,D=null==C||"auto"===C;if("string"==typeof C&&"%"===C.charAt(C.length-1))P.percentWidth=C,h.push(P),P.contentWidth=_i(P.text,I);else{if(D){var A=w.backgroundColor,L=A&&A.image;L&&ro(L=eo(L))&&(P.width=Math.max(P.width,L.width*T/L.height))}var k=f&&null!=r?r-x:null;null!=k&&k=0&&"right"===(C=_[T]).align;)this._placeToken(C,t,b,f,I,"right",y),w-=C.width,I-=C.width,T--;for(M+=(n-(M-d)-(g-I)-w)/2;S<=T;)C=_[S],this._placeToken(C,t,b,f,M+C.width/2,"center",y),M+=C.width,S++;f+=b}},e.prototype._placeToken=function(t,e,n,i,r,o,a){var s=e.rich[t.styleName]||{};s.text=t.text;var l=t.verticalAlign,u=i+n/2;"top"===l?u=i+t.height/2:"bottom"===l&&(u=i+n-t.height/2),!t.isLineHolder&&ms(s)&&this._renderBackground(s,e,"right"===o?r-t.width:"center"===o?r-t.width/2:r,u-t.height/2,t.width,t.height);var h=!!s.backgroundColor,c=t.textPadding;c&&(r=ys(r,o,c),u-=t.height/2-c[0]-t.innerHeight/2);var p=this._getOrCreateChild(Ja),d=p.createStyle();p.useStyle(d);var f=this._defaultStyle,g=!1,y=0,v=gs("fill"in s?s.fill:"fill"in e?e.fill:(g=!0,f.fill)),m=gs("stroke"in s?s.stroke:"stroke"in e?e.stroke:h||a||f.autoStroke&&!g?null:(y=2,f.stroke)),_=s.textShadowBlur>0||e.textShadowBlur>0;d.text=t.text,d.x=r,d.y=u,_&&(d.shadowBlur=s.textShadowBlur||e.textShadowBlur||0,d.shadowColor=s.textShadowColor||e.textShadowColor||"transparent",d.shadowOffsetX=s.textShadowOffsetX||e.textShadowOffsetX||0,d.shadowOffsetY=s.textShadowOffsetY||e.textShadowOffsetY||0),d.textAlign=o,d.textBaseline="middle",d.font=t.font||vi,d.opacity=et(s.opacity,e.opacity,1),m&&(d.lineWidth=et(s.lineWidth,e.lineWidth,y),d.lineDash=tt(s.lineDash,e.lineDash),d.lineDashOffset=e.lineDashOffset||0,d.stroke=m),v&&(d.fill=v);var x=t.contentWidth,b=t.contentHeight;p.setBoundingRect(new gi(wi(d.x,x,d.textAlign),Si(d.y,b,d.textBaseline),x,b))},e.prototype._renderBackground=function(t,e,n,i,r,o){var a,s,l,u=t.backgroundColor,h=t.borderWidth,c=t.borderColor,p=u&&u.image,d=u&&!p,f=t.borderRadius,g=this;if(d||h&&c){(a=this._getOrCreateChild(ls)).useStyle(a.createStyle()),a.style.fill=null;var y=a.shape;y.x=n,y.y=i,y.width=r,y.height=o,y.r=f,a.dirtyShape()}if(d)(l=a.style).fill=u||null,l.fillOpacity=tt(t.fillOpacity,1);else if(p){(s=this._getOrCreateChild(es)).onload=function(){g.dirtyStyle()};var v=s.style;v.image=u.image,v.x=n,v.y=i,v.width=r,v.height=o}h&&c&&((l=a.style).lineWidth=h,l.stroke=c,l.strokeOpacity=tt(t.strokeOpacity,1),l.lineDash=t.borderDash,l.lineDashOffset=t.borderDashOffset||0,a.strokeContainThreshold=0,a.hasFill()&&a.hasStroke()&&(l.strokeFirst=!0,l.lineWidth*=2));var m=(a||s).style;m.shadowBlur=t.shadowBlur||0,m.shadowColor=t.shadowColor||"transparent",m.shadowOffsetX=t.shadowOffsetX||0,m.shadowOffsetY=t.shadowOffsetY||0,m.opacity=et(t.opacity,e.opacity,1)},e.makeFont=function(t){var e="";if(t.fontSize||t.fontFamily||t.fontWeight){var n="";n="string"!=typeof t.fontSize||-1===t.fontSize.indexOf("px")&&-1===t.fontSize.indexOf("rem")&&-1===t.fontSize.indexOf("em")?isNaN(+t.fontSize)?"12px":t.fontSize+"px":t.fontSize,e=[t.fontStyle,t.fontWeight,n,t.fontFamily||"sans-serif"].join(" ")}return e&&ot(e)||t.textFont||t.font},e}(So),ps={left:!0,right:1,center:1},ds={top:1,bottom:1,middle:1};function fs(t){if(t){t.font=cs.makeFont(t);var e=t.align;"middle"===e&&(e="center"),t.align=null==e||ps[e]?e:"left";var n=t.verticalAlign;"center"===n&&(n="middle"),t.verticalAlign=null==n||ds[n]?n:"top",t.padding&&(t.padding=it(t.padding))}}function gs(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function ys(t,e,n){return"right"===e?t-n[1]:"center"===e?t+n[3]/2-n[1]/2:t+n[3]}function vs(t){var e=t.text;return null!=e&&(e+=""),e}function ms(t){return!!(t.backgroundColor||t.borderWidth&&t.borderColor)}var _s=kr(),xs=1,bs={},ws=kr(),Ss=["emphasis","blur","select"],Ms=["normal","emphasis","blur","select"],Is=10,Ts="highlight",Cs="downplay",Ds="select",As="unselect",Ls="toggleSelect";function ks(t){return null!=t&&"none"!==t}var Ps=new Ae(100);function Os(t){if("string"!=typeof t)return t;var e=Ps.get(t);return e||(e=Ue(t,-.1),Ps.put(t,e)),e}function Rs(t,e,n){t.onHoverStateChange&&(t.hoverState||0)!==n&&t.onHoverStateChange(e),t.hoverState=n}function Ns(t){Rs(t,"emphasis",2)}function zs(t){2===t.hoverState&&Rs(t,"normal",0)}function Es(t){Rs(t,"blur",1)}function Vs(t){1===t.hoverState&&Rs(t,"normal",0)}function Bs(t){t.selected=!0}function Fs(t){t.selected=!1}function Gs(t,e,n){e(t,n)}function Hs(t,e,n){Gs(t,e,n),t.isGroup&&t.traverse((function(t){Gs(t,e,n)}))}function Ws(t,e){switch(e){case"emphasis":t.hoverState=2;break;case"normal":t.hoverState=0;break;case"blur":t.hoverState=1;break;case"select":t.selected=!0}}function Us(t,e){var n=this.states[t];if(this.style){if("emphasis"===t)return function(t,e,n,i){var r=n&&D(n,"select")>=0,o=!1;if(t instanceof Ka){var a=ws(t),s=r&&a.selectFill||a.normalFill,l=r&&a.selectStroke||a.normalStroke;if(ks(s)||ks(l)){var u=(i=i||{}).style||{};!ks(u.fill)&&ks(s)?(o=!0,i=I({},i),(u=I({},u)).fill=Os(s)):!ks(u.stroke)&&ks(l)&&(o||(i=I({},i),u=I({},u)),u.stroke=Os(l)),i.style=u}}if(i&&null==i.z2){o||(i=I({},i));var h=t.z2EmphasisLift;i.z2=t.z2+(null!=h?h:Is)}return i}(this,0,e,n);if("blur"===t)return function(t,e,n){var i=D(t.currentStates,e)>=0,r=t.style.opacity,o=i?null:function(t,e,n,i){for(var r=t.style,o={},a=0;a0){var o={dataIndex:r,seriesIndex:t.seriesIndex};null!=i&&(o.dataType=i),e.push(o)}}))})),e}function sl(t,e,n){pl(t,!0),Hs(t,Xs),ll(t,e,n)}function ll(t,e,n){var i=_s(t);null!=e?(i.focus=e,i.blurScope=n):i.focus&&(i.focus=null)}var ul=["emphasis","blur","select"],hl={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function cl(t,e,n,i){n=n||"itemStyle";for(var r=0;r1&&(a*=xl(f),s*=xl(f));var g=(r===o?-1:1)*xl((a*a*(s*s)-a*a*(d*d)-s*s*(p*p))/(a*a*(d*d)+s*s*(p*p)))||0,y=g*a*d/s,v=g*-s*p/a,m=(t+n)/2+wl(c)*y-bl(c)*v,_=(e+i)/2+bl(c)*y+wl(c)*v,x=Tl([1,0],[(p-y)/a,(d-v)/s]),b=[(p-y)/a,(d-v)/s],w=[(-1*p-y)/a,(-1*d-v)/s],S=Tl(b,w);if(Il(b,w)<=-1&&(S=Sl),Il(b,w)>=1&&(S=0),S<0){var M=Math.round(S/Sl*1e6)/1e6;S=2*Sl+M%2*Sl}h.addData(u,m,_,a,s,x,S,c,o)}var Dl=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,Al=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;var Ll=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.applyTransform=function(t){},e}(Ka);function kl(t){return null!=t.setData}function Pl(t,e){var n=function(t){var e=new La;if(!t)return e;var n,i=0,r=0,o=i,a=r,s=La.CMD,l=t.match(Dl);if(!l)return e;for(var u=0;uL*L+k*k&&(M=T,I=C),{cx:M,cy:I,x01:-h,y01:-c,x11:M*(r/b-1),y11:I*(r/b-1)}}function Kl(t,e){var n=Yl(e.r,0),i=Yl(e.r0||0,0),r=n>0;if(r||i>0){if(r||(n=i,i=0),i>n){var o=n;n=i,i=o}var a,s=!!e.clockwise,l=e.startAngle,u=e.endAngle;if(l===u)a=0;else{var h=[l,u];Aa(h,!s),a=Ul(h[0]-h[1])}var c=e.cx,p=e.cy,d=e.cornerRadius||0,f=e.innerCornerRadius||0;if(n>jl)if(a>Bl-jl)t.moveTo(c+n*Gl(l),p+n*Fl(l)),t.arc(c,p,n,l,u,!s),i>jl&&(t.moveTo(c+i*Gl(u),p+i*Fl(u)),t.arc(c,p,i,u,l,s));else{var g=Ul(n-i)/2,y=Zl(g,d),v=Zl(g,f),m=v,_=y,x=n*Gl(l),b=n*Fl(l),w=i*Gl(u),S=i*Fl(u),M=void 0,I=void 0,T=void 0,C=void 0;if((y>jl||v>jl)&&(M=n*Gl(u),I=n*Fl(u),T=i*Gl(l),C=i*Fl(l),ajl)if(_>jl){var N=ql(T,C,x,b,n,_,s),z=ql(M,I,w,S,n,_,s);t.moveTo(c+N.cx+N.x01,p+N.cy+N.y01),_jl&&a>jl)if(m>jl){N=ql(w,S,M,I,i,-m,s),z=ql(x,b,T,C,i,-m,s);t.lineTo(c+N.cx+N.x01,p+N.cy+N.y01),m=2){if(i&&"spline"!==i){var o=function(t,e,n,i){var r,o,a,s,l=[],u=[],h=[],c=[];if(i){a=[1/0,1/0],s=[-1/0,-1/0];for(var p=0,d=t.length;pn-2?n-1:l+1],d=t[l>n-3?n-1:l+2]);var f=u*u,g=u*f;i.push([eu(h[0],c[0],p[0],d[0],u,f,g),eu(h[1],c[1],p[1],d[1],u,f,g)])}return i}(r,n)),t.moveTo(r[0][0],r[0][1]);s=1;for(var c=r.length;sbu[1]){if(a=!1,r)return a;var u=Math.abs(bu[0]-xu[1]),h=Math.abs(xu[0]-bu[1]);Math.min(u,h)>i.len()&&(u0?l?e.animateFrom(n,{duration:f,delay:y||0,easing:g,done:o,force:!!o||!!a,scope:t,during:a}):e.animateTo(n,{duration:f,delay:y||0,easing:g,done:o,force:!!o||!!a,setToFinal:!0,scope:t,during:a}):(e.stopAnimation(),!l&&e.attr(n),o&&o())}else e.stopAnimation(),!l&&e.attr(n),a&&a(1),o&&o()}function Hu(t,e,n,i,r,o){Gu("update",t,e,n,i,r,o)}function Wu(t,e,n,i,r,o){Gu("init",t,e,n,i,r,o)}function Uu(t,e,n,i,r,o){Zu(t)||Gu("remove",t,e,n,i,r,o)}function Xu(t,e,n,i){t.removeTextContent(),t.removeTextGuideLine(),Uu(t,{style:{opacity:0}},e,n,i)}function Yu(t,e,n){function i(){t.parent&&t.parent.remove(t)}t.isGroup?t.traverse((function(t){t.isGroup||Xu(t,e,n,i)})):Xu(t,e,n,i)}function Zu(t){if(!t.__zr)return!0;for(var e=0;eMath.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"}function $u(t){return!t.isGroup}function Ju(t,e,n){if(t&&e){var i,r=(i={},t.traverse((function(t){$u(t)&&t.anid&&(i[t.anid]=t)})),i);e.traverse((function(t){if($u(t)&&t.anid){var e=r[t.anid];if(e){var i=o(t);t.attr(o(e)),Hu(t,i,n,_s(t).dataIndex)}}}))}function o(t){var e={x:t.x,y:t.y,rotation:t.rotation};return function(t){return null!=t.shape}(t)&&(e.shape=I({},t.shape)),e}}function Qu(t,e){return O(t,(function(t){var n=t[0];n=Cu(n,e.x),n=Du(n,e.x+e.width);var i=t[1];return i=Cu(i,e.y),[n,i=Du(i,e.y+e.height)]}))}function th(t,e){var n=Cu(t.x,e.x),i=Du(t.x+t.width,e.x+e.width),r=Cu(t.y,e.y),o=Du(t.y+t.height,e.y+e.height);if(i>=n&&o>=r)return{x:n,y:r,width:i-n,height:o-r}}function eh(t,e,n){var i=I({rectHover:!0},e),r=i.style={strokeNoScale:!0};if(n=n||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(r.image=t.slice(8),T(r,n),new es(i)):Nu(t.replace("path://",""),i,n,"center")}function nh(t,e,n,i,r){for(var o=0,a=r[r.length-1];o=-1e-6)return!1;var f=t-r,g=e-o,y=rh(f,g,u,h)/d;if(y<0||y>1)return!1;var v=rh(f,g,c,p)/d;return!(v<0||v>1)}function rh(t,e,n,i){return t*i-n*e}function oh(t){var e=t.itemTooltipOption,n=t.componentModel,i=t.itemName,r=H(e)?{formatter:e}:e,o=n.mainType,a=n.componentIndex,s={componentType:o,name:i,$vars:["name"]};s[o+"Index"]=a;var l=t.formatterParamsExtra;l&&P(E(l),(function(t){dt(s,t)||(s[t]=l[t],s.$vars.push(t))}));var u=_s(t.el);u.componentMainType=o,u.componentIndex=a,u.tooltipConfig={name:i,option:T({content:i,formatterParams:s},r)}}Ou("circle",Nl),Ou("ellipse",El),Ou("sector",Jl),Ou("ring",tu),Ou("polygon",ru),Ou("polyline",au),Ou("rect",ls),Ou("line",uu),Ou("bezierCurve",du),Ou("arc",gu);var ah=Object.freeze({__proto__:null,extendShape:Lu,extendPath:Pu,registerShape:Ou,getShapeClass:Ru,makePath:Nu,makeImage:zu,mergePath:Vu,resizePath:Bu,subPixelOptimizeLine:function(t){return is(t.shape,t.shape,t.style),t},subPixelOptimizeRect:function(t){return rs(t.shape,t.shape,t.style),t},subPixelOptimize:Fu,updateProps:Hu,initProps:Wu,removeElement:Uu,removeElementWithFadeOut:Yu,isElementRemoved:Zu,getTransform:ju,applyTransform:qu,transformDirection:Ku,groupTransition:Ju,clipPointsByRect:Qu,clipRectByRect:th,createIcon:eh,linePolygonIntersect:nh,lineLineIntersect:ih,setTooltipConfig:oh,Group:Ei,Image:es,Text:cs,Circle:Nl,Ellipse:El,Sector:Jl,Ring:tu,Polygon:ru,Polyline:au,Rect:ls,Line:uu,BezierCurve:du,Arc:gu,IncrementalDisplayable:Tu,CompoundPath:yu,LinearGradient:mu,RadialGradient:_u,BoundingRect:gi,OrientedBoundingRect:Mu,Point:ai,Path:Ka}),sh={};function lh(t,e){for(var n=0;n-1?Eh:Bh;function Wh(t,e){t=t.toUpperCase(),Gh[t]=new Oh(e),Fh[t]=e}Wh(Vh,{time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}}),Wh(Eh,{time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}});var Uh=1e3,Xh=6e4,Yh=36e5,Zh=864e5,jh=31536e6,qh={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{hh}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {hh}:{mm}:{ss} {SSS}"},Kh="{yyyy}-{MM}-{dd}",$h={year:"{yyyy}",month:"{yyyy}-{MM}",day:Kh,hour:"{yyyy}-{MM}-{dd} "+qh.hour,minute:"{yyyy}-{MM}-{dd} "+qh.minute,second:"{yyyy}-{MM}-{dd} "+qh.second,millisecond:qh.none},Jh=["year","month","day","hour","minute","second","millisecond"],Qh=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function tc(t,e){return"0000".substr(0,e-(t+="").length)+t}function ec(t){switch(t){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return t}}function nc(t){return t===ec(t)}function ic(t,e,n,i){var r=or(t),o=r[ac(n)](),a=r[sc(n)]()+1,s=Math.floor((a-1)/4)+1,l=r[lc(n)](),u=r["get"+(n?"UTC":"")+"Day"](),h=r[uc(n)](),c=(h-1)%12+1,p=r[hc(n)](),d=r[cc(n)](),f=r[pc(n)](),g=(i instanceof Oh?i:function(t){return Gh[t]}(i||Hh)||Gh.EN).getModel("time"),y=g.get("month"),v=g.get("monthAbbr"),m=g.get("dayOfWeek"),_=g.get("dayOfWeekAbbr");return(e||"").replace(/{yyyy}/g,o+"").replace(/{yy}/g,o%100+"").replace(/{Q}/g,s+"").replace(/{MMMM}/g,y[a-1]).replace(/{MMM}/g,v[a-1]).replace(/{MM}/g,tc(a,2)).replace(/{M}/g,a+"").replace(/{dd}/g,tc(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,m[u]).replace(/{ee}/g,_[u]).replace(/{e}/g,u+"").replace(/{HH}/g,tc(h,2)).replace(/{H}/g,h+"").replace(/{hh}/g,tc(c+"",2)).replace(/{h}/g,c+"").replace(/{mm}/g,tc(p,2)).replace(/{m}/g,p+"").replace(/{ss}/g,tc(d,2)).replace(/{s}/g,d+"").replace(/{SSS}/g,tc(f,3)).replace(/{S}/g,f+"")}function rc(t,e){var n=or(t),i=n[sc(e)]()+1,r=n[lc(e)](),o=n[uc(e)](),a=n[hc(e)](),s=n[cc(e)](),l=0===n[pc(e)](),u=l&&0===s,h=u&&0===a,c=h&&0===o,p=c&&1===r;return p&&1===i?"year":p?"month":c?"day":h?"hour":u?"minute":l?"second":"millisecond"}function oc(t,e,n){var i="number"==typeof t?or(t):t;switch(e=e||rc(t,n)){case"year":return i[ac(n)]();case"half-year":return i[sc(n)]()>=6?1:0;case"quarter":return Math.floor((i[sc(n)]()+1)/4);case"month":return i[sc(n)]();case"day":return i[lc(n)]();case"half-day":return i[uc(n)]()/24;case"hour":return i[uc(n)]();case"minute":return i[hc(n)]();case"second":return i[cc(n)]();case"millisecond":return i[pc(n)]()}}function ac(t){return t?"getUTCFullYear":"getFullYear"}function sc(t){return t?"getUTCMonth":"getMonth"}function lc(t){return t?"getUTCDate":"getDate"}function uc(t){return t?"getUTCHours":"getHours"}function hc(t){return t?"getUTCMinutes":"getMinutes"}function cc(t){return t?"getUTCSeconds":"getSeconds"}function pc(t){return t?"getUTCSeconds":"getSeconds"}function dc(t){return t?"setUTCFullYear":"setFullYear"}function fc(t){return t?"setUTCMonth":"setMonth"}function gc(t){return t?"setUTCDate":"setDate"}function yc(t){return t?"setUTCHours":"setHours"}function vc(t){return t?"setUTCMinutes":"setMinutes"}function mc(t){return t?"setUTCSeconds":"setSeconds"}function _c(t){return t?"setUTCSeconds":"setSeconds"}function xc(t){if(!pr(t))return H(t)?t:"-";var e=(t+"").split(".");return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(e.length>1?"."+e[1]:"")}function bc(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,(function(t,e){return e.toUpperCase()})),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}var wc=it,Sc=/([&<>"'])/g,Mc={"&":"&","<":"<",">":">",'"':""","'":"'"};function Ic(t){return null==t?"":(t+"").replace(Sc,(function(t,e){return Mc[e]}))}function Tc(t,e,n){function i(t){return t&&ot(t)?t:"-"}function r(t){return!(null==t||isNaN(t)||!isFinite(t))}var o="time"===e,a=t instanceof Date;if(o||a){var s=o?or(t):t;if(!isNaN(+s))return ic(s,"{yyyy}-{MM}-{dd} {hh}:{mm}:{ss}",n);if(a)return"-"}if("ordinal"===e)return W(t)?i(t):U(t)&&r(t)?t+"":"-";var l=cr(t);return r(l)?xc(l):W(t)?i(t):"-"}var Cc=["a","b","c","d","e","f","g"],Dc=function(t,e){return"{"+t+(null==e?"":e)+"}"};function Ac(t,e,n){F(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r=e[0].$vars||[],o=0;o':'':{renderMode:o,content:"{"+(n.markerId||"markerX")+"|} ",style:"subItem"===r?{width:4,height:4,borderRadius:2,backgroundColor:i}:{width:10,height:10,borderRadius:5,backgroundColor:i}}:""}function kc(t,e){return e=e||"transparent",H(t)?t:X(t)&&t.colorStops&&(t.colorStops[0]||{}).color||e}function Pc(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.opener=null,n.location.href=t}else window.open(t,e)}var Oc=P,Rc=["left","right","top","bottom","width","height"],Nc=[["width","left","right"],["height","top","bottom"]];function zc(t,e,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;e.eachChild((function(l,u){var h,c,p=l.getBoundingRect(),d=e.childAt(u+1),f=d&&d.getBoundingRect();if("horizontal"===t){var g=p.width+(f?-f.x+p.x:0);(h=o+g)>i||l.newline?(o=0,h=g,a+=s+n,s=p.height):s=Math.max(s,p.height)}else{var y=p.height+(f?-f.y+p.y:0);(c=a+y)>r||l.newline?(o+=s+n,a=0,c=y,s=p.width):s=Math.max(s,p.width)}l.newline||(l.x=o,l.y=a,l.markRedraw(),"horizontal"===t?o=h+n:a=c+n)}))}var Ec=zc;B(zc,"vertical"),B(zc,"horizontal");function Vc(t,e,n){n=wc(n||0);var i=e.width,r=e.height,o=Zi(t.left,i),a=Zi(t.top,r),s=Zi(t.right,i),l=Zi(t.bottom,r),u=Zi(t.width,i),h=Zi(t.height,r),c=n[2]+n[0],p=n[1]+n[3],d=t.aspect;switch(isNaN(u)&&(u=i-s-p-o),isNaN(h)&&(h=r-l-c-a),null!=d&&(isNaN(u)&&isNaN(h)&&(d>i/r?u=.8*i:h=.8*r),isNaN(u)&&(u=d*h),isNaN(h)&&(h=u/d)),isNaN(o)&&(o=i-s-u-p),isNaN(a)&&(a=r-l-h-c),t.left||t.right){case"center":o=i/2-u/2-n[3];break;case"right":o=i-u-p}switch(t.top||t.bottom){case"middle":case"center":a=r/2-h/2-n[0];break;case"bottom":a=r-h-c}o=o||0,a=a||0,isNaN(u)&&(u=i-p-o-(s||0)),isNaN(h)&&(h=r-c-a-(l||0));var f=new gi(o+n[3],a+n[0],u,h);return f.margin=n,f}function Bc(t,e,n,i,r){var o=!r||!r.hv||r.hv[0],a=!r||!r.hv||r.hv[1],s=r&&r.boundingMode||"all";if(o||a){var l;if("raw"===s)l="group"===t.type?new gi(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(l=t.getBoundingRect(),t.needLocalTransform()){var u=t.getLocalTransform();(l=l.clone()).applyTransform(u)}var h=Vc(T({width:l.width,height:l.height},e),n,i),c=o?h.x-l.x:0,p=a?h.y-l.y:0;"raw"===s?(t.x=c,t.y=p):(t.x+=c,t.y+=p),t.markRedraw()}}function Fc(t){var e=t.layoutMode||t.constructor.layoutMode;return X(e)?e:e?{type:e}:null}function Gc(t,e,n){var i=n&&n.ignoreSize;!F(i)&&(i=[i,i]);var r=a(Nc[0],0),o=a(Nc[1],1);function a(n,r){var o={},a=0,u={},h=0;if(Oc(n,(function(e){u[e]=t[e]})),Oc(n,(function(t){s(e,t)&&(o[t]=u[t]=e[t]),l(o,t)&&a++,l(u,t)&&h++})),i[r])return l(e,n[1])?u[n[2]]=null:l(e,n[2])&&(u[n[1]]=null),u;if(2!==h&&a){if(a>=2)return o;for(var c=0;c=0;a--)o=S(o,n[a],!0);e.defaultOption=o}return e.defaultOption},e.prototype.getReferringComponents=function(t,e){var n=t+"Index",i=t+"Id";return Er(this.ecModel,t,{index:this.get(n,!0),id:this.get(i,!0)},e)},e.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},e.protoInitialize=function(){var t=e.prototype;t.type="component",t.id="",t.name="",t.mainType="",t.subType="",t.componentIndex=0}(),e}(Oh);Yr(Xc,Oh),Kr(Xc),function(t){var e={};t.registerSubTypeDefaulter=function(t,n){var i=Wr(t);e[i.main]=n},t.determineSubType=function(n,i){var r=i.type;if(!r){var o=Wr(n).main;t.hasSubTypes(n)&&e[o]&&(r=e[o](i))}return r}}(Xc),function(t,e){function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}t.topologicalTravel=function(t,i,r,o){if(t.length){var a=function(t){var i={},r=[];return P(t,(function(o){var a=n(i,o),s=function(t,e){var n=[];return P(t,(function(t){D(e,t)>=0&&n.push(t)})),n}(a.originalDeps=e(o),t);a.entryCount=s.length,0===a.entryCount&&r.push(o),P(s,(function(t){D(a.predecessor,t)<0&&a.predecessor.push(t);var e=n(i,t);D(e.successor,t)<0&&e.successor.push(o)}))})),{graph:i,noEntryList:r}}(i),s=a.graph,l=a.noEntryList,u={};for(P(t,(function(t){u[t]=!0}));l.length;){var h=l.pop(),c=s[h],p=!!u[h];p&&(r.call(o,h,c.originalDeps.slice()),delete u[h]),P(c.successor,p?f:d)}P(u,(function(){var t="";throw new Error(t)}))}function d(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}function f(t){u[t]=!0,d(t)}}}(Xc,(function(t){var e=[];P(Xc.getClassesByMainType(t),(function(t){e=e.concat(t.dependencies||t.prototype.dependencies||[])})),e=O(e,(function(t){return Wr(t).main})),"dataset"!==t&&D(e,"dataset")<=0&&e.unshift("dataset");return e}));var Yc="";"undefined"!=typeof navigator&&(Yc=navigator.platform||"");var Zc="rgba(0, 0, 0, 0.2)",jc={darkMode:"auto",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Zc,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Zc,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Zc,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Zc,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Zc,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Zc,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:Yc.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},qc=ht(["tooltip","label","itemName","itemId","seriesName"]),Kc="original",$c="arrayRows",Jc="objectRows",Qc="keyedColumns",tp="typedArray",ep="unknown",np="column",ip="row",rp=1,op=2,ap=3,sp=kr();function lp(t,e,n){var i={},r=hp(e);if(!r||!t)return i;var o,a,s=[],l=[],u=e.ecModel,h=sp(u).datasetMap,c=r.uid+"_"+n.seriesLayoutBy;P(t=t.slice(),(function(e,n){var r=X(e)?e:t[n]={name:e};"ordinal"===r.type&&null==o&&(o=n,a=f(r)),i[r.name]=[]}));var p=h.get(c)||h.set(c,{categoryWayDim:a,valueWayDim:0});function d(t,e,n){for(var i=0;ie)return t[i];return t[n-1]}(i,a):n;if((h=h||n)&&h.length){var c=h[l];return r&&(u[r]=c),s.paletteIdx=(l+1)%h.length,c}}var wp=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(t,e,n,i,r,o){i=i||{},this.option=null,this._theme=new Oh(i),this._locale=new Oh(r),this._optionManager=o},e.prototype.setOption=function(t,e,n){var i=Ip(e);this._optionManager.setOption(t,n,i),this._resetOption(null,i)},e.prototype.resetOption=function(t,e){return this._resetOption(t,Ip(e))},e.prototype._resetOption=function(t,e){var n=!1,i=this._optionManager;if(!t||"recreate"===t){var r=i.mountOption("recreate"===t);0,this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(r,e)):yp(this,r),n=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(n=!0,this._mergeOption(o,e))}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this);a.length&&P(a,(function(t){n=!0,this._mergeOption(t,e)}),this)}return n},e.prototype.mergeOption=function(t){this._mergeOption(t,null)},e.prototype._mergeOption=function(t,e){var n=this.option,i=this._componentsMap,r=this._componentsCount,o=[],a=ht(),s=e&&e.replaceMergeMainTypeMap;sp(this).datasetMap=ht(),P(t,(function(t,e){null!=t&&(Xc.hasClass(e)?e&&(o.push(e),a.set(e,!0)):n[e]=null==n[e]?w(t):S(n[e],t,!0))})),s&&s.each((function(t,e){Xc.hasClass(e)&&!a.get(e)&&(o.push(e),a.set(e,!0))})),Xc.topologicalTravel(o,Xc.getAllClassMainTypes(),(function(e){var o=function(t,e,n){var i=dp.get(e);if(!i)return n;var r=i(t);return r?n.concat(r):n}(this,e,xr(t[e])),a=i.get(e),l=a?s&&s.get(e)?"replaceMerge":"normalMerge":"replaceAll",u=Mr(a,o,l);(function(t,e,n){P(t,(function(t){var i=t.newOption;X(i)&&(t.keyInfo.mainType=e,t.keyInfo.subType=function(t,e,n,i){return e.type?e.type:n?n.subType:i.determineSubType(t,e)}(e,i,t.existing,n))}))})(u,e,Xc),n[e]=null,i.set(e,null),r.set(e,0);var h=[],c=[],p=0;P(u,(function(t,n){var i=t.existing,r=t.newOption;if(r){var o="series"===e,a=Xc.getClass(e,t.keyInfo.subType,!o);if(!a)return;if(i&&i.constructor===a)i.name=t.keyInfo.name,i.mergeOption(r,this),i.optionUpdated(r,!1);else{var s=I({componentIndex:n},t.keyInfo);I(i=new a(r,this,this,s),s),t.brandNew&&(i.__requireNewView=!0),i.init(r,this,this),i.optionUpdated(null,!0)}}else i&&(i.mergeOption({},this),i.optionUpdated({},!1));i?(h.push(i.option),c.push(i),p++):(h.push(void 0),c.push(void 0))}),this),n[e]=h,i.set(e,c),r.set(e,p),"series"===e&&fp(this)}),this),this._seriesIndices||fp(this)},e.prototype.getOption=function(){var t=w(this.option);return P(t,(function(e,n){if(Xc.hasClass(n)){for(var i=xr(e),r=i.length,o=!1,a=r-1;a>=0;a--)i[a]&&!Ar(i[a])?o=!0:(i[a]=null,!o&&r--);i.length=r,t[n]=i}})),delete t["\0_ec_inner"],t},e.prototype.getTheme=function(){return this._theme},e.prototype.getLocaleModel=function(){return this._locale},e.prototype.getLocale=function(t){return this.getLocaleModel().get(t)},e.prototype.setUpdatePayload=function(t){this._payload=t},e.prototype.getUpdatePayload=function(){return this._payload},e.prototype.getComponent=function(t,e){var n=this._componentsMap.get(t);if(n){var i=n[e||0];if(i)return i;if(null==e)for(var r=0;r=e:"max"===n?t<=e:t===e})(i[a],t,o)||(r=!1)}})),r}var Op=P,Rp=X,Np=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function zp(t){var e=t&&t.itemStyle;if(e)for(var n=0,i=Np.length;n=0;f--){var g=t[f];if(s||(c=g.data.rawIndexOf(g.stackedByDimension,h)),c>=0){var y=g.data.getByRawIndex(g.stackResultDimension,c);if(p>=0&&y>0||p<=0&&y<0){p=tr(p,y),d=y;break}}}return i[0]=p,i[1]=d,i}));a.hostModel.setData(l),e.data=l}))}var td,ed,nd,id,rd,od=function(t){this.data=t.data||(t.sourceFormat===Qc?{}:[]),this.sourceFormat=t.sourceFormat||ep,this.seriesLayoutBy=t.seriesLayoutBy||np,this.startIndex=t.startIndex||0,this.dimensionsDefine=t.dimensionsDefine,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.encodeDefine=t.encodeDefine,this.metaRawOption=t.metaRawOption};function ad(t){return t instanceof od}function sd(t,e,n,i){n=n||hd(t);var r=e.seriesLayoutBy,o=function(t,e,n,i,r){var o,a;if(!t)return{dimensionsDefine:cd(r),startIndex:a,dimensionsDetectedCount:o};if(e===$c){var s=t;"auto"===i||null==i?pd((function(t){null!=t&&"-"!==t&&(H(t)?null==a&&(a=1):a=0)}),n,s,10):a=U(i)?i:i?1:0,r||1!==a||(r=[],pd((function(t,e){r[e]=null!=t?t+"":""}),n,s,1/0)),o=r?r.length:n===ip?s.length:s[0]?s[0].length:null}else if(e===Jc)r||(r=function(t){var e,n=0;for(;nu&&(u=d)}s[0]=l,s[1]=u}},i=function(){return this._data?this._data.length/this._dimSize:0};function r(t){for(var e=0;e=1)&&(t=1),t}a===l&&s===u||(e="reset"),(this._dirty||"reset"===e)&&(this._dirty=!1,o=this._doReset(i)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var p=this._dueIndex,d=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!i&&(o||p1&&i>0?s:a}};return o;function a(){return e=t?null:oe},gte:function(t,e){return t>=e}},Nd=function(){function t(t,e){if("number"!=typeof e){var n="";0,vr(n)}this._opFn=Rd[t],this._rvalFloat=cr(e)}return t.prototype.evaluate=function(t){return"number"==typeof t?this._opFn(t,this._rvalFloat):this._opFn(cr(t),this._rvalFloat)},t}(),zd=function(){function t(t,e){var n="desc"===t;this._resultLT=n?1:-1,null==e&&(e=n?"min":"max"),this._incomparable="min"===e?-1/0:1/0}return t.prototype.evaluate=function(t,e){var n=typeof t,i=typeof e,r="number"===n?t:cr(t),o="number"===i?e:cr(e),a=isNaN(r),s=isNaN(o);if(a&&(r=this._incomparable),s&&(o=this._incomparable),a&&s){var l="string"===n,u="string"===i;l&&(r=u?t:0),u&&(o=l?e:0)}return ro?-this._resultLT:0},t}(),Ed=function(){function t(t,e){this._rval=e,this._isEQ=t,this._rvalTypeof=typeof e,this._rvalFloat=cr(e)}return t.prototype.evaluate=function(t){var e=t===this._rval;if(!e){var n=typeof t;n===this._rvalTypeof||"number"!==n&&"number"!==this._rvalTypeof||(e=cr(t)===this._rvalFloat)}return this._isEQ?e:!e},t}();function Vd(t,e){return"eq"===t||"ne"===t?new Ed("eq"===t,e):dt(Rd,t)?new Nd(t,e):null}var Bd=function(){function t(){}return t.prototype.getRawData=function(){throw new Error("not supported")},t.prototype.getRawDataItem=function(t){throw new Error("not supported")},t.prototype.cloneRawData=function(){},t.prototype.getDimensionInfo=function(t){},t.prototype.cloneAllDimensionInfo=function(){},t.prototype.count=function(){},t.prototype.retrieveValue=function(t,e){},t.prototype.retrieveValueFromItem=function(t,e){},t.prototype.convertValue=function(t,e){return kd(t,e)},t}();function Fd(t){var e=t.sourceFormat;if(!Yd(e)){var n="";0,vr(n)}return t.data}function Gd(t){var e=t.sourceFormat,n=t.data;if(!Yd(e)){var i="";0,vr(i)}if(e===$c){for(var r=[],o=0,a=n.length;o9e10&&(this._versionSignBase=0)},t.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},t.prototype.prepareSource=function(){this._isDirty()&&this._createSource()},t.prototype._createSource=function(){this._setLocalSource([],[]);var t,e,n=this._sourceHost,i=this._getUpstreamSourceManagers(),r=!!i.length;if(qd(n)){var o=n,a=void 0,s=void 0,l=void 0;if(r){var u=i[0];u.prepareSource(),a=(l=u.getSource()).data,s=l.sourceFormat,e=[u._getVersionSign()]}else s=Z(a=o.get("data",!0))?tp:Kc,e=[];var h=this._getSourceMetaRawOption(),c=l?l.metaRawOption:null;t=[sd(a,{seriesLayoutBy:tt(h.seriesLayoutBy,c?c.seriesLayoutBy:null),sourceHeader:tt(h.sourceHeader,c?c.sourceHeader:null),dimensions:tt(h.dimensions,c?c.dimensions:null)},s,o.get("encode",!0))]}else{var p=n;if(r){var d=this._applyTransform(i);t=d.sourceList,e=d.upstreamSignList}else{t=[sd(p.get("source",!0),this._getSourceMetaRawOption(),null,null)],e=[]}}this._setLocalSource(t,e)},t.prototype._applyTransform=function(t){var e,n=this._sourceHost,i=n.get("transform",!0),r=n.get("fromTransformResult",!0);if(null!=r){var o="";1!==t.length&&Kd(o)}var a,s=[],l=[];return P(t,(function(t){t.prepareSource();var e=t.getSource(r||0),n="";null==r||e||Kd(n),s.push(e),l.push(t._getVersionSign())})),i?e=function(t,e,n){var i=xr(t),r=i.length,o="";r||vr(o);for(var a=0,s=r;a1||e>0&&!t.noHeader,i=0;P(t.blocks,(function(t){ef(t).planLayout(t);var e=t.__gapLevelBetweenSubBlocks;e>=i&&(i=e+(!n||e&&("section"!==t.type||t.noHeader)?0:1))})),t.__gapLevelBetweenSubBlocks=i},build:function(t,e,n,i){var r=e.noHeader,o=of(e),a=function(t,e,n,i){var r=[],o=e.blocks||[];rt(!o||F(o)),o=o||[];var a=t.orderMode;if(e.sortBlocks&&a){o=o.slice();var s={valueAsc:"asc",valueDesc:"desc"};if(dt(s,a)){var l=new zd(s[a],null);o.sort((function(t,e){return l.evaluate(t.sortParam,e.sortParam)}))}else"seriesDesc"===a&&o.reverse()}var u=of(e);if(P(o,(function(e,n){var o=ef(e).build(t,e,n>0?u.html:0,i);null!=o&&r.push(o)})),!r.length)return;return"richText"===t.renderMode?r.join(u.richText):af(r.join(""),n)}(t,e,r?n:o.html,i);if(r)return a;var s=Tc(e.header,"ordinal",t.useUTC),l=$d(i,t.renderMode).nameStyle;return"richText"===t.renderMode?sf(t,s,l)+o.richText+a:af('
'+Ic(s)+"
"+a,n)}},nameValue:{planLayout:function(t){t.__gapLevelBetweenSubBlocks=0},build:function(t,e,n,i){var r=t.renderMode,o=e.noName,a=e.noValue,s=!e.markerType,l=e.name,u=e.value,h=t.useUTC;if(!o||!a){var c=s?"":t.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333",r),p=o?"":Tc(l,"ordinal",h),d=e.valueType,f=a?[]:F(u)?O(u,(function(t,e){return Tc(t,F(d)?d[e]:d,h)})):[Tc(u,F(d)?d[0]:d,h)],g=!s||!o,y=!s&&o,v=$d(i,r),m=v.nameStyle,_=v.valueStyle;return"richText"===r?(s?"":c)+(o?"":sf(t,p,m))+(a?"":function(t,e,n,i,r){var o=[r],a=i?10:20;return n&&o.push({padding:[0,0,0,a],align:"right"}),t.markupStyleCreator.wrapRichTextStyle(e.join(" "),o)}(t,f,g,y,_)):af((s?"":c)+(o?"":function(t,e,n){return''+Ic(t)+""}(p,!s,m))+(a?"":function(t,e,n,i){var r=n?"10px":"20px";return''+O(t,(function(t){return Ic(t)})).join("  ")+""}(f,g,y,_)),n)}}}};function rf(t,e,n,i,r,o){if(t){var a=ef(t);a.planLayout(t);var s={useUTC:r,renderMode:n,orderMode:i,markupStyleCreator:e};return a.build(s,t,0,o)}}function of(t){var e=t.__gapLevelBetweenSubBlocks;return{html:Jd[e],richText:Qd[e]}}function af(t,e){return'
'+t+'
'}function sf(t,e,n){return t.markupStyleCreator.wrapRichTextStyle(e,n)}function lf(t,e){return kc(t.getData().getItemVisual(e,"style")[t.visualDrawType])}function uf(t,e){var n=t.get("padding");return null!=n?n:"richText"===e?[8,10]:10}var hf=function(){function t(){this.richTextStyles={},this._nextStyleNameId=dr()}return t.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},t.prototype.makeTooltipMarker=function(t,e,n){var i="richText"===n?this._generateStyleName():null,r=Lc({color:e,type:t,renderMode:n,markerId:i});return H(r)?r:(this.richTextStyles[i]=r.style,r.content)},t.prototype.wrapRichTextStyle=function(t,e){var n={};F(e)?P(e,(function(t){return I(n,t)})):I(n,e);var i=this._generateStyleName();return this.richTextStyles[i]=n,"{"+i+"|"+t+"}"},t}();function cf(t){var e,n,i,r,o=t.series,a=t.dataIndex,s=t.multipleSeries,l=o.getData(),u=l.mapDimensionsAll("defaultedTooltip"),h=u.length,c=o.getRawValue(a),p=F(c),d=lf(o,a);if(h>1||p&&!h){var f=function(t,e,n,i,r){var o=e.getData(),a=R(t,(function(t,e,n){var i=o.getDimensionInfo(n);return t||i&&!1!==i.tooltip&&null!=i.displayName}),!1),s=[],l=[],u=[];function h(t,e){var n=o.getDimensionInfo(e);n&&!1!==n.otherDims.tooltip&&(a?u.push(tf("nameValue",{markerType:"subItem",markerColor:r,name:n.displayName,value:t,valueType:n.type})):(s.push(t),l.push(n.type)))}return i.length?P(i,(function(t){h(Md(o,n,t),t)})):P(t,h),{inlineValues:s,inlineValueTypes:l,blocks:u}}(c,o,a,u,d);e=f.inlineValues,n=f.inlineValueTypes,i=f.blocks,r=f.inlineValues[0]}else if(h){var g=l.getDimensionInfo(u[0]);r=e=Md(l,a,u[0]),n=g.type}else r=e=p?c[0]:c;var y=Dr(o),v=y&&o.name||"",m=l.getName(a),_=s?v:m;return tf("section",{header:v,noHeader:s||!y,sortParam:r,blocks:[tf("nameValue",{markerType:"item",markerColor:d,name:_,noName:!ot(_),value:e,valueType:n})].concat(i||[])})}var pf=kr();function df(t,e){return t.getName(e)||t.getId(e)}var ff=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._selectedDataIndicesMap={},e}return n(e,t),e.prototype.init=function(t,e,n){this.seriesIndex=this.componentIndex,this.dataTask=Dd({count:yf,reset:vf}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n),(pf(this).sourceManager=new Zd(this)).prepareSource();var i=this.getInitialData(t,n);_f(i,this),this.dataTask.context.data=i,pf(this).dataBeforeProcessed=i,gf(this),this._initSelectedMapFromData(i)},e.prototype.mergeDefaultAndTheme=function(t,e){var n=Fc(this),i=n?Hc(t):{},r=this.subType;Xc.hasClass(r)&&(r+="Series"),S(t,e.getTheme().get(this.subType)),S(t,this.getDefaultOption()),br(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&Gc(t,i,n)},e.prototype.mergeOption=function(t,e){t=S(this.option,t,!0),this.fillDataTextStyle(t.data);var n=Fc(this);n&&Gc(this.option,t,n);var i=pf(this).sourceManager;i.dirty(),i.prepareSource();var r=this.getInitialData(t,e);_f(r,this),this.dataTask.dirty(),this.dataTask.context.data=r,pf(this).dataBeforeProcessed=r,gf(this),this._initSelectedMapFromData(r)},e.prototype.fillDataTextStyle=function(t){if(t&&!Z(t))for(var e=["show"],n=0;nthis.getShallow("animationThreshold")&&(t=!1),!!t},e.prototype.restoreData=function(){this.dataTask.dirty()},e.prototype.getColorFromPalette=function(t,e,n){var i=this.ecModel,r=_p.prototype.getColorFromPalette.call(this,t,e,n);return r||(r=i.getColorFromPalette(t,e,n)),r},e.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},e.prototype.getProgressive=function(){return this.get("progressive")},e.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},e.prototype.select=function(t,e){this._innerSelect(this.getData(e),t)},e.prototype.unselect=function(t,e){var n=this.option.selectedMap;if(n)for(var i=this.getData(e),r=0;r=0&&n.push(r)}return n},e.prototype.isSelected=function(t,e){var n=this.option.selectedMap;return n&&n[df(this.getData(e),t)]||!1},e.prototype._innerSelect=function(t,e){var n,i,r=this.option.selectedMode,o=e.length;if(r&&o)if("multiple"===r)for(var a=this.option.selectedMap||(this.option.selectedMap={}),s=0;s0&&this._innerSelect(t,e)}},e.registerClass=function(t){return Xc.registerClass(t)},e.protoInitialize=function(){var t=e.prototype;t.type="series.__base__",t.seriesIndex=0,t.useColorPaletteOnData=!1,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",t.visualDrawType="fill"}(),e}(Xc);function gf(t){var e=t.name;Dr(t)||(t.name=function(t){var e=t.getRawData(),n=e.mapDimensionsAll("seriesName"),i=[];return P(n,(function(t){var n=e.getDimensionInfo(t);n.displayName&&i.push(n.displayName)})),i.join(" ")}(t)||e)}function yf(t){return t.model.getRawData().count()}function vf(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),mf}function mf(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function _f(t,e){P(r(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),(function(n){t.wrapMethod(n,B(xf,e))}))}function xf(t,e){var n=bf(t);return n&&n.setOutputEnd((e||this).count()),e}function bf(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(t.uid))}return i}}L(ff,Td),L(ff,_p),Yr(ff,Xc);var wf=function(){function t(){this.group=new Ei,this.uid=Nh("viewComponent")}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){},t.prototype.updateLayout=function(t,e,n,i){},t.prototype.updateVisual=function(t,e,n,i){},t.prototype.blurSeries=function(t,e){},t}();function Sf(){var t=kr();return function(e){var n=t(e),i=e.pipelineContext,r=!!n.large,o=!!n.progressiveRender,a=n.large=!(!i||!i.large),s=n.progressiveRender=!(!i||!i.progressiveRender);return!(r===a&&o===s)&&"reset"}}Ur(wf),Kr(wf);var Mf=kr(),If=Sf(),Tf=function(){function t(){this.group=new Ei,this.uid=Nh("viewChart"),this.renderTask=Dd({plan:Af,reset:Lf}),this.renderTask.context={view:this}}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){},t.prototype.highlight=function(t,e,n,i){Df(t.getData(),i,"emphasis")},t.prototype.downplay=function(t,e,n,i){Df(t.getData(),i,"normal")},t.prototype.remove=function(t,e){this.group.removeAll()},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateLayout=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},t.markUpdateMethod=function(t,e){Mf(t).updateMethod=e},t.protoInitialize=void(t.prototype.type="chart"),t}();function Cf(t,e,n){t&&("emphasis"===e?js:qs)(t,n)}function Df(t,e,n){var i=Lr(t,e),r=e&&null!=e.highlightKey?function(t){var e=bs[t];return null==e&&xs<=32&&(e=bs[t]=xs++),e}(e.highlightKey):null;null!=i?P(xr(i),(function(e){Cf(t.getItemGraphicEl(e),n,r)})):t.eachItemGraphicEl((function(t){Cf(t,n,r)}))}function Af(t){return If(t.model)}function Lf(t){var e=t.model,n=t.ecModel,i=t.api,r=t.payload,o=e.pipelineContext.progressiveRender,a=t.view,s=r&&Mf(r).updateMethod,l=o?"incrementalPrepareRender":s&&a[s]?s:"render";return"render"!==l&&a[l](e,n,i,r),kf[l]}Ur(Tf),Kr(Tf);var kf={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)}}},Pf="\0__throttleOriginMethod",Of="\0__throttleRate",Rf="\0__throttleType";function Nf(t,e,n){var i,r,o,a,s,l=0,u=0,h=null;function c(){u=(new Date).getTime(),h=null,t.apply(o,a||[])}e=e||0;var p=function(){for(var t=[],p=0;p=0?c():h=setTimeout(c,-r),l=i};return p.clear=function(){h&&(clearTimeout(h),h=null)},p.debounceNextCall=function(t){s=t},p}function zf(t,e,n,i){var r=t[e];if(r){var o=r[Pf]||r,a=r[Rf];if(r[Of]!==n||a!==i){if(null==n||!i)return t[e]=o;(r=t[e]=Nf(o,n,"debounce"===i))[Pf]=o,r[Rf]=i,r[Of]=n}return r}}var Ef=kr(),Vf={itemStyle:$r(Lh,!0),lineStyle:$r(Ch,!0)},Bf={lineStyle:"stroke",itemStyle:"fill"};function Ff(t,e){var n=t.visualStyleMapper||Vf[e];return n||(console.warn("Unkown style type '"+e+"'."),Vf.itemStyle)}function Gf(t,e){var n=t.visualDrawType||Bf[e];return n||(console.warn("Unkown style type '"+e+"'."),"fill")}var Hf={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=t.getModel(i),o=Ff(t,i)(r),a=r.getShallow("decal");a&&(n.setVisual("decal",a),a.dirty=!0);var s=Gf(t,i),l=o[s],u=G(l)?l:null,h="auto"===o.fill||"auto"===o.stroke;if(!o[s]||u||h){var c=t.getColorFromPalette(t.name,null,e.getSeriesCount());o[s]||(o[s]=c,n.setVisual("colorFromPalette",!0)),o.fill="auto"===o.fill||"function"==typeof o.fill?c:o.fill,o.stroke="auto"===o.stroke||"function"==typeof o.stroke?c:o.stroke}if(n.setVisual("style",o),n.setVisual("drawType",s),!e.isSeriesFiltered(t)&&u)return n.setVisual("colorFromPalette",!1),{dataEach:function(e,n){var i=t.getDataParams(n),r=I({},o);r[s]=u(i),e.setItemVisual(n,"style",r)}}}},Wf=new Oh,Uf={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(!t.ignoreStyleOnData&&!e.isSeriesFiltered(t)){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=Ff(t,i),o=n.getVisual("drawType");return{dataEach:n.hasItemOption?function(t,e){var n=t.getRawDataItem(e);if(n&&n[i]){Wf.option=n[i];var a=r(Wf);I(t.ensureUniqueItemVisual(e,"style"),a),Wf.option.decal&&(t.setItemVisual(e,"decal",Wf.option.decal),Wf.option.decal.dirty=!0),o in a&&t.setItemVisual(e,"colorFromPalette",!1)}}:null}}}},Xf={performRawSeries:!0,overallReset:function(t){var e=ht();t.eachSeries((function(t){if(t.useColorPaletteOnData){var n=e.get(t.type);n||(n={},e.set(t.type,n)),Ef(t).scope=n}})),t.eachSeries((function(e){if(e.useColorPaletteOnData&&!t.isSeriesFiltered(e)){var n=e.getRawData(),i={},r=e.getData(),o=Ef(e).scope,a=e.visualStyleAccessPath||"itemStyle",s=Gf(e,a);r.each((function(t){var e=r.getRawIndex(t);i[e]=t})),n.each((function(t){var a=i[t];if(r.getItemVisual(a,"colorFromPalette")){var l=r.ensureUniqueItemVisual(a,"style"),u=n.getName(t)||t+"",h=n.count();l[s]=e.getColorFromPalette(u,o,h)}}))}}))}},Yf=Math.PI;var Zf=function(){function t(t,e,n,i){this._stageTaskMap=ht(),this.ecInstance=t,this.api=e,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}return t.prototype.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each((function(t){var e=t.overallTask;e&&e.dirty()}))},t.prototype.getPerformArgs=function(t,e){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),i=n.context,r=!e&&n.progressiveEnabled&&(!i||i.progressiveRender)&&t.__idxInPipeline>n.blockIndex?n.step:null,o=i&&i.modDataCount;return{step:r,modBy:null!=o?Math.ceil(o/r):null,modDataCount:o}}},t.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},t.prototype.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData().count(),r=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,o=t.get("large")&&i>=t.get("largeThreshold"),a="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:r,modDataCount:a,large:o}},t.prototype.restorePipelines=function(t){var e=this,n=e._pipelineMap=ht();t.eachSeries((function(t){var i=t.getProgressive(),r=t.uid;n.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),e._pipe(t,t.dataTask)}))},t.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.api.getModel(),n=this.api;P(this._allHandlers,(function(i){var r=t.get(i.uid)||t.set(i.uid,{}),o="";rt(!(i.reset&&i.overallReset),o),i.reset&&this._createSeriesStageTask(i,r,e,n),i.overallReset&&this._createOverallStageTask(i,r,e,n)}),this)},t.prototype.prepareView=function(t,e,n,i){var r=t.renderTask,o=r.context;o.model=e,o.ecModel=n,o.api=i,r.__block=!t.incrementalPrepareRender,this._pipe(e,r)},t.prototype.performDataProcessorTasks=function(t,e){this._performStageTasks(this._dataProcessorHandlers,t,e,{block:!0})},t.prototype.performVisualTasks=function(t,e,n){this._performStageTasks(this._visualHandlers,t,e,n)},t.prototype._performStageTasks=function(t,e,n,i){i=i||{};var r=!1,o=this;function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}P(t,(function(t,s){if(!i.visualType||i.visualType===t.visualType){var l=o._stageTaskMap.get(t.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,p=h.agentStubMap;p.each((function(t){a(i,t)&&(t.dirty(),c=!0)})),c&&h.dirty(),o.updatePayload(h,n);var d=o.getPerformArgs(h,i.block);p.each((function(t){t.perform(d)})),h.perform(d)&&(r=!0)}else u&&u.each((function(s,l){a(i,s)&&s.dirty();var u=o.getPerformArgs(s,i.block);u.skip=!t.performRawSeries&&e.isSeriesFiltered(s.context.model),o.updatePayload(s,n),s.perform(u)&&(r=!0)}))}})),this.unfinished=r||this.unfinished},t.prototype.performSeriesTasks=function(t){var e;t.eachSeries((function(t){e=t.dataTask.perform()||e})),this.unfinished=e||this.unfinished},t.prototype.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)}))},t.prototype.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},t.prototype._createSeriesStageTask=function(t,e,n,i){var r=this,o=e.seriesTaskMap,a=e.seriesTaskMap=ht(),s=t.seriesType,l=t.getTargetSeries;function u(e){var s=e.uid,l=a.set(s,o&&o.get(s)||Dd({plan:Jf,reset:Qf,count:ng}));l.context={model:e,ecModel:n,api:i,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:r},r._pipe(e,l)}t.createOnAllSeries?n.eachRawSeries(u):s?n.eachRawSeriesByType(s,u):l&&l(n,i).each(u)},t.prototype._createOverallStageTask=function(t,e,n,i){var r=this,o=e.overallTask=e.overallTask||Dd({reset:jf});o.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:r};var a=o.agentStubMap,s=o.agentStubMap=ht(),l=t.seriesType,u=t.getTargetSeries,h=!0,c=!1,p="";function d(t){var e=t.uid,n=s.set(e,a&&a.get(e)||(c=!0,Dd({reset:qf,onDirty:$f})));n.context={model:t,overallProgress:h},n.agent=o,n.__block=h,r._pipe(t,n)}rt(!t.createOnAllSeries,p),l?n.eachRawSeriesByType(l,d):u?u(n,i).each(d):(h=!1,P(n.getSeries(),d)),c&&o.dirty()},t.prototype._pipe=function(t,e){var n=t.uid,i=this._pipelineMap.get(n);!i.head&&(i.head=e),i.tail&&i.tail.pipe(e),i.tail=e,e.__idxInPipeline=i.count++,e.__pipeline=i},t.wrapStageHandler=function(t,e){return G(t)&&(t={overallReset:t,seriesType:ig(t)}),t.uid=Nh("stageHandler"),e&&(t.visualType=e),t},t}();function jf(t){t.overallReset(t.ecModel,t.api,t.payload)}function qf(t){return t.overallProgress&&Kf}function Kf(){this.agent.dirty(),this.getDownstream().dirty()}function $f(){this.agent&&this.agent.dirty()}function Jf(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):null}function Qf(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=xr(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?O(e,(function(t,e){return eg(e)})):tg}var tg=eg(0);function eg(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(r&&r.dataEach)for(var o=e.start;o0&&h===r.length-u.length){var c=r.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}a.hasOwnProperty(r)&&(n[r]=t,s=!0),s||(i[r]=t)}))}return{cptQuery:e,dataQuery:n,otherQuery:i}},t.prototype.filter=function(t,e){var n=this.eventInfo;if(!n)return!0;var i=n.targetEl,r=n.packedEvent,o=n.model,a=n.view;if(!o||!a)return!0;var s=e.cptQuery,l=e.dataQuery;return u(s,o,"mainType")&&u(s,o,"subType")&&u(s,o,"index","componentIndex")&&u(s,o,"name")&&u(s,o,"id")&&u(l,r,"name")&&u(l,r,"dataIndex")&&u(l,r,"dataType")&&(!a.filterForExposedEvent||a.filterForExposedEvent(t,e.otherQuery,i,r));function u(t,e,n,i){return null==t[n]||e[i||n]===t[n]}},t.prototype.afterTrigger=function(){this.eventInfo=null},t}(),yg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData();if(t.legendIcon&&n.setVisual("legendIcon",t.legendIcon),t.hasSymbolVisual){var i=t.get("symbol"),r=t.get("symbolSize"),o=t.get("symbolKeepAspect"),a=t.get("symbolRotate"),s=t.get("symbolOffset"),l=G(i),u=G(r),h=G(a),c=G(s),p=l||u||h||c,d=!l&&i?i:t.defaultSymbol,f=u?null:r,g=h?null:a,y=c?null:s;if(n.setVisual({legendIcon:t.legendIcon||d,symbol:d,symbolSize:f,symbolKeepAspect:o,symbolRotate:g,symbolOffset:y}),!e.isSeriesFiltered(t))return{dataEach:p?function(e,n){var o=t.getRawValue(n),p=t.getDataParams(n);l&&e.setItemVisual(n,"symbol",i(o,p)),u&&e.setItemVisual(n,"symbolSize",r(o,p)),h&&e.setItemVisual(n,"symbolRotate",a(o,p)),c&&e.setItemVisual(n,"symbolOffset",s(o,p))}:null}}}};function vg(t,e,n){switch(n){case"color":return t.getItemVisual(e,"style")[t.getVisual("drawType")];case"opacity":return t.getItemVisual(e,"style").opacity;case"symbol":case"symbolSize":case"liftZ":return t.getItemVisual(e,n);default:0}}function mg(t,e){switch(e){case"color":return t.getVisual("style")[t.getVisual("drawType")];case"opacity":return t.getVisual("style").opacity;case"symbol":case"symbolSize":case"liftZ":return t.getVisual(e);default:0}}function _g(t,e,n,i){switch(n){case"color":t.ensureUniqueItemVisual(e,"style")[t.getVisual("drawType")]=i,t.setItemVisual(e,"colorFromPalette",!1);break;case"opacity":t.ensureUniqueItemVisual(e,"style").opacity=i;break;case"symbol":case"symbolSize":case"liftZ":t.setItemVisual(e,n,i);break;default:0}}var xg=2*Math.PI,bg=La.CMD,wg=["top","right","bottom","left"];function Sg(t,e,n,i,r){var o=n.width,a=n.height;switch(t){case"top":i.set(n.x+o/2,n.y-e),r.set(0,-1);break;case"bottom":i.set(n.x+o/2,n.y+a+e),r.set(0,1);break;case"left":i.set(n.x-e,n.y+a/2),r.set(-1,0);break;case"right":i.set(n.x+o+e,n.y+a/2),r.set(1,0)}}function Mg(t,e,n,i,r,o,a,s,l){a-=t,s-=e;var u=Math.sqrt(a*a+s*s),h=(a/=u)*n+t,c=(s/=u)*n+e;if(Math.abs(i-r)%xg<1e-4)return l[0]=h,l[1]=c,u-n;if(o){var p=i;i=Na(r),r=Na(p)}else i=Na(i),r=Na(r);i>r&&(r+=xg);var d=Math.atan2(s,a);if(d<0&&(d+=xg),d>=i&&d<=r||d+xg>=i&&d+xg<=r)return l[0]=h,l[1]=c,u-n;var f=n*Math.cos(i)+t,g=n*Math.sin(i)+e,y=n*Math.cos(r)+t,v=n*Math.sin(r)+e,m=(f-a)*(f-a)+(g-s)*(g-s),_=(y-a)*(y-a)+(v-s)*(v-s);return m<_?(l[0]=f,l[1]=g,Math.sqrt(m)):(l[0]=y,l[1]=v,Math.sqrt(_))}function Ig(t,e,n,i,r,o,a,s){var l=r-t,u=o-e,h=n-t,c=i-e,p=Math.sqrt(h*h+c*c),d=(l*(h/=p)+u*(c/=p))/p;s&&(d=Math.min(Math.max(d,0),1)),d*=p;var f=a[0]=t+d*h,g=a[1]=e+d*c;return Math.sqrt((f-r)*(f-r)+(g-o)*(g-o))}function Tg(t,e,n,i,r,o,a){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i);var s=t+n,l=e+i,u=a[0]=Math.min(Math.max(r,t),s),h=a[1]=Math.min(Math.max(o,e),l);return Math.sqrt((u-r)*(u-r)+(h-o)*(h-o))}var Cg=[];function Dg(t,e,n){var i=Tg(e.x,e.y,e.width,e.height,t.x,t.y,Cg);return n.set(Cg[0],Cg[1]),i}function Ag(t,e,n){for(var i,r,o=0,a=0,s=0,l=0,u=1/0,h=e.data,c=t.x,p=t.y,d=0;d0){e=e/180*Math.PI,Lg.fromArray(t[0]),kg.fromArray(t[1]),Pg.fromArray(t[2]),ai.sub(Og,Lg,kg),ai.sub(Rg,Pg,kg);var n=Og.len(),i=Rg.len();if(!(n<.001||i<.001)){Og.scale(1/n),Rg.scale(1/i);var r=Og.dot(Rg);if(Math.cos(e)1&&ai.copy(Eg,Pg),Eg.toArray(t[1])}}}}function Bg(t,e,n){if(n<=180&&n>0){n=n/180*Math.PI,Lg.fromArray(t[0]),kg.fromArray(t[1]),Pg.fromArray(t[2]),ai.sub(Og,kg,Lg),ai.sub(Rg,Pg,kg);var i=Og.len(),r=Rg.len();if(!(i<.001||r<.001))if(Og.scale(1/i),Rg.scale(1/r),Og.dot(e)=a)ai.copy(Eg,Pg);else{Eg.scaleAndAdd(Rg,o/Math.tan(Math.PI/2-s));var l=Pg.x!==kg.x?(Eg.x-kg.x)/(Pg.x-kg.x):(Eg.y-kg.y)/(Pg.y-kg.y);if(isNaN(l))return;l<0?ai.copy(Eg,kg):l>1&&ai.copy(Eg,Pg)}Eg.toArray(t[1])}}}function Fg(t,e,n,i){var r="normal"===n,o=r?t:t.ensureState(n);o.ignore=e;var a=i.get("smooth");a&&!0===a&&(a=.3),o.shape=o.shape||{},a>0&&(o.shape.smooth=a);var s=i.getModel("lineStyle").getLineStyle();r?t.useStyle(s):o.style=s}function Gg(t,e){var n=e.smooth,i=e.points;if(i)if(t.moveTo(i[0][0],i[0][1]),n>0&&i.length>=3){var r=Lt(i[0],i[1]),o=Lt(i[1],i[2]);if(!r||!o)return t.lineTo(i[1][0],i[1][1]),void t.lineTo(i[2][0],i[2][1]);var a=Math.min(r,o)*n,s=Ot([],i[1],i[0],a/r),l=Ot([],i[1],i[2],a/o),u=Ot([],s,l,.5);t.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),t.bezierCurveTo(l[0],l[1],l[0],l[1],i[2][0],i[2][1])}else for(var h=1;h0&&o&&x(-h/a,0,a);var f,g,y=t[0],v=t[a-1];return m(),f<0&&b(-f,.8),g<0&&b(g,.8),m(),_(f,g,1),_(g,f,-1),m(),f<0&&w(-f),g<0&&w(g),u}function m(){f=y.rect[e]-i,g=r-v.rect[e]-v.rect[n]}function _(t,e,n){if(t<0){var i=Math.min(e,-t);if(i>0){x(i*n,0,a);var r=i+t;r<0&&b(-r*n,1)}else b(-t*n,1)}}function x(n,i,r){0!==n&&(u=!0);for(var o=i;o0)for(l=0;l0;l--){x(-(o[l-1]*c),l,a)}}}function w(t){var e=t<0?-1:1;t=Math.abs(t);for(var n=Math.ceil(t/(a-1)),i=0;i0?x(n,0,i+1):x(-n,a-i-1,a),(t-=n)<=0)return}}function Xg(t,e,n,i){return Ug(t,"y","height",e,n,i)}function Yg(t){if(t){for(var e=[],n=0;n=0&&n.attr(d.oldLayoutSelect),D(u,"emphasis")>=0&&n.attr(d.oldLayoutEmphasis)),Hu(n,s,e,a)}else if(n.attr(s),!_h(n).valueAnimation){var h=tt(n.style.opacity,1);n.style.opacity=0,Wu(n,{style:{opacity:h}},e,a)}if(d.oldLayout=s,n.states.select){var c=d.oldLayoutSelect={};Jg(c,s,Qg),Jg(c,n.states.select,Qg)}if(n.states.emphasis){var p=d.oldLayoutEmphasis={};Jg(p,s,Qg),Jg(p,n.states.emphasis,Qg)}bh(n,a,l,e,e)}if(i&&!i.ignore&&!i.invisible){r=(d=$g(i)).oldLayout;var d,f={points:i.shape.points};r?(i.attr({shape:r}),Hu(i,{shape:f},e)):(i.setShape(f),i.style.strokePercent=0,Wu(i,{style:{strokePercent:1}},e)),d.oldLayout=f}},t}();function ey(t,e){function n(e,n){var i=[];return e.eachComponent({mainType:"series",subType:t,query:n},(function(t){i.push(t.seriesIndex)})),i}P([[t+"ToggleSelect","toggleSelect"],[t+"Select","select"],[t+"UnSelect","unselect"]],(function(t){e(t[0],(function(e,i,r){e=I({},e),r.dispatchAction(I(e,{type:t[1],seriesIndex:n(i,e)}))}))}))}function ny(t,e,n,i,r){var o=t+e;n.isSilent(o)||i.eachComponent({mainType:"series",subType:"pie"},(function(t){for(var e=t.seriesIndex,i=r.selected,a=0;a0?(e=e||1,"dashed"===t?[4*e,2*e]:"dotted"===t?[e]:U(t)?[t]:F(t)?t:null):null}var my=new La(!0);function _y(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))}function xy(t){var e=t.fill;return null!=e&&"none"!==e}function by(t,e){if(null!=e.fillOpacity&&1!==e.fillOpacity){var n=t.globalAlpha;t.globalAlpha=e.fillOpacity*e.opacity,t.fill(),t.globalAlpha=n}else t.fill()}function wy(t,e){if(null!=e.strokeOpacity&&1!==e.strokeOpacity){var n=t.globalAlpha;t.globalAlpha=e.strokeOpacity*e.opacity,t.stroke(),t.globalAlpha=n}else t.stroke()}function Sy(t,e,n){var i=no(e.image,e.__image,n);if(ro(i)){var r=t.createPattern(i,e.repeat||"repeat");if("function"==typeof DOMMatrix&&r.setTransform){var o=new DOMMatrix;o.rotateSelf(0,0,(e.rotation||0)/Math.PI*180),o.scaleSelf(e.scaleX||1,e.scaleY||1),o.translateSelf(e.x||0,e.y||0),r.setTransform(o)}return r}}var My=["shadowBlur","shadowOffsetX","shadowOffsetY"],Iy=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function Ty(t,e,n,i,r){var o=!1;if(!i&&e===(n=n||{}))return!1;if(i||e.opacity!==n.opacity){o||(Ay(t,r),o=!0);var a=Math.max(Math.min(e.opacity,1),0);t.globalAlpha=isNaN(a)?_o.opacity:a}(i||e.blend!==n.blend)&&(o||(Ay(t,r),o=!0),t.globalCompositeOperation=e.blend||_o.blend);for(var s=0;s0&&vy(n.lineDash,n.lineWidth),w=n.lineDashOffset,S=!!t.setLineDash,M=e.getGlobalScale();if(u.setScale(M[0],M[1],e.segmentIgnoreThreshold),b){var I=n.strokeNoScale&&e.getLineScale?e.getLineScale():1;I&&1!==I&&(b=O(b,(function(t){return t/I})),w/=I)}var T=!0;(l||4&e.__dirty||b&&!S&&r)&&(u.setDPR(t.dpr),s?u.setContext(null):(u.setContext(t),T=!1),u.reset(),b&&!S&&(u.setLineDash(b),u.setLineDashOffset(w)),e.buildPath(u,e.shape,i),u.toStatic(),e.pathUpdated()),T&&u.rebuildPath(t,s?a:1),b&&S&&(t.setLineDash(b),t.lineDashOffset=w),i||(n.strokeFirst?(r&&wy(t,n),o&&by(t,n)):(o&&by(t,n),r&&wy(t,n))),b&&S&&t.setLineDash([])}(t,e,d,p),p&&(n.batchFill=d.fill||"",n.batchStroke=d.stroke||"")):e instanceof Ja?(3!==n.lastDrawType&&(l=!0,n.lastDrawType=3),Cy(t,e,u,l,n),function(t,e,n){var i=n.text;if(null!=i&&(i+=""),i){t.font=n.font||vi,t.textAlign=n.textAlign,t.textBaseline=n.textBaseline;var r=void 0;if(t.setLineDash){var o=n.lineDash&&n.lineWidth>0&&vy(n.lineDash,n.lineWidth),a=n.lineDashOffset;if(o){var s=n.strokeNoScale&&e.getLineScale?e.getLineScale():1;s&&1!==s&&(o=O(o,(function(t){return t/s})),a/=s),t.setLineDash(o),t.lineDashOffset=a,r=!0}}n.strokeFirst?(_y(n)&&t.strokeText(i,n.x,n.y),xy(n)&&t.fillText(i,n.x,n.y)):(xy(n)&&t.fillText(i,n.x,n.y),_y(n)&&t.strokeText(i,n.x,n.y)),r&&t.setLineDash([])}}(t,e,d)):e instanceof es?(2!==n.lastDrawType&&(l=!0,n.lastDrawType=2),function(t,e,n,i,r){Ty(t,Ly(e,r.inHover),n&&Ly(n,r.inHover),i,r)}(t,e,u,l,n),function(t,e,n){var i=e.__image=no(n.image,e.__image,e,e.onload);if(i&&ro(i)){var r=n.x||0,o=n.y||0,a=e.getWidth(),s=e.getHeight(),l=i.width/i.height;if(null==a&&null!=s?a=s*l:null==s&&null!=a?s=a/l:null==a&&null==s&&(a=i.width,s=i.height),n.sWidth&&n.sHeight){var u=n.sx||0,h=n.sy||0;t.drawImage(i,u,h,n.sWidth,n.sHeight,r,o,a,s)}else if(n.sx&&n.sy){var c=a-(u=n.sx),p=s-(h=n.sy);t.drawImage(i,u,h,c,p,r,o,a,s)}else t.drawImage(i,r,o,a,s)}}(t,e,d)):e instanceof Tu&&(4!==n.lastDrawType&&(l=!0,n.lastDrawType=4),function(t,e,n){var i=e.getDisplayables(),r=e.getTemporalDisplayables();t.save();var o,a,s={prevElClipPaths:null,prevEl:null,allClipped:!1,viewWidth:n.viewWidth,viewHeight:n.viewHeight,inHover:n.inHover};for(o=e.getCursor(),a=i.length;o=4&&(l={x:parseFloat(c[0]||0),y:parseFloat(c[1]||0),width:parseFloat(c[2]),height:parseFloat(c[3])})}if(l&&null!=a&&null!=s&&(u=sv(l,{x:0,y:0,width:a,height:s}),!e.ignoreViewBox)){var p=i;(i=new Ei).add(p),p.scaleX=p.scaleY=u.scale,p.x=u.x,p.y=u.y}return e.ignoreRootClip||null==a||null==s||i.setClipPath(new ls({shape:{x:0,y:0,width:a,height:s}})),{root:i,width:a,height:s,viewBoxRect:l,viewBoxTransform:u,named:r}},t.prototype._parseNode=function(t,e,n,i,r,o){var a,s=t.nodeName.toLowerCase(),l=i;if("defs"===s&&(r=!0),"text"===s&&(o=!0),"defs"===s||"switch"===s)a=e;else{if(!r){var u=Oy[s];if(u&&dt(Oy,s)){a=u.call(this,t,e);var h=t.getAttribute("name");if(h){var c={name:h,namedFrom:null,svgNodeTagLower:s,el:a};n.push(c),"g"===s&&(l=c)}else i&&n.push({name:i.name,namedFrom:i,svgNodeTagLower:s,el:a});e.add(a)}}var p=Zy[s];if(p&&dt(Zy,s)){var d=p.call(this,t),f=t.getAttribute("id");f&&(this._defs[f]=d)}}if(a&&a.isGroup)for(var g=t.firstChild;g;)1===g.nodeType?this._parseNode(g,a,n,l,r,o):3===g.nodeType&&o&&this._parseText(g,a),g=g.nextSibling},t.prototype._parseText=function(t,e){var n=new Ja({style:{text:t.textContent},silent:!0,x:this._textX||0,y:this._textY||0});Ky(e,n),Jy(t,n,this._defsUsePending,!1,!1),function(t,e){var n=e.__selfStyle;if(n){var i=n.textBaseline,r=i;i&&"auto"!==i?"baseline"===i?r="alphabetic":"before-edge"===i||"text-before-edge"===i?r="top":"after-edge"===i||"text-after-edge"===i?r="bottom":"central"!==i&&"mathematical"!==i||(r="middle"):r="alphabetic",t.style.textBaseline=r}var o=e.__inheritedStyle;if(o){var a=o.textAlign,s=a;a&&("middle"===a&&(s="center"),t.style.textAlign=s)}}(n,e);var i=n.style,r=i.fontSize;r&&r<9&&(i.fontSize=9,n.scaleX*=r/9,n.scaleY*=r/9);var o=(i.fontSize||i.fontFamily)&&[i.fontStyle,i.fontWeight,(i.fontSize||12)+"px",i.fontFamily||"sans-serif"].join(" ");i.font=o;var a=n.getBoundingRect();return this._textX+=a.width,e.add(n),n},t.internalField=void(Oy={g:function(t,e){var n=new Ei;return Ky(e,n),Jy(t,n,this._defsUsePending,!1,!1),n},rect:function(t,e){var n=new ls;return Ky(e,n),Jy(t,n,this._defsUsePending,!1,!1),n.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")}),n.silent=!0,n},circle:function(t,e){var n=new Nl;return Ky(e,n),Jy(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),r:parseFloat(t.getAttribute("r")||"0")}),n.silent=!0,n},line:function(t,e){var n=new uu;return Ky(e,n),Jy(t,n,this._defsUsePending,!1,!1),n.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")}),n.silent=!0,n},ellipse:function(t,e){var n=new El;return Ky(e,n),Jy(t,n,this._defsUsePending,!1,!1),n.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")}),n.silent=!0,n},polygon:function(t,e){var n,i=t.getAttribute("points");i&&(n=$y(i));var r=new ru({shape:{points:n||[]},silent:!0});return Ky(e,r),Jy(t,r,this._defsUsePending,!1,!1),r},polyline:function(t,e){var n,i=t.getAttribute("points");i&&(n=$y(i));var r=new au({shape:{points:n||[]},silent:!0});return Ky(e,r),Jy(t,r,this._defsUsePending,!1,!1),r},image:function(t,e){var n=new es;return Ky(e,n),Jy(t,n,this._defsUsePending,!1,!1),n.setStyle({image:t.getAttribute("xlink:href"),x:+t.getAttribute("x"),y:+t.getAttribute("y"),width:+t.getAttribute("width"),height:+t.getAttribute("height")}),n.silent=!0,n},text:function(t,e){var n=t.getAttribute("x")||"0",i=t.getAttribute("y")||"0",r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0";this._textX=parseFloat(n)+parseFloat(r),this._textY=parseFloat(i)+parseFloat(o);var a=new Ei;return Ky(e,a),Jy(t,a,this._defsUsePending,!1,!0),a},tspan:function(t,e){var n=t.getAttribute("x"),i=t.getAttribute("y");null!=n&&(this._textX=parseFloat(n)),null!=i&&(this._textY=parseFloat(i));var r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0",a=new Ei;return Ky(e,a),Jy(t,a,this._defsUsePending,!1,!0),this._textX+=parseFloat(r),this._textY+=parseFloat(o),a},path:function(t,e){var n=Ol(t.getAttribute("d")||"");return Ky(e,n),Jy(t,n,this._defsUsePending,!1,!1),n.silent=!0,n}}),t}(),Zy={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||"0",10),n=parseInt(t.getAttribute("y1")||"0",10),i=parseInt(t.getAttribute("x2")||"10",10),r=parseInt(t.getAttribute("y2")||"0",10),o=new mu(e,n,i,r);return jy(t,o),qy(t,o),o},radialgradient:function(t){var e=parseInt(t.getAttribute("cx")||"0",10),n=parseInt(t.getAttribute("cy")||"0",10),i=parseInt(t.getAttribute("r")||"0",10),r=new _u(e,n,i);return jy(t,r),qy(t,r),r}};function jy(t,e){"userSpaceOnUse"===t.getAttribute("gradientUnits")&&(e.global=!0)}function qy(t,e){for(var n=t.firstChild;n;){if(1===n.nodeType&&"stop"===n.nodeName.toLocaleLowerCase()){var i=n.getAttribute("offset"),r=void 0;r=i&&i.indexOf("%")>0?parseInt(i,10)/100:i?parseFloat(i):0;var o={};av(n,o,o);var a=o.stopColor||n.getAttribute("stop-color")||"#000000";e.colorStops.push({offset:r,color:a})}n=n.nextSibling}}function Ky(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),T(e.__inheritedStyle,t.__inheritedStyle))}function $y(t){for(var e=nv(t),n=[],i=0;i0;o-=2){var a=i[o],s=i[o-1],l=nv(a);switch(r=r||[1,0,0,1,0,0],s){case"translate":Un(r,r,[parseFloat(l[0]),parseFloat(l[1]||"0")]);break;case"scale":Yn(r,r,[parseFloat(l[0]),parseFloat(l[1]||l[0])]);break;case"rotate":Xn(r,r,-parseFloat(l[0])*rv);break;case"skewX":Wn(r,[1,0,Math.tan(parseFloat(l[0])*rv),1,0,0],r);break;case"skewY":Wn(r,[1,Math.tan(parseFloat(l[0])*rv),0,1,0,0],r);break;case"matrix":r[0]=parseFloat(l[0]),r[1]=parseFloat(l[1]),r[2]=parseFloat(l[2]),r[3]=parseFloat(l[3]),r[4]=parseFloat(l[4]),r[5]=parseFloat(l[5])}}e.setLocalTransform(r)}}(t,e),av(t,a,s),i||function(t,e,n){for(var i=0;i>1^-(1&s),l=l>>1^-(1&l),r=s+=r,o=l+=o,i.push([s/n,l/n])}return i}function vv(t,e){return O(N((t=function(t){if(!t.UTF8Encoding)return t;var e=t,n=e.UTF8Scale;null==n&&(n=1024);for(var i=e.features,r=0;r0})),(function(t){var n=t.properties,i=t.geometry,r=[];if("Polygon"===i.type){var o=i.coordinates;r.push({type:"polygon",exterior:o[0],interiors:o.slice(1)})}"MultiPolygon"===i.type&&P(o=i.coordinates,(function(t){t[0]&&r.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})}));var a=new pv(n[e||"name"],r,n.cp);return a.properties=n,a}))}for(var mv=[126,25],_v="南海诸岛",xv=[[[0,3.5],[7,11.2],[15,11.9],[30,7],[42,.7],[52,.7],[56,7.7],[59,.7],[64,.7],[64,0],[5,0],[0,3.5]],[[13,16.1],[19,14.7],[16,21.7],[11,23.1],[13,16.1]],[[12,32.2],[14,38.5],[15,38.5],[13,32.2],[12,32.2]],[[16,47.6],[12,53.2],[13,53.2],[18,47.6],[16,47.6]],[[6,64.4],[8,70],[9,70],[8,64.4],[6,64.4]],[[23,82.6],[29,79.8],[30,79.8],[25,82.6],[23,82.6]],[[37,70.7],[43,62.3],[44,62.3],[39,70.7],[37,70.7]],[[48,51.1],[51,45.5],[53,45.5],[50,51.1],[48,51.1]],[[51,35],[51,28.7],[53,28.7],[53,35],[51,35]],[[52,22.4],[55,17.5],[56,17.5],[53,22.4],[52,22.4]],[[58,12.6],[62,7],[63,7],[60,12.6],[58,12.6]],[[0,3.5],[0,93.1],[64,93.1],[64,0],[63,0],[63,92.4],[1,92.4],[1,3.5],[0,3.5]]],bv=0;bv0&&t.unfinished);t.unfinished||this._zr.flush()}}},e.prototype.getDom=function(){return this._dom},e.prototype.getId=function(){return this.id},e.prototype.getZr=function(){return this._zr},e.prototype.setOption=function(t,e,n){if(this._disposed)_m(this.id);else{var i,r,o;if(zv(e)&&(n=e.lazyUpdate,i=e.silent,r=e.replaceMerge,o=e.transition,e=e.notMerge),this.__flagInMainProcess=!0,!this._model||e){var a=new kp(this._api),s=this._theme,l=this._model=new wp;l.scheduler=this._scheduler,l.init(null,null,null,s,this._locale,a)}this._model.setOption(t,{replaceMerge:r},Sm),cm(this,o),n?(this.__optionUpdated={silent:i},this.__flagInMainProcess=!1,this.getZr().wakeUp()):(Zv(this),Kv.update.call(this),this._zr.flush(),this.__optionUpdated=!1,this.__flagInMainProcess=!1,tm.call(this,i),em.call(this,i))}},e.prototype.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},e.prototype.getModel=function(){return this._model},e.prototype.getOption=function(){return this._model&&this._model.getOption()},e.prototype.getWidth=function(){return this._zr.getWidth()},e.prototype.getHeight=function(){return this._zr.getHeight()},e.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||Vv&&window.devicePixelRatio||1},e.prototype.getRenderedCanvas=function(t){if(a.canvasSupported)return t=t||{},this._zr.painter.getRenderedCanvas({backgroundColor:t.backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},e.prototype.getSvgDataURL=function(){if(a.svgSupported){var t=this._zr;return P(t.storage.getDisplayList(),(function(t){t.stopAnimation(null,!0)})),t.painter.toDataURL()}},e.prototype.getDataURL=function(t){if(!this._disposed){var e=(t=t||{}).excludeComponents,n=this._model,i=[],r=this;Rv(e,(function(t){n.eachComponent({mainType:t},(function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(i.push(e),e.group.ignore=!0)}))}));var o="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return Rv(i,(function(t){t.group.ignore=!1})),o}_m(this.id)},e.prototype.getConnectedDataURL=function(t){if(this._disposed)_m(this.id);else if(a.canvasSupported){var e="svg"===t.type,n=this.group,i=Math.min,r=Math.max,o=1/0;if(Lm[n]){var s=o,l=o,u=-1/0,h=-1/0,c=[],p=t&&t.pixelRatio||this.getDevicePixelRatio();P(Am,(function(o,a){if(o.group===n){var p=e?o.getZr().painter.getSvgDom().innerHTML:o.getRenderedCanvas(w(t)),d=o.getDom().getBoundingClientRect();s=i(d.left,s),l=i(d.top,l),u=r(d.right,u),h=r(d.bottom,h),c.push({dom:p,left:d.left,top:d.top})}}));var d=(u*=p)-(s*=p),f=(h*=p)-(l*=p),g=C(),y=Hi(g,{renderer:e?"svg":"canvas"});if(y.resize({width:d,height:f}),e){var v="";return Rv(c,(function(t){var e=t.left-s,n=t.top-l;v+=''+t.dom+""})),y.painter.getSvgRoot().innerHTML=v,t.connectedBackgroundColor&&y.painter.setBackgroundColor(t.connectedBackgroundColor),y.refreshImmediately(),y.painter.toDataURL()}return t.connectedBackgroundColor&&y.add(new ls({shape:{x:0,y:0,width:d,height:f},style:{fill:t.connectedBackgroundColor}})),Rv(c,(function(t){var e=new es({style:{x:t.left*p-s,y:t.top*p-l,image:t.dom}});y.add(e)})),y.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},e.prototype.convertToPixel=function(t,e){return $v(this,"convertToPixel",t,e)},e.prototype.convertFromPixel=function(t,e){return $v(this,"convertFromPixel",t,e)},e.prototype.containPixel=function(t,e){var n;if(!this._disposed)return P(Or(this._model,t),(function(t,i){i.indexOf("Models")>=0&&P(t,(function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n=n||!!r.containPoint(e);else if("seriesModels"===i){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(n=n||o.containPoint(e,t))}else 0}),this)}),this),!!n;_m(this.id)},e.prototype.getVisual=function(t,e){var n=Or(this._model,t,{defaultMainType:"series"}),i=n.seriesModel;var r=i.getData(),o=n.hasOwnProperty("dataIndexInside")?n.dataIndexInside:n.hasOwnProperty("dataIndex")?r.indexOfRawIndex(n.dataIndex):null;return null!=o?vg(r,o,e):mg(r,e)},e.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},e.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},e.prototype._initEvents=function(){var t,e,n,i=this;Rv(mm,(function(t){var e=function(e){var n,r=i.getModel(),o=e.target,a="globalout"===t;if(a?n={}:o&&iy(o,(function(t){var e=_s(t);if(e&&null!=e.dataIndex){var i=e.dataModel||r.getSeriesByIndex(e.seriesIndex);return n=i&&i.getDataParams(e.dataIndex,e.dataType)||{},!0}if(e.eventData)return n=I({},e.eventData),!0}),!0),n){var s=n.componentType,l=n.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=n.seriesIndex);var u=s&&null!=l&&r.getComponent(s,l),h=u&&i["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];0,n.event=e,n.type=t,i._$eventProcessor.eventInfo={targetEl:o,packedEvent:n,model:u,view:h},i.trigger(t,n)}};e.zrEventfulCallAtLast=!0,i._zr.on(t,e,i)})),Rv(bm,(function(t,e){i._messageCenter.on(e,(function(t){this.trigger(e,t)}),i)})),Rv(["selectchanged"],(function(t){i._messageCenter.on(t,(function(e){this.trigger(t,e)}),i)})),t=this._messageCenter,e=this,n=this._api,t.on("selectchanged",(function(t){var i=n.getModel();t.isFromClick?(ny("map","selectchanged",e,i,t),ny("pie","selectchanged",e,i,t)):"select"===t.fromAction?(ny("map","selected",e,i,t),ny("pie","selected",e,i,t)):"unselect"===t.fromAction&&(ny("map","unselected",e,i,t),ny("pie","unselected",e,i,t))}))},e.prototype.isDisposed=function(){return this._disposed},e.prototype.clear=function(){this._disposed?_m(this.id):this.setOption({series:[]},!0)},e.prototype.dispose=function(){if(this._disposed)_m(this.id);else{this._disposed=!0,Vr(this.getDom(),Om,"");var t=this._api,e=this._model;Rv(this._componentsViews,(function(n){n.dispose(e,t)})),Rv(this._chartsViews,(function(n){n.dispose(e,t)})),this._zr.dispose(),delete Am[this.id]}},e.prototype.resize=function(t){if(this._disposed)_m(this.id);else{this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),i=t&&t.silent;this.__optionUpdated&&(null==i&&(i=this.__optionUpdated.silent),n=!0,this.__optionUpdated=!1),this.__flagInMainProcess=!0,n&&Zv(this),Kv.update.call(this,{type:"resize",animation:I({duration:0},t&&t.animation)}),this.__flagInMainProcess=!1,tm.call(this,i),em.call(this,i)}}},e.prototype.showLoading=function(t,e){if(this._disposed)_m(this.id);else if(zv(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),Dm[t]){var n=Dm[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},e.prototype.hideLoading=function(){this._disposed?_m(this.id):(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},e.prototype.makeActionFromEvent=function(t){var e=I({},t);return e.type=bm[t.type],e},e.prototype.dispatchAction=function(t,e){if(this._disposed)_m(this.id);else if(zv(e)||(e={silent:!!e}),xm[t.type]&&this._model)if(this.__flagInMainProcess)this._pendingActions.push(t);else{var n=e.silent;Qv.call(this,t,n);var i=e.flush;i?this._zr.flush():!1!==i&&a.browser.weChat&&this._throttledZrFlush(),tm.call(this,n),em.call(this,n)}},e.prototype.updateLabelLayout=function(){var t=this._labelManager;t.updateLayoutConfig(this._api),t.layout(this._api),t.processLabelsOverall()},e.prototype.appendData=function(t){if(this._disposed)_m(this.id);else{var e=t.seriesIndex,n=this.getModel().getSeriesByIndex(e);0,n.appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()}},e.internalField=function(){function t(t){for(var e=[],n=t.currentStates,i=0;i0?{duration:o,delay:i.get("delay"),easing:i.get("easing")}:null;n.group.traverse((function(e){if(e.states&&e.states.emphasis){if(Zu(e))return;if(e instanceof Ka&&function(t){var e=ws(t);e.normalFill=t.style.fill,e.normalStroke=t.style.stroke;var n=t.states.select||{};e.selectFill=n.style&&n.style.fill||null,e.selectStroke=n.style&&n.style.stroke||null}(e),e.__dirty){var n=e.prevStates;n&&e.useStates(n)}if(r){e.stateTransition=a;var i=e.getTextContent(),o=e.getTextGuideLine();i&&(i.stateTransition=a),o&&(o.stateTransition=a)}e.__dirty&&t(e)}}))}Zv=function(t){var e=t._scheduler;e.restorePipelines(t._model),e.prepareStageTasks(),jv(t,!0),jv(t,!1),e.plan()},jv=function(t,e){for(var n=t._model,i=t._scheduler,r=e?t._componentsViews:t._chartsViews,o=e?t._componentsMap:t._chartsMap,a=t._zr,s=t._api,l=0;le.get("hoverLayerThreshold")&&!a.node&&!a.worker&&e.eachSeries((function(e){if(!e.preventUsingHoverLayer){var n=t._chartsMap[e.__viewId];n.__alive&&n.group.traverse((function(t){t.states.emphasis&&(t.states.emphasis.hoverLayer=!0)}))}}))}(t,n)},lm=function(t,e){Rv(Im,(function(n){n(t,e)}))},pm=function(t){t.__needsUpdateStatus=!0,t.getZr().wakeUp()},dm=function(e){e.__needsUpdateStatus&&(e.getZr().storage.traverse((function(e){Zu(e)||t(e)})),e.__needsUpdateStatus=!1)},um=function(t){return new(function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return n(i,e),i.prototype.getCoordinateSystems=function(){return t._coordSysMgr.getCoordinateSystems()},i.prototype.getComponentByElement=function(e){for(;e;){var n=e.__ecComponentInfo;if(null!=n)return t._model.getComponent(n.mainType,n.index);e=e.parent}},i.prototype.enterEmphasis=function(e,n){js(e,n),pm(t)},i.prototype.leaveEmphasis=function(e,n){qs(e,n),pm(t)},i.prototype.enterBlur=function(e){Ks(e),pm(t)},i.prototype.leaveBlur=function(e){$s(e),pm(t)},i.prototype.enterSelect=function(e){Js(e),pm(t)},i.prototype.leaveSelect=function(e){Qs(e),pm(t)},i.prototype.getModel=function(){return t.getModel()},i.prototype.getViewOfComponentModel=function(e){return t.getViewOfComponentModel(e)},i.prototype.getViewOfSeriesModel=function(e){return t.getViewOfSeriesModel(e)},i}(Cp))(t)},hm=function(t){function e(t,e){for(var n=0;n=0)){Ym.push(n);var o=Zf.wrapStageHandler(n,r);o.__prio=e,o.__raw=n,t.push(o)}}function jm(t,e){Dm[t]=e}function qm(t,e,n){Av(t,e,n)}var Km=function(t){var e=(t=w(t)).type,n="";e||vr(n);var i=e.split(":");2!==i.length&&vr(n);var r=!1;"echarts"===i[0]&&(e=i[1],r=!0),t.__isBuiltIn=r,Ud.set(e,t)};Xm(Bv,Hf),Xm(Fv,Uf),Xm(Fv,Xf),Xm(Bv,yg),Xm(Fv,{createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(t.hasSymbolVisual&&!e.isSeriesFiltered(t))return{dataEach:t.getData().hasItemOption?function(t,e){var n=t.getItemModel(e),i=n.getShallow("symbol",!0),r=n.getShallow("symbolSize",!0),o=n.getShallow("symbolRotate",!0),a=n.getShallow("symbolOffset",!0),s=n.getShallow("symbolKeepAspect",!0);null!=i&&t.setItemVisual(e,"symbol",i),null!=r&&t.setItemVisual(e,"symbolSize",r),null!=o&&t.setItemVisual(e,"symbolRotate",o),null!=a&&t.setItemVisual(e,"symbolOffset",a),null!=s&&t.setItemVisual(e,"symbolKeepAspect",s)}:null}}}),Xm(7e3,(function(t,e){t.eachRawSeries((function(n){if(!t.isSeriesFiltered(n)){var i=n.getData();i.hasItemVisual()&&i.each((function(t){var n=i.getItemVisual(t,"decal");n&&(i.ensureUniqueItemVisual(t,"style").decal=Ey(n,e))}));var r=i.getVisual("decal");if(r)i.getVisual("style").decal=Ey(r,e)}}))})),Vm(Jp),Bm(900,(function(t){var e=ht();t.eachSeries((function(t){var n=t.get("stack");if(n){var i=e.get(n)||e.set(n,[]),r=t.getData(),o={stackResultDimension:r.getCalculationInfo("stackResultDimension"),stackedOverDimension:r.getCalculationInfo("stackedOverDimension"),stackedDimension:r.getCalculationInfo("stackedDimension"),stackedByDimension:r.getCalculationInfo("stackedByDimension"),isStackedByIndex:r.getCalculationInfo("isStackedByIndex"),data:r,seriesModel:t};if(!o.stackedDimension||!o.isStackedByIndex&&!o.stackedByDimension)return;i.length&&r.setCalculationInfo("stackedOnSeries",i[i.length-1].seriesModel),i.push(o)}})),e.each(Qp)})),jm("default",(function(t,e){T(e=e||{},{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var n=new Ei,i=new ls({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});n.add(i);var r,o=new cs({style:{text:e.text,fill:e.textColor,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:e.fontFamily},zlevel:e.zlevel,z:10001}),a=new ls({style:{fill:"none"},textContent:o,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});return n.add(a),e.showSpinner&&((r=new gu({shape:{startAngle:-Yf/2,endAngle:-Yf/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001})).animateShape(!0).when(1e3,{endAngle:3*Yf/2}).start("circularInOut"),r.animateShape(!0).when(1e3,{startAngle:3*Yf/2}).delay(300).start("circularInOut"),n.add(r)),n.resize=function(){var n=o.getBoundingRect().width,s=e.showSpinner?e.spinnerRadius:0,l=(t.getWidth()-2*s-(e.showSpinner&&n?10:0)-n)/2-(e.showSpinner&&n?0:5+n/2)+(e.showSpinner?0:n/2)+(n?0:s),u=t.getHeight()/2;e.showSpinner&&r.setShape({cx:l,cy:u}),a.setShape({x:l-s,y:u-s,width:2*s,height:2*s}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},n.resize(),n})),Hm({type:Ts,event:Ts,update:Ts},ft),Hm({type:Cs,event:Cs,update:Cs},ft),Hm({type:Ds,event:Ds,update:Ds},ft),Hm({type:As,event:As,update:As},ft),Hm({type:Ls,event:Ls,update:Ls},ft),Em("light",ug),Em("dark",fg);var $m=[],Jm={registerPreprocessor:Vm,registerProcessor:Bm,registerPostInit:Fm,registerPostUpdate:Gm,registerAction:Hm,registerCoordinateSystem:Wm,registerLayout:Um,registerVisual:Xm,registerTransform:Km,registerLoading:jm,registerMap:qm,PRIORITY:Gv,ComponentModel:Xc,ComponentView:wf,SeriesModel:ff,ChartView:Tf,registerComponentModel:function(t){Xc.registerClass(t)},registerComponentView:function(t){wf.registerClass(t)},registerSeriesModel:function(t){ff.registerClass(t)},registerChartView:function(t){Tf.registerClass(t)},registerSubTypeDefaulter:function(t,e){Xc.registerSubTypeDefaulter(t,e)},registerPainter:function(t,e){Wi(t,e)}};function Qm(t){F(t)?P(t,(function(t){Qm(t)})):D($m,t)>=0||($m.push(t),G(t)&&(t={install:t}),t.install(Jm))}function t_(t){return null==t?0:t.length||1}function e_(t){return t}var n_=function(){function t(t,e,n,i,r,o){this._old=t,this._new=e,this._oldKeyGetter=n||e_,this._newKeyGetter=i||e_,this.context=r,this._diffModeMultiple="multiple"===o}return t.prototype.add=function(t){return this._add=t,this},t.prototype.update=function(t){return this._update=t,this},t.prototype.updateManyToOne=function(t){return this._updateManyToOne=t,this},t.prototype.updateOneToMany=function(t){return this._updateOneToMany=t,this},t.prototype.remove=function(t){return this._remove=t,this},t.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},t.prototype._executeOneToOne=function(){var t=this._old,e=this._new,n={},i=new Array(t.length),r=new Array(e.length);this._initIndexMap(t,null,i,"_oldKeyGetter"),this._initIndexMap(e,n,r,"_newKeyGetter");for(var o=0;o1){var u=s.shift();1===s.length&&(n[a]=s[0]),this._update&&this._update(u,o)}else 1===l?(n[a]=null,this._update&&this._update(s,o)):this._remove&&this._remove(o)}this._performRestAdd(r,n)},t.prototype._executeMultiple=function(){var t=this._old,e=this._new,n={},i={},r=[],o=[];this._initIndexMap(t,n,r,"_oldKeyGetter"),this._initIndexMap(e,i,o,"_newKeyGetter");for(var a=0;a1&&1===c)this._updateManyToOne&&this._updateManyToOne(u,l),i[s]=null;else if(1===h&&c>1)this._updateOneToMany&&this._updateOneToMany(u,l),i[s]=null;else if(1===h&&1===c)this._update&&this._update(u,l),i[s]=null;else if(h>1)for(var p=0;p1)for(var a=0;av[1]&&(v[1]=y)}e&&(this._nameList[d]=e[f],this._dontMakeIdFromName||d_(this,d))}this._rawCount=this._count=s,this._extent={},a_(this)},t.prototype._initDataFromProvider=function(t,e,n){if(!(t>=e)){for(var i=this._rawData,r=this._storage,o=this.dimensions,a=o.length,s=this._dimensionInfos,l=this._nameList,u=this._idList,h=this._rawExtent,c=i.getSource().sourceFormat===Kc,p=0;pb[1]&&(b[1]=x)}if(c&&!i.pure&&y){var w=y.name;null==l[v]&&null!=w&&(l[v]=Cr(w,null));var S=y.id;null==u[v]&&null!=S&&(u[v]=Cr(S,null))}this._dontMakeIdFromName||d_(this,v)}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=e,this._extent={},a_(this)}},t.prototype.count=function(){return this._count},t.prototype.getIndices=function(){var t,e=this._indices;if(e){var n=e.constructor,i=this._count;if(n===Array){t=new n(i);for(var r=0;r=0&&e=0&&e=0&&ea&&(a=l)}return i=[o,a],this._extent[t]=i,i},t.prototype.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},t.prototype.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},t.prototype.getCalculationInfo=function(t){return this._calculationInfo[t]},t.prototype.setCalculationInfo=function(t,e){b_(t)?I(this._calculationInfo,t):this._calculationInfo[t]=e},t.prototype.getSum=function(t){var e=0;if(this._storage[t])for(var n=0,i=this.count();n=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&nt))return o;r=o-1}}return-1},t.prototype.indicesOfNearest=function(t,e,n){var i=this._storage[t],r=[];if(!i)return r;null==n&&(n=1/0);for(var o=1/0,a=-1,s=0,l=0,u=this.count();l=0&&a<0)&&(o=c,a=h,s=0),h===a&&(r[s++]=l))}return r.length=s,r},t.prototype.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],n=0;n=c&&b<=p||isNaN(b))&&(s[l++]=g),g++}f=!0}else if(2===o){y=d[h[0]];var m=d[h[1]],_=t[i[1]][0],x=t[i[1]][1];for(v=0;v=c&&b<=p||isNaN(b))&&(w>=_&&w<=x||isNaN(w))&&(s[l++]=g),g++}f=!0}}if(!f)if(1===o)for(v=0;v=c&&b<=p||isNaN(b))&&(s[l++]=S)}else for(v=0;vt[T][1])&&(M=!1)}M&&(s[l++]=this.getRawIndex(v))}return lx[1]&&(x[1]=_)}}}return a},t.prototype.downSample=function(t,e,n,i){for(var r=g_(this,[t]),o=r._storage,a=[],s=x_(1/e),l=o[t],u=this.count(),h=r._rawExtent[t],c=new(s_(this))(u),p=0,d=0;du-d&&(s=u-d,a.length=s);for(var f=0;fh[1]&&(h[1]=y),c[p++]=v}return r._count=p,r._indices=c,r.getRawIndex=h_,r},t.prototype.lttbDownSample=function(t,e){var n,i,r,o=g_(this,[]),a=o._storage[t],s=this.count(),l=new(s_(this))(s),u=0,h=x_(1/e),c=this.getRawIndex(0);l[u++]=c;for(var p=1;pn&&(n=i,r=S)}l[u++]=r,c=r}return l[u++]=this.getRawIndex(s-1),o._count=u,o._indices=l,o.getRawIndex=h_,o},t.prototype.getItemModel=function(t){var e=this.hostModel,n=this.getRawDataItem(t);return new Oh(n,e,e&&e.ecModel)},t.prototype.diff=function(t){var e=this;return new n_(t?t.getIndices():[],this.getIndices(),(function(e){return c_(t,e)}),(function(t){return c_(e,t)}))},t.prototype.getVisual=function(t){var e=this._visual;return e&&e[t]},t.prototype.setVisual=function(t,e){this._visual=this._visual||{},b_(t)?I(this._visual,t):this._visual[t]=e},t.prototype.getItemVisual=function(t,e){var n=this._itemVisuals[t],i=n&&n[e];return null==i?this.getVisual(e):i},t.prototype.hasItemVisual=function(){return this._itemVisuals.length>0},t.prototype.ensureUniqueItemVisual=function(t,e){var n=this._itemVisuals,i=n[t];i||(i=n[t]={});var r=i[e];return null==r&&(F(r=this.getVisual(e))?r=r.slice():b_(r)&&(r=I({},r)),i[e]=r),r},t.prototype.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,b_(e)?I(i,e):i[e]=n},t.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},t.prototype.setLayout=function(t,e){if(b_(t))for(var n in t)t.hasOwnProperty(n)&&this.setLayout(n,t[n]);else this._layout[t]=e},t.prototype.getLayout=function(t){return this._layout[t]},t.prototype.getItemLayout=function(t){return this._itemLayouts[t]},t.prototype.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?I(this._itemLayouts[t]||{},e):e},t.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},t.prototype.setItemGraphicEl=function(t,e){var n=this.hostModel;if(e){var i=_s(e);i.dataIndex=t,i.dataType=this.dataType,i.seriesIndex=n&&n.seriesIndex,"group"===e.type&&e.traverse(v_,e)}this._graphicEls[t]=e},t.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},t.prototype.eachItemGraphicEl=function(t,e){P(this._graphicEls,(function(n,i){n&&t&&t.call(e,n,i)}))},t.prototype.cloneShallow=function(e){e||(e=new t(w_(this.dimensions,this.getDimensionInfo,this),this.hostModel));if(e._storage=this._storage,e._storageArr=this._storageArr,m_(e,this),this._indices){var n=this._indices.constructor;if(n===Array){var i=this._indices.length;e._indices=new n(i);for(var r=0;r65535?I_:C_},l_=function(t,e,n,i){var r=M_[e.type],o=e.name;if(i){var a=t[o],s=a&&a.length;if(s!==n){for(var l=new r(n),u=0;u=0?this._indices[t]:-1},c_=function(t,e){var n=t._idList[e];return null==n&&null!=t._idDimIdx&&(n=p_(t,t._idDimIdx,t._idOrdinalMeta,e)),null==n&&(n="e\0\0"+e),n},f_=function(t){return F(t)||(t=null!=t?[t]:[]),t},function(t,e){for(var n=0;n=0?(s[c]=(o=l[c],a=void 0,(a=o.constructor)===Array?o.slice():new a(o)),r._rawExtent[c]=y_(),r._extent[c]=null):s[c]=l[c],u.push(s[c]))}return r},y_=function(){return[1/0,-1/0]},v_=function(t){var e=_s(t),n=_s(this);e.seriesIndex=n.seriesIndex,e.dataIndex=n.dataIndex,e.dataType=n.dataType},m_=function(t,e){P(D_.concat(e.__wrappedMethods||[]),(function(n){e.hasOwnProperty(n)&&(t[n]=e[n])})),t.__wrappedMethods=e.__wrappedMethods,P(A_,(function(n){t[n]=w(e[n])})),t._calculationInfo=I({},e._calculationInfo)},d_=function(t,e){var n=t._nameList,i=t._idList,r=t._nameDimIdx,o=t._idDimIdx,a=n[e],s=i[e];if(null==a&&null!=r&&(n[e]=a=p_(t,r,t._nameOrdinalMeta,e)),null==s&&null!=o&&(i[e]=s=p_(t,o,t._idOrdinalMeta,e)),null==s&&null!=a){var l=t._nameRepeatCount,u=l[a]=(l[a]||0)+1;s=a,u>1&&(s+="__ec__"+u),i[e]=s}}}(),t}();function k_(t,e,n){ad(e)||(e=ld(e)),n=n||{},t=(t||[]).slice();for(var i=(n.dimsDef||[]).slice(),r=ht(),o=ht(),a=[],s=function(t,e,n,i){var r=Math.max(t.dimensionsDetectedCount||1,e.length,n.length,i||0);return P(e,(function(t){var e;X(t)&&(e=t.dimsDef)&&(r=Math.max(r,e.length))})),r}(e,t,i,n.dimCount),l=0;le[1]&&(e[1]=t[1])},t.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},t.prototype.isInExtentRange=function(t){return this._extent[0]<=t&&this._extent[1]>=t},t.prototype.isBlank=function(){return this._isBlank},t.prototype.setBlank=function(t){this._isBlank=t},t}();Kr(G_);var H_=function(){function t(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication}return t.createByAxisModel=function(e){var n=e.option,i=n.data,r=i&&O(i,W_);return new t({categories:r,needCollect:!r,deduplication:!1!==n.dedplication})},t.prototype.getOrdinal=function(t){return this._getOrCreateMap().get(t)},t.prototype.parseAndCollect=function(t){var e,n=this._needCollect;if("string"!=typeof t&&!n)return t;if(n&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var i=this._getOrCreateMap();return null==(e=i.get(t))&&(n?(e=this.categories.length,this.categories[e]=t,i.set(t,e)):e=NaN),e},t.prototype._getOrCreateMap=function(){return this._map||(this._map=ht(this.categories))},t}();function W_(t){return X(t)&&null!=t.value?t.value:t+""}var U_=ji;function X_(t,e,n,i){var r={},o=t[1]-t[0],a=r.interval=lr(o/e,!0);null!=n&&ai&&(a=r.interval=i);var s=r.intervalPrecision=Y_(a);return function(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Z_(t,0,e),Z_(t,1,e),t[0]>t[1]&&(t[0]=t[1])}(r.niceTickExtent=[U_(Math.ceil(t[0]/a)*a,s),U_(Math.floor(t[1]/a)*a,s)],t),r}function Y_(t){return Ki(t)+2}function Z_(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function j_(t,e){return t>=e[0]&&t<=e[1]}function q_(t,e){return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])}function K_(t,e){return t*(e[1]-e[0])+e[0]}var $_=function(t){function e(e){var n=t.call(this,e)||this;n.type="ordinal";var i=n.getSetting("ordinalMeta");return i||(i=new H_({})),F(i)&&(i=new H_({categories:O(i,(function(t){return X(t)?t.value:t}))})),n._ordinalMeta=i,n._extent=n.getSetting("extent")||[0,i.categories.length-1],n}return n(e,t),e.prototype.parse=function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},e.prototype.contain=function(t){return j_(t=this.parse(t),this._extent)&&null!=this._ordinalMeta.categories[t]},e.prototype.normalize=function(t){return q_(t=this._getTickNumber(this.parse(t)),this._extent)},e.prototype.scale=function(t){return t=Math.round(K_(t,this._extent)),this.getRawOrdinalNumber(t)},e.prototype.getTicks=function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push({value:n}),n++;return t},e.prototype.getMinorTicks=function(t){},e.prototype.setSortInfo=function(t){if(null!=t){for(var e=t.ordinalNumbers,n=this._ordinalNumbersByTick=[],i=this._ticksByOrdinalNumber=[],r=0,o=this._ordinalMeta.categories.length,a=Math.min(o,e.length);r=0&&t=0&&t=t},e.prototype.getOrdinalMeta=function(){return this._ordinalMeta},e.prototype.niceTicks=function(){},e.prototype.niceExtent=function(){},e.type="ordinal",e}(G_);G_.registerClass($_);var J_=ji,Q_=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="interval",e._interval=0,e._intervalPrecision=2,e}return n(e,t),e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return j_(t,this._extent)},e.prototype.normalize=function(t){return q_(t,this._extent)},e.prototype.scale=function(t){return K_(t,this._extent)},e.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[1]=parseFloat(e))},e.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),this.setExtent(e[0],e[1])},e.prototype.getInterval=function(){return this._interval},e.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Y_(t)},e.prototype.getTicks=function(t){var e=this._interval,n=this._extent,i=this._niceExtent,r=this._intervalPrecision,o=[];if(!e)return o;n[0]1e4)return[];var s=o.length?o[o.length-1].value:i[1];return n[1]>s&&(t?o.push({value:J_(s+e,r)}):o.push({value:n[1]})),o},e.prototype.getMinorTicks=function(t){for(var e=this.getTicks(!0),n=[],i=this.getExtent(),r=1;ri[0]&&h0&&(o=null===o?s:Math.min(o,s))}n[i]=o}}return n}(t),n=[];return P(t,(function(t){var i,r=t.coordinateSystem.getBaseAxis(),o=r.getExtent();if("category"===r.type)i=r.getBandWidth();else if("value"===r.type||"time"===r.type){var a=r.dim+"_"+r.index,s=e[a],l=Math.abs(o[1]-o[0]),u=r.scale.getExtent(),h=Math.abs(u[1]-u[0]);i=s?l/h*s:l}else{var c=t.getData();i=Math.abs(o[1]-o[0])/c.count()}var p=Zi(t.get("barWidth"),i),d=Zi(t.get("barMaxWidth"),i),f=Zi(t.get("barMinWidth")||1,i),g=t.get("barGap"),y=t.get("barCategoryGap");n.push({bandWidth:i,barWidth:p,barMaxWidth:d,barMinWidth:f,barGap:g,barCategoryGap:y,axisKey:ix(r),stackId:nx(t)})})),ax(n)}function ax(t){var e={};P(t,(function(t,n){var i=t.axisKey,r=t.bandWidth,o=e[i]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},a=o.stacks;e[i]=o;var s=t.stackId;a[s]||o.autoWidthCount++,a[s]=a[s]||{width:0,maxWidth:0};var l=t.barWidth;l&&!a[s].width&&(a[s].width=l,l=Math.min(o.remainedWidth,l),o.remainedWidth-=l);var u=t.barMaxWidth;u&&(a[s].maxWidth=u);var h=t.barMinWidth;h&&(a[s].minWidth=h);var c=t.barGap;null!=c&&(o.gap=c);var p=t.barCategoryGap;null!=p&&(o.categoryGap=p)}));var n={};return P(e,(function(t,e){n[e]={};var i=t.stacks,r=t.bandWidth,o=t.categoryGap;if(null==o){var a=E(i).length;o=Math.max(35-4*a,15)+"%"}var s=Zi(o,r),l=Zi(t.gap,1),u=t.remainedWidth,h=t.autoWidthCount,c=(u-s)/(h+(h-1)*l);c=Math.max(c,0),P(i,(function(t){var e=t.maxWidth,n=t.minWidth;if(t.width){i=t.width;e&&(i=Math.min(i,e)),n&&(i=Math.max(i,n)),t.width=i,u-=i+l*i,h--}else{var i=c;e&&ei&&(i=n),i!==c&&(t.width=i,u-=i+l*i,h--)}})),c=(u-s)/(h+(h-1)*l),c=Math.max(c,0);var p,d=0;P(i,(function(t,e){t.width||(t.width=c),p=t,d+=t.width*(1+l)})),p&&(d-=p.width*l);var f=-d/2;P(i,(function(t,i){n[e][i]=n[e][i]||{bandWidth:r,offset:f,width:t.width},f+=t.width*(1+l)}))})),n}function sx(t,e,n){if(t&&e){var i=t[ix(e)];return null!=i&&null!=n?i[nx(n)]:i}}function lx(t,e){var n=rx(t,e),i=ox(n),r={};P(n,(function(t){var e=t.getData(),n=t.coordinateSystem,o=n.getBaseAxis(),a=nx(t),s=i[ix(o)][a],l=s.offset,u=s.width,h=n.getOtherAxis(o),c=t.get("barMinHeight")||0;r[a]=r[a]||[],e.setLayout({bandWidth:s.bandWidth,offset:l,size:u});for(var p=e.mapDimension(h.dim),d=e.mapDimension(o.dim),f=V_(e,p),g=h.isHorizontal(),y=px(o,h),v=0,m=e.count();v=0?"p":"n",w=y;f&&(r[a][x]||(r[a][x]={p:y,n:y}),w=r[a][x][b]);var S,M=void 0,I=void 0,T=void 0,C=void 0;if(g)M=w,I=(S=n.dataToPoint([_,x]))[1]+l,T=S[0]-y,C=u,Math.abs(T).5||(h=.5),{progress:function(t,e){for(var c,p=t.count,d=new ex(2*p),f=new ex(2*p),g=new ex(p),y=[],v=[],m=0,_=0;null!=(c=t.next());)v[u]=e.get(a,c),v[1-u]=e.get(s,c),y=n.dataToPoint(v,null),f[m]=l?i.x+i.width:y[0],d[m++]=y[0],f[m]=l?y[1]:i.y+i.height,d[m++]=y[1],g[_++]=c;e.setLayout({largePoints:d,largeDataIndices:g,largeBackgroundPoints:f,barWidth:h,valueAxisStart:px(r,o),backgroundStart:l?i.x:i.y,valueAxisHorizontal:l})}}}}};function hx(t){return t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type}function cx(t){return t.pipelineContext&&t.pipelineContext.large}function px(t,e,n){return e.toGlobalCoord(e.dataToCoord("log"===e.type?1:0))}var dx=function(t){function e(e){var n=t.call(this,e)||this;return n.type="time",n}return n(e,t),e.prototype.getLabel=function(t){var e=this.getSetting("useUTC");return ic(t.value,$h[function(t){switch(t){case"year":case"month":return"day";case"millisecond":return"millisecond";default:return"second"}}(ec(this._minLevelUnit))]||$h.second,e,this.getSetting("locale"))},e.prototype.getFormattedLabel=function(t,e,n){var i=this.getSetting("useUTC");return function(t,e,n,i,r){var o=null;if("string"==typeof n)o=n;else if("function"==typeof n)o=n(t.value,e,{level:t.level});else{var a=I({},qh);if(t.level>0)for(var s=0;s=0;--s)if(l[u]){o=l[u];break}o=o||a.none}if(F(o)){var h=null==t.level?0:t.level>=0?t.level:o.length+t.level;o=o[h=Math.min(h,o.length-1)]}}return ic(new Date(t.value),o,r,i)}(t,e,n,this.getSetting("locale"),i)},e.prototype.getTicks=function(t){var e=this._interval,n=this._extent,i=[];if(!e)return i;i.push({value:n[0],level:0});var r=this.getSetting("useUTC"),o=function(t,e,n,i){var r=1e4,o=Qh,a=0;function s(t,e,n,r,o,a,s){for(var l=new Date(e),u=e,h=l[r]();u1&&0===u&&o.unshift({value:o[0].value-p})}}for(u=0;u=i[0]&&v<=i[1]&&c++)}var m=(i[1]-i[0])/e;if(c>1.5*m&&p>m/1.5)break;if(u.push(g),c>m||t===o[d])break}h=[]}}0;var _=N(O(u,(function(t){return N(t,(function(t){return t.value>=i[0]&&t.value<=i[1]&&!t.notAdd}))})),(function(t){return t.length>0})),x=[],b=_.length-1;for(d=0;d<_.length;++d)for(var w=_[d],S=0;Sn&&(this._approxInterval=n);var o=fx.length,a=Math.min(function(t,e,n,i){for(;n>>1;t[r][1]16?16:t>7.5?7:t>3.5?4:t>1.5?2:1}function yx(t){return(t/=2592e6)>6?6:t>3?3:t>2?2:1}function vx(t){return(t/=Yh)>12?12:t>6?6:t>3.5?4:t>2?2:1}function mx(t,e){return(t/=e?Xh:Uh)>30?30:t>20?20:t>15?15:t>10?10:t>5?5:t>2?2:1}function _x(t){return lr(t,!0)}function xx(t,e,n){var i=new Date(t);switch(ec(e)){case"year":case"month":i[fc(n)](0);case"day":i[gc(n)](1);case"hour":i[yc(n)](0);case"minute":i[vc(n)](0);case"second":i[mc(n)](0),i[_c(n)](0)}return i.getTime()}G_.registerClass(dx);var bx=G_.prototype,Sx=Q_.prototype,Mx=ji,Ix=Math.floor,Tx=Math.ceil,Cx=Math.pow,Dx=Math.log,Ax=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="log",e.base=10,e._originalScale=new Q_,e._interval=0,e}return n(e,t),e.prototype.getTicks=function(t){var e=this._originalScale,n=this._extent,i=e.getExtent();return O(Sx.getTicks.call(this,t),(function(t){var e=t.value,r=ji(Cx(this.base,e));return r=e===n[0]&&this._fixMin?kx(r,i[0]):r,{value:r=e===n[1]&&this._fixMax?kx(r,i[1]):r}}),this)},e.prototype.setExtent=function(t,e){var n=this.base;t=Dx(t)/Dx(n),e=Dx(e)/Dx(n),Sx.setExtent.call(this,t,e)},e.prototype.getExtent=function(){var t=this.base,e=bx.getExtent.call(this);e[0]=Cx(t,e[0]),e[1]=Cx(t,e[1]);var n=this._originalScale.getExtent();return this._fixMin&&(e[0]=kx(e[0],n[0])),this._fixMax&&(e[1]=kx(e[1],n[1])),e},e.prototype.unionExtent=function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=Dx(t[0])/Dx(e),t[1]=Dx(t[1])/Dx(e),bx.unionExtent.call(this,t)},e.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},e.prototype.niceTicks=function(t){t=t||10;var e=this._extent,n=e[1]-e[0];if(!(n===1/0||n<=0)){var i=ar(n);for(t/n*i<=.5&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var r=[ji(Tx(e[0]/i)*i),ji(Ix(e[1]/i)*i)];this._interval=i,this._niceExtent=r}},e.prototype.niceExtent=function(t){Sx.niceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return j_(t=Dx(t)/Dx(this.base),this._extent)},e.prototype.normalize=function(t){return q_(t=Dx(t)/Dx(this.base),this._extent)},e.prototype.scale=function(t){return t=K_(t,this._extent),Cx(this.base,t)},e.type="log",e}(G_),Lx=Ax.prototype;function kx(t,e){return Mx(t,Ki(e))}Lx.getMinorTicks=Sx.getMinorTicks,Lx.getLabel=Sx.getLabel,G_.registerClass(Ax);var Px=function(){function t(t,e,n){this._prepareParams(t,e,n)}return t.prototype._prepareParams=function(t,e,n){n[1]s&&(a=NaN,s=NaN);var h=J(a)||J(s)||t&&!i;this._needCrossZero&&(a>0&&s>0&&!l&&(a=0),a<0&&s<0&&!u&&(s=0));var c=this._determinedMin,p=this._determinedMax;return null!=c&&(a=c,l=!0),null!=p&&(s=p,u=!0),{min:a,max:s,minFixed:l,maxFixed:u,isBlank:h}},t.prototype.modifyDataMinMax=function(t,e){this[Rx[t]]=e},t.prototype.setDeterminedMinMax=function(t,e){var n=Ox[t];this[n]=e},t.prototype.freeze=function(){this.frozen=!0},t}(),Ox={min:"_determinedMin",max:"_determinedMax"},Rx={min:"_dataMin",max:"_dataMax"};function Nx(t,e,n){var i=t.rawExtentInfo;return i||(i=new Px(t,e,n),t.rawExtentInfo=i,i)}function zx(t,e){return null==e?null:J(e)?NaN:t.parse(e)}function Ex(t,e){var n=t.type,i=Nx(t,e,t.getExtent()).calculate();t.setBlank(i.isBlank);var r=i.min,o=i.max,a=e.ecModel;if(a&&"time"===n){var s=rx("bar",a),l=!1;if(P(s,(function(t){l=l||t.getBaseAxis()===e.axis})),l){var u=ox(s),h=function(t,e,n,i){var r=n.axis.getExtent(),o=r[1]-r[0],a=sx(i,n.axis);if(void 0===a)return{min:t,max:e};var s=1/0;P(a,(function(t){s=Math.min(t.offset,s)}));var l=-1/0;P(a,(function(t){l=Math.max(t.offset+t.width,l)})),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/o)-h;return{min:t-=c*(s/u),max:e+=c*(l/u)}}(r,o,e,u);r=h.min,o=h.max}}return{extent:[r,o],fixMin:i.minFixed,fixMax:i.maxFixed}}function Vx(t,e){var n=Ex(t,e),i=n.extent,r=e.get("splitNumber");t instanceof Ax&&(t.base=e.get("logBase"));var o=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:r,fixMin:n.fixMin,fixMax:n.fixMax,minInterval:"interval"===o||"time"===o?e.get("minInterval"):null,maxInterval:"interval"===o||"time"===o?e.get("maxInterval"):null});var a=e.get("interval");null!=a&&t.setInterval&&t.setInterval(a)}function Bx(t,e){if(e=e||t.get("type"))switch(e){case"category":return new $_({ordinalMeta:t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),extent:[1/0,-1/0]});case"time":return new dx({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new(G_.getClass(e)||Q_)}}function Fx(t){var e,n,i=t.getLabelModel().get("formatter"),r="category"===t.type?t.scale.getExtent()[0]:null;return"time"===t.scale.type?(n=i,function(e,i){return t.scale.getFormattedLabel(e,i,n)}):"string"==typeof i?function(e){return function(n){var i=t.scale.getLabel(n);return e.replace("{value}",null!=i?i:"")}}(i):"function"==typeof i?(e=i,function(n,i){return null!=r&&(i=n.value-r),e(Gx(t,n),i,null!=n.level?{level:n.level}:null)}):function(e){return t.scale.getLabel(e)}}function Gx(t,e){return"category"===t.type?t.scale.getLabel(e):e.value}function Hx(t,e){var n=e*Math.PI/180,i=t.width,r=t.height,o=i*Math.abs(Math.cos(n))+Math.abs(r*Math.sin(n)),a=i*Math.abs(Math.sin(n))+Math.abs(r*Math.cos(n));return new gi(t.x,t.y,o,a)}function Wx(t){var e=t.get("interval");return null==e?"auto":e}function Ux(t){return"category"===t.type&&0===Wx(t.getLabelModel())}function Xx(t,e){var n={};return P(t.mapDimensionsAll(e),(function(e){n[B_(t,e)]=!0})),E(n)}var Yx=function(){function t(){}return t.prototype.getNeedCrossZero=function(){return!this.option.scale},t.prototype.getCoordSysModel=function(){},t}();var Zx={isDimensionStacked:V_,enableDataStack:E_,getStackedDimension:B_};var jx=Object.freeze({__proto__:null,createList:function(t){return F_(t.getSource(),t)},getLayoutRect:Vc,dataStack:Zx,createScale:function(t,e){var n=e;e instanceof Oh||(n=new Oh(e));var i=Bx(n);return i.setExtent(t[0],t[1]),Vx(i,n),i},mixinAxisModelCommonMethods:function(t){L(t,Yx)},getECData:_s,createTextStyle:function(t,e){return ph(t,null,null,"normal"!==(e=e||{}).state)},createDimensions:O_,createSymbol:fy,enableHoverEmphasis:sl}),qx=Object.freeze({__proto__:null,linearMap:Yi,round:ji,asc:qi,getPrecision:Ki,getPrecisionSafe:$i,getPixelPrecision:Ji,getPercentWithPrecision:Qi,MAX_SAFE_INTEGER:er,remRadian:nr,isRadianAroundZero:ir,parseDate:or,quantity:ar,quantityExponent:sr,nice:lr,quantile:ur,reformIntervals:hr,isNumeric:pr,numericToNumber:cr}),Kx=Object.freeze({__proto__:null,parse:or,format:ic}),$x=Object.freeze({__proto__:null,extendShape:Lu,extendPath:Pu,makePath:Nu,makeImage:zu,mergePath:Vu,resizePath:Bu,createIcon:eh,updateProps:Hu,initProps:Wu,getTransform:ju,clipPointsByRect:Qu,clipRectByRect:th,registerShape:Ou,getShapeClass:Ru,Group:Ei,Image:es,Text:cs,Circle:Nl,Ellipse:El,Sector:Jl,Ring:tu,Polygon:ru,Polyline:au,Rect:ls,Line:uu,BezierCurve:du,Arc:gu,IncrementalDisplayable:Tu,CompoundPath:yu,LinearGradient:mu,RadialGradient:_u,BoundingRect:gi}),Jx=Object.freeze({__proto__:null,addCommas:xc,toCamelCase:bc,normalizeCssArray:wc,encodeHTML:Ic,formatTpl:Ac,getTooltipMarker:Lc,formatTime:function(t,e,n){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=or(e),r=n?"UTC":"",o=i["get"+r+"FullYear"](),a=i["get"+r+"Month"]()+1,s=i["get"+r+"Date"](),l=i["get"+r+"Hours"](),u=i["get"+r+"Minutes"](),h=i["get"+r+"Seconds"](),c=i["get"+r+"Milliseconds"]();return t=t.replace("MM",tc(a,2)).replace("M",a).replace("yyyy",o).replace("yy",o%100+"").replace("dd",tc(s,2)).replace("d",s).replace("hh",tc(l,2)).replace("h",l).replace("mm",tc(u,2)).replace("m",u).replace("ss",tc(h,2)).replace("s",h).replace("SSS",tc(c,3))},capitalFirst:function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},truncateText:ao,getTextRect:function(t,e,n,i,r,o,a,s){return yr(),new cs({style:{text:t,font:e,align:n,verticalAlign:i,padding:r,rich:o,overflow:a?"truncate":null,lineHeight:s}}).getBoundingRect()}}),Qx=Object.freeze({__proto__:null,map:O,each:P,indexOf:D,inherits:A,reduce:R,filter:N,bind:V,curry:B,isArray:F,isString:H,isObject:X,isFunction:G,extend:I,defaults:T,clone:w,merge:S}),tb=kr();function eb(t){return"category"===t.type?function(t){var e=t.getLabelModel(),n=ib(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}(t):function(t){var e=t.scale.getTicks(),n=Fx(t);return{labels:O(e,(function(e,i){return{formattedLabel:n(e,i),rawLabel:t.scale.getLabel(e),tickValue:e.value}}))}}(t)}function nb(t,e){return"category"===t.type?function(t,e){var n,i,r=rb(t,"ticks"),o=Wx(e),a=ob(r,o);if(a)return a;e.get("show")&&!t.scale.isBlank()||(n=[]);if(G(o))n=lb(t,o,!0);else if("auto"===o){var s=ib(t,t.getLabelModel());i=s.labelCategoryInterval,n=O(s.labels,(function(t){return t.tickValue}))}else n=sb(t,i=o,!0);return ab(r,o,{ticks:n,tickCategoryInterval:i})}(t,e):{ticks:O(t.scale.getTicks(),(function(t){return t.value}))}}function ib(t,e){var n,i,r=rb(t,"labels"),o=Wx(e),a=ob(r,o);return a||(G(o)?n=lb(t,o):(i="auto"===o?function(t){var e=tb(t).autoInterval;return null!=e?e:tb(t).autoInterval=t.calculateCategoryInterval()}(t):o,n=sb(t,i)),ab(r,o,{labels:n,labelCategoryInterval:i}))}function rb(t,e){return tb(t)[e]||(tb(t)[e]=[])}function ob(t,e){for(var n=0;n1&&h/l>2&&(u=Math.round(Math.ceil(u/l)*l));var c=Ux(t),p=a.get("showMinLabel")||c,d=a.get("showMaxLabel")||c;p&&u!==o[0]&&g(o[0]);for(var f=u;f<=o[1];f+=l)g(f);function g(t){var e={value:t};s.push(n?t:{formattedLabel:i(e),rawLabel:r.getLabel(e),tickValue:t})}return d&&f-l!==o[1]&&g(o[1]),s}function lb(t,e,n){var i=t.scale,r=Fx(t),o=[];return P(i.getTicks(),(function(t){var a=i.getLabel(t),s=t.value;e(t.value,a)&&o.push(n?s:{formattedLabel:r(t),rawLabel:a,tickValue:s})})),o}var ub=[0,1],hb=function(){function t(t,e,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=e,this._extent=n||[0,0]}return t.prototype.contain=function(t){var e=this._extent,n=Math.min(e[0],e[1]),i=Math.max(e[0],e[1]);return t>=n&&t<=i},t.prototype.containData=function(t){return this.scale.contain(t)},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.getPixelPrecision=function(t){return Ji(t||this.scale.getExtent(),this._extent)},t.prototype.setExtent=function(t,e){var n=this._extent;n[0]=t,n[1]=e},t.prototype.dataToCoord=function(t,e){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&"ordinal"===i.type&&cb(n=n.slice(),i.count()),Yi(t,ub,n,e)},t.prototype.coordToData=function(t,e){var n=this._extent,i=this.scale;this.onBand&&"ordinal"===i.type&&cb(n=n.slice(),i.count());var r=Yi(t,n,ub,e);return this.scale.scale(r)},t.prototype.pointToData=function(t,e){},t.prototype.getTicksCoords=function(t){var e=(t=t||{}).tickModel||this.getTickModel(),n=O(nb(this,e).ticks,(function(t){return{coord:this.dataToCoord("ordinal"===this.scale.type?this.scale.getRawOrdinalNumber(t):t),tickValue:t}}),this);return function(t,e,n,i){var r=e.length;if(!t.onBand||n||!r)return;var o,a,s=t.getExtent();if(1===r)e[0].coord=s[0],o=e[1]={coord:s[0]};else{var l=e[r-1].tickValue-e[0].tickValue,u=(e[r-1].coord-e[0].coord)/l;P(e,(function(t){t.coord-=u/2})),a=1+t.scale.getExtent()[1]-e[r-1].tickValue,o={coord:e[r-1].coord+u*a},e.push(o)}var h=s[0]>s[1];c(e[0].coord,s[0])&&(i?e[0].coord=s[0]:e.shift());i&&c(s[0],e[0].coord)&&e.unshift({coord:s[0]});c(s[1],o.coord)&&(i?o.coord=s[1]:e.pop());i&&c(o.coord,s[1])&&e.push({coord:s[1]});function c(t,e){return t=ji(t),e=ji(e),h?t>e:t0&&t<100||(t=5),O(this.scale.getMinorTicks(t),(function(t){return O(t,(function(t){return{coord:this.dataToCoord(t),tickValue:t}}),this)}),this)},t.prototype.getViewLabels=function(){return eb(this).labels},t.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},t.prototype.getTickModel=function(){return this.model.getModel("axisTick")},t.prototype.getBandWidth=function(){var t=this._extent,e=this.scale.getExtent(),n=e[1]-e[0]+(this.onBand?1:0);0===n&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},t.prototype.calculateCategoryInterval=function(){return function(t){var e=function(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}(t),n=Fx(t),i=(e.axisRotate-e.labelRotate)/180*Math.PI,r=t.scale,o=r.getExtent(),a=r.count();if(o[1]-o[0]<1)return 0;var s=1;a>40&&(s=Math.max(1,Math.floor(a/40)));for(var l=o[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(i)),c=Math.abs(u*Math.sin(i)),p=0,d=0;l<=o[1];l+=s){var f,g,y=bi(n({value:l}),e.font,"center","top");f=1.3*y.width,g=1.3*y.height,p=Math.max(p,f,7),d=Math.max(d,g,7)}var v=p/h,m=d/c;isNaN(v)&&(v=1/0),isNaN(m)&&(m=1/0);var _=Math.max(0,Math.floor(Math.min(v,m))),x=tb(t.model),b=t.getExtent(),w=x.lastAutoInterval,S=x.lastTickCount;return null!=w&&null!=S&&Math.abs(w-_)<=1&&Math.abs(S-a)<=1&&w>_&&x.axisExtent0===b[0]&&x.axisExtent1===b[1]?_=w:(x.lastTickCount=a,x.lastAutoInterval=_,x.axisExtent0=b[0],x.axisExtent1=b[1]),_}(this)},t}();function cb(t,e){var n=(t[1]-t[0])/e/2;t[0]+=n,t[1]-=n}function pb(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function db(t,e,n,i,r){for(var o=e.length,a=n.length,s=t.newPos,l=s-i,u=0;s+1=i&&l+1>=r){for(var u=[],h=0;h=i&&c+1>=r)return gb(l.components);s[a]=l}else s[a]=void 0}var f;o++}for(;o<=a;){var p=c();if(p)return p}}(t,e,n)}var vb="none",mb=Math.round,_b=Math.sin,xb=Math.cos,bb=Math.PI,wb=2*Math.PI,Sb=180/bb,Mb=1e-4;function Ib(t){return mb(1e3*t)/1e3}function Tb(t){return mb(1e4*t)/1e4}function Cb(t){return t-1e-4}function Db(t,e){e&&Ab(t,"transform","matrix("+Ib(e[0])+","+Ib(e[1])+","+Ib(e[2])+","+Ib(e[3])+","+Tb(e[4])+","+Tb(e[5])+")")}function Ab(t,e,n){(!n||"linear"!==n.type&&"radial"!==n.type)&&t.setAttribute(e,n)}function Lb(t,e,n){var i=null==e.opacity?1:e.opacity;if(n instanceof es)t.style.opacity=i+"";else{if(function(t){var e=t.fill;return null!=e&&e!==vb}(e)){var r=e.fill;Ab(t,"fill",r="transparent"===r?vb:r),Ab(t,"fill-opacity",(null!=e.fillOpacity?e.fillOpacity*i:i)+"")}else Ab(t,"fill",vb);if(function(t){var e=t.stroke;return null!=e&&e!==vb}(e)){var o=e.stroke;Ab(t,"stroke",o="transparent"===o?vb:o);var a=e.lineWidth,s=e.strokeNoScale?n.getLineScale():1;Ab(t,"stroke-width",(s?a/s:0)+""),Ab(t,"paint-order",e.strokeFirst?"stroke":"fill"),Ab(t,"stroke-opacity",(null!=e.strokeOpacity?e.strokeOpacity*i:i)+"");var l=e.lineDash&&a>0&&vy(e.lineDash,a);if(l){var u=e.lineDashOffset;s&&1!==s&&(l=O(l,(function(t){return t/s})),u&&(u=mb(u/=s))),Ab(t,"stroke-dasharray",l.join(",")),Ab(t,"stroke-dashoffset",(u||0)+"")}else Ab(t,"stroke-dasharray","");e.lineCap&&Ab(t,"stroke-linecap",e.lineCap),e.lineJoin&&Ab(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&Ab(t,"stroke-miterlimit",e.miterLimit+"")}else Ab(t,"stroke",vb)}}var kb=function(){function t(){}return t.prototype.reset=function(){this._d=[],this._str=""},t.prototype.moveTo=function(t,e){this._add("M",t,e)},t.prototype.lineTo=function(t,e){this._add("L",t,e)},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){this._add("C",t,e,n,i,r,o)},t.prototype.quadraticCurveTo=function(t,e,n,i){this._add("Q",t,e,n,i)},t.prototype.arc=function(t,e,n,i,r,o){this.ellipse(t,e,n,n,0,i,r,o)},t.prototype.ellipse=function(t,e,n,i,r,o,a,s){var l=0===this._d.length,u=a-o,h=!s,c=Math.abs(u),p=Cb(c-wb)||(h?u>=wb:-u>=wb),d=u>0?u%wb:u%wb+wb,f=!1;f=!!p||!Cb(c)&&d>=bb==!!h;var g=Tb(t+n*xb(o)),y=Tb(e+i*_b(o));p&&(u=h?wb-1e-4:1e-4-wb,f=!0,l&&this._d.push("M",g,y));var v=Tb(t+n*xb(o+u)),m=Tb(e+i*_b(o+u));if(isNaN(g)||isNaN(y)||isNaN(n)||isNaN(i)||isNaN(r)||isNaN(Sb)||isNaN(v)||isNaN(m))return"";this._d.push("A",Tb(n),Tb(i),mb(r*Sb),+f,+h,v,m)},t.prototype.rect=function(t,e,n,i){this._add("M",t,e),this._add("L",t+n,e),this._add("L",t+n,e+i),this._add("L",t,e+i),this._add("L",t,e)},t.prototype.closePath=function(){this._d.length>0&&this._add("Z")},t.prototype._add=function(t,e,n,i,r,o,a,s,l){this._d.push(t);for(var u=1;u=0;--n)if(e[n]===t)return!0;return!1}),i}return null}return n[0]},t.prototype.doUpdate=function(t,e){if(t){var n=this.getDefs(!1);if(t[this._domName]&&n.contains(t[this._domName]))"function"==typeof e&&e(t);else{var i=this.add(t);i&&(t[this._domName]=i)}}},t.prototype.add=function(t){return null},t.prototype.addDom=function(t){var e=this.getDefs(!0);t.parentNode!==e&&e.appendChild(t)},t.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},t.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return P(this._tagNames,(function(n){for(var i=t.getElementsByTagName(n),r=0;r-1){var s=He(a)[3],l=Xe(a);o.setAttribute("stop-color","#"+l),o.setAttribute("stop-opacity",s+"")}else o.setAttribute("stop-color",n[i].color);e.appendChild(o)}t.__dom=e},e.prototype.markUsed=function(e){if(e.style){var n=e.style.fill;n&&n.__dom&&t.prototype.markDomUsed.call(this,n.__dom),(n=e.style.stroke)&&n.__dom&&t.prototype.markDomUsed.call(this,n.__dom)}},e}(zb);function Gb(t){return t&&(!!t.image||!!t.svgElement)}var Hb=new oy,Wb=function(t){function e(e,n){return t.call(this,e,n,["pattern"],"__pattern_in_use__")||this}return n(e,t),e.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var n=this;P(["fill","stroke"],(function(i){var r=e.style[i];if(Gb(r)){var o=n.getDefs(!0),a=Hb.get(r);a?o.contains(a)||n.addDom(a):a=n.add(r),n.markUsed(e);var s=a.getAttribute("id");t.setAttribute(i,"url(#"+s+")")}}))}},e.prototype.add=function(t){if(Gb(t)){var e=this.createElement("pattern");return t.id=null==t.id?this.nextId++:t.id,e.setAttribute("id","zr"+this._zrId+"-pattern-"+t.id),e.setAttribute("x","0"),e.setAttribute("y","0"),e.setAttribute("patternUnits","userSpaceOnUse"),this.updateDom(t,e),this.addDom(e),e}},e.prototype.update=function(t){if(Gb(t)){var e=this;this.doUpdate(t,(function(){var n=Hb.get(t);e.updateDom(t,n)}))}},e.prototype.updateDom=function(t,e){var n=t.svgElement;if(n instanceof SVGElement)n.parentNode!==e&&(e.innerHTML="",e.appendChild(n),e.setAttribute("width",t.svgWidth+""),e.setAttribute("height",t.svgHeight+""));else{var i=void 0,r=e.getElementsByTagName("image");if(r.length){if(!t.image)return void e.removeChild(r[0]);i=r[0]}else t.image&&(i=this.createElement("image"));if(i){var o=void 0,a=t.image;if("string"==typeof a?o=a:a instanceof HTMLImageElement?o=a.src:a instanceof HTMLCanvasElement&&(o=a.toDataURL()),o){i.setAttribute("href",o),i.setAttribute("x","0"),i.setAttribute("y","0");var s=no(o,i,{dirty:function(){}},(function(t){e.setAttribute("width",t.width+""),e.setAttribute("height",t.height+"")}));s&&s.width&&s.height&&(e.setAttribute("width",s.width+""),e.setAttribute("height",s.height+"")),e.appendChild(i)}}}var l="translate("+(t.x||0)+", "+(t.y||0)+") rotate("+(t.rotation||0)/Math.PI*180+") scale("+(t.scaleX||1)+", "+(t.scaleY||1)+")";e.setAttribute("patternTransform",l),Hb.set(t,e)},e.prototype.markUsed=function(e){e.style&&(Gb(e.style.fill)&&t.prototype.markDomUsed.call(this,Hb.get(e.style.fill)),Gb(e.style.stroke)&&t.prototype.markDomUsed.call(this,Hb.get(e.style.stroke)))},e}(zb);function Ub(t){var e=t.__clipPaths;return e&&e.length>0}var Xb=function(t){function e(e,n){var i=t.call(this,e,n,"clipPath","__clippath_in_use__")||this;return i._refGroups={},i._keyDuplicateCount={},i}return n(e,t),e.prototype.markAllUnused=function(){for(var e in t.prototype.markAllUnused.call(this),this._refGroups)this.markDomUnused(this._refGroups[e]);this._keyDuplicateCount={}},e.prototype._getClipPathGroup=function(t,e){if(Ub(t)){var n=t.__clipPaths,i=this._keyDuplicateCount,r=function(t){var e=[];if(t)for(var n=0;n0){var n=this.getDefs(!0),i=e[0],r=void 0,o=void 0;i._dom?(o=i._dom.getAttribute("id"),r=i._dom,n.contains(r)||n.appendChild(r)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(r=this.createElement("clipPath")).setAttribute("id",o),n.appendChild(r),i._dom=r),this.getSvgProxy(i).brush(i);var a=this.getSvgElement(i);r.innerHTML="",r.appendChild(a),t.setAttribute("clip-path","url(#"+o+")"),e.length>1&&this.updateDom(r,e.slice(1))}else t&&t.setAttribute("clip-path","none")},e.prototype.markUsed=function(e){var n=this;e.__clipPaths&&P(e.__clipPaths,(function(e){e._dom&&t.prototype.markDomUsed.call(n,e._dom)}))},e.prototype.removeUnused=function(){t.prototype.removeUnused.call(this);var e={};for(var n in this._refGroups){var i=this._refGroups[n];this.isDomUnused(i)?i.parentNode&&i.parentNode.removeChild(i):e[n]=i}this._refGroups=e},e}(zb),Yb=function(t){function e(e,n){var i=t.call(this,e,n,["filter"],"__filter_in_use__","_shadowDom")||this;return i._shadowDomMap={},i._shadowDomPool=[],i}return n(e,t),e.prototype._getFromPool=function(){var t=this._shadowDomPool.pop();if(!t){(t=this.createElement("filter")).setAttribute("id","zr"+this._zrId+"-shadow-"+this.nextId++);var e=this.createElement("feDropShadow");t.appendChild(e),this.addDom(t)}return t},e.prototype.update=function(t,e){if(function(t){return t&&(t.shadowBlur||t.shadowOffsetX||t.shadowOffsetY)}(e.style)){var n=function(t){var e=t.style,n=t.getGlobalScale();return[e.shadowColor,(e.shadowBlur||0).toFixed(2),(e.shadowOffsetX||0).toFixed(2),(e.shadowOffsetY||0).toFixed(2),n[0],n[1]].join(",")}(e),i=e._shadowDom=this._shadowDomMap[n];i||(i=this._getFromPool(),this._shadowDomMap[n]=i),this.updateDom(t,e,i)}else this.remove(t,e)},e.prototype.remove=function(t,e){null!=e._shadowDom&&(e._shadowDom=null,t.style.filter="")},e.prototype.updateDom=function(t,e,n){var i=n.children[0],r=e.style,o=e.getGlobalScale(),a=o[0],s=o[1];if(a&&s){var l=r.shadowOffsetX||0,u=r.shadowOffsetY||0,h=r.shadowBlur,c=r.shadowColor;i.setAttribute("dx",l/a+""),i.setAttribute("dy",u/s+""),i.setAttribute("flood-color",c);var p=h/2/a+" "+h/2/s;i.setAttribute("stdDeviation",p),n.setAttribute("x","-100%"),n.setAttribute("y","-100%"),n.setAttribute("width","300%"),n.setAttribute("height","300%"),e._shadowDom=n;var d=n.getAttribute("id");t.style.filter="url(#"+d+")"}},e.prototype.removeUnused=function(){if(this.getDefs(!1)){var t=this._shadowDomPool;for(var e in this._shadowDomMap){var n=this._shadowDomMap[e];t.push(n)}this._shadowDomMap={}}},e}(zb);function Zb(t){return parseInt(t,10)}function jb(t){return t instanceof Ka?Pb:t instanceof es?Ob:t instanceof Ja?Nb:Pb}function qb(t,e){return e&&t&&e.parentNode!==t}function Kb(t,e,n){if(qb(t,e)&&n){var i=n.nextSibling;i?t.insertBefore(e,i):t.appendChild(e)}}function $b(t,e){if(qb(t,e)){var n=t.firstChild;n?t.insertBefore(e,n):t.appendChild(e)}}function Jb(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)}function Qb(t){return t.__svgEl}var tw=function(){function t(t,e,n,i){this.type="svg",this.refreshHover=ew("refreshHover"),this.pathToImage=ew("pathToImage"),this.configLayer=ew("configLayer"),this.root=t,this.storage=e,this._opts=n=I({},n||{});var r=pb("svg");r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns","http://www.w3.org/2000/svg"),r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),r.setAttribute("version","1.1"),r.setAttribute("baseProfile","full"),r.style.cssText="user-select:none;position:absolute;left:0;top:0;";var o=pb("g");r.appendChild(o);var a=pb("g");r.appendChild(a),this._gradientManager=new Fb(i,a),this._patternManager=new Wb(i,a),this._clipPathManager=new Xb(i,a),this._shadowManager=new Yb(i,a);var s=document.createElement("div");s.style.cssText="overflow:hidden;position:relative",this._svgDom=r,this._svgRoot=a,this._backgroundRoot=o,this._viewport=s,t.appendChild(s),s.appendChild(r),this.resize(n.width,n.height),this._visibleList=[]}return t.prototype.getType=function(){return"svg"},t.prototype.getViewportRoot=function(){return this._viewport},t.prototype.getSvgDom=function(){return this._svgDom},t.prototype.getSvgRoot=function(){return this._svgRoot},t.prototype.getViewportRootOffset=function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},t.prototype.refresh=function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},t.prototype.setBackgroundColor=function(t){this._backgroundRoot&&this._backgroundNode&&this._backgroundRoot.removeChild(this._backgroundNode);var e=pb("rect");e.setAttribute("width",this.getWidth()),e.setAttribute("height",this.getHeight()),e.setAttribute("x",0),e.setAttribute("y",0),e.setAttribute("id",0),e.style.fill=t,this._backgroundRoot.appendChild(e),this._backgroundNode=e},t.prototype.createSVGElement=function(t){return pb(t)},t.prototype.paintOne=function(t){var e=jb(t);return e&&e.brush(t),Qb(t)},t.prototype._paintList=function(t){var e=this._gradientManager,n=this._patternManager,i=this._clipPathManager,r=this._shadowManager;e.markAllUnused(),n.markAllUnused(),i.markAllUnused(),r.markAllUnused();for(var o=this._svgRoot,a=this._visibleList,s=t.length,l=[],u=0;u\n\r<"))},t}();function ew(t){return function(){b('In SVG mode painter not support method "'+t+'"')}}function nw(){return!1}function iw(t,e,n){var i=C(),r=e.getWidth(),o=e.getHeight(),a=i.style;return a&&(a.position="absolute",a.left="0",a.top="0",a.width=r+"px",a.height=o+"px",i.setAttribute("data-zr-dom-id",t)),i.width=r*n,i.height=o*n,i}var rw=function(t){function e(e,n,i){var r,o=t.call(this)||this;o.motionBlur=!1,o.lastFrameAlpha=.7,o.dpr=1,o.virtual=!1,o.config={},o.incremental=!1,o.zlevel=0,o.maxRepaintRectCount=5,o.__dirty=!0,o.__firstTimePaint=!0,o.__used=!1,o.__drawIndex=0,o.__startIndex=0,o.__endIndex=0,o.__prevStartIndex=null,o.__prevEndIndex=null,i=i||En,"string"==typeof e?r=iw(e,n,i):X(e)&&(e=(r=e).id),o.id=e,o.dom=r;var a=r.style;return a&&(r.onselectstart=nw,a.webkitUserSelect="none",a.userSelect="none",a.webkitTapHighlightColor="rgba(0,0,0,0)",a["-webkit-touch-callout"]="none",a.padding="0",a.margin="0",a.borderWidth="0"),o.domBack=null,o.ctxBack=null,o.painter=n,o.config=null,o.dpr=i,o}return n(e,t),e.prototype.getElementCount=function(){return this.__endIndex-this.__startIndex},e.prototype.afterBrush=function(){this.__prevStartIndex=this.__startIndex,this.__prevEndIndex=this.__endIndex},e.prototype.initContext=function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},e.prototype.setUnpainted=function(){this.__firstTimePaint=!0},e.prototype.createBackBuffer=function(){var t=this.dpr;this.domBack=iw("back-"+this.id,this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!==t&&this.ctxBack.scale(t,t)},e.prototype.createRepaintRects=function(t,e,n,i){if(this.__firstTimePaint)return this.__firstTimePaint=!1,null;var r,o=[],a=this.maxRepaintRectCount,s=!1,l=new gi(0,0,0,0);function u(t){if(t.isFinite()&&!t.isZero())if(0===o.length){(e=new gi(0,0,0,0)).copy(t),o.push(e)}else{for(var e,n=!1,i=1/0,r=0,u=0;u=a)}}for(var h=this.__startIndex;h15)break}n.prevElClipPaths&&u.restore()};if(p)if(0===p.length)s=l.__endIndex;else for(var x=d.dpr,b=0;b0&&t>i[0]){for(s=0;st);s++);a=n[i[s]]}if(i.splice(s+1,0,t),n[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?o.insertBefore(e.dom,l.nextSibling):o.appendChild(e.dom)}else o.firstChild?o.insertBefore(e.dom,o.firstChild):o.appendChild(e.dom);e.__painter=this}else b("Layer of zlevel "+t+" is not valid")},t.prototype.eachLayer=function(t,e){for(var n=this._zlevelList,i=0;i0?sw:0),this._needsManuallyCompositing),u.__builtin__||b("ZLevel "+l+" has been used by unkown layer "+u.id),u!==o&&(u.__used=!0,u.__startIndex!==r&&(u.__dirty=!0),u.__startIndex=r,u.incremental?u.__drawIndex=-1:u.__drawIndex=r,e(r),o=u),1&s.__dirty&&!s.__inHover&&(u.__dirty=!0,u.incremental&&u.__drawIndex<0&&(u.__drawIndex=r))}e(r),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)}))},t.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},t.prototype._clearLayer=function(t){t.clear()},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t,P(this._layers,(function(t){t.setUnpainted()}))},t.prototype.configLayer=function(t,e){if(e){var n=this._layerConfig;n[t]?S(n[t],e,!0):n[t]=e;for(var i=0;i-1&&(s.style.stroke=s.style.fill,s.style.fill="#fff",s.style.lineWidth=2),e},e.type="series.line",e.dependencies=["grid","polar"],e.defaultOption={zlevel:0,z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0,lineStyle:{width:"bolder"}},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},e}(ff);function cw(t,e){var n=t.mapDimensionsAll("defaultedLabel"),i=n.length;if(1===i){var r=Md(t,e,n[0]);return null!=r?r+"":null}if(i){for(var o=[],a=0;a0?n=i[0]:i[1]<0&&(n=i[1]);return n}(r,n),a=i.dim,s=r.dim,l=e.mapDimension(s),u=e.mapDimension(a),h="x"===s||"radius"===s?1:0,c=O(t.dimensions,(function(t){return e.mapDimension(t)})),p=!1,d=e.getCalculationInfo("stackResultDimension");return V_(e,c[0])&&(p=!0,c[0]=d),V_(e,c[1])&&(p=!0,c[1]=d),{dataDimsForPoint:c,valueStart:o,valueAxisDim:s,baseAxisDim:a,stacked:!!p,valueDim:l,baseDim:u,baseDataOffset:h,stackedOverDimension:e.getCalculationInfo("stackedOverDimension")}}function xw(t,e,n,i){var r=NaN;t.stacked&&(r=n.get(n.getCalculationInfo("stackedOverDimension"),i)),isNaN(r)&&(r=t.valueStart);var o=t.baseDataOffset,a=[];return a[o]=n.get(t.baseDim,i),a[1-o]=r,e.dataToPoint(a)}var bw="undefined"!=typeof Float32Array,ww=bw?Float32Array:Array;function Sw(t){return F(t)?bw?new Float32Array(t):t:new ww(t)}var Mw=Math.min,Iw=Math.max;function Tw(t,e){return isNaN(t)||isNaN(e)}function Cw(t,e,n,i,r,o,a,s,l){for(var u,h,c,p,d,f,g=n,y=0;y=r||g<0)break;if(Tw(v,m)){if(l){g+=o;continue}break}if(g===n)t[o>0?"moveTo":"lineTo"](v,m),c=v,p=m;else{var _=v-u,x=m-h;if(_*_+x*x<.5){g+=o;continue}if(a>0){var b=g+o,w=e[2*b],S=e[2*b+1],M=y+1;if(l)for(;Tw(w,S)&&M=i||Tw(w,S))d=v,f=m;else{T=w-u,C=S-h;var L=v-u,k=w-v,P=m-h,O=S-m,R=void 0,N=void 0;"x"===s?(R=Math.abs(L),N=Math.abs(k),d=v-R*a,f=m,D=v+R*a,A=m):"y"===s?(R=Math.abs(P),N=Math.abs(O),d=v,f=m-R*a,D=v,A=m+R*a):(R=Math.sqrt(L*L+P*P),d=v-T*a*(1-(I=(N=Math.sqrt(k*k+O*O))/(N+R))),f=m-C*a*(1-I),A=m+C*a*I,D=Mw(D=v+T*a*I,Iw(w,v)),A=Mw(A,Iw(S,m)),D=Iw(D,Mw(w,v)),f=m-(C=(A=Iw(A,Mw(S,m)))-m)*R/N,d=Mw(d=v-(T=D-v)*R/N,Iw(u,v)),f=Mw(f,Iw(h,m)),D=v+(T=v-(d=Iw(d,Mw(u,v))))*N/R,A=m+(C=m-(f=Iw(f,Mw(h,m))))*N/R)}t.bezierCurveTo(c,p,d,f,v,m),c=D,p=A}else t.lineTo(v,m)}u=v,h=m,g+=o}return y}var Dw=function(){this.smooth=0,this.smoothConstraint=!0},Aw=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polyline",n}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new Dw},e.prototype.buildPath=function(t,e){var n=e.points,i=0,r=n.length/2;if(e.connectNulls){for(;r>0&&Tw(n[2*r-2],n[2*r-1]);r--);for(;i=0){var y=a?(h-i)*g+i:(u-n)*g+n;return a?[t,y]:[y,t]}n=u,i=h;break;case o.C:u=r[l++],h=r[l++],c=r[l++],p=r[l++],d=r[l++],f=r[l++];var v=a?Bo(n,u,c,d,t,s):Bo(i,h,p,f,t,s);if(v>0)for(var m=0;m=0){y=a?Eo(i,h,p,f,_):Eo(n,u,c,d,_);return a?[t,y]:[y,t]}}n=d,i=f}}},e}(Ka),Lw=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(Dw),kw=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polygon",n}return n(e,t),e.prototype.getDefaultShape=function(){return new Lw},e.prototype.buildPath=function(t,e){var n=e.points,i=e.stackedOnPoints,r=0,o=n.length/2,a=e.smoothMonotone;if(e.connectNulls){for(;o>0&&Tw(n[2*o-2],n[2*o-1]);o--);for(;ri)return!1;return!0}(o,e))){var a=e.mapDimension(o.dim),s={};return P(o.getViewLabels(),(function(t){var e=o.scale.getRawOrdinalNumber(t.tickValue);s[e]=1})),function(t){return!s.hasOwnProperty(e.get(a,t))}}}}function Hw(t,e){return[t[2*e],t[2*e+1]]}function Ww(t,e,n,i){if(Nw(e,"cartesian2d")){var r=i.getModel("endLabel"),o=r.get("show"),a=r.get("valueAnimation"),s=i.getData(),l={lastFrameIndex:0},u=o?function(n,i){t._endLabelOnDuring(n,i,s,l,a,r,e)}:null,h=e.getBaseAxis().isHorizontal(),c=Pw(e,n,i,(function(){var e=t._endLabel;e&&n&&null!=l.originalX&&e.attr({x:l.originalX,y:l.originalY})}),u);if(!i.get("clip",!0)){var p=c.shape,d=Math.max(p.width,p.height);h?(p.y-=d,p.height+=2*d):(p.x-=d,p.width+=2*d)}return u&&u(1,c),c}return Ow(e,n,i)}var Uw=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(){var t=new Ei,e=new mw;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},e.prototype.render=function(t,e,n){var i=this,r=t.coordinateSystem,o=this.group,a=t.getData(),s=t.getModel("lineStyle"),l=t.getModel("areaStyle"),u=a.getLayout("points")||[],h="polar"===r.type,c=this._coordSys,p=this._symbolDraw,d=this._polyline,f=this._polygon,g=this._lineGroup,y=t.get("animation"),v=!l.isEmpty(),m=l.get("origin"),_=_w(r,a,m),x=v&&function(t,e,n){if(!n.valueDim)return[];for(var i=e.count(),r=Sw(2*i),o=0;o=0;o--){var a=n[o].dimension,s=t.dimensions[a],l=t.getDimensionInfo(s);if("x"===(i=l&&l.coordDim)||"y"===i){r=n[o];break}}if(r){var u=e.getAxis(i),h=O(r.stops,(function(t){return{offset:0,coord:u.toGlobalCoord(u.dataToCoord(t.value,!0)),color:t.color}})),c=h.length,p=r.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var d=h[0].coord-10,f=h[c-1].coord+10,g=f-d;if(g<.001)return"transparent";P(h,(function(t){t.offset=(t.coord-d)/g})),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 mu(0,0,0,0,h,!0);return y[i]=d,y[i+"2"]=f,y}}}(a,r)||a.getVisual("style")[a.getVisual("drawType")];d&&c.type===r.type&&I===this._step?(v&&!f?f=this._newPolygon(u,x):f&&!v&&(g.remove(f),f=this._polygon=null),h||this._initOrUpdateEndLabel(t,r,kc(C)),g.setClipPath(Ww(this,r,!1,t)),b&&p.updateData(a,{isIgnore:w,clipShape:M,disableAnimation:!0,getSymbolPoint:function(t){return[u[2*t],u[2*t+1]]}}),zw(this._stackedOnPoints,x)&&zw(this._points,u)||(y?this._doUpdateAnimation(a,x,r,n,I,m):(I&&(u=Fw(u,r,I),x&&(x=Fw(x,r,I))),d.setShape({points:u}),f&&f.setShape({points:u,stackedOnPoints:x})))):(b&&p.updateData(a,{isIgnore:w,clipShape:M,disableAnimation:!0,getSymbolPoint:function(t){return[u[2*t],u[2*t+1]]}}),y&&this._initSymbolLabelAnimation(a,r,M),I&&(u=Fw(u,r,I),x&&(x=Fw(x,r,I))),d=this._newPolyline(u),v&&(f=this._newPolygon(u,x)),h||this._initOrUpdateEndLabel(t,r,kc(C)),g.setClipPath(Ww(this,r,!0,t)));var D=t.get(["emphasis","focus"]),A=t.get(["emphasis","blurScope"]);(d.useStyle(T(s.getLineStyle(),{fill:"none",stroke:C,lineJoin:"bevel"})),cl(d,t,"lineStyle"),d.style.lineWidth>0&&"bolder"===t.get(["emphasis","lineStyle","width"]))&&(d.getState("emphasis").style.lineWidth=+d.style.lineWidth+1);_s(d).seriesIndex=t.seriesIndex,sl(d,D,A);var L=Bw(t.get("smooth")),k=t.get("smoothMonotone"),R=t.get("connectNulls");if(d.setShape({smooth:L,smoothMonotone:k,connectNulls:R}),f){var N=a.getCalculationInfo("stackedOnSeries"),z=0;f.useStyle(T(l.getAreaStyle(),{fill:C,opacity:.7,lineJoin:"bevel",decal:a.getVisual("style").decal})),N&&(z=Bw(N.get("smooth"))),f.setShape({smooth:L,stackedOnSmooth:z,smoothMonotone:k,connectNulls:R}),cl(f,t,"areaStyle"),_s(f).seriesIndex=t.seriesIndex,sl(f,D,A)}var E=function(t){i._changePolyState(t)};a.eachItemGraphicEl((function(t){t&&(t.onHoverStateChange=E)})),this._polyline.onHoverStateChange=E,this._data=a,this._coordSys=r,this._stackedOnPoints=x,this._points=u,this._step=I,this._valueOrigin=m},e.prototype.dispose=function(){},e.prototype.highlight=function(t,e,n,i){var r=t.getData(),o=Lr(r,i);if(this._changePolyState("emphasis"),!(o instanceof Array)&&null!=o&&o>=0){var a=r.getLayout("points"),s=r.getItemGraphicEl(o);if(!s){var l=a[2*o],u=a[2*o+1];if(isNaN(l)||isNaN(u))return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(l,u))return;var h=t.get("zlevel"),c=t.get("z");(s=new dw(r,o)).x=l,s.y=u,s.setZ(h,c);var p=s.getSymbolPath().getTextContent();p&&(p.zlevel=h,p.z=c,p.z2=this._polyline.z2+1),s.__temp=!0,r.setItemGraphicEl(o,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else Tf.prototype.highlight.call(this,t,e,n,i)},e.prototype.downplay=function(t,e,n,i){var r=t.getData(),o=Lr(r,i);if(this._changePolyState("normal"),null!=o&&o>=0){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else Tf.prototype.downplay.call(this,t,e,n,i)},e.prototype._changePolyState=function(t){var e=this._polygon;Ws(this._polyline,t),e&&Ws(e,t)},e.prototype._newPolyline=function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new Aw({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(e),this._polyline=e,e},e.prototype._newPolygon=function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new kw({shape:{points:t,stackedOnPoints:e},segmentIgnoreThreshold:2}),this._lineGroup.add(n),this._polygon=n,n},e.prototype._initSymbolLabelAnimation=function(t,e,n){var i,r,o=e.getBaseAxis(),a=o.inverse;"cartesian2d"===e.type?(i=o.isHorizontal(),r=!1):"polar"===e.type&&(i="angle"===o.dim,r=!0);var s=t.hostModel,l=s.get("animationDuration");"function"==typeof l&&(l=l(null));var u=s.get("animationDelay")||0,h="function"==typeof u?u(null):u;t.eachItemGraphicEl((function(t,o){var s=t;if(s){var c=[t.x,t.y],p=void 0,d=void 0,f=void 0;if(n)if(r){var g=n,y=e.pointToCoord(c);i?(p=g.startAngle,d=g.endAngle,f=-y[1]/180*Math.PI):(p=g.r0,d=g.r,f=y[0])}else{var v=n;i?(p=v.x,d=v.x+v.width,f=t.x):(p=v.y+v.height,d=v.y,f=t.y)}var m=d===p?0:(f-p)/(d-p);a&&(m=1-m);var _="function"==typeof u?u(o):l*m+h,x=s.getSymbolPath(),b=x.getTextContent();s.attr({scaleX:0,scaleY:0}),s.animateTo({scaleX:1,scaleY:1},{duration:200,delay:_}),b&&b.animateFrom({style:{opacity:0}},{duration:300,delay:_}),x.disableLabelAnimation=!0}}))},e.prototype._initOrUpdateEndLabel=function(t,e,n){var i=t.getModel("endLabel");if(i.get("show")){var r=t.getData(),o=this._polyline,a=this._endLabel;a||((a=this._endLabel=new cs({z2:200})).ignoreClip=!0,o.setTextContent(this._endLabel),o.disableLabelAnimation=!0);var s=function(t){for(var e,n,i=t.length/2;i>0&&(e=t[2*i-2],n=t[2*i-1],isNaN(e)||isNaN(n));i--);return i-1}(r.getLayout("points"));s>=0&&(hh(o,ch(t,"endLabel"),{inheritColor:n,labelFetcher:t,labelDataIndex:s,defaultText:function(t,e,n){return null!=n?pw(r,n):cw(r,t)},enableTextSetter:!0},function(t,e){var n=e.getBaseAxis(),i=n.isHorizontal(),r=n.inverse,o=i?r?"right":"left":"center",a=i?"middle":r?"top":"bottom";return{normal:{align:t.get("align")||o,verticalAlign:t.get("verticalAlign")||a}}}(i,e)),o.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},e.prototype._endLabelOnDuring=function(t,e,n,i,r,o,a){var s=this._endLabel,l=this._polyline;if(s){t<1&&null==i.originalX&&(i.originalX=s.x,i.originalY=s.y);var u=n.getLayout("points"),h=n.hostModel,c=h.get("connectNulls"),p=o.get("precision"),d=o.get("distance")||0,f=a.getBaseAxis(),g=f.isHorizontal(),y=f.inverse,v=e.shape,m=y?g?v.x:v.y+v.height:g?v.x+v.width:v.y,_=(g?d:0)*(y?-1:1),x=(g?0:-d)*(y?-1:1),b=g?"x":"y",w=function(t,e,n){for(var i,r,o=t.length/2,a="x"===n?0:1,s=0,l=-1,u=0;u=e||i>=e&&r<=e){l=u;break}s=u,i=r}else i=r;return{range:[s,l],t:(e-i)/(r-i)}}(u,m,b),S=w.range,M=S[1]-S[0],I=void 0;if(M>=1){if(M>1&&!c){var T=Hw(u,S[0]);s.attr({x:T[0]+_,y:T[1]+x}),r&&(I=h.getRawValue(S[0]))}else{(T=l.getPointOn(m,b))&&s.attr({x:T[0]+_,y:T[1]+x});var C=h.getRawValue(S[0]),D=h.getRawValue(S[1]);r&&(I=Fr(n,p,C,D,w.t))}i.lastFrameIndex=S[0]}else{var A=1===t||i.lastFrameIndex>0?S[0]:0;T=Hw(u,A);r&&(I=h.getRawValue(A)),s.attr({x:T[0]+_,y:T[1]+x})}r&&_h(s).setLabelText(I)}},e.prototype._doUpdateAnimation=function(t,e,n,i,r,o){var a=this._polyline,s=this._polygon,l=t.hostModel,u=function(t,e,n,i,r,o,a,s){for(var l=function(t,e){var n=[];return e.diff(t).add((function(t){n.push({cmd:"+",idx:t})})).update((function(t,e){n.push({cmd:"=",idx:e,idx1:t})})).remove((function(t){n.push({cmd:"-",idx:t})})).execute(),n}(t,e),u=[],h=[],c=[],p=[],d=[],f=[],g=[],y=_w(r,e,a),v=t.getLayout("points")||[],m=e.getLayout("points")||[],_=0;_3e3||s&&Vw(c,d)>3e3)return a.setShape({points:p}),void(s&&s.setShape({points:p,stackedOnPoints:d}));a.shape.__points=u.current,a.shape.points=h;var f={shape:{points:p}};u.current!==h&&(f.shape.__points=u.next),a.stopAnimation(),Hu(a,f,l),s&&(s.setShape({points:h,stackedOnPoints:c}),s.stopAnimation(),Hu(s,{shape:{stackedOnPoints:d}},l),a.shape.points!==s.shape.points&&(s.shape.points=a.shape.points));for(var g=[],y=u.status,v=0;ve&&(e=t[n]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,n=0;n10&&"cartesian2d"===o.type&&r){var s=o.getBaseAxis(),l=o.getOtherAxis(s),u=s.getExtent(),h=n.getDevicePixelRatio(),c=Math.abs(u[1]-u[0])*(h||1),p=Math.round(a/c);if(p>1){"lttb"===r&&t.setData(i.lttbDownSample(i.mapDimension(l.dim),1/p));var d=void 0;"string"==typeof r?d=Yw[r]:"function"==typeof r&&(d=r),d&&t.setData(i.downSample(i.mapDimension(l.dim),1/p,d,Zw))}}}}}var qw=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(t,e){return F_(this.getSource(),this,{useEncodeDefaulter:!0})},e.prototype.getMarkerPosition=function(t){var e=this.coordinateSystem;if(e){var n=e.dataToPoint(e.clampData(t)),i=this.getData(),r=i.getLayout("offset"),o=i.getLayout("size");return n[e.getBaseAxis().isHorizontal()?0:1]+=r+o/2,n}return[NaN,NaN]},e.type="series.__base_bar__",e.defaultOption={zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},e}(ff);ff.registerClass(qw);var Kw=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(){return F_(this.getSource(),this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},e.prototype.getProgressive=function(){return!!this.get("large")&&this.get("progressive")},e.prototype.getProgressiveThreshold=function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t},e.prototype.brushSelector=function(t,e,n){return n.rect(e.getItemLayout(t))},e.type="series.bar",e.dependencies=["grid","polar"],e.defaultOption=zh(qw.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),e}(qw),$w=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},Jw=function(t){function e(e){var n=t.call(this,e)||this;return n.type="sausage",n}return n(e,t),e.prototype.getDefaultShape=function(){return new $w},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=.5*(o-r),s=r+a,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=Math.cos(l),p=Math.sin(l),d=Math.cos(u),f=Math.sin(u);(h?u-l<2*Math.PI:l-u<2*Math.PI)&&(t.moveTo(c*r+n,p*r+i),t.arc(c*s+n,p*s+i,a,-Math.PI+l,l,!h)),t.arc(n,i,o,l,u,!h),t.moveTo(d*o+n,f*o+i),t.arc(d*s+n,f*s+i,a,u-2*Math.PI,u-Math.PI,!h),0!==r&&(t.arc(n,i,r,u,l,h),t.moveTo(c*r+n,f*r+i)),t.closePath()},e}(Ka),Qw=[0,0],tS=Math.max,eS=Math.min;var nS=function(t){function e(){var n=t.call(this)||this;return n.type=e.type,n._isFirstFrame=!0,n}return n(e,t),e.prototype.render=function(t,e,n,i){this._model=t,this._removeOnRenderedListener(n),this._updateDrawMode(t);var r=t.get("coordinateSystem");("cartesian2d"===r||"polar"===r)&&(this._isLargeDraw?this._renderLarge(t,e,n):this._renderNormal(t,e,n,i))},e.prototype.incrementalPrepareRender=function(t){this._clear(),this._updateDrawMode(t),this._updateLargeClip(t)},e.prototype.incrementalRender=function(t,e){this._incrementalRenderLarge(t,e)},e.prototype._updateDrawMode=function(t){var e=t.pipelineContext.large;null!=this._isLargeDraw&&e===this._isLargeDraw||(this._isLargeDraw=e,this._clear())},e.prototype._renderNormal=function(t,e,n,i){var r,o=this.group,a=t.getData(),s=this._data,l=t.coordinateSystem,u=l.getBaseAxis();"cartesian2d"===l.type?r=u.isHorizontal():"polar"===l.type&&(r="angle"===u.dim);var h=t.isAnimationEnabled()?t:null,c=function(t,e){var n=t.get("realtimeSort",!0),i=e.getBaseAxis();0;if(n&&"category"===i.type&&"cartesian2d"===e.type)return{baseAxis:i,otherAxis:e.getOtherAxis(i)}}(t,l);c&&this._enableRealtimeSort(c,a,n);var p=t.get("clip",!0)||c,d=function(t,e){var n=t.getArea&&t.getArea();if(Nw(t,"cartesian2d")){var i=t.getBaseAxis();if("category"!==i.type||!i.onBand){var r=e.getLayout("bandWidth");i.isHorizontal()?(n.x-=r,n.width+=2*r):(n.y-=r,n.height+=2*r)}}return n}(l,a);o.removeClipPath();var f=t.get("roundCap",!0),g=t.get("showBackground",!0),y=t.getModel("backgroundStyle"),v=y.get("borderRadius")||0,m=[],_=this._backgroundEls,x=i&&i.isInitSort,b=i&&"changeAxisOrder"===i.type;function w(t){var e=aS[l.type](a,t),n=function(t,e,n){return new("polar"===t.type?Jl:ls)({shape:pS(e,n,t),silent:!0,z2:0})}(l,r,e);return n.useStyle(y.getItemStyle()),"cartesian2d"===l.type&&n.setShape("r",v),m[t]=n,n}a.diff(s).add((function(e){var n=a.getItemModel(e),i=aS[l.type](a,e,n);if(g&&w(e),a.hasValue(e)){var s=!1;p&&(s=iS[l.type](d,i));var y=rS[l.type](t,a,e,i,r,h,u.model,!1,f);sS(y,a,e,n,i,t,r,"polar"===l.type),x?y.attr({shape:i}):c?oS(c,h,y,i,e,r,!1,!1):Wu(y,{shape:i},t,e),a.setItemGraphicEl(e,y),o.add(y),y.ignore=s}})).update((function(e,n){var i=a.getItemModel(e),S=aS[l.type](a,e,i);if(g){var M=void 0;0===_.length?M=w(n):((M=_[n]).useStyle(y.getItemStyle()),"cartesian2d"===l.type&&M.setShape("r",v),m[e]=M);var I=aS[l.type](a,e);Hu(M,{shape:pS(r,I,l)},h,e)}var T=s.getItemGraphicEl(n);if(!a.hasValue(e))return o.remove(T),void(T=null);var C=!1;p&&(C=iS[l.type](d,S))&&o.remove(T),T||(T=rS[l.type](t,a,e,S,r,h,u.model,!!T,f)),b||sS(T,a,e,i,S,t,r,"polar"===l.type),x?T.attr({shape:S}):c?oS(c,h,T,S,e,r,!0,b):Hu(T,{shape:S},t,e,null),a.setItemGraphicEl(e,T),T.ignore=C,o.add(T)})).remove((function(e){var n=s.getItemGraphicEl(e);n&&Yu(n,t,e)})).execute();var S=this._backgroundGroup||(this._backgroundGroup=new Ei);S.removeAll();for(var M=0;Mo)return!0;o=u}return!1},e.prototype._isOrderDifferentInView=function(t,e){for(var n=e.scale,i=n.getExtent(),r=Math.max(0,i[0]),o=Math.min(i[1],n.getOrdinalMeta().categories.length-1);r<=o;++r)if(t.ordinalNumbers[r]!==n.getRawOrdinalNumber(r))return!0},e.prototype._updateSortWithinSameData=function(t,e,n,i){if(this._isOrderChangedWithinSameData(t,e,n)){var r=this._dataSort(t,n,e);this._isOrderDifferentInView(r,n)&&(this._removeOnRenderedListener(i),i.dispatchAction({type:"changeAxisOrder",componentType:n.dim+"Axis",axisId:n.index,sortInfo:r}))}},e.prototype._dispatchInitSort=function(t,e,n){var i=e.baseAxis,r=this._dataSort(t,i,(function(n){return t.get(t.mapDimension(e.otherAxis.dim),n)}));n.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",isInitSort:!0,axisId:i.index,sortInfo:r,animation:{duration:0}})},e.prototype.remove=function(t,e){this._clear(this._model),this._removeOnRenderedListener(e)},e.prototype.dispose=function(t,e){this._removeOnRenderedListener(e)},e.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},e.prototype._clear=function(t){var e=this.group,n=this._data;t&&t.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl((function(e){Yu(e,t,_s(e).dataIndex)}))):e.removeAll(),this._data=null,this._isFirstFrame=!0},e.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},e.type="bar",e}(Tf),iS={cartesian2d:function(t,e){var n=e.width<0?-1:1,i=e.height<0?-1:1;n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height);var r=t.x+t.width,o=t.y+t.height,a=tS(e.x,t.x),s=eS(e.x+e.width,r),l=tS(e.y,t.y),u=eS(e.y+e.height,o),h=sr?s:a,e.y=c&&l>o?u:l,e.width=h?0:s-a,e.height=c?0:u-l,n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height),h||c},polar:function(t,e){var n=e.r0<=e.r?1:-1;if(n<0){var i=e.r;e.r=e.r0,e.r0=i}var r=eS(e.r,t.r),o=tS(e.r0,t.r0);e.r=r,e.r0=o;var a=r-o<0;if(n<0){i=e.r;e.r=e.r0,e.r0=i}return a}},rS={cartesian2d:function(t,e,n,i,r,o,a,s,l){var u=new ls({shape:I({},i),z2:1});(u.__dataIndex=n,u.name="item",o)&&(u.shape[r?"height":"width"]=0);return u},polar:function(t,e,n,i,r,o,a,s,l){var u=i.startAngle0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(t,e,n){var i=t.getItemLayout(e);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle}}};function sS(t,e,n,i,r,o,a,s){var l=e.getItemVisual(n,"style");s||t.setShape("r",i.get(["itemStyle","borderRadius"])||0),t.useStyle(l);var u=i.getShallow("cursor");if(u&&t.attr("cursor",u),!s){var h=a?r.height>0?"bottom":"top":r.width>0?"left":"right",c=ch(i);hh(t,c,{labelFetcher:o,labelDataIndex:n,defaultText:cw(o.getData(),n),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:h}),xh(t.getTextContent(),c,o.getRawValue(n),(function(t){return pw(e,t)}))}var p=i.getModel(["emphasis"]);sl(t,p.get("focus"),p.get("blurScope")),cl(t,i),function(t){return null!=t.startAngle&&null!=t.endAngle&&t.startAngle===t.endAngle}(r)&&(t.style.fill="none",t.style.stroke="none",P(t.states,(function(t){t.style&&(t.style.fill=t.style.stroke="none")})))}var lS=function(){},uS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="largeBar",n}return n(e,t),e.prototype.getDefaultShape=function(){return new lS},e.prototype.buildPath=function(t,e){for(var n=e.points,i=this.__startPoint,r=this.__baseDimIdx,o=0;o=c&&y<=p&&(l<=v?h>=l&&h<=v:h>=v&&h<=l))return a[d]}return-1}(this,t.offsetX,t.offsetY);_s(this).dataIndex=e>=0?e:null}),30,!1);function pS(t,e,n){if(Nw(n,"cartesian2d")){var i=e,r=n.getArea();return{x:t?i.x:r.x,y:t?r.y:i.y,width:t?i.width:r.width,height:t?r.height:i.height}}var o=e;return{cx:(r=n.getArea()).cx,cy:r.cy,r0:t?r.r0:o.r0,r:t?r.r:o.r,startAngle:t?o.startAngle:0,endAngle:t?o.endAngle:2*Math.PI}}var dS=2*Math.PI,fS=Math.PI/180;function gS(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.getData(),i=e.mapDimension("value"),r=function(t,e){return Vc(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,n),o=t.get("center"),a=t.get("radius");F(a)||(a=[0,a]),F(o)||(o=[o,o]);var s=Zi(r.width,n.getWidth()),l=Zi(r.height,n.getHeight()),u=Math.min(s,l),h=Zi(o[0],s)+r.x,c=Zi(o[1],l)+r.y,p=Zi(a[0],u/2),d=Zi(a[1],u/2),f=-t.get("startAngle")*fS,g=t.get("minAngle")*fS,y=0;e.each(i,(function(t){!isNaN(t)&&y++}));var v=e.getSum(i),m=Math.PI/(v||y)*2,_=t.get("clockwise"),x=t.get("roseType"),b=t.get("stillShowZeroSum"),w=e.getDataExtent(i);w[0]=0;var S=dS,M=0,I=f,T=_?1:-1;if(e.setLayout({viewRect:r,r:d}),e.each(i,(function(t,n){var i;if(isNaN(t))e.setItemLayout(n,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:_,cx:h,cy:c,r0:p,r:x?NaN:d});else{(i="area"!==x?0===v&&b?m:t*m:dS/y)n?a:o,h=Math.abs(l.label.y-n);if(h>u.maxY){var c=l.label.x-e-l.len2*r,p=i+l.len,f=Math.abs(c)0?"right":"left":L>0?"left":"right"}var F=y.get("rotate");if(O="number"==typeof F?F*(Math.PI/180):F?L<0?-A+Math.PI:-A:0,o=!!O,p.x=I,p.y=T,p.rotation=O,p.setStyle({verticalAlign:"middle"}),R){p.setStyle({align:D});var G=p.states.select;G&&(G.x+=p.x,G.y+=p.y)}else{var H=p.getBoundingRect().clone();H.applyTransform(p.getComputedTransform());var W=(p.style.margin||0)+2.1;H.y-=W/2,H.height+=W,r.push({label:p,labelLine:f,position:v,len:S,len2:M,minTurnAngle:w.get("minTurnAngle"),maxSurfaceAngle:w.get("maxSurfaceAngle"),surfaceNormal:new ai(L,k),linePoints:C,textAlign:D,labelDistance:m,labelAlignTo:_,edgeDistance:x,bleedMargin:b,rect:H})}s.setTextConfig({inside:R})}})),!o&&t.get("avoidLabelOverlap")&&function(t,e,n,i,r,o,a,s){for(var l=[],u=[],h=Number.MAX_VALUE,c=-Number.MAX_VALUE,p=0;p0){for(var l=o.getItemLayout(0),u=1;isNaN(l&&l.startAngle)&&u=n.r0}},e.type="pie",e}(Tf);function MS(t,e,n){e=F(e)&&{coordDimensions:e}||I({},e);var i=t.getSource(),r=O_(i,e),o=new L_(r,t);return o.initData(i,n),o}var IS=function(){function t(t,e){this._getDataWithEncodedVisual=t,this._getRawData=e}return t.prototype.getAllNames=function(){var t=this._getRawData();return t.mapArray(t.getName)},t.prototype.containName=function(t){return this._getRawData().indexOfName(t)>=0},t.prototype.indexOfName=function(t){return this._getDataWithEncodedVisual().indexOfName(t)},t.prototype.getItemVisual=function(t,e){return this._getDataWithEncodedVisual().getItemVisual(t,e)},t}(),TS=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.useColorPaletteOnData=!0,e}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new IS(V(this.getData,this),V(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.mergeOption=function(){t.prototype.mergeOption.apply(this,arguments)},e.prototype.getInitialData=function(){return MS(this,{coordDimensions:["value"],encodeDefaulter:B(up,this)})},e.prototype.getDataParams=function(e){var n=this.getData(),i=t.prototype.getDataParams.call(this,e),r=[];return n.each(n.mapDimension("value"),(function(t){r.push(t)})),i.percent=Qi(r,e,n.hostModel.get("percentPrecision")),i.$vars.push("percent"),i},e.prototype._defaultLabelLine=function(t){br(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.type="series.pie",e.defaultOption={zlevel:0,z:2,legendHoverLink:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},e}(ff);var CS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){return F_(this.getSource(),this,{useEncodeDefaulter:!0})},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},e.prototype.brushSelector=function(t,e,n){return n.point(e.getItemLayout(t))},e.type="series.scatter",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}}},e}(ff),DS=function(){},AS=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new DS},e.prototype.buildPath=function(t,e){var n=e.points,i=e.size,r=this.symbolProxy,o=r.shape,a=t.getContext?t.getContext():t;if(a&&i[0]<4)this._ctx=a;else{this._ctx=null;for(var s=0;s=0;s--){var l=2*s,u=i[l]-o/2,h=i[l+1]-a/2;if(t>=u&&e>=h&&t<=u+o&&e<=h+a)return s}return-1},e}(Ka),LS=function(){function t(){this.group=new Ei}return t.prototype.isPersistent=function(){return!this._incremental},t.prototype.updateData=function(t,e){this.group.removeAll();var n=new AS({rectHover:!0,cursor:"default"});n.setShape({points:t.getLayout("points")}),this._setCommon(n,t,!1,e),this.group.add(n),this._incremental=null},t.prototype.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("points");this.group.eachChild((function(t){if(null!=t.startIndex){var n=2*(t.endIndex-t.startIndex),i=4*t.startIndex*2;e=new Float32Array(e.buffer,i,n)}t.setShape("points",e)}))}},t.prototype.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Tu({silent:!0})),this.group.add(this._incremental)):this._incremental=null},t.prototype.incrementalUpdate=function(t,e,n){var i;this._incremental?(i=new AS,this._incremental.addDisplayable(i,!0)):((i=new AS({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("points")}),this._setCommon(i,e,!!this._incremental,n)},t.prototype._setCommon=function(t,e,n,i){var r=e.hostModel;i=i||{};var o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.softClipShape=i.clipShape||null,t.symbolProxy=fy(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var a=t.shape.size[0]<4;t.useStyle(r.getModel("itemStyle").getItemStyle(a?["color","shadowBlur","shadowColor"]:["color"]));var s=e.getVisual("style"),l=s&&s.fill;if(l&&t.setColor(l),!n){var u=_s(t);u.seriesIndex=r.seriesIndex,t.on("mousemove",(function(e){u.dataIndex=null;var n=t.findDataIndex(e.offsetX,e.offsetY);n>=0&&(u.dataIndex=n+(t.startIndex||0))}))}},t.prototype.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},t.prototype._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},t}(),kS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).updateData(i,{clipShape:this._getClipShape(t)}),this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).incrementalPrepareUpdate(i),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._symbolDraw.incrementalUpdate(t,e.getData(),{clipShape:this._getClipShape(e)}),this._finished=t.end===e.getData().count()},e.prototype.updateTransform=function(t,e,n){var i=t.getData();if(this.group.dirty(),!this._finished||i.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var r=Xw("").reset(t,e,n);r.progress&&r.progress({start:0,end:i.count(),count:i.count()},i),this._symbolDraw.updateLayout(i)},e.prototype._getClipShape=function(t){var e=t.coordinateSystem,n=e&&e.getArea&&e.getArea();return t.get("clip",!0)?n:null},e.prototype._updateSymbolDraw=function(t,e){var n=this._symbolDraw,i=e.pipelineContext.large;return n&&i===this._isLargeDraw||(n&&n.remove(),n=this._symbolDraw=i?new LS:new mw,this._isLargeDraw=i,this.group.removeAll()),this.group.add(n.group),n},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},e.prototype.dispose=function(){},e.type="scatter",e}(Tf),PS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.type="grid",e.dependencies=["xAxis","yAxis"],e.layoutMode="box",e.defaultOption={show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"},e}(Xc),OS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",Nr).models[0]},e.type="cartesian2dAxis",e}(Xc);L(OS,Yx);var RS={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:"#6E7079",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:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},NS=S({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},RS),zS=S({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},RS),ES={category:NS,value:zS,time:S({scale:!0,splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},zS),log:T({scale:!0,logBase:10},zS)},VS={value:1,category:1,time:1,log:1};function BS(t,e,i,r){P(VS,(function(o,a){var s=S(S({},ES[a],!0),r,!0),l=function(t){function i(){for(var n=[],i=0;ie[1]&&e.reverse(),e},e.prototype.pointToData=function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},e.prototype.setCategorySortInfo=function(t){if("category"!==this.type)return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)},e}(hb);function YS(t,e,n){n=n||{};var i=t.coordinateSystem,r=e.axis,o={},a=r.getAxesOnZeroOf()[0],s=r.position,l=a?"onZero":s,u=r.dim,h=i.getRect(),c=[h.x,h.x+h.width,h.y,h.y+h.height],p={left:0,right:1,top:0,bottom:1,onZero:2},d=e.get("offset")||0,f="x"===u?[c[2]-d,c[3]+d]:[c[0]-d,c[1]+d];if(a){var g=a.toGlobalCoord(a.dataToCoord(0));f[p.onZero]=Math.max(Math.min(g,f[1]),f[0])}o.position=["y"===u?f[p[l]]:c[0],"x"===u?f[p[l]]:c[3]],o.rotation=Math.PI/2*("x"===u?0:1);o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,left:-1,right:1}[s],o.labelOffset=a?f[p[s]]-f[p.onZero]:0,e.get(["axisTick","inside"])&&(o.tickDirection=-o.tickDirection),Q(n.labelInside,e.get(["axisLabel","inside"]))&&(o.labelDirection=-o.labelDirection);var y=e.get(["axisLabel","rotate"]);return o.labelRotate="top"===l?-y:y,o.z2=1,o}function ZS(t){return"cartesian2d"===t.get("coordinateSystem")}function jS(t){var e={xAxisModel:null,yAxisModel:null};return P(e,(function(n,i){var r=i.replace(/Model$/,""),o=t.getReferringComponents(r,Nr).models[0];e[i]=o})),e}var qS=function(){function t(t,e,n){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=HS,this._initCartesian(t,e,n),this.model=t}return t.prototype.getRect=function(){return this._rect},t.prototype.update=function(t,e){var n=this._axesMap;this._updateScale(t,this.model),P(n.x,(function(t){Vx(t.scale,t.model)})),P(n.y,(function(t){Vx(t.scale,t.model)}));var i={};P(n.x,(function(t){$S(n,"y",t,i)})),P(n.y,(function(t){$S(n,"x",t,i)})),this.resize(this.model,e)},t.prototype.resize=function(t,e,n){var i=t.getBoxLayoutParams(),r=!n&&t.get("containLabel"),o=Vc(i,{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;function s(){P(a,(function(t){var e=t.isHorizontal(),n=e?[0,o.width]:[0,o.height],i=t.inverse?1:0;t.setExtent(n[i],n[1-i]),function(t,e){var n=t.getExtent(),i=n[0]+n[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return i-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return i-t+e}}(t,e?o.x:o.y)}))}s(),r&&(P(a,(function(t){if(!t.model.get(["axisLabel","inside"])){var e=function(t){var e=t.model,n=t.scale;if(e.get(["axisLabel","show"])&&!n.isBlank()){var i,r,o=n.getExtent();r=n instanceof $_?n.count():(i=n.getTicks()).length;var a,s=t.getLabelModel(),l=Fx(t),u=1;r>40&&(u=Math.ceil(r/40));for(var h=0;h0&&i>0||n<0&&i<0)}(t)}var QS=Math.PI,tM=function(){function t(t,e){this.group=new Ei,this.opt=e,this.axisModel=t,T(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0,handleAutoShown:function(){return!0}});var n=new Ei({x:e.position[0],y:e.position[1],rotation:e.rotation});n.updateTransform(),this._transformGroup=n}return t.prototype.hasBuilder=function(t){return!!eM[t]},t.prototype.add=function(t){eM[t](this.opt,this.axisModel,this.group,this._transformGroup)},t.prototype.getGroup=function(){return this.group},t.innerTextLayout=function(t,e,n){var i,r,o=nr(e-t);return ir(o)?(r=n>0?"top":"bottom",i="center"):ir(o-QS)?(r=n>0?"bottom":"top",i="center"):(r="middle",i=o>0&&o0?"right":"left":n>0?"left":"right"),{rotation:o,textAlign:i,textVerticalAlign:r}},t.makeAxisEventDataBase=function(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e},t.isLabelSilent=function(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)},t}(),eM={axisLine:function(t,e,n,i){var r=e.get(["axisLine","show"]);if("auto"===r&&t.handleAutoShown&&(r=t.handleAutoShown("axisLine")),r){var o=e.axis.getExtent(),a=i.transform,s=[o[0],0],l=[o[1],0];a&&(Rt(s,s,a),Rt(l,l,a));var u=I({lineCap:"round"},e.getModel(["axisLine","lineStyle"]).getLineStyle()),h=new uu({subPixelOptimize:!0,shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:u,strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1});h.anid="line",n.add(h);var c=e.get(["axisLine","symbol"]),p=e.get(["axisLine","symbolSize"]),d=e.get(["axisLine","symbolOffset"])||0;if("number"==typeof d&&(d=[d,d]),null!=c){"string"==typeof c&&(c=[c,c]),"string"!=typeof p&&"number"!=typeof p||(p=[p,p]);var f=p[0],g=p[1];P([{rotate:t.rotation+Math.PI/2,offset:d[0],r:0},{rotate:t.rotation-Math.PI/2,offset:d[1],r:Math.sqrt((s[0]-l[0])*(s[0]-l[0])+(s[1]-l[1])*(s[1]-l[1]))}],(function(e,i){if("none"!==c[i]&&null!=c[i]){var r=fy(c[i],-f/2,-g/2,f,g,u.stroke,!0),o=e.r+e.offset;r.attr({rotation:e.rotate,x:s[0]+o*Math.cos(t.rotation),y:s[1]-o*Math.sin(t.rotation),silent:!0,z2:11}),n.add(r)}}))}}},axisTickLabel:function(t,e,n,i){var r=function(t,e,n,i){var r=n.axis,o=n.getModel("axisTick"),a=o.get("show");"auto"===a&&i.handleAutoShown&&(a=i.handleAutoShown("axisTick"));if(!a||r.scale.isBlank())return;for(var s=o.getModel("lineStyle"),l=i.tickDirection*o.get("length"),u=oM(r.getTicksCoords(),e.transform,l,T(s.getLineStyle(),{stroke:n.get(["axisLine","lineStyle","color"])}),"ticks"),h=0;hc[1]?-1:1,d=["start"===s?c[0]-p*h:"end"===s?c[1]+p*h:(c[0]+c[1])/2,rM(s)?t.labelOffset+l*h:0],f=e.get("nameRotate");null!=f&&(f=f*QS/180),rM(s)?o=tM.innerTextLayout(t.rotation,null!=f?f:t.rotation,l):(o=function(t,e,n,i){var r,o,a=nr(n-t),s=i[0]>i[1],l="start"===e&&!s||"start"!==e&&s;ir(a-QS/2)?(o=l?"bottom":"top",r="center"):ir(a-1.5*QS)?(o=l?"top":"bottom",r="center"):(o="middle",r=a<1.5*QS&&a>QS/2?l?"left":"right":l?"right":"left");return{rotation:a,textAlign:r,textVerticalAlign:o}}(t.rotation,s,f||0,c),null!=(a=t.axisNameAvailableWidth)&&(a=Math.abs(a/Math.sin(o.rotation)),!isFinite(a)&&(a=null)));var g=u.getFont(),y=e.get("nameTruncate",!0)||{},v=y.ellipsis,m=Q(t.nameTruncateMaxWidth,y.maxWidth,a),_=new cs({x:d[0],y:d[1],rotation:o.rotation,silent:tM.isLabelSilent(e),style:ph(u,{text:r,font:g,overflow:"truncate",width:m,ellipsis:v,fill:u.getTextColor()||e.get(["axisLine","lineStyle","color"]),align:u.get("align")||o.textAlign,verticalAlign:u.get("verticalAlign")||o.textVerticalAlign}),z2:1});if(oh({el:_,componentModel:e,itemName:r}),_.__fullText=r,_.anid="name",e.get("triggerEvent")){var x=tM.makeAxisEventDataBase(e);x.targetType="axisName",x.name=r,_s(_).eventData=x}i.add(_),_.updateTransform(),n.add(_),_.decomposeTransform()}}};function nM(t){t&&(t.ignore=!0)}function iM(t,e){var n=t&&t.getBoundingRect().clone(),i=e&&e.getBoundingRect().clone();if(n&&i){var r=Gn([]);return Xn(r,r,-t.rotation),n.applyTransform(Wn([],r,t.getLocalTransform())),i.applyTransform(Wn([],r,e.getLocalTransform())),n.intersect(i)}}function rM(t){return"middle"===t||"center"===t}function oM(t,e,n,i,r){for(var o=[],a=[],s=[],l=0;l=0||t===e}function lM(t){var e=uM(t);if(e){var n=e.axisPointerModel,i=e.axis.scale,r=n.option,o=n.get("status"),a=n.get("value");null!=a&&(a=i.parse(a));var s=hM(n);null==o&&(r.status=s?"show":"hide");var l=i.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==a||a>l[1])&&(a=l[1]),a0&&!c.min?c.min=0:null!=c.min&&c.min<0&&!c.max&&(c.max=0);var p=a;null!=c.color&&(p=T({color:c.color},a));var d=S(w(c),{boundaryGap:t,splitNumber:e,scale:n,axisLine:i,axisTick:r,axisLabel:o,name:c.text,nameLocation:"end",nameGap:u,nameTextStyle:p,triggerEvent:h},!1);if(s||(d.name=""),"string"==typeof l){var f=d.name;d.name=l.replace("{value}",null!=f?f:"")}else"function"==typeof l&&(d.name=l(d.name,d));var g=new Oh(d,null,this.ecModel);return L(g,Yx.prototype),g.mainType="radar",g.componentIndex=this.componentIndex,g}),this);this._indicatorModels=c},e.prototype.getIndicatorModels=function(){return this._indicatorModels},e.type="radar",e.defaultOption={zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,axisName:{show:!0},boundaryGap:[0,0],splitNumber:5,axisNameGap:15,scale:!1,shape:"polygon",axisLine:S({lineStyle:{color:"#bbb"}},PM.axisLine),axisLabel:OM(PM.axisLabel,!1),axisTick:OM(PM.axisTick,!1),splitLine:OM(PM.splitLine,!0),splitArea:OM(PM.splitArea,!0),indicator:[]},e}(Xc),NM=["axisLine","axisTickLabel","axisName"],zM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},e.prototype._buildAxes=function(t){var e=t.coordinateSystem;P(O(e.getIndicatorAxes(),(function(t){return new tM(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})})),(function(t){P(NM,t.add,t),this.group.add(t.getGroup())}),this)},e.prototype._buildSplitLineAndArea=function(t){var e=t.coordinateSystem,n=e.getIndicatorAxes();if(n.length){var i=t.get("shape"),r=t.getModel("splitLine"),o=t.getModel("splitArea"),a=r.getModel("lineStyle"),s=o.getModel("areaStyle"),l=r.get("show"),u=o.get("show"),h=a.get("color"),c=s.get("color"),p=F(h)?h:[h],d=F(c)?c:[c],f=[],g=[];if("circle"===i)for(var y=n[0].getTicksCoords(),v=e.cx,m=e.cy,_=0;_n[0]&&isFinite(c)&&isFinite(n[0]))}else{a.getTicks().length-1>r&&(u=o(u));c=ji((h=Math.ceil(n[1]/u)*u)-u*r);a.setExtent(c,h),a.setInterval(u)}}))},t.prototype.convertToPixel=function(t,e,n){return console.warn("Not implemented."),null},t.prototype.convertFromPixel=function(t,e,n){return console.warn("Not implemented."),null},t.prototype.containPoint=function(t){return console.warn("Not implemented."),!1},t.create=function(e,n){var i=[];return e.eachComponent("radar",(function(r){var o=new t(r,e,n);i.push(o),r.coordinateSystem=o})),e.eachSeriesByType("radar",(function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])})),i},t.dimensions=[],t}();function BM(t){t.registerCoordinateSystem("radar",VM),t.registerComponentModel(RM),t.registerComponentView(zM),t.registerVisual({seriesType:"radar",reset:function(t){var e=t.getData();e.each((function(t){e.setItemVisual(t,"legendIcon","roundRect")})),e.setVisual("legendIcon","roundRect")}})}var FM="\0_ec_interaction_mutex";function GM(t,e){return!!HM(t)[e]}function HM(t){return t[FM]||(t[FM]={})}Hm({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},(function(){}));var WM=function(t){function e(e){var n=t.call(this)||this;n._zr=e;var i=V(n._mousedownHandler,n),r=V(n._mousemoveHandler,n),o=V(n._mouseupHandler,n),a=V(n._mousewheelHandler,n),s=V(n._pinchHandler,n);return n.enable=function(t,n){this.disable(),this._opt=T(w(n)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),null==t&&(t=!0),!0!==t&&"move"!==t&&"pan"!==t||(e.on("mousedown",i),e.on("mousemove",r),e.on("mouseup",o)),!0!==t&&"scale"!==t&&"zoom"!==t||(e.on("mousewheel",a),e.on("pinch",s))},n.disable=function(){e.off("mousedown",i),e.off("mousemove",r),e.off("mouseup",o),e.off("mousewheel",a),e.off("pinch",s)},n}return n(e,t),e.prototype.isDragging=function(){return this._dragging},e.prototype.isPinching=function(){return this._pinching},e.prototype.setPointerChecker=function(t){this.pointerChecker=t},e.prototype.dispose=function(){this.disable()},e.prototype._mousedownHandler=function(t){if(!(ne(t)||t.target&&t.target.draggable)){var e=t.offsetX,n=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,n)&&(this._x=e,this._y=n,this._dragging=!0)}},e.prototype._mousemoveHandler=function(t){if(this._dragging&&YM("moveOnMouseMove",t,this._opt)&&"pinch"!==t.gestureEvent&&!GM(this._zr,"globalPan")){var e=t.offsetX,n=t.offsetY,i=this._x,r=this._y,o=e-i,a=n-r;this._x=e,this._y=n,this._opt.preventDefaultMouseMove&&ee(t.event),XM(this,"pan","moveOnMouseMove",t,{dx:o,dy:a,oldX:i,oldY:r,newX:e,newY:n,isAvailableBehavior:null})}},e.prototype._mouseupHandler=function(t){ne(t)||(this._dragging=!1)},e.prototype._mousewheelHandler=function(t){var e=YM("zoomOnMouseWheel",t,this._opt),n=YM("moveOnMouseWheel",t,this._opt),i=t.wheelDelta,r=Math.abs(i),o=t.offsetX,a=t.offsetY;if(0!==i&&(e||n)){if(e){var s=r>3?1.4:r>1?1.2:1.1;UM(this,"zoom","zoomOnMouseWheel",t,{scale:i>0?s:1/s,originX:o,originY:a,isAvailableBehavior:null})}if(n){var l=Math.abs(i);UM(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(i>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:o,originY:a,isAvailableBehavior:null})}}},e.prototype._pinchHandler=function(t){GM(this._zr,"globalPan")||UM(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})},e}(Ft);function UM(t,e,n,i,r){t.pointerChecker&&t.pointerChecker(i,r.originX,r.originY)&&(ee(i.event),XM(t,e,n,i,r))}function XM(t,e,n,i,r){r.isAvailableBehavior=V(YM,null,n,i),t.trigger(e,r)}function YM(t,e,n){var i=n[t];return!t||i&&(!H(i)||e.event[i+"Key"])}function ZM(t,e,n){var i=t.target;i.x+=e,i.y+=n,i.dirty()}function jM(t,e,n,i){var r=t.target,o=t.zoomLimit,a=t.zoom=t.zoom||1;if(a*=e,o){var s=o.min||0,l=o.max||1/0;a=Math.max(Math.min(l,a),s)}var u=a/t.zoom;t.zoom=a,r.x-=(n-r.x)*(u-1),r.y-=(i-r.y)*(u-1),r.scaleX*=u,r.scaleY*=u,r.dirty()}var qM={axisPointer:1,tooltip:1,brush:1};function KM(t,e,n){var i=e.getComponentByElement(t.topTarget),r=i&&i.coordinateSystem;return i&&i!==n&&!qM.hasOwnProperty(i.mainType)&&r&&r.model!==n}var $M=["rect","circle","line","ellipse","polygon","polyline","path"],JM=ht($M),QM=ht($M.concat(["g"])),tI=ht($M.concat(["g"])),eI=kr();function nI(t){var e=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(e.fill=n),e}var iI=function(){function t(t){var e=new Ei;this.uid=Nh("ec_map_draw"),this._controller=new WM(t.getZr()),this._controllerHost={target:e},this.group=e,e.add(this._regionsGroup=new Ei),e.add(this._svgGroup=new Ei)}return t.prototype.draw=function(t,e,n,i,r){var o="geo"===t.mainType,a=t.getData&&t.getData();o&&e.eachComponent({mainType:"series",subType:"map"},(function(e){a||e.getHostGeoModel()!==t||(a=e.getData())}));var s=t.coordinateSystem,l=this._regionsGroup,u=this.group,h=s.getTransformInfo(),c=h.raw,p=h.roam;!l.childAt(0)||r?(u.x=p.x,u.y=p.y,u.scaleX=p.scaleX,u.scaleY=p.scaleY,u.dirty()):Hu(u,p,t);var d=a&&a.getVisual("visualMeta")&&a.getVisual("visualMeta").length>0,f={api:n,geo:s,mapOrGeoModel:t,data:a,isVisualEncodedByVisualMap:d,isGeo:o,transformInfoRaw:c};"geoJSON"===s.resourceType?this._buildGeoJSON(f):"geoSVG"===s.resourceType&&this._buildSVG(f),this._updateController(t,e,n),this._updateMapSelectHandler(t,l,n,i)},t.prototype._buildGeoJSON=function(t){var e=this._regionsGroupByName=ht(),n=ht(),i=this._regionsGroup,r=t.transformInfoRaw,o=t.mapOrGeoModel,a=t.data,s=function(t){return[t[0]*r.scaleX+r.x,t[1]*r.scaleY+r.y]};i.removeAll(),P(t.geo.regions,(function(r){var l=r.name,u=e.get(l),h=n.get(l)||{},c=h.dataIdx,p=h.regionModel;u||(u=e.set(l,new Ei),i.add(u),c=a?a.indexOfName(l):null,p=t.isGeo?o.getRegionModel(l):a?a.getItemModel(c):null,n.set(l,{dataIdx:c,regionModel:p}));var d=new yu({segmentIgnoreThreshold:1,shape:{paths:[]}});u.add(d),P(r.geometries,(function(t){if("polygon"===t.type){for(var e=[],n=0;n=0)&&(p=r);var d=a?{normal:{align:"center",verticalAlign:"middle"}}:null;hh(e,ch(i),{labelFetcher:p,labelDataIndex:c,defaultText:n},d);var f=e.getTextContent();if(f&&(eI(f).ignore=f.ignore,e.textConfig&&a)){var g=e.getBoundingRect().clone();e.textConfig.layoutRect=g,e.textConfig.position=[(a[0]-g.x)/g.width*100+"%",(a[1]-g.y)/g.height*100+"%"]}e.disableLabelAnimation=!0}else e.removeTextContent(),e.removeTextConfig(),e.disableLabelAnimation=null}function aI(t,e,n,i,r,o){t.data?t.data.setItemGraphicEl(o,e):_s(e).eventData={componentType:"geo",componentIndex:r.componentIndex,geoIndex:r.componentIndex,name:n,region:i&&i.option||{}}}function sI(t,e,n,i,r){t.data||oh({el:e,componentModel:r,itemName:n,itemTooltipOption:i.get("tooltip")})}function lI(t,e,n,i,r){e.highDownSilentOnTouch=!!r.get("selectedMode");var o=i.getModel("emphasis"),a=o.get("focus");return sl(e,a,o.get("blurScope")),t.isGeo&&function(t,e,n){var i=_s(t);i.componentMainType=e.mainType,i.componentIndex=e.componentIndex,i.componentHighDownName=n}(e,r,n),a}var uI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){if(!i||"mapToggleSelect"!==i.type||i.from!==this.uid){var r=this.group;if(r.removeAll(),!t.getHostGeoModel()){if(this._mapDraw&&i&&"geoRoam"===i.type&&this._mapDraw.resetForLabelLayout(),i&&"geoRoam"===i.type&&"series"===i.componentType&&i.seriesId===t.id)(o=this._mapDraw)&&r.add(o.group);else if(t.needsDrawMap){var o=this._mapDraw||new iI(n);r.add(o.group),o.draw(t,e,n,this,i),this._mapDraw=o}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,n)}}},e.prototype.remove=function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},e.prototype.dispose=function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},e.prototype._renderSymbols=function(t,e,n){var i=t.originalData,r=this.group;i.each(i.mapDimension("value"),(function(e,n){if(!isNaN(e)){var o=i.getItemLayout(n);if(o&&o.point){var a=o.point,s=o.offset,l=new Nl({style:{fill:t.getData().getVisual("style").fill},shape:{cx:a[0]+9*s,cy:a[1],r:3},silent:!0,z2:8+(s?0:11)});if(!s){var u=t.mainSeries.getData(),h=i.getName(n),c=u.indexOfName(h),p=i.getItemModel(n),d=p.getModel("label"),f=u.getItemGraphicEl(c);hh(l,ch(p),{labelFetcher:{getFormattedLabel:function(e,n){return t.getFormattedLabel(c,n)}}}),l.disableLabelAnimation=!0,d.get("position")||l.setTextConfig({position:"bottom"}),f.onHoverStateChange=function(t){Ws(l,t)}}r.add(l)}}}))},e.type="map",e}(Tf),hI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.needsDrawMap=!1,n.seriesGroup=[],n.getTooltipPosition=function(t){if(null!=t){var e=this.getData().getName(t),n=this.coordinateSystem,i=n.getRegion(e);return i&&n.dataToPoint(i.getCenter())}},n}return n(e,t),e.prototype.getInitialData=function(t){for(var e=MS(this,{coordDimensions:["value"],encodeDefaulter:B(up,this)}),n=ht(),i=[],r=0,o=e.count();r-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2),n},e.type="series.map",e.dependencies=["geo"],e.layoutMode="box",e.defaultOption={zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:null,showLegendSymbol:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,selectedMode:!0,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)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},nameProperty:"name"},e}(ff);function cI(t){var e={};t.eachSeriesByType("map",(function(t){var n=t.getHostGeoModel(),i=n?"o"+n.id:"i"+t.getMapType();(e[i]=e[i]||[]).push(t)})),P(e,(function(t,e){for(var n,i,r,o=(n=O(t,(function(t){return t.getData()})),i=t[0].get("mapValueCalculation"),r={},P(n,(function(t){t.each(t.mapDimension("value"),(function(e,n){var i="ec-"+t.getName(n);r[i]=r[i]||[],isNaN(e)||r[i].push(e)}))})),n[0].map(n[0].mapDimension("value"),(function(t,e){for(var o="ec-"+n[0].getName(e),a=0,s=1/0,l=-1/0,u=r[o].length,h=0;h1?(s.width=a,s.height=a/d):(s.height=a,s.width=a*d),s.y=o[1]-s.height/2,s.x=o[0]-s.width/2;else{var g=t.getBoxLayoutParams();g.aspect=d,s=Vc(g,{width:c,height:p})}this.setViewRect(s.x,s.y,s.width,s.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}L(vI,fI);var xI=new(function(){function t(){this.dimensions=vI.prototype.dimensions}return t.prototype.create=function(t,e){var n=[];t.eachComponent("geo",(function(t,i){var r=t.get("map"),o=new vI(r+i,r,{nameMap:t.get("nameMap"),nameProperty:t.get("nameProperty"),aspectScale:t.get("aspectScale")});o.zoomLimit=t.get("scaleLimit"),n.push(o),t.coordinateSystem=o,o.model=t,o.resize=_I,o.resize(t,e)})),t.eachSeries((function(t){if("geo"===t.get("coordinateSystem")){var e=t.get("geoIndex")||0;t.coordinateSystem=n[e]}}));var i={};return t.eachSeriesByType("map",(function(t){if(!t.getHostGeoModel()){var e=t.getMapType();i[e]=i[e]||[],i[e].push(t)}})),P(i,(function(t,i){var r=O(t,(function(t){return t.get("nameMap")})),o=new vI(i,i,{nameMap:M(r),nameProperty:t[0].get("nameProperty"),aspectScale:t[0].get("aspectScale")});o.zoomLimit=Q.apply(null,O(t,(function(t){return t.get("scaleLimit")}))),n.push(o),o.resize=_I,o.resize(t[0],e),P(t,(function(t){t.coordinateSystem=o,function(t,e){P(e.get("geoCoord"),(function(e,n){t.addGeoCoord(n,e)}))}(o,t)}))})),n},t.prototype.getFilledRegions=function(t,e,n,i){for(var r=(t||[]).slice(),o=ht(),a=0;a=0;){var o=e[n];o.hierNode.prelim+=i,o.hierNode.modifier+=i,r+=o.hierNode.change,i+=o.hierNode.shift+r}}(t);var o=(n[0].hierNode.prelim+n[n.length-1].hierNode.prelim)/2;r?(t.hierNode.prelim=r.hierNode.prelim+e(t,r),t.hierNode.modifier=t.hierNode.prelim-o):t.hierNode.prelim=o}else r&&(t.hierNode.prelim=r.hierNode.prelim+e(t,r));t.parentNode.hierNode.defaultAncestor=function(t,e,n,i){if(e){for(var r=t,o=t,a=o.parentNode.children[0],s=e,l=r.hierNode.modifier,u=o.hierNode.modifier,h=a.hierNode.modifier,c=s.hierNode.modifier;s=AI(s),o=LI(o),s&&o;){r=AI(r),a=LI(a),r.hierNode.ancestor=t;var p=s.hierNode.prelim+c-o.hierNode.prelim-u+i(s,o);p>0&&(PI(kI(s,t,n),t,p),u+=p,l+=p),c+=s.hierNode.modifier,u+=o.hierNode.modifier,l+=r.hierNode.modifier,h+=a.hierNode.modifier}s&&!AI(r)&&(r.hierNode.thread=s,r.hierNode.modifier+=c-l),o&&!LI(a)&&(a.hierNode.thread=o,a.hierNode.modifier+=u-h,n=t)}return n}(t,r,t.parentNode.hierNode.defaultAncestor||i[0],e)}function TI(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function CI(t){return arguments.length?t:OI}function DI(t,e){return t-=Math.PI/2,{x:e*Math.cos(t),y:e*Math.sin(t)}}function AI(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function LI(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function kI(t,e,n){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:n}function PI(t,e,n){var i=n/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=i,e.hierNode.shift+=n,e.hierNode.modifier+=n,e.hierNode.prelim+=n,t.hierNode.change+=i}function OI(t,e){return t.parentNode===e.parentNode?1:2}var RI=function(){this.parentPoint=[],this.childPoints=[]},NI=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new RI},e.prototype.buildPath=function(t,e){var n=e.childPoints,i=n.length,r=e.parentPoint,o=n[0],a=n[i-1];if(1===i)return t.moveTo(r[0],r[1]),void t.lineTo(o[0],o[1]);var s=e.orient,l="TB"===s||"BT"===s?0:1,u=1-l,h=Zi(e.forkPosition,1),c=[];c[l]=r[l],c[u]=r[u]+(a[u]-r[u])*h,t.moveTo(r[0],r[1]),t.lineTo(c[0],c[1]),t.moveTo(o[0],o[1]),c[l]=o[l],t.lineTo(c[0],c[1]),c[l]=a[l],t.lineTo(c[0],c[1]),t.lineTo(a[0],a[1]);for(var p=1;pm.x)||(x-=Math.PI);var S=b?"left":"right",M=s.getModel("label"),I=M.get("rotate"),C=I*(Math.PI/180),D=y.getTextContent();D&&(y.setTextConfig({position:M.get("position")||S,rotation:null==I?-x:C,origin:"center"}),D.setStyle("verticalAlign","middle"))}var A=s.get(["emphasis","focus"]),L="ancestor"===A?a.getAncestorsIndices():"descendant"===A?a.getDescendantIndices():null;L&&(_s(n).focus=L),function(t,e,n,i,r,o,a,s){var l=e.getModel(),u=t.get("edgeShape"),h=t.get("layout"),c=t.getOrient(),p=t.get(["lineStyle","curveness"]),d=t.get("edgeForkPosition"),f=l.getModel("lineStyle").getLineStyle(),g=i.__edge;if("curve"===u)e.parentNode&&e.parentNode!==n&&(g||(g=i.__edge=new du({shape:FI(h,c,p,r,r)})),Hu(g,{shape:FI(h,c,p,o,a)},t));else if("polyline"===u)if("orthogonal"===h){if(e!==n&&e.children&&0!==e.children.length&&!0===e.isExpand){for(var y=e.children,v=[],m=0;me&&(e=i.height)}this.height=e+1},t.prototype.getNodeById=function(t){if(this.getId()===t)return this;for(var e=0,n=this.children,i=n.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},t.prototype.getLayout=function(){return this.hostTree.data.getItemLayout(this.dataIndex)},t.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostTree.data.getItemModel(this.dataIndex).getModel(t)},t.prototype.getLevelModel=function(){return(this.hostTree.levelModels||[])[this.depth]},t.prototype.setVisual=function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},t.prototype.getVisual=function(t){return this.hostTree.data.getItemVisual(this.dataIndex,t)},t.prototype.getRawIndex=function(){return this.hostTree.data.getRawIndex(this.dataIndex)},t.prototype.getId=function(){return this.hostTree.data.getId(this.dataIndex)},t.prototype.isAncestorOf=function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},t.prototype.isDescendantOf=function(t){return t!==this&&t.isAncestorOf(this)},t}(),$I=function(){function t(t){this.type="tree",this._nodes=[],this.hostModel=t}return t.prototype.eachNode=function(t,e,n){this.root.eachNode(t,e,n)},t.prototype.getNodeByDataIndex=function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},t.prototype.getNodeById=function(t){return this.root.getNodeById(t)},t.prototype.update=function(){for(var t=this.data,e=this._nodes,n=0,i=e.length;n=0){var i=n.getData().tree.root,r=t.targetNode;if("string"==typeof r&&(r=i.getNodeById(r)),r&&i.contains(r))return{node:r};var o=t.targetNodeId;if(null!=o&&(r=i.getNodeById(o)))return{node:r}}}function QI(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function tT(t,e){return D(QI(t),e)>=0}function eT(t,e){for(var n=[];t;){var i=t.dataIndex;n.push({name:t.name,dataIndex:i,value:e.getRawValue(i)}),t=t.parentNode}return n.reverse(),n}var nT=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hasSymbolVisual=!0,e.ignoreStyleOnData=!0,e}return n(e,t),e.prototype.getInitialData=function(t){var e={name:t.name,children:t.data},n=t.leaves||{},i=new Oh(n,this,this.ecModel),r=$I.createTree(e,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e);return n&&n.children.length&&n.isExpand||(t.parentModel=i),t}))}));var o=0;r.eachNode("preorder",(function(t){t.depth>o&&(o=t.depth)}));var a=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:o;return r.root.eachNode("preorder",(function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=a})),r.data},e.prototype.getOrient=function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.formatTooltip=function(t,e,n){for(var i=this.getData().tree,r=i.root.children[0],o=i.getNodeByDataIndex(t),a=o.getValue(),s=o.name;o&&o!==r;)s=o.parentNode.name+"."+s,o=o.parentNode;return tf("nameValue",{name:s,value:a,noValue:isNaN(a)||null==a})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treeAncestors=eT(i,this),n},e.type="series.tree",e.layoutMode="box",e.defaultOption={zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500},e}(ff);function iT(t,e){for(var n,i=[t];n=i.pop();)if(e(n),n.isExpand){var r=n.children;if(r.length)for(var o=r.length-1;o>=0;o--)i.push(r[o])}}function rT(t,e){t.eachSeriesByType("tree",(function(t){!function(t,e){var n=function(t,e){return Vc(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=n;var i=t.get("layout"),r=0,o=0,a=null;"radial"===i?(r=2*Math.PI,o=Math.min(n.height,n.width)/2,a=CI((function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth}))):(r=n.width,o=n.height,a=CI());var s=t.getData().tree.root,l=s.children[0];if(l){!function(t){var e=t;e.hierNode={defaultAncestor:null,ancestor:e,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var n,i,r=[e];n=r.pop();)if(i=n.children,n.isExpand&&i.length)for(var o=i.length-1;o>=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},r.push(a)}}(s),function(t,e,n){for(var i,r=[t],o=[];i=r.pop();)if(o.push(i),i.isExpand){var a=i.children;if(a.length)for(var s=0;sh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)}));var p=u===h?1:a(u,h)/2,d=p-u.getLayout().x,f=0,g=0,y=0,v=0;if("radial"===i)f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),iT(l,(function(t){y=(t.getLayout().x+d)*f,v=(t.depth-1)*g;var e=DI(y,v);t.setLayout({x:e.x,y:e.y,rawX:y,rawY:v},!0)}));else{var m=t.getOrient();"RL"===m||"LR"===m?(g=o/(h.getLayout().x+p+d),f=r/(c.depth-1||1),iT(l,(function(t){v=(t.getLayout().x+d)*g,y="LR"===m?(t.depth-1)*f:r-(t.depth-1)*f,t.setLayout({x:y,y:v},!0)}))):"TB"!==m&&"BT"!==m||(f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),iT(l,(function(t){y=(t.getLayout().x+d)*f,v="TB"===m?(t.depth-1)*g:o-(t.depth-1)*g,t.setLayout({x:y,y:v},!0)})))}}}(t,e)}))}function oT(t){t.eachSeriesByType("tree",(function(t){var e=t.getData();e.tree.eachNode((function(t){var n=t.getModel().getModel("itemStyle").getItemStyle();I(e.ensureUniqueItemVisual(t.dataIndex,"style"),n)}))}))}var aT=function(){},sT=["treemapZoomToNode","treemapRender","treemapMove"];function lT(t){var e=t.getData().tree,n={};e.eachNode((function(e){for(var i=e;i&&i.depth>1;)i=i.parentNode;var r=xp(t.ecModel,i.name||i.dataIndex+"",n);e.setVisual("decal",r)}))}var uT=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.preventUsingHoverLayer=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};hT(n);var i=t.levels||[],r=this.designatedVisualItemStyle={},o=new Oh({itemStyle:r},this,e),a=O((i=t.levels=function(t,e){var n,i,r=xr(e.get("color")),o=xr(e.get(["aria","decal","decals"]));if(!r)return;P(t=t||[],(function(t){var e=new Oh(t),r=e.get("color"),o=e.get("decal");(e.get(["itemStyle","color"])||r&&"none"!==r)&&(n=!0),(e.get(["itemStyle","decal"])||o&&"none"!==o)&&(i=!0)}));var a=t[0]||(t[0]={});n||(a.color=r.slice());!i&&o&&(a.decal=o.slice());return t}(i,e))||[],(function(t){return new Oh(t,o,e)}),this),s=$I.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=s.getNodeByDataIndex(e),i=n?a[n.depth]:null;return t.parentModel=i||o,t}))}));return s.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.formatTooltip=function(t,e,n){var i=this.getData(),r=this.getRawValue(t);return tf("nameValue",{name:i.getName(t),value:r})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treePathInfo=eT(i,this),n},e.prototype.setLayoutInfo=function(t){this.layoutInfo=this.layoutInfo||{},I(this.layoutInfo,t)},e.prototype.mapIdToIndex=function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=ht(),this._idIndexMapCount=0);var n=e.get(t);return null==n&&e.set(t,n=this._idIndexMapCount++),n},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.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)},e.prototype.enableAriaDecal=function(){lT(this)},e.type="series.treemap",e.layoutMode="box",e.defaultOption={progressive:0,left:"center",top:"middle",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)",textStyle:{color:"#fff"}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",overflow:"truncate"},upperLabel:{show:!1,position:[0,"50%"],height:20,overflow:"truncate",verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},e}(ff);function hT(t){var e=0;P(t.children,(function(t){hT(t);var n=t.value;F(n)&&(n=n[0]),e+=n}));var n=t.value;F(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),F(t.value)?t.value[0]=n:t.value=n}var cT=function(){function t(t){this.group=new Ei,t.add(this.group)}return t.prototype.render=function(t,e,n,i){var r=t.getModel("breadcrumb"),o=this.group;if(o.removeAll(),r.get("show")&&n){var a=r.getModel("itemStyle"),s=a.getModel("textStyle"),l={pos:{left:r.get("left"),right:r.get("right"),top:r.get("top"),bottom:r.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:r.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(n,l,s),this._renderContent(t,l,a,s,i),Bc(o,l.pos,l.box)}},t.prototype._prepare=function(t,e,n){for(var i=t;i;i=i.parentNode){var r=Cr(i.getModel().get("name"),""),o=n.getTextRect(r),a=Math.max(o.width+16,e.emptyItemWidth);e.totalWidth+=a+8,e.renderList.push({node:i,text:r,width:a})}},t.prototype._renderContent=function(t,e,n,i,r){for(var o,a,s,l,u,h,c,p,d,f=0,g=e.emptyItemWidth,y=t.get(["breadcrumb","height"]),v=(o=e.pos,a=e.box,l=a.width,u=a.height,h=Zi(o.left,l),c=Zi(o.top,u),p=Zi(o.right,l),d=Zi(o.bottom,u),(isNaN(h)||isNaN(parseFloat(o.left)))&&(h=0),(isNaN(p)||isNaN(parseFloat(o.right)))&&(p=l),(isNaN(c)||isNaN(parseFloat(o.top)))&&(c=0),(isNaN(d)||isNaN(parseFloat(o.bottom)))&&(d=u),s=wc(s||0),{width:Math.max(p-h-s[1]-s[3],0),height:Math.max(d-c-s[0]-s[2],0)}),m=e.totalWidth,_=e.renderList,x=_.length-1;x>=0;x--){var b=_[x],w=b.node,S=b.width,M=b.text;m>v.width&&(m-=S-g,S=g,M=null);var I=new ru({shape:{points:pT(f,0,S,y,x===_.length-1,0===x)},style:T(n.getItemStyle(),{lineJoin:"bevel"}),textContent:new cs({style:{text:M,fill:i.getTextColor(),font:i.getFont()}}),textConfig:{position:"inside"},z2:1e5,onclick:B(r,w)});I.disableLabelAnimation=!0,this.group.add(I),dT(I,t,w),f+=S+8}},t.prototype.remove=function(){this.group.removeAll()},t}();function pT(t,e,n,i,r,o){var a=[[r?t:t-5,e],[t+n,e],[t+n,e+i],[r?t:t-5,e+i]];return!o&&a.splice(2,0,[t+n+5,e+i/2]),!r&&a.push([t,e+i/2]),a}function dT(t,e,n){_s(t).eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:n&&n.dataIndex,name:n&&n.name},treePathInfo:n&&eT(n,e)}}var fT=function(){function t(){this._storage=[],this._elExistsMap={}}return t.prototype.add=function(t,e,n,i,r){return!this._elExistsMap[t.id]&&(this._elExistsMap[t.id]=!0,this._storage.push({el:t,target:e,duration:n,delay:i,easing:r}),!0)},t.prototype.finished=function(t){return this._finishedCallback=t,this},t.prototype.start=function(){for(var t=this,e=this._storage.length,n=function(){--e<=0&&(t._storage.length=0,t._elExistsMap={},t._finishedCallback&&t._finishedCallback())},i=0,r=this._storage.length;i3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var n=e.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t.dx,y:n.y+t.dy,width:n.width,height:n.height}})}},e.prototype._onZoom=function(t){var e=t.originX,n=t.originY;if("animating"!==this._state){var i=this.seriesModel.getData().tree.root;if(!i)return;var r=i.getLayout();if(!r)return;var o=new gi(r.x,r.y,r.width,r.height),a=this.seriesModel.layoutInfo,s=[1,0,0,1,0,0];Un(s,s,[-(e-=a.x),-(n-=a.y)]),Yn(s,s,[t.scale,t.scale]),Un(s,s,[e,n]),o.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:o.x,y:o.y,width:o.width,height:o.height}})}},e.prototype._initEvents=function(t){var e=this;t.on("click",(function(t){if("ready"===e._state){var n=e.seriesModel.get("nodeClick",!0);if(n){var i=e.findTarget(t.offsetX,t.offsetY);if(i){var r=i.node;if(r.getLayout().isLeafRoot)e._rootToNode(i);else if("zoomToNode"===n)e._zoomToNode(i);else if("link"===n){var o=r.hostTree.data.getItemModel(r.dataIndex),a=o.get("link",!0),s=o.get("target",!0)||"blank";a&&Pc(a,s)}}}}}),this)},e.prototype._renderBreadcrumb=function(t,e,n){var i=this;n||(n=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(n={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new cT(this.group))).render(t,e,n.node,(function(e){"animating"!==i._state&&(tT(t.getViewRoot(),e)?i._rootToNode({node:e}):i._zoomToNode({node:e}))}))},e.prototype.remove=function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},e.prototype.dispose=function(){this._clearController()},e.prototype._zoomToNode=function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype._rootToNode=function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype.findTarget=function(t,e){var n;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},(function(i){var r=this._storage.background[i.getRawIndex()];if(r){var o=r.transformCoordToLocal(t,e),a=r.shape;if(!(a.x<=o[0]&&o[0]<=a.x+a.width&&a.y<=o[1]&&o[1]<=a.y+a.height))return!1;n={node:i,offsetX:o[0],offsetY:o[1]}}}),this),n},e.type="treemap",e}(Tf);var ST=P,MT=X,IT=-1,TT=function(){function t(e){var n=e.mappingMethod,i=e.type,r=this.option=w(e);this.type=i,this.mappingMethod=n,this._normalizeData=zT[n];var o=t.visualHandlers[i];this.applyVisual=o.applyVisual,this.getColorMapper=o.getColorMapper,this._normalizedToVisual=o._normalizedToVisual[n],"piecewise"===n?(CT(r),function(t){var e=t.pieceList;t.hasSpecialVisual=!1,P(e,(function(e,n){e.originIndex=n,null!=e.visual&&(t.hasSpecialVisual=!0)}))}(r)):"category"===n?r.categories?function(t){var e=t.categories,n=t.categoryMap={},i=t.visual;if(ST(e,(function(t,e){n[t]=e})),!F(i)){var r=[];X(i)?ST(i,(function(t,e){var i=n[e];r[null!=i?i:IT]=t})):r[-1]=i,i=NT(t,r)}for(var o=e.length-1;o>=0;o--)null==i[o]&&(delete n[e[o]],e.pop())}(r):CT(r,!0):(rt("linear"!==n||r.dataExtent),CT(r))}return t.prototype.mapValueToVisual=function(t){var e=this._normalizeData(t);return this._normalizedToVisual(e,t)},t.prototype.getNormalizer=function(){return V(this._normalizeData,this)},t.listVisualTypes=function(){return E(t.visualHandlers)},t.isValidType=function(e){return t.visualHandlers.hasOwnProperty(e)},t.eachVisual=function(t,e,n){X(t)?P(t,e,n):e.call(n,t)},t.mapVisual=function(e,n,i){var r,o=F(e)?[]:X(e)?{}:(r=!0,null);return t.eachVisual(e,(function(t,e){var a=n.call(i,t,e);r?o=a:o[e]=a})),o},t.retrieveVisuals=function(e){var n,i={};return e&&ST(t.visualHandlers,(function(t,r){e.hasOwnProperty(r)&&(i[r]=e[r],n=!0)})),n?i:null},t.prepareVisualTypes=function(t){if(F(t))t=t.slice();else{if(!MT(t))return[];var e=[];ST(t,(function(t,n){e.push(n)})),t=e}return t.sort((function(t,e){return"color"===e&&"color"!==t&&0===t.indexOf("color")?1:-1})),t},t.dependsOn=function(t,e){return"color"===e?!(!t||0!==t.indexOf(e)):t===e},t.findPieceIndex=function(t,e,n){for(var i,r=1/0,o=0,a=e.length;ou[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:a.name,dataExtent:u,visual:a.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var p=new TT(c);return VT(p).drColorMappingBy=h,p}(0,r,o,0,u,d);P(d,(function(t,e){if(t.depth>=n.length||t===n[t.depth]){var o=function(t,e,n,i,r,o){var a=I({},e);if(r){var s=r.type,l="color"===s&&VT(r).drColorMappingBy,u="index"===l?i:"id"===l?o.mapIdToIndex(n.getId()):n.getValue(t.get("visualDimension"));a[s]=r.mapValueToVisual(u)}return a}(r,u,t,e,f,i);FT(t,o,n,i)}}))}else s=GT(u),h.fill=s}}function GT(t){var e=HT(t,"color");if(e){var n=HT(t,"colorAlpha"),i=HT(t,"colorSaturation");return i&&(e=Ke(e,null,null,i)),n&&(e=$e(e,n)),e}}function HT(t,e){var n=t[e];if(null!=n&&"none"!==n)return n}function WT(t,e){var n=t.get(e);return F(n)&&n.length?{name:e,range:n}:null}var UT=Math.max,XT=Math.min,YT=Q,ZT=P,jT=["itemStyle","borderWidth"],qT=["itemStyle","gapWidth"],KT=["upperLabel","show"],$T=["upperLabel","height"],JT={seriesType:"treemap",reset:function(t,e,n,i){var r=n.getWidth(),o=n.getHeight(),a=t.option,s=Vc(t.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()}),l=a.size||[],u=Zi(YT(s.width,l[0]),r),h=Zi(YT(s.height,l[1]),o),c=i&&i.type,p=JI(i,["treemapZoomToNode","treemapRootToNode"],t),d="treemapRender"===c||"treemapMove"===c?i.rootRect:null,f=t.getViewRoot(),g=QI(f);if("treemapMove"!==c){var y="treemapZoomToNode"===c?function(t,e,n,i,r){var o,a=(e||{}).node,s=[i,r];if(!a||a===n)return s;var l=i*r,u=l*t.option.zoomToNodeRatio;for(;o=a.parentNode;){for(var h=0,c=o.children,p=0,d=c.length;per&&(u=er),a=o}ua[1]&&(a[1]=e)}))):a=[NaN,NaN];return{sum:i,dataExtent:a}}(e,a,s);if(0===u.sum)return t.viewChildren=[];if(u.sum=function(t,e,n,i,r){if(!i)return n;for(var o=t.get("visibleMin"),a=r.length,s=a,l=a-1;l>=0;l--){var u=r["asc"===i?a-l-1:l].getValue();u/n*ei&&(i=a));var l=t.area*t.area,u=e*e*n;return l?UT(u*i/l,l/(u*r)):1/0}function eC(t,e,n,i,r){var o=e===n.width?0:1,a=1-o,s=["x","y"],l=["width","height"],u=n[s[o]],h=e?t.area/e:0;(r||h>n[l[a]])&&(h=n[l[a]]);for(var c=0,p=t.length;ci&&(i=e);var o=i%2?i+2:i+3;r=[];for(var a=0;a0&&(m[0]=-m[0],m[1]=-m[1]);var x=v[0]<0?-1:1;if("start"!==i.__position&&"end"!==i.__position){var b=-Math.atan2(v[1],v[0]);u[0].8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";break;case"start":i.x=-h[0]*f+l[0],i.y=-h[1]*g+l[1],c=h[0]>.8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":i.x=f*x+l[0],i.y=l[1]+w,c=v[0]<0?"right":"left",i.originX=-f*x,i.originY=-w;break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":i.x=_[0],i.y=_[1]+w,c="center",i.originY=-w;break;case"insideEndTop":case"insideEnd":case"insideEndBottom":i.x=-f*x+u[0],i.y=u[1]+w,c=v[0]>=0?"right":"left",i.originX=f*x,i.originY=-w}i.scaleX=i.scaleY=r,i.setStyle({verticalAlign:i.__verticalAlign||p,align:i.__align||c})}}}function S(t,e){var n=t.__specifiedRotation;if(null==n){var i=a.tangentAt(e);t.attr("rotation",(1===e?-1:1)*Math.PI/2-Math.atan2(i[1],i[0]))}else t.attr("rotation",n)}},e}(Ei),VC=function(){function t(t){this.group=new Ei,this._LineCtor=t||EC}return t.prototype.isPersistent=function(){return!0},t.prototype.updateData=function(t){var e=this,n=this,i=n.group,r=n._lineData;n._lineData=t,r||i.removeAll();var o=BC(t);t.diff(r).add((function(n){e._doAdd(t,n,o)})).update((function(n,i){e._doUpdate(r,t,i,n,o)})).remove((function(t){i.remove(r.getItemGraphicEl(t))})).execute()},t.prototype.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl((function(e,n){e.updateLayout(t,n)}),this)},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=BC(t),this._lineData=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e){function n(t){t.isGroup||function(t){return t.animators&&t.animators.length>0}(t)||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}for(var i=t.start;i=0?i+=u:i-=u:f>=0?i-=u:i+=u}return i}function qC(t,e){var n=[],i=Zo,r=[[],[],[]],o=[[],[]],a=[];e/=2,t.eachEdge((function(t,s){var l=t.getLayout(),u=t.getVisual("fromSymbol"),h=t.getVisual("toSymbol");l.__original||(l.__original=[mt(l[0]),mt(l[1])],l[2]&&l.__original.push(mt(l[2])));var c=l.__original;if(null!=l[2]){if(vt(r[0],c[0]),vt(r[1],c[2]),vt(r[2],c[1]),u&&"none"!==u){var p=_C(t.node1),d=jC(r,c[0],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[0][0]=n[3],r[1][0]=n[4],i(r[0][1],r[1][1],r[2][1],d,n),r[0][1]=n[3],r[1][1]=n[4]}if(h&&"none"!==h){p=_C(t.node2),d=jC(r,c[1],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[1][0]=n[1],r[2][0]=n[2],i(r[0][1],r[1][1],r[2][1],d,n),r[1][1]=n[1],r[2][1]=n[2]}vt(l[0],r[0]),vt(l[1],r[2]),vt(l[2],r[1])}else{if(vt(o[0],c[0]),vt(o[1],c[1]),wt(a,o[1],o[0]),Dt(a,a),u&&"none"!==u){p=_C(t.node1);bt(o[0],o[0],a,p*e)}if(h&&"none"!==h){p=_C(t.node2);bt(o[1],o[1],a,-p*e)}vt(l[0],o[0]),vt(l[1],o[1])}}))}function KC(t){return"view"===t.type}var $C=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){var n=new mw,i=new VC,r=this.group;this._controller=new WM(e.getZr()),this._controllerHost={target:r},r.add(n.group),r.add(i.group),this._symbolDraw=n,this._lineDraw=i,this._firstRender=!0},e.prototype.render=function(t,e,n){var i=this,r=t.coordinateSystem;this._model=t;var o=this._symbolDraw,a=this._lineDraw,s=this.group;if(KC(r)){var l={x:r.x,y:r.y,scaleX:r.scaleX,scaleY:r.scaleY};this._firstRender?s.attr(l):Hu(s,l,t)}qC(t.getGraph(),mC(t));var u=t.getData();o.updateData(u);var h=t.getEdgeData();a.updateData(h),this._updateNodeAndLinkScale(),this._updateController(t,e,n),clearTimeout(this._layoutTimeout);var c=t.forceLayout,p=t.get(["force","layoutAnimation"]);c&&this._startForceLayoutIteration(c,p),u.graph.eachNode((function(t){var e=t.dataIndex,n=t.getGraphicEl(),r=t.getModel();n.off("drag").off("dragend");var o=r.get("draggable");o&&n.on("drag",(function(){c&&(c.warmUp(),!i._layouting&&i._startForceLayoutIteration(c,p),c.setFixed(e),u.setItemLayout(e,[n.x,n.y]))})).on("dragend",(function(){c&&c.setUnfixed(e)})),n.setDraggable(o&&!!c),"adjacency"===r.get(["emphasis","focus"])&&(_s(n).focus=t.getAdjacentDataIndices())})),u.graph.eachEdge((function(t){var e=t.getGraphicEl();"adjacency"===t.getModel().get(["emphasis","focus"])&&(_s(e).focus={edge:[t.dataIndex],node:[t.node1.dataIndex,t.node2.dataIndex]})}));var d="circular"===t.get("layout")&&t.get(["circular","rotateLabel"]),f=u.getLayout("cx"),g=u.getLayout("cy");u.eachItemGraphicEl((function(t,e){var n=u.getItemModel(e).get(["label","rotate"])||0,i=t.getSymbolPath();if(d){var r=u.getItemLayout(e),o=Math.atan2(r[1]-g,r[0]-f);o<0&&(o=2*Math.PI+o);var a=r[0]=0&&t.call(e,n[r],r)},t.prototype.eachEdge=function(t,e){for(var n=this.edges,i=n.length,r=0;r=0&&n[r].node1.dataIndex>=0&&n[r].node2.dataIndex>=0&&t.call(e,n[r],r)},t.prototype.breadthFirstTraverse=function(t,e,n,i){if(e instanceof tD||(e=this._nodesMap[JC(e)]),e){for(var r="out"===n?"outEdges":"in"===n?"inEdges":"edges",o=0;o=0&&n.node2.dataIndex>=0}));for(r=0,o=i.length;r=0&&this[t][e].setItemVisual(this.dataIndex,n,i)},getVisual:function(n){return this[t][e].getItemVisual(this.dataIndex,n)},setLayout:function(n,i){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,n,i)},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)}}}function iD(t,e,n,i,r){for(var o=new QC(i),a=0;a "+p)),u++)}var d,f=n.get("coordinateSystem");if("cartesian2d"===f||"polar"===f)d=F_(t,n);else{var g=Ap.get(f),y=g&&g.dimensions||[];D(y,"value")<0&&y.concat(["value"]);var v=O_(t,{coordDimensions:y});(d=new L_(v,n)).initData(t)}var m=new L_(["value"],n);return m.initData(l,s),r&&r(d,m),HI({mainData:d,struct:o,structAttr:"graph",datas:{node:d,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),o.update(),o}L(tD,nD("hostGraph","data")),L(eD,nD("hostGraph","edgeData"));var rD=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments);var n=this;function i(){return n._categoriesData}this.legendVisualProvider=new IS(i,i),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeDefaultAndTheme=function(e){t.prototype.mergeDefaultAndTheme.apply(this,arguments),br(e,"edgeLabel",["show"])},e.prototype.getInitialData=function(t,e){var n,i=t.edges||t.links||[],r=t.data||t.nodes||[],o=this;if(r&&i){uC(n=this)&&(n.__curvenessList=[],n.__edgeMap={},hC(n));var a=iD(r,i,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t}));var n=Oh.prototype.getModel;function i(t,e){var i=n.call(this,t,e);return i.resolveParentPath=r,i}function r(t){if(t&&("label"===t[0]||"label"===t[1])){var e=t.slice();return"label"===t[0]?e[0]="edgeLabel":"label"===t[1]&&(e[1]="edgeLabel"),e}return t}e.wrapMethod("getItemModel",(function(t){return t.resolveParentPath=r,t.getModel=i,t}))}));return P(a.edges,(function(t){!function(t,e,n,i){if(uC(n)){var r=cC(t,e,n),o=n.__edgeMap,a=o[pC(r)];o[r]&&!a?o[r].isForward=!0:a&&o[r]&&(a.isForward=!0,o[r].isForward=!1),o[r]=o[r]||[],o[r].push(i)}}(t.node1,t.node2,this,t.dataIndex)}),this),a.data}},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.getCategoriesData=function(){return this._categoriesData},e.prototype.formatTooltip=function(t,e,n){if("edge"===n){var i=this.getData(),r=this.getDataParams(t,n),o=i.graph.getEdgeByIndex(t),a=i.getName(o.node1.dataIndex),s=i.getName(o.node2.dataIndex),l=[];return null!=a&&l.push(a),null!=s&&l.push(s),tf("nameValue",{name:l.join(" > "),value:r.value,noValue:null==r.value})}return cf({series:this,dataIndex:t,multipleSeries:e})},e.prototype._updateCategoriesData=function(){var t=O(this.option.categories||[],(function(t){return null!=t.value?t:I({value:0},t)})),e=new L_(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray((function(t){return e.getItemModel(t)}))},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.isAnimationEnabled=function(){return t.prototype.isAnimationEnabled.call(this)&&!("force"===this.get("layout")&&this.get(["force","layoutAnimation"]))},e.type="series.graph",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(ff),oD={type:"graphRoam",event:"graphRoam",update:"none"};var aD=function(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0},sD=function(t){function e(e){var n=t.call(this,e)||this;return n.type="pointer",n}return n(e,t),e.prototype.getDefaultShape=function(){return new aD},e.prototype.buildPath=function(t,e){var n=Math.cos,i=Math.sin,r=e.r,o=e.width,a=e.angle,s=e.x-n(a)*o*(o>=r/3?1:2),l=e.y-i(a)*o*(o>=r/3?1:2);a=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+n(a)*o,e.y+i(a)*o),t.lineTo(e.x+n(e.angle)*r,e.y+i(e.angle)*r),t.lineTo(e.x-n(a)*o,e.y-i(a)*o),t.lineTo(s,l)},e}(Ka);function lD(t,e){var n=null==t?"":t+"";return e&&("string"==typeof e?n=e.replace("{value}",n):"function"==typeof e&&(n=e(t))),n}var uD=2*Math.PI,hD=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll();var i=t.get(["axisLine","lineStyle","color"]),r=function(t,e){var n=t.get("center"),i=e.getWidth(),r=e.getHeight(),o=Math.min(i,r);return{cx:Zi(n[0],e.getWidth()),cy:Zi(n[1],e.getHeight()),r:Zi(t.get("radius"),o/2)}}(t,n);this._renderMain(t,e,n,i,r),this._data=t.getData()},e.prototype.dispose=function(){},e.prototype._renderMain=function(t,e,n,i,r){for(var o=this.group,a=t.get("clockwise"),s=-t.get("startAngle")/180*Math.PI,l=-t.get("endAngle")/180*Math.PI,u=t.getModel("axisLine"),h=u.get("roundCap")?Jw:Jl,c=u.get("show"),p=u.getModel("lineStyle"),d=p.get("width"),f=(l-s)%uD||l===s?(l-s)%uD:uD,g=s,y=0;c&&y=t&&(0===e?0:i[e-1][0]).8?"bottom":"middle",align:u<-.4?"left":u>.4?"right":"center"},{inheritColor:R}),silent:!0}))}if(m.get("show")&&L!==x){P=(P=m.get("distance"))?P+l:l;for(var N=0;N<=b;N++){u=Math.cos(M),h=Math.sin(M);var z=new uu({shape:{x1:u*(f-P)+p,y1:h*(f-P)+d,x2:u*(f-S-P)+p,y2:h*(f-S-P)+d},silent:!0,style:D});"auto"===D.stroke&&z.setStyle({stroke:i((L+N/b)/x)}),c.add(z),M+=T}M-=T}else M+=I}},e.prototype._renderPointer=function(t,e,n,i,r,o,a,s,l){var u=this.group,h=this._data,c=this._progressEls,p=[],d=t.get(["pointer","show"]),f=t.getModel("progress"),g=f.get("show"),y=t.getData(),v=y.mapDimension("value"),m=+t.get("min"),_=+t.get("max"),x=[m,_],b=[o,a];function w(e,n){var i,o=y.getItemModel(e).getModel("pointer"),a=Zi(o.get("width"),r.r),s=Zi(o.get("length"),r.r),l=t.get(["pointer","icon"]),u=o.get("offsetCenter"),h=Zi(u[0],r.r),c=Zi(u[1],r.r),p=o.get("keepAspect");return(i=l?fy(l,h-a/2,c-s,a,s,null,p):new sD({shape:{angle:-Math.PI/2,width:a,r:s,x:h,y:c}})).rotation=-(n+Math.PI/2),i.x=r.cx,i.y=r.cy,i}function S(t,e){var n=f.get("roundCap")?Jw:Jl,i=f.get("overlap"),a=i?f.get("width"):l/y.count(),u=i?r.r-a:r.r-(t+1)*a,h=i?r.r:r.r-t*a,c=new n({shape:{startAngle:o,endAngle:e,cx:r.cx,cy:r.cy,clockwise:s,r0:u,r:h}});return i&&(c.z2=_-y.get(v,t)%_),c}(g||d)&&(y.diff(h).add((function(e){if(d){var n=w(e,o);Wu(n,{rotation:-(Yi(y.get(v,e),x,b,!0)+Math.PI/2)},t),u.add(n),y.setItemGraphicEl(e,n)}if(g){var i=S(e,o),r=f.get("clip");Wu(i,{shape:{endAngle:Yi(y.get(v,e),x,b,r)}},t),u.add(i),p[e]=i}})).update((function(e,n){if(d){var i=h.getItemGraphicEl(n),r=i?i.rotation:o,a=w(e,r);a.rotation=r,Hu(a,{rotation:-(Yi(y.get(v,e),x,b,!0)+Math.PI/2)},t),u.add(a),y.setItemGraphicEl(e,a)}if(g){var s=c[n],l=S(e,s?s.shape.endAngle:o),m=f.get("clip");Hu(l,{shape:{endAngle:Yi(y.get(v,e),x,b,m)}},t),u.add(l),p[e]=l}})).execute(),y.each((function(t){var e=y.getItemModel(t),n=e.getModel("emphasis");if(d){var r=y.getItemGraphicEl(t),o=y.getItemVisual(t,"style"),a=o.fill;if(r instanceof es){var s=r.style;r.useStyle(I({image:s.image,x:s.x,y:s.y,width:s.width,height:s.height},o))}else r.useStyle(o),"pointer"!==r.type&&r.setColor(a);r.setStyle(e.getModel(["pointer","itemStyle"]).getItemStyle()),"auto"===r.style.fill&&r.setStyle("fill",i(Yi(y.get(v,t),x,[0,1],!0))),r.z2EmphasisLift=0,cl(r,e),sl(r,n.get("focus"),n.get("blurScope"))}if(g){var l=p[t];l.useStyle(y.getItemVisual(t,"style")),l.setStyle(e.getModel(["progress","itemStyle"]).getItemStyle()),l.z2EmphasisLift=0,cl(l,e),sl(l,n.get("focus"),n.get("blurScope"))}})),this._progressEls=p)},e.prototype._renderAnchor=function(t,e){var n=t.getModel("anchor");if(n.get("show")){var i=n.get("size"),r=n.get("icon"),o=n.get("offsetCenter"),a=n.get("keepAspect"),s=fy(r,e.cx-i/2+Zi(o[0],e.r),e.cy-i/2+Zi(o[1],e.r),i,i,null,a);s.z2=n.get("showAbove")?1:0,s.setStyle(n.getModel("itemStyle").getItemStyle()),this.group.add(s)}},e.prototype._renderTitleAndDetail=function(t,e,n,i,r){var o=this,a=t.getData(),s=a.mapDimension("value"),l=+t.get("min"),u=+t.get("max"),h=new Ei,c=[],p=[],d=t.isAnimationEnabled();a.diff(this._data).add((function(t){c[t]=new cs({silent:!0}),p[t]=new cs({silent:!0})})).update((function(t,e){c[t]=o._titleEls[e],p[t]=o._detailEls[e]})).execute(),a.each((function(e){var n=a.getItemModel(e),o=a.get(s,e),f=new Ei,g=i(Yi(o,[l,u],[0,1],!0)),y=n.getModel("title");if(y.get("show")){var v=y.get("offsetCenter"),m=r.cx+Zi(v[0],r.r),_=r.cy+Zi(v[1],r.r);(C=c[e]).attr({style:ph(y,{x:m,y:_,text:a.getName(e),align:"center",verticalAlign:"middle"},{inheritColor:g})}),f.add(C)}var x=n.getModel("detail");if(x.get("show")){var b=x.get("offsetCenter"),w=r.cx+Zi(b[0],r.r),S=r.cy+Zi(b[1],r.r),M=Zi(x.get("width"),r.r),I=Zi(x.get("height"),r.r),T=t.get(["progress","show"])?a.getItemVisual(e,"style").fill:g,C=p[e],D=x.get("formatter");C.attr({style:ph(x,{x:w,y:S,text:lD(o,D),width:isNaN(M)?null:M,height:isNaN(I)?null:I,align:"center",verticalAlign:"middle"},{inheritColor:T})}),xh(C,{normal:x},o,(function(t){return lD(t,D)})),d&&bh(C,e,a,t,{getFormattedLabel:function(t,e,n,i,r,a){return lD(a?a.interpolatedValue:o,D)}}),f.add(C)}h.add(f)})),this.group.add(h),this._titleEls=c,this._detailEls=p},e.type="gauge",e}(Tf),cD=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="itemStyle",n.useColorPaletteOnData=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){return MS(this,["value"])},e.type="series.gauge",e.defaultOption={zlevel:0,z:2,center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,"#E6EBF8"]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:"#63677A",width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:"#63677A",width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:"#464646",fontSize:12},pointer:{icon:null,offsetCenter:[0,0],show:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:"#fff",borderWidth:0,borderColor:"#5470c6"}},title:{show:!0,offsetCenter:[0,"20%"],color:"#464646",fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"#464646",fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},e}(ff);var pD=["itemStyle","opacity"],dD=function(t){function e(e,n){var i=t.call(this)||this,r=i,o=new au,a=new cs;return r.setTextContent(a),i.setTextGuideLine(o),i.updateData(e,n,!0),i}return n(e,t),e.prototype.updateData=function(t,e,n){var i=this,r=t.hostModel,o=t.getItemModel(e),a=t.getItemLayout(e),s=o.getModel("emphasis"),l=o.get(pD);l=null==l?1:l,i.useStyle(t.getItemVisual(e,"style")),i.style.lineJoin="round",n?(i.setShape({points:a.points}),i.style.opacity=0,Wu(i,{style:{opacity:l}},r,e)):Hu(i,{style:{opacity:l},shape:{points:a.points}},r,e),cl(i,o),this._updateLabel(t,e),sl(this,s.get("focus"),s.get("blurScope"))},e.prototype._updateLabel=function(t,e){var n=this,i=this.getTextGuideLine(),r=n.getTextContent(),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e).label,l=t.getItemVisual(e,"style"),u=l.fill;hh(r,ch(a),{labelFetcher:t.hostModel,labelDataIndex:e,defaultOpacity:l.opacity,defaultText:t.getName(e)},{normal:{align:s.textAlign,verticalAlign:s.verticalAlign}}),n.setTextConfig({local:!0,inside:!!s.inside,insideStroke:u,outsideFill:u});var h=s.linePoints;i.setShape({points:h}),n.textGuideLineConfig={anchor:h?new ai(h[0][0],h[0][1]):null},Hu(r,{style:{x:s.x,y:s.y}},o,e),r.attr({rotation:s.rotation,originX:s.x,originY:s.y,z2:10}),Hg(n,Wg(a),{stroke:u})},e}(ru),fD=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreLabelLineUpdate=!0,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this._data,o=this.group;i.diff(r).add((function(t){var e=new dD(i,t);i.setItemGraphicEl(t,e),o.add(e)})).update((function(t,e){var n=r.getItemGraphicEl(e);n.updateData(i,t),o.add(n),i.setItemGraphicEl(t,n)})).remove((function(e){Yu(r.getItemGraphicEl(e),t,e)})).execute(),this._data=i},e.prototype.remove=function(){this.group.removeAll(),this._data=null},e.prototype.dispose=function(){},e.type="funnel",e}(Tf),gD=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.useColorPaletteOnData=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new IS(V(this.getData,this),V(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.getInitialData=function(t,e){return MS(this,{coordDimensions:["value"],encodeDefaulter:B(up,this)})},e.prototype._defaultLabelLine=function(t){br(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.prototype.getDataParams=function(e){var n=this.getData(),i=t.prototype.getDataParams.call(this,e),r=n.mapDimension("value"),o=n.getSum(r);return i.percent=o?+(n.get(r,e)/o*100).toFixed(2):0,i.$vars.push("percent"),i},e.type="series.funnel",e.defaultOption={zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(ff);function yD(t,e){t.eachSeriesByType("funnel",(function(t){var n=t.getData(),i=n.mapDimension("value"),r=t.get("sort"),o=function(t,e){return Vc(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e),a=t.get("orient"),s=o.width,l=o.height,u=function(t,e){for(var n=t.mapDimension("value"),i=t.mapArray(n,(function(t){return t})),r=[],o="ascending"===e,a=0,s=t.count();a5)return;var i=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==i.behavior&&this._dispatchExpand({axisExpandWindow:i.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&AD(this,"mousemove")){var e=this._model,n=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),i=n.behavior;"jump"===i&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===i?null:{axisExpandWindow:n.axisExpandWindow,animation:"jump"===i?null:{duration:0}})}}};function AD(t,e){var n=t._model;return n.get("axisExpandable")&&n.get("axisExpandTriggerOn")===e}var LD=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){t.prototype.init.apply(this,arguments),this.mergeOption({})},e.prototype.mergeOption=function(t){var e=this.option;t&&S(e,t,!0),this._initDimensions()},e.prototype.contains=function(t,e){var n=t.get("parallelIndex");return null!=n&&e.getComponent("parallel",n)===this},e.prototype.setAxisExpand=function(t){P(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],(function(e){t.hasOwnProperty(e)&&(this.option[e]=t[e])}),this)},e.prototype._initDimensions=function(){var t=this.dimensions=[],e=this.parallelAxisIndex=[];P(N(this.ecModel.queryComponents({mainType:"parallelAxis"}),(function(t){return(t.get("parallelIndex")||0)===this.componentIndex}),this),(function(n){t.push("dim"+n.get("dim")),e.push(n.componentIndex)}))},e.type="parallel",e.dependencies=["parallelAxis"],e.layoutMode="box",e.defaultOption={zlevel:0,z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},e}(Xc),kD=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.type=r||"value",a.axisIndex=o,a}return n(e,t),e.prototype.isHorizontal=function(){return"horizontal"!==this.coordinateSystem.getModel().get("layout")},e}(hb);function PD(t,e,n,i,r,o){t=t||0;var a=n[1]-n[0];if(null!=r&&(r=RD(r,[0,a])),null!=o&&(o=Math.max(o,null!=r?r:0)),"all"===i){var s=Math.abs(e[1]-e[0]);s=RD(s,[0,a]),r=o=RD(s,[r,o]),i=0}e[0]=RD(e[0],n),e[1]=RD(e[1],n);var l=OD(e,i);e[i]+=t;var u,h=r||0,c=n.slice();return l.sign<0?c[0]+=h:c[1]-=h,e[i]=RD(e[i],c),u=OD(e,i),null!=r&&(u.sign!==l.sign||u.spano&&(e[1-i]=e[i]+u.sign*o),e}function OD(t,e){var n=t[e]-t[1-e];return{span:Math.abs(n),sign:n>0?-1:n<0?1:e?-1:1}}function RD(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}var ND=P,zD=Math.min,ED=Math.max,VD=Math.floor,BD=Math.ceil,FD=ji,GD=Math.PI,HD=function(){function t(t,e,n){this.type="parallel",this._axesMap=ht(),this._axesLayout={},this.dimensions=t.dimensions,this._model=t,this._init(t,e,n)}return t.prototype._init=function(t,e,n){var i=t.dimensions,r=t.parallelAxisIndex;ND(i,(function(t,n){var i=r[n],o=e.getComponent("parallelAxis",i),a=this._axesMap.set(t,new kD(t,Bx(o),[0,0],o.get("type"),i)),s="category"===a.type;a.onBand=s&&o.get("boundaryGap"),a.inverse=o.get("inverse"),o.axis=a,a.model=o,a.coordinateSystem=o.coordinateSystem=this}),this)},t.prototype.update=function(t,e){this._updateAxesFromSeries(this._model,t)},t.prototype.containPoint=function(t){var e=this._makeLayoutInfo(),n=e.axisBase,i=e.layoutBase,r=e.pixelDimIndex,o=t[1-r],a=t[r];return o>=n&&o<=n+e.axisLength&&a>=i&&a<=i+e.layoutLength},t.prototype.getModel=function(){return this._model},t.prototype._updateAxesFromSeries=function(t,e){e.eachSeries((function(n){if(t.contains(n,e)){var i=n.getData();ND(this.dimensions,(function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(i,i.mapDimension(t)),Vx(e.scale,e.model)}),this)}}),this)},t.prototype.resize=function(t,e){this._rect=Vc(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},t.prototype.getRect=function(){return this._rect},t.prototype._makeLayoutInfo=function(){var t,e=this._model,n=this._rect,i=["x","y"],r=["width","height"],o=e.get("layout"),a="horizontal"===o?0:1,s=n[r[a]],l=[0,s],u=this.dimensions.length,h=WD(e.get("axisExpandWidth"),l),c=WD(e.get("axisExpandCount")||0,[0,u]),p=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,d=e.get("axisExpandWindow");d?(t=WD(d[1]-d[0],l),d[1]=d[0]+t):(t=WD(h*(c-1),l),(d=[h*(e.get("axisExpandCenter")||VD(u/2))-t/2])[1]=d[0]+t);var f=(s-t)/(u-c);f<3&&(f=0);var g=[VD(FD(d[0]/h,1))+1,BD(FD(d[1]/h,1))-1],y=f/h*d[0];return{layout:o,pixelDimIndex:a,layoutBase:n[i[a]],layoutLength:s,axisBase:n[i[1-a]],axisLength:n[r[1-a]],axisExpandable:p,axisExpandWidth:h,axisCollapseWidth:f,axisExpandWindow:d,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:y}},t.prototype._layoutAxes=function(){var t=this._rect,e=this._axesMap,n=this.dimensions,i=this._makeLayoutInfo(),r=i.layout;e.each((function(t){var e=[0,i.axisLength],n=t.inverse?1:0;t.setExtent(e[n],e[1-n])})),ND(n,(function(e,n){var o=(i.axisExpandable?XD:UD)(n,i),a={horizontal:{x:o.position,y:i.axisLength},vertical:{x:0,y:o.position}},s={horizontal:GD/2,vertical:0},l=[a[r].x+t.x,a[r].y+t.y],u=s[r],h=[1,0,0,1,0,0];Xn(h,h,u),Un(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:o.axisNameAvailableWidth,axisLabelShow:o.axisLabelShow,nameTruncateMaxWidth:o.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}}),this)},t.prototype.getAxis=function(t){return this._axesMap.get(t)},t.prototype.dataToPoint=function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},t.prototype.eachActiveState=function(t,e,n,i){null==n&&(n=0),null==i&&(i=t.count());var r=this._axesMap,o=this.dimensions,a=[],s=[];P(o,(function(e){a.push(t.mapDimension(e)),s.push(r.get(e).model)}));for(var l=this.hasAxisBrushed(),u=n;ur*(1-h[0])?(l="jump",a=s-r*(1-h[2])):(a=s-r*h[1])>=0&&(a=s-r*(1-h[1]))<=0&&(a=0),(a*=e.axisExpandWidth/u)?PD(a,i,o,"all"):l="none";else{var p=i[1]-i[0];(i=[ED(0,o[1]*s/p-p/2)])[1]=zD(o[1],i[0]+p),i[0]=i[1]-p}return{axisExpandWindow:i,behavior:l}},t}();function WD(t,e){return zD(ED(t,e[0]),e[1])}function UD(t,e){var n=e.layoutLength/(e.axisCount-1);return{position:n*t,axisNameAvailableWidth:n,axisLabelShow:!0}}function XD(t,e){var n,i,r=e.layoutLength,o=e.axisExpandWidth,a=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return t=0;n--)qi(e[n])},e.prototype.getActiveState=function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(+t))return"inactive";if(1===e.length){var n=e[0];if(n[0]<=t&&t<=n[1])return"active"}else for(var i=0,r=e.length;i6}(t)||o){if(a&&!o){"single"===s.brushMode&&pA(t);var l=w(s);l.brushType=AA(l.brushType,a),l.panelId=a===jD?null:a.panelId,o=t._creatingCover=rA(t,l),t._covers.push(o)}if(o){var u=PA[AA(t._brushType,a)];o.__brushOption.range=u.getCreatingRange(IA(t,o,t._track)),i&&(oA(t,o),u.updateCommon(t,o)),aA(t,o),r={isEnd:i}}}else i&&"single"===s.brushMode&&s.removeOnClick&&hA(t,e,n)&&pA(t)&&(r={isEnd:i,removeOnClick:!0});return r}function AA(t,e){return"auto"===t?e.defaultBrushType:t}var LA={mousedown:function(t){if(this._dragging)kA(this,t);else if(!t.target||!t.target.draggable){TA(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=hA(this,t,e))&&(this._dragging=!0,this._track=[e.slice()])}},mousemove:function(t){var e=t.offsetX,n=t.offsetY,i=this.group.transformCoordToLocal(e,n);if(function(t,e,n){if(t._brushType&&!function(t,e,n){var i=t._zr;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}(t,e.offsetX,e.offsetY)){var i=t._zr,r=t._covers,o=hA(t,e,n);if(!t._dragging)for(var a=0;a=0&&(o[r[a].depth]=new Oh(r[a],this,e));if(i&&n)return iD(i,n,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getData().getItemLayout(e);if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t})),e.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getGraph().getEdgeByIndex(e).node1.getLayout();if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t}))})).data},e.prototype.setNodePosition=function(t,e){var n=this.option.data[t];n.localX=e[0],n.localY=e[1]},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.formatTooltip=function(t,e,n){function i(t){return isNaN(t)||null==t}if("edge"===n){var r=this.getDataParams(t,n),o=r.data,a=r.value;return tf("nameValue",{name:o.source+" -- "+o.target,value:a,noValue:i(a)})}var s=this.getGraph().getNodeByIndex(t).getLayout().value,l=this.getDataParams(t,n).data.name;return tf("nameValue",{name:null!=l?l+"":null,value:s,noValue:i(s)})},e.prototype.optionUpdated=function(){},e.prototype.getDataParams=function(e,n){var i=t.prototype.getDataParams.call(this,e,n);if(null==i.value&&"node"===n){var r=this.getGraph().getNodeByIndex(e).getLayout().value;i.value=r}return i},e.type="series.sankey",e.defaultOption={zlevel:0,z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},e}(ff);function ZA(t,e){t.eachSeriesByType("sankey",(function(t){var n=t.get("nodeWidth"),i=t.get("nodeGap"),r=function(t,e){return Vc(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=r;var o=r.width,a=r.height,s=t.getGraph(),l=s.nodes,u=s.edges;!function(t){P(t,(function(t){var e=iL(t.outEdges,nL),n=iL(t.inEdges,nL),i=t.getValue()||0,r=Math.max(e,n,i);t.setLayout({value:r},!0)}))}(l),function(t,e,n,i,r,o,a,s,l){(function(t,e,n,i,r,o,a){for(var s=[],l=[],u=[],h=[],c=0,p=0;p=0;v&&y.depth>d&&(d=y.depth),g.setLayout({depth:v?y.depth:c},!0),"vertical"===o?g.setLayout({dy:n},!0):g.setLayout({dx:n},!0);for(var m=0;mc-1?d:c-1;a&&"left"!==a&&function(t,e,n,i){if("right"===e){for(var r=[],o=t,a=0;o.length;){for(var s=0;s0;o--)KA(s,l*=.99,a),qA(s,r,n,i,a),rL(s,l,a),qA(s,r,n,i,a)}(t,e,o,r,i,a,s),function(t,e){var n="vertical"===e?"x":"y";P(t,(function(t){t.outEdges.sort((function(t,e){return t.node2.getLayout()[n]-e.node2.getLayout()[n]})),t.inEdges.sort((function(t,e){return t.node1.getLayout()[n]-e.node1.getLayout()[n]}))})),P(t,(function(t){var e=0,n=0;P(t.outEdges,(function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy})),P(t.inEdges,(function(t){t.setLayout({ty:n},!0),n+=t.getLayout().dy}))}))}(t,s)}(l,u,n,i,o,a,0!==N(l,(function(t){return 0===t.getLayout().value})).length?0:t.get("layoutIterations"),t.get("orient"),t.get("nodeAlign"))}))}function jA(t){var e=t.hostGraph.data.getRawDataItem(t.dataIndex);return null!=e.depth&&e.depth>=0}function qA(t,e,n,i,r){var o="vertical"===r?"x":"y";P(t,(function(t){var a,s,l;t.sort((function(t,e){return t.getLayout()[o]-e.getLayout()[o]}));for(var u=0,h=t.length,c="vertical"===r?"dx":"dy",p=0;p0&&(a=s.getLayout()[o]+l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]+s.getLayout()[c]+e;if((l=u-e-("vertical"===r?i:n))>0){a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0),u=a;for(p=h-2;p>=0;--p)(l=(s=t[p]).getLayout()[o]+s.getLayout()[c]+e-u)>0&&(a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]}}))}function KA(t,e,n){P(t.slice().reverse(),(function(t){P(t,(function(t){if(t.outEdges.length){var i=iL(t.outEdges,$A,n)/iL(t.outEdges,nL);if(isNaN(i)){var r=t.outEdges.length;i=r?iL(t.outEdges,JA,n)/r:0}if("vertical"===n){var o=t.getLayout().x+(i-eL(t,n))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(i-eL(t,n))*e;t.setLayout({y:a},!0)}}}))}))}function $A(t,e){return eL(t.node2,e)*t.getValue()}function JA(t,e){return eL(t.node2,e)}function QA(t,e){return eL(t.node1,e)*t.getValue()}function tL(t,e){return eL(t.node1,e)}function eL(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function nL(t){return t.getValue()}function iL(t,e,n){for(var i=0,r=t.length,o=-1;++oi&&(i=e)})),P(e,(function(e){var r=new TT({type:"color",mappingMethod:"linear",dataExtent:[n,i],visual:t.get("color")}).mapValueToVisual(e.getLayout().value),o=e.getModel().get(["itemStyle","color"]);null!=o?(e.setVisual("color",o),e.setVisual("style",{fill:o})):(e.setVisual("color",r),e.setVisual("style",{fill:r}))}))}}))}var aL=function(){function t(){}return t.prototype.getInitialData=function(t,e){var n,i,r=e.getComponent("xAxis",this.get("xAxisIndex")),o=e.getComponent("yAxis",this.get("yAxisIndex")),a=r.get("type"),s=o.get("type");"category"===a?(t.layout="horizontal",n=r.getOrdinalMeta(),i=!0):"category"===s?(t.layout="vertical",n=o.getOrdinalMeta(),i=!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],p=[r,o],d=p[u].get("type"),f=p[1-u].get("type"),g=t.data;if(g&&i){var y=[];P(g,(function(t,e){var n;F(t)?(n=t.slice(),t.unshift(e)):F(t.value)?(n=t.value.slice(),t.value.unshift(e)):n=t,y.push(n)})),t.data=y}var v=this.defaultValueDimensions,m=[{name:h,type:r_(d),ordinalMeta:n,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:r_(f),dimsDef:v.slice()}];return MS(this,{coordDimensions:m,dimensionsCount:v.length+1,encodeDefaulter:B(lp,m,this)})},t.prototype.getBaseAxis=function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis},t}(),sL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],n.visualDrawType="stroke",n}return n(e,t),e.type="series.boxplot",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800},e}(ff);L(sL,aL,!0);var lL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this.group,o=this._data;this._data||r.removeAll();var a="horizontal"===t.get("layout")?1:0;i.diff(o).add((function(t){if(i.hasValue(t)){var e=cL(i.getItemLayout(t),i,t,a,!0);i.setItemGraphicEl(t,e),r.add(e)}})).update((function(t,e){var n=o.getItemGraphicEl(e);if(i.hasValue(t)){var s=i.getItemLayout(t);n?pL(s,n,i,t):n=cL(s,i,t,a),r.add(n),i.setItemGraphicEl(t,n)}else r.remove(n)})).remove((function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)})).execute(),this._data=i},e.prototype.remove=function(t){var e=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl((function(t){t&&e.remove(t)}))},e.type="boxplot",e}(Tf),uL=function(){},hL=function(t){function e(e){var n=t.call(this,e)||this;return n.type="boxplotBoxPath",n}return n(e,t),e.prototype.getDefaultShape=function(){return new uL},e.prototype.buildPath=function(t,e){var n=e.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();ig){var x=[v,_];i.push(x)}}}return{boxData:n,outliers:i}}(e.getRawData(),t.config);return[{dimensions:["ItemName","Low","Q1","Q2","Q3","High"],data:i.boxData},{data:i.outliers}]}};var mL=["color","borderColor"],_L=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeClipPath(),this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},e.prototype.incrementalPrepareRender=function(t,e,n){this._clear(),this._updateDrawMode(t)},e.prototype.incrementalRender=function(t,e,n,i){this._isLargeDraw?this._incrementalRenderLarge(t,e):this._incrementalRenderNormal(t,e)},e.prototype._updateDrawMode=function(t){var e=t.pipelineContext.large;null!=this._isLargeDraw&&e===this._isLargeDraw||(this._isLargeDraw=e,this._clear())},e.prototype._renderNormal=function(t){var e=t.getData(),n=this._data,i=this.group,r=e.getLayout("isSimpleBox"),o=t.get("clip",!0),a=t.coordinateSystem,s=a.getArea&&a.getArea();this._data||i.removeAll(),e.diff(n).add((function(n){if(e.hasValue(n)){var a=e.getItemLayout(n);if(o&&SL(s,a))return;var l=wL(a,n,!0);Wu(l,{shape:{points:a.ends}},t,n),ML(l,e,n,r),i.add(l),e.setItemGraphicEl(n,l)}})).update((function(a,l){var u=n.getItemGraphicEl(l);if(e.hasValue(a)){var h=e.getItemLayout(a);o&&SL(s,h)?i.remove(u):(u?Hu(u,{shape:{points:h.ends}},t,a):u=wL(h),ML(u,e,a,r),i.add(u),e.setItemGraphicEl(a,u))}else i.remove(u)})).remove((function(t){var e=n.getItemGraphicEl(t);e&&i.remove(e)})).execute(),this._data=e},e.prototype._renderLarge=function(t){this._clear(),DL(t,this.group);var e=t.get("clip",!0)?Rw(t.coordinateSystem,!1,t):null;e?this.group.setClipPath(e):this.group.removeClipPath()},e.prototype._incrementalRenderNormal=function(t,e){for(var n,i=e.getData(),r=i.getLayout("isSimpleBox");null!=(n=t.next());){var o=wL(i.getItemLayout(n));ML(o,i,n,r),o.incremental=!0,this.group.add(o)}},e.prototype._incrementalRenderLarge=function(t,e){DL(e,this.group,!0)},e.prototype.remove=function(t){this._clear()},e.prototype._clear=function(){this.group.removeAll(),this._data=null},e.type="candlestick",e}(Tf),xL=function(){},bL=function(t){function e(e){var n=t.call(this,e)||this;return n.type="normalCandlestickBox",n}return n(e,t),e.prototype.getDefaultShape=function(){return new xL},e.prototype.buildPath=function(t,e){var n=e.points;this.__simpleBox?(t.moveTo(n[4][0],n[4][1]),t.lineTo(n[6][0],n[6][1])):(t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1]),t.lineTo(n[2][0],n[2][1]),t.lineTo(n[3][0],n[3][1]),t.closePath(),t.moveTo(n[4][0],n[4][1]),t.lineTo(n[5][0],n[5][1]),t.moveTo(n[6][0],n[6][1]),t.lineTo(n[7][0],n[7][1]))},e}(Ka);function wL(t,e,n){var i=t.ends;return new bL({shape:{points:n?IL(i,t):i},z2:100})}function SL(t,e){for(var n=!0,i=0;i0?"borderColor":"borderColor0"])||n.get(["itemStyle",t>0?"color":"color0"]),o=n.getModel("itemStyle").getItemStyle(mL);e.useStyle(o),e.style.fill=null,e.style.stroke=r}var LL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],n}return n(e,t),e.prototype.getShadowDim=function(){return"open"},e.prototype.brushSelector=function(t,e,n){var i=e.getItemLayout(t);return i&&n.rect(i.brushRect)},e.type="series.candlestick",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,clip:!0,itemStyle:{color:"#eb5454",color0:"#47b262",borderColor:"#eb5454",borderColor0:"#47b262",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationEasing:"linear",animationDuration:300},e}(ff);function kL(t){t&&F(t.series)&&P(t.series,(function(t){X(t)&&"k"===t.type&&(t.type="candlestick")}))}L(LL,aL,!0);var PL=["itemStyle","borderColor"],OL=["itemStyle","borderColor0"],RL=["itemStyle","color"],NL=["itemStyle","color0"],zL={seriesType:"candlestick",plan:Sf(),performRawSeries:!0,reset:function(t,e){function n(t,e){return e.get(t>0?RL:NL)}function i(t,e){return e.get(t>0?PL:OL)}if(!e.isSeriesFiltered(t))return!t.pipelineContext.large&&{progress:function(t,e){for(var r;null!=(r=t.next());){var o=e.getItemModel(r),a=e.getItemLayout(r).sign,s=o.getItemStyle();s.fill=n(a,o),s.stroke=i(a,o)||s.fill,I(e.ensureUniqueItemVisual(r,"style"),s)}}}}},EL="undefined"!=typeof Float32Array?Float32Array:Array,VL={seriesType:"candlestick",plan:Sf(),reset:function(t){var e=t.coordinateSystem,n=t.getData(),i=function(t,e){var n,i=t.getBaseAxis(),r="category"===i.type?i.getBandWidth():(n=i.getExtent(),Math.abs(n[1]-n[0])/e.count()),o=Zi(tt(t.get("barMaxWidth"),r),r),a=Zi(tt(t.get("barMinWidth"),1),r),s=t.get("barWidth");return null!=s?Zi(s,r):Math.max(Math.min(r/2,o),a)}(t,n),r=["x","y"],o=n.mapDimension(r[0]),a=n.mapDimensionsAll(r[1]),s=a[0],l=a[1],u=a[2],h=a[3];if(n.setLayout({candleWidth:i,isSimpleBox:i<=1.3}),!(null==o||a.length<4))return{progress:t.pipelineContext.large?function(t,n){var i,r,a=new EL(4*t.count),c=0,p=[],d=[];for(;null!=(r=t.next());){var f=n.get(o,r),g=n.get(s,r),y=n.get(l,r),v=n.get(u,r),m=n.get(h,r);isNaN(f)||isNaN(v)||isNaN(m)?(a[c++]=NaN,c+=3):(a[c++]=BL(n,r,g,y,l),p[0]=f,p[1]=v,i=e.dataToPoint(p,null,d),a[c++]=i?i[0]:NaN,a[c++]=i?i[1]:NaN,p[1]=m,i=e.dataToPoint(p,null,d),a[c++]=i?i[1]:NaN)}n.setLayout("largePoints",a)}:function(t,n){var r;for(;null!=(r=t.next());){var a=n.get(o,r),c=n.get(s,r),p=n.get(l,r),d=n.get(u,r),f=n.get(h,r),g=Math.min(c,p),y=Math.max(c,p),v=w(g,a),m=w(y,a),_=w(d,a),x=w(f,a),b=[];S(b,m,0),S(b,v,1),b.push(I(x),I(m),I(_),I(v)),n.setItemLayout(r,{sign:BL(n,r,c,p,l),initBaseline:c>p?m[1]:v[1],ends:b,brushRect:M(d,f,a)})}function w(t,n){var i=[];return i[0]=n,i[1]=t,isNaN(n)||isNaN(t)?[NaN,NaN]:e.dataToPoint(i)}function S(t,e,n){var r=e.slice(),o=e.slice();r[0]=Fu(r[0]+i/2,1,!1),o[0]=Fu(o[0]-i/2,1,!0),n?t.push(r,o):t.push(o,r)}function M(t,e,n){var r=w(t,n),o=w(e,n);return r[0]-=i/2,o[0]-=i/2,{x:r[0],y:r[1],width:i,height:o[1]-r[1]}}function I(t){return t[0]=Fu(t[0],1),t}}}}};function BL(t,e,n,i,r){return n>i?-1:n0?t.get(r,e-1)<=i?1:-1:1}function FL(t,e){var n=e.rippleEffectColor||e.color;t.eachChild((function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?n:null,fill:"fill"===e.brushType?n:null}})}))}var GL=function(t){function e(e,n){var i=t.call(this)||this,r=new dw(e,n),o=new Ei;return i.add(r),i.add(o),i.updateData(e,n),i}return n(e,t),e.prototype.stopEffectAnimation=function(){this.childAt(1).removeAll()},e.prototype.startEffectAnimation=function(t){for(var e=t.symbolType,n=t.color,i=this.childAt(1),r=0;r<3;r++){var o=fy(e,-1,-1,2,2,n);o.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scaleX:.5,scaleY:.5});var a=-r/3*t.period+t.effectOffset;o.animate("",!0).when(t.period,{scaleX:t.rippleScale/2,scaleY:t.rippleScale/2}).delay(a).start(),o.animateStyle(!0).when(t.period,{opacity:0}).delay(a).start(),i.add(o)}FL(i,t)},e.prototype.updateEffectAnimation=function(t){for(var e=this._effectCfg,n=this.childAt(1),i=["symbolType","period","rippleScale"],r=0;r0&&(a=this._getLineLength(i)/l*1e3),(a!==this._period||s!==this._loop)&&(i.stopAnimation(),a>0)){var h=void 0;h="function"==typeof u?u(n):u,i.__t>0&&(h=-a*i.__t),i.__t=0;var c=i.animate("",s).when(a,{__t:1}).delay(h).during((function(){r._updateSymbolPosition(i)}));s||c.done((function(){r.remove(i)})),c.start()}this._period=a,this._loop=s}},e.prototype._getLineLength=function(t){return Lt(t.__p1,t.__cp1)+Lt(t.__cp1,t.__p2)},e.prototype._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]},e.prototype.updateData=function(t,e,n){this.childAt(0).updateData(t,e,n),this._updateEffectSymbol(t,e)},e.prototype._updateSymbolPosition=function(t){var e=t.__p1,n=t.__p2,i=t.__cp1,r=t.__t,o=[t.x,t.y],a=o.slice(),s=Uo,l=Xo;o[0]=s(e[0],i[0],n[0],r),o[1]=s(e[1],i[1],n[1],r);var u=l(e[0],i[0],n[0],r),h=l(e[1],i[1],n[1],r);t.rotation=-Math.atan2(h,u)-Math.PI/2,"line"!==this._symbolType&&"rect"!==this._symbolType&&"roundRect"!==this._symbolType||(void 0!==t.__lastT&&t.__lastT=0&&!(i[o]<=e);o--);o=Math.min(o,r-2)}else{for(o=a;oe);o++);o=Math.min(o-1,r-2)}var s=(e-i[o])/(i[o+1]-i[o]),l=n[o],u=n[o+1];t.x=l[0]*(1-s)+s*u[0],t.y=l[1]*(1-s)+s*u[1];var h=u[0]-l[0],c=u[1]-l[1];t.rotation=-Math.atan2(c,h)-Math.PI/2,this._lastFrame=o,this._lastFramePercent=e,t.ignore=!1}},e}(UL),ZL=function(){this.polyline=!1,this.curveness=0,this.segs=[]},jL=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new ZL},e.prototype.buildPath=function(t,e){var n=e.segs,i=e.curveness;if(e.polyline)for(var r=0;r0){t.moveTo(n[r++],n[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*i,p=(l+h)/2-(u-s)*i;t.quadraticCurveTo(c,p,u,h)}else t.lineTo(u,h)}},e.prototype.findDataIndex=function(t,e){var n=this.shape,i=n.segs,r=n.curveness,o=this.style.lineWidth;if(n.polyline)for(var a=0,s=0;s0)for(var u=i[s++],h=i[s++],c=1;c0){if(Oa(u,h,(u+p)/2-(h-d)*r,(h+d)/2-(p-u)*r,p,d,o,t,e))return a}else if(ka(u,h,p,d,o,t,e))return a;a++}return-1},e}(Ka),qL=function(){function t(){this.group=new Ei}return t.prototype.isPersistent=function(){return!this._incremental},t.prototype.updateData=function(t){this.group.removeAll();var e=new jL({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},t.prototype.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Tu({silent:!0})),this.group.add(this._incremental)):this._incremental=null},t.prototype.incrementalUpdate=function(t,e){var n=new jL;n.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(n,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(n,!0):(n.rectHover=!0,n.cursor="default",n.__startIndex=t.start,this.group.add(n))},t.prototype.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},t.prototype._setCommon=function(t,e,n){var i=e.hostModel;t.setShape({polyline:i.get("polyline"),curveness:i.get(["lineStyle","curveness"])}),t.useStyle(i.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var r=e.getVisual("style");if(r&&r.stroke&&t.setStyle("stroke",r.stroke),t.setStyle("fill",null),!n){var o=_s(t);o.seriesIndex=i.seriesIndex,t.on("mousemove",(function(e){o.dataIndex=null;var n=t.findDataIndex(e.offsetX,e.offsetY);n>0&&(o.dataIndex=n+t.__startIndex)}))}},t.prototype._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},t}(),KL={seriesType:"lines",plan:Sf(),reset:function(t){var e=t.coordinateSystem,n=t.get("polyline"),i=t.pipelineContext.large;return{progress:function(r,o){var a=[];if(i){var s=void 0,l=r.end-r.start;if(n){for(var u=0,h=r.start;h ")})},e.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},e.type="series.lines",e.dependencies=["grid","polar","geo","calendar"],e.defaultOption={coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}},e}(ff);function nk(t){return t instanceof Array||(t=[t,t]),t}var ik={seriesType:"lines",reset:function(t){var e=nk(t.get("symbol")),n=nk(t.get("symbolSize")),i=t.getData();return i.setVisual("fromSymbol",e&&e[0]),i.setVisual("toSymbol",e&&e[1]),i.setVisual("fromSymbolSize",n&&n[0]),i.setVisual("toSymbolSize",n&&n[1]),{dataEach:i.hasItemOption?function(t,e){var n=t.getItemModel(e),i=nk(n.getShallow("symbol",!0)),r=nk(n.getShallow("symbolSize",!0));i[0]&&t.setItemVisual(e,"fromSymbol",i[0]),i[1]&&t.setItemVisual(e,"toSymbol",i[1]),r[0]&&t.setItemVisual(e,"fromSymbolSize",r[0]),r[1]&&t.setItemVisual(e,"toSymbolSize",r[1])}:null}}};var rk=function(){function t(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var t=C();this.canvas=t}return t.prototype.update=function(t,e,n,i,r,o){var a=this._getBrush(),s=this._getGradient(r,"inRange"),l=this._getGradient(r,"outOfRange"),u=this.pointSize+this.blurSize,h=this.canvas,c=h.getContext("2d"),p=t.length;h.width=e,h.height=n;for(var d=0;d0){var I=o(v)?s:l;v>0&&(v=v*S+w),_[x++]=I[M],_[x++]=I[M+1],_[x++]=I[M+2],_[x++]=I[M+3]*v*256}else x+=4}return c.putImageData(m,0,0),h},t.prototype._getBrush=function(){var t=this._brushCanvas||(this._brushCanvas=C()),e=this.pointSize+this.blurSize,n=2*e;t.width=n,t.height=n;var i=t.getContext("2d");return i.clearRect(0,0,n,n),i.shadowOffsetX=n,i.shadowBlur=this.blurSize,i.shadowColor="#000",i.beginPath(),i.arc(-e,e,this.pointSize,0,2*Math.PI,!0),i.closePath(),i.fill(),t},t.prototype._getGradient=function(t,e){for(var n=this._gradientPixels,i=n[e]||(n[e]=new Uint8ClampedArray(1024)),r=[0,0,0,0],o=0,a=0;a<256;a++)t[e](a/255,!0,r),i[o++]=r[0],i[o++]=r[1],i[o++]=r[2],i[o++]=r[3];return i},t}();function ok(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var ak=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i;e.eachComponent("visualMap",(function(e){e.eachTargetSeries((function(n){n===t&&(i=e)}))})),this.group.removeAll(),this._incrementalDisplayable=null;var r=t.coordinateSystem;"cartesian2d"===r.type||"calendar"===r.type?this._renderOnCartesianAndCalendar(t,n,0,t.getData().count()):ok(r)&&this._renderOnGeo(r,t,i,n)},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll()},e.prototype.incrementalRender=function(t,e,n,i){var r=e.coordinateSystem;r&&(ok(r)?this.render(e,n,i):this._renderOnCartesianAndCalendar(e,i,t.start,t.end,!0))},e.prototype._renderOnCartesianAndCalendar=function(t,e,n,i,r){var o,a,s,l,u=t.coordinateSystem;if(Nw(u,"cartesian2d")){var h=u.getAxis("x"),c=u.getAxis("y");0,o=h.getBandWidth(),a=c.getBandWidth(),s=h.scale.getExtent(),l=c.scale.getExtent()}for(var p=this.group,d=t.getData(),f=t.getModel(["emphasis","itemStyle"]).getItemStyle(),g=t.getModel(["blur","itemStyle"]).getItemStyle(),y=t.getModel(["select","itemStyle"]).getItemStyle(),v=ch(t),m=t.get(["emphasis","focus"]),_=t.get(["emphasis","blurScope"]),x=Nw(u,"cartesian2d")?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],b=n;bs[1]||Il[1])continue;var T=u.dataToPoint([M,I]);w=new ls({shape:{x:Math.floor(Math.round(T[0])-o/2),y:Math.floor(Math.round(T[1])-a/2),width:Math.ceil(o),height:Math.ceil(a)},style:S})}else{if(isNaN(d.get(x[1],b)))continue;w=new ls({z2:1,shape:u.dataToRect([d.get(x[0],b)]).contentShape,style:S})}var C=d.getItemModel(b);if(d.hasItemOption){var D=C.getModel("emphasis");f=D.getModel("itemStyle").getItemStyle(),g=C.getModel(["blur","itemStyle"]).getItemStyle(),y=C.getModel(["select","itemStyle"]).getItemStyle(),m=D.get("focus"),_=D.get("blurScope"),v=ch(C)}var A=t.getRawValue(b),L="-";A&&null!=A[2]&&(L=A[2]+""),hh(w,v,{labelFetcher:t,labelDataIndex:b,defaultOpacity:S.opacity,defaultText:L}),w.ensureState("emphasis").style=f,w.ensureState("blur").style=g,w.ensureState("select").style=y,sl(w,m,_),w.incremental=r,r&&(w.states.emphasis.hoverLayer=!0),p.add(w),d.setItemGraphicEl(b,w)}},e.prototype._renderOnGeo=function(t,e,n,i){var r=n.targetVisuals.inRange,o=n.targetVisuals.outOfRange,a=e.getData(),s=this._hmLayer||this._hmLayer||new rk;s.blurSize=e.get("blurSize"),s.pointSize=e.get("pointSize"),s.minOpacity=e.get("minOpacity"),s.maxOpacity=e.get("maxOpacity");var l=t.getViewRect().clone(),u=t.getRoamTransform();l.applyTransform(u);var h=Math.max(l.x,0),c=Math.max(l.y,0),p=Math.min(l.width+l.x,i.getWidth()),d=Math.min(l.height+l.y,i.getHeight()),f=p-h,g=d-c,y=[a.mapDimension("lng"),a.mapDimension("lat"),a.mapDimension("value")],v=a.mapArray(y,(function(e,n,i){var r=t.dataToPoint([e,n]);return r[0]-=h,r[1]-=c,r.push(i),r})),m=n.getExtent(),_="visualMap.continuous"===n.type?function(t,e){var n=t[1]-t[0];return e=[(e[0]-t[0])/n,(e[1]-t[0])/n],function(t){return t>=e[0]&&t<=e[1]}}(m,n.option.range):function(t,e,n){var i=t[1]-t[0],r=(e=O(e,(function(e){return{interval:[(e.interval[0]-t[0])/i,(e.interval[1]-t[0])/i]}}))).length,o=0;return function(t){var i;for(i=o;i=0;i--){var a;if((a=e[i].interval)[0]<=t&&t<=a[1]){o=i;break}}return i>=0&&i0?1:o<0?-1:0}(n,o,r,i,c),function(t,e,n,i,r,o,a,s,l,u){var h,c=l.valueDim,p=l.categoryDim,d=Math.abs(n[p.wh]),f=t.getItemVisual(e,"symbolSize");h=F(f)?f.slice():null==f?["100%","100%"]:[f,f];h[p.index]=Zi(h[p.index],d),h[c.index]=Zi(h[c.index],i?d:Math.abs(o)),u.symbolSize=h,(u.symbolScale=[h[0]/s,h[1]/s])[c.index]*=(l.isHorizontal?-1:1)*a}(t,e,r,o,0,c.boundingLength,c.pxSign,u,i,c),function(t,e,n,i,r){var o=t.get(lk)||0;o&&(hk.attr({scaleX:e[0],scaleY:e[1],rotation:n}),hk.updateTransform(),o/=hk.getLineScale(),o*=e[i.valueDim.index]);r.valueLineWidth=o}(n,c.symbolScale,l,i,c);var p=c.symbolSize,d=n.get("symbolOffset");return F(d)&&(d=[Zi(d[0],p[0]),Zi(d[1],p[1])]),function(t,e,n,i,r,o,a,s,l,u,h,c){var p=h.categoryDim,d=h.valueDim,f=c.pxSign,g=Math.max(e[d.index]+s,0),y=g;if(i){var v=Math.abs(l),m=Q(t.get("symbolMargin"),"15%")+"",_=!1;m.lastIndexOf("!")===m.length-1&&(_=!0,m=m.slice(0,m.length-1));var x=Zi(m,e[d.index]),b=Math.max(g+2*x,0),w=_?0:2*x,S=pr(i),M=S?i:Dk((v+w)/b);b=g+2*(x=(v-M*g)/2/(_?M:M-1)),w=_?0:2*x,S||"fixed"===i||(M=u?Dk((Math.abs(u)+w)/b):0),y=M*b-w,c.repeatTimes=M,c.symbolMargin=x}var T=f*(y/2),C=c.pathPosition=[];C[p.index]=n[p.wh]/2,C[d.index]="start"===a?T:"end"===a?l-T:l/2,o&&(C[0]+=o[0],C[1]+=o[1]);var D=c.bundlePosition=[];D[p.index]=n[p.xy],D[d.index]=n[d.xy];var A=c.barRectShape=I({},n);A[d.wh]=f*Math.max(Math.abs(n[d.wh]),Math.abs(C[d.index]+T)),A[p.wh]=n[p.wh];var L=c.clipShape={};L[p.xy]=-n[p.xy],L[p.wh]=h.ecSize[p.wh],L[d.xy]=0,L[d.wh]=n[d.wh]}(n,p,r,o,0,d,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,i,c),c}function dk(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function fk(t){var e=t.symbolPatternSize,n=fy(t.symbolType,-e/2,-e/2,e,e);return n.attr({culling:!0}),"image"!==n.type&&n.setStyle({strokeNoScale:!0}),n}function gk(t,e,n,i){var r=t.__pictorialBundle,o=n.symbolSize,a=n.valueLineWidth,s=n.pathPosition,l=e.valueDim,u=n.repeatTimes||0,h=0,c=o[e.valueDim.index]+a+2*n.symbolMargin;for(Ik(t,(function(t){t.__pictorialAnimationIndex=h,t.__pictorialRepeatTimes=u,h0:i<0)&&(r=u-1-t),e[l.index]=c*(r-u/2+.5)+s[l.index],{x:e[0],y:e[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation}}}function yk(t,e,n,i){var r=t.__pictorialBundle,o=t.__pictorialMainPath;o?Tk(o,null,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation},n,i):(o=t.__pictorialMainPath=fk(n),r.add(o),Tk(o,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:0,scaleY:0,rotation:n.rotation},{scaleX:n.symbolScale[0],scaleY:n.symbolScale[1]},n,i))}function vk(t,e,n){var i=I({},e.barRectShape),r=t.__pictorialBarRect;r?Tk(r,null,{shape:i},e,n):(r=t.__pictorialBarRect=new ls({z2:2,shape:i,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}}),t.add(r))}function mk(t,e,n,i){if(n.symbolClip){var r=t.__pictorialClipPath,o=I({},n.clipShape),a=e.valueDim,s=n.animationModel,l=n.dataIndex;if(r)Hu(r,{shape:o},s,l);else{o[a.wh]=0,r=new ls({shape:o}),t.__pictorialBundle.setClipPath(r),t.__pictorialClipPath=r;var u={};u[a.wh]=n.clipShape[a.wh],ah[i?"updateProps":"initProps"](r,{shape:u},s,l)}}}function _k(t,e){var n=t.getItemModel(e);return n.getAnimationDelayParams=xk,n.isAnimationEnabled=bk,n}function xk(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function bk(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function wk(t,e,n,i){var r=new Ei,o=new Ei;return r.add(o),r.__pictorialBundle=o,o.x=n.bundlePosition[0],o.y=n.bundlePosition[1],n.symbolRepeat?gk(r,e,n):yk(r,0,n),vk(r,n,i),mk(r,e,n,i),r.__pictorialShapeStr=Mk(t,n),r.__pictorialSymbolMeta=n,r}function Sk(t,e,n,i){var r=i.__pictorialBarRect;r&&r.removeTextContent();var o=[];Ik(i,(function(t){o.push(t)})),i.__pictorialMainPath&&o.push(i.__pictorialMainPath),i.__pictorialClipPath&&(n=null),P(o,(function(t){Uu(t,{scaleX:0,scaleY:0},n,e,(function(){i.parent&&i.parent.remove(i)}))})),t.setItemGraphicEl(e,null)}function Mk(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function Ik(t,e,n){P(t.__pictorialBundle.children(),(function(i){i!==t.__pictorialBarRect&&e.call(n,i)}))}function Tk(t,e,n,i,r,o){e&&t.attr(e),i.symbolClip&&!r?n&&t.attr(n):n&&ah[r?"updateProps":"initProps"](t,n,i.animationModel,i.dataIndex,o)}function Ck(t,e,n){var i=n.dataIndex,r=n.itemModel,o=r.getModel("emphasis"),a=o.getModel("itemStyle").getItemStyle(),s=r.getModel(["blur","itemStyle"]).getItemStyle(),l=r.getModel(["select","itemStyle"]).getItemStyle(),u=r.getShallow("cursor"),h=o.get("focus"),c=o.get("blurScope"),p=o.get("scale");Ik(t,(function(t){if(t instanceof es){var e=t.style;t.useStyle(I({image:e.image,x:e.x,y:e.y,width:e.width,height:e.height},n.style))}else t.useStyle(n.style);var i=t.ensureState("emphasis");i.style=a,p&&(i.scaleX=1.1*t.scaleX,i.scaleY=1.1*t.scaleY),t.ensureState("blur").style=s,t.ensureState("select").style=l,u&&(t.cursor=u),t.z2=n.z2}));var d=e.valueDim.posDesc[+(n.boundingLength>0)];hh(t.__pictorialBarRect,ch(r),{labelFetcher:e.seriesModel,labelDataIndex:i,defaultText:cw(e.seriesModel.getData(),i),inheritColor:n.style.fill,defaultOpacity:n.style.opacity,defaultOutsidePosition:d}),sl(t,h,c)}function Dk(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var Ak=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n.defaultSymbol="roundRect",n}return n(e,t),e.prototype.getInitialData=function(e){return e.stack=null,t.prototype.getInitialData.apply(this,arguments)},e.type="series.pictorialBar",e.dependencies=["grid"],e.defaultOption=zh(qw.defaultOption,{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",progressive:0,emphasis:{scale:!1},select:{itemStyle:{borderColor:"#212121"}}}),e}(qw);var Lk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._layers=[],n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this,o=this.group,a=t.getLayerSeries(),s=i.getLayout("layoutInfo"),l=s.rect,u=s.boundaryGap;function h(t){return t.name}o.x=0,o.y=l.y+u[0];var c=new n_(this._layersSeries||[],a,h,h),p=[];function d(e,n,s){var l=r._layers;if("remove"!==e){for(var u,h,c=[],d=[],f=a[n].indices,g=0;go&&(o=s),i.push(s)}for(var u=0;uo&&(o=c)}return{y0:r,max:o}}(l),h=u.y0,c=n/u.max,p=o.length,d=o[0].indices.length,f=0;fMath.PI/2?"right":"left"):w&&"center"!==w?"left"===w?(v=r.r0+b,a>Math.PI/2&&(w="right")):"right"===w&&(v=r.r-b,a>Math.PI/2&&(w="left")):(v=(r.r+r.r0)/2,w="center"),d.style.align=w,d.style.verticalAlign=f(o,"verticalAlign")||"middle",d.x=v*s+r.cx,d.y=v*l+r.cy;var S=f(o,"rotate"),M=0;"radial"===S?(M=-a)<-Math.PI/2&&(M+=Math.PI):"tangential"===S?(M=Math.PI/2-a)>Math.PI/2?M-=Math.PI:M<-Math.PI/2&&(M+=Math.PI):"number"==typeof S&&(M=S*Math.PI/180),d.rotation=M})),h.dirtyStyle()},e}(Jl),Nk="sunburstRootToNode",zk="sunburstHighlight";var Ek=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this;this.seriesModel=t,this.api=n,this.ecModel=e;var o=t.getData(),a=o.tree.root,s=t.getViewRoot(),l=this.group,u=t.get("renderLabelForZeroData"),h=[];s.eachNode((function(t){h.push(t)}));var c=this._oldChildren||[];!function(i,r){if(0===i.length&&0===r.length)return;function s(t){return t.getId()}function h(s,h){!function(i,r){u||!i||i.getValue()||(i=null);if(i!==a&&r!==a)if(r&&r.piece)i?(r.piece.updateData(!1,i,t,e,n),o.setItemGraphicEl(i.dataIndex,r.piece)):function(t){if(!t)return;t.piece&&(l.remove(t.piece),t.piece=null)}(r);else if(i){var s=new Rk(i,t,e,n);l.add(s),o.setItemGraphicEl(i.dataIndex,s)}}(null==s?null:i[s],null==h?null:r[h])}new n_(r,i,s,s).add(h).update(h).remove(B(h,null)).execute()}(h,c),function(i,o){o.depth>0?(r.virtualPiece?r.virtualPiece.updateData(!1,i,t,e,n):(r.virtualPiece=new Rk(i,t,e,n),l.add(r.virtualPiece)),o.piece.off("click"),r.virtualPiece.on("click",(function(t){r._rootToNode(o.parentNode)}))):r.virtualPiece&&(l.remove(r.virtualPiece),r.virtualPiece=null)}(a,s),this._initEvents(),this._oldChildren=h},e.prototype._initEvents=function(){var t=this;this.group.off("click"),this.group.on("click",(function(e){var n=!1;t.seriesModel.getViewRoot().eachNode((function(i){if(!n&&i.piece&&i.piece===e.target){var r=i.getModel().get("nodeClick");if("rootToNode"===r)t._rootToNode(i);else if("link"===r){var o=i.getModel(),a=o.get("link");if(a)Pc(a,o.get("target",!0)||"_blank")}n=!0}}))}))},e.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:Nk,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},e.prototype.containPoint=function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}},e.type="sunburst",e}(Tf),Vk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreStyleOnData=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};Bk(n);var i=O(t.levels||[],(function(t){return new Oh(t,this,e)}),this),r=$I.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e),o=i[n.depth];return o&&(t.parentModel=o),t}))}));return r.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treePathInfo=eT(i,this),n},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.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)},e.prototype.enableAriaDecal=function(){lT(this)},e.type="series.sunburst",e.defaultOption={zlevel:0,z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],levels:[],sort:"desc"},e}(ff);function Bk(t){var e=0;P(t.children,(function(t){Bk(t);var n=t.value;F(n)&&(n=n[0]),e+=n}));var n=t.value;F(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),F(t.value)?t.value[0]=n:t.value=n}var Fk=Math.PI/180;function Gk(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.get("center"),i=t.get("radius");F(i)||(i=[0,i]),F(e)||(e=[e,e]);var r=n.getWidth(),o=n.getHeight(),a=Math.min(r,o),s=Zi(e[0],r),l=Zi(e[1],o),u=Zi(i[0],a/2),h=Zi(i[1],a/2),c=-t.get("startAngle")*Fk,p=t.get("minAngle")*Fk,d=t.getData().tree.root,f=t.getViewRoot(),g=f.depth,y=t.get("sort");null!=y&&Hk(f,y);var v=0;P(f.children,(function(t){!isNaN(t.getValue())&&v++}));var m=f.getValue(),_=Math.PI/(m||v)*2,x=f.depth>0,b=f.height-(x?-1:1),w=(h-u)/(b||1),S=t.get("clockwise"),M=t.get("stillShowZeroSum"),I=S?1:-1,T=function(t,e){if(t){var n=e;if(t!==d){var i=t.getValue(),r=0===m&&M?_:i*_;r1;)r=r.parentNode;var o=n.getColorFromPalette(r.name||r.dataIndex+"",e);return t.depth>1&&"string"==typeof o&&(o=Ue(o,(t.depth-1)/(i-1)*.5)),o}(r,t,i.root.height)),I(n.ensureUniqueItemVisual(r.dataIndex,"style"),o)}))}))}function Uk(t,e){return e=e||[0,0],O(["x","y"],(function(n,i){var r=this.getAxis(n),o=e[i],a=t[i]/2;return"category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a))}),this)}function Xk(t,e){return e=e||[0,0],O([0,1],(function(n){var i=e[n],r=t[n]/2,o=[],a=[];return o[n]=i-r,a[n]=i+r,o[1-n]=a[1-n]=e[1-n],Math.abs(this.dataToPoint(o)[n]-this.dataToPoint(a)[n])}),this)}function Yk(t,e){var n=this.getAxis(),i=e instanceof Array?e[0]:e,r=(t instanceof Array?t[0]:t)/2;return"category"===n.type?n.getBandWidth():Math.abs(n.dataToCoord(i-r)-n.dataToCoord(i+r))}function Zk(t,e){return e=e||[0,0],O(["Radius","Angle"],(function(n,i){var r=this["get"+n+"Axis"](),o=e[i],a=t[i]/2,s="category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a));return"Angle"===n&&(s=s*Math.PI/180),s}),this)}function jk(t,e,n,i){return t&&(t.legacy||!1!==t.legacy&&!n&&!i&&"tspan"!==e&&("text"===e||dt(t,"text")))}function qk(t,e,n){var i,r,o,a=t;if("text"===e)o=a;else{o={},dt(a,"text")&&(o.text=a.text),dt(a,"rich")&&(o.rich=a.rich),dt(a,"textFill")&&(o.fill=a.textFill),dt(a,"textStroke")&&(o.stroke=a.textStroke),r={type:"text",style:o,silent:!0},i={};var s=dt(a,"textPosition");n?i.position=s?a.textPosition:"inside":s&&(i.position=a.textPosition),dt(a,"textPosition")&&(i.position=a.textPosition),dt(a,"textOffset")&&(i.offset=a.textOffset),dt(a,"textRotation")&&(i.rotation=a.textRotation),dt(a,"textDistance")&&(i.distance=a.textDistance)}return Kk(o,t),P(o.rich,(function(t){Kk(t,t)})),{textConfig:i,textContent:r}}function Kk(t,e){e&&(e.font=e.textFont||e.font,dt(e,"textStrokeWidth")&&(t.lineWidth=e.textStrokeWidth),dt(e,"textAlign")&&(t.align=e.textAlign),dt(e,"textVerticalAlign")&&(t.verticalAlign=e.textVerticalAlign),dt(e,"textLineHeight")&&(t.lineHeight=e.textLineHeight),dt(e,"textWidth")&&(t.width=e.textWidth),dt(e,"textHeight")&&(t.height=e.textHeight),dt(e,"textBackgroundColor")&&(t.backgroundColor=e.textBackgroundColor),dt(e,"textPadding")&&(t.padding=e.textPadding),dt(e,"textBorderColor")&&(t.borderColor=e.textBorderColor),dt(e,"textBorderWidth")&&(t.borderWidth=e.textBorderWidth),dt(e,"textBorderRadius")&&(t.borderRadius=e.textBorderRadius),dt(e,"textBoxShadowColor")&&(t.shadowColor=e.textBoxShadowColor),dt(e,"textBoxShadowBlur")&&(t.shadowBlur=e.textBoxShadowBlur),dt(e,"textBoxShadowOffsetX")&&(t.shadowOffsetX=e.textBoxShadowOffsetX),dt(e,"textBoxShadowOffsetY")&&(t.shadowOffsetY=e.textBoxShadowOffsetY))}function $k(t,e,n){var i=t;i.textPosition=i.textPosition||n.position||"inside",null!=n.offset&&(i.textOffset=n.offset),null!=n.rotation&&(i.textRotation=n.rotation),null!=n.distance&&(i.textDistance=n.distance);var r=i.textPosition.indexOf("inside")>=0,o=t.fill||"#000";Jk(i,e);var a=null==i.textFill;return r?a&&(i.textFill=n.insideFill||"#fff",!i.textStroke&&n.insideStroke&&(i.textStroke=n.insideStroke),!i.textStroke&&(i.textStroke=o),null==i.textStrokeWidth&&(i.textStrokeWidth=2)):(a&&(i.textFill=t.fill||n.outsideFill||"#000"),!i.textStroke&&n.outsideStroke&&(i.textStroke=n.outsideStroke)),i.text=e.text,i.rich=e.rich,P(e.rich,(function(t){Jk(t,t)})),i}function Jk(t,e){e&&(dt(e,"fill")&&(t.textFill=e.fill),dt(e,"stroke")&&(t.textStroke=e.fill),dt(e,"lineWidth")&&(t.textStrokeWidth=e.lineWidth),dt(e,"font")&&(t.font=e.font),dt(e,"fontStyle")&&(t.fontStyle=e.fontStyle),dt(e,"fontWeight")&&(t.fontWeight=e.fontWeight),dt(e,"fontSize")&&(t.fontSize=e.fontSize),dt(e,"fontFamily")&&(t.fontFamily=e.fontFamily),dt(e,"align")&&(t.textAlign=e.align),dt(e,"verticalAlign")&&(t.textVerticalAlign=e.verticalAlign),dt(e,"lineHeight")&&(t.textLineHeight=e.lineHeight),dt(e,"width")&&(t.textWidth=e.width),dt(e,"height")&&(t.textHeight=e.height),dt(e,"backgroundColor")&&(t.textBackgroundColor=e.backgroundColor),dt(e,"padding")&&(t.textPadding=e.padding),dt(e,"borderColor")&&(t.textBorderColor=e.borderColor),dt(e,"borderWidth")&&(t.textBorderWidth=e.borderWidth),dt(e,"borderRadius")&&(t.textBorderRadius=e.borderRadius),dt(e,"shadowColor")&&(t.textBoxShadowColor=e.shadowColor),dt(e,"shadowBlur")&&(t.textBoxShadowBlur=e.shadowBlur),dt(e,"shadowOffsetX")&&(t.textBoxShadowOffsetX=e.shadowOffsetX),dt(e,"shadowOffsetY")&&(t.textBoxShadowOffsetY=e.shadowOffsetY),dt(e,"textShadowColor")&&(t.textShadowColor=e.textShadowColor),dt(e,"textShadowBlur")&&(t.textShadowBlur=e.textShadowBlur),dt(e,"textShadowOffsetX")&&(t.textShadowOffsetX=e.textShadowOffsetX),dt(e,"textShadowOffsetY")&&(t.textShadowOffsetY=e.textShadowOffsetY))}var Qk=La.CMD,tP=2*Math.PI,eP=["x","y"],nP=["width","height"],iP=[];function rP(t,e){return Math.abs(t-e)<1e-5}function oP(t){var e,n,i,r,o,a=t.data,s=t.len(),l=[],u=0,h=0,c=0,p=0;function d(t,n){e&&e.length>2&&l.push(e),e=[t,n]}function f(t,n,i,r){rP(t,i)&&rP(n,r)||e.push(t,n,i,r,i,r)}function g(t,n,i,r,o,a){var s=Math.abs(n-t),l=4*Math.tan(s/4)/3,u=nM:C2&&l.push(e),l}function aP(t,e){var n=t.length,i=e.length;if(n===i)return[t,e];for(var r=n0)for(var b=i/n,w=-i/2;w<=i/2;w+=b){var S=Math.sin(w),M=Math.cos(w),I=0;for(_=0;_c.width?1:0,r=nP[i],o=eP[i],a=c[r]/e,s=c[o],l=0;li[1]&&i.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:i[1],r0:i[0]},api:{coord:function(i){var r=e.dataToRadius(i[0]),o=n.dataToAngle(i[1]),a=t.coordToPoint([r,o]);return a.push(r,o*Math.PI/180),a},size:V(Zk,t)}}},calendar:function(t){var e=t.getRect(),n=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:n.start,end:n.end,weeks:n.weeks,dayCount:n.allDay}},api:{coord:function(e,n){return t.dataToPoint(e,n)}}}}},BP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){this.currentZLevel=this.get("zlevel",!0),this.currentZ=this.get("z",!0)},e.prototype.getInitialData=function(t,e){return F_(this.getSource(),this)},e.prototype.getDataParams=function(e,n,i){var r=t.prototype.getDataParams.call(this,e,n);return i&&(r.info=MP(i).info),r},e.type="series.custom",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,clip:!1},e}(ff),FP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this._data,o=t.getData(),a=this.group,s=aO(t,o,e,n);r||a.removeAll();var l=t.__transientTransitionOpt;if(!l||null!=l.from&&null!=l.to){var u=new bO(t,l),h=l?"multiple":"oneToOne";new n_(r?r.getIndices():[],o.getIndices(),GP(r,h,l&&l.from),GP(o,h,l&&l.to),null,h).add((function(e){lO(n,null,e,s(e,i),t,a,o,null)})).remove((function(e){vO(r.getItemGraphicEl(e),t,a)})).update((function(e,l){u.reset("oneToOne");var h=r.getItemGraphicEl(l);u.findAndAddFrom(h),u.hasFrom()&&(xO(h,a),h=null),lO(n,h,e,s(e,i),t,a,o,u),u.applyMorphing()})).updateManyToOne((function(e,l){u.reset("manyToOne");for(var h=0;h=0){!s&&(s=r[t]={});var f=E(l);for(c=0;c=0){var d=t.getAnimationStyleProps(),f=d?d.style:null;if(f){!a&&(a=r.style={});var g=E(i);for(h=0;h=p;d--)vO(e.childAt(d),r,e)}(t,e,n,i,r,s),l>=0?o.replaceAt(e,l):o.add(e),e}function hO(t,e){var n,i=MP(t),r=e.type,o=e.shape,a=e.style;return null!=r&&r!==i.customGraphicType||"path"===r&&((n=o)&&(dt(n,"pathData")||dt(n,"d")))&&mO(o)!==i.customPathData||"image"===r&&dt(a,"image")&&a.image!==i.customImagePath}function cO(t,e,n){var i=e?pO(t,e):t,r=e?dO(t,i,DP):t.style,o=t.type,a=i?i.textConfig:null,s=t.textContent,l=s?e?pO(s,e):s:null;if(r&&(n.isLegacy||jk(r,o,!!a,!!l))){n.isLegacy=!0;var u=qk(r,o,!e);!a&&u.textConfig&&(a=u.textConfig),!l&&u.textContent&&(l=u.textContent)}if(!e&&l){var h=l;!h.type&&(h.type="text")}var c=e?n[e]:n.normal;c.cfg=a,c.conOpt=l}function pO(t,e){return e?t?t[e]:null:t}function dO(t,e,n){var i=e&&e.style;return null==i&&n===DP&&t&&(i=t.styleEmphasis),i}function fO(t,e){var n=t&&t.name;return null!=n?n:"e\0\0"+e}function gO(t,e){var n=this.context,i=null!=t?n.newChildren[t]:null,r=null!=e?n.oldChildren[e]:null;uO(n.api,r,n.dataIndex,i,n.seriesModel,n.group,0,n.morphPreparation)}function yO(t){var e=this.context;vO(e.oldChildren[t],e.seriesModel,e.group)}function vO(t,e,n){if(t){var i=MP(t).leaveToProps;i?Hu(t,i,e,{cb:function(){n.remove(t)}}):n.remove(t)}}function mO(t){return t&&(t.pathData||t.d)}function _O(t){return t&&t instanceof Ka}function xO(t,e){t&&e.remove(t)}var bO=function(){function t(t,e){this._fromList=[],this._toList=[],this._toElOptionList=[],this._allPropsFinalList=[],this._toDataIndices=[],this._morphConfigList=[],this._seriesModel=t,this._transOpt=e}return t.prototype.hasFrom=function(){return!!this._fromList.length},t.prototype.findAndAddFrom=function(t){if(t&&(MP(t).canMorph&&this._fromList.push(t),t.isGroup))for(var e=t.childrenRef(),n=0;n=n?i-a:o;this._manyToOneForSingleTo(r,a>=i?null:a,s)}else if("oneToMany"===t)for(var l=Math.max(1,Math.floor(n/i)),u=0,h=0;u=n?n-u:l;this._oneToManyForSingleFrom(u,c,h>=i?null:h)}},t.prototype._oneToOneForSingleTo=function(t,e){var n,i=this._toList[t],r=this._toElOptionList[t],o=this._toDataIndices[t],a=this._allPropsFinalList[t],s=this._fromList[e],l=this._getOrCreateMorphConfig(o),u=l.duration;if(s&&gP(s)){if(UP(i,a,r.style),u){var h=yP([s],i,l,wO);this._processResultIndividuals(h,t,null)}}else{var c=u&&s&&(s!==i||(fP(n=s)||gP(n)))?s:null,p={};YP("shape",i,c,r,p,!1),YP("extra",i,c,r,p,!1),jP(i,c,r,p,!1),qP(i,c,r,r.style,p,!1),UP(i,a,r.style),c&&cP(c,i,l),XP(i,o,r,this._seriesModel,p,!1)}},t.prototype._manyToOneForSingleTo=function(t,e,n){var i=this._toList[t],r=this._toElOptionList[t];UP(i,this._allPropsFinalList[t],r.style);var o=this._getOrCreateMorphConfig(this._toDataIndices[t]);if(o.duration&&null!=e){for(var a=[],s=e;sa)return!0;if(o){var s=uM(t).seriesDataCount,l=i.getExtent();return Math.abs(l[0]-l[1])/s>a}return!1}return!0===n},t.prototype.makeElOption=function(t,e,n,i,r){},t.prototype.createPointerEl=function(t,e,n,i){var r=e.pointer;if(r){var o=SO(t).pointerEl=new ah[r.type](MO(e.pointer));t.add(o)}},t.prototype.createLabelEl=function(t,e,n,i){if(e.label){var r=SO(t).labelEl=new cs(MO(e.label));t.add(r),AO(r,i)}},t.prototype.updatePointerEl=function(t,e,n){var i=SO(t).pointerEl;i&&e.pointer&&(i.setStyle(e.pointer.style),n(i,{shape:e.pointer.shape}))},t.prototype.updateLabelEl=function(t,e,n,i){var r=SO(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{x:e.label.x,y:e.label.y}),AO(r,i))},t.prototype._renderHandle=function(t){if(!this._dragging&&this.updateHandleTransform){var e,n=this._axisPointerModel,i=this._api.getZr(),r=this._handle,o=n.getModel("handle"),a=n.get("status");if(!o.get("show")||!a||"hide"===a)return r&&i.remove(r),void(this._handle=null);this._handle||(e=!0,r=this._handle=eh(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){ee(t.event)},onmousedown:IO(this._onHandleDragMove,this,0,0),drift:IO(this._onHandleDragMove,this),ondragend:IO(this._onHandleDragEnd,this)}),i.add(r)),kO(r,n,!1),r.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=o.get("size");F(s)||(s=[s,s]),r.scaleX=s[0]/2,r.scaleY=s[1]/2,zf(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},t.prototype._moveHandleToValue=function(t,e){CO(this._axisPointerModel,!e&&this._moveAnimation,this._handle,LO(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},t.prototype._onHandleDragMove=function(t,e){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(LO(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(LO(i)),SO(n).lastProp=null,this._doDispatchAxisPointer()}},t.prototype._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}]})}},t.prototype._onHandleDragEnd=function(){if(this._dragging=!1,this._handle){var t=this._axisPointerModel.get("value");this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"})}},t.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),n=this._group,i=this._handle;e&&n&&(this._lastGraphicKey=null,n&&e.remove(n),i&&e.remove(i),this._group=null,this._handle=null,this._payloadInfo=null)},t.prototype.doClear=function(){},t.prototype.buildLabel=function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}},t}();function CO(t,e,n,i){DO(SO(n).lastProp,i)||(SO(n).lastProp=i,e?Hu(n,i,t):(n.stopAnimation(),n.attr(i)))}function DO(t,e){if(X(t)&&X(e)){var n=!0;return P(e,(function(e,i){n=n&&DO(t[i],e)})),!!n}return t===e}function AO(t,e){t[e.get(["label","show"])?"show":"hide"]()}function LO(t){return{x:t.x||0,y:t.y||0,rotation:t.rotation||0}}function kO(t,e,n){var i=e.get("z"),r=e.get("zlevel");t&&t.traverse((function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=r&&(t.zlevel=r),t.silent=n)}))}function PO(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line"===n?(e=i.getLineStyle()).fill=null:"shadow"===n&&((e=i.getAreaStyle()).stroke=null),e}function OO(t,e,n,i,r){var o=RO(n.get("value"),e.axis,e.ecModel,n.get("seriesDataIndices"),{precision:n.get(["label","precision"]),formatter:n.get(["label","formatter"])}),a=n.getModel("label"),s=wc(a.get("padding")||0),l=a.getFont(),u=bi(o,l),h=r.position,c=u.width+s[1]+s[3],p=u.height+s[0]+s[2],d=r.align;"right"===d&&(h[0]-=c),"center"===d&&(h[0]-=c/2);var f=r.verticalAlign;"bottom"===f&&(h[1]-=p),"middle"===f&&(h[1]-=p/2),function(t,e,n,i){var r=i.getWidth(),o=i.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+n,o)-n,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}(h,c,p,i);var g=a.get("backgroundColor");g&&"auto"!==g||(g=e.get(["axisLine","lineStyle","color"])),t.label={x:h[0],y:h[1],style:ph(a,{text:o,font:l,fill:a.getTextColor(),padding:s,backgroundColor:g}),z2:10}}function RO(t,e,n,i,r){t=e.scale.parse(t);var o=e.scale.getLabel({value:t},{precision:r.precision}),a=r.formatter;if(a){var s={value:Gx(e,{value:t}),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};P(i,(function(t){var e=n.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,r=e&&e.getDataParams(i);r&&s.seriesData.push(r)})),H(a)?o=a.replace("{value}",o):G(a)&&(o=a(s))}return o}function NO(t,e,n){var i=[1,0,0,1,0,0];return Xn(i,i,n.rotation),Un(i,i,n.position),qu([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}function zO(t,e,n,i,r,o){var a=tM.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get(["label","margin"]),OO(e,i,r,o,{position:NO(i.axis,t,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})}function EO(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}}function VO(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}function BO(t,e,n,i,r,o){return{cx:t,cy:e,r0:n,r:i,startAngle:r,endAngle:o,clockwise:!0}}var FO=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.grid,s=i.get("type"),l=GO(a,o).getOtherAxis(o).getGlobalExtent(),u=o.toGlobalCoord(o.dataToCoord(e,!0));if(s&&"none"!==s){var h=PO(i),c=HO[s](o,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}zO(e,t,YS(a.model,n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=YS(e.axis.grid.model,e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=NO(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.grid,a=r.getGlobalExtent(!0),s=GO(o,r).getOtherAxis(r).getGlobalExtent(),l="x"===r.dim?0:1,u=[t.x,t.y];u[l]+=e[l],u[l]=Math.min(a[1],u[l]),u[l]=Math.max(a[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{x:u[0],y:u[1],rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}},e}(TO);function GO(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}var HO={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:EO([e,n[0]],[e,n[1]],WO(t))}},shadow:function(t,e,n){var i=Math.max(1,t.getBandWidth()),r=n[1]-n[0];return{type:"Rect",shape:VO([e-i/2,n[0]],[i,r],WO(t))}}};function WO(t){return"x"===t.dim?0:1}var UO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="axisPointer",e.defaultOption={show:"auto",zlevel:0,z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#B9BEC9",width:1,type:"dashed"},shadowStyle:{color:"rgba(210,219,238,0.2)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}},e}(Xc),XO=kr(),YO=P;function ZO(t,e,n){if(!a.node){var i=e.getZr();XO(i).records||(XO(i).records={}),function(t,e){if(XO(t).initialized)return;function n(n,i){t.on(n,(function(n){var r=function(t){var e={showTip:[],hideTip:[]},n=function(i){var r=e[i.type];r?r.push(i):(i.dispatchAction=n,t.dispatchAction(i))};return{dispatchAction:n,pendings:e}}(e);YO(XO(t).records,(function(t){t&&i(t,n,r.dispatchAction)})),function(t,e){var n,i=t.showTip.length,r=t.hideTip.length;i?n=t.showTip[i-1]:r&&(n=t.hideTip[r-1]);n&&(n.dispatchAction=null,e.dispatchAction(n))}(r.pendings,e)}))}XO(t).initialized=!0,n("click",B(qO,"click")),n("mousemove",B(qO,"mousemove")),n("globalout",jO)}(i,e),(XO(i).records[t]||(XO(i).records[t]={})).handler=n}}function jO(t,e,n){t.handler("leave",null,n)}function qO(t,e,n,i){e.handler(t,n,i)}function KO(t,e){if(!a.node){var n=e.getZr();(XO(n).records||{})[t]&&(XO(n).records[t]=null)}}var $O=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=e.getComponent("tooltip"),r=t.get("triggerOn")||i&&i.get("triggerOn")||"mousemove|click";ZO("axisPointer",n,(function(t,e,n){"none"!==r&&("leave"===t||r.indexOf(t)>=0)&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})}))},e.prototype.remove=function(t,e){KO("axisPointer",e)},e.prototype.dispose=function(t,e){KO("axisPointer",e)},e.type="axisPointer",e}(wf);function JO(t,e){var n,i=[],r=t.seriesIndex;if(null==r||!(n=e.getSeriesByIndex(r)))return{point:[]};var o=n.getData(),a=Lr(o,t);if(null==a||a<0||F(a))return{point:[]};var s=o.getItemGraphicEl(a),l=n.coordinateSystem;if(n.getTooltipPosition)i=n.getTooltipPosition(a)||[];else if(l&&l.dataToPoint)if(t.isStacked){var u=l.getBaseAxis(),h=l.getOtherAxis(u).dim,c=u.dim,p="x"===h||"radius"===h?1:0,d=o.mapDimension(c),f=[];f[p]=o.get(d,a),f[1-p]=o.get(o.getCalculationInfo("stackResultDimension"),a),i=l.dataToPoint(f)||[]}else i=l.dataToPoint(o.getValues(O(l.dimensions,(function(t){return o.mapDimension(t)})),a))||[];else if(s){var g=s.getBoundingRect().clone();g.applyTransform(s.transform),i=[g.x+g.width/2,g.y+g.height/2]}return{point:i,el:s}}var QO=kr();function tR(t,e,n){var i=t.currTrigger,r=[t.x,t.y],o=t,a=t.dispatchAction||V(n.dispatchAction,n),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){oR(r)&&(r=JO({seriesIndex:o.seriesIndex,dataIndex:o.dataIndex},e).point);var l=oR(r),u=o.axesInfo,h=s.axesInfo,c="leave"===i||oR(r),p={},d={},f={list:[],map:{}},g={showPointer:B(nR,d),showTooltip:B(iR,f)};P(s.coordSysMap,(function(t,e){var n=l||t.containPoint(r);P(s.coordSysAxesInfo[e],(function(t,e){var i=t.axis,o=function(t,e){for(var n=0;n<(t||[]).length;n++){var i=t[n];if(e.axis.dim===i.axisDim&&e.axis.model.componentIndex===i.axisIndex)return i}}(u,t);if(!c&&n&&(!u||o)){var a=o&&o.value;null!=a||l||(a=i.pointToData(r)),null!=a&&eR(t,a,g,!1,p)}}))}));var y={};return P(h,(function(t,e){var n=t.linkGroup;n&&!d[e]&&P(n.axesInfo,(function(e,i){var r=d[i];if(e!==t&&r){var o=r.value;n.mapper&&(o=t.axis.scale.parse(n.mapper(o,rR(e),rR(t)))),y[t.key]=o}}))})),P(y,(function(t,e){eR(h[e],t,g,!0,p)})),function(t,e,n){var i=n.axesInfo=[];P(e,(function(e,n){var r=e.axisPointerModel.option,o=t[n];o?(!e.useHandle&&(r.status="show"),r.value=o.value,r.seriesDataIndices=(o.payloadBatch||[]).slice()):!e.useHandle&&(r.status="hide"),"show"===r.status&&i.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:r.value})}))}(d,h,p),function(t,e,n,i){if(oR(e)||!t.list.length)return void i({type:"hideTip"});var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};i({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}(f,r,t,a),function(t,e,n){var i=n.getZr(),r="axisPointerLastHighlights",o=QO(i)[r]||{},a=QO(i)[r]={};P(t,(function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&P(n.seriesDataIndices,(function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t}))}));var s=[],l=[];P(o,(function(t,e){!a[e]&&l.push(t)})),P(a,(function(t,e){!o[e]&&s.push(t)})),l.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:l}),s.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}(h,0,n),p}}function eR(t,e,n,i,r){var o=t.axis;if(!o.scale.isBlank()&&o.containData(e))if(t.involveSeries){var a=function(t,e){var n=e.axis,i=n.dim,r=t,o=[],a=Number.MAX_VALUE,s=-1;return P(e.seriesModels,(function(e,l){var u,h,c=e.getData().mapDimensionsAll(i);if(e.getAxisTooltipData){var p=e.getAxisTooltipData(c,t,n);h=p.dataIndices,u=p.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===n.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var d=t-u,f=Math.abs(d);f<=a&&((f=0&&s<0)&&(a=f,s=d,r=u,o.length=0),P(h,(function(t){o.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})})))}})),{payloadBatch:o,snapToValue:r}}(e,t),s=a.payloadBatch,l=a.snapToValue;s[0]&&null==r.seriesIndex&&I(r,s[0]),!i&&t.snap&&o.containData(l)&&null!=l&&(e=l),n.showPointer(t,e,s),n.showTooltip(t,a,l)}else n.showPointer(t,e)}function nR(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}function iR(t,e,n,i){var r=n.payloadBatch,o=e.axis,a=o.model,s=e.axisPointerModel;if(e.triggerTooltip&&r.length){var l=e.coordSys.model,u=cM(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:o.dim,axisIndex:a.componentIndex,axisType:a.type,axisId:a.id,value:i,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:r.slice()})}}function rR(t){var e=t.axis.model,n={},i=n.axisDim=t.axis.dim;return n.axisIndex=n[i+"AxisIndex"]=e.componentIndex,n.axisName=n[i+"AxisName"]=e.name,n.axisId=n[i+"AxisId"]=e.id,n}function oR(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function aR(t){dM.registerAxisPointerClass("CartesianAxisPointer",FO),t.registerComponentModel(UO),t.registerComponentView($O),t.registerPreprocessor((function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!F(e)&&(t.axisPointer.link=[e])}})),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,(function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=aM(t,e)})),t.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},tR)}var sR=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis;"angle"===o.dim&&(this.animationThreshold=Math.PI/18);var a=o.polar,s=a.getOtherAxis(o).getExtent(),l=o.dataToCoord(e),u=i.get("type");if(u&&"none"!==u){var h=PO(i),c=lR[u](o,a,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}var p=function(t,e,n,i,r){var o=e.axis,a=o.dataToCoord(t),s=i.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=i.getRadiusAxis().getExtent();if("radius"===o.dim){var p=[1,0,0,1,0,0];Xn(p,p,s),Un(p,p,[i.cx,i.cy]),l=qu([a,-r],p);var d=e.getModel("axisLabel").get("rotate")||0,f=tM.innerTextLayout(s,d*Math.PI/180,-1);u=f.textAlign,h=f.textVerticalAlign}else{var g=c[1];l=i.coordToPoint([g+r,a]);var y=i.cx,v=i.cy;u=Math.abs(l[0]-y)/g<.3?"center":l[0]>y?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}(e,n,0,a,i.get(["label","margin"]));OO(t,n,i,r,p)},e}(TO);var lR={line:function(t,e,n,i){return"angle"===t.dim?{type:"Line",shape:EO(e.coordToPoint([i[0],n]),e.coordToPoint([i[1],n]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:n}}},shadow:function(t,e,n,i){var r=Math.max(1,t.getBandWidth()),o=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:BO(e.cx,e.cy,i[0],i[1],(-n-r/2)*o,(r/2-n)*o)}:{type:"Sector",shape:BO(e.cx,e.cy,n-r/2,n+r/2,0,2*Math.PI)}}},uR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.findAxisModel=function(t){var e;return this.ecModel.eachComponent(t,(function(t){t.getCoordSysModel()===this&&(e=t)}),this),e},e.type="polar",e.dependencies=["radiusAxis","angleAxis"],e.defaultOption={zlevel:0,z:0,center:["50%","50%"],radius:"80%"},e}(Xc),hR=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("polar",Nr).models[0]},e.type="polarAxis",e}(Xc);L(hR,Yx);var cR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="angleAxis",e}(hR),pR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="radiusAxis",e}(hR),dR=function(t){function e(e,n){return t.call(this,"radius",e,n)||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e}(hb);dR.prototype.dataToRadius=hb.prototype.dataToCoord,dR.prototype.radiusToData=hb.prototype.coordToData;var fR=kr(),gR=function(t){function e(e,n){return t.call(this,"angle",e,n||[0,360])||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e.prototype.calculateCategoryInterval=function(){var t=this,e=t.getLabelModel(),n=t.scale,i=n.getExtent(),r=n.count();if(i[1]-i[0]<1)return 0;var o=i[0],a=t.dataToCoord(o+1)-t.dataToCoord(o),s=Math.abs(a),l=bi(null==o?"":o+"",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=fR(t.model),p=c.lastAutoInterval,d=c.lastTickCount;return null!=p&&null!=d&&Math.abs(p-h)<=1&&Math.abs(d-r)<=1&&p>h?h=p:(c.lastTickCount=r,c.lastAutoInterval=h),h},e}(hb);gR.prototype.dataToAngle=hb.prototype.dataToCoord,gR.prototype.angleToData=hb.prototype.coordToData;var yR=function(){function t(t){this.dimensions=["radius","angle"],this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new dR,this._angleAxis=new gR,this.axisPointerEnabled=!0,this.name=t||"",this._radiusAxis.polar=this._angleAxis.polar=this}return t.prototype.containPoint=function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},t.prototype.containData=function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},t.prototype.getAxis=function(t){return this["_"+t+"Axis"]},t.prototype.getAxes=function(){return[this._radiusAxis,this._angleAxis]},t.prototype.getAxesByScale=function(t){var e=[],n=this._angleAxis,i=this._radiusAxis;return n.scale.type===t&&e.push(n),i.scale.type===t&&e.push(i),e},t.prototype.getAngleAxis=function(){return this._angleAxis},t.prototype.getRadiusAxis=function(){return this._radiusAxis},t.prototype.getOtherAxis=function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},t.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},t.prototype.getTooltipAxes=function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},t.prototype.dataToPoint=function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},t.prototype.pointToData=function(t,e){var n=this.pointToCoord(t);return[this._radiusAxis.radiusToData(n[0],e),this._angleAxis.angleToData(n[1],e)]},t.prototype.pointToCoord=function(t){var e=t[0]-this.cx,n=t[1]-this.cy,i=this.getAngleAxis(),r=i.getExtent(),o=Math.min(r[0],r[1]),a=Math.max(r[0],r[1]);i.inverse?o=a-360:a=o+360;var s=Math.sqrt(e*e+n*n);e/=s,n/=s;for(var l=Math.atan2(-n,e)/Math.PI*180,u=la;)l+=360*u;return[s,l]},t.prototype.coordToPoint=function(t){var e=t[0],n=t[1]/180*Math.PI;return[Math.cos(n)*e+this.cx,-Math.sin(n)*e+this.cy]},t.prototype.getArea=function(){var t=this.getAngleAxis(),e=this.getRadiusAxis().getExtent().slice();e[0]>e[1]&&e.reverse();var n=t.getExtent(),i=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:e[0],r:e[1],startAngle:-n[0]*i,endAngle:-n[1]*i,clockwise:t.inverse,contain:function(t,e){var n=t-this.cx,i=e-this.cy,r=n*n+i*i,o=this.r,a=this.r0;return r<=o*o&&r>=a*a}}},t.prototype.convertToPixel=function(t,e,n){return vR(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return vR(e)===this?this.pointToData(n):null},t}();function vR(t){var e=t.seriesModel,n=t.polarModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}function mR(t,e){var n=this,i=n.getAngleAxis(),r=n.getRadiusAxis();if(i.scale.setExtent(1/0,-1/0),r.scale.setExtent(1/0,-1/0),t.eachSeries((function(t){if(t.coordinateSystem===n){var e=t.getData();P(Xx(e,"radius"),(function(t){r.scale.unionExtentFromData(e,t)})),P(Xx(e,"angle"),(function(t){i.scale.unionExtentFromData(e,t)}))}})),Vx(i.scale,i.model),Vx(r.scale,r.model),"category"===i.type&&!i.onBand){var o=i.getExtent(),a=360/i.scale.count();i.inverse?o[1]+=a:o[1]-=a,i.setExtent(o[0],o[1])}}function _R(t,e){if(t.type=e.get("type"),t.scale=Bx(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,t.inverse=e.get("inverse"),function(t){return"angleAxis"===t.mainType}(e)){t.inverse=t.inverse!==e.get("clockwise");var n=e.get("startAngle");t.setExtent(n,n+(t.inverse?-360:360))}e.axis=t,t.model=e}var xR={dimensions:yR.prototype.dimensions,create:function(t,e){var n=[];return t.eachComponent("polar",(function(t,i){var r=new yR(i+"");r.update=mR;var o=r.getRadiusAxis(),a=r.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");_R(o,s),_R(a,l),function(t,e,n){var i=e.get("center"),r=n.getWidth(),o=n.getHeight();t.cx=Zi(i[0],r),t.cy=Zi(i[1],o);var a=t.getRadiusAxis(),s=Math.min(r,o)/2,l=e.get("radius");null==l?l=[0,"100%"]:F(l)||(l=[0,l]);var u=[Zi(l[0],s),Zi(l[1],s)];a.inverse?a.setExtent(u[1],u[0]):a.setExtent(u[0],u[1])}(r,t,e),n.push(r),t.coordinateSystem=r,r.model=t})),t.eachSeries((function(t){if("polar"===t.get("coordinateSystem")){var e=t.getReferringComponents("polar",Nr).models[0];0,t.coordinateSystem=e.coordinateSystem}})),n}},bR=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function wR(t,e,n){e[1]>e[0]&&(e=e.slice().reverse());var i=t.coordToPoint([e[0],n]),r=t.coordToPoint([e[1],n]);return{x1:i[0],y1:i[1],x2:r[0],y2:r[1]}}function SR(t){return t.getRadiusAxis().inverse?0:1}function MR(t){var e=t[0],n=t[t.length-1];e&&n&&Math.abs(Math.abs(e.coord-n.coord)-360)<1e-4&&t.pop()}var IR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="PolarAxisPointer",n}return n(e,t),e.prototype.render=function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,i=n.polar,r=i.getRadiusAxis().getExtent(),o=n.getTicksCoords(),a=n.getMinorTicksCoords(),s=O(n.getViewLabels(),(function(t){t=w(t);var e=n.scale,i="ordinal"===e.type?e.getRawOrdinalNumber(t.tickValue):t.tickValue;return t.coord=n.dataToCoord(i),t}));MR(s),MR(o),P(bR,(function(e){!t.get([e,"show"])||n.scale.isBlank()&&"axisLine"!==e||TR[e](this.group,t,i,o,a,r,s)}),this)}},e.type="angleAxis",e}(dM),TR={axisLine:function(t,e,n,i,r,o){var a,s=e.getModel(["axisLine","lineStyle"]),l=SR(n),u=l?0:1;(a=0===o[u]?new Nl({shape:{cx:n.cx,cy:n.cy,r:o[l]},style:s.getLineStyle(),z2:1,silent:!0}):new tu({shape:{cx:n.cx,cy:n.cy,r:o[l],r0:o[u]},style:s.getLineStyle(),z2:1,silent:!0})).style.fill=null,t.add(a)},axisTick:function(t,e,n,i,r,o){var a=e.getModel("axisTick"),s=(a.get("inside")?-1:1)*a.get("length"),l=o[SR(n)],u=O(i,(function(t){return new uu({shape:wR(n,[l,l+s],t.coord)})}));t.add(Vu(u,{style:T(a.getModel("lineStyle").getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])})}))},minorTick:function(t,e,n,i,r,o){if(r.length){for(var a=e.getModel("axisTick"),s=e.getModel("minorTick"),l=(a.get("inside")?-1:1)*s.get("length"),u=o[SR(n)],h=[],c=0;cf?"left":"right",v=Math.abs(d[1]-g)/p<.3?"middle":d[1]>g?"top":"bottom";if(s&&s[c]){var m=s[c];X(m)&&m.textStyle&&(a=new Oh(m.textStyle,l,l.ecModel))}var _=new cs({silent:tM.isLabelSilent(e),style:ph(a,{x:d[0],y:d[1],fill:a.getTextColor()||e.get(["axisLine","lineStyle","color"]),text:i.formattedLabel,align:y,verticalAlign:v})});if(t.add(_),h){var x=tM.makeAxisEventDataBase(e);x.targetType="axisLabel",x.value=i.rawLabel,_s(_).eventData=x}}),this)},splitLine:function(t,e,n,i,r,o){var a=e.getModel("splitLine").getModel("lineStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=0;h=0?"p":"n",T=x;m&&(i[s][M]||(i[s][M]={p:x,n:x}),T=i[s][M][I]);var C=void 0,D=void 0,A=void 0,L=void 0;if("radius"===c.dim){var k=c.dataToCoord(S)-x,P=o.dataToCoord(M);Math.abs(k)=e.y&&t[1]<=e.y+e.height:n.contain(n.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},t.prototype.pointToData=function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},t.prototype.dataToPoint=function(t){var e=this.getAxis(),n=this.getRect(),i=[],r="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),i[r]=e.toGlobalCoord(e.dataToCoord(+t)),i[1-r]=0===r?n.y+n.height/2:n.x+n.width/2,i},t.prototype.convertToPixel=function(t,e,n){return XR(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return XR(e)===this?this.pointToData(n):null},t}();function XR(t){var e=t.seriesModel,n=t.singleAxisModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}var YR={create:function(t,e){var n=[];return t.eachComponent("singleAxis",(function(i,r){var o=new UR(i,t,e);o.name="single_"+r,o.resize(i,e),i.coordinateSystem=o,n.push(o)})),t.eachSeries((function(t){if("singleAxis"===t.get("coordinateSystem")){var e=t.getReferringComponents("singleAxis",Nr).models[0];t.coordinateSystem=e&&e.coordinateSystem}})),n},dimensions:UR.prototype.dimensions},ZR=["x","y"],jR=["width","height"],qR=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.coordinateSystem,s=JR(a,1-$R(o)),l=a.dataToPoint(e)[0],u=i.get("type");if(u&&"none"!==u){var h=PO(i),c=KR[u](o,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}zO(e,t,ER(n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=ER(e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=NO(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.coordinateSystem,a=$R(r),s=JR(o,a),l=[t.x,t.y];l[a]+=e[a],l[a]=Math.min(s[1],l[a]),l[a]=Math.max(s[0],l[a]);var u=JR(o,1-a),h=(u[1]+u[0])/2,c=[h,h];return c[a]=l[a],{x:l[0],y:l[1],rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}},e}(TO),KR={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:EO([e,n[0]],[e,n[1]],$R(t))}},shadow:function(t,e,n){var i=t.getBandWidth(),r=n[1]-n[0];return{type:"Rect",shape:VO([e-i/2,n[0]],[i,r],$R(t))}}};function $R(t){return t.isHorizontal()?0:1}function JR(t,e){var n=t.getRect();return[n[ZR[e]],n[ZR[e]]+n[jR[e]]]}var QR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="single",e}(wf);var tN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e,n,i){var r=Hc(e);t.prototype.init.apply(this,arguments),eN(e,r)},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),eN(this.option,e)},e.prototype.getCellSize=function(){return this.option.cellSize},e.type="calendar",e.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}},e}(Xc);function eN(t,e){var n,i=t.cellSize;1===(n=F(i)?i:t.cellSize=[i,i]).length&&(n[1]=n[0]);var r=O([0,1],(function(t){return function(t,e){return null!=t[Nc[e][0]]||null!=t[Nc[e][1]]&&null!=t[Nc[e][2]]}(e,t)&&(n[t]="auto"),null!=n[t]&&"auto"!==n[t]}));Gc(t,e,{type:"box",ignoreSize:r})}var nN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},iN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]},rN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=this.group;i.removeAll();var r=t.coordinateSystem,o=r.getRangeInfo(),a=r.getOrient();this._renderDayRect(t,o,i),this._renderLines(t,o,a,i),this._renderYearText(t,o,a,i),this._renderMonthText(t,a,i),this._renderWeekText(t,o,a,i)},e.prototype._renderDayRect=function(t,e,n){for(var i=t.coordinateSystem,r=t.getModel("itemStyle").getItemStyle(),o=i.getCellWidth(),a=i.getCellHeight(),s=e.start.time;s<=e.end.time;s=i.getNextNDay(s,1).time){var l=i.dataToRect([s],!1).tl,u=new ls({shape:{x:l[0],y:l[1],width:o,height:a},cursor:"default",style:r});n.add(u)}},e.prototype._renderLines=function(t,e,n,i){var r=this,o=t.coordinateSystem,a=t.getModel(["splitLine","lineStyle"]).getLineStyle(),s=t.get(["splitLine","show"]),l=a.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=e.start,h=0;u.time<=e.end.time;h++){p(u.formatedDate),0===h&&(u=o.getDateInfo(e.start.y+"-"+e.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=o.getDateInfo(c)}function p(e){r._firstDayOfMonth.push(o.getDateInfo(e)),r._firstDayPoints.push(o.dataToRect([e],!1).tl);var l=r._getLinePointsOfOneWeek(t,e,n);r._tlpoints.push(l[0]),r._blpoints.push(l[l.length-1]),s&&r._drawSplitline(l,a,i)}p(o.getNextNDay(e.end.time,1).formatedDate),s&&this._drawSplitline(r._getEdgesPoints(r._tlpoints,l,n),a,i),s&&this._drawSplitline(r._getEdgesPoints(r._blpoints,l,n),a,i)},e.prototype._getEdgesPoints=function(t,e,n){var i=[t[0].slice(),t[t.length-1].slice()],r="horizontal"===n?0:1;return i[0][r]=i[0][r]-e/2,i[1][r]=i[1][r]+e/2,i},e.prototype._drawSplitline=function(t,e,n){var i=new au({z2:20,shape:{points:t},style:e});n.add(i)},e.prototype._getLinePointsOfOneWeek=function(t,e,n){for(var i=t.coordinateSystem,r=i.getDateInfo(e),o=[],a=0;a<7;a++){var s=i.getNextNDay(r.time,a),l=i.dataToRect([s.time],!1);o[2*s.day]=l.tl,o[2*s.day+1]=l["horizontal"===n?"bl":"tr"]}return o},e.prototype._formatterLabel=function(t,e){return"string"==typeof t&&t?(n=t,P(e,(function(t,e){n=n.replace("{"+e+"}",i?Ic(t):t)})),n):"function"==typeof t?t(e):e.nameMap;var n,i},e.prototype._yearTextPositionControl=function(t,e,n,i,r){var o=e[0],a=e[1],s=["center","bottom"];"bottom"===i?(a+=r,s=["center","top"]):"left"===i?o-=r:"right"===i?(o+=r,s=["center","top"]):a-=r;var l=0;return"left"!==i&&"right"!==i||(l=Math.PI/2),{rotation:l,x:o,y:a,style:{align:s[0],verticalAlign:s[1]}}},e.prototype._renderYearText=function(t,e,n,i){var r=t.getModel("yearLabel");if(r.get("show")){var o=r.get("margin"),a=r.get("position");a||(a="horizontal"!==n?"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"===n?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]},p=e.start.y;+e.end.y>+e.start.y&&(p=p+"-"+e.end.y);var d=r.get("formatter"),f={start:e.start.y,end:e.end.y,nameMap:p},g=this._formatterLabel(d,f),y=new cs({z2:30,style:ph(r,{text:g})});y.attr(this._yearTextPositionControl(y,c[a],n,a,o)),i.add(y)}},e.prototype._monthTextPositionControl=function(t,e,n,i,r){var o="left",a="top",s=t[0],l=t[1];return"horizontal"===n?(l+=r,e&&(o="center"),"start"===i&&(a="bottom")):(s+=r,e&&(a="middle"),"start"===i&&(o="right")),{x:s,y:l,align:o,verticalAlign:a}},e.prototype._renderMonthText=function(t,e,n){var i=t.getModel("monthLabel");if(i.get("show")){var r=i.get("nameMap"),o=i.get("margin"),a=i.get("position"),s=i.get("align"),l=[this._tlpoints,this._blpoints];H(r)&&(r=nN[r.toUpperCase()]||[]);var u="start"===a?0:1,h="horizontal"===e?0:1;o="start"===a?-o:o;for(var c="center"===s,p=0;p=i.start.time&&n.timea.end.time&&t.reverse(),t},t.prototype._getRangeInfo=function(t){var e,n=[this.getDateInfo(t[0]),this.getDateInfo(t[1])];n[0].time>n[1].time&&(e=!0,n.reverse());var i=Math.floor(n[1].time/oN)-Math.floor(n[0].time/oN)+1,r=new Date(n[0].time),o=r.getDate(),a=n[1].date.getDate();r.setDate(o+i-1);var s=r.getDate();if(s!==a)for(var l=r.getTime()-n[1].time>0?1:-1;(s=r.getDate())!==a&&(r.getTime()-n[1].time)*l>0;)i-=l,r.setDate(s-l);var u=Math.floor((i+n[0].day+6)/7),h=e?1-u:u-1;return e&&n.reverse(),{range:[n[0].formatedDate,n[1].formatedDate],start:n[0],end:n[1],allDay:i,weeks:u,nthWeek:h,fweek:n[0].day,lweek:n[1].day}},t.prototype._getDateByWeeksAndDay=function(t,e,n){var i=this._getRangeInfo(n);if(t>i.weeks||0===t&&ei.lweek)return null;var r=7*(t-1)-i.fweek+e,o=new Date(i.start.time);return o.setDate(+i.start.d+r),this.getDateInfo(o)},t.create=function(e,n){var i=[];return e.eachComponent("calendar",(function(r){var o=new t(r,e,n);i.push(o),r.coordinateSystem=o})),e.eachSeries((function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])})),i},t.dimensions=["time","value"],t}();function sN(t){var e=t.calendarModel,n=t.seriesModel;return e?e.coordinateSystem:n?n.coordinateSystem:null}var lN=kr(),uN={path:null,compoundPath:null,group:Ei,image:es,text:cs},hN=function(t){var e=t.graphic;F(e)?e[0]&&e[0].elements?t.graphic=[t.graphic[0]]:t.graphic=[{elements:e}]:e&&!e.elements&&(t.graphic=[{elements:[e]}])},cN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.preventAutoZ=!0,n}return n(e,t),e.prototype.mergeOption=function(e,n){var i=this.option.elements;this.option.elements=null,t.prototype.mergeOption.call(this,e,n),this.option.elements=i},e.prototype.optionUpdated=function(t,e){var n=this.option,i=(e?n:t).elements,r=n.elements=e?[]:n.elements,o=[];this._flatten(i,o,null);var a=Mr(r,o,"normalMerge"),s=this._elOptionsToUpdate=[];P(a,(function(t,e){var n=t.newOption;n&&(s.push(n),function(t,e){var n=t.existing;if(e.id=t.keyInfo.id,!e.type&&n&&(e.type=n.type),null==e.parentId){var i=e.parentOption;i?e.parentId=i.id:n&&(e.parentId=n.parentId)}e.parentOption=null}(t,n),function(t,e,n){var i=I({},n),r=t[e],o=n.$action||"merge";if("merge"===o){if(r)S(r,i,!0),Gc(r,i,{ignoreSize:!0}),Wc(n,r);else t[e]=i}else"replace"===o?t[e]=i:"remove"===o&&r&&(t[e]=null)}(r,e,n),function(t,e){if(!t)return;if(t.hv=e.hv=[gN(e,["left","right"]),gN(e,["top","bottom"])],"group"===t.type){var n=t,i=e;null==n.width&&(n.width=i.width=0),null==n.height&&(n.height=i.height=0)}}(r[e],n))}),this);for(var l=r.length-1;l>=0;l--)null==r[l]?r.splice(l,1):delete r[l].$action},e.prototype._flatten=function(t,e,n){P(t,(function(t){if(t){n&&(t.parentOption=n),e.push(t);var i=t.children;"group"===t.type&&i&&this._flatten(i,e,t),delete t.children}}),this)},e.prototype.useElOptionsToUpdate=function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t},e.type="graphic",e.defaultOption={elements:[]},e}(Xc),pN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){this._elMap=ht()},e.prototype.render=function(t,e,n){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,n)},e.prototype._updateElements=function(t){var e=t.useElOptionsToUpdate();if(e){var n=this._elMap,i=this.group;P(e,(function(e){var r=Cr(e.id,null),o=null!=r?n.get(r):null,a=Cr(e.parentId,null),s=null!=a?n.get(a):i,l=e.type,u=e.style;"text"===l&&u&&e.hv&&e.hv[1]&&(u.textVerticalAlign=u.textBaseline=u.verticalAlign=u.align=null);var h=e.textContent,c=e.textConfig;if(u&&jk(u,l,!!c,!!h)){var p=qk(u,l,!0);!c&&p.textConfig&&(c=e.textConfig=p.textConfig),!h&&p.textContent&&(h=p.textContent)}var d=function(t){return t=I({},t),P(["id","parentId","$action","hv","bounding","textContent"].concat(Rc),(function(e){delete t[e]})),t}(e);var f=e.$action||"merge";"merge"===f?o?o.attr(d):dN(r,s,d,n):"replace"===f?(fN(o,n),dN(r,s,d,n)):"remove"===f&&fN(o,n);var g=n.get(r);if(g&&h)if("merge"===f){var y=g.getTextContent();y?y.attr(h):g.setTextContent(new cs(h))}else"replace"===f&&g.setTextContent(new cs(h));if(g){var v=lN(g);v.__ecGraphicWidthOption=e.width,v.__ecGraphicHeightOption=e.height,function(t,e,n){var i=_s(t).eventData;t.silent||t.ignore||i||(i=_s(t).eventData={componentType:"graphic",componentIndex:e.componentIndex,name:t.name});i&&(i.info=n.info)}(g,t,e),oh({el:g,componentModel:t,itemName:g.name,itemTooltipOption:e.tooltip})}}))}},e.prototype._relocate=function(t,e){for(var n=t.option.elements,i=this.group,r=this._elMap,o=e.getWidth(),a=e.getHeight(),s=0;s=0;s--){var c,p,d;if(d=null!=(p=Cr((c=n[s]).id,null))?r.get(p):null){var f=d.parent;h=lN(f);Bc(d,c,f===i?{width:o,height:a}:{width:h.__ecGraphicWidth,height:h.__ecGraphicHeight},null,{hv:c.hv,boundingMode:c.bounding})}}},e.prototype._clear=function(){var t=this._elMap;t.each((function(e){fN(e,t)})),this._elMap=ht()},e.prototype.dispose=function(){this._clear()},e.type="graphic",e}(wf);function dN(t,e,n,i){var r=n.type;var o=dt(uN,r)?uN[r]:Ru(r);var a=new o(n);e.add(a),i.set(t,a),lN(a).__ecGraphicId=t}function fN(t,e){var n=t&&t.parent;n&&("group"===t.type&&t.traverse((function(t){fN(t,e)})),e.removeKey(lN(t).__ecGraphicId),n.remove(t))}function gN(t,e){var n;return P(e,(function(e){null!=t[e]&&"auto"!==t[e]&&(n=!0)})),n}var yN=["x","y","radius","angle","single"],vN=["cartesian2d","polar","singleAxis"];function mN(t){return t+"Axis"}function _N(t,e){var n,i=ht(),r=[],o=ht();t.eachComponent({mainType:"dataZoom",query:e},(function(t){o.get(t.uid)||s(t)}));do{n=!1,t.eachComponent("dataZoom",a)}while(n);function a(t){!o.get(t.uid)&&function(t){var e=!1;return t.eachTargetAxis((function(t,n){var r=i.get(t);r&&r[n]&&(e=!0)})),e}(t)&&(s(t),n=!0)}function s(t){o.set(t.uid,!0),r.push(t),t.eachTargetAxis((function(t,e){(i.get(t)||i.set(t,[]))[e]=!0}))}return r}function xN(t){var e=t.ecModel,n={infoList:[],infoMap:ht()};return t.eachTargetAxis((function(t,i){var r=e.getComponent(mN(t),i);if(r){var o=r.getCoordSysModel();if(o){var a=o.uid,s=n.infoMap.get(a);s||(s={model:o,axisModels:[]},n.infoList.push(s),n.infoMap.set(a,s)),s.axisModels.push(r)}}})),n}var bN=function(){function t(){this.indexList=[],this.indexMap=[]}return t.prototype.add=function(t){this.indexMap[t]||(this.indexList.push(t),this.indexMap[t]=!0)},t}(),wN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._autoThrottle=!0,n._noTarget=!0,n._rangePropMode=["percent","percent"],n}return n(e,t),e.prototype.init=function(t,e,n){var i=SN(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this._doInit(i)},e.prototype.mergeOption=function(t){var e=SN(t);S(this.option,t,!0),S(this.settledOption,e,!0),this._doInit(e)},e.prototype._doInit=function(t){var e=this.option;this._setDefaultThrottle(t),this._updateRangeUse(t);var n=this.settledOption;P([["start","startValue"],["end","endValue"]],(function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=n[t[0]]=null)}),this),this._resetTarget()},e.prototype._resetTarget=function(){var t=this.get("orient",!0),e=this._targetAxisInfoMap=ht();this._fillSpecifiedTargetAxis(e)?this._orient=t||this._makeAutoOrientByTargetAxis():(this._orient=t||"horizontal",this._fillAutoTargetAxisByOrient(e,this._orient)),this._noTarget=!0,e.each((function(t){t.indexList.length&&(this._noTarget=!1)}),this)},e.prototype._fillSpecifiedTargetAxis=function(t){var e=!1;return P(yN,(function(n){var i=this.getReferringComponents(mN(n),zr);if(i.specified){e=!0;var r=new bN;P(i.models,(function(t){r.add(t.componentIndex)})),t.set(n,r)}}),this),e},e.prototype._fillAutoTargetAxisByOrient=function(t,e){var n=this.ecModel,i=!0;if(i){var r="vertical"===e?"y":"x";o(n.findComponents({mainType:r+"Axis"}),r)}i&&o(n.findComponents({mainType:"singleAxis",filter:function(t){return t.get("orient",!0)===e}}),"single");function o(e,n){var r=e[0];if(r){var o=new bN;if(o.add(r.componentIndex),t.set(n,o),i=!1,"x"===n||"y"===n){var a=r.getReferringComponents("grid",Nr).models[0];a&&P(e,(function(t){r.componentIndex!==t.componentIndex&&a===t.getReferringComponents("grid",Nr).models[0]&&o.add(t.componentIndex)}))}}}i&&P(yN,(function(e){if(i){var r=n.findComponents({mainType:mN(e),filter:function(t){return"category"===t.get("type",!0)}});if(r[0]){var o=new bN;o.add(r[0].componentIndex),t.set(e,o),i=!1}}}),this)},e.prototype._makeAutoOrientByTargetAxis=function(){var t;return this.eachTargetAxis((function(e){!t&&(t=e)}),this),"y"===t?"vertical":"horizontal"},e.prototype._setDefaultThrottle=function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var e=this.ecModel.option;this.option.throttle=e.animation&&e.animationDurationUpdate>0?100:20}},e.prototype._updateRangeUse=function(t){var e=this._rangePropMode,n=this.get("rangeMode");P([["start","startValue"],["end","endValue"]],(function(i,r){var o=null!=t[i[0]],a=null!=t[i[1]];o&&!a?e[r]="percent":!o&&a?e[r]="value":n?e[r]=n[r]:o&&(e[r]="percent")}))},e.prototype.noTarget=function(){return this._noTarget},e.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis((function(e,n){null==t&&(t=this.ecModel.getComponent(mN(e),n))}),this),t},e.prototype.eachTargetAxis=function(t,e){this._targetAxisInfoMap.each((function(n,i){P(n.indexList,(function(n){t.call(e,i,n)}))}))},e.prototype.getAxisProxy=function(t,e){var n=this.getAxisModel(t,e);if(n)return n.__dzAxisProxy},e.prototype.getAxisModel=function(t,e){var n=this._targetAxisInfoMap.get(t);if(n&&n.indexMap[e])return this.ecModel.getComponent(mN(t),e)},e.prototype.setRawRange=function(t){var e=this.option,n=this.settledOption;P([["start","startValue"],["end","endValue"]],(function(i){null==t[i[0]]&&null==t[i[1]]||(e[i[0]]=n[i[0]]=t[i[0]],e[i[1]]=n[i[1]]=t[i[1]])}),this),this._updateRangeUse(t)},e.prototype.setCalculatedRange=function(t){var e=this.option;P(["start","startValue","end","endValue"],(function(n){e[n]=t[n]}))},e.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},e.prototype.getValueRange=function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var n=this.findRepresentativeAxisProxy();return n?n.getDataValueWindow():void 0},e.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var e,n=this._targetAxisInfoMap.keys(),i=0;i=0}(e)){var n=mN(this._dimName),i=e.getReferringComponents(n,Nr).models[0];i&&this._axisIndex===i.componentIndex&&t.push(e)}}),this),t},t.prototype.getAxisModel=function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},t.prototype.getMinMaxSpan=function(){return w(this._minMaxSpan)},t.prototype.calculateDataWindow=function(t){var e,n=this._dataExtent,i=this.getAxisModel().axis.scale,r=this._dataZoomModel.getRangePropMode(),o=[0,100],a=[],s=[];CN(["start","end"],(function(l,u){var h=t[l],c=t[l+"Value"];"percent"===r[u]?(null==h&&(h=o[u]),c=i.parse(Yi(h,o,n))):(e=!0,h=Yi(c=null==c?n[u]:i.parse(c),n,o)),s[u]=c,a[u]=h})),DN(s),DN(a);var l=this._minMaxSpan;function u(t,e,n,r,o){var a=o?"Span":"ValueSpan";PD(0,t,n,"all",l["min"+a],l["max"+a]);for(var s=0;s<2;s++)e[s]=Yi(t[s],n,r,!0),o&&(e[s]=i.parse(e[s]))}return e?u(s,a,n,o,!1):u(a,s,o,n,!0),{valueWindow:s,percentWindow:a}},t.prototype.reset=function(t){if(t===this._dataZoomModel){var e=this.getTargetSeriesModels();this._dataExtent=function(t,e,n){var i=[1/0,-1/0];CN(n,(function(t){!function(t,e,n){e&&P(Xx(e,n),(function(n){var i=e.getApproximateExtent(n);i[0]t[1]&&(t[1]=i[1])}))}(i,t.getData(),e)}));var r=t.getAxisModel(),o=Nx(r.axis.scale,r,i).calculate();return[o.min,o.max]}(this,this._dimName,e),this._updateMinMaxSpan();var n=this.calculateDataWindow(t.settledOption);this._valueWindow=n.valueWindow,this._percentWindow=n.percentWindow,this._setAxisModel()}},t.prototype.filterData=function(t,e){if(t===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),r=t.get("filterMode"),o=this._valueWindow;"none"!==r&&CN(i,(function(t){var e=t.getData(),i=e.mapDimensionsAll(n);i.length&&("weakFilter"===r?e.filterSelf((function(t){for(var n,r,a,s=0;so[1];if(u&&!h&&!c)return!0;u&&(a=!0),h&&(n=!0),c&&(r=!0)}return a&&n&&r})):CN(i,(function(n){if("empty"===r)t.setData(e=e.map(n,(function(t){return function(t){return t>=o[0]&&t<=o[1]}(t)?t:NaN})));else{var i={};i[n]=o,e.selectRange(i)}})),CN(i,(function(t){e.setApproximateExtent(o,t)})))}))}},t.prototype._updateMinMaxSpan=function(){var t=this._minMaxSpan={},e=this._dataZoomModel,n=this._dataExtent;CN(["min","max"],(function(i){var r=e.get(i+"Span"),o=e.get(i+"ValueSpan");null!=o&&(o=this.getAxisModel().axis.scale.parse(o)),null!=o?r=Yi(n[0]+o,n,[0,100],!0):null!=r&&(o=Yi(r,[0,100],n,!0)-n[0]),t[i+"Span"]=r,t[i+"ValueSpan"]=o}),this)},t.prototype._setAxisModel=function(){var t=this.getAxisModel(),e=this._percentWindow,n=this._valueWindow;if(e){var i=Ji(n,[0,500]);i=Math.min(i,20);var r=t.axis.scale.rawExtentInfo;0!==e[0]&&r.setDeterminedMinMax("min",+n[0].toFixed(i)),100!==e[1]&&r.setDeterminedMinMax("max",+n[1].toFixed(i)),r.freeze()}},t}();var LN={getTargetSeries:function(t){function e(e){t.eachComponent("dataZoom",(function(n){n.eachTargetAxis((function(i,r){var o=t.getComponent(mN(i),r);e(i,r,o,n)}))}))}e((function(t,e,n,i){n.__dzAxisProxy=null}));var n=[];e((function(e,i,r,o){r.__dzAxisProxy||(r.__dzAxisProxy=new AN(e,i,o,t),n.push(r.__dzAxisProxy))}));var i=ht();return P(n,(function(t){P(t.getTargetSeriesModels(),(function(t){i.set(t.uid,t)}))})),i},overallReset:function(t,e){t.eachComponent("dataZoom",(function(t){t.eachTargetAxis((function(e,n){t.getAxisProxy(e,n).reset(t)})),t.eachTargetAxis((function(n,i){t.getAxisProxy(n,i).filterData(t,e)}))})),t.eachComponent("dataZoom",(function(t){var e=t.findRepresentativeAxisProxy();if(e){var n=e.getDataPercentWindow(),i=e.getDataValueWindow();t.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})}}))}};var kN=!1;function PN(t){kN||(kN=!0,t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,LN),function(t){t.registerAction("dataZoom",(function(t,e){P(_N(e,t),(function(e){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})}))}))}(t),t.registerSubTypeDefaulter("dataZoom",(function(){return"slider"})))}function ON(t){t.registerComponentModel(MN),t.registerComponentView(TN),PN(t)}var RN=function(){},NN={};function zN(t,e){NN[t]=e}function EN(t){return NN[t]}var VN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){t.prototype.optionUpdated.apply(this,arguments);var e=this.ecModel;P(this.option.feature,(function(t,n){var i=EN(n);i&&(i.getDefaultOption&&(i.defaultOption=i.getDefaultOption(e)),S(t,i.defaultOption))}))},e.type="toolbox",e.layoutMode={type:"box",ignoreSize:!0},e.defaultOption={show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}},e}(Xc);function BN(t,e){var n=wc(e.get("padding")),i=e.getItemStyle(["color","opacity"]);return i.fill=e.get("backgroundColor"),t=new ls({shape:{x:t.x-n[3],y:t.y-n[0],width:t.width+n[1]+n[3],height:t.height+n[0]+n[2],r:e.get("borderRadius")},style:i,silent:!0,z2:-1})}var FN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this.group;if(r.removeAll(),t.get("show")){var o=+t.get("itemSize"),a=t.get("feature")||{},s=this._features||(this._features={}),l=[];P(a,(function(t,e){l.push(e)})),new n_(this._featureNames||[],l).add(u).update(u).remove(B(u,null)).execute(),this._featureNames=l,function(t,e,n){var i=e.getBoxLayoutParams(),r=e.get("padding"),o={width:n.getWidth(),height:n.getHeight()},a=Vc(i,o,r);Ec(e.get("orient"),t,e.get("itemGap"),a.width,a.height),Bc(t,i,o,r)}(r,t,n),r.add(BN(r.getBoundingRect(),t)),r.eachChild((function(t){var e=t.__title,i=t.ensureState("emphasis"),a=i.textConfig||(i.textConfig={}),s=t.getTextContent(),l=s&&s.states.emphasis;if(l&&!G(l)&&e){var u=l.style||(l.style={}),h=bi(e,cs.makeFont(u)),c=t.x+r.x,p=!1;t.y+r.y+o+h.height>n.getHeight()&&(a.position="top",p=!0);var d=p?-5-h.height:o+8;c+h.width/2>n.getWidth()?(a.position=["100%",d],u.align="right"):c-h.width/2<0&&(a.position=[0,d],u.align="left")}}))}function u(u,h){var c,p=l[u],d=l[h],f=a[p],g=new Oh(f,t,t.ecModel);if(i&&null!=i.newTitle&&i.featureName===p&&(f.title=i.newTitle),p&&!d){if(function(t){return 0===t.indexOf("my")}(p))c={onclick:g.option.onclick,featureName:p};else{var y=EN(p);if(!y)return;c=new y}s[p]=c}else if(!(c=s[d]))return;c.uid=Nh("toolbox-feature"),c.model=g,c.ecModel=e,c.api=n;var v=c instanceof RN;p||!d?!g.get("show")||v&&c.unusable?v&&c.remove&&c.remove(e,n):(!function(i,a,s){var l,u,h=i.getModel("iconStyle"),c=i.getModel(["emphasis","iconStyle"]),p=a instanceof RN&&a.getIcons?a.getIcons():i.get("icon"),d=i.get("title")||{};"string"==typeof p?(l={})[s]=p:l=p;"string"==typeof d?(u={})[s]=d:u=d;var f=i.iconPaths={};P(l,(function(s,l){var p=eh(s,{},{x:-o/2,y:-o/2,width:o,height:o});p.setStyle(h.getItemStyle()),p.ensureState("emphasis").style=c.getItemStyle();var d=new cs({style:{text:u[l],align:c.get("textAlign"),borderRadius:c.get("textBorderRadius"),padding:c.get("textPadding"),fill:null},ignore:!0});p.setTextContent(d),oh({el:p,componentModel:t,itemName:l,formatterParamsExtra:{title:u[l]}}),p.__title=u[l],p.on("mouseover",(function(){var e=c.getItemStyle(),n="vertical"===t.get("orient")?null==t.get("right")?"right":"left":null==t.get("bottom")?"bottom":"top";d.setStyle({fill:c.get("textFill")||e.fill||e.stroke||"#000",backgroundColor:c.get("textBackgroundColor")}),p.setTextConfig({position:c.get("textPosition")||n}),d.ignore=!t.get("showTitle"),js(this)})).on("mouseout",(function(){"emphasis"!==i.get(["iconStatus",l])&&qs(this),d.hide()})),("emphasis"===i.get(["iconStatus",l])?js:qs)(p),r.add(p),p.on("click",V(a.onclick,a,e,n,l)),f[l]=p}))}(g,c,p),g.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&("emphasis"===e?js:qs)(i[t])},c instanceof RN&&c.render&&c.render(g,e,n,i)):v&&c.dispose&&c.dispose(e,n)}},e.prototype.updateView=function(t,e,n,i){P(this._features,(function(t){t instanceof RN&&t.updateView&&t.updateView(t.model,e,n,i)}))},e.prototype.remove=function(t,e){P(this._features,(function(n){n instanceof RN&&n.remove&&n.remove(t,e)})),this.group.removeAll()},e.prototype.dispose=function(t,e){P(this._features,(function(n){n instanceof RN&&n.dispose&&n.dispose(t,e)}))},e.type="toolbox",e}(wf);var GN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",r="svg"===e.getZr().painter.getType(),o=r?"svg":n.get("type",!0)||"png",s=e.getConnectedDataURL({type:o,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")});if("function"!=typeof MouseEvent||!a.browser.newEdge&&(a.browser.ie||a.browser.edge))if(window.navigator.msSaveOrOpenBlob||r){var l=s.split(","),u=l[0].indexOf("base64")>-1,h=r?decodeURIComponent(l[1]):l[1];u&&(h=window.atob(h));var c=i+"."+o;if(window.navigator.msSaveOrOpenBlob){for(var p=h.length,d=new Uint8Array(p);p--;)d[p]=h.charCodeAt(p);var f=new Blob([d]);window.navigator.msSaveOrOpenBlob(f,c)}else{var g=document.createElement("iframe");document.body.appendChild(g);var y=g.contentWindow,v=y.document;v.open("image/svg+xml","replace"),v.write(h),v.close(),y.focus(),v.execCommand("SaveAs",!0,c),document.body.removeChild(g)}}else{var m=n.get("lang"),_='',x=window.open();x.document.write(_),x.document.title=i}else{var b=document.createElement("a");b.download=i+"."+o,b.target="_blank",b.href=s;var w=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});b.dispatchEvent(w)}},e.getDefaultOption=function(t){return{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:t.getLocale(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],lang:t.getLocale(["toolbox","saveAsImage","lang"])}},e}(RN);GN.prototype.unusable=!a.canvasSupported;var HN="__ec_magicType_stack__",WN=[["line","bar"],["stack"]],UN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getIcons=function(){var t=this.model,e=t.get("icon"),n={};return P(t.get("type"),(function(t){e[t]&&(n[t]=e[t])})),n},e.getDefaultOption=function(t){return{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"},title:t.getLocale(["toolbox","magicType","title"]),option:{},seriesIndex:{}}},e.prototype.onclick=function(t,e,n){var i=this.model,r=i.get(["seriesIndex",n]);if(XN[n]){var o,a={series:[]};P(WN,(function(t){D(t,n)>=0&&P(t,(function(t){i.setIconStatus(t,"normal")}))})),i.setIconStatus(n,"emphasis"),t.eachComponent({mainType:"series",query:null==r?null:{seriesIndex:r}},(function(t){var e=t.subType,r=t.id,o=XN[n](e,r,t,i);o&&(T(o,t.option),a.series.push(o));var s=t.coordinateSystem;if(s&&"cartesian2d"===s.type&&("line"===n||"bar"===n)){var l=s.getAxesByScale("ordinal")[0];if(l){var u=l.dim+"Axis",h=t.getReferringComponents(u,Nr).models[0].componentIndex;a[u]=a[u]||[];for(var c=0;c<=h;c++)a[u][h]=a[u][h]||{};a[u][h].boundaryGap="bar"===n}}}));var s=n;"stack"===n&&(o=S({stack:i.option.title.tiled,tiled:i.option.title.stack},i.option.title),"emphasis"!==i.get(["iconStatus",n])&&(s="tiled")),e.dispatchAction({type:"changeMagicType",currentType:s,newOption:a,newTitle:o,featureName:"magicType"})}},e}(RN),XN={line:function(t,e,n,i){if("bar"===t)return S({id:e,type:"line",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","line"])||{},!0)},bar:function(t,e,n,i){if("line"===t)return S({id:e,type:"bar",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","bar"])||{},!0)},stack:function(t,e,n,i){var r=n.get("stack")===HN;if("line"===t||"bar"===t)return i.setIconStatus("stack",r?"normal":"emphasis"),S({id:e,stack:r?"":HN},i.get(["option","stack"])||{},!0)}};Hm({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},(function(t,e){e.mergeOption(t.newOption)}));var YN=new Array(60).join("-"),ZN="\t";function jN(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}var qN=new RegExp("[\t]+","g");function KN(t,e){var n=t.split(new RegExp("\n*"+YN+"\n*","g")),i={series:[]};return P(n,(function(t,n){if(function(t){if(t.slice(0,t.indexOf("\n")).indexOf(ZN)>=0)return!0}(t)){var r=function(t){for(var e=t.split(/\n+/g),n=[],i=O(jN(e.shift()).split(qN),(function(t){return{name:t,data:[]}})),r=0;r=0)&&t(r,i._targetInfoList)}))}return t.prototype.setOutputRanges=function(t,e){return this.matchOutputRanges(t,e,(function(t,e,n){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var i=hz[t.brushType](0,n,e);t.__rangeOffset={offset:pz[t.brushType](i.values,t.range,[1,1]),xyMinMax:i.xyMinMax}}})),t},t.prototype.matchOutputRanges=function(t,e,n){P(t,(function(t){var i=this.findTargetInfo(t,e);i&&!0!==i&&P(i.coordSyses,(function(i){var r=hz[t.brushType](1,i,t.range,!0);n(t,r.values,i,e)}))}),this)},t.prototype.setInputRanges=function(t,e){P(t,(function(t){var n,i,r,o,a,s=this.findTargetInfo(t,e);if(t.range=t.range||[],s&&!0!==s){t.panelId=s.panelId;var l=hz[t.brushType](0,s.coordSys,t.coordRange),u=t.__rangeOffset;t.range=u?pz[t.brushType](l.values,u.offset,(n=l.xyMinMax,i=u.xyMinMax,r=fz(n),o=fz(i),a=[r[0]/o[0],r[1]/o[1]],isNaN(a[0])&&(a[0]=1),isNaN(a[1])&&(a[1]=1),a)):l.values}}),this)},t.prototype.makePanelOpts=function(t,e){return O(this._targetInfoList,(function(n){var i=n.getPanelRect();return{panelId:n.panelId,defaultBrushType:e?e(n):null,clipPath:RA(i),isTargetByCursor:zA(i,t,n.coordSysModel),getLinearBrushOtherExtent:NA(i)}}))},t.prototype.controlSeries=function(t,e,n){var i=this.findTargetInfo(t,n);return!0===i||i&&D(i.coordSyses,e.coordinateSystem)>=0},t.prototype.findTargetInfo=function(t,e){for(var n=this._targetInfoList,i=az(e,t),r=0;rt[1]&&t.reverse(),t}function az(t,e){return Or(t,e,{includeMainTypes:iz})}var sz={grid:function(t,e){var n=t.xAxisModels,i=t.yAxisModels,r=t.gridModels,o=ht(),a={},s={};(n||i||r)&&(P(n,(function(t){var e=t.axis.grid.model;o.set(e.id,e),a[e.id]=!0})),P(i,(function(t){var e=t.axis.grid.model;o.set(e.id,e),s[e.id]=!0})),P(r,(function(t){o.set(t.id,t),a[t.id]=!0,s[t.id]=!0})),o.each((function(t){var r=t.coordinateSystem,o=[];P(r.getCartesians(),(function(t,e){(D(n,t.getAxis("x").model)>=0||D(i,t.getAxis("y").model)>=0)&&o.push(t)})),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:o[0],coordSyses:o,getPanelRect:uz.grid,xAxisDeclared:a[t.id],yAxisDeclared:s[t.id]})})))},geo:function(t,e){P(t.geoModels,(function(t){var n=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:n,coordSyses:[n],getPanelRect:uz.geo})}))}},lz=[function(t,e){var n=t.xAxisModel,i=t.yAxisModel,r=t.gridModel;return!r&&n&&(r=n.axis.grid.model),!r&&i&&(r=i.axis.grid.model),r&&r===e.gridModel},function(t,e){var n=t.geoModel;return n&&n===e.geoModel}],uz={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(ju(t)),e}},hz={lineX:B(cz,0),lineY:B(cz,1),rect:function(t,e,n,i){var r=t?e.pointToData([n[0][0],n[1][0]],i):e.dataToPoint([n[0][0],n[1][0]],i),o=t?e.pointToData([n[0][1],n[1][1]],i):e.dataToPoint([n[0][1],n[1][1]],i),a=[oz([r[0],o[0]]),oz([r[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,n,i){var r=[[1/0,-1/0],[1/0,-1/0]];return{values:O(n,(function(n){var o=t?e.pointToData(n,i):e.dataToPoint(n,i);return r[0][0]=Math.min(r[0][0],o[0]),r[1][0]=Math.min(r[1][0],o[1]),r[0][1]=Math.max(r[0][1],o[0]),r[1][1]=Math.max(r[1][1],o[1]),o})),xyMinMax:r}}};function cz(t,e,n,i){var r=n.getAxis(["x","y"][t]),o=oz(O([0,1],(function(t){return e?r.coordToData(r.toLocalCoord(i[t]),!0):r.toGlobalCoord(r.dataToCoord(i[t]))}))),a=[];return a[t]=o,a[1-t]=[NaN,NaN],{values:o,xyMinMax:a}}var pz={lineX:B(dz,0),lineY:B(dz,1),rect:function(t,e,n){return[[t[0][0]-n[0]*e[0][0],t[0][1]-n[0]*e[0][1]],[t[1][0]-n[1]*e[1][0],t[1][1]-n[1]*e[1][1]]]},polygon:function(t,e,n){return O(t,(function(t,i){return[t[0]-n[0]*e[i][0],t[1]-n[1]*e[i][1]]}))}};function dz(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}function fz(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var gz,yz,vz=P,mz=_r+"toolbox-dataZoom_",_z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){this._brushController||(this._brushController=new iA(n.getZr()),this._brushController.on("brush",V(this._onBrush,this)).mount()),function(t,e,n,i,r){var o=n._isZoomActive;i&&"takeGlobalCursor"===i.type&&(o="dataZoomSelect"===i.key&&i.dataZoomSelectActive);n._isZoomActive=o,t.setIconStatus("zoom",o?"emphasis":"normal");var a=new rz(bz(t),e,{include:["grid"]}).makePanelOpts(r,(function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"}));n._brushController.setPanels(a).enableBrush(!(!o||!a.length)&&{brushType:"auto",brushStyle:t.getModel("brushStyle").getItemStyle()})}(t,e,this,i,n),function(t,e){t.setIconStatus("back",function(t){return ez(t).length}(e)>1?"emphasis":"normal")}(t,e)},e.prototype.onclick=function(t,e,n){xz[n].call(this)},e.prototype.remove=function(t,e){this._brushController&&this._brushController.unmount()},e.prototype.dispose=function(t,e){this._brushController&&this._brushController.dispose()},e.prototype._onBrush=function(t){var e=t.areas;if(t.isEnd&&e.length){var n={},i=this.ecModel;this._brushController.updateCovers([]),new rz(bz(this.model),i,{include:["grid"]}).matchOutputRanges(e,i,(function(t,e,n){if("cartesian2d"===n.type){var i=t.brushType;"rect"===i?(r("x",n,e[0]),r("y",n,e[1])):r({lineX:"x",lineY:"y"}[i],n,e)}})),function(t,e){var n=ez(t);QN(e,(function(e,i){for(var r=n.length-1;r>=0&&!n[r][i];r--);if(r<0){var o=t.queryComponents({mainType:"dataZoom",subType:"select",id:i})[0];if(o){var a=o.getPercentRange();n[0][i]={dataZoomId:i,start:a[0],end:a[1]}}}})),n.push(e)}(i,n),this._dispatchZoomAction(n)}function r(t,e,r){var o=e.getAxis(t),a=o.model,s=function(t,e,n){var i;return n.eachComponent({mainType:"dataZoom",subType:"select"},(function(n){n.getAxisModel(t,e.componentIndex)&&(i=n)})),i}(t,a,i),l=s.findRepresentativeAxisProxy(a).getMinMaxSpan();null==l.minValueSpan&&null==l.maxValueSpan||(r=PD(0,r.slice(),o.scale.getExtent(),0,l.minValueSpan,l.maxValueSpan)),s&&(n[s.id]={dataZoomId:s.id,startValue:r[0],endValue:r[1]})}},e.prototype._dispatchZoomAction=function(t){var e=[];vz(t,(function(t,n){e.push(w(t))})),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},e.getDefaultOption=function(t){return{show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:t.getLocale(["toolbox","dataZoom","title"]),brushStyle:{borderWidth:0,color:"rgba(210,219,238,0.2)"}}},e}(RN),xz={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(function(t){var e=ez(t),n=e[e.length-1];e.length>1&&e.pop();var i={};return QN(n,(function(t,n){for(var r=e.length-1;r>=0;r--)if(t=e[r][n]){i[n]=t;break}})),i}(this.ecModel))}};function bz(t){var e={xAxisIndex:t.get("xAxisIndex",!0),yAxisIndex:t.get("yAxisIndex",!0),xAxisId:t.get("xAxisId",!0),yAxisId:t.get("yAxisId",!0)};return null==e.xAxisIndex&&null==e.xAxisId&&(e.xAxisIndex="all"),null==e.yAxisIndex&&null==e.yAxisId&&(e.yAxisIndex="all"),e}gz="dataZoom",yz=function(t){var e=t.getComponent("toolbox",0),n=["feature","dataZoom"];if(e&&null!=e.get(n)){var i=e.getModel(n),r=[],o=Or(t,bz(i));return vz(o.xAxisModels,(function(t){return a(t,"xAxis","xAxisIndex")})),vz(o.yAxisModels,(function(t){return a(t,"yAxis","yAxisIndex")})),r}function a(t,e,n){var o=t.componentIndex,a={type:"select",$fromToolbox:!0,filterMode:i.get("filterMode",!0)||"filter",id:mz+e+o};a[n]=o,r.push(a)}},rt(null==dp.get(gz)&&yz),dp.set(gz,yz);var wz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="tooltip",e.dependencies=["axisPointer"],e.defaultOption={zlevel:0,z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#fff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666",fontSize:14}},e}(Xc);function Sz(t){var e=t.get("confine");return null!=e?!!e:"richText"===t.get("renderMode")}function Mz(t){if(a.domSupported)for(var e=document.documentElement.style,n=0,i=t.length;n-1?(o+="top:50%",a+="translateY(-50%) rotate("+("left"===r?-225:-45)+"deg)"):(o+="left:50%",a+="translateX(-50%) rotate("+("top"===r?225:45)+"deg)");var s=e+" solid 1px;";return'
'}(n.get("backgroundColor"),i,r)),H(t))o.innerHTML=t;else if(t){o.innerHTML="",F(t)||(t=[t]);for(var a=0;a=0?this._tryShow(n,i):"leave"===e&&this._hide(i))}),this))},e.prototype._keepShow=function(){var t=this._tooltipModel,e=this._ecModel,n=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout((function(){!n.isDisposed()&&i.manuallyShowTip(t,e,n,{x:i._lastX,y:i._lastY,dataByCoordSys:i._lastDataByCoordSys})}))}},e.prototype.manuallyShowTip=function(t,e,n,i){if(i.from!==this.uid&&!a.node){var r=Xz(i,n);this._ticket="";var o=i.dataByCoordSys,s=function(t,e,n){var i=Rr(t).queryOptionMap,r=i.keys()[0];if(!r||"series"===r)return;var o,a=Er(e,r,i.get(r),{useDefault:!1,enableAll:!1,enableNone:!1}).models[0];if(!a)return;if(n.getViewOfComponentModel(a).group.traverse((function(e){var n=_s(e).tooltipConfig;if(n&&n.name===t.name)return o=e,!0})),o)return{componentMainType:r,componentIndex:a.componentIndex,el:o}}(i,e,n);if(s){var l=s.el.getBoundingRect().clone();l.applyTransform(s.el.transform),this._tryShow({offsetX:l.x+l.width/2,offsetY:l.y+l.height/2,target:s.el,position:i.position,positionDefault:"bottom"},r)}else if(i.tooltip&&null!=i.x&&null!=i.y){var u=Hz;u.x=i.x,u.y=i.y,u.update(),_s(u).tooltipConfig={name:null,option:i.tooltip},this._tryShow({offsetX:i.x,offsetY:i.y,target:u},r)}else if(o)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,dataByCoordSys:o,tooltipOption:i.tooltipOption},r);else if(null!=i.seriesIndex){if(this._manuallyAxisShowTip(t,e,n,i))return;var h=JO(i,e),c=h.point[0],p=h.point[1];null!=c&&null!=p&&this._tryShow({offsetX:c,offsetY:p,target:h.el,position:i.position,positionDefault:"bottom"},r)}else null!=i.x&&null!=i.y&&(n.dispatchAction({type:"updateAxisPointer",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target},r))}},e.prototype.manuallyHideTip=function(t,e,n,i){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,i.from!==this.uid&&this._hide(Xz(i,n))},e.prototype._manuallyAxisShowTip=function(t,e,n,i){var r=i.seriesIndex,o=i.dataIndex,a=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=o&&null!=a){var s=e.getSeriesByIndex(r);if(s)if("axis"===Uz([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model],this._tooltipModel).get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:o,position:i.position}),!0}},e.prototype._tryShow=function(t,e){var n=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;if(i&&i.length)this._showAxisTooltip(i,t);else if(n){var r,o;this._lastDataByCoordSys=null,iy(n,(function(t){return null!=_s(t).dataIndex?(r=t,!0):null!=_s(t).tooltipConfig?(o=t,!0):void 0}),!0),r?this._showSeriesItemTooltip(t,r,e):o?this._showComponentItemTooltip(t,o,e):this._hide(e)}else this._lastDataByCoordSys=null,this._hide(e)}},e.prototype._showOrMove=function(t,e){var n=t.get("showDelay");e=V(e,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(e,n):e()},e.prototype._showAxisTooltip=function(t,e){var n=this._ecModel,i=this._tooltipModel,r=[e.offsetX,e.offsetY],o=Uz([e.tooltipOption],i),a=this._renderMode,s=[],l=tf("section",{blocks:[],noHeader:!0}),u=[],h=new hf;Fz(t,(function(t){Fz(t.dataByAxis,(function(t){var e=n.getComponent(t.axisDim+"Axis",t.axisIndex),i=t.value;if(e&&null!=i){var r=RO(i,e.axis,n,t.seriesDataIndices,t.valueLabelOpt),o=tf("section",{header:r,noHeader:!ot(r),sortBlocks:!0,blocks:[]});l.blocks.push(o),P(t.seriesDataIndices,(function(l){var c=n.getSeriesByIndex(l.seriesIndex),p=l.dataIndexInside,d=c.getDataParams(p);d.axisDim=t.axisDim,d.axisIndex=t.axisIndex,d.axisType=t.axisType,d.axisId=t.axisId,d.axisValue=Gx(e.axis,{value:i}),d.axisValueLabel=r,d.marker=h.makeTooltipMarker("item",kc(d.color),a);var f=Cd(c.formatTooltip(p,!0,null));f.markupFragment&&o.blocks.push(f.markupFragment),f.markupText&&u.push(f.markupText),s.push(d)}))}}))})),l.blocks.reverse(),u.reverse();var c=e.position,p=o.get("order"),d=rf(l,h,a,p,n.get("useUTC"),o.get("textStyle"));d&&u.unshift(d);var f="richText"===a?"\n\n":"
",g=u.join(f);this._showOrMove(o,(function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(o,c,r[0],r[1],this._tooltipContent,s):this._showTooltipContent(o,g,s,Math.random()+"",r[0],r[1],c,null,h)}))},e.prototype._showSeriesItemTooltip=function(t,e,n){var i=this._ecModel,r=_s(e),o=r.seriesIndex,a=i.getSeriesByIndex(o),s=r.dataModel||a,l=r.dataIndex,u=r.dataType,h=s.getData(u),c=this._renderMode,p=t.positionDefault,d=Uz([h.getItemModel(l),s,a&&(a.coordinateSystem||{}).model],this._tooltipModel,p?{position:p}:null),f=d.get("trigger");if(null==f||"item"===f){var g=s.getDataParams(l,u),y=new hf;g.marker=y.makeTooltipMarker("item",kc(g.color),c);var v=Cd(s.formatTooltip(l,!1,u)),m=d.get("order"),_=v.markupFragment?rf(v.markupFragment,y,c,m,i.get("useUTC"),d.get("textStyle")):v.markupText,x="item_"+s.name+"_"+l;this._showOrMove(d,(function(){this._showTooltipContent(d,_,g,x,t.offsetX,t.offsetY,t.position,t.target,y)})),n({type:"showTip",dataIndexInside:l,dataIndex:h.getRawIndex(l),seriesIndex:o,from:this.uid})}},e.prototype._showComponentItemTooltip=function(t,e,n){var i=_s(e),r=i.tooltipConfig.option||{};if(H(r)){r={content:r,formatter:r}}var o=[r],a=this._ecModel.getComponent(i.componentMainType,i.componentIndex);a&&o.push(a),o.push({formatter:r.content});var s=t.positionDefault,l=Uz(o,this._tooltipModel,s?{position:s}:null),u=l.get("content"),h=Math.random()+"",c=new hf;this._showOrMove(l,(function(){var n=w(l.get("formatterParams")||{});this._showTooltipContent(l,u,n,h,t.offsetX,t.offsetY,t.position,e,c)})),n({type:"showTip",from:this.uid})},e.prototype._showTooltipContent=function(t,e,n,i,r,o,a,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");a=a||t.get("position");var c=e,p=this._getNearestPoint([r,o],n,t.get("trigger"),t.get("borderColor")).color;if(h&&H(h)){var d=t.ecModel.get("useUTC"),f=F(n)?n[0]:n;c=h,f&&f.axisType&&f.axisType.indexOf("time")>=0&&(c=ic(f.axisValue,c,d)),c=Ac(c,n,!0)}else if(G(h)){var g=Bz((function(e,i){e===this._ticket&&(u.setContent(i,l,t,p,a),this._updatePosition(t,a,r,o,u,n,s))}),this);this._ticket=i,c=h(n,i,g)}u.setContent(c,l,t,p,a),u.show(t,p),this._updatePosition(t,a,r,o,u,n,s)}},e.prototype._getNearestPoint=function(t,e,n,i){return"axis"===n||F(e)?{color:i||("html"===this._renderMode?"#fff":"none")}:F(e)?void 0:{color:i||e.color||e.borderColor}},e.prototype._updatePosition=function(t,e,n,i,r,o,a){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=r.getSize(),h=t.get("align"),c=t.get("verticalAlign"),p=a&&a.getBoundingRect().clone();if(a&&p.applyTransform(a.transform),G(e)&&(e=e([n,i],o,r.el,p,{viewSize:[s,l],contentSize:u.slice()})),F(e))n=Gz(e[0],s),i=Gz(e[1],l);else if(X(e)){var d=e;d.width=u[0],d.height=u[1];var f=Vc(d,{width:s,height:l});n=f.x,i=f.y,h=null,c=null}else if(H(e)&&a){var g=function(t,e,n){var i=n[0],r=n[1],o=10,a=5,s=0,l=0,u=e.width,h=e.height;switch(t){case"inside":s=e.x+u/2-i/2,l=e.y+h/2-r/2;break;case"top":s=e.x+u/2-i/2,l=e.y-r-o;break;case"bottom":s=e.x+u/2-i/2,l=e.y+h+o;break;case"left":s=e.x-i-o-a,l=e.y+h/2-r/2;break;case"right":s=e.x+u+o+a,l=e.y+h/2-r/2}return[s,l]}(e,p,u);n=g[0],i=g[1]}else{g=function(t,e,n,i,r,o,a){var s=n.getOuterSize(),l=s.width,u=s.height;null!=o&&(t+l+o+2>i?t-=l+o:t+=o);null!=a&&(e+u+a>r?e-=u+a:e+=a);return[t,e]}(n,i,r,s,l,h?null:20,c?null:20);n=g[0],i=g[1]}if(h&&(n-=Yz(h)?u[0]/2:"right"===h?u[0]:0),c&&(i-=Yz(c)?u[1]/2:"bottom"===c?u[1]:0),Sz(t)){g=function(t,e,n,i,r){var o=n.getOuterSize(),a=o.width,s=o.height;return t=Math.min(t+a,i)-a,e=Math.min(e+s,r)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}(n,i,r,s,l);n=g[0],i=g[1]}r.moveTo(n,i)},e.prototype._updateContentNotChangedOnAxis=function(t){var e=this._lastDataByCoordSys,n=!!e&&e.length===t.length;return n&&Fz(e,(function(e,i){var r=e.dataByAxis||[],o=(t[i]||{}).dataByAxis||[];(n=n&&r.length===o.length)&&Fz(r,(function(t,e){var i=o[e]||{},r=t.seriesDataIndices||[],a=i.seriesDataIndices||[];(n=n&&t.value===i.value&&t.axisType===i.axisType&&t.axisId===i.axisId&&r.length===a.length)&&Fz(r,(function(t,e){var i=a[e];n=n&&t.seriesIndex===i.seriesIndex&&t.dataIndex===i.dataIndex}))}))})),this._lastDataByCoordSys=t,!!n},e.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},e.prototype.dispose=function(t,e){a.node||(this._tooltipContent.dispose(),KO("itemTooltip",e))},e.type="tooltip",e}(wf);function Uz(t,e,n){var i,r=e.ecModel;n?(i=new Oh(n,r,r),i=new Oh(e.option,i,r)):i=e;for(var o=t.length-1;o>=0;o--){var a=t[o];a&&(a instanceof Oh&&(a=a.get("tooltip",!0)),H(a)&&(a={formatter:a}),a&&(i=new Oh(a,i,r)))}return i}function Xz(t,e){return t.dispatchAction||V(e.dispatchAction,e)}function Yz(t){return"center"===t||"middle"===t}var Zz=["rect","polygon","keep","clear"];function jz(t,e){var n=xr(t?t.brush:[]);if(n.length){var i=[];P(n,(function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(i=i.concat(e))}));var r=t&&t.toolbox;F(r)&&(r=r[0]),r||(r={feature:{}},t.toolbox=[r]);var o=r.feature||(r.feature={}),a=o.brush||(o.brush={}),s=a.type||(a.type=[]);s.push.apply(s,i),function(t){var e={};P(t,(function(t){e[t]=1})),t.length=0,P(e,(function(e,n){t.push(n)}))}(s),e&&!s.length&&s.push.apply(s,Zz)}}var qz=P;function Kz(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function $z(t,e,n){var i={};return qz(e,(function(e){var r,o=i[e]=((r=function(){}).prototype.__hidden=r.prototype,new r);qz(t[e],(function(t,i){if(TT.isValidType(i)){var r={type:i,visual:t};n&&n(r,e),o[i]=new TT(r),"opacity"===i&&((r=w(r)).type="colorAlpha",o.__hidden.__alphaForOpacity=new TT(r))}}))})),i}function Jz(t,e,n){var i;P(n,(function(t){e.hasOwnProperty(t)&&Kz(e[t])&&(i=!0)})),i&&P(n,(function(n){e.hasOwnProperty(n)&&Kz(e[n])?t[n]=w(e[n]):delete t[n]}))}var Qz={lineX:tE(0),lineY:tE(1),rect:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])},rect:function(t,e,n){return t&&n.boundingRect.intersect(t)}},polygon:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])&&uv(n.range,t[0],t[1])},rect:function(t,e,n){var i=n.range;if(!t||i.length<=1)return!1;var r=t.x,o=t.y,a=t.width,s=t.height,l=i[0];return!!(uv(i,r,o)||uv(i,r+a,o)||uv(i,r,o+s)||uv(i,r+a,o+s)||gi.create(t).contain(l[0],l[1])||nh(r,o,r+a,o,i)||nh(r,o,r,o+s,i)||nh(r+a,o,r+a,o+s,i)||nh(r,o+s,r+a,o+s,i))||void 0}}};function tE(t){var e=["x","y"],n=["width","height"];return{point:function(e,n,i){if(e){var r=i.range;return eE(e[t],r)}},rect:function(i,r,o){if(i){var a=o.range,s=[i[e[t]],i[e[t]]+i[n[t]]];return s[1]e[0][1]&&(e[0][1]=o[0]),o[1]e[1][1]&&(e[1][1]=o[1])}return e&&hE(e)}};function hE(t){return new gi(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var cE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new iA(e.getZr())).on("brush",V(this._onBrush,this)).mount()},e.prototype.render=function(t,e,n,i){this.model=t,this._updateController(t,e,n,i)},e.prototype.updateTransform=function(t,e,n,i){oE(e),this._updateController(t,e,n,i)},e.prototype.updateVisual=function(t,e,n,i){this.updateTransform(t,e,n,i)},e.prototype.updateView=function(t,e,n,i){this._updateController(t,e,n,i)},e.prototype._updateController=function(t,e,n,i){(!i||i.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},e.prototype.dispose=function(){this._brushController.dispose()},e.prototype._onBrush=function(t){var e=this.model.id,n=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:e,areas:w(n),$from:e}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:e,areas:w(n),$from:e})},e.type="brush",e}(wf),pE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.areas=[],n.brushOption={},n}return n(e,t),e.prototype.optionUpdated=function(t,e){var n=this.option;!e&&Jz(n,t,["inBrush","outOfBrush"]);var i=n.inBrush=n.inBrush||{};n.outOfBrush=n.outOfBrush||{color:"#ddd"},i.hasOwnProperty("liftZ")||(i.liftZ=5)},e.prototype.setAreas=function(t){t&&(this.areas=O(t,(function(t){return dE(this.option,t)}),this))},e.prototype.setBrushOption=function(t){this.brushOption=dE(this.option,t),this.brushType=this.brushOption.brushType},e.type="brush",e.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],e.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},e}(Xc);function dE(t,e){return S({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new Oh(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}var fE=["rect","polygon","lineX","lineY","keep","clear"],gE=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n){var i,r,o;e.eachComponent({mainType:"brush"},(function(t){i=t.brushType,r=t.brushOption.brushMode||"single",o=o||!!t.areas.length})),this._brushType=i,this._brushMode=r,P(t.get("type",!0),(function(e){t.setIconStatus(e,("keep"===e?"multiple"===r:"clear"===e?o:e===i)?"emphasis":"normal")}))},e.prototype.updateView=function(t,e,n){this.render(t,e,n)},e.prototype.getIcons=function(){var t=this.model,e=t.get("icon",!0),n={};return P(t.get("type",!0),(function(t){e[t]&&(n[t]=e[t])})),n},e.prototype.onclick=function(t,e,n){var i=this._brushType,r=this._brushMode;"clear"===n?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===n?i:i!==n&&n,brushMode:"keep"===n?"multiple"===r?"single":"multiple":r}})},e.getDefaultOption=function(t){return{show:!0,type:fE.slice(),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:t.getLocale(["toolbox","brush","title"])}},e}(RN);var yE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode={type:"box",ignoreSize:!0},n}return n(e,t),e.type="title",e.defaultOption={zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},e}(Xc),vE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){if(this.group.removeAll(),t.get("show")){var i=this.group,r=t.getModel("textStyle"),o=t.getModel("subtextStyle"),a=t.get("textAlign"),s=tt(t.get("textBaseline"),t.get("textVerticalAlign")),l=new cs({style:ph(r,{text:t.get("text"),fill:r.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new cs({style:ph(o,{text:h,fill:o.getTextColor(),y:u.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),p=t.get("link"),d=t.get("sublink"),f=t.get("triggerEvent",!0);l.silent=!p&&!f,c.silent=!d&&!f,p&&l.on("click",(function(){Pc(p,"_"+t.get("target"))})),d&&c.on("click",(function(){Pc(d,"_"+t.get("subtarget"))})),_s(l).eventData=_s(c).eventData=f?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(l),h&&i.add(c);var g=i.getBoundingRect(),y=t.getBoxLayoutParams();y.width=g.width,y.height=g.height;var v=Vc(y,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));a||("middle"===(a=t.get("left")||t.get("right"))&&(a="center"),"right"===a?v.x+=v.width:"center"===a&&(v.x+=v.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?v.y+=v.height:"middle"===s&&(v.y+=v.height/2),s=s||"top"),i.x=v.x,i.y=v.y,i.markRedraw();var m={align:a,verticalAlign:s};l.setStyle(m),c.setStyle(m),g=i.getBoundingRect();var _=v.margin,x=t.getItemStyle(["color","opacity"]);x.fill=t.get("backgroundColor");var b=new ls({shape:{x:g.x-_[3],y:g.y-_[0],width:g.width+_[1]+_[3],height:g.height+_[0]+_[2],r:t.get("borderRadius")},style:x,subPixelOptimize:!0,silent:!0});i.add(b)}},e.type="title",e}(wf);var mE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode="box",n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),this._initData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this._initData()},e.prototype.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},e.prototype.getCurrentIndex=function(){return this.option.currentIndex},e.prototype.isIndexMax=function(){return this.getCurrentIndex()>=this._data.count()-1},e.prototype.setPlayState=function(t){this.option.autoPlay=!!t},e.prototype.getPlayState=function(){return!!this.option.autoPlay},e.prototype._initData=function(){var t,e=this.option,n=e.data||[],i=e.axisType,r=this._names=[];"category"===i?(t=[],P(n,(function(e,n){var i,o=Cr(Sr(e),"");X(e)?(i=w(e)).value=n:i=n,t.push(i),r.push(o)}))):t=n;var o={category:"ordinal",time:"time",value:"number"}[i]||"number";(this._data=new L_([{name:"value",type:o}],this)).initData(t,r)},e.prototype.getData=function(){return this._data},e.prototype.getCategories=function(){if("category"===this.get("axisType"))return this._names.slice()},e.type="timeline",e.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:[]},e}(Xc),_E=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline.slider",e.defaultOption=zh(mE.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,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:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]}),e}(mE);L(_E,Td.prototype);var xE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline",e}(wf),bE=function(t){function e(e,n,i,r){var o=t.call(this,e,n,i)||this;return o.type=r||"value",o}return n(e,t),e.prototype.getLabelModel=function(){return this.model.getModel("label")},e.prototype.isHorizontal=function(){return"horizontal"===this.model.get("orient")},e}(hb),wE=Math.PI,SE=kr(),ME=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.api=e},e.prototype.render=function(t,e,n){if(this.model=t,this.api=n,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var i=this._layout(t,n),r=this._createGroup("_mainGroup"),o=this._createGroup("_labelGroup"),a=this._axis=this._createAxis(i,t);t.formatTooltip=function(t){return tf("nameValue",{noName:!0,value:a.scale.getLabel({value:t})})},P(["AxisLine","AxisTick","Control","CurrentPointer"],(function(e){this["_render"+e](i,r,a,t)}),this),this._renderAxisLabel(i,o,a,t),this._position(i,t)}this._doPlayStop(),this._updateTicksStatus()},e.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},e.prototype.dispose=function(){this._clearTimer()},e.prototype._layout=function(t,e){var n,i,r,o,a=t.get(["label","position"]),s=t.get("orient"),l=function(t,e){return Vc(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}(t,e),u={horizontal:"center",vertical:(n=null==a||"auto"===a?"horizontal"===s?l.y+l.height/2=0||"+"===n?"left":"right"},h={horizontal:n>=0||"+"===n?"top":"bottom",vertical:"middle"},c={horizontal:0,vertical:wE/2},p="vertical"===s?l.height:l.width,d=t.getModel("controlStyle"),f=d.get("show",!0),g=f?d.get("itemSize"):0,y=f?d.get("itemGap"):0,v=g+y,m=t.get(["label","rotate"])||0;m=m*wE/180;var _=d.get("position",!0),x=f&&d.get("showPlayBtn",!0),b=f&&d.get("showPrevBtn",!0),w=f&&d.get("showNextBtn",!0),S=0,M=p;"left"===_||"bottom"===_?(x&&(i=[0,0],S+=v),b&&(r=[S,0],S+=v),w&&(o=[M-g,0],M-=v)):(x&&(i=[M-g,0],M-=v),b&&(r=[0,0],S+=v),w&&(o=[M-g,0],M-=v));var I=[S,M];return t.get("inverse")&&I.reverse(),{viewRect:l,mainLength:p,orient:s,rotation:c[s],labelRotation:m,labelPosOpt:n,labelAlign:t.get(["label","align"])||u[s],labelBaseline:t.get(["label","verticalAlign"])||t.get(["label","baseline"])||h[s],playPosition:i,prevBtnPosition:r,nextBtnPosition:o,axisExtent:I,controlSize:g,controlGap:y}},e.prototype._position=function(t,e){var n=this._mainGroup,i=this._labelGroup,r=t.viewRect;if("vertical"===t.orient){var o=[1,0,0,1,0,0],a=r.x,s=r.y+r.height;Un(o,o,[-a,-s]),Xn(o,o,-wE/2),Un(o,o,[a,s]),(r=r.clone()).applyTransform(o)}var l=y(r),u=y(n.getBoundingRect()),h=y(i.getBoundingRect()),c=[n.x,n.y],p=[i.x,i.y];p[0]=c[0]=l[0][0];var d,f=t.labelPosOpt;null==f||H(f)?(v(c,u,l,1,d="+"===f?0:1),v(p,h,l,1,1-d)):(v(c,u,l,1,d=f>=0?0:1),p[1]=c[1]+f);function g(t){t.originX=l[0][0]-t.x,t.originY=l[1][0]-t.y}function y(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function v(t,e,n,i,r){t[i]+=n[i][r]-e[i][r]}n.setPosition(c),i.setPosition(p),n.rotation=i.rotation=t.rotation,g(n),g(i)},e.prototype._createAxis=function(t,e){var n=e.getData(),i=e.get("axisType"),r=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new $_({ordinalMeta:t.getCategories(),extent:[1/0,-1/0]});case"time":return new dx({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new Q_}}(e,i);r.getTicks=function(){return n.mapArray(["value"],(function(t){return{value:t}}))};var o=n.getDataExtent("value");r.setExtent(o[0],o[1]),r.niceTicks();var a=new bE("value",r,t.axisExtent,i);return a.model=e,a},e.prototype._createGroup=function(t){var e=this[t]=new Ei;return this.group.add(e),e},e.prototype._renderAxisLine=function(t,e,n,i){var r=n.getExtent();if(i.get(["lineStyle","show"])){var o=new uu({shape:{x1:r[0],y1:0,x2:r[1],y2:0},style:I({lineCap:"round"},i.getModel("lineStyle").getLineStyle()),silent:!0,z2:1});e.add(o);var a=this._progressLine=new uu({shape:{x1:r[0],x2:this._currentPointer?this._currentPointer.x:r[0],y1:0,y2:0},style:T({lineCap:"round",lineWidth:o.style.lineWidth},i.getModel(["progress","lineStyle"]).getLineStyle()),silent:!0,z2:1});e.add(a)}},e.prototype._renderAxisTick=function(t,e,n,i){var r=this,o=i.getData(),a=n.scale.getTicks();this._tickSymbols=[],P(a,(function(t){var a=n.dataToCoord(t.value),s=o.getItemModel(t.value),l=s.getModel("itemStyle"),u=s.getModel(["emphasis","itemStyle"]),h=s.getModel(["progress","itemStyle"]),c={x:a,y:0,onclick:V(r._changeTimeline,r,t.value)},p=IE(s,l,e,c);p.ensureState("emphasis").style=u.getItemStyle(),p.ensureState("progress").style=h.getItemStyle(),sl(p);var d=_s(p);s.get("tooltip")?(d.dataIndex=t.value,d.dataModel=i):d.dataIndex=d.dataModel=null,r._tickSymbols.push(p)}))},e.prototype._renderAxisLabel=function(t,e,n,i){var r=this;if(n.getLabelModel().get("show")){var o=i.getData(),a=n.getViewLabels();this._tickLabels=[],P(a,(function(i){var a=i.tickValue,s=o.getItemModel(a),l=s.getModel("label"),u=s.getModel(["emphasis","label"]),h=s.getModel(["progress","label"]),c=n.dataToCoord(i.tickValue),p=new cs({x:c,y:0,rotation:t.labelRotation-t.rotation,onclick:V(r._changeTimeline,r,a),silent:!1,style:ph(l,{text:i.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});p.ensureState("emphasis").style=ph(u),p.ensureState("progress").style=ph(h),e.add(p),sl(p),SE(p).dataIndex=a,r._tickLabels.push(p)}))}},e.prototype._renderControl=function(t,e,n,i){var r=t.controlSize,o=t.rotation,a=i.getModel("controlStyle").getItemStyle(),s=i.getModel(["emphasis","controlStyle"]).getItemStyle(),l=i.getPlayState(),u=i.get("inverse",!0);function h(t,n,l,u){if(t){var h=Ii(tt(i.get(["controlStyle",n+"BtnSize"]),r),r),c=function(t,e,n,i){var r=i.style,o=eh(t.get(["controlStyle",e]),i||{},new gi(n[0],n[1],n[2],n[3]));r&&o.setStyle(r);return o}(i,n+"Icon",[0,-h/2,h,h],{x:t[0],y:t[1],originX:r/2,originY:0,rotation:u?-o:0,rectHover:!0,style:a,onclick:l});c.ensureState("emphasis").style=s,e.add(c),sl(c)}}h(t.nextBtnPosition,"next",V(this._changeTimeline,this,u?"-":"+")),h(t.prevBtnPosition,"prev",V(this._changeTimeline,this,u?"+":"-")),h(t.playPosition,l?"stop":"play",V(this._handlePlayClick,this,!l),!0)},e.prototype._renderCurrentPointer=function(t,e,n,i){var r=i.getData(),o=i.getCurrentIndex(),a=r.getItemModel(o).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=V(s._handlePointerDrag,s),t.ondragend=V(s._handlePointerDragend,s),TE(t,s._progressLine,o,n,i,!0)},onUpdate:function(t){TE(t,s._progressLine,o,n,i)}};this._currentPointer=IE(a,a,this._mainGroup,{},this._currentPointer,l)},e.prototype._handlePlayClick=function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},e.prototype._handlePointerDrag=function(t,e,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},e.prototype._handlePointerDragend=function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},e.prototype._pointerChangeTimeline=function(t,e){var n=this._toAxisCoord(t)[0],i=qi(this._axis.getExtent().slice());n>i[1]&&(n=i[1]),n=0&&(a[o]=+a[o].toFixed(c)),[a,h]}var zE={min:B(NE,"min"),max:B(NE,"max"),average:B(NE,"average"),median:B(NE,"median")};function EE(t,e){var n=t.getData(),i=t.coordinateSystem;if(e&&!function(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}(e)&&!F(e.coord)&&i){var r=i.dimensions,o=VE(e,n,i,t);if((e=w(e)).type&&zE[e.type]&&o.baseAxis&&o.valueAxis){var a=D(r,o.baseAxis.dim),s=D(r,o.valueAxis.dim),l=zE[e.type](n,o.baseDataDim,o.valueDataDim,a,s);e.coord=l[0],e.value=l[1]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)zE[u[h]]&&(u[h]=GE(n,n.mapDimension(r[h]),u[h]));e.coord=u}}return e}function VE(t,e,n,i){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=n.getAxis(function(t,e){var n=t.getData(),i=n.dimensions;e=n.getDimension(e);for(var r=0;r=0&&"number"==typeof l&&(l=+l.toFixed(Math.min(f,20))),p.coord[h]=d.coord[h]=l,r=[p,d,{type:a,valueIndex:i.valueIndex,value:l}]}else r=[]}var g=[EE(t,r[0]),EE(t,r[1]),I({},r[2])];return g[2].type=g[2].type||null,S(g[2],g[0]),S(g[2],g[1]),g};function qE(t){return!isNaN(t)&&!isFinite(t)}function KE(t,e,n,i){var r=1-t,o=i.dimensions[t];return qE(e[r])&&qE(n[r])&&e[t]===n[t]&&i.getAxis(o).containData(e[t])}function $E(t,e){if("cartesian2d"===t.type){var n=e[0].coord,i=e[1].coord;if(n&&i&&(KE(1,n,i,t)||KE(0,n,i,t)))return!0}return BE(t,e[0])&&BE(t,e[1])}function JE(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=Zi(s.get("x"),r.getWidth()),u=Zi(s.get("y"),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition)o=i.getMarkerPosition(t.getValues(t.dimensions,e));else{var h=a.dimensions,c=t.get(h[0],e),p=t.get(h[1],e);o=a.dataToPoint([c,p])}if(Nw(a,"cartesian2d")){var d=a.getAxis("x"),f=a.getAxis("y");h=a.dimensions;qE(t.get(h[0],e))?o[0]=d.toGlobalCoord(d.getExtent()[n?0:1]):qE(t.get(h[1],e))&&(o[1]=f.toGlobalCoord(f.getExtent()[n?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];t.setItemLayout(e,o)}var QE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=OE.getMarkerModelFromSeries(t,"markLine");if(e){var i=e.getData(),r=ZE(e).from,o=ZE(e).to;r.each((function(e){JE(r,e,!0,t,n),JE(o,e,!1,t,n)})),i.each((function(t){i.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])})),this.markerGroupMap.get(t.id).updateLayout()}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new VC);this.group.add(l.group);var u=function(t,e,n){var i;i=t?O(t&&t.dimensions,(function(t){return T({name:t},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{})})):[{name:"value",type:"float"}];var r=new L_(i,n),o=new L_(i,n),a=new L_([],n),s=O(n.get("data"),B(jE,e,t,n));t&&(s=N(s,B($E,t)));var l=t?FE:function(t){return t.value};return r.initData(O(s,(function(t){return t[0]})),null,l),o.initData(O(s,(function(t){return t[1]})),null,l),a.initData(O(s,(function(t){return t[2]}))),a.hasItemOption=!0,{from:r,to:o,line:a}}(r,t,e),h=u.from,c=u.to,p=u.line;ZE(e).from=h,ZE(e).to=c,e.setData(p);var d=e.get("symbol"),f=e.get("symbolSize"),g=e.get("symbolRotate"),y=e.get("symbolOffset");function v(e,n,r){var o=e.getItemModel(n);JE(e,n,r,t,i);var s=o.getModel("itemStyle").getItemStyle();null==s.fill&&(s.fill=mg(a,"color")),e.setItemVisual(n,{symbolKeepAspect:o.get("symbolKeepAspect"),symbolOffset:tt(o.get("symbolOffset"),y[r?0:1]),symbolRotate:tt(o.get("symbolRotate",!0),g[r?0:1]),symbolSize:tt(o.get("symbolSize"),f[r?0:1]),symbol:tt(o.get("symbol",!0),d[r?0:1]),style:s})}F(d)||(d=[d,d]),F(f)||(f=[f,f]),F(g)||(g=[g,g]),F(y)||(y=[y,y]),u.from.each((function(t){v(h,t,!0),v(c,t,!1)})),p.each((function(t){var e=p.getItemModel(t).getModel("lineStyle").getLineStyle();p.setItemLayout(t,[h.getItemLayout(t),c.getItemLayout(t)]),null==e.stroke&&(e.stroke=h.getItemVisual(t,"style").fill),p.setItemVisual(t,{fromSymbolKeepAspect:h.getItemVisual(t,"symbolKeepAspect"),fromSymbolOffset:h.getItemVisual(t,"symbolOffset"),fromSymbolRotate:h.getItemVisual(t,"symbolRotate"),fromSymbolSize:h.getItemVisual(t,"symbolSize"),fromSymbol:h.getItemVisual(t,"symbol"),toSymbolKeepAspect:c.getItemVisual(t,"symbolKeepAspect"),toSymbolOffset:c.getItemVisual(t,"symbolOffset"),toSymbolRotate:c.getItemVisual(t,"symbolRotate"),toSymbolSize:c.getItemVisual(t,"symbolSize"),toSymbol:c.getItemVisual(t,"symbol"),style:e})})),l.updateData(p),u.line.eachItemGraphicEl((function(t,n){t.traverse((function(t){_s(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markLine",e}(WE);var tV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markArea",e.defaultOption={zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}},e}(OE),eV=kr(),nV=function(t,e,n,i){var r=EE(t,i[0]),o=EE(t,i[1]),a=r.coord,s=o.coord;a[0]=Q(a[0],-1/0),a[1]=Q(a[1],-1/0),s[0]=Q(s[0],1/0),s[1]=Q(s[1],1/0);var l=M([{},r,o]);return l.coord=[r.coord,o.coord],l.x0=r.x,l.y0=r.y,l.x1=o.x,l.y1=o.y,l};function iV(t){return!isNaN(t)&&!isFinite(t)}function rV(t,e,n,i){var r=1-t;return iV(e[r])&&iV(n[r])}function oV(t,e){var n=e.coord[0],i=e.coord[1];return!!(Nw(t,"cartesian2d")&&n&&i&&(rV(1,n,i)||rV(0,n,i)))||(BE(t,{coord:n,x:e.x0,y:e.y0})||BE(t,{coord:i,x:e.x1,y:e.y1}))}function aV(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=Zi(s.get(n[0]),r.getWidth()),u=Zi(s.get(n[1]),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition)o=i.getMarkerPosition(t.getValues(n,e));else{var h=[d=t.get(n[0],e),f=t.get(n[1],e)];a.clampData&&a.clampData(h,h),o=a.dataToPoint(h,!0)}if(Nw(a,"cartesian2d")){var c=a.getAxis("x"),p=a.getAxis("y"),d=t.get(n[0],e),f=t.get(n[1],e);iV(d)?o[0]=c.toGlobalCoord(c.getExtent()["x0"===n[0]?0:1]):iV(f)&&(o[1]=p.toGlobalCoord(p.getExtent()["y0"===n[1]?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];return o}var sV=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],lV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=OE.getMarkerModelFromSeries(t,"markArea");if(e){var i=e.getData();i.each((function(e){var r=O(sV,(function(r){return aV(i,e,r,t,n)}));i.setItemLayout(e,r),i.getItemGraphicEl(e).setShape("points",r)}))}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,{group:new Ei});this.group.add(l.group),this.markKeep(l);var u=function(t,e,n){var i,r,o=["x0","y0","x1","y1"];t?(i=O(t&&t.dimensions,(function(t){var n=e.getData();return T({name:t},n.getDimensionInfo(n.mapDimension(t))||{})})),r=new L_(O(o,(function(t,e){return{name:t,type:i[e%2].type}})),n)):r=new L_(i=[{name:"value",type:"float"}],n);var a=O(n.get("data"),B(nV,e,t,n));t&&(a=N(a,B(oV,t)));var s=t?function(t,e,n,i){return t.coord[Math.floor(i/2)][i%2]}:function(t){return t.value};return r.initData(a,null,s),r.hasItemOption=!0,r}(r,t,e);e.setData(u),u.each((function(e){var n=O(sV,(function(n){return aV(u,e,n,t,i)})),o=r.getAxis("x").scale,s=r.getAxis("y").scale,l=o.getExtent(),h=s.getExtent(),c=[o.parse(u.get("x0",e)),o.parse(u.get("x1",e))],p=[s.parse(u.get("y0",e)),s.parse(u.get("y1",e))];qi(c),qi(p);var d=!!(l[0]>c[1]||l[1]p[1]||h[1]=0},e.prototype.getOrient=function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},e.type="legend.plain",e.dependencies=["series"],e.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,symbolRotate:"inherit",inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",decal:"inherit",shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit",shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:" sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},e}(Xc),hV=B,cV=P,pV=Ei,dV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.newlineDisabled=!1,n}return n(e,t),e.prototype.init=function(){this.group.add(this._contentGroup=new pV),this.group.add(this._selectorGroup=new pV),this._isFirstRender=!0},e.prototype.getContentGroup=function(){return this._contentGroup},e.prototype.getSelectorGroup=function(){return this._selectorGroup},e.prototype.render=function(t,e,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var r=t.get("align"),o=t.get("orient");r&&"auto"!==r||(r="right"===t.get("left")&&"vertical"===o?"right":"left");var a=t.get("selector",!0),s=t.get("selectorPosition",!0);!a||s&&"auto"!==s||(s="horizontal"===o?"end":"start"),this.renderInner(r,t,e,n,a,o,s);var l=t.getBoxLayoutParams(),u={width:n.getWidth(),height:n.getHeight()},h=t.get("padding"),c=Vc(l,u,h),p=this.layoutInner(t,r,c,i,a,s),d=Vc(T({width:p.width,height:p.height},l),u,h);this.group.x=d.x-p.x,this.group.y=d.y-p.y,this.group.markRedraw(),this.group.add(this._backgroundEl=BN(p,t))}},e.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},e.prototype.renderInner=function(t,e,n,i,r,o,a){var s=this.getContentGroup(),l=ht(),u=e.get("selectedMode"),h=[];n.eachRawSeries((function(t){!t.get("legendHoverLink")&&h.push(t.id)})),cV(e.getData(),(function(r,o){var a=r.get("name");if(!this.newlineDisabled&&(""===a||"\n"===a)){var c=new pV;return c.newline=!0,void s.add(c)}var p=n.getSeriesByName(a)[0];if(!l.get(a)){if(p){var d=p.getData(),f=d.getVisual("legendLineStyle")||{},g=d.getVisual("legendIcon"),y=d.getVisual("style");this._createItem(p,a,o,r,e,t,f,y,g,u).on("click",hV(fV,a,null,i,h)).on("mouseover",hV(yV,p.name,null,i,h)).on("mouseout",hV(vV,p.name,null,i,h)),l.set(a,!0)}else n.eachRawSeries((function(n){if(!l.get(a)&&n.legendVisualProvider){var s=n.legendVisualProvider;if(!s.containName(a))return;var c=s.indexOfName(a),p=s.getItemVisual(c,"style"),d=s.getItemVisual(c,"legendIcon"),f=He(p.fill);f&&0===f[3]&&(f[3]=.2,p.fill=Je(f,"rgba")),this._createItem(n,a,o,r,e,t,{},p,d,u).on("click",hV(fV,null,a,i,h)).on("mouseover",hV(yV,null,a,i,h)).on("mouseout",hV(vV,null,a,i,h)),l.set(a,!0)}}),this);0}}),this),r&&this._createSelector(r,e,i,o,a)},e.prototype._createSelector=function(t,e,n,i,r){var o=this.getSelectorGroup();cV(t,(function(t){var i=t.type,r=new cs({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:"all"===i?"legendAllSelect":"legendInverseSelect"})}});o.add(r),hh(r,{normal:e.getModel("selectorLabel"),emphasis:e.getModel(["emphasis","selectorLabel"])},{defaultText:t.title}),sl(r)}))},e.prototype._createItem=function(t,e,n,i,r,o,a,s,l,u){var h=t.visualDrawType,c=r.get("itemWidth"),p=r.get("itemHeight"),d=r.isSelected(e),f=i.get("symbolRotate"),g=i.get("icon"),y=function(t,e,n,i,r,o,a){for(var s=e.getModel("itemStyle"),l=Lh.concat([["decal"]]),u={},h=0;h0?2:0:u[p]=y}var d=e.getModel("lineStyle"),f=Ch.concat([["inactiveColor"],["inactiveWidth"]]),g={};for(h=0;h0?2:0:g[p]=y}if("auto"===u.fill&&(u.fill=r.fill),"auto"===u.stroke&&(u.stroke=r.fill),"auto"===g.stroke&&(g.stroke=r.fill),!a){var v=e.get("inactiveBorderWidth"),m=u[t.indexOf("empty")>-1?"fill":"stroke"];u.lineWidth="auto"===v?r.lineWidth>0&&m?2:0:u.lineWidth,u.fill=e.get("inactiveColor"),u.stroke=e.get("inactiveBorderColor"),g.stroke=n.get("inactiveColor"),g.lineWidth=n.get("inactiveWidth")}return{itemStyle:u,lineStyle:g}}(l=g||l||"roundRect",i,r.getModel("lineStyle"),a,s,h,d),v=new pV,m=i.getModel("textStyle");if("function"!=typeof t.getLegendIcon||g&&"inherit"!==g){var _="inherit"===g&&t.getData().getVisual("symbol")?"inherit"===f?t.getData().getVisual("symbolRotate"):f:0;v.add(function(t){var e=t.icon||"roundRect",n=fy(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill);n.setStyle(t.itemStyle),n.rotation=(t.iconRotate||0)*Math.PI/180,n.setOrigin([t.itemWidth/2,t.itemHeight/2]),e.indexOf("empty")>-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2);return n}({itemWidth:c,itemHeight:p,icon:l,iconRotate:_,itemStyle:y.itemStyle,lineStyle:y.lineStyle}))}else v.add(t.getLegendIcon({itemWidth:c,itemHeight:p,icon:l,iconRotate:f,itemStyle:y.itemStyle,lineStyle:y.lineStyle}));var x="left"===o?c+5:-5,b=o,w=r.get("formatter"),S=e;"string"==typeof w&&w?S=w.replace("{name}",null!=e?e:""):"function"==typeof w&&(S=w(e));var M=i.get("inactiveColor");v.add(new cs({style:ph(m,{text:S,x:x,y:p/2,fill:d?m.getTextColor():M,align:b,verticalAlign:"middle"})}));var I=new ls({shape:v.getBoundingRect(),invisible:!0}),T=i.getModel("tooltip");return T.get("show")&&oh({el:I,componentModel:r,itemName:e,itemTooltipOption:T.option}),v.add(I),v.eachChild((function(t){t.silent=!0})),I.silent=!u,this.getContentGroup().add(v),sl(v),v.__legendDataIndex=n,v},e.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getContentGroup(),s=this.getSelectorGroup();Ec(t.get("orient"),a,t.get("itemGap"),n.width,n.height);var l=a.getBoundingRect(),u=[-l.x,-l.y];if(s.markRedraw(),a.markRedraw(),r){Ec("horizontal",s,t.get("selectorItemGap",!0));var h=s.getBoundingRect(),c=[-h.x,-h.y],p=t.get("selectorButtonGap",!0),d=t.getOrient().index,f=0===d?"width":"height",g=0===d?"height":"width",y=0===d?"y":"x";"end"===o?c[d]+=l[f]+p:u[d]+=h[f]+p,c[1-d]+=l[g]/2-h[g]/2,s.x=c[0],s.y=c[1],a.x=u[0],a.y=u[1];var v={x:0,y:0};return v[f]=l[f]+p+h[f],v[g]=Math.max(l[g],h[g]),v[y]=Math.min(0,h[y]+c[1-d]),v}return a.x=u[0],a.y=u[1],this.group.getBoundingRect()},e.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},e.type="legend.plain",e}(wf);function fV(t,e,n,i){vV(t,e,n,i),n.dispatchAction({type:"legendToggleSelect",name:null!=t?t:e}),yV(t,e,n,i)}function gV(t){for(var e,n=t.getZr().storage.getDisplayList(),i=0,r=n.length;in[r],f=[-c.x,-c.y];e||(f[i]=l[s]);var g=[0,0],y=[-p.x,-p.y],v=tt(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?y[i]+=n[r]-p[r]:g[i]+=p[r]+v);y[1-i]+=c[o]/2-p[o]/2,l.setPosition(f),u.setPosition(g),h.setPosition(y);var m={x:0,y:0};if(m[r]=d?n[r]:c[r],m[o]=Math.max(c[o],p[o]),m[a]=Math.min(0,p[a]+y[1-i]),u.__rectSize=n[r],d){var _={x:0,y:0};_[r]=Math.max(n[r]-p[r]-v,0),_[o]=m[o],u.setClipPath(new ls({shape:_})),u.__rectSize=_[r]}else h.eachChild((function(t){t.attr({invisible:!0,silent:!0})}));var x=this._getPageInfo(t);return null!=x.pageIndex&&Hu(l,{x:x.contentPosition[0],y:x.contentPosition[1]},d?t:null),this._updatePageInfoView(t,x),m},e.prototype._pageGo=function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},e.prototype._updatePageInfoView=function(t,e){var n=this._controllerGroup;P(["pagePrev","pageNext"],(function(i){var r=null!=e[i+"DataIndex"],o=n.childOfName(i);o&&(o.setStyle("fill",r?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),o.cursor=r?"pointer":"default")}));var i=n.childOfName("pageText"),r=t.get("pageFormatter"),o=e.pageIndex,a=null!=o?o+1:0,s=e.pageCount;i&&r&&i.setStyle("text",H(r)?r.replace("{current}",null==a?"":a+"").replace("{total}",null==s?"":s+""):r({current:a,total:s}))},e.prototype._getPageInfo=function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,r=t.getOrient().index,o=MV[r],a=IV[r],s=this._findTargetItemIndex(e),l=n.children(),u=l[s],h=l.length,c=h?1:0,p={contentPosition:[n.x,n.y],pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return p;var d=m(u);p.contentPosition[r]=-d.s;for(var f=s+1,g=d,y=d,v=null;f<=h;++f)(!(v=m(l[f]))&&y.e>g.s+i||v&&!_(v,g.s))&&(g=y.i>g.i?y:v)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=g.i),++p.pageCount),y=v;for(f=s-1,g=d,y=d,v=null;f>=-1;--f)(v=m(l[f]))&&_(y,v.s)||!(g.i=e&&t.s<=e+i}},e.prototype._findTargetItemIndex=function(t){return this._showController?(this.getContentGroup().eachChild((function(i,r){var o=i.__legendDataIndex;null==n&&null!=o&&(n=r),o===t&&(e=r)})),null!=e?e:n):0;var e,n},e.type="legend.scroll",e}(dV);function CV(t){Qm(xV),t.registerComponentModel(bV),t.registerComponentView(TV),function(t){t.registerAction("legendScroll","legendscroll",(function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},(function(t){t.setScrollDataIndex(n)}))}))}(t)}var DV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.inside",e.defaultOption=zh(wN.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),e}(wN),AV=kr();function LV(t,e,n){AV(t).coordSysRecordMap.each((function(t){var i=t.dataZoomInfoMap.get(e.uid);i&&(i.getRange=n)}))}function kV(t,e){if(e){t.removeKey(e.model.uid);var n=e.controller;n&&n.dispose()}}function PV(t,e){t.dispatchAction({type:"dataZoom",animation:{easing:"cubicOut",duration:100},batch:e})}function OV(t,e,n,i){return t.coordinateSystem.containPoint([n,i])}function RV(t){t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,(function(t,e){var n=AV(e),i=n.coordSysRecordMap||(n.coordSysRecordMap=ht());i.each((function(t){t.dataZoomInfoMap=null})),t.eachComponent({mainType:"dataZoom",subType:"inside"},(function(t){P(xN(t).infoList,(function(n){var r=n.model.uid,o=i.get(r)||i.set(r,function(t,e){var n={model:e,containsPoint:B(OV,e),dispatchAction:B(PV,t),dataZoomInfoMap:null,controller:null},i=n.controller=new WM(t.getZr());return P(["pan","zoom","scrollMove"],(function(t){i.on(t,(function(e){var i=[];n.dataZoomInfoMap.each((function(r){if(e.isAvailableBehavior(r.model.option)){var o=(r.getRange||{})[t],a=o&&o(r.dzReferCoordSysInfo,n.model.mainType,n.controller,e);!r.model.get("disabled",!0)&&a&&i.push({dataZoomId:r.model.id,start:a[0],end:a[1]})}})),i.length&&n.dispatchAction(i)}))})),n}(e,n.model));(o.dataZoomInfoMap||(o.dataZoomInfoMap=ht())).set(t.uid,{dzReferCoordSysInfo:n,model:t,getRange:null})}))})),i.each((function(t){var e,n=t.controller,r=t.dataZoomInfoMap;if(r){var o=r.keys()[0];null!=o&&(e=r.get(o))}if(e){var a=function(t){var e,n="type_",i={type_true:2,type_move:1,type_false:0,type_undefined:-1},r=!0;return t.each((function(t){var o=t.model,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i[n+a]>i[n+e]&&(e=a),r=r&&o.get("preventDefaultMouseMove",!0)})),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!r}}}(r);n.enable(a.controlType,a.opt),n.setPointerChecker(t.containsPoint),zf(t,"dispatchAction",e.model.get("throttle",!0),"fixRate")}else kV(i,t)}))}))}var NV=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataZoom.inside",e}return n(e,t),e.prototype.render=function(e,n,i){t.prototype.render.apply(this,arguments),e.noTarget()?this._clear():(this.range=e.getPercentRange(),LV(i,e,{pan:V(zV.pan,this),zoom:V(zV.zoom,this),scrollMove:V(zV.scrollMove,this)}))},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){!function(t,e){for(var n=AV(t).coordSysRecordMap,i=n.keys(),r=0;r0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(o[1]-o[0])+o[0],u=Math.max(1/i.scale,0);o[0]=(o[0]-l)*u+l,o[1]=(o[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return PD(0,o,[0,100],0,h.minSpan,h.maxSpan),this.range=o,r[0]!==o[0]||r[1]!==o[1]?o:void 0}},pan:EV((function(t,e,n,i,r,o){var a=VV[i]([o.oldX,o.oldY],[o.newX,o.newY],e,r,n);return a.signal*(t[1]-t[0])*a.pixel/a.pixelLength})),scrollMove:EV((function(t,e,n,i,r,o){return VV[i]([0,0],[o.scrollDelta,o.scrollDelta],e,r,n).signal*(t[1]-t[0])*o.scrollDelta}))};function EV(t){return function(e,n,i,r){var o=this.range,a=o.slice(),s=e.axisModels[0];if(s)return PD(t(a,s,e,n,i,r),a,[0,100],"all"),this.range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}}var VV={grid:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem.getRect();return t=t||[0,0],"x"===o.dim?(a.pixel=e[0]-t[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=o.inverse?-1:1),a},polar:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===n.mainType?(a.pixel=e[0]-t[0],a.pixelLength=l[1]-l[0],a.pixelStart=l[0],a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=u[1]-u[0],a.pixelStart=u[0],a.signal=o.inverse?-1:1),a},singleAxis:function(t,e,n,i,r){var o=n.axis,a=r.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===o.orient?(s.pixel=e[0]-t[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=o.inverse?-1:1),s}};function BV(t){PN(t),t.registerComponentModel(DV),t.registerComponentView(NV),RV(t)}var FV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.slider",e.layoutMode="box",e.defaultOption=zh(wN.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),e}(wN),GV=ls,HV="horizontal",WV="vertical",UV=["line","bar","candlestick","scatter"],XV={easing:"cubicOut",duration:100},YV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._displayables={},n}return n(e,t),e.prototype.init=function(t,e){this.api=e,this._onBrush=V(this._onBrush,this),this._onBrushEnd=V(this._onBrushEnd,this)},e.prototype.render=function(e,n,i,r){if(t.prototype.render.apply(this,arguments),zf(this,"_dispatchZoomAction",e.get("throttle"),"fixRate"),this._orient=e.getOrient(),!1!==e.get("show")){if(e.noTarget())return this._clear(),void this.group.removeAll();r&&"dataZoom"===r.type&&r.from===this.uid||this._buildView(),this._updateView()}else this.group.removeAll()},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){var t,e,n;(n=(t=this)[e="_dispatchZoomAction"])&&n[Pf]&&(t[e]=n[Pf]);var i=this.api.getZr();i.off("mousemove",this._onBrush),i.off("mouseup",this._onBrushEnd)},e.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var e=this._displayables.sliderGroup=new Ei;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},e.prototype._resetLocation=function(){var t=this.dataZoomModel,e=this.api,n=t.get("brushSelect")?7:0,i=this._findCoordRect(),r={width:e.getWidth(),height:e.getHeight()},o=this._orient===HV?{right:r.width-i.x-i.width,top:r.height-30-7-n,width:i.width,height:30}:{right:7,top:i.y,width:30,height:i.height},a=Hc(t.option);P(["right","top","width","height"],(function(t){"ph"===a[t]&&(a[t]=o[t])}));var s=Vc(a,r);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===WV&&this._size.reverse()},e.prototype._positionGroup=function(){var t=this.group,e=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),r=i&&i.get("inverse"),o=this._displayables.sliderGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(n!==HV||r?n===HV&&r?{scaleY:a?1:-1,scaleX:-1}:n!==WV||r?{scaleY:a?-1:1,scaleX:-1,rotation:Math.PI/2}:{scaleY:a?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:a?1:-1,scaleX:1});var s=t.getBoundingRect([o]);t.x=e.x-s.x,t.y=e.y-s.y,t.markRedraw()},e.prototype._getViewExtent=function(){return[0,this._size[0]]},e.prototype._renderBackground=function(){var t=this.dataZoomModel,e=this._size,n=this._displayables.sliderGroup,i=t.get("brushSelect");n.add(new GV({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var r=new GV({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:V(this._onClickPanel,this)}),o=this.api.getZr();i?(r.on("mousedown",this._onBrushStart,this),r.cursor="crosshair",o.on("mousemove",this._onBrush),o.on("mouseup",this._onBrushEnd)):(o.off("mousemove",this._onBrush),o.off("mouseup",this._onBrushEnd)),n.add(r)},e.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],t){var e=this._size,n=t.series,i=n.getRawData(),r=n.getShadowDim?n.getShadowDim():t.otherDim;if(null!=r){var o=i.getDataExtent(r),a=.3*(o[1]-o[0]);o=[o[0]-a,o[1]+a];var s,l=[0,e[1]],u=[0,e[0]],h=[[e[0],0],[0,0]],c=[],p=u[1]/(i.count()-1),d=0,f=Math.round(i.count()/e[0]);i.each([r],(function(t,e){if(f>0&&e%f)d+=p;else{var n=null==t||isNaN(t)||""===t,i=n?0:Yi(t,o,l,!0);n&&!s&&e?(h.push([h[h.length-1][0],0]),c.push([c[c.length-1][0],0])):!n&&s&&(h.push([d,0]),c.push([d,0])),h.push([d,i]),c.push([d,i]),d+=p,s=n}}));for(var g=this.dataZoomModel,y=0;y<3;y++){var v=m(1===y);this._displayables.sliderGroup.add(v),this._displayables.dataShadowSegs.push(v)}}}function m(t){var e=g.getModel(t?"selectedDataBackground":"dataBackground"),n=new Ei,i=new ru({shape:{points:h},segmentIgnoreThreshold:1,style:e.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),r=new au({shape:{points:c},segmentIgnoreThreshold:1,style:e.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19});return n.add(i),n.add(r),n}},e.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var n,i=this.ecModel;return t.eachTargetAxis((function(r,o){P(t.getAxisProxy(r,o).getTargetSeriesModels(),(function(t){if(!(n||!0!==e&&D(UV,t.get("type"))<0)){var a,s=i.getComponent(mN(r),o).axis,l={x:"y",y:"x",radius:"angle",angle:"radius"}[r],u=t.coordinateSystem;null!=l&&u.getOtherAxis&&(a=u.getOtherAxis(s).inverse),l=t.getData().mapDimension(l),n={thisAxis:s,series:t,thisDim:r,otherDim:l,otherAxisInverse:a}}}),this)}),this),n}},e.prototype._renderHandle=function(){var t=this.group,e=this._displayables,n=e.handles=[null,null],i=e.handleLabels=[null,null],r=this._displayables.sliderGroup,o=this._size,a=this.dataZoomModel,s=this.api,l=a.get("borderRadius")||0,u=a.get("brushSelect"),h=e.filler=new GV({silent:u,style:{fill:a.get("fillerColor")},textConfig:{position:"inside"}});r.add(h),r.add(new GV({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:o[0],height:o[1],r:l},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),P([0,1],(function(e){var o=a.get("handleIcon");!cy[o]&&o.indexOf("path://")<0&&o.indexOf("image://")<0&&(o="path://"+o);var s=fy(o,-1,0,2,2,null,!0);s.attr({cursor:ZV(this._orient),draggable:!0,drift:V(this._onDragMove,this,e),ondragend:V(this._onDragEnd,this),onmouseover:V(this._showDataInfo,this,!0),onmouseout:V(this._showDataInfo,this,!1),z2:5});var l=s.getBoundingRect(),u=a.get("handleSize");this._handleHeight=Zi(u,this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,s.setStyle(a.getModel("handleStyle").getItemStyle()),s.style.strokeNoScale=!0,s.rectHover=!0,s.ensureState("emphasis").style=a.getModel(["emphasis","handleStyle"]).getItemStyle(),sl(s);var h=a.get("handleColor");null!=h&&(s.style.fill=h),r.add(n[e]=s);var c=a.getModel("textStyle");t.add(i[e]=new cs({silent:!0,invisible:!0,style:ph(c,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:c.getTextColor(),font:c.getFont()}),z2:10}))}),this);var c=h;if(u){var p=Zi(a.get("moveHandleSize"),o[1]),d=e.moveHandle=new ls({style:a.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:o[1]-.5,height:p}}),f=.8*p,g=e.moveHandleIcon=fy(a.get("moveHandleIcon"),-f/2,-f/2,f,f,"#fff",!0);g.silent=!0,g.y=o[1]+p/2-.5,d.ensureState("emphasis").style=a.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var y=Math.min(o[1]/2,Math.max(p,10));(c=e.moveZone=new ls({invisible:!0,shape:{y:o[1]-y,height:p+y}})).on("mouseover",(function(){s.enterEmphasis(d)})).on("mouseout",(function(){s.leaveEmphasis(d)})),r.add(d),r.add(g),r.add(c)}c.attr({draggable:!0,cursor:ZV(this._orient),drift:V(this._onDragMove,this,"all"),ondragstart:V(this._showDataInfo,this,!0),ondragend:V(this._onDragEnd,this),onmouseover:V(this._showDataInfo,this,!0),onmouseout:V(this._showDataInfo,this,!1)})},e.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[Yi(t[0],[0,100],e,!0),Yi(t[1],[0,100],e,!0)]},e.prototype._updateInterval=function(t,e){var n=this.dataZoomModel,i=this._handleEnds,r=this._getViewExtent(),o=n.findRepresentativeAxisProxy().getMinMaxSpan(),a=[0,100];PD(e,i,r,n.get("zoomLock")?"all":t,null!=o.minSpan?Yi(o.minSpan,a,r,!0):null,null!=o.maxSpan?Yi(o.maxSpan,a,r,!0):null);var s=this._range,l=this._range=qi([Yi(i[0],r,a,!0),Yi(i[1],r,a,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},e.prototype._updateView=function(t){var e=this._displayables,n=this._handleEnds,i=qi(n.slice()),r=this._size;P([0,1],(function(t){var i=e.handles[t],o=this._handleHeight;i.attr({scaleX:o/2,scaleY:o/2,x:n[t]+(t?-1:1),y:r[1]/2-o/2})}),this),e.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:r[1]});var o={x:i[0],width:i[1]-i[0]};e.moveHandle&&(e.moveHandle.setShape(o),e.moveZone.setShape(o),e.moveZone.getBoundingRect(),e.moveHandleIcon&&e.moveHandleIcon.attr("x",o.x+o.width/2));for(var a=e.dataShadowSegs,s=[0,i[0],i[1],r[0]],l=0;le[0]||n[1]<0||n[1]>e[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval("all",n[0]-r);this._updateView(),o&&this._dispatchZoomAction(!1)}},e.prototype._onBrushStart=function(t){var e=t.offsetX,n=t.offsetY;this._brushStart=new ai(e,n),this._brushing=!0,this._brushStartTime=+new Date},e.prototype._onBrushEnd=function(t){if(this._brushing){var e=this._displayables.brushRect;if(this._brushing=!1,e){e.attr("ignore",!0);var n=e.shape;if(!(+new Date-this._brushStartTime<200&&Math.abs(n.width)<5)){var i=this._getViewExtent(),r=[0,100];this._range=qi([Yi(n.x,i,r,!0),Yi(n.x+n.width,i,r,!0)]),this._handleEnds=[n.x,n.x+n.width],this._updateView(),this._dispatchZoomAction(!1)}}}},e.prototype._onBrush=function(t){this._brushing&&(ee(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},e.prototype._updateBrushRect=function(t,e){var n=this._displayables,i=this.dataZoomModel,r=n.brushRect;r||(r=n.brushRect=new GV({silent:!0,style:i.getModel("brushStyle").getItemStyle()}),n.sliderGroup.add(r)),r.attr("ignore",!1);var o=this._brushStart,a=this._displayables.sliderGroup,s=a.transformCoordToLocal(t,e),l=a.transformCoordToLocal(o.x,o.y),u=this._size;s[0]=Math.max(Math.min(u[0],s[0]),0),r.setShape({x:l[0],y:0,width:s[0]-l[0],height:u[1]})},e.prototype._dispatchZoomAction=function(t){var e=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?XV:null,start:e[0],end:e[1]})},e.prototype._findCoordRect=function(){var t,e=xN(this.dataZoomModel).infoList;if(!t&&e.length){var n=e[0].model.coordinateSystem;t=n.getRect&&n.getRect()}if(!t){var i=this.api.getWidth(),r=this.api.getHeight();t={x:.2*i,y:.2*r,width:.6*i,height:.6*r}}return t},e.type="dataZoom.slider",e}(IN);function ZV(t){return"vertical"===t?"ns-resize":"ew-resize"}function jV(t){t.registerComponentModel(FV),t.registerComponentView(YV),PN(t)}var qV=function(t,e,n){var i=w((KV[t]||{})[e]);return n&&F(i)?i[i.length-1]:i},KV={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]}},$V=TT.mapVisual,JV=TT.eachVisual,QV=F,tB=P,eB=qi,nB=Yi,iB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.stateList=["inRange","outOfRange"],n.replacableOptionKeys=["inRange","outOfRange","target","controller","color"],n.layoutMode={type:"box",ignoreSize:!0},n.dataBound=[-1/0,1/0],n.targetVisuals={},n.controllerVisuals={},n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n)},e.prototype.optionUpdated=function(t,e){var n=this.option;a.canvasSupported||(n.realtime=!1),!e&&Jz(n,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},e.prototype.resetVisual=function(t){var e=this.stateList;t=V(t,this),this.controllerVisuals=$z(this.option.controller,e,t),this.targetVisuals=$z(this.option.target,e,t)},e.prototype.getItemSymbol=function(){return null},e.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries((function(t,n){e.push(n)})):e=xr(t),e},e.prototype.eachTargetSeries=function(t,e){P(this.getTargetSeriesIndices(),(function(n){var i=this.ecModel.getSeriesByIndex(n);i&&t.call(e,i)}),this)},e.prototype.isTargetSeries=function(t){var e=!1;return this.eachTargetSeries((function(n){n===t&&(e=!0)})),e},e.prototype.formatValueText=function(t,e,n){var i,r=this.option,o=r.precision,a=this.dataBound,s=r.formatter;n=n||["<",">"],F(t)&&(t=t.slice(),i=!0);var l=e?t:i?[u(t[0]),u(t[1])]:u(t);return H(s)?s.replace("{value}",i?l[0]:l).replace("{value2}",i?l[1]:l):G(s)?i?s(t[0],t[1]):s(t):i?t[0]===a[0]?n[0]+" "+l[1]:t[1]===a[1]?n[1]+" "+l[0]:l[0]+" - "+l[1]:l;function u(t){return t===a[0]?"min":t===a[1]?"max":(+t).toFixed(Math.min(o,20))}},e.prototype.resetExtent=function(){var t=this.option,e=eB([t.min,t.max]);this._dataExtent=e},e.prototype.getDataDimension=function(t){var e=this.option.dimension,n=t.dimensions;if(null!=e||n.length){if(null!=e)return t.getDimension(e);for(var i=t.dimensions,r=i.length-1;r>=0;r--){var o=i[r];if(!t.getDimensionInfo(o).isCalculationCoord)return o}}},e.prototype.getExtent=function(){return this._dataExtent.slice()},e.prototype.completeVisualOption=function(){var t=this.ecModel,e=this.option,n={inRange:e.inRange,outOfRange:e.outOfRange},i=e.target||(e.target={}),r=e.controller||(e.controller={});S(i,n),S(r,n);var o=this.isCategory();function a(n){QV(e.color)&&!n.inRange&&(n.inRange={color:e.color.slice().reverse()}),n.inRange=n.inRange||{color:t.get("gradientColor")}}a.call(this,i),a.call(this,r),function(t,e,n){var i=t[e],r=t[n];i&&!r&&(r=t[n]={},tB(i,(function(t,e){if(TT.isValidType(e)){var n=qV(e,"inactive",o);null!=n&&(r[e]=n,"color"!==e||r.hasOwnProperty("opacity")||r.hasOwnProperty("colorAlpha")||(r.opacity=[0,0]))}})))}.call(this,i,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,i=this.get("inactiveColor"),r=this.getItemSymbol()||"roundRect";tB(this.stateList,(function(a){var s=this.itemSize,l=t[a];l||(l=t[a]={color:o?i:[i]}),null==l.symbol&&(l.symbol=e&&w(e)||(o?r:[r])),null==l.symbolSize&&(l.symbolSize=n&&w(n)||(o?s[0]:[s[0],s[0]])),l.symbol=$V(l.symbol,(function(t){return"none"===t?r:t}));var u=l.symbolSize;if(null!=u){var h=-1/0;JV(u,(function(t){t>h&&(h=t)})),l.symbolSize=$V(u,(function(t){return nB(t,[0,h],[0,s[0]],!0)}))}}),this)}.call(this,r)},e.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},e.prototype.isCategory=function(){return!!this.option.categories},e.prototype.setSelected=function(t){},e.prototype.getSelected=function(){return null},e.prototype.getValueState=function(t){return null},e.prototype.getVisualMeta=function(t){return null},e.type="visualMap",e.dependencies=["series"],e.defaultOption={show:!0,zlevel:0,z:4,seriesIndex:"all",min:0,max:200,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,textStyle:{color:"#333"}},e}(Xc),rB=[20,140],oB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual((function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()})),this._resetRange()},e.prototype.resetItemSize=function(){t.prototype.resetItemSize.apply(this,arguments);var e=this.itemSize;(null==e[0]||isNaN(e[0]))&&(e[0]=rB[0]),(null==e[1]||isNaN(e[1]))&&(e[1]=rB[1])},e.prototype._resetRange=function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):F(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},e.prototype.completeVisualOption=function(){t.prototype.completeVisualOption.apply(this,arguments),P(this.stateList,(function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=e[1]/3)}),this)},e.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},e.prototype.getSelected=function(){var t=this.getExtent(),e=qi((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=n[1]||t<=e[1])?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[];return this.eachTargetSeries((function(n){var i=[],r=n.getData();r.each(this.getDataDimension(r),(function(e,n){t[0]<=e&&e<=t[1]&&i.push(n)}),this),e.push({seriesId:n.id,dataIndex:i})}),this),e},e.prototype.getVisualMeta=function(t){var e=aB(this,"outOfRange",this.getExtent()),n=aB(this,"inRange",this.option.range.slice()),i=[];function r(e,n){i.push({value:e,color:t(e,n)})}for(var o=0,a=0,s=n.length,l=e.length;at[1])break;n.push({color:this.getControllerVisual(o,"color",e),offset:r/100})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},e.prototype._createBarPoints=function(t,e){var n=this.visualMapModel.itemSize;return[[n[0]-e[0],t[0]],[n[0],t[0]],[n[0],t[1]],[n[0]-e[1],t[1]]]},e.prototype._createBarGroup=function(t){var e=this._orient,n=this.visualMapModel.get("inverse");return new Ei("horizontal"!==e||n?"horizontal"===e&&n?{scaleX:"bottom"===t?-1:1,rotation:-Math.PI/2}:"vertical"!==e||n?{scaleX:"left"===t?1:-1}:{scaleX:"left"===t?1:-1,scaleY:-1}:{scaleX:"bottom"===t?1:-1,rotation:Math.PI/2})},e.prototype._updateHandle=function(t,e){if(this._useHandle){var n=this._shapes,i=this.visualMapModel,r=n.handleThumbs,o=n.handleLabels,a=i.itemSize,s=i.getExtent();pB([0,1],(function(l){var u=r[l];u.setStyle("fill",e.handlesColor[l]),u.y=t[l];var h=cB(t[l],[0,a[1]],s,!0),c=this.getControllerVisual(h,"symbolSize");u.scaleX=u.scaleY=c/a[0],u.x=a[0]-c/2;var p=qu(n.handleLabelPoints[l],ju(u,this.group));o[l].setStyle({x:p[0],y:p[1],text:i.formatValueText(this._dataInterval[l]),verticalAlign:"middle",align:"vertical"===this._orient?this._applyTransform("left",n.mainGroup):"center"})}),this)}},e.prototype._showIndicator=function(t,e,n,i){var r=this.visualMapModel,o=r.getExtent(),a=r.itemSize,s=[0,a[1]],l=this._shapes,u=l.indicator;if(u){u.attr("invisible",!1);var h=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0}),c=this.getControllerVisual(t,"symbolSize"),p=cB(t,o,s,!0),d=a[0]-c/2,f={x:u.x,y:u.y};u.y=p,u.x=d;var g=qu(l.indicatorLabelPoint,ju(u,this.group)),y=l.indicatorLabel;y.attr("invisible",!1);var v=this._applyTransform("left",l.mainGroup),m="horizontal"===this._orient;y.setStyle({text:(n||"")+r.formatValueText(e),verticalAlign:m?v:"middle",align:m?"center":v});var _={x:d,y:p,style:{fill:h}},x={style:{x:g[0],y:g[1]}};if(r.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var b={duration:100,easing:"cubicInOut",additive:!0};u.x=f.x,u.y=f.y,u.animateTo(_,b),y.animateTo(x,b)}else u.attr(_),y.attr(x);this._firstShowIndicator=!1;var w=this._shapes.handleLabels;if(w)for(var S=0;Sr[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",a):u[1]===1/0?this._showIndicator(l,u[0],"> ",a):this._showIndicator(l,l,"≈ ",a));var h=this._hoverLinkDataIndices,c=[];(e||vB(n))&&(c=this._hoverLinkDataIndices=n.findTargetDataIndices(u));var p=function(t,e){var n={},i={};return r(t||[],n),r(e||[],i,n),[o(n),o(i)];function r(t,e,n){for(var i=0,r=t.length;i0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})),t.registerAction(_B,xB),P(bB,(function(e){t.registerVisual(t.PRIORITY.VISUAL.COMPONENT,e)})),t.registerPreprocessor(MB))}function DB(t){t.registerComponentModel(oB),t.registerComponentView(gB),CB(t)}var AB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._pieceList=[],n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var i=this._mode=this._determineMode();this._pieceList=[],LB[this._mode].call(this,this._pieceList),this._resetSelected(e,n);var r=this.option.categories;this.resetVisual((function(t,e){"categories"===i?(t.mappingMethod="category",t.categories=w(r)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=O(this._pieceList,(function(t){return t=w(t),"inRange"!==e&&(t.visual=null),t})))}))},e.prototype.completeVisualOption=function(){var e=this.option,n={},i=TT.listVisualTypes(),r=this.isCategory();function o(t,e,n){return t&&t[e]&&t[e].hasOwnProperty(n)}P(e.pieces,(function(t){P(i,(function(e){t.hasOwnProperty(e)&&(n[e]=1)}))})),P(n,(function(t,n){var i=!1;P(this.stateList,(function(t){i=i||o(e,t,n)||o(e.target,t,n)}),this),!i&&P(this.stateList,(function(t){(e[t]||(e[t]={}))[n]=qV(n,"inRange"===t?"active":"inactive",r)}))}),this),t.prototype.completeVisualOption.apply(this,arguments)},e.prototype._resetSelected=function(t,e){var n=this.option,i=this._pieceList,r=(e?n:t).selected||{};if(n.selected=r,P(i,(function(t,e){var n=this.getSelectedMapKey(t);r.hasOwnProperty(n)||(r[n]=!0)}),this),"single"===n.selectedMode){var o=!1;P(i,(function(t,e){var n=this.getSelectedMapKey(t);r[n]&&(o?r[n]=!1:o=!0)}),this)}},e.prototype.getItemSymbol=function(){return this.get("itemSymbol")},e.prototype.getSelectedMapKey=function(t){return"categories"===this._mode?t.value+"":t.index+""},e.prototype.getPieceList=function(){return this._pieceList},e.prototype._determineMode=function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},e.prototype.setSelected=function(t){this.option.selected=w(t)},e.prototype.getValueState=function(t){var e=TT.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[],n=this._pieceList;return this.eachTargetSeries((function(i){var r=[],o=i.getData();o.each(this.getDataDimension(o),(function(e,i){TT.findPieceIndex(e,n)===t&&r.push(i)}),this),e.push({seriesId:i.id,dataIndex:r})}),this),e},e.prototype.getRepresentValue=function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var n=t.interval||[];e=n[0]===-1/0&&n[1]===1/0?0:(n[0]+n[1])/2}return e},e.prototype.getVisualMeta=function(t){if(!this.isCategory()){var e=[],n=["",""],i=this,r=this._pieceList.slice();if(r.length){var o=r[0].interval[0];o!==-1/0&&r.unshift({interval:[-1/0,o]}),(o=r[r.length-1].interval[1])!==1/0&&r.push({interval:[o,1/0]})}else r.push({interval:[-1/0,1/0]});var a=-1/0;return P(r,(function(t){var e=t.interval;e&&(e[0]>a&&s([a,e[0]],"outOfRange"),s(e.slice()),a=e[1])}),this),{stops:e,outerColors:n}}function s(r,o){var a=i.getRepresentValue({interval:r});o||(o=i.getValueState(a));var s=t(a,o);r[0]===-1/0?n[0]=s:r[1]===1/0?n[1]=s:e.push({value:r[0],color:s},{value:r[1],color:s})}},e.type="visualMap.piecewise",e.defaultOption=zh(iB.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0}),e}(iB),LB={splitNumber:function(t){var e=this.option,n=Math.min(e.precision,20),i=this.getExtent(),r=e.splitNumber;r=Math.max(parseInt(r,10),1),e.splitNumber=r;for(var o=(i[1]-i[0])/r;+o.toFixed(n)!==o&&n<5;)n++;e.precision=n,o=+o.toFixed(n),e.minOpen&&t.push({interval:[-1/0,i[0]],close:[0,0]});for(var a=0,s=i[0];a","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,n)}),this)}};function kB(t,e){var n=t.inverse;("vertical"===t.orient?!n:n)&&e.reverse()}var PB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.doRender=function(){var t=this.group;t.removeAll();var e=this.visualMapModel,n=e.get("textGap"),i=e.textStyleModel,r=i.getFont(),o=i.getTextColor(),a=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=Q(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,a),P(l.viewPieceList,(function(i){var l=i.piece,u=new Ei;u.onclick=V(this._onItemClick,this,l),this._enableHoverLink(u,i.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var p=this.visualMapModel.getValueState(c);u.add(new cs({style:{x:"right"===a?-n:s[0]+n,y:s[1]/2,text:l.text,verticalAlign:"middle",align:a,font:r,fill:o,opacity:"outOfRange"===p?.5:1}}))}t.add(u)}),this),u&&this._renderEndsText(t,u[1],s,h,a),Ec(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},e.prototype._enableHoverLink=function(t,e){var n=this;t.on("mouseover",(function(){return i("highlight")})).on("mouseout",(function(){return i("downplay")}));var i=function(t){var i=n.visualMapModel;i.option.hoverLink&&n.api.dispatchAction({type:t,batch:hB(i.findTargetDataIndices(e),i)})}},e.prototype._getItemAlign=function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return uB(t,this.api,t.itemSize);var n=e.align;return n&&"auto"!==n||(n="left"),n},e.prototype._renderEndsText=function(t,e,n,i,r){if(e){var o=new Ei,a=this.visualMapModel.textStyleModel;o.add(new cs({style:{x:i?"right"===r?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:"middle",align:i?r:"center",text:e,font:a.getFont(),fill:a.getTextColor()}})),t.add(o)}},e.prototype._getViewData=function(){var t=this.visualMapModel,e=O(t.getPieceList(),(function(t,e){return{piece:t,indexInModelPieceList:e}})),n=t.get("text"),i=t.get("orient"),r=t.get("inverse");return("horizontal"===i?r:!r)?e.reverse():n&&(n=n.slice().reverse()),{viewPieceList:e,endsText:n}},e.prototype._createItemSymbol=function(t,e,n){t.add(fy(this.getControllerVisual(e,"symbol"),n[0],n[1],n[2],n[3],this.getControllerVisual(e,"color")))},e.prototype._onItemClick=function(t){var e=this.visualMapModel,n=e.option,i=w(n.selected),r=e.getSelectedMapKey(t);"single"===n.selectedMode?(i[r]=!0,P(i,(function(t,e){i[e]=e===r}))):i[r]=!i[r],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:i})},e.type="visualMap.piecewise",e}(sB);function OB(t){t.registerComponentModel(AB),t.registerComponentView(PB),CB(t)}var RB={label:{enabled:!0},decal:{show:!1}},NB=kr(),zB={};function EB(t,e){var n=t.getModel("aria");if(n.get("enabled")){var i=w(RB);S(i.label,t.getLocaleModel().get("aria"),!1),S(n.option,i,!1),function(){if(n.getModel("decal").get("show")){var e=ht();t.eachSeries((function(t){if(t.useColorPaletteOnData){var n=e.get(t.type);n||(n={},e.set(t.type,n)),NB(t).scope=n}})),t.eachRawSeries((function(e){if(!t.isSeriesFiltered(e))if("function"!=typeof e.enableAriaDecal){var n=e.getData();if(e.useColorPaletteOnData){var i=e.getRawData(),r={},o=NB(e).scope;n.each((function(t){var e=n.getRawIndex(t);r[e]=t}));var a=i.count();i.each((function(t){var s=r[t],l=i.getName(t)||t+"",h=xp(e.ecModel,l,o,a),c=n.getItemVisual(s,"decal");n.setItemVisual(s,"decal",u(c,h))}))}else{var s=xp(e.ecModel,e.name,zB,t.getSeriesCount()),l=n.getVisual("decal");n.setVisual("decal",u(l,s))}}else e.enableAriaDecal();function u(t,e){var n=t?I(I({},e),t):e;return n.dirty=!0,n}}))}}(),function(){var i=t.getLocaleModel().get("aria"),o=n.getModel("label");if(o.option=T(o.option,i),!o.get("enabled"))return;var a=e.getZr().dom;if(o.get("description"))return void a.setAttribute("aria-label",o.get("description"));var s,l=t.getSeriesCount(),u=o.get(["data","maxCount"])||10,h=o.get(["series","maxCount"])||10,c=Math.min(l,h);if(l<1)return;var p=function(){var e=t.get("title");e&&e.length&&(e=e[0]);return e&&e.text}();if(p){var d=o.get(["general","withTitle"]);s=r(d,{title:p})}else s=o.get(["general","withoutTitle"]);var f=[],g=l>1?o.get(["series","multiple","prefix"]):o.get(["series","single","prefix"]);s+=r(g,{seriesCount:l}),t.eachSeries((function(e,n){if(n1?o.get(["series","multiple",a]):o.get(["series","single",a]),{seriesId:e.seriesIndex,seriesName:e.get("name"),seriesType:(_=e.subType,t.getLocaleModel().get(["series","typeNames"])[_]||"自定义图")});var s=e.getData();if(s.count()>u)i+=r(o.get(["data","partialData"]),{displayCnt:u});else i+=o.get(["data","allData"]);for(var h=[],p=0;p":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},FB=function(){function t(t){if(null==(this._condVal=H(t)?new RegExp(t):$(t)?t:null)){var e="";0,vr(e)}}return t.prototype.evaluate=function(t){var e=typeof t;return"string"===e?this._condVal.test(t):"number"===e&&this._condVal.test(t+"")},t}(),GB=function(){function t(){}return t.prototype.evaluate=function(){return this.value},t}(),HB=function(){function t(){}return t.prototype.evaluate=function(){for(var t=this.children,e=0;er;r++)!i&&r in e||(i||(i=Array.prototype.slice.call(e,0,r)),i[r]=e[r]);return t.concat(i||e)}function i(t,e){var n=e.browser,i=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),o=t.match(/Edge?\/([\d.]+)/),a=/micromessenger/i.test(t);i&&(n.firefox=!0,n.version=i[1]),r&&(n.ie=!0,n.version=r[1]),o&&(n.edge=!0,n.version=o[1],n.newEdge=+o[1].split(".")[0]>18),a&&(n.weChat=!0),e.canvasSupported=!!document.createElement("canvas").getContext,e.svgSupported="undefined"!=typeof SVGRect,e.touchEventsSupported="ontouchstart"in window&&!n.ie&&!n.edge,e.pointerEventsSupported="onpointerdown"in window&&(n.edge||n.ie&&+n.version>=11),e.domSupported="undefined"!=typeof document;var s=document.documentElement.style;e.transform3dSupported=(n.ie&&"transition"in s||n.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||n.ie&&+n.version>=9}function r(t,e){Zg[t]=e}function o(){return qg++}function a(){for(var t=[],e=0;ei;i++)e[i]=s(t[i])}}else if(Bg[n]){if(!X(t)){var o=t.constructor;if(o.from)e=o.from(t);else{e=new o(t.length);for(var i=0,r=t.length;r>i;i++)e[i]=s(t[i])}}}else if(!Eg[n]&&!X(t)&&!P(t)){e={};for(var a in t)t.hasOwnProperty(a)&&a!==Yg&&(e[a]=s(t[a]))}return e}function l(t,e,n){if(!k(e)||!k(t))return n?s(e):t;for(var i in e)if(e.hasOwnProperty(i)&&i!==Yg){var r=t[i],o=e[i];!k(o)||!k(r)||M(o)||M(r)||P(o)||P(r)||A(o)||A(r)||X(o)||X(r)?!n&&i in t||(t[i]=s(e[i])):l(r,o,n)}return t}function u(t,e){for(var n=t[0],i=1,r=t.length;r>i;i++)n=l(n,t[i],e);return n}function h(t,e){if(Object.assign)Object.assign(t,e);else for(var n in e)e.hasOwnProperty(n)&&n!==Yg&&(t[n]=e[n]);return t}function c(t,e,n){for(var i=w(e),r=0;rn;n++)if(t[n]===e)return n}return-1}function f(t,e){function n(){}var i=t.prototype;n.prototype=e.prototype,t.prototype=new n;for(var r in i)i.hasOwnProperty(r)&&(t.prototype[r]=i[r]);t.prototype.constructor=t,t.superClass=e}function d(t,e,n){if(t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,Object.getOwnPropertyNames)for(var i=Object.getOwnPropertyNames(e),r=0;ri;i++)e.call(n,t[i],i,t);else for(var o in t)t.hasOwnProperty(o)&&e.call(n,t[o],o,t)}function y(t,e,n){if(!t)return[];if(!e)return V(t);if(t.map&&t.map===Gg)return t.map(e,n);for(var i=[],r=0,o=t.length;o>r;r++)i.push(e.call(n,t[r],r,t));return i}function m(t,e,n,i){if(t&&e){for(var r=0,o=t.length;o>r;r++)n=e.call(i,n,t[r],r,t);return n}}function _(t,e,n){if(!t)return[];if(!e)return V(t);if(t.filter&&t.filter===Hg)return t.filter(e,n);for(var i=[],r=0,o=t.length;o>r;r++)e.call(n,t[r],r,t)&&i.push(t[r]);return i}function x(t,e,n){if(t&&e)for(var i=0,r=t.length;r>i;i++)if(e.call(n,t[i],i,t))return t[i]}function w(t){if(!t)return[];if(Object.keys)return Object.keys(t);var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e}function b(t,e){for(var n=[],i=2;in;n++)if(null!=t[n])return t[n]}function F(t,e){return null!=t?t:e}function N(t,e,n){return null!=t?t:null!=e?e:n}function V(t){for(var e=[],n=1;np;p++){var d=1<a;a++)for(var s=0;8>s;s++)null==o[s]&&(o[s]=0),o[s]+=((a+s)%2?-1:1)*me(n,7,0===a?1:0,1<o;o++){var a=document.createElement("div"),s=a.style,l=o%2,u=(o>>1)%2;s.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",i[l]+":0",r[u]+":0",i[1-l]+":auto",r[1-u]+":auto",""].join("!important;"),t.appendChild(a),n.push(a)}return n}function be(t,e,n){for(var i=n?"invTrans":"trans",r=e[i],o=e.srcCoords,a=[],s=[],l=!0,u=0;4>u;u++){var h=t[u].getBoundingClientRect(),c=2*u,p=h.left,f=h.top;a.push(p,f),l=l&&o&&p===o[c]&&f===o[c+1],s.push(t[u].offsetLeft,t[u].offsetTop)}return l&&r?r:(e.srcCoords=a,e[i]=n?_e(s,a):_e(a,s))}function Se(t){return"CANVAS"===t.nodeName.toUpperCase()}function Me(t,e,n,i){return n=n||{},i||!zg.canvasSupported?Te(t,e,n):zg.browser.firefox&&zg.browser.version<"39"&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):Te(t,e,n),n}function Te(t,e,n){if(zg.domSupported&&t.getBoundingClientRect){var i=e.clientX,r=e.clientY;if(Se(t)){var o=t.getBoundingClientRect();return n.zrX=i-o.left,void(n.zrY=r-o.top)}if(xe(pv,t,i,r))return n.zrX=pv[0],void(n.zrY=pv[1])}n.zrX=n.zrY=0}function Ce(t){return t||window.event}function Ie(t,e,n){if(e=Ce(e),null!=e.zrX)return e;var i=e.type,r=i&&i.indexOf("touch")>=0;if(r){var o="touchend"!==i?e.targetTouches[0]:e.changedTouches[0];o&&Me(t,o,e,n)}else{Me(t,e,e,n);var a=De(e);e.zrDelta=a?a/120:-(e.detail||0)/3}var s=e.button;return null==e.which&&void 0!==s&&cv.test(e.type)&&(e.which=1&s?1:2&s?3:4&s?2:0),e}function De(t){var e=t.wheelDelta;if(e)return e;var n=t.deltaX,i=t.deltaY;if(null==n||null==i)return e;var r=Math.abs(0!==i?i:n),o=i>0?-1:0>i?1:n>0?-1:1;return 3*r*o}function ke(t,e,n,i){hv?t.addEventListener(e,n,i):t.attachEvent("on"+e,n)}function Ae(t,e,n,i){hv?t.removeEventListener(e,n,i):t.detachEvent("on"+e,n)}function Oe(t){return 2===t.which||3===t.which}function Pe(t){var e=t[1][0]-t[0][0],n=t[1][1]-t[0][1];return Math.sqrt(e*e+n*n)}function Re(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function Le(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:ze}}function ze(){fv(this.event)}function Ee(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){for(var i=t,r=void 0,o=!1;i;){if(i.ignoreClip&&(o=!0),!o){var a=i.getClipPath();if(a&&!a.contain(e,n))return!1;i.silent&&(r=!0)}var s=i.__hostTarget;i=s?s:i.parent}return r?vv:!0}return!1}function Be(t,e,n){var i=t.painter;return 0>e||e>i.getWidth()||0>n||n>i.getHeight()}function Fe(t){for(var e=0;t>=bv;)e|=1&t,t>>=1;return t+e}function Ne(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){for(;n>r&&i(t[r],t[r-1])<0;)r++;Ve(t,e,r)}else for(;n>r&&i(t[r],t[r-1])>=0;)r++;return r-e}function Ve(t,e,n){for(n--;n>e;){var i=t[e];t[e++]=t[n],t[n--]=i}}function He(t,e,n,i,r){for(i===e&&i++;n>i;i++){for(var o,a=t[i],s=e,l=i;l>s;)o=s+l>>>1,r(a,t[o])<0?l=o:s=o+1;var u=i-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]=a}}function We(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])>0){for(s=i-r;s>l&&o(t,e[n+r+l])>0;)a=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;s>l&&o(t,e[n+r-l])<=0;)a=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}for(a++;l>a;){var h=a+(l-a>>>1);o(t,e[n+h])>0?a=h+1:l=h}return l}function Ge(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])<0){for(s=r+1;s>l&&o(t,e[n+r-l])<0;)a=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=i-r;s>l&&o(t,e[n+r+l])>=0;)a=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;l>a;){var h=a+(l-a>>>1);o(t,e[n+h])<0?l=h:a=h+1}return l}function Ue(t,e){function n(t,e){l[c]=t,u[c]=e,c+=1}function i(){for(;c>1;){var t=c-2;if(t>=1&&u[t-1]<=u[t]+u[t+1]||t>=2&&u[t-2]<=u[t]+u[t-1])u[t-1]u[t+1])break;o(t)}}function r(){for(;c>1;){var t=c-2;t>0&&u[t-1]=r?a(i,r,o,h):s(i,r,o,h)))}function a(n,i,r,o){var a=0;for(a=0;i>a;a++)p[a]=t[n+a];var s=0,l=r,u=n;if(t[u++]=t[l++],0!==--o){if(1===i){for(a=0;o>a;a++)t[u+a]=t[l+a];return void(t[u+o]=p[s])}for(var c,f,d,g=h;;){c=0,f=0,d=!1;do if(e(t[l],p[s])<0){if(t[u++]=t[l++],f++,c=0,0===--o){d=!0;break}}else if(t[u++]=p[s++],c++,f=0,1===--i){d=!0;break}while(g>(c|f));if(d)break;do{if(c=Ge(t[l],p,s,i,0,e),0!==c){for(a=0;c>a;a++)t[u+a]=p[s+a];if(u+=c,s+=c,i-=c,1>=i){d=!0;break}}if(t[u++]=t[l++],0===--o){d=!0;break}if(f=We(p[s],t,l,o,0,e),0!==f){for(a=0;f>a;a++)t[u+a]=t[l+a];if(u+=f,l+=f,o-=f,0===o){d=!0;break}}if(t[u++]=p[s++],1===--i){d=!0;break}g--}while(c>=Sv||f>=Sv);if(d)break;0>g&&(g=0),g+=2}if(h=g,1>h&&(h=1),1===i){for(a=0;o>a;a++)t[u+a]=t[l+a];t[u+o]=p[s]}else{if(0===i)throw new Error;for(a=0;i>a;a++)t[u+a]=p[s+a]}}else for(a=0;i>a;a++)t[u+a]=p[s+a]}function s(n,i,r,o){var a=0;for(a=0;o>a;a++)p[a]=t[r+a];var s=n+i-1,l=o-1,u=r+o-1,c=0,f=0;if(t[u--]=t[s--],0!==--i){if(1===o){for(u-=i,s-=i,f=u+1,c=s+1,a=i-1;a>=0;a--)t[f+a]=t[c+a];return void(t[u]=p[l])}for(var d=h;;){var g=0,v=0,y=!1;do if(e(p[l],t[s])<0){if(t[u--]=t[s--],g++,v=0,0===--i){y=!0;break}}else if(t[u--]=p[l--],v++,g=0,1===--o){y=!0;break}while(d>(g|v));if(y)break;do{if(g=i-Ge(p[l],t,n,i,i-1,e),0!==g){for(u-=g,s-=g,i-=g,f=u+1,c=s+1,a=g-1;a>=0;a--)t[f+a]=t[c+a];if(0===i){y=!0;break}}if(t[u--]=p[l--],1===--o){y=!0;break}if(v=o-We(t[s],p,0,o,o-1,e),0!==v){for(u-=v,l-=v,o-=v,f=u+1,c=l+1,a=0;v>a;a++)t[f+a]=p[c+a];if(1>=o){y=!0;break}}if(t[u--]=t[s--],0===--i){y=!0;break}d--}while(g>=Sv||v>=Sv);if(y)break;0>d&&(d=0),d+=2}if(h=d,1>h&&(h=1),1===o){for(u-=i,s-=i,f=u+1,c=s+1,a=i-1;a>=0;a--)t[f+a]=t[c+a];t[u]=p[l]}else{if(0===o)throw new Error;for(c=u-(o-1),a=0;o>a;a++)t[c+a]=p[a]}}else for(c=u-(o-1),a=0;o>a;a++)t[c+a]=p[a]}var l,u,h=Sv,c=0,p=[];return l=[],u=[],{mergeRuns:i,forceMergeRuns:r,pushRun:n}}function Xe(t,e,n,i){n||(n=0),i||(i=t.length);var r=i-n;if(!(2>r)){var o=0;if(bv>r)return o=Ne(t,n,i,e),void He(t,n,i,n+o,e);var a=Ue(t,e),s=Fe(r);do{if(o=Ne(t,n,i,e),s>o){var l=r;l>s&&(l=s),He(t,n,n+l,n+o,e),o=l}a.pushRun(n,o),a.mergeRuns(),r-=o,n+=o}while(0!==r);a.forceMergeRuns()}}function Ye(){Iv||(Iv=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function Ze(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function qe(t){return t=Math.round(t),0>t?0:t>255?255:t}function je(t){return t=Math.round(t),0>t?0:t>360?360:t}function Ke(t){return 0>t?0:t>1?1:t}function $e(t){var e=t;return qe(e.length&&"%"===e.charAt(e.length-1)?parseFloat(e)/100*255:parseInt(e,10))}function Je(t){var e=t;return Ke(e.length&&"%"===e.charAt(e.length-1)?parseFloat(e)/100:parseFloat(e))}function Qe(t,e,n){return 0>n?n+=1:n>1&&(n-=1),1>6*n?t+(e-t)*n*6:1>2*n?e:2>3*n?t+(e-t)*(2/3-n)*6:t}function tn(t,e,n){return t+(e-t)*n}function en(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}function nn(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function rn(t,e){Bv&&nn(Bv,e),Bv=Ev.put(t,Bv||e.slice())}function on(t,e){if(t){e=e||[];var n=Ev.get(t);if(n)return nn(e,n);t+="";var i=t.replace(/ /g,"").toLowerCase();if(i in zv)return nn(e,zv[i]),rn(t,e),e;var r=i.length;if("#"!==i.charAt(0)){var o=i.indexOf("("),a=i.indexOf(")");if(-1!==o&&a+1===r){var s=i.substr(0,o),l=i.substr(o+1,a-(o+1)).split(","),u=1;switch(s){case"rgba":if(4!==l.length)return 3===l.length?en(e,+l[0],+l[1],+l[2],1):en(e,0,0,0,1);u=Je(l.pop());case"rgb":return 3!==l.length?void en(e,0,0,0,1):(en(e,$e(l[0]),$e(l[1]),$e(l[2]),u),rn(t,e),e);case"hsla":return 4!==l.length?void en(e,0,0,0,1):(l[3]=Je(l[3]),an(l,e),rn(t,e),e);case"hsl":return 3!==l.length?void en(e,0,0,0,1):(an(l,e),rn(t,e),e);default:return}}en(e,0,0,0,1)}else{if(4===r||5===r){var h=parseInt(i.slice(1,4),16);return h>=0&&4095>=h?(en(e,(3840&h)>>4|(3840&h)>>8,240&h|(240&h)>>4,15&h|(15&h)<<4,5===r?parseInt(i.slice(4),16)/15:1),rn(t,e),e):void en(e,0,0,0,1)}if(7===r||9===r){var h=parseInt(i.slice(1,7),16);return h>=0&&16777215>=h?(en(e,(16711680&h)>>16,(65280&h)>>8,255&h,9===r?parseInt(i.slice(7),16)/255:1),rn(t,e),e):void en(e,0,0,0,1)}}}}function an(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=Je(t[1]),r=Je(t[2]),o=.5>=r?r*(i+1):r+i-r*i,a=2*r-o;return e=e||[],en(e,qe(255*Qe(a,o,n+1/3)),qe(255*Qe(a,o,n)),qe(255*Qe(a,o,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function sn(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(i,r,o),s=Math.max(i,r,o),l=s-a,u=(s+a)/2;if(0===l)e=0,n=0;else{n=.5>u?l/(s+a):l/(2-s-a);var h=((s-i)/6+l/2)/l,c=((s-r)/6+l/2)/l,p=((s-o)/6+l/2)/l;i===s?e=p-c:r===s?e=1/3+h-p:o===s&&(e=2/3+c-h),0>e&&(e+=1),e>1&&(e-=1)}var f=[360*e,n,u];return null!=t[3]&&f.push(t[3]),f}}function ln(t,e){var n=on(t);if(n){for(var i=0;3>i;i++)n[i]=0>e?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,n[i]>255?n[i]=255:n[i]<0&&(n[i]=0);return dn(n,4===n.length?"rgba":"rgb")}}function un(t){var e=on(t);return e?((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1):void 0}function hn(t,e,n){if(e&&e.length&&t>=0&&1>=t){n=n||[];var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=e[r],s=e[o],l=i-r;return n[0]=qe(tn(a[0],s[0],l)),n[1]=qe(tn(a[1],s[1],l)),n[2]=qe(tn(a[2],s[2],l)),n[3]=Ke(tn(a[3],s[3],l)),n}}function cn(t,e,n){if(e&&e.length&&t>=0&&1>=t){var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=on(e[r]),s=on(e[o]),l=i-r,u=dn([qe(tn(a[0],s[0],l)),qe(tn(a[1],s[1],l)),qe(tn(a[2],s[2],l)),Ke(tn(a[3],s[3],l))],"rgba");return n?{color:u,leftIndex:r,rightIndex:o,value:i}:u}}function pn(t,e,n,i){var r=on(t);return t?(r=sn(r),null!=e&&(r[0]=je(e)),null!=n&&(r[1]=Je(n)),null!=i&&(r[2]=Je(i)),dn(an(r),"rgba")):void 0}function fn(t,e){var n=on(t);return n&&null!=e?(n[3]=Ke(e),dn(n,"rgba")):void 0}function dn(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return("rgba"===e||"hsva"===e||"hsla"===e)&&(n+=","+t[3]),e+"("+n+")"}}function gn(t,e){var n=on(t);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[3]/255+(1-n[3])*e:0}function vn(){var t=Math.round(255*Math.random()),e=Math.round(255*Math.random()),n=Math.round(255*Math.random());return"rgb("+t+","+e+","+n+")"}function yn(t,e,n){return(e-t)*n+t}function mn(t,e,n){return n>.5?e:t}function _n(t,e,n,i){for(var r=e.length,o=0;r>o;o++)t[o]=yn(e[o],n[o],i)}function xn(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;r>a;a++){t[a]||(t[a]=[]);for(var s=0;o>s;s++)t[a][s]=yn(e[a][s],n[a][s],i)}}function wn(t,e,n,i){for(var r=e.length,o=0;r>o;o++)t[o]=e[o]+n[o]*i;return t}function bn(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;r>a;a++){t[a]||(t[a]=[]);for(var s=0;o>s;s++)t[a][s]=e[a][s]+n[a][s]*i}return t}function Sn(t,e,n){var i=t,r=e;if(i.push&&r.push){var o=i.length,a=r.length;if(o!==a){var s=o>a;if(s)i.length=a;else for(var l=o;a>l;l++)i.push(1===n?r[l]:Hv.call(r[l]))}for(var u=i[0]&&i[0].length,l=0;lh;h++)isNaN(i[l][h])&&(i[l][h]=r[l][h])}}function Mn(t,e){var n=t.length;if(n!==e.length)return!1;for(var i=0;n>i;i++)if(t[i]!==e[i])return!1;return!0}function Tn(t,e,n,i,r,o,a){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)*a+(-3*(e-n)-2*s-l)*o+s*r+e}function Cn(t,e,n,i,r,o,a,s){for(var l=e.length,u=0;l>u;u++)t[u]=Tn(e[u],n[u],i[u],r[u],o,a,s)}function In(t,e,n,i,r,o,a,s){for(var l=e.length,u=e[0].length,h=0;l>h;h++){t[h]||(t[1]=[]);for(var c=0;u>c;c++)t[h][c]=Tn(e[h][c],n[h][c],i[h][c],r[h][c],o,a,s)}}function Dn(t){if(g(t)){var e=t.length;if(g(t[0])){for(var n=[],i=0;e>i;i++)n.push(Hv.call(t[i]));return n}return Hv.call(t)}return t}function kn(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function An(t){return g(t&&t[0])?2:1}function On(t){var e=t.pointerType;return"pen"===e||"touch"===e}function Pn(t){t.touching=!0,null!=t.touchTimer&&(clearTimeout(t.touchTimer),t.touchTimer=null),t.touchTimer=setTimeout(function(){t.touching=!1,t.touchTimer=null},700)}function Rn(t){t&&(t.zrByTouch=!0)}function Ln(t,e){return Ie(t.dom,new $v(t,e),!0)}function zn(t,e){for(var n=e,i=!1;n&&9!==n.nodeType&&!(i=n.domBelongToZr||n!==e&&n===t.painterRoot);)n=n.parentNode;return i}function En(t,e){var n=e.domHandlers;zg.pointerEventsSupported?v(qv.pointer,function(i){Fn(e,i,function(e){n[i].call(t,e)})}):(zg.touchEventsSupported&&v(qv.touch,function(i){Fn(e,i,function(r){n[i].call(t,r),Pn(e)})}),v(qv.mouse,function(i){Fn(e,i,function(r){r=Ce(r),e.touching||n[i].call(t,r)})}))}function Bn(t,e){function n(n){function i(i){i=Ce(i),zn(t,i.target)||(i=Ln(t,i),e.domHandlers[n].call(t,i))}Fn(e,n,i,{capture:!0})}zg.pointerEventsSupported?v(jv.pointer,n):zg.touchEventsSupported||v(jv.mouse,n)}function Fn(t,e,n,i){t.mounted[e]=n,t.listenerOpts[e]=i,ke(t.domTarget,e,n,i)}function Nn(t){var e=t.mounted;for(var n in e)e.hasOwnProperty(n)&&Ae(t.domTarget,n,e[n],t.listenerOpts[n]);t.mounted={}}function Vn(){return[1,0,0,1,0,0]}function Hn(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function Wn(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 Gn(t,e,n){var i=e[0]*n[0]+e[2]*n[1],r=e[1]*n[0]+e[3]*n[1],o=e[0]*n[2]+e[2]*n[3],a=e[1]*n[2]+e[3]*n[3],s=e[0]*n[4]+e[2]*n[5]+e[4],l=e[1]*n[4]+e[3]*n[5]+e[5];return t[0]=i,t[1]=r,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t}function Un(t,e,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+n[0],t[5]=e[5]+n[1],t}function Xn(t,e,n){var i=e[0],r=e[2],o=e[4],a=e[1],s=e[3],l=e[5],u=Math.sin(n),h=Math.cos(n);return t[0]=i*h+a*u,t[1]=-i*u+a*h,t[2]=r*h+s*u,t[3]=-r*u+h*s,t[4]=h*o+u*l,t[5]=h*l-u*o,t}function Yn(t,e,n){var i=n[0],r=n[1];return t[0]=e[0]*i,t[1]=e[1]*r,t[2]=e[2]*i,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*r,t}function Zn(t,e){var n=e[0],i=e[2],r=e[4],o=e[1],a=e[3],s=e[5],l=n*a-o*i;return l?(l=1/l,t[0]=a*l,t[1]=-o*l,t[2]=-i*l,t[3]=n*l,t[4]=(i*s-a*r)*l,t[5]=(o*r-n*s)*l,t):null}function qn(t){var e=Vn();return Wn(e,t),e}function jn(t){return t>py||-py>t}function Kn(t,e){return iy||(iy=jg().getContext("2d")),ry!==e&&(ry=iy.font=e||Ay),iy.measureText(t)}function $n(t,e){e=e||Ay;var n=ky[e];n||(n=ky[e]=new Lv(500));var i=n.get(t);return null==i&&(i=Oy.measureText(t,e).width,n.put(t,i)),i}function Jn(t,e,n,i){var r=$n(t,e),o=ni(e),a=ti(0,r,n),s=ei(0,o,i),l=new Dy(a,s,r,o);return l}function Qn(t,e,n,i){var r=((t||"")+"").split("\n"),o=r.length;if(1===o)return Jn(r[0],e,n,i);for(var a=new Dy(0,0,0,0),s=0;s=0?parseFloat(t)/100*e:parseFloat(t):t}function ri(t,e,n){var i=e.position||"inside",r=null!=e.distance?e.distance:5,o=n.height,a=n.width,s=o/2,l=n.x,u=n.y,h="left",c="top";if(i instanceof Array)l+=ii(i[0],n.width),u+=ii(i[1],n.height),h=null,c=null;else switch(i){case"left":l-=r,u+=s,h="right",c="middle";break;case"right":l+=r+a,u+=s,c="middle";break;case"top":l+=a/2,u-=r,h="center",c="bottom";break;case"bottom":l+=a/2,u+=o+r,h="center";break;case"inside":l+=a/2,u+=s,h="center",c="middle";break;case"insideLeft":l+=r,u+=s,c="middle";break;case"insideRight":l+=a-r,u+=s,h="right",c="middle";break;case"insideTop":l+=a/2,u+=r,h="center";break;case"insideBottom":l+=a/2,u+=o-r,h="center",c="bottom";break;case"insideTopLeft":l+=r,u+=r;break;case"insideTopRight":l+=a-r,u+=r,h="right";break;case"insideBottomLeft":l+=r,u+=o-r,c="bottom";break;case"insideBottomRight":l+=a-r,u+=o-r,h="right",c="bottom"}return t=t||{},t.x=l,t.y=u,t.align=h,t.verticalAlign=c,t}function oi(t,e,n,i,r){n=n||{};var o=[];ui(t,"",t,e,n,i,o,r);var a=o.length,s=!1,l=n.done,u=n.aborted,h=function(){s=!0,a--,0>=a&&(s?l&&l():u&&u())},c=function(){a--,0>=a&&(s?l&&l():u&&u())};a||l&&l(),o.length>0&&n.during&&o[0].during(function(t,e){n.during(e)});for(var p=0;pi;i++)t[i]=e[i]}function si(t){return g(t[0])}function li(t,e,n){if(g(e[n]))if(g(t[n])||(t[n]=[]),O(e[n])){var i=e[n].length;t[n].length!==i&&(t[n]=new e[n].constructor(i),ai(t[n],e[n],i))}else{var r=e[n],o=t[n],a=r.length;if(si(r))for(var s=r[0].length,l=0;a>l;l++)o[l]?ai(o[l],r[l],s):o[l]=Array.prototype.slice.call(r[l]);else ai(o,r,a);o.length=r.length}else t[n]=e[n]}function ui(t,e,n,i,r,o,a,s){for(var l=[],u=[],h=w(i),c=r.duration,f=r.delay,d=r.additive,v=r.setToFinal,y=!k(o),m=0;m0||r.force&&!a.length){for(var b=t.animators,S=[],M=0;MM;M++){var _=l[M];D[_]=n[_],v?I[_]=i[_]:n[_]=i[_]}}else if(v){A={};for(var M=0;x>M;M++){var _=l[M];A[_]=Dn(n[_]),li(n,i,_)}}var O=new Uv(n,!1,d?S:null);O.targetName=e,r.scope&&(O.scope=r.scope),v&&I&&O.whenWithKeys(0,I,l),A&&O.whenWithKeys(0,A,l),O.whenWithKeys(null==c?500:c,s?D:i,l).delay(f||0),t.addAnimator(O,e),a.push(O)}}function hi(t){delete Hy[t]}function ci(t){if(!t)return!1;if("string"==typeof t)return gn(t,1)r;r++)n+=gn(e[r].color,1);return n/=i,ay>n}return!1}function pi(t,e){var n=new Wy(o(),t,e);return Hy[n.id]=n,n}function fi(t){t.dispose()}function di(){for(var t in Hy)Hy.hasOwnProperty(t)&&Hy[t].dispose();Hy={}}function gi(t){return Hy[t]}function vi(t,e){Vy[t]=e}function yi(t){return t.replace(/^\s+|\s+$/g,"")}function mi(t,e,n,i){var r=e[0],o=e[1],a=n[0],s=n[1],l=o-r,u=s-a;if(0===l)return 0===u?a:(a+s)/2;if(i)if(l>0){if(r>=t)return a;if(t>=o)return s}else{if(t>=r)return a;if(o>=t)return s}else{if(t===r)return a;if(t===o)return s}return(t-r)/l*u+a}function _i(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?yi(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?0/0:+t}function xi(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),Yy),t=(+t).toFixed(e),n?t:+t}function wi(t){return t.sort(function(t,e){return t-e}),t}function bi(t){if(t=+t,isNaN(t))return 0;if(t>1e-14)for(var e=1,n=0;15>n;n++,e*=10)if(Math.round(t*e)/e===t)return n;return Si(t)}function Si(t){var e=t.toString().toLowerCase(),n=e.indexOf("e"),i=n>0?+e.slice(n+1):0,r=n>0?n:e.length,o=e.indexOf("."),a=0>o?0:r-1-o;return Math.max(0,a-i)}function Mi(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),o=Math.round(n(Math.abs(e[1]-e[0]))/i),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20}function Ti(t,e,n){if(!t[e])return 0;var i=m(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===i)return 0;for(var r=Math.pow(10,n),o=y(t,function(t){return(isNaN(t)?0:t)/i*r*100}),a=100*r,s=y(o,function(t){return Math.floor(t)}),l=m(s,function(t,e){return t+e},0),u=y(o,function(t,e){return t-s[e]});a>l;){for(var h=Number.NEGATIVE_INFINITY,c=null,p=0,f=u.length;f>p;++p)u[p]>h&&(h=u[p],c=p);++s[c],u[c]=0,++l}return s[e]/r}function Ci(t,e){var n=Math.max(bi(t),bi(e)),i=t+e;return n>Yy?i:xi(i,n)}function Ii(t){var e=2*Math.PI;return(t%e+e)%e}function Di(t){return t>-Xy&&Xy>t}function ki(t){if(t instanceof Date)return t;if("string"==typeof t){var e=qy.exec(t);if(!e)return new Date(0/0);if(e[8]){var n=+e[4]||0;return"Z"!==e[8].toUpperCase()&&(n-=+e[8].slice(0,3)),new Date(Date.UTC(+e[1],+(e[2]||1)-1,+e[3]||1,n,+(e[5]||0),+e[6]||0,e[7]?+e[7].substring(0,3):0))}return new Date(+e[1],+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0),+e[6]||0,e[7]?+e[7].substring(0,3):0)}return new Date(null==t?0/0:Math.round(t))}function Ai(t){return Math.pow(10,Oi(t))}function Oi(t){if(0===t)return 0;var e=Math.floor(Math.log(t)/Math.LN10);return t/Math.pow(10,e)>=10&&e++,e}function Pi(t,e){var n,i=Oi(t),r=Math.pow(10,i),o=t/r;return n=e?1.5>o?1:2.5>o?2:4>o?3:7>o?5:10:1>o?1:2>o?2:3>o?3:5>o?5:10,t=n*r,i>=-20?+t.toFixed(0>i?-i:0):t}function Ri(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r}function Li(t){function e(t,n,i){return t.interval[i]s;s++)o[s]<=n&&(o[s]=n,a[s]=s?1:1-i),n=o[s],i=a[s];o[0]===o[1]&&a[0]*a[1]!==1?t.splice(r,1):r++}return t}function zi(t){var e=parseFloat(t);return e==t&&(0!==e||"string"!=typeof t||t.indexOf("x")<=0)?e:0/0}function Ei(t){return!isNaN(zi(t))}function Bi(){return Math.round(9*Math.random())}function Fi(t,e){return 0===e?t:Fi(e,t%e)}function Ni(t,e){return null==t?e:null==e?t:t*e/Fi(t,e)}function Vi(t){throw new Error(t)}function Hi(t){return t instanceof Array?t:null==t?[]:[t]}function Wi(t,e,n){if(t){t[e]=t[e]||{},t.emphasis=t.emphasis||{},t.emphasis[e]=t.emphasis[e]||{};for(var i=0,r=n.length;r>i;i++){var o=n[i];!t.emphasis[e].hasOwnProperty(o)&&t[e].hasOwnProperty(o)&&(t.emphasis[e][o]=t[e][o])}}}function Gi(t){return!k(t)||M(t)||t instanceof Date?t:t.value}function Ui(t){return k(t)&&!(t instanceof Array)}function Xi(t,e,n){var i="normalMerge"===n,r="replaceMerge"===n,o="replaceAll"===n;t=t||[],e=(e||[]).slice();var a=Y();v(e,function(t,n){return k(t)?void 0:void(e[n]=null)});var s=Yi(t,a,n);return(i||r)&&Zi(s,t,a,e),i&&qi(s,e),i||r?ji(s,e,r):o&&Ki(s,e),$i(s),s}function Yi(t,e,n){var i=[];if("replaceAll"===n)return i;for(var r=0;rr?n:i;for(var s=[],l=n,u=i,h=Math.max(l?l.length:0,u.length),c=0;h>c;++c){var p=t.getDimensionInfo(c);if(p&&"ordinal"===p.type)s[c]=(1>r&&l?l:u)[c];else{var f=l&&l[c]?l[c]:0,d=u[c],a=yn(f,d,r);s[c]=xi(a,o?Math.max(bi(f),bi(d)):e)}}return s}function fr(t){var e={main:"",sub:""};if(t){var n=t.split(em);e.main=n[0]||"",e.sub=n[1]||""}return e}function dr(t){W(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function gr(t){return!(!t||!t[im])}function vr(t){t.$constructor=t,t.extend=function(t){function e(){for(var r=[],o=0;o=0||r&&p(r,s)<0)){var l=n.getShallow(s,e);null!=l&&(o[t[a][0]]=l)}}return o}}function Mr(t){if("string"==typeof t){var e=lm.get(t);return e&&e.image}return t}function Tr(t,e,n,i,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!n)return e;var o=lm.get(t),a={hostEl:n,cb:i,cbPayload:r};return o?(e=o.image,!Ir(e)&&o.pending.push(a)):(e=new Image,e.onload=e.onerror=Cr,lm.put(t,e.__cachedImgObj={image:e,pending:[a]}),e.src=e.__zrImageSrc=t),e}return t}return e}function Cr(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;ea;a++)o[a]=Ar(o[a],r);return o.join("\n")}function kr(t,e,n,i){i=i||{};var r=h({},i);r.font=e,n=F(n,"..."),r.maxIterations=F(i.maxIterations,2);var o=r.minChar=F(i.minChar,0);r.cnCharWidth=$n("国",e);var a=r.ascCharWidth=$n("a",e);r.placeholder=F(i.placeholder,"");for(var s=t=Math.max(0,t-1),l=0;o>l&&s>=a;l++)s-=a;var u=$n(n,e);return u>s&&(n="",u=0),s=t-u,r.ellipsis=n,r.ellipsisWidth=u,r.contentWidth=s,r.containerWidth=t,r}function Ar(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)return"";var o=$n(t,i);if(n>=o)return t;for(var a=0;;a++){if(r>=o||a>=e.maxIterations){t+=e.ellipsis;break}var s=0===a?Or(t,r,e.ascCharWidth,e.cnCharWidth):o>0?Math.floor(t.length*r/o):0;t=t.substr(0,s),o=$n(t,i)}return""===t&&(t=e.placeholder),t}function Or(t,e,n,i){for(var r=0,o=0,a=t.length;a>o&&e>r;o++){var s=t.charCodeAt(o);r+=s>=0&&127>=s?n:i}return o}function Pr(t,e){null!=t&&(t+="");var n,i=e.overflow,r=e.padding,o=e.font,a="truncate"===i,s=ni(o),l=F(e.lineHeight,s),u="truncate"===e.lineOverflow,h=e.width;n=null!=h&&"break"===i||"breakAll"===i?t?Br(t,e.font,h,"breakAll"===i,0).lines:[]:t?t.split("\n"):[];var c=n.length*l,p=F(e.height,c);if(c>p&&u){var f=Math.floor(p/l);n=n.slice(0,f)}var d=p,g=h;if(r&&(d+=r[0]+r[2],null!=g&&(g+=r[1]+r[3])),t&&a&&null!=g)for(var v=kr(h,o,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),y=0;yu&&Lr(i,t.substring(u,h),e,l),Lr(i,r[2],e,l,r[1]),u=um.lastIndex}ua){w>0?(m.tokens=m.tokens.slice(0,w),n(m,x,_),i.lines=i.lines.slice(0,y+1)):i.lines=i.lines.slice(0,y);break t}var D=S.width,k=null==D||"auto"===D;if("string"==typeof D&&"%"===D.charAt(D.length-1))b.percentWidth=D,c.push(b),b.contentWidth=$n(b.text,C);else{if(k){var A=S.backgroundColor,O=A&&A.image;O&&(O=Mr(O),Ir(O)&&(b.width=Math.max(b.width,O.width*I/O.height)))}var P=g&&null!=o?o-x:null;null!=P&&PP?(b.text="",b.width=b.contentWidth=0):(b.text=Dr(b.text,P-T,C,e.ellipsis,{minChar:e.truncateMinChar}),b.width=b.contentWidth=$n(b.text,C)):b.contentWidth=$n(b.text,C)}b.width+=T,x+=b.width,S&&(_=Math.max(_,b.lineHeight))}n(m,x,_)}i.outerWidth=i.width=F(o,f),i.outerHeight=i.height=F(a,p),i.contentHeight=p,i.contentWidth=f,d&&(i.outerWidth+=d[1]+d[3],i.outerHeight+=d[0]+d[2]);for(var y=0;y0&&d+i.accumWidth>i.width&&(o=e.split("\n"),c=!0),i.accumWidth=d}else{var g=Br(e,h,i.width,i.breakAll,i.accumWidth);i.accumWidth=g.accumWidth+f,a=g.linesWidths,o=g.lines}}else o=e.split("\n");for(var v=0;v=33&&255>=e}function Er(t){return zr(t)?fm[t]?!0:!1:!0}function Br(t,e,n,i,r){for(var o=[],a=[],s="",l="",u=0,h=0,c=0;cn:r+h+f>n)?h?(s||l)&&(d?(s||(s=l,l="",u=0,h=u),o.push(s),a.push(h-u),l+=p,u+=f,s="",h=u):(l&&(s+=l,h+=u,l="",u=0),o.push(s),a.push(h),s=p,h=f)):d?(o.push(l),a.push(u),l=p,u=f):(o.push(p),a.push(f)):(h+=f,d?(l+=p,u+=f):(l&&(s+=l,l="",u=0),s+=p))}else l&&(s+=l,h+=u),o.push(s),a.push(h),s="",l="",u=0,h=0}return o.length||s||(s=t,l="",u=0),l&&(s+=l),s&&(o.push(s),a.push(h)),1===o.length&&(h+=r),{accumWidth:h,lines:o,linesWidths:a}}function Fr(t,e,n){return xm.copy(t.getBoundingRect()),t.transform&&xm.applyTransform(t.transform),wm.width=e,wm.height=n,!xm.intersect(wm)}function Nr(t){return t>-Mm&&Mm>t}function Vr(t){return t>Mm||-Mm>t}function Hr(t,e,n,i,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*i+3*o*n)}function Wr(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r*r)}function Gr(t,e,n,i,r,o){var a=i+3*(e-n)-t,s=3*(n-2*e+t),l=3*(e-t),u=t-r,h=s*s-3*a*l,c=s*l-9*a*u,p=l*l-3*s*u,f=0;if(Nr(h)&&Nr(c))if(Nr(s))o[0]=0;else{var d=-l/s;d>=0&&1>=d&&(o[f++]=d)}else{var g=c*c-4*h*p;if(Nr(g)){var v=c/h,d=-s/a+v,y=-v/2;d>=0&&1>=d&&(o[f++]=d),y>=0&&1>=y&&(o[f++]=y)}else if(g>0){var m=Sm(g),_=h*s+1.5*a*(-c+m),x=h*s+1.5*a*(-c-m);_=0>_?-bm(-_,Im):bm(_,Im),x=0>x?-bm(-x,Im):bm(x,Im);var d=(-s-(_+x))/(3*a);d>=0&&1>=d&&(o[f++]=d)}else{var w=(2*h*s-3*a*c)/(2*Sm(h*h*h)),b=Math.acos(w)/3,S=Sm(h),M=Math.cos(b),d=(-s-2*S*M)/(3*a),y=(-s+S*(M+Cm*Math.sin(b)))/(3*a),T=(-s+S*(M-Cm*Math.sin(b)))/(3*a);d>=0&&1>=d&&(o[f++]=d),y>=0&&1>=y&&(o[f++]=y),T>=0&&1>=T&&(o[f++]=T)}}return f}function Ur(t,e,n,i,r){var o=6*n-12*e+6*t,a=9*e+3*i-3*t-9*n,s=3*e-3*t,l=0;if(Nr(a)){if(Vr(o)){var u=-s/o;u>=0&&1>=u&&(r[l++]=u)}}else{var h=o*o-4*a*s;if(Nr(h))r[0]=-o/(2*a);else if(h>0){var c=Sm(h),u=(-o+c)/(2*a),p=(-o-c)/(2*a);u>=0&&1>=u&&(r[l++]=u),p>=0&&1>=p&&(r[l++]=p)}}return l}function Xr(t,e,n,i,r,o){var a=(e-t)*r+t,s=(n-e)*r+e,l=(i-n)*r+n,u=(s-a)*r+a,h=(l-s)*r+s,c=(h-u)*r+u;o[0]=t,o[1]=a,o[2]=u,o[3]=c,o[4]=c,o[5]=h,o[6]=l,o[7]=i}function Yr(t,e,n,i,r,o,a,s,l,u,h){var c,p,f,d,g,v=.005,y=1/0;Dm[0]=l,Dm[1]=u;for(var m=0;1>m;m+=.05)km[0]=Hr(t,n,r,a,m),km[1]=Hr(e,i,o,s,m),d=iv(Dm,km),y>d&&(c=m,y=d);y=1/0;for(var _=0;32>_&&!(Tm>v);_++)p=c-v,f=c+v,km[0]=Hr(t,n,r,a,p),km[1]=Hr(e,i,o,s,p),d=iv(km,Dm),p>=0&&y>d?(c=p,y=d):(Am[0]=Hr(t,n,r,a,f),Am[1]=Hr(e,i,o,s,f),g=iv(Am,Dm),1>=f&&y>g?(c=f,y=g):v*=.5);return h&&(h[0]=Hr(t,n,r,a,c),h[1]=Hr(e,i,o,s,c)),Sm(y)}function Zr(t,e,n,i,r,o,a,s,l){for(var u=t,h=e,c=0,p=1/l,f=1;l>=f;f++){var d=f*p,g=Hr(t,n,r,a,d),v=Hr(e,i,o,s,d),y=g-u,m=v-h;c+=Math.sqrt(y*y+m*m),u=g,h=v}return c}function qr(t,e,n,i){var r=1-i;return r*(r*t+2*i*e)+i*i*n}function jr(t,e,n,i){return 2*((1-i)*(e-t)+i*(n-e))}function Kr(t,e,n,i,r){var o=t-2*e+n,a=2*(e-t),s=t-i,l=0;if(Nr(o)){if(Vr(a)){var u=-s/a;u>=0&&1>=u&&(r[l++]=u)}}else{var h=a*a-4*o*s;if(Nr(h)){var u=-a/(2*o);u>=0&&1>=u&&(r[l++]=u)}else if(h>0){var c=Sm(h),u=(-a+c)/(2*o),p=(-a-c)/(2*o);u>=0&&1>=u&&(r[l++]=u),p>=0&&1>=p&&(r[l++]=p)}}return l}function $r(t,e,n){var i=t+n-2*e;return 0===i?.5:(t-e)/i}function Jr(t,e,n,i,r){var o=(e-t)*i+t,a=(n-e)*i+e,s=(a-o)*i+o;r[0]=t,r[1]=o,r[2]=s,r[3]=s,r[4]=a,r[5]=n}function Qr(t,e,n,i,r,o,a,s,l){var u,h=.005,c=1/0;Dm[0]=a,Dm[1]=s;for(var p=0;1>p;p+=.05){km[0]=qr(t,n,r,p),km[1]=qr(e,i,o,p);var f=iv(Dm,km);c>f&&(u=p,c=f)}c=1/0;for(var d=0;32>d&&!(Tm>h);d++){var g=u-h,v=u+h;km[0]=qr(t,n,r,g),km[1]=qr(e,i,o,g);var f=iv(km,Dm);if(g>=0&&c>f)u=g,c=f;else{Am[0]=qr(t,n,r,v),Am[1]=qr(e,i,o,v);var y=iv(Am,Dm);1>=v&&c>y?(u=v,c=y):h*=.5}}return l&&(l[0]=qr(t,n,r,u),l[1]=qr(e,i,o,u)),Sm(c)}function to(t,e,n,i,r,o,a){for(var s=t,l=e,u=0,h=1/a,c=1;a>=c;c++){var p=c*h,f=qr(t,n,r,p),d=qr(e,i,o,p),g=f-s,v=d-l;u+=Math.sqrt(g*g+v*v),s=f,l=d}return u}function eo(t,e,n){if(0!==t.length){for(var i=t[0],r=i[0],o=i[0],a=i[1],s=i[1],l=1;lf;f++){var d=c(t,n,r,a,Nm[f]);l[0]=Om(d,l[0]),u[0]=Pm(d,u[0])}p=h(e,i,o,s,Vm);for(var f=0;p>f;f++){var g=c(e,i,o,s,Vm[f]);l[1]=Om(g,l[1]),u[1]=Pm(g,u[1])}l[0]=Om(t,l[0]),u[0]=Pm(t,u[0]),l[0]=Om(a,l[0]),u[0]=Pm(a,u[0]),l[1]=Om(e,l[1]),u[1]=Pm(e,u[1]),l[1]=Om(s,l[1]),u[1]=Pm(s,u[1])}function ro(t,e,n,i,r,o,a,s){var l=$r,u=qr,h=Pm(Om(l(t,n,r),1),0),c=Pm(Om(l(e,i,o),1),0),p=u(t,n,r,h),f=u(e,i,o,c);a[0]=Om(t,r,p),a[1]=Om(e,o,f),s[0]=Pm(t,r,p),s[1]=Pm(e,o,f)}function oo(t,e,n,i,r,o,a,s,l){var u=ve,h=ye,c=Math.abs(r-o);if(1e-4>c%zm&&c>1e-4)return s[0]=t-n,s[1]=e-i,l[0]=t+n,void(l[1]=e+i);if(Em[0]=Lm(r)*n+t,Em[1]=Rm(r)*i+e,Bm[0]=Lm(o)*n+t,Bm[1]=Rm(o)*i+e,u(s,Em,Bm),h(l,Em,Bm),r%=zm,0>r&&(r+=zm),o%=zm,0>o&&(o+=zm),r>o&&!a?o+=zm:o>r&&a&&(r+=zm),a){var p=o;o=r,r=p}for(var f=0;o>f;f+=Math.PI/2)f>r&&(Fm[0]=Lm(f)*n+t,Fm[1]=Rm(f)*i+e,u(s,Fm,s),h(l,Fm,l))}function ao(t){var e=Math.round(t/t_*1e8)/1e8;return e%2*t_}function so(t,e){var n=ao(t[0]);0>n&&(n+=e_);var i=n-t[0],r=t[1];r+=i,!e&&r-n>=e_?r=n+e_:e&&n-r>=e_?r=n-e_:!e&&n>r?r=n+(e_-ao(n-r)):e&&r>n&&(r=n-(e_-ao(r-n))),t[0]=n,t[1]=r}function lo(t,e,n,i,r,o,a){if(0===r)return!1;var s=r,l=0,u=t;if(a>e+s&&a>i+s||e-s>a&&i-s>a||o>t+s&&o>n+s||t-s>o&&n-s>o)return!1;if(t===n)return Math.abs(o-t)<=s/2;l=(e-i)/(t-n),u=(t*i-n*e)/(t-n);var h=l*o-a+u,c=h*h/(l*l+1);return s/2*s/2>=c}function uo(t,e,n,i,r,o,a,s,l,u,h){if(0===l)return!1;var c=l;if(h>e+c&&h>i+c&&h>o+c&&h>s+c||e-c>h&&i-c>h&&o-c>h&&s-c>h||u>t+c&&u>n+c&&u>r+c&&u>a+c||t-c>u&&n-c>u&&r-c>u&&a-c>u)return!1;var p=Yr(t,e,n,i,r,o,a,s,u,h,null);return c/2>=p}function ho(t,e,n,i,r,o,a,s,l){if(0===a)return!1;var u=a;if(l>e+u&&l>i+u&&l>o+u||e-u>l&&i-u>l&&o-u>l||s>t+u&&s>n+u&&s>r+u||t-u>s&&n-u>s&&r-u>s)return!1;var h=Qr(t,e,n,i,r,o,s,l,null);return u/2>=h}function co(t){return t%=o_,0>t&&(t+=o_),t}function po(t,e,n,i,r,o,a,s,l){if(0===a)return!1;var u=a;s-=t,l-=e;var h=Math.sqrt(s*s+l*l);if(h-u>n||n>h+u)return!1;if(Math.abs(i-r)%a_<1e-4)return!0;if(o){var c=i;i=co(r),r=co(c)}else i=co(i),r=co(r);i>r&&(r+=a_);var p=Math.atan2(l,s);return 0>p&&(p+=a_),p>=i&&r>=p||p+a_>=i&&r>=p+a_}function fo(t,e,n,i,r,o){if(o>e&&o>i||e>o&&i>o)return 0;if(i===e)return 0;var a=(o-e)/(i-e),s=e>i?1:-1;(1===a||0===a)&&(s=e>i?.5:-.5);var l=a*(n-t)+t;return l===r?1/0:l>r?s:0}function go(t,e){return Math.abs(t-e)e&&u>i&&u>o&&u>s||e>u&&i>u&&o>u&&s>u)return 0;var h=Gr(e,i,o,s,u,h_);if(0===h)return 0;for(var c=0,p=-1,f=void 0,d=void 0,g=0;h>g;g++){var v=h_[g],y=0===v||1===v?.5:1,m=Hr(t,n,r,a,v);l>m||(0>p&&(p=Ur(e,i,o,s,c_),c_[1]1&&vo(),f=Hr(e,i,o,s,c_[0]),p>1&&(d=Hr(e,i,o,s,c_[1]))),c+=2===p?vf?y:-y:vd?y:-y:d>s?y:-y:vf?y:-y:f>s?y:-y)}return c}function mo(t,e,n,i,r,o,a,s){if(s>e&&s>i&&s>o||e>s&&i>s&&o>s)return 0;var l=Kr(e,i,o,s,h_);if(0===l)return 0;var u=$r(e,i,o);if(u>=0&&1>=u){for(var h=0,c=qr(e,i,o,u),p=0;l>p;p++){var f=0===h_[p]||1===h_[p]?.5:1,d=qr(t,n,r,h_[p]);a>d||(h+=h_[p]c?f:-f:c>o?f:-f)}return h}var f=0===h_[0]||1===h_[0]?.5:1,d=qr(t,n,r,h_[0]);return a>d?0:e>o?f:-f}function _o(t,e,n,i,r,o,a,s){if(s-=e,s>n||-n>s)return 0;var l=Math.sqrt(n*n-s*s);h_[0]=-l,h_[1]=l;var u=Math.abs(i-r);if(1e-4>u)return 0;if(u>=l_-1e-4){i=0,r=l_;var h=o?1:-1;return a>=h_[0]+t&&a<=h_[1]+t?h:0}if(i>r){var c=i;i=r,r=c}0>i&&(i+=l_,r+=l_);for(var p=0,f=0;2>f;f++){var d=h_[f];if(d+t>a){var g=Math.atan2(s,d),h=o?1:-1;0>g&&(g=l_+g),(g>=i&&r>=g||g+l_>=i&&r>=g+l_)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),p+=h)}}return p}function xo(t,e,n,i,r){for(var o,a,s=t.data,l=t.len(),u=0,h=0,c=0,p=0,f=0,d=0;l>d;){var g=s[d++],v=1===d;switch(g===s_.M&&d>1&&(n||(u+=fo(h,c,p,f,i,r))),v&&(h=s[d],c=s[d+1],p=h,f=c),g){case s_.M:p=s[d++],f=s[d++],h=p,c=f;break;case s_.L:if(n){if(lo(h,c,s[d],s[d+1],e,i,r))return!0}else u+=fo(h,c,s[d],s[d+1],i,r)||0;h=s[d++],c=s[d++];break;case s_.C:if(n){if(uo(h,c,s[d++],s[d++],s[d++],s[d++],s[d],s[d+1],e,i,r))return!0}else u+=yo(h,c,s[d++],s[d++],s[d++],s[d++],s[d],s[d+1],i,r)||0;h=s[d++],c=s[d++];break;case s_.Q:if(n){if(ho(h,c,s[d++],s[d++],s[d],s[d+1],e,i,r))return!0}else u+=mo(h,c,s[d++],s[d++],s[d],s[d+1],i,r)||0;h=s[d++],c=s[d++];break;case s_.A:var y=s[d++],m=s[d++],_=s[d++],x=s[d++],w=s[d++],b=s[d++];d+=1;var S=!!(1-s[d++]);o=Math.cos(w)*_+y,a=Math.sin(w)*x+m,v?(p=o,f=a):u+=fo(h,c,o,a,i,r);var M=(i-y)*x/_+y;if(n){if(po(y,m,x,w,w+b,S,e,M,r))return!0}else u+=_o(y,m,x,w,w+b,S,M,r);h=Math.cos(w+b)*_+y,c=Math.sin(w+b)*x+m;break;case s_.R:p=h=s[d++],f=c=s[d++];var T=s[d++],C=s[d++];if(o=p+T,a=f+C,n){if(lo(p,f,o,f,e,i,r)||lo(o,f,o,a,e,i,r)||lo(o,a,p,a,e,i,r)||lo(p,a,p,f,e,i,r))return!0}else u+=fo(o,f,o,a,i,r),u+=fo(p,a,p,f,i,r);break;case s_.Z:if(n){if(lo(h,c,p,f,e,i,r))return!0}else u+=fo(h,c,p,f,i,r);h=p,c=f}}return n||go(c,f)||(u+=fo(h,c,p,f,i,r)||0),0!==u}function wo(t,e,n){return xo(t,0,!1,e,n)}function bo(t,e,n,i){return xo(t,e,!0,n,i)}function So(t){return!!(t&&"string"!=typeof t&&t.width&&t.height)}function Mo(t,e){var n,i,r,o,a=e.x,s=e.y,l=e.width,u=e.height,h=e.r;0>l&&(a+=l,l=-l),0>u&&(s+=u,u=-u),"number"==typeof h?n=i=r=o=h:h instanceof Array?1===h.length?n=i=r=o=h[0]:2===h.length?(n=r=h[0],i=o=h[1]):3===h.length?(n=h[0],i=o=h[1],r=h[2]):(n=h[0],i=h[1],r=h[2],o=h[3]):n=i=r=o=0;var c;n+i>l&&(c=n+i,n*=l/c,i*=l/c),r+o>l&&(c=r+o,r*=l/c,o*=l/c),i+r>u&&(c=i+r,i*=u/c,r*=u/c),n+o>u&&(c=n+o,n*=u/c,o*=u/c),t.moveTo(a+n,s),t.lineTo(a+l-i,s),0!==i&&t.arc(a+l-i,s+i,i,-Math.PI/2,0),t.lineTo(a+l,s+u-r),0!==r&&t.arc(a+l-r,s+u-r,r,0,Math.PI/2),t.lineTo(a+o,s+u),0!==o&&t.arc(a+o,s+u-o,o,Math.PI/2,Math.PI),t.lineTo(a,s+n),0!==n&&t.arc(a+n,s+n,n,Math.PI,1.5*Math.PI)}function To(t,e,n){if(e){var i=e.x1,r=e.x2,o=e.y1,a=e.y2;t.x1=i,t.x2=r,t.y1=o,t.y2=a;var s=n&&n.lineWidth;return s?(w_(2*i)===w_(2*r)&&(t.x1=t.x2=Io(i,s,!0)),w_(2*o)===w_(2*a)&&(t.y1=t.y2=Io(o,s,!0)),t):t}}function Co(t,e,n){if(e){var i=e.x,r=e.y,o=e.width,a=e.height;t.x=i,t.y=r,t.width=o,t.height=a;var s=n&&n.lineWidth;return s?(t.x=Io(i,s,!0),t.y=Io(r,s,!0),t.width=Math.max(Io(i+o,s,!1)-t.x,0===o?0:1),t.height=Math.max(Io(r+a,s,!1)-t.y,0===a?0:1),t):t}}function Io(t,e,n){if(!e)return t;var i=w_(2*t);return(i+w_(e))%2===0?i/2:(i+(n?1:-1))/2}function Do(t){return ko(t),v(t.rich,ko),t}function ko(t){if(t){t.font=D_.makeFont(t);var e=t.align;"middle"===e&&(e="center"),t.align=null==e||k_[e]?e:"left";var n=t.verticalAlign;"center"===n&&(n="middle"),t.verticalAlign=null==n||A_[n]?n:"top";var i=t.padding;i&&(t.padding=H(t.padding))}}function Ao(t,e){return null==t||0>=e||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function Oo(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function Po(t,e,n){return"right"===e?t-n[1]:"center"===e?t+n[3]/2-n[1]/2:t+n[3]}function Ro(t){var e=t.text;return null!=e&&(e+=""),e}function Lo(t){return!!(t.backgroundColor||t.lineHeight||t.borderWidth&&t.borderColor)}function zo(t){return null!=t&&"none"!==t}function Eo(t){if("string"!=typeof t)return t;var e=q_.get(t);return e||(e=ln(t,-.1),q_.put(t,e)),e}function Bo(t,e,n){t.onHoverStateChange&&(t.hoverState||0)!==n&&t.onHoverStateChange(e),t.hoverState=n}function Fo(t){Bo(t,"emphasis",F_)}function No(t){t.hoverState===F_&&Bo(t,"normal",E_)}function Vo(t){Bo(t,"blur",B_)}function Ho(t){t.hoverState===B_&&Bo(t,"normal",E_)}function Wo(t){t.selected=!0}function Go(t){t.selected=!1}function Uo(t,e,n){e(t,n)}function Xo(t,e,n){Uo(t,e,n),t.isGroup&&t.traverse(function(t){Uo(t,e,n)})}function Yo(t,e,n,i){for(var r=t.style,o={},a=0;a=0,o=!1;if(t instanceof g_){var a=z_(t),s=r?a.selectFill||a.normalFill:a.normalFill,l=r?a.selectStroke||a.normalStroke:a.normalStroke;if(zo(s)||zo(l)){i=i||{};var u=i.style||{};"inherit"===u.fill?(o=!0,i=h({},i),u=h({},u),u.fill=s):!zo(u.fill)&&zo(s)?(o=!0,i=h({},i),u=h({},u),u.fill=Eo(s)):!zo(u.stroke)&&zo(l)&&(o||(i=h({},i),u=h({},u)),u.stroke=Eo(l)),i.style=u}}if(i&&null==i.z2){o||(i=h({},i));var c=t.z2EmphasisLift;i.z2=t.z2+(null!=c?c:H_)}return i}function qo(t,e,n){if(n&&null==n.z2){n=h({},n);var i=t.z2SelectLift;n.z2=t.z2+(null!=i?i:W_)}return n}function jo(t,e,n){var i=p(t.currentStates,e)>=0,r=t.style.opacity,o=i?null:Yo(t,["opacity"],e,{opacity:1});n=n||{};var a=n.style||{};return null==a.opacity&&(n=h({},n),a=h({opacity:i?r:.1*o.opacity},a),n.style=a),n}function Ko(t,e){var n=this.states[t];if(this.style){if("emphasis"===t)return Zo(this,t,e,n);if("blur"===t)return jo(this,t,n);if("select"===t)return qo(this,t,n)}return n}function $o(t){t.stateProxy=Ko;var e=t.getTextContent(),n=t.getTextGuideLine();e&&(e.stateProxy=Ko),n&&(n.stateProxy=Ko)}function Jo(t,e){!aa(t,e)&&!t.__highByOuter&&Xo(t,Fo)}function Qo(t,e){!aa(t,e)&&!t.__highByOuter&&Xo(t,No)}function ta(t,e){t.__highByOuter|=1<<(e||0),Xo(t,Fo)}function ea(t,e){!(t.__highByOuter&=~(1<<(e||0)))&&Xo(t,No)}function na(t){Xo(t,Vo)}function ia(t){Xo(t,Ho)}function ra(t){Xo(t,Wo)}function oa(t){Xo(t,Go)}function aa(t,e){return t.__highDownSilentOnTouch&&e.zrByTouch}function sa(t){var e=t.getModel();e.eachComponent(function(e,n){var i="series"===e?t.getViewOfSeriesModel(n):t.getViewOfComponentModel(n);i.group.traverse(function(t){Ho(t)})})}function la(t,e,n,i){function r(t,e){for(var n=0;nl;)a=r.getItemGraphicEl(l++);if(a){var u=O_(a);la(i,u.focus,u.blurScope,n)}else{var h=t.get(["emphasis","focus"]),c=t.get(["emphasis","blurScope"]);null!=h&&la(i,h,c,n)}}function ca(t,e,n,i){var r={focusSelf:!1,dispatchers:null};if(null==t||"series"===t||null==e||null==n)return r;var o=i.getModel().getComponent(t,e);if(!o)return r;var a=i.getViewOfComponentModel(o);if(!a||!a.findHighDownDispatchers)return r;for(var s,l=a.findHighDownDispatchers(n),u=0;u0){var o={dataIndex:r,seriesIndex:t.seriesIndex};null!=i&&(o.dataType=i),e.push(o)}})}),e}function ya(t,e,n){xa(t,!0),Xo(t,$o),ma(t,e,n)}function ma(t,e,n){var i=O_(t);null!=e?(i.focus=e,i.blurScope=n):i.focus&&(i.focus=null)}function _a(t,e,n,i){n=n||"itemStyle";for(var r=0;r=R_&&(e=L_[t]=R_++),e}function Sa(t){var e=t.type;return e===X_||e===Y_||e===Z_}function Ma(t){var e=t.type;return e===G_||e===U_}function Ta(t){var e=z_(t);e.normalFill=t.style.fill,e.normalStroke=t.style.stroke;var n=t.states.select||{};e.selectFill=n.style&&n.style.fill||null,e.selectStroke=n.style&&n.style.stroke||null}function Ca(t,e){if(e){var n,i,r,o,a,s,l=t.data,u=t.len(),h=$_.M,c=$_.C,p=$_.L,f=$_.R,d=$_.A,g=$_.Q;for(r=0,o=0;u>r;){switch(n=l[r++],o=r,i=0,n){case h:i=1;break;case p:i=1;break;case c:i=3;break;case g:i=2;break;case d:var v=e[4],y=e[5],m=Q_(e[0]*e[0]+e[1]*e[1]),_=Q_(e[2]*e[2]+e[3]*e[3]),x=tx(-e[1]/_,e[0]/m);l[r]*=m,l[r++]+=v,l[r]*=_,l[r++]+=y,l[r++]*=m,l[r++]*=_,l[r++]+=x,l[r++]+=x,r+=2,o=r;break;case f:s[0]=l[r++],s[1]=l[r++],ge(s,s,e),l[o++]=s[0],l[o++]=s[1],s[0]+=l[r++],s[1]+=l[r++],ge(s,s,e),l[o++]=s[0],l[o++]=s[1]}for(a=0;i>a;a++){var w=J_[a];w[0]=l[r++],w[1]=l[r++],ge(w,w,e),l[o++]=w[0],l[o++]=w[1]}}t.increaseVersion()}}function Ia(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Da(t,e){return(t[0]*e[0]+t[1]*e[1])/(Ia(t)*Ia(e))}function ka(t,e){return(t[0]*e[1]1&&(a*=ex(d),s*=ex(d));var g=(r===o?-1:1)*ex((a*a*s*s-a*a*f*f-s*s*p*p)/(a*a*f*f+s*s*p*p))||0,v=g*a*f/s,y=g*-s*p/a,m=(t+n)/2+ix(c)*v-nx(c)*y,_=(e+i)/2+nx(c)*v+ix(c)*y,x=ka([1,0],[(p-v)/a,(f-y)/s]),w=[(p-v)/a,(f-y)/s],b=[(-1*p-v)/a,(-1*f-y)/s],S=ka(w,b);if(Da(w,b)<=-1&&(S=rx),Da(w,b)>=1&&(S=0),0>S){var M=Math.round(S/rx*1e6)/1e6;S=2*rx+M%2*rx}h.addData(u,m,_,a,s,x,S,c,o)}function Oa(t){var e=new r_;if(!t)return e;var n,i=0,r=0,o=i,a=r,s=r_.CMD,l=t.match(ox);if(!l)return e;for(var u=0;ug;g++)f[g]=parseFloat(f[g]);for(var v=0;d>v;){var y=void 0,m=void 0,_=void 0,x=void 0,w=void 0,b=void 0,S=void 0,M=i,T=r,C=void 0,I=void 0;switch(c){case"l":i+=f[v++],r+=f[v++],p=s.L,e.addData(p,i,r);break;case"L":i=f[v++],r=f[v++],p=s.L,e.addData(p,i,r);break;case"m":i+=f[v++],r+=f[v++],p=s.M,e.addData(p,i,r),o=i,a=r,c="l";break;case"M":i=f[v++],r=f[v++],p=s.M,e.addData(p,i,r),o=i,a=r,c="L";break;case"h":i+=f[v++],p=s.L,e.addData(p,i,r);break;case"H":i=f[v++],p=s.L,e.addData(p,i,r);break;case"v":r+=f[v++],p=s.L,e.addData(p,i,r);break;case"V":r=f[v++],p=s.L,e.addData(p,i,r);break;case"C":p=s.C,e.addData(p,f[v++],f[v++],f[v++],f[v++],f[v++],f[v++]),i=f[v-2],r=f[v-1];break;case"c":p=s.C,e.addData(p,f[v++]+i,f[v++]+r,f[v++]+i,f[v++]+r,f[v++]+i,f[v++]+r),i+=f[v-2],r+=f[v-1];break;case"S":y=i,m=r,C=e.len(),I=e.data,n===s.C&&(y+=i-I[C-4],m+=r-I[C-3]),p=s.C,M=f[v++],T=f[v++],i=f[v++],r=f[v++],e.addData(p,y,m,M,T,i,r);break;case"s":y=i,m=r,C=e.len(),I=e.data,n===s.C&&(y+=i-I[C-4],m+=r-I[C-3]),p=s.C,M=i+f[v++],T=r+f[v++],i+=f[v++],r+=f[v++],e.addData(p,y,m,M,T,i,r);break;case"Q":M=f[v++],T=f[v++],i=f[v++],r=f[v++],p=s.Q,e.addData(p,M,T,i,r);break;case"q":M=f[v++]+i,T=f[v++]+r,i+=f[v++],r+=f[v++],p=s.Q,e.addData(p,M,T,i,r);break;case"T":y=i,m=r,C=e.len(),I=e.data,n===s.Q&&(y+=i-I[C-4],m+=r-I[C-3]),i=f[v++],r=f[v++],p=s.Q,e.addData(p,y,m,i,r);break;case"t":y=i,m=r,C=e.len(),I=e.data,n===s.Q&&(y+=i-I[C-4],m+=r-I[C-3]),i+=f[v++],r+=f[v++],p=s.Q,e.addData(p,y,m,i,r);break;case"A":_=f[v++],x=f[v++],w=f[v++],b=f[v++],S=f[v++],M=i,T=r,i=f[v++],r=f[v++],p=s.A,Aa(M,T,i,r,b,S,_,x,w,p,e);break;case"a":_=f[v++],x=f[v++],w=f[v++],b=f[v++],S=f[v++],M=i,T=r,i+=f[v++],r+=f[v++],p=s.A,Aa(M,T,i,r,b,S,_,x,w,p,e)}}("z"===c||"Z"===c)&&(p=s.Z,e.addData(p),i=o,r=a),n=p}return e.toStatic(),e}function Pa(t){return null!=t.setData}function Ra(t,e){var n=Oa(t),i=h({},e);return i.buildPath=function(t){if(Pa(t)){t.setData(n.data);var e=t.getContext();e&&t.rebuildPath(e,1)}else{var e=t;n.rebuildPath(e,1)}},i.applyTransform=function(t){Ca(n,t),this.dirtyShape()},i}function La(t,e){return new sx(Ra(t,e))}function za(t,n){var i=Ra(t,n),r=function(t){function n(e){var n=t.call(this,e)||this;return n.applyTransform=i.applyTransform,n.buildPath=i.buildPath,n}return e(n,t),n}(sx);return r}function Ea(t,e){for(var n=[],i=t.length,r=0;i>r;r++){var o=t[r];n.push(o.getUpdatedPathProxy(!0))}var a=new g_(e);return a.createPathProxy(),a.buildPath=function(t){if(Pa(t)){t.appendPath(n);var e=t.getContext();e&&t.rebuildPath(e,1)}},a}function Ba(t,e,n,i,r,o,a,s){var l=n-t,u=i-e,h=a-r,c=s-o,p=c*l-h*u;return Sx>p*p?void 0:(p=(h*(e-o)-c*(t-r))/p,[t+p*l,e+p*u])}function Fa(t,e,n,i,r,o,a){var s=t-n,l=e-i,u=(a?o:-o)/_x(s*s+l*l),h=u*l,c=-u*s,p=t+h,f=e+c,d=n+h,g=i+c,v=(p+d)/2,y=(f+g)/2,m=d-p,_=g-f,x=m*m+_*_,w=r-o,b=p*g-d*f,S=(0>_?-1:1)*_x(xx(0,w*w*x-b*b)),M=(b*_-m*S)/x,T=(-b*m-_*S)/x,C=(b*_+m*S)/x,I=(-b*m+_*S)/x,D=M-v,k=T-y,A=C-v,O=I-y;return D*D+k*k>A*A+O*O&&(M=C,T=I),{cx:M,cy:T,x01:-h,y01:-c,x11:M*(r/w-1),y11:T*(r/w-1)}}function Na(t,e){var n=xx(e.r,0),i=xx(e.r0||0,0),r=n>0,o=i>0;if(r||o){if(r||(n=i,i=0),i>n){var a=n;n=i,i=a}var s,l=!!e.clockwise,u=e.startAngle,h=e.endAngle;if(u===h)s=0;else{var c=[u,h];so(c,!l),s=mx(c[0]-c[1])}var p=e.cx,f=e.cy,d=e.cornerRadius||0,g=e.innerCornerRadius||0;if(n>Sx)if(s>fx-Sx)t.moveTo(p+n*gx(u),f+n*dx(u)),t.arc(p,f,n,u,h,!l),i>Sx&&(t.moveTo(p+i*gx(h),f+i*dx(h)),t.arc(p,f,i,h,u,l));else{var v=mx(n-i)/2,y=bx(v,d),m=bx(v,g),_=m,x=y,w=n*gx(u),b=n*dx(u),S=i*gx(h),M=i*dx(h),T=void 0,C=void 0,I=void 0,D=void 0;if((y>Sx||m>Sx)&&(T=n*gx(h),C=n*dx(h),I=i*gx(u),D=i*dx(u),px>s)){var k=Ba(w,b,I,D,T,C,S,M);if(k){var A=w-k[0],O=b-k[1],P=T-k[0],R=C-k[1],L=1/dx(vx((A*P+O*R)/(_x(A*A+O*O)*_x(P*P+R*R)))/2),z=_x(k[0]*k[0]+k[1]*k[1]); _=bx(m,(i-z)/(L-1)),x=bx(y,(n-z)/(L+1))}}if(s>Sx)if(x>Sx){var E=Fa(I,D,w,b,n,x,l),B=Fa(T,C,S,M,n,x,l);t.moveTo(p+E.cx+E.x01,f+E.cy+E.y01),y>x?t.arc(p+E.cx,f+E.cy,x,yx(E.y01,E.x01),yx(B.y01,B.x01),!l):(t.arc(p+E.cx,f+E.cy,x,yx(E.y01,E.x01),yx(E.y11,E.x11),!l),t.arc(p,f,n,yx(E.cy+E.y11,E.cx+E.x11),yx(B.cy+B.y11,B.cx+B.x11),!l),t.arc(p+B.cx,f+B.cy,x,yx(B.y11,B.x11),yx(B.y01,B.x01),!l))}else t.moveTo(p+w,f+b),t.arc(p,f,n,u,h,!l);else t.moveTo(p+w,f+b);if(i>Sx&&s>Sx)if(_>Sx){var E=Fa(S,M,T,C,i,-_,l),B=Fa(w,b,I,D,i,-_,l);t.lineTo(p+E.cx+E.x01,f+E.cy+E.y01),m>_?t.arc(p+E.cx,f+E.cy,_,yx(E.y01,E.x01),yx(B.y01,B.x01),!l):(t.arc(p+E.cx,f+E.cy,_,yx(E.y01,E.x01),yx(E.y11,E.x11),!l),t.arc(p,f,i,yx(E.cy+E.y11,E.cx+E.x11),yx(B.cy+B.y11,B.cx+B.x11),l),t.arc(p+B.cx,f+B.cy,_,yx(B.y11,B.x11),yx(B.y01,B.x01),!l))}else t.lineTo(p+S,f+M),t.arc(p,f,i,h,u,l);else t.lineTo(p+S,f+M)}else t.moveTo(p,f);t.closePath()}}function Va(t,e,n,i,r,o,a){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)*a+(-3*(e-n)-2*s-l)*o+s*r+e}function Ha(t,e){for(var n=t.length,i=[],r=0,o=1;n>o;o++)r+=ce(t[o-1],t[o]);var a=r/2;a=n>a?n:a;for(var o=0;a>o;o++){var s=o/(a-1)*(e?n:n-1),l=Math.floor(s),u=s-l,h=void 0,c=t[l%n],p=void 0,f=void 0;e?(h=t[(l-1+n)%n],p=t[(l+1)%n],f=t[(l+2)%n]):(h=t[0===l?l:l-1],p=t[l>n-2?n-1:l+1],f=t[l>n-3?n-1:l+2]);var d=u*u,g=u*d;i.push([Va(h[0],c[0],p[0],f[0],u,d,g),Va(h[1],c[1],p[1],f[1],u,d,g)])}return i}function Wa(t,e,n,i){var r,o,a,s,l=[],u=[],h=[],c=[];if(i){a=[1/0,1/0],s=[-1/0,-1/0];for(var p=0,f=t.length;f>p;p++)ve(a,a,t[p]),ye(s,s,t[p]);ve(a,a,i[0]),ye(s,s,i[1])}for(var p=0,f=t.length;f>p;p++){var d=t[p];if(n)r=t[p?p-1:f-1],o=t[(p+1)%f];else{if(0===p||p===f-1){l.push(Q(t[p]));continue}r=t[p-1],o=t[p+1]}ie(u,o,r),ue(u,u,e);var g=ce(d,r),v=ce(d,o),y=g+v;0!==y&&(g/=y,v/=y),ue(h,u,-g),ue(c,u,v);var m=ee([],d,h),_=ee([],d,c);i&&(ye(m,m,a),ve(m,m,s),ye(_,_,a),ve(_,_,s)),l.push(m),l.push(_)}return n&&l.push(l.shift()),l}function Ga(t,e,n){var i=e.smooth,r=e.points;if(r&&r.length>=2){if(i&&"spline"!==i){var o=Wa(r,i,n,e.smoothConstraint);t.moveTo(r[0][0],r[0][1]);for(var a=r.length,s=0;(n?a:a-1)>s;s++){var l=o[2*s],u=o[2*s+1],h=r[(s+1)%a];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===i&&(r=Ha(r,n)),t.moveTo(r[0][0],r[0][1]);for(var s=1,c=r.length;c>s;s++)t.lineTo(r[s][0],r[s][1])}n&&t.closePath()}}function Ua(t,e,n){var i=t.cpx2,r=t.cpy2;return null===i||null===r?[(n?Wr:Hr)(t.x1,t.cpx1,t.cpx2,t.x2,e),(n?Wr:Hr)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(n?jr:qr)(t.x1,t.cpx1,t.x2,e),(n?jr:qr)(t.y1,t.cpy1,t.y2,e)]}function Xa(t,e,n,i,r){var o;if(e&&e.ecModel){var a=e.ecModel.getUpdatePayload();o=a&&a.animation}var s=e&&e.isAnimationEnabled(),l="update"===t;if(s){var u=void 0,h=void 0,c=void 0;i?(u=F(i.duration,200),h=F(i.easing,"cubicOut"),c=0):(u=e.getShallow(l?"animationDurationUpdate":"animationDuration"),h=e.getShallow(l?"animationEasingUpdate":"animationEasing"),c=e.getShallow(l?"animationDelayUpdate":"animationDelay")),o&&(null!=o.duration&&(u=o.duration),null!=o.easing&&(h=o.easing),null!=o.delay&&(c=o.delay)),"function"==typeof c&&(c=c(n,r)),"function"==typeof u&&(u=u(n));var p={duration:u||0,delay:c,easing:h};return p}return null}function Ya(t,e,n,i,r,o,a){var s,l=!1;"function"==typeof r?(a=o,o=r,r=null):k(r)&&(o=r.cb,a=r.during,l=r.isFrom,s=r.removeOpt,r=r.dataIndex);var u="remove"===t;u||e.stopAnimation("remove");var h=Xa(t,i,r,u?s||{}:null,i&&i.getAnimationDelayParams?i.getAnimationDelayParams(e,r):null);if(h&&h.duration>0){var c=h.duration,p=h.delay,f=h.easing,d={duration:c,delay:p||0,easing:f,done:o,force:!!o||!!a,setToFinal:!u,scope:t,during:a};l?e.animateFrom(n,d):e.animateTo(n,d)}else e.stopAnimation(),!l&&e.attr(n),a&&a(1),o&&o()}function Za(t,e,n,i,r,o){Ya("update",t,e,n,i,r,o)}function qa(t,e,n,i,r,o){Ya("init",t,e,n,i,r,o)}function ja(t){if(!t.__zr)return!0;for(var e=0;eMath.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"}function cs(t,e){return y(t,function(t){var n=t[0];n=Jx(n,e.x),n=Qx(n,e.x+e.width);var i=t[1];return i=Jx(i,e.y),i=Qx(i,e.y+e.height),[n,i]})}function ps(t,e){var n=Jx(t.x,e.x),i=Qx(t.x+t.width,e.x+e.width),r=Jx(t.y,e.y),o=Qx(t.y+t.height,e.y+e.height);return i>=n&&o>=r?{x:n,y:r,width:i-n,height:o-r}:void 0}function fs(t,e,n){var i=h({rectHover:!0},e),r=i.style={strokeNoScale:!0};return n=n||{x:-1,y:-1,width:2,height:2},t?0===t.indexOf("image://")?(r.image=t.slice(8),c(r,n),new x_(i)):rs(t.replace("path://",""),i,n,"center"):void 0}function ds(t){var e=t.itemTooltipOption,n=t.componentModel,i=t.itemName,r=C(e)?{formatter:e}:e,o=n.mainType,a=n.componentIndex,s={componentType:o,name:i,$vars:["name"]};s[o+"Index"]=a;var l=t.formatterParamsExtra;l&&v(w(l),function(t){j(s,t)||(s[t]=l[t],s.$vars.push(t))});var u=O_(t.el);u.componentMainType=o,u.componentIndex=a,u.tooltipConfig={name:i,option:c({content:i,formatterParams:s},r)}}function gs(t,e){for(var n=0;n=0&&n.push(t)}),n}t.topologicalTravel=function(t,e,i,r){function o(t){l[t].entryCount--,0===l[t].entryCount&&u.push(t)}function a(t){h[t]=!0,o(t)}if(t.length){var s=n(e),l=s.graph,u=s.noEntryList,h={};for(v(t,function(t){h[t]=!0});u.length;){var c=u.pop(),p=l[c],f=!!h[c];f&&(i.call(r,c,p.originalDeps.slice()),delete h[c]),v(p.successor,f?a:o)}v(h,function(){var t="";throw new Error(t)})}}}function As(t,e){return l(l({},t,!0),e,!0)}function Os(t,e){t=t.toUpperCase(),Tw[t]=new yw(e),Mw[t]=e}function Ps(t){if(C(t)){var e=Mw[t.toUpperCase()]||{};return t===ww||t===bw?s(e):l(s(e),s(Mw[Sw]),!1)}return l(s(t),s(Mw[Sw]),!1)}function Rs(t){return Tw[t]}function Ls(){return Tw[Sw]}function zs(t,e){return t+="","0000".substr(0,e-t.length)+t}function Es(t){switch(t){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return t}}function Bs(t){return t===Es(t)}function Fs(t){switch(t){case"year":case"month":return"day";case"millisecond":return"millisecond";default:return"second"}}function Ns(t,e,n,i){var r=ki(t),o=r[Gs(n)](),a=r[Us(n)]()+1,s=Math.floor((a-1)/4)+1,l=r[Xs(n)](),u=r["get"+(n?"UTC":"")+"Day"](),h=r[Ys(n)](),c=(h-1)%12+1,p=r[Zs(n)](),f=r[qs(n)](),d=r[js(n)](),g=i instanceof yw?i:Rs(i||Cw)||Ls(),v=g.getModel("time"),y=v.get("month"),m=v.get("monthAbbr"),_=v.get("dayOfWeek"),x=v.get("dayOfWeekAbbr");return(e||"").replace(/{yyyy}/g,o+"").replace(/{yy}/g,o%100+"").replace(/{Q}/g,s+"").replace(/{MMMM}/g,y[a-1]).replace(/{MMM}/g,m[a-1]).replace(/{MM}/g,zs(a,2)).replace(/{M}/g,a+"").replace(/{dd}/g,zs(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,_[u]).replace(/{ee}/g,x[u]).replace(/{e}/g,u+"").replace(/{HH}/g,zs(h,2)).replace(/{H}/g,h+"").replace(/{hh}/g,zs(c+"",2)).replace(/{h}/g,c+"").replace(/{mm}/g,zs(p,2)).replace(/{m}/g,p+"").replace(/{ss}/g,zs(f,2)).replace(/{s}/g,f+"").replace(/{SSS}/g,zs(d,3)).replace(/{S}/g,d+"")}function Vs(t,e,n,i,r){var o=null;if("string"==typeof n)o=n;else if("function"==typeof n)o=n(t.value,e,{level:t.level});else{var a=h({},Pw);if(t.level>0)for(var s=0;s=0;--s)if(l[u]){o=l[u];break}o=o||a.none}if(M(o)){var f=null==t.level?0:t.level>=0?t.level:o.length+t.level;f=Math.min(f,o.length-1),o=o[f]}}return Ns(new Date(t.value),o,r,i)}function Hs(t,e){var n=ki(t),i=n[Us(e)]()+1,r=n[Xs(e)](),o=n[Ys(e)](),a=n[Zs(e)](),s=n[qs(e)](),l=n[js(e)](),u=0===l,h=u&&0===s,c=h&&0===a,p=c&&0===o,f=p&&1===r,d=f&&1===i;return d?"year":f?"month":p?"day":c?"hour":h?"minute":u?"second":"millisecond"}function Ws(t,e,n){var i="number"==typeof t?ki(t):t;switch(e=e||Hs(t,n)){case"year":return i[Gs(n)]();case"half-year":return i[Us(n)]()>=6?1:0;case"quarter":return Math.floor((i[Us(n)]()+1)/4);case"month":return i[Us(n)]();case"day":return i[Xs(n)]();case"half-day":return i[Ys(n)]()/24;case"hour":return i[Ys(n)]();case"minute":return i[Zs(n)]();case"second":return i[qs(n)]();case"millisecond":return i[js(n)]()}}function Gs(t){return t?"getUTCFullYear":"getFullYear"}function Us(t){return t?"getUTCMonth":"getMonth"}function Xs(t){return t?"getUTCDate":"getDate"}function Ys(t){return t?"getUTCHours":"getHours"}function Zs(t){return t?"getUTCMinutes":"getMinutes"}function qs(t){return t?"getUTCSeconds":"getSeconds"}function js(t){return t?"getUTCMilliseconds":"getMilliseconds"}function Ks(t){return t?"setUTCFullYear":"setFullYear"}function $s(t){return t?"setUTCMonth":"setMonth"}function Js(t){return t?"setUTCDate":"setDate"}function Qs(t){return t?"setUTCHours":"setHours"}function tl(t){return t?"setUTCMinutes":"setMinutes"}function el(t){return t?"setUTCSeconds":"setSeconds"}function nl(t){return t?"setUTCMilliseconds":"setMilliseconds"}function il(t,e,n,i,r,o,a,s){var l=new D_({style:{text:t,font:e,align:n,verticalAlign:i,padding:r,rich:o,overflow:a?"truncate":null,lineHeight:s}});return l.getBoundingRect()}function rl(t){if(!Ei(t))return C(t)?t:"-";var e=(t+"").split(".");return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(e.length>1?"."+e[1]:"")}function ol(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 al(t){return null==t?"":(t+"").replace(Fw,function(t,e){return Nw[e]})}function sl(t,e,n){M(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r=e[0].$vars||[],o=0;os;s++)for(var l=0;l':'';var a=n.markerId||"markerX";return{renderMode:o,content:"{"+a+"|} ",style:"subItem"===r?{width:4,height:4,borderRadius:2,backgroundColor:i}:{width:10,height:10,borderRadius:5,backgroundColor:i}}}function ul(t,e,n){("week"===t||"month"===t||"quarter"===t||"half-year"===t||"year"===t)&&(t="MM-dd\nyyyy");var i=ki(e),r=n?"UTC":"",o=i["get"+r+"FullYear"](),a=i["get"+r+"Month"]()+1,s=i["get"+r+"Date"](),l=i["get"+r+"Hours"](),u=i["get"+r+"Minutes"](),h=i["get"+r+"Seconds"](),c=i["get"+r+"Milliseconds"]();return t=t.replace("MM",zs(a,2)).replace("M",a).replace("yyyy",o).replace("yy",o%100+"").replace("dd",zs(s,2)).replace("d",s).replace("hh",zs(l,2)).replace("h",l).replace("mm",zs(u,2)).replace("m",u).replace("ss",zs(h,2)).replace("s",h).replace("SSS",zs(c,3))}function hl(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function cl(t,e){return e=e||"transparent",C(t)?t:k(t)?t.colorStops&&(t.colorStops[0]||{}).color||e:e}function pl(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.opener=null,n.location.href=t}else window.open(t,e)}function fl(t,e,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;e.eachChild(function(l,u){var h,c,p=l.getBoundingRect(),f=e.childAt(u+1),d=f&&f.getBoundingRect();if("horizontal"===t){var g=p.width+(d?-d.x+p.x:0);h=o+g,h>i||l.newline?(o=0,h=g,a+=s+n,s=p.height):s=Math.max(s,p.height)}else{var v=p.height+(d?-d.y+p.y:0);c=a+v,c>r||l.newline?(o+=s+n,a=0,c=v,s=p.width):s=Math.max(s,p.width)}l.newline||(l.x=o,l.y=a,l.markRedraw(),"horizontal"===t?o=h+n:a=c+n)})}function dl(t,e,n){n=Bw(n||0);var i=e.width,r=e.height,o=_i(t.left,i),a=_i(t.top,r),s=_i(t.right,i),l=_i(t.bottom,r),u=_i(t.width,i),h=_i(t.height,r),c=n[2]+n[0],p=n[1]+n[3],f=t.aspect;switch(isNaN(u)&&(u=i-s-p-o),isNaN(h)&&(h=r-l-c-a),null!=f&&(isNaN(u)&&isNaN(h)&&(f>i/r?u=.8*i:h=.8*r),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(o)&&(o=i-s-u-p),isNaN(a)&&(a=r-l-h-c),t.left||t.right){case"center":o=i/2-u/2-n[3];break;case"right":o=i-u-p}switch(t.top||t.bottom){case"middle":case"center":a=r/2-h/2-n[0];break;case"bottom":a=r-h-c}o=o||0,a=a||0,isNaN(u)&&(u=i-p-o-(s||0)),isNaN(h)&&(h=r-c-a-(l||0));var d=new Dy(o+n[3],a+n[0],u,h);return d.margin=n,d}function gl(t){var e=t.layoutMode||t.constructor.layoutMode;return k(e)?e:e?{type:e}:null}function vl(t,e,n){function i(n,i){var a={},l=0,u={},h=0,c=2;if(Ww(n,function(e){u[e]=t[e]}),Ww(n,function(t){r(e,t)&&(a[t]=u[t]=e[t]),o(a,t)&&l++,o(u,t)&&h++}),s[i])return o(e,n[1])?u[n[2]]=null:o(e,n[2])&&(u[n[1]]=null),u;if(h!==c&&l){if(l>=c)return a;for(var p=0;pi;i++)t.push(e+i)}function r(t){var e=t.dimsDef;return e?e.length:1}var o={},a=bl(e);if(!a||!t)return o;var s,l,u=[],h=[],c=e.ecModel,p=ub(c).datasetMap,f=a.uid+"_"+n.seriesLayoutBy;t=t.slice(),v(t,function(e,n){var i=k(e)?e:t[n]={name:e};"ordinal"===i.type&&null==s&&(s=n,l=r(i)),o[i.name]=[]});var d=p.get(f)||p.set(f,{categoryWayDim:l,valueWayDim:0});return v(t,function(t,e){var n=t.name,a=r(t);if(null==s){var l=d.valueWayDim;i(o[n],l,a),i(h,l,a),d.valueWayDim+=a}else if(s===e)i(o[n],0,a),i(u,0,a);else{var l=d.categoryWayDim;i(o[n],l,a),i(h,l,a),d.categoryWayDim+=a}}),u.length&&(o.itemName=u),h.length&&(o.seriesName=h),o}function bl(t){var e=t.get("data",!0);return e?void 0:ur(t.ecModel,"dataset",{index:t.get("datasetIndex",!0),id:t.get("datasetId",!0)},Qy).models[0]}function Sl(t){return t.get("transform",!0)||t.get("fromTransformResult",!0)?ur(t.ecModel,"dataset",{index:t.get("fromDatasetIndex",!0),id:t.get("fromDatasetId",!0)},Qy).models:[]}function Ml(t,e){return Tl(t.data,t.sourceFormat,t.seriesLayoutBy,t.dimensionsDefine,t.startIndex,e)}function Tl(t,e,n,i,r,o){function a(t){var e=C(t);return null!=t&&isFinite(t)&&""!==t?e?lb.Might:lb.Not:e&&"-"!==t?lb.Must:void 0}var s,l=5;if(O(t))return lb.Not;var u,h;if(i){var c=i[o];k(c)?(u=c.name,h=c.type):C(c)&&(u=c)}if(null!=h)return"ordinal"===h?lb.Must:lb.Not;if(e===eb){var p=t;if(n===sb){for(var f=p[o],d=0;d<(f||[]).length&&l>d;d++)if(null!=(s=a(f[r+d])))return s}else for(var d=0;dd;d++){var g=p[r+d];if(g&&null!=(s=a(g[o])))return s}}else if(e===nb){var v=t;if(!u)return lb.Not;for(var d=0;dd;d++){var y=v[d];if(y&&null!=(s=a(y[u])))return s}}else if(e===ib){var m=t;if(!u)return lb.Not;var f=m[u];if(!f||O(f))return lb.Not;for(var d=0;dd;d++)if(null!=(s=a(f[d])))return s}else if(e===tb)for(var _=t,d=0;d<_.length&&l>d;d++){var y=_[d],x=Gi(y);if(!M(x))return lb.Not;if(null!=(s=a(x[o])))return s}return lb.Not}function Cl(t,e,n){var i=hb.get(e);if(!i)return n;var r=i(t);return r?n.concat(r):n}function Il(t,e){for(var n=t.length,i=0;n>i;i++)if(t[i].length>e)return t[i];return t[n-1]}function Dl(t,e,n,i,r,o,a){o=o||t;var s=e(o),l=s.paletteIdx||0,u=s.paletteNameMap=s.paletteNameMap||{};if(u.hasOwnProperty(r))return u[r];var h=null!=a&&i?Il(i,a):n;if(h=h||n,h&&h.length){var c=h[l];return r&&(u[r]=c),s.paletteIdx=(l+1)%h.length,c}}function kl(t,e){e(t).paletteIdx=0,e(t).paletteNameMap={}}function Al(t,e){if(e){var n=e.seriesIndex,i=e.seriesId,r=e.seriesName;return null!=n&&t.componentIndex!==n||null!=i&&t.id!==i||null!=r&&t.name!==r}}function Ol(t,e){var n=t.color&&!t.colorLayer;v(e,function(e,i){"colorLayer"===i&&n||Zw.hasClass(i)||("object"==typeof e?t[i]=t[i]?l(t[i],e,!1):s(e):null==t[i]&&(t[i]=e))})}function Pl(t,e,n){if(M(e)){var i=Y();return v(e,function(t){if(null!=t){var e=tr(t,null);null!=e&&i.set(t,!0)}}),_(n,function(e){return e&&i.get(e[t])})}var r=tr(e,null);return _(n,function(e){return e&&null!=r&&e[t]===r})}function Rl(t,e){return e.hasOwnProperty("subType")?_(t,function(t){return t&&t.subType===e.subType}):t}function Ll(t){var e=Y();return t&&v(Hi(t.replaceMerge),function(t){e.set(t,!0)}),{replaceMergeMainTypeMap:e}}function zl(t,e,n){function i(t){v(e,function(e){e(t,n)})}var r,o,a=[],s=t.baseOption,l=t.timeline,u=t.options,h=t.media,c=!!t.media,p=!!(u||l||s&&s.timeline);return s?(o=s,o.timeline||(o.timeline=l)):((p||c)&&(t.options=t.media=null),o=t),c&&M(h)&&v(h,function(t){t&&t.option&&(t.query?a.push(t):r||(r=t))}),i(o),v(u,function(t){return i(t)}),v(a,function(t){return i(t.option)}),{baseOption:o,timelineOptions:u||[],mediaDefault:r,mediaList:a}}function El(t,e,n){var i={width:e,height:n,aspectratio:e/n},r=!0;return v(t,function(t,e){var n=e.match(Cb);if(n&&n[1]&&n[2]){var o=n[1],a=n[2].toLowerCase();Bl(i[a],t,o)||(r=!1)}}),r}function Bl(t,e,n){return"min"===n?t>=e:"max"===n?e>=t:t===e}function Fl(t,e){return t.join(",")===e.join(",")}function Nl(t){var e=t&&t.itemStyle;if(e)for(var n=0,i=Ab.length;i>n;n++){var r=Ab[n],o=e.normal,a=e.emphasis;o&&o[r]&&(t[r]=t[r]||{},t[r].normal?l(t[r].normal,o[r]):t[r].normal=o[r],o[r]=null),a&&a[r]&&(t[r]=t[r]||{},t[r].emphasis?l(t[r].emphasis,a[r]):t[r].emphasis=a[r],a[r]=null)}}function Vl(t,e,n){if(t&&t[e]&&(t[e].normal||t[e].emphasis)){var i=t[e].normal,r=t[e].emphasis;i&&(n?(t[e].normal=t[e].emphasis=null,c(t[e],i)):t[e]=i),r&&(t.emphasis=t.emphasis||{},t.emphasis[e]=r,r.focus&&(t.emphasis.focus=r.focus),r.blurScope&&(t.emphasis.blurScope=r.blurScope))}}function Hl(t){Vl(t,"itemStyle"),Vl(t,"lineStyle"),Vl(t,"areaStyle"),Vl(t,"label"),Vl(t,"labelLine"),Vl(t,"upperLabel"),Vl(t,"edgeLabel")}function Wl(t,e){var n=kb(t)&&t[e],i=kb(n)&&n.textStyle;if(i)for(var r=0,o=$y.length;o>r;r++){var a=$y[r];i.hasOwnProperty(a)&&(n[a]=i[a])}}function Gl(t){t&&(Hl(t),Wl(t,"label"),t.emphasis&&Wl(t.emphasis,"label"))}function Ul(t){if(kb(t)){Nl(t),Hl(t),Wl(t,"label"),Wl(t,"upperLabel"),Wl(t,"edgeLabel"),t.emphasis&&(Wl(t.emphasis,"label"),Wl(t.emphasis,"upperLabel"),Wl(t.emphasis,"edgeLabel"));var e=t.markPoint;e&&(Nl(e),Gl(e));var n=t.markLine;n&&(Nl(n),Gl(n));var i=t.markArea;i&&Gl(i);var r=t.data;if("graph"===t.type){r=r||t.nodes;var o=t.links||t.edges;if(o&&!O(o))for(var a=0;a=0;d--){var g=t[d];if(s||(p=g.data.rawIndexOf(g.stackedByDimension,c)),p>=0){var v=g.data.getByRawIndex(g.stackResultDimension,p);if(h>=0&&v>0||0>=h&&0>v){h=Ci(h,v),f=v;break}}}return i[0]=h,i[1]=f,i})})}function ou(t){return t instanceof Lb}function au(t,e,n){n=n||uu(t);var i=e.seriesLayoutBy,r=hu(t,n,i,e.sourceHeader,e.dimensions),o=new Lb({data:t,sourceFormat:n,seriesLayoutBy:i,dimensionsDefine:r.dimensionsDefine,startIndex:r.startIndex,dimensionsDetectedCount:r.dimensionsDetectedCount,metaRawOption:s(e)});return o}function su(t){return new Lb({data:t,sourceFormat:O(t)?rb:tb})}function lu(t){return new Lb({data:t.data,sourceFormat:t.sourceFormat,seriesLayoutBy:t.seriesLayoutBy,dimensionsDefine:s(t.dimensionsDefine),startIndex:t.startIndex,dimensionsDetectedCount:t.dimensionsDetectedCount})}function uu(t){var e=ob;if(O(t))e=rb;else if(M(t)){0===t.length&&(e=eb);for(var n=0,i=t.length;i>n;n++){var r=t[n];if(null!=r){if(M(r)){e=eb;break}if(k(r)){e=nb;break}}}}else if(k(t))for(var o in t)if(j(t,o)&&g(t[o])){e=ib;break}return e}function hu(t,e,n,i,r){var o,a;if(!t)return{dimensionsDefine:pu(r),startIndex:a,dimensionsDetectedCount:o};if(e===eb){var s=t;"auto"===i||null==i?fu(function(t){null!=t&&"-"!==t&&(C(t)?null==a&&(a=1):a=0)},n,s,10):a=D(i)?i:i?1:0,r||1!==a||(r=[],fu(function(t,e){r[e]=null!=t?t+"":""},n,s,1/0)),o=r?r.length:n===sb?s.length:s[0]?s[0].length:null}else if(e===nb)r||(r=cu(t));else if(e===ib)r||(r=[],v(t,function(t,e){r.push(e)}));else if(e===tb){var l=Gi(t[0]);o=M(l)&&l.length||1}return{startIndex:a,dimensionsDefine:pu(r),dimensionsDetectedCount:o}}function cu(t){for(var e,n=0;nr;r++)t(n[r]?n[r][0]:null,r); else for(var o=n[0]||[],r=0;rr;r++)t(o[r],r)}function du(t){var e=t.sourceFormat;return e===nb||e===ib}function gu(t,e){var n=Bb[mu(t,e)];return n}function vu(t,e){var n=Nb[mu(t,e)];return n}function yu(t){var e=Hb[t];return e}function mu(t,e){return t===eb?t+"_"+e:t}function _u(t,e,n){if(t){var i=t.getRawDataItem(e);if(null!=i){var r=t.getStore(),o=r.getSource().sourceFormat;if(null!=n){var a=t.getDimensionIndex(n),s=r.getDimensionProperty(a);return yu(o)(i,a,s)}var l=i;return o===tb&&(l=Gi(i)),l}}}function xu(t){return new Ub(t)}function wu(t,e){var n=e&&e.type;return"ordinal"===n?t:("time"===n&&"number"!=typeof t&&null!=t&&"-"!==t&&(t=+ki(t)),null==t||""===t?0/0:+t)}function bu(t,e){var n=new Zb,i=t.data,r=n.sourceFormat=t.sourceFormat,o=t.startIndex,a="";t.seriesLayoutBy!==ab&&Vi(a);var s=[],l={},u=t.dimensionsDefine;if(u)v(u,function(t,e){var n=t.name,i={index:e,name:n,displayName:t.displayName};if(s.push(i),null!=n){var r="";j(l,n)&&Vi(r),l[n]=i}});else for(var h=0;ho;o++)r.push(n[o].slice());return r}if(e===nb){for(var r=[],o=0,a=n.length;a>o;o++)r.push(h({},n[o]));return r}}function Tu(t,e,n){return null!=n?"number"==typeof n||!isNaN(n)&&!j(e,n)?t[n]:j(e,n)?e[n]:void 0:void 0}function Cu(t){return s(t)}function Iu(t){t=s(t);var e=t.type,n="";e||Vi(n);var i=e.split(":");2!==i.length&&Vi(n);var r=!1;"echarts"===i[0]&&(e=i[1],r=!0),t.__isBuiltIn=r,qb.set(e,t)}function Du(t,e,n){var i=Hi(t),r=i.length,o="";r||Vi(o);for(var a=0,s=r;s>a;a++){var l=i[a];e=ku(l,e,n,1===r?null:a),a!==s-1&&(e.length=Math.max(e.length,1))}return e}function ku(t,e){var n="";e.length||Vi(n),k(t)||Vi(n);var i=t.type,r=qb.get(i);r||Vi(n);var o=y(e,function(t){return bu(t,r)}),a=Hi(r.transform({upstream:o[0],upstreamList:o,config:s(t.config)}));return y(a,function(t,n){var i="";k(t)||Vi(i),t.data||Vi(i);var r=uu(t.data);Au(r)||Vi(i);var o,a=e[0];if(a&&0===n&&!t.dimensions){var s=a.startIndex;s&&(t.data=a.data.slice(0,s).concat(t.data)),o={seriesLayoutBy:ab,sourceHeader:s,dimensions:a.metaRawOption.dimensions}}else o={seriesLayoutBy:ab,sourceHeader:0,dimensions:t.dimensions};return au(t.data,o,null)})}function Au(t){return t===eb||t===nb}function Ou(t){return t>65535?Kb:$b}function Pu(){return[1/0,-1/0]}function Ru(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Lu(t,e,n,i,r){var o=tS[n||"float"];if(r){var a=t[e],s=a&&a.length;if(s!==i){for(var l=new o(i),u=0;s>u;u++)l[u]=a[u];t[e]=l}}else t[e]=new o(i)}function zu(t){var e=t.option.transform;e&&U(t.option.transform)}function Eu(t){return"series"===t.mainType}function Bu(t){throw new Error(t)}function Fu(t,e){return e.type=t,e}function Nu(t,e){var n=t.getData().getItemVisual(e,"style"),i=n[t.visualDrawType];return cl(i)}function Vu(t){var e,n,i,r,o=t.series,a=t.dataIndex,s=t.multipleSeries,l=o.getData(),u=l.mapDimensionsAll("defaultedTooltip"),h=u.length,c=o.getRawValue(a),p=M(c),f=Nu(o,a);if(h>1||p&&!h){var d=Hu(c,o,a,u,f);e=d.inlineValues,n=d.inlineValueTypes,i=d.blocks,r=d.inlineValues[0]}else if(h){var g=l.getDimensionInfo(u[0]);r=e=_u(l,a,u[0]),n=g.type}else r=e=p?c[0]:c;var v=er(o),y=v&&o.name||"",m=l.getName(a),_=s?y:m;return Fu("section",{header:y,noHeader:s||!v,sortParam:r,blocks:[Fu("nameValue",{markerType:"item",markerColor:f,name:_,noName:!G(_),value:e,valueType:n})].concat(i||[])})}function Hu(t,e,n,i,r){function o(t,e){var n=a.getDimensionInfo(e);n&&n.otherDims.tooltip!==!1&&(s?h.push(Fu("nameValue",{markerType:"subItem",markerColor:r,name:n.displayName,value:t,valueType:n.type})):(l.push(t),u.push(n.type)))}var a=e.getData(),s=m(t,function(t,e,n){var i=a.getDimensionInfo(n);return t=t||i&&i.tooltip!==!1&&null!=i.displayName},!1),l=[],u=[],h=[];return i.length?v(i,function(t){o(_u(a,n,t),t)}):v(t,o),{inlineValues:l,inlineValueTypes:u,blocks:h}}function Wu(t,e){return t.getName(e)||t.getId(e)}function Gu(t){var e=t.name;er(t)||(t.name=Uu(t)||e)}function Uu(t){var e=t.getRawData(),n=e.mapDimensionsAll("seriesName"),i=[];return v(n,function(t){var n=e.getDimensionInfo(t);n.displayName&&i.push(n.displayName)}),i.join(" ")}function Xu(t){return t.model.getRawData().count()}function Yu(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),Zu}function Zu(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function qu(t,e){v(Z(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),function(n){t.wrapMethod(n,S(ju,e))})}function ju(t,e){var n=Ku(t);return n&&n.setOutputEnd((e||this).count()),e}function Ku(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(t.uid))}return i}}function $u(){var t=ar();return function(e){var n=t(e),i=e.pipelineContext,r=!!n.large,o=!!n.progressiveRender,a=n.large=!(!i||!i.large),s=n.progressiveRender=!(!i||!i.progressiveRender);return!(r===a&&o===s)&&"reset"}}function Ju(t,e,n){t&&("emphasis"===e?ta:ea)(t,n)}function Qu(t,e,n){var i=or(t,e),r=e&&null!=e.highlightKey?ba(e.highlightKey):null;null!=i?v(Hi(i),function(e){Ju(t.getItemGraphicEl(e),n,r)}):t.eachItemGraphicEl(function(t){Ju(t,n,r)})}function th(t){return lS(t.model)}function eh(t){var e=t.model,n=t.ecModel,i=t.api,r=t.payload,o=e.pipelineContext.progressiveRender,a=t.view,s=r&&sS(r).updateMethod,l=o?"incrementalPrepareRender":s&&a[s]?s:"render";return"render"!==l&&a[l](e,n,i,r),cS[l]}function nh(t,e,n){function i(){h=(new Date).getTime(),c=null,t.apply(a,s||[])}var r,o,a,s,l,u=0,h=0,c=null;e=e||0;var p=function(){for(var t=[],p=0;p=0?i():c=setTimeout(i,-o),u=r};return p.clear=function(){c&&(clearTimeout(c),c=null)},p.debounceNextCall=function(t){l=t},p}function ih(t,e,n,i){var r=t[e];if(r){var o=r[pS]||r,a=r[dS],s=r[fS];if(s!==n||a!==i){if(null==n||!i)return t[e]=o;r=t[e]=nh(o,n,"debounce"===i),r[pS]=o,r[dS]=i,r[fS]=n}return r}}function rh(t,e){var n=t[e];n&&n[pS]&&(t[e]=n[pS])}function oh(t,e){var n=t.visualStyleMapper||vS[e];return n?n:(console.warn("Unkown style type '"+e+"'."),vS.itemStyle)}function ah(t,e){var n=t.visualDrawType||yS[e];return n?n:(console.warn("Unkown style type '"+e+"'."),"fill")}function sh(t,e){e=e||{},c(e,{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var n=new Fy,i=new M_({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});n.add(i);var r=new D_({style:{text:e.text,fill:e.textColor,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:e.fontFamily},zlevel:e.zlevel,z:10001}),o=new M_({style:{fill:"none"},textContent:r,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});n.add(o);var a;return e.showSpinner&&(a=new Nx({shape:{startAngle:-bS/2,endAngle:-bS/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001}),a.animateShape(!0).when(1e3,{endAngle:3*bS/2}).start("circularInOut"),a.animateShape(!0).when(1e3,{startAngle:3*bS/2}).delay(300).start("circularInOut"),n.add(a)),n.resize=function(){var n=r.getBoundingRect().width,s=e.showSpinner?e.spinnerRadius:0,l=(t.getWidth()-2*s-(e.showSpinner&&n?10:0)-n)/2-(e.showSpinner&&n?0:5+n/2)+(e.showSpinner?0:n/2)+(n?0:s),u=t.getHeight()/2;e.showSpinner&&a.setShape({cx:l,cy:u}),o.setShape({x:l-s,y:u-s,width:2*s,height:2*s}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},n.resize(),n}function lh(t){t.overallReset(t.ecModel,t.api,t.payload)}function uh(t){return t.overallProgress&&hh}function hh(){this.agent.dirty(),this.getDownstream().dirty()}function ch(){this.agent&&this.agent.dirty()}function ph(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):null}function fh(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Hi(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?y(e,function(t,e){return dh(e)}):MS}function dh(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(r&&r.dataEach)for(var o=e.start;o0?(e=e||1,"dashed"===t?[4*e,2*e]:"dotted"===t?[e]:D(t)?[t]:M(t)?t:null):null}function Ah(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))}function Oh(t){return"string"==typeof t&&"none"!==t}function Ph(t){var e=t.fill;return null!=e&&"none"!==e}function Rh(t,e){if(null!=e.fillOpacity&&1!==e.fillOpacity){var n=t.globalAlpha;t.globalAlpha=e.fillOpacity*e.opacity,t.fill(),t.globalAlpha=n}else t.fill()}function Lh(t,e){if(null!=e.strokeOpacity&&1!==e.strokeOpacity){var n=t.globalAlpha;t.globalAlpha=e.strokeOpacity*e.opacity,t.stroke(),t.globalAlpha=n}else t.stroke()}function zh(t,e,n){var i=Tr(e.image,e.__image,n);if(Ir(i)){var r=t.createPattern(i,e.repeat||"repeat");if("function"==typeof DOMMatrix&&r.setTransform){var o=new DOMMatrix;o.rotateSelf(0,0,(e.rotation||0)/Math.PI*180),o.scaleSelf(e.scaleX||1,e.scaleY||1),o.translateSelf(e.x||0,e.y||0),r.setTransform(o)}return r}}function Eh(t,e,n,i){var r=Ah(n),o=Ph(n),a=n.strokePercent,s=1>a,l=!e.path;e.silent&&!s||!l||e.createPathProxy();var u=e.path||jS;if(!i){var h=n.fill,c=n.stroke,p=o&&!!h.colorStops,f=r&&!!c.colorStops,d=o&&!!h.image,g=r&&!!c.image,v=void 0,m=void 0,_=void 0,x=void 0,w=void 0;(p||f)&&(w=e.getBoundingRect()),p&&(v=e.__dirty?Ih(t,h,w):e.__canvasFillGradient,e.__canvasFillGradient=v),f&&(m=e.__dirty?Ih(t,c,w):e.__canvasStrokeGradient,e.__canvasStrokeGradient=m),d&&(_=e.__dirty||!e.__canvasFillPattern?zh(t,h,e):e.__canvasFillPattern,e.__canvasFillPattern=_),g&&(x=e.__dirty||!e.__canvasStrokePattern?zh(t,c,e):e.__canvasStrokePattern,e.__canvasStrokePattern=_),p?t.fillStyle=v:d&&(_?t.fillStyle=_:o=!1),f?t.strokeStyle=m:g&&(x?t.strokeStyle=x:r=!1)}var b=n.lineDash&&n.lineWidth>0&&kh(n.lineDash,n.lineWidth),S=n.lineDashOffset,M=!!t.setLineDash,T=e.getGlobalScale();if(u.setScale(T[0],T[1],e.segmentIgnoreThreshold),b){var C=n.strokeNoScale&&e.getLineScale?e.getLineScale():1;C&&1!==C&&(b=y(b,function(t){return t/C}),S/=C)}var I=!0;(l||e.__dirty&Cv||b&&!M&&r)&&(u.setDPR(t.dpr),s?u.setContext(null):(u.setContext(t),I=!1),u.reset(),b&&!M&&(u.setLineDash(b),u.setLineDashOffset(S)),e.buildPath(u,e.shape,i),u.toStatic(),e.pathUpdated()),I&&u.rebuildPath(t,s?a:1),b&&M&&(t.setLineDash(b),t.lineDashOffset=S),i||(n.strokeFirst?(r&&Lh(t,n),o&&Rh(t,n)):(o&&Rh(t,n),r&&Lh(t,n))),b&&M&&t.setLineDash([])}function Bh(t,e,n){var i=e.__image=Tr(n.image,e.__image,e,e.onload);if(i&&Ir(i)){var r=n.x||0,o=n.y||0,a=e.getWidth(),s=e.getHeight(),l=i.width/i.height;if(null==a&&null!=s?a=s*l:null==s&&null!=a?s=a/l:null==a&&null==s&&(a=i.width,s=i.height),n.sWidth&&n.sHeight){var u=n.sx||0,h=n.sy||0;t.drawImage(i,u,h,n.sWidth,n.sHeight,r,o,a,s)}else if(n.sx&&n.sy){var u=n.sx,h=n.sy,c=a-u,p=s-h;t.drawImage(i,u,h,c,p,r,o,a,s)}else t.drawImage(i,r,o,a,s)}}function Fh(t,e,n){var i=n.text;if(null!=i&&(i+=""),i){t.font=n.font||Ay,t.textAlign=n.textAlign,t.textBaseline=n.textBaseline;var r=void 0;if(t.setLineDash){var o=n.lineDash&&n.lineWidth>0&&kh(n.lineDash,n.lineWidth),a=n.lineDashOffset;if(o){var s=n.strokeNoScale&&e.getLineScale?e.getLineScale():1;s&&1!==s&&(o=y(o,function(t){return t/s}),a/=s),t.setLineDash(o),t.lineDashOffset=a,r=!0}}n.strokeFirst?(Ah(n)&&t.strokeText(i,n.x,n.y),Ph(n)&&t.fillText(i,n.x,n.y)):(Ph(n)&&t.fillText(i,n.x,n.y),Ah(n)&&t.strokeText(i,n.x,n.y)),r&&t.setLineDash([])}}function Nh(t,e,n,i,r){var o=!1;if(!i&&(n=n||{},e===n))return!1;if(i||e.opacity!==n.opacity){o||(Yh(t,r),o=!0);var a=Math.max(Math.min(e.opacity,1),0);t.globalAlpha=isNaN(a)?gm.opacity:a}(i||e.blend!==n.blend)&&(o||(Yh(t,r),o=!0),t.globalCompositeOperation=e.blend||gm.blend);for(var s=0;so;o++){var l=i[o];l.beforeBrush&&l.beforeBrush(),l.innerBeforeBrush(),jh(t,l,s,o===a-1),l.innerAfterBrush(),l.afterBrush&&l.afterBrush(),s.prevEl=l}for(var u=0,h=r.length;h>u;u++){var l=r[u];l.beforeBrush&&l.beforeBrush(),l.innerBeforeBrush(),jh(t,l,s,u===h-1),l.innerAfterBrush(),l.afterBrush&&l.afterBrush(),s.prevEl=l}e.clearTemporalDisplayables(),e.notClear=!0,t.restore()}function $h(t,e){function n(t){function e(){for(var t=1,e=0,n=m.length;n>e;++e)t=Ni(t,m[e]);for(var i=1,e=0,n=y.length;n>e;++e)i=Ni(i,y[e].length);t*=i;var r=_*m.length*y.length;return{width:Math.max(1,Math.min(t,s.maxTileWidth)),height:Math.max(1,Math.min(r,s.maxTileHeight))}}function n(){function t(t,e,n,a,l){var u=o?1:i,h=Mh(l,t*u,e*u,n*u,a*u,s.color,s.symbolKeepAspect);o?w.appendChild(r.painter.paintOne(h)):qh(d,h)}d&&(d.clearRect(0,0,x.width,x.height),s.backgroundColor&&(d.fillStyle=s.backgroundColor,d.fillRect(0,0,x.width,x.height)));for(var e=0,n=0;n=e))for(var a=-_,l=0,u=0,h=0;a=S)break;if(f%2===0){var M=.5*(1-s.symbolSize),T=p+g[h][f]*M,C=a+v[l]*M,I=g[h][f]*s.symbolSize,D=v[l]*s.symbolSize,k=m/2%y[c].length;t(T,C,I,D,y[c][k])}p+=g[h][f],++m,++f,f===g[h].length&&(f=0)}++h,h===g.length&&(h=0)}a+=v[l],++u,++l,l===v.length&&(l=0)}}for(var a=[i],l=!0,u=0;u0?parseInt(i,10)/100:i?parseFloat(i):0;var o={};gc(n,o,o);var a=o.stopColor||n.getAttribute("stop-color")||"#000000";e.colorStops.push({offset:r,color:a})}n=n.nextSibling}}function sc(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),c(e.__inheritedStyle,t.__inheritedStyle))}function lc(t){for(var e=fc(t),n=[],i=0;i0;o-=2){var a=i[o],s=i[o-1],l=fc(a);switch(r=r||Vn(),s){case"translate":Un(r,r,[parseFloat(l[0]),parseFloat(l[1]||"0")]);break;case"scale":Yn(r,r,[parseFloat(l[0]),parseFloat(l[1]||l[0])]);break;case"rotate":Xn(r,r,-parseFloat(l[0])*dM);break;case"skewX":var u=Math.tan(parseFloat(l[0])*dM);Gn(r,[1,0,u,1,0,0],r);break;case"skewY":var h=Math.tan(parseFloat(l[0])*dM);Gn(r,[1,h,0,1,0,0],r);break;case"matrix":r[0]=parseFloat(l[0]),r[1]=parseFloat(l[1]),r[2]=parseFloat(l[2]),r[3]=parseFloat(l[3]),r[4]=parseFloat(l[4]),r[5]=parseFloat(l[5])}}e.setLocalTransform(r)}}function gc(t,e,n){var i=t.getAttribute("style");if(i){gM.lastIndex=0;for(var r;null!=(r=gM.exec(i));){var o=r[1],a=j(oM,o)?oM[o]:null;a&&(e[a]=r[2]);var s=j(sM,o)?sM[o]:null;s&&(n[s]=r[2])}}}function vc(t,e,n){for(var i=0;i>1^-(1&s),l=l>>1^-(1&l),s+=r,l+=o,r=s,o=l,i.push([s/n,l/n])}return i}function Tc(t,e){return t=Sc(t),y(_(t.features,function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0}),function(t){var n=t.properties,i=t.geometry,r=[];if("Polygon"===i.type){var o=i.coordinates;r.push({type:"polygon",exterior:o[0],interiors:o.slice(1)})}if("MultiPolygon"===i.type){var o=i.coordinates;v(o,function(t){t[0]&&r.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})})}var a=new _M(n[e||"name"],r,n.cp);return a.properties=n,a})}function Cc(t,e){if("china"===t){for(var n=0;n=0)){ZT.push(n);var o=SS.wrapStageHandler(n,r);o.__prio=e,o.__raw=n,t.push(o)}}function Qc(t,e){VT[t]=e}function tp(t){r("createCanvas",t)}function ep(t,e,n){LM.registerMap(t,e,n)}function np(t){return LM.getMapForUser(t)}function ip(t){return null==t?0:t.length||1}function rp(t){return t}function op(t,e){var n={},i=n.encode={},r=Y(),o=[],a=[],s={};v(t.dimensions,function(e){var n=t.getDimensionInfo(e),l=n.coordDim;if(l){var u=n.coordDimIndex;ap(i,l)[u]=e,n.isExtraCoord||(r.set(l,1),lp(n.type)&&(o[0]=e),ap(s,l)[u]=t.getDimensionIndex(n.name)),n.defaultTooltip&&a.push(e)}Qw.each(function(t,e){var r=ap(i,e),o=n.otherDims[e];null!=o&&o!==!1&&(r[o]=n.name)})});var l=[],u={};r.each(function(t,e){var n=i[e];u[e]=n[0],l=l.concat(n)}),n.dataDimsOnCoord=l,n.dataDimIndicesOnCoord=y(l,function(e){return t.getDimensionInfo(e).storeDimIndex}),n.encodeFirstDimNotExtra=u;var h=i.label;h&&h.length&&(o=h.slice());var c=i.tooltip;return c&&c.length?a=c.slice():a.length||(a=o.slice()),i.defaultedLabel=o,i.defaultedTooltip=a,n.userOutput=new rC(s,e),n}function ap(t,e){return t.hasOwnProperty(e)||(t[e]=[]),t[e]}function sp(t){return"category"===t?"ordinal":"time"===t?"time":"float"}function lp(t){return!("ordinal"===t||"time"===t)}function up(t){return t instanceof lC}function hp(t){for(var e=Y(),n=0;n<(t||[]).length;n++){var i=t[n],r=k(i)?i.name:i;null!=r&&null==e.get(r)&&e.set(r,n)}return e}function cp(t){var e=aC(t);return e.dimNameMap||(e.dimNameMap=hp(t.dimensionsDefine))}function pp(t){return t>30}function fp(t,e){return dp(t,e).dimensions}function dp(t,e){function n(t){var e=m[t];if(0>e){var n=a[t],i=k(n)?n:{name:n},r=new oC,o=i.name;null!=o&&null!=d.get(o)&&(r.name=r.displayName=o),null!=i.type&&(r.type=i.type),null!=i.displayName&&(r.displayName=i.displayName);var s=l.length;return m[t]=s,r.storeDimIndex=t,l.push(r),r}return l[e]}function i(t,e,n){null!=Qw.get(e)?t.otherDims[e]=n:(t.coordDim=e,t.coordDimIndex=n,s.set(e,!0))}function r(t){null==t.name&&(t.name=t.coordDim)}ou(t)||(t=su(t)),e=e||{};var o=e.coordDimensions||[],a=e.dimensionsDefine||t.dimensionsDefine||[],s=Y(),l=[],u=vp(t,o,a,e.dimensionsCount),p=e.canOmitUnusedDimensions&&pp(u),f=a===t.dimensionsDefine,d=f?cp(t):hp(a),g=e.encodeDefine;!g&&e.encodeDefaulter&&(g=e.encodeDefaulter(t,u));for(var y=Y(g),m=new Jb(u),_=0;__;_++)n(_);y.each(function(t,e){var r=Hi(t).slice();if(1===r.length&&!C(r[0])&&r[0]<0)return void y.set(e,!1);var o=y.set(e,[]);v(r,function(t,r){var a=C(t)?d.get(t):t;null!=a&&u>a&&(o[r]=a,i(n(a),e,r))})});var x=0;v(o,function(t){var e,r,o,a;if(C(t))e=t,a={};else{a=t,e=a.name;var s=a.ordinalMeta;a.ordinalMeta=null,a=h({},a),a.ordinalMeta=s,r=a.dimsDef,o=a.otherDims,a.name=a.coordDim=a.coordDimIndex=a.dimsDef=a.otherDims=null }var l=y.get(e);if(l!==!1){if(l=Hi(l),!l.length)for(var p=0;p<(r&&r.length||1);p++){for(;u>x&&null!=n(x).coordDim;)x++;u>x&&l.push(x++)}v(l,function(t,s){var l=n(t);if(f&&null!=a.type&&(l.type=a.type),i(c(l,a),e,s),null==l.name&&r){var u=r[s];!k(u)&&(u={name:u}),l.name=l.displayName=u.name,l.defaultTooltip=u.defaultTooltip}o&&c(l.otherDims,o)})}});var w=e.generateCoord,b=e.generateCoordCount,S=null!=b;b=w?b||1:0;var M=w||"value";if(p)v(l,function(t){r(t)}),l.sort(function(t,e){return t.storeDimIndex-e.storeDimIndex});else for(var T=0;u>T;T++){var I=n(T),D=I.coordDim;null==D&&(I.coordDim=yp(M,s,S),I.coordDimIndex=0,(!w||0>=b)&&(I.isExtraCoord=!0),b--),r(I),null!=I.type||Ml(t,T)!==lb.Must&&(!I.isExtraCoord||null==I.otherDims.itemName&&null==I.otherDims.seriesName)||(I.type="ordinal")}return gp(l),new lC({source:t,dimensions:l,fullDimensionCount:u,dimensionOmitted:p})}function gp(t){for(var e=Y(),n=0;n0&&(i.name=r+(o-1)),o++,e.set(r,o)}}function vp(t,e,n,i){var r=Math.max(t.dimensionsDetectedCount||1,e.length,n.length,i||0);return v(e,function(t){var e;k(t)&&(e=t.dimsDef)&&(r=Math.max(r,e.length))}),r}function yp(t,e,n){var i=e.data;if(n||i.hasOwnProperty(t)){for(var r=0;i.hasOwnProperty(t+r);)r++;t+=r}return e.set(t,!0),t}function mp(t){var e=t.get("coordinateSystem"),n=new yC(e),i=mC[e];return i?(i(t,n,n.axisMap,n.categoryAxisMap),n):void 0}function _p(t){return"category"===t.get("type")}function xp(t,e,n){n=n||{};var i,r,o,a=n.byIndex,s=n.stackedCoordDimension;wp(e)?i=e:(r=e.schema,i=r.dimensions,o=e.store);var l,u,h,c,p=!(!t||!t.get("stack"));if(v(i,function(t,e){C(t)&&(i[e]=t={name:t}),p&&!t.isExtraCoord&&(a||l||!t.ordinalMeta||(l=t),u||"ordinal"===t.type||"time"===t.type||s&&s!==t.coordDim||(u=t))}),!u||a||l||(a=!0),u){h="__\x00ecstackresult_"+t.id,c="__\x00ecstackedover_"+t.id,l&&(l.createInvertedIndices=!0);var f=u.coordDim,d=u.type,g=0;v(i,function(t){t.coordDim===f&&g++});var y={name:h,coordDim:f,coordDimIndex:g,type:d,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length},m={name:c,coordDim:c,coordDimIndex:g+1,type:d,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length+1};r?(o&&(y.storeDimIndex=o.ensureCalculationDimension(c,d),m.storeDimIndex=o.ensureCalculationDimension(h,d)),r.appendCalculationDimension(y),r.appendCalculationDimension(m)):(i.push(y),i.push(m))}return{stackedDimension:u&&u.name,stackedByDimension:l&&l.name,isStackedByIndex:a,stackedOverDimension:c,stackResultDimension:h}}function wp(t){return!up(t.schema)}function bp(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function Sp(t,e){return bp(t,e)?t.getCalculationInfo("stackResultDimension"):e}function Mp(t,e){var n,i=t.get("coordinateSystem"),r=Tb.get(i);return e&&e.coordSysDims&&(n=y(e.coordSysDims,function(t){var n={name:t},i=e.axisMap.get(t);if(i){var r=i.get("type");n.type=sp(r)}return n})),n||(n=r&&(r.getDimensionsInfo?r.getDimensionsInfo():r.dimensions.slice())||["x","y"]),n}function Tp(t,e,n){var i,r;return n&&v(t,function(t,o){var a=t.coordDim,s=n.categoryAxisMap.get(a);s&&(null==i&&(i=o),t.ordinalMeta=s.getOrdinalMeta(),e&&(t.createInvertedIndices=!0)),null!=t.otherDims.itemName&&(r=!0)}),r||null==i||(t[i].otherDims.itemName=0),i}function Cp(t,e,n){n=n||{};var i,r=e.getSourceManager(),o=!1;t?(o=!0,i=su(t)):(i=r.getSource(),o=i.sourceFormat===tb);var a=mp(e),s=Mp(e,a),l=n.useEncodeDefaulter,u=T(l)?l:l?S(wl,s,e):null,h={coordDimensions:s,generateCoord:n.generateCoord,encodeDefine:e.getEncode(),encodeDefaulter:u,canOmitUnusedDimensions:!o},c=dp(i,h),p=Tp(c.dimensions,n.createInvertedIndices,a),f=o?null:r.getSharedDataStore(c),d=xp(e,{schema:c,store:f}),g=new vC(c,e);g.setCalculationInfo(d);var v=null!=p&&Ip(i)?function(t,e,n,i){return i===p?n:this.defaultDimValueGetter(t,e,n,i)}:null;return g.hasItemOption=!1,g.initData(o?i:f,null,v),g}function Ip(t){if(t.sourceFormat===tb){var e=Dp(t.data||[]);return null!=e&&!M(Gi(e))}}function Dp(t){for(var e=0;ea&&(a=r.interval=n),null!=i&&a>i&&(a=r.interval=i);var s=r.intervalPrecision=Op(a),l=r.niceTickExtent=[bC(Math.ceil(t[0]/a)*a,s),bC(Math.floor(t[1]/a)*a,s)];return Rp(l,t),r}function Op(t){return bi(t)+2}function Pp(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function Rp(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Pp(t,0,e),Pp(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Lp(t,e){return t>=e[0]&&t<=e[1]}function zp(t,e){return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])}function Ep(t,e){return t*(e[1]-e[0])+e[0]}function Bp(t){return t.get("stack")||CC+t.seriesIndex}function Fp(t){return t.dim+t.index}function Np(t,e){var n=[];return e.eachSeriesByType(t,function(t){Xp(t)&&!Yp(t)&&n.push(t)}),n}function Vp(t){var e={};v(t,function(t){var n=t.coordinateSystem,i=n.getBaseAxis();if("time"===i.type||"value"===i.type)for(var r=t.getData(),o=i.dim+"_"+i.index,a=r.getDimensionIndex(r.mapDimension(i.dim)),s=r.getStore(),l=0,u=s.count();u>l;++l){var h=s.get(a,l);e[o]?e[o].push(h):e[o]=[h]}});var n={};for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];if(r){r.sort(function(t,e){return t-e});for(var o=null,a=1;a0&&(o=null===o?s:Math.min(o,s))}n[i]=o}}return n}function Hp(t){var e=Vp(t),n=[];return v(t,function(t){var i,r=t.coordinateSystem,o=r.getBaseAxis(),a=o.getExtent();if("category"===o.type)i=o.getBandWidth();else if("value"===o.type||"time"===o.type){var s=o.dim+"_"+o.index,l=e[s],u=Math.abs(a[1]-a[0]),h=o.scale.getExtent(),c=Math.abs(h[1]-h[0]);i=l?u/c*l:u}else{var p=t.getData();i=Math.abs(a[1]-a[0])/p.count()}var f=_i(t.get("barWidth"),i),d=_i(t.get("barMaxWidth"),i),g=_i(t.get("barMinWidth")||1,i),v=t.get("barGap"),y=t.get("barCategoryGap");n.push({bandWidth:i,barWidth:f,barMaxWidth:d,barMinWidth:g,barGap:v,barCategoryGap:y,axisKey:Fp(o),stackId:Bp(t)})}),Wp(n)}function Wp(t){var e={};v(t,function(t){var n=t.axisKey,i=t.bandWidth,r=e[n]||{bandWidth:i,remainedWidth:i,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},o=r.stacks;e[n]=r;var a=t.stackId;o[a]||r.autoWidthCount++,o[a]=o[a]||{width:0,maxWidth:0};var s=t.barWidth;s&&!o[a].width&&(o[a].width=s,s=Math.min(r.remainedWidth,s),r.remainedWidth-=s);var l=t.barMaxWidth;l&&(o[a].maxWidth=l);var u=t.barMinWidth;u&&(o[a].minWidth=u);var h=t.barGap;null!=h&&(r.gap=h);var c=t.barCategoryGap;null!=c&&(r.categoryGap=c)});var n={};return v(e,function(t,e){n[e]={};var i=t.stacks,r=t.bandWidth,o=t.categoryGap;if(null==o){var a=w(i).length;o=Math.max(35-4*a,15)+"%"}var s=_i(o,r),l=_i(t.gap,1),u=t.remainedWidth,h=t.autoWidthCount,c=(u-s)/(h+(h-1)*l);c=Math.max(c,0),v(i,function(t){var e=t.maxWidth,n=t.minWidth;if(t.width){var i=t.width;e&&(i=Math.min(i,e)),n&&(i=Math.max(i,n)),t.width=i,u-=i+l*i,h--}else{var i=c;e&&i>e&&(i=Math.min(e,u)),n&&n>i&&(i=n),i!==c&&(t.width=i,u-=i+l*i,h--)}}),c=(u-s)/(h+(h-1)*l),c=Math.max(c,0);var p,f=0;v(i,function(t){t.width||(t.width=c),p=t,f+=t.width*(1+l)}),p&&(f-=p.width*l);var d=-f/2;v(i,function(t,i){n[e][i]=n[e][i]||{bandWidth:r,offset:d,width:t.width},d+=t.width*(1+l)})}),n}function Gp(t,e,n){if(t&&e){var i=t[Fp(e)];return null!=i&&null!=n?i[Bp(n)]:i}}function Up(t,e){var n=Np(t,e),i=Hp(n),r={};v(n,function(t){var e=t.getData(),n=t.coordinateSystem,o=n.getBaseAxis(),a=Bp(t),s=i[Fp(o)][a],l=s.offset,u=s.width,h=n.getOtherAxis(o),c=t.get("barMinHeight")||0;r[a]=r[a]||[],e.setLayout({bandWidth:s.bandWidth,offset:l,size:u});for(var p=e.mapDimension(h.dim),f=e.mapDimension(o.dim),d=bp(e,p),g=h.isHorizontal(),v=Zp(o,h,d),y=e.getStore(),m=e.getDimensionIndex(p),_=e.getDimensionIndex(f),x=0,w=y.count();w>x;x++){var b=y.get(m,x),S=y.get(_,x),M=b>=0?"p":"n",T=v;d&&(r[a][S]||(r[a][S]={p:v,n:v}),T=r[a][S][M]);var C=void 0,I=void 0,D=void 0,k=void 0;if(g){var A=n.dataToPoint([b,S]);C=T,I=A[1]+l,D=A[0]-v,k=u,Math.abs(D)D?-1:1)*c),isNaN(D)||d&&(r[a][S][M]+=D)}else{var A=n.dataToPoint([S,b]);C=A[0]+l,I=T,D=u,k=A[1]-v,Math.abs(k)=k?-1:1)*c),isNaN(k)||d&&(r[a][S][M]+=k)}e.setItemLayout(x,{x:C,y:I,width:D,height:k})}})}function Xp(t){return t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type}function Yp(t){return t.pipelineContext&&t.pipelineContext.large}function Zp(t,e){return e.toGlobalCoord(e.dataToCoord("log"===e.type?1:0))}function qp(t,e,n,i){var r=ki(e),o=ki(n),a=function(t){return Ws(r,t,i)===Ws(o,t,i)},s=function(){return a("year")},l=function(){return s()&&a("month")},u=function(){return l()&&a("day")},h=function(){return u()&&a("hour")},c=function(){return h()&&a("minute")},p=function(){return c()&&a("second")},f=function(){return p()&&a("millisecond")};switch(t){case"year":return s();case"month":return l();case"day":return u();case"hour":return h();case"minute":return c();case"second":return p();case"millisecond":return f()}}function jp(t){return t/=Aw,t>16?16:t>7.5?7:t>3.5?4:t>1.5?2:1}function Kp(t){var e=30*Aw;return t/=e,t>6?6:t>3?3:t>2?2:1}function $p(t){return t/=kw,t>12?12:t>6?6:t>3.5?4:t>2?2:1}function Jp(t,e){return t/=e?Dw:Iw,t>30?30:t>20?20:t>15?15:t>10?10:t>5?5:t>2?2:1}function Qp(t){return Pi(t,!0)}function tf(t,e,n){var i=new Date(t);switch(Es(e)){case"year":case"month":i[$s(n)](0);case"day":i[Js(n)](1);case"hour":i[Qs(n)](0);case"minute":i[tl(n)](0);case"second":i[el(n)](0),i[nl(n)](0)}return i.getTime()}function ef(t,e,n,i){function r(t,e,n,r,o,a,s){for(var l=new Date(e),u=e,h=l[r]();n>u&&u<=i[1];)s.push({value:u}),h+=t,l[o](h),u=l.getTime();s.push({value:u,notAdd:!0})}function o(t,o,a){var s=[],l=!o.length;if(!qp(Es(t),i[0],i[1],n)){l&&(o=[{value:tf(new Date(i[0]),t,n)},{value:i[1]}]);for(var u=0;u1&&0===u&&a.unshift({value:a[0].value-p})}}for(var u=0;u=i[0]&&x<=i[1]&&c++)}var w=(i[1]-i[0])/e;if(c>1.5*w&&p>w/1.5)break;if(u.push(v),c>w||t===s[f])break}h=[]}}}for(var b=_(y(u,function(t){return _(t,function(t){return t.value>=i[0]&&t.value<=i[1]&&!t.notAdd})}),function(t){return t.length>0}),S=[],M=b.length-1,f=0;ft[1]&&(t[1]=i[1])})}function vf(t){return Cp(null,t)}function yf(t,e){var n=e;e instanceof yw||(n=new yw(e));var i=uf(n);return i.setExtent(t[0],t[1]),lf(i,n),i}function mf(t){d(t,XC)}function _f(t,e){return e=e||{},_s(t,null,null,"normal"!==e.state)}function xf(t){return M(t)?void v(t,function(t){xf(t)}):void(p(qC,t)>=0||(qC.push(t),T(t)&&(t={install:t}),t.install(jC)))}function wf(t){return"category"===t.type?Sf(t):Cf(t)}function bf(t,e){return"category"===t.type?Tf(t,e):{ticks:y(t.scale.getTicks(),function(t){return t.value})}}function Sf(t){var e=t.getLabelModel(),n=Mf(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}function Mf(t,e){var n=If(t,"labels"),i=pf(e),r=Df(n,i);if(r)return r;var o,a;return T(i)?o=Lf(t,i):(a="auto"===i?Af(t):i,o=Rf(t,a)),kf(n,i,{labels:o,labelCategoryInterval:a})}function Tf(t,e){var n=If(t,"ticks"),i=pf(e),r=Df(n,i);if(r)return r;var o,a;if((!e.get("show")||t.scale.isBlank())&&(o=[]),T(i))o=Lf(t,i,!0);else if("auto"===i){var s=Mf(t,t.getLabelModel());a=s.labelCategoryInterval,o=y(s.labels,function(t){return t.tickValue})}else a=i,o=Rf(t,a,!0);return kf(n,i,{ticks:o,tickCategoryInterval:a})}function Cf(t){var e=t.scale.getTicks(),n=hf(t);return{labels:y(e,function(e,i){return{level:e.level,formattedLabel:n(e,i),rawLabel:t.scale.getLabel(e),tickValue:e.value}})}}function If(t,e){return eI(t)[e]||(eI(t)[e]=[])}function Df(t,e){for(var n=0;n40&&(s=Math.max(1,Math.floor(a/40)));for(var l=o[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(i)),c=Math.abs(u*Math.sin(i)),p=0,f=0;l<=o[1];l+=s){var d=0,g=0,v=Qn(n({value:l}),e.font,"center","top");d=1.3*v.width,g=1.3*v.height,p=Math.max(p,d,7),f=Math.max(f,g,7)}var y=p/h,m=f/c;isNaN(y)&&(y=1/0),isNaN(m)&&(m=1/0);var _=Math.max(0,Math.floor(Math.min(y,m))),x=eI(t.model),w=t.getExtent(),b=x.lastAutoInterval,S=x.lastTickCount;return null!=b&&null!=S&&Math.abs(b-_)<=1&&Math.abs(S-a)<=1&&b>_&&x.axisExtent0===w[0]&&x.axisExtent1===w[1]?_=b:(x.lastTickCount=a,x.lastAutoInterval=_,x.axisExtent0=w[0],x.axisExtent1=w[1]),_}function Pf(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 Rf(t,e,n){function i(t){var e={value:t};l.push(n?t:{formattedLabel:r(e),rawLabel:o.getLabel(e),tickValue:t})}var r=hf(t),o=t.scale,a=o.getExtent(),s=t.getLabelModel(),l=[],u=Math.max((e||0)+1,1),h=a[0],c=o.count();0!==h&&u>1&&c/u>2&&(h=Math.round(Math.ceil(h/u)*u));var p=ff(t),f=s.get("showMinLabel")||p,d=s.get("showMaxLabel")||p;f&&h!==a[0]&&i(a[0]);for(var g=h;g<=a[1];g+=u)i(g);return d&&g-u!==a[1]&&i(a[1]),l}function Lf(t,e,n){var i=t.scale,r=hf(t),o=[];return v(i.getTicks(),function(t){var a=i.getLabel(t),s=t.value;e(t.value,a)&&o.push(n?s:{formattedLabel:r(t),rawLabel:a,tickValue:s})}),o}function zf(t,e){var n=t[1]-t[0],i=e,r=n/i/2;t[0]+=r,t[1]-=r}function Ef(t,e,n,i){function r(t,e){return t=xi(t),e=xi(e),p?t>e:e>t}var o=e.length;if(t.onBand&&!n&&o){var a,s,l=t.getExtent();if(1===o)e[0].coord=l[0],a=e[1]={coord:l[0]};else{var u=e[o-1].tickValue-e[0].tickValue,h=(e[o-1].coord-e[0].coord)/u;v(e,function(t){t.coord-=h/2});var c=t.scale.getExtent();s=1+c[1]-e[o-1].tickValue,a={coord:e[o-1].coord+h*s},e.push(a)}var p=l[0]>l[1];r(e[0].coord,l[0])&&(i?e[0].coord=l[0]:e.shift()),i&&r(l[0],e[0].coord)&&e.unshift({coord:l[0]}),r(l[1],a.coord)&&(i?a.coord=l[1]:e.pop()),i&&r(a.coord,l[1])&&e.push({coord:l[1]})}}function Bf(t){var e=Zw.extend(t);return Zw.registerClass(e),e}function Ff(t){var e=aS.extend(t);return aS.registerClass(e),e}function Nf(t){var e=oS.extend(t);return oS.registerClass(e),e}function Vf(t){var e=uS.extend(t);return uS.registerClass(e),e}function Hf(t,e,n,i,r){var o=n.width,a=n.height;switch(t){case"top":i.set(n.x+o/2,n.y-e),r.set(0,-1);break;case"bottom":i.set(n.x+o/2,n.y+a+e),r.set(0,1);break;case"left":i.set(n.x-e,n.y+a/2),r.set(-1,0);break;case"right":i.set(n.x+o+e,n.y+a/2),r.set(1,0)}}function Wf(t,e,n,i,r,o,a,s,l){a-=t,s-=e;var u=Math.sqrt(a*a+s*s);a/=u,s/=u;var h=a*n+t,c=s*n+e;if(Math.abs(i-r)%rI<1e-4)return l[0]=h,l[1]=c,u-n;if(o){var p=i;i=co(r),r=co(p)}else i=co(i),r=co(r);i>r&&(r+=rI);var f=Math.atan2(s,a);if(0>f&&(f+=rI),f>=i&&r>=f||f+rI>=i&&r>=f+rI)return l[0]=h,l[1]=c,u-n;var d=n*Math.cos(i)+t,g=n*Math.sin(i)+e,v=n*Math.cos(r)+t,y=n*Math.sin(r)+e,m=(d-a)*(d-a)+(g-s)*(g-s),_=(v-a)*(v-a)+(y-s)*(y-s);return _>m?(l[0]=d,l[1]=g,Math.sqrt(m)):(l[0]=v,l[1]=y,Math.sqrt(_))}function Gf(t,e,n,i,r,o,a,s){var l=r-t,u=o-e,h=n-t,c=i-e,p=Math.sqrt(h*h+c*c);h/=p,c/=p;var f=l*h+u*c,d=f/p;s&&(d=Math.min(Math.max(d,0),1)),d*=p;var g=a[0]=t+d*h,v=a[1]=e+d*c;return Math.sqrt((g-r)*(g-r)+(v-o)*(v-o))}function Uf(t,e,n,i,r,o,a){0>n&&(t+=n,n=-n),0>i&&(e+=i,i=-i);var s=t+n,l=e+i,u=a[0]=Math.min(Math.max(r,t),s),h=a[1]=Math.min(Math.max(o,e),l);return Math.sqrt((u-r)*(u-r)+(h-o)*(h-o))}function Xf(t,e,n){var i=Uf(e.x,e.y,e.width,e.height,t.x,t.y,sI);return n.set(sI[0],sI[1]),i}function Yf(t,e,n){for(var i,r,o=0,a=0,s=0,l=0,u=1/0,h=e.data,c=t.x,p=t.y,f=0;f=f&&(s=i,l=r);var S=(c-v)*_/m+v;g=Wf(v,y,_,x,x+w,b,S,p,sI),o=Math.cos(x+w)*m+v,a=Math.sin(x+w)*_+y;break;case oI.R:s=o=h[f++],l=a=h[f++];var M=h[f++],T=h[f++];g=Uf(s,l,M,T,c,p,sI);break;case oI.Z:g=Gf(o,a,s,l,c,p,sI,!0),o=s,a=l}u>g&&(u=g,n.set(sI[0],sI[1]))}return u}function Zf(t,e){if(t){var n=t.getTextGuideLine(),i=t.getTextContent();if(i&&n){var r=t.textGuideLineConfig||{},o=[[0,0],[0,0],[0,0]],a=r.candidates||aI,s=i.getBoundingRect().clone();s.applyTransform(i.getComputedTransform());var l=1/0,u=r.anchor,h=t.getComputedTransform(),c=h&&Zn([],h),p=e.get("length2")||0;u&&hI.copy(u);for(var f=0;fv&&(l=v,uI.transform(h),hI.transform(h),hI.toArray(o[0]),uI.toArray(o[1]),lI.toArray(o[2]))}qf(o,e.get("minTurnAngle")),n.setShape({points:o})}}}function qf(t,e){if(180>=e&&e>0){e=e/180*Math.PI,lI.fromArray(t[0]),uI.fromArray(t[1]),hI.fromArray(t[2]),_y.sub(cI,lI,uI),_y.sub(pI,hI,uI);var n=cI.len(),i=pI.len();if(!(.001>n||.001>i)){cI.scale(1/n),pI.scale(1/i);var r=cI.dot(pI),o=Math.cos(e);if(r>o){var a=Gf(uI.x,uI.y,hI.x,hI.y,lI.x,lI.y,fI,!1);dI.fromArray(fI),dI.scaleAndAdd(pI,a/Math.tan(Math.PI-e));var s=hI.x!==uI.x?(dI.x-uI.x)/(hI.x-uI.x):(dI.y-uI.y)/(hI.y-uI.y);if(isNaN(s))return;0>s?_y.copy(dI,uI):s>1&&_y.copy(dI,hI),dI.toArray(t[1])}}}}function jf(t,e,n,i){var r="normal"===n,o=r?t:t.ensureState(n);o.ignore=e;var a=i.get("smooth");a&&a===!0&&(a=.3),o.shape=o.shape||{},a>0&&(o.shape.smooth=a);var s=i.getModel("lineStyle").getLineStyle();r?t.useStyle(s):o.style=s}function Kf(t,e){var n=e.smooth,i=e.points;if(i)if(t.moveTo(i[0][0],i[0][1]),n>0&&i.length>=3){var r=nv(i[0],i[1]),o=nv(i[1],i[2]);if(!r||!o)return t.lineTo(i[1][0],i[1][1]),void t.lineTo(i[2][0],i[2][1]);var a=Math.min(r,o)*n,s=de([],i[1],i[0],a/r),l=de([],i[1],i[2],a/o),u=de([],s,l,.5);t.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),t.bezierCurveTo(l[0],l[1],l[0],l[1],i[2][0],i[2][1])}else for(var h=1;ht){var i=Math.min(e,-t);if(i>0){l(i*n,0,c);var r=i+t;0>r&&u(-r*n,1)}else u(-t*n,1)}}function l(n,i,r){0!==n&&(d=!0);for(var o=i;r>o;o++){var a=t[o],s=a.rect;s[e]+=n,a.label[e]+=n}}function u(i,r){for(var o=[],a=0,s=1;c>s;s++){var u=t[s-1].rect,h=Math.max(t[s].rect[e]-u[e]-u[n],0);o.push(h),a+=h}if(a){var p=Math.min(Math.abs(i)/a,r);if(i>0)for(var s=0;c-1>s;s++){var f=o[s]*p;l(f,0,s+1)}else for(var s=c-1;s>0;s--){var f=o[s-1]*p;l(-f,s,c)}}}function h(t){var e=0>t?-1:1;t=Math.abs(t);for(var n=Math.ceil(t/(c-1)),i=0;c-1>i;i++)if(e>0?l(n,0,i+1):l(-n,c-i-1,c),t-=n,0>=t)return}var c=t.length;if(!(2>c)){t.sort(function(t,n){return t.rect[e]-n.rect[e]});for(var p,f=0,d=!1,g=[],v=0,y=0;c>y;y++){var m=t[y],_=m.rect;p=_[e]-f,0>p&&(_[e]-=p,m.label[e]-=p,d=!0);var x=Math.max(-p,0);g.push(x),v+=x,f=_[e]+_[n]}v>0&&o&&l(-v/c,0,c);var w,b,S=t[0],M=t[c-1];return a(),0>w&&u(-w,.8),0>b&&u(b,.8),a(),s(w,b,1),s(b,w,-1),a(),0>w&&h(-w),0>b&&h(b),d}}function ed(t,e,n,i){return td(t,"x","width",e,n,i)}function nd(t,e,n,i){return td(t,"y","height",e,n,i)}function id(t){function e(t){if(!t.ignore){var e=t.ensureState("emphasis");null==e.ignore&&(e.ignore=!1)}t.ignore=!0}var n=[];t.sort(function(t,e){return e.priority-t.priority});for(var i=new Dy(0,0,0,0),r=0;r10&&"cartesian2d"===o.type&&r){var s=o.getBaseAxis(),l=o.getOtherAxis(s),u=s.getExtent(),h=n.getDevicePixelRatio(),c=Math.abs(u[1]-u[0])*(h||1),p=Math.round(a/c);if(p>1){"lttb"===r&&t.setData(i.lttbDownSample(i.mapDimension(l.dim),1/p));var f=void 0;"string"==typeof r?f=AI[r]:"function"==typeof r&&(f=r),f&&t.setData(i.downSample(i.mapDimension(l.dim),1/p,f,OI))}}}}}function vd(t,e,n,i,r){var o=t.getArea(),a=o.x,s=o.y,l=o.width,u=o.height,h=n.get(["lineStyle","width"])||2;a-=h/2,s-=h/2,l+=h,u+=h,a=Math.floor(a),l=Math.round(l);var c=new M_({shape:{x:a,y:s,width:l,height:u}});if(e){var p=t.getBaseAxis(),f=p.isHorizontal(),d=p.inverse;f?(d&&(c.shape.x+=l),c.shape.width=0):(d||(c.shape.y+=u),c.shape.height=0);var g="function"==typeof r?function(t){r(t,c)}:null;qa(c,{shape:{width:l,height:u,x:a,y:s}},n,null,i,g)}return c}function yd(t,e,n){var i=t.getArea(),r=xi(i.r0,1),o=xi(i.r,1),a=new Tx({shape:{cx:xi(t.cx,1),cy:xi(t.cy,1),r0:r,r:o,startAngle:i.startAngle,endAngle:i.endAngle,clockwise:i.clockwise}});if(e){var s="angle"===t.getBaseAxis().dim;s?a.shape.endAngle=i.startAngle:a.shape.r=r,qa(a,{shape:{endAngle:i.endAngle,r:o}},n)}return a}function md(t,e,n,i,r){return t?"polar"===t.type?yd(t,e,n):"cartesian2d"===t.type?vd(t,e,n,i,r):null:null}function _d(t,e){return t.type===e}function xd(t,e){var n=t.mapDimensionsAll("defaultedLabel"),i=n.length;if(1===i){var r=_u(t,e,n[0]);return null!=r?r+"":null}if(i){for(var o=[],a=0;a=0&&i.push(e[o])}return i.join(" ")}function bd(t,e){e=e||{};var n=e.isRoundCap;return function(e,i,r){var o=i.position;if(!o||o instanceof Array)return ri(e,i,r);var a=t(o),s=null!=i.distance?i.distance:5,l=this.shape,u=l.cx,h=l.cy,c=l.r,p=l.r0,f=(c+p)/2,d=l.startAngle,g=l.endAngle,v=(d+g)/2,y=n?Math.abs(c-p)/2:0,m=Math.cos,_=Math.sin,x=u+c*m(d),w=h+c*_(d),b="left",S="top";switch(a){case"startArc":x=u+(p-s)*m(v),w=h+(p-s)*_(v),b="center",S="top";break;case"insideStartArc":x=u+(p+s)*m(v),w=h+(p+s)*_(v),b="center",S="bottom";break;case"startAngle":x=u+f*m(d)+Md(d,s+y,!1),w=h+f*_(d)+Td(d,s+y,!1),b="right",S="middle";break;case"insideStartAngle":x=u+f*m(d)+Md(d,-s+y,!1),w=h+f*_(d)+Td(d,-s+y,!1),b="left",S="middle";break;case"middle":x=u+f*m(v),w=h+f*_(v),b="center",S="middle";break;case"endArc":x=u+(c+s)*m(v),w=h+(c+s)*_(v),b="center",S="bottom";break;case"insideEndArc":x=u+(c-s)*m(v),w=h+(c-s)*_(v),b="center",S="top";break;case"endAngle":x=u+f*m(g)+Md(g,s+y,!0),w=h+f*_(g)+Td(g,s+y,!0),b="left",S="middle";break;case"insideEndAngle":x=u+f*m(g)+Md(g,-s+y,!0),w=h+f*_(g)+Td(g,-s+y,!0),b="right",S="middle";break;default:return ri(e,i,r)}return e=e||{},e.x=x,e.y=w,e.align=b,e.verticalAlign=S,e}}function Sd(t,e,n,i){if("number"==typeof i)return void t.setTextConfig({rotation:i});if(M(e))return void t.setTextConfig({rotation:0});var r,o=t.shape,a=o.clockwise?o.startAngle:o.endAngle,s=o.clockwise?o.endAngle:o.startAngle,l=(a+s)/2,u=n(e);switch(u){case"startArc":case"insideStartArc":case"middle":case"insideEndArc":case"endArc":r=l;break;case"startAngle":case"insideStartAngle":r=a;break;case"endAngle":case"insideEndAngle":r=s;break;default:return void t.setTextConfig({rotation:0})}var h=1.5*Math.PI-r;"middle"===u&&h>Math.PI/2&&h<1.5*Math.PI&&(h-=Math.PI),t.setTextConfig({rotation:h})}function Md(t,e,n){return e*Math.sin(t)*(n?-1:1)}function Td(t,e,n){return e*Math.cos(t)*(n?1:-1)}function Cd(t,e){var n=t.getArea&&t.getArea();if(_d(t,"cartesian2d")){var i=t.getBaseAxis();if("category"!==i.type||!i.onBand){var r=e.getLayout("bandWidth");i.isHorizontal()?(n.x-=r,n.width+=2*r):(n.y-=r,n.height+=2*r)}}return n}function Id(t,e){var n=t.get("realtimeSort",!0),i=e.getBaseAxis();return n&&"category"===i.type&&"cartesian2d"===e.type?{baseAxis:i,otherAxis:e.getOtherAxis(i)}:void 0}function Dd(t,e,n,i,r,o,a,s){var l,u;o?(u={x:i.x,width:i.width},l={y:i.y,height:i.height}):(u={y:i.y,height:i.height},l={x:i.x,width:i.width}),s||(a?Za:qa)(n,{shape:l},e,r,null);var h=e?t.baseAxis.model:null;(a?Za:qa)(n,{shape:u},h,r)}function kd(t,e){for(var n=0;n=r.r0?"endArc":"startArc":r.endAngle>=r.startAngle?"endAngle":"startAngle":a?r.height>=0?"bottom":"top":r.width>=0?"right":"left",c=ms(i);ys(t,c,{labelFetcher:o,labelDataIndex:n,defaultText:xd(o.getData(),n),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:h});var p=t.getTextContent();if(s&&p){var f=i.get(["label","position"]);t.textConfig.inside="middle"===f?!0:null,Sd(t,"outside"===f?h:f,Od(a),i.get(["label","rotate"]))}Ts(p,c,o.getRawValue(n),function(t){return wd(e,t)});var d=i.getModel(["emphasis"]);ya(t,d.get("focus"),d.get("blurScope")),_a(t,i),Ad(r)&&(t.style.fill="none",t.style.stroke="none",v(t.states,function(t){t.style&&(t.style.fill=t.style.stroke="none")}))}function Rd(t,e){var n=t.get(["itemStyle","borderColor"]);if(!n||"none"===n)return 0;var i=t.get(["itemStyle","borderWidth"])||0,r=isNaN(e.width)?Number.MAX_VALUE:Math.abs(e.width),o=isNaN(e.height)?Number.MAX_VALUE:Math.abs(e.height); return Math.min(i,r,o)}function Ld(t,e,n){var i=t.getData(),r=[],o=i.getLayout("valueAxisHorizontal")?1:0;r[1-o]=i.getLayout("valueAxisStart");var a=i.getLayout("largeDataIndices"),s=i.getLayout("barWidth"),l=t.getModel("backgroundStyle"),u=t.get("showBackground",!0);if(u){var h=i.getLayout("largeBackgroundPoints"),c=[];c[1-o]=i.getLayout("backgroundStart");var p=new ZI({shape:{points:h},incremental:!!n,silent:!0,z2:0});p.__startPoint=c,p.__baseDimIdx=o,p.__largeDataIndices=a,p.__barWidth=s,Bd(p,l,i),e.add(p)}var f=new ZI({shape:{points:i.getLayout("largePoints")},incremental:!!n});f.__startPoint=r,f.__baseDimIdx=o,f.__largeDataIndices=a,f.__barWidth=s,e.add(f),Ed(f,t,i),O_(f).seriesIndex=t.seriesIndex,t.get("silent")||(f.on("mousedown",qI),f.on("mousemove",qI))}function zd(t,e,n){var i=t.__baseDimIdx,r=1-i,o=t.shape.points,a=t.__largeDataIndices,s=Math.abs(t.__barWidth/2),l=t.__startPoint[r];EI[0]=e,EI[1]=n;for(var u=EI[i],h=EI[1-i],c=u-s,p=u+s,f=0,d=o.length/2;d>f;f++){var g=2*f,v=o[g+i],y=o[g+r];if(v>=c&&p>=v&&(y>=l?h>=l&&y>=h:h>=y&&l>=h))return a[f]}return-1}function Ed(t,e,n){var i=n.getVisual("style");t.useStyle(h({},i)),t.style.fill=null,t.style.stroke=i.fill,t.style.lineWidth=n.getLayout("barWidth")}function Bd(t,e,n){var i=e.get("borderColor")||e.get("color"),r=e.getItemStyle();t.useStyle(r),t.style.fill=null,t.style.stroke=i,t.style.lineWidth=n.getLayout("barWidth")}function Fd(t,e,n){if(_d(n,"cartesian2d")){var i=e,r=n.getArea();return{x:t?i.x:r.x,y:t?r.y:i.y,width:t?i.width:r.width,height:t?r.height:i.height}}var r=n.getArea(),o=e;return{cx:r.cx,cy:r.cy,r0:t?r.r0:o.r0,r:t?r.r:o.r,startAngle:t?o.startAngle:0,endAngle:t?o.endAngle:2*Math.PI}}function Nd(t,e,n){var i="polar"===t.type?Tx:M_;return new i({shape:Fd(e,n,t),silent:!0,z2:0})}function Vd(t){t.registerChartView(NI),t.registerSeriesModel(RI),t.registerLayout(t.PRIORITY.VISUAL.LAYOUT,S(Up,"bar")),t.registerLayout(t.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,kC),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,gd("bar")),t.registerAction({type:"changeAxisOrder",event:"changeAxisOrder",update:"update"},function(t,e){var n=t.componentType||"series";e.eachComponent({mainType:n,query:t},function(e){t.sortInfo&&e.axis.setCategorySortInfo(t.sortInfo)})})}function Hd(t){t.registerComponentModel(jI),t.registerComponentView(KI)}function Wd(t,e){var n=Bw(e.get("padding")),i=e.getItemStyle(["color","opacity"]);return i.fill=e.get("backgroundColor"),t=new M_({shape:{x:t.x-n[3],y:t.y-n[0],width:t.width+n[1]+n[3],height:t.height+n[0]+n[2],r:e.get("borderRadius")},style:i,silent:!0,z2:-1})}function Gd(t,e,n,i,r,o){function a(t,e){"auto"===t.lineWidth&&(t.lineWidth=e.lineWidth>0?2:0),tD(t,function(n,i){"inherit"===t[i]&&(t[i]=e[i])})}var s=e.getModel("itemStyle"),l=s.getItemStyle(),u=0===t.lastIndexOf("empty",0)?"fill":"stroke";l.decal=i.decal,"inherit"===l.fill&&(l.fill=i[r]),"inherit"===l.stroke&&(l.stroke=i[u]),"inherit"===l.opacity&&(l.opacity=("fill"===r?i:n).opacity),a(l,i);var h=e.getModel("lineStyle"),c=h.getLineStyle();if(a(c,n),"auto"===l.fill&&(l.fill=i.fill),"auto"===l.stroke&&(l.stroke=i.fill),"auto"===c.stroke&&(c.stroke=i.fill),!o){var p=e.get("inactiveBorderWidth"),f=l[u];l.lineWidth="auto"===p?i.lineWidth>0&&f?2:0:l.lineWidth,l.fill=e.get("inactiveColor"),l.stroke=e.get("inactiveBorderColor"),c.stroke=h.get("inactiveColor"),c.lineWidth=h.get("inactiveWidth")}return{itemStyle:l,lineStyle:c}}function Ud(t){var e=t.icon||"roundRect",n=Mh(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill,t.symbolKeepAspect);return n.setStyle(t.itemStyle),n.rotation=(t.iconRotate||0)*Math.PI/180,n.setOrigin([t.itemWidth/2,t.itemHeight/2]),e.indexOf("empty")>-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2),n}function Xd(t,e,n,i){qd(t,e,n,i),n.dispatchAction({type:"legendToggleSelect",name:null!=t?t:e}),Zd(t,e,n,i)}function Yd(t){for(var e,n=t.getZr().storage.getDisplayList(),i=0,r=n.length;r>i&&!(e=n[i].states.emphasis);)i++;return e&&e.hoverLayer}function Zd(t,e,n,i){Yd(n)||n.dispatchAction({type:"highlight",seriesName:t,name:e,excludeSeriesId:i})}function qd(t,e,n,i){Yd(n)||n.dispatchAction({type:"downplay",seriesName:t,name:e,excludeSeriesId:i})}function jd(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var n=0;n=0}function ig(t){return t+"Axis"}function rg(t,e){function n(t){!l.get(t.uid)&&r(t)&&(i(t),u=!0)}function i(t){l.set(t.uid,!0),s.push(t),o(t)}function r(t){var e=!1;return t.eachTargetAxis(function(t,n){var i=a.get(t);i&&i[n]&&(e=!0)}),e}function o(t){t.eachTargetAxis(function(t,e){(a.get(t)||a.set(t,[]))[e]=!0})}var a=Y(),s=[],l=Y();t.eachComponent({mainType:"dataZoom",query:e},function(t){l.get(t.uid)||i(t)});var u;do u=!1,t.eachComponent("dataZoom",n);while(u);return s}function og(t){var e=t.ecModel,n={infoList:[],infoMap:Y()};return t.eachTargetAxis(function(t,i){var r=e.getComponent(ig(t),i);if(r){var o=r.getCoordSysModel();if(o){var a=o.uid,s=n.infoMap.get(a);s||(s={model:o,axisModels:[]},n.infoList.push(s),n.infoMap.set(a,s)),s.axisModels.push(r)}}}),n}function ag(t){var e={};return v(["start","end","startValue","endValue","throttle"],function(n){t.hasOwnProperty(n)&&(e[n]=t[n])}),e}function sg(t,e,n,i,r,o){t=t||0;var a=n[1]-n[0];if(null!=r&&(r=ug(r,[0,a])),null!=o&&(o=Math.max(o,null!=r?r:0)),"all"===i){var s=Math.abs(e[1]-e[0]);s=ug(s,[0,a]),r=o=ug(s,[r,o]),i=0}e[0]=ug(e[0],n),e[1]=ug(e[1],n);var l=lg(e,i);e[i]+=t;var u=r||0,h=n.slice();l.sign<0?h[0]+=u:h[1]-=u,e[i]=ug(e[i],h);var c;return c=lg(e,i),null!=r&&(c.sign!==l.sign||c.spano&&(e[1-i]=e[i]+c.sign*o),e}function lg(t,e){var n=t[e]-t[1-e];return{span:Math.abs(n),sign:n>0?-1:0>n?1:e?-1:1}}function ug(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}function hg(t,e){return!!cg(t)[e]}function cg(t){return t[dD]||(t[dD]={})}function pg(t,e,n,i,r){t.pointerChecker&&t.pointerChecker(i,r.originX,r.originY)&&(fv(i.event),fg(t,e,n,i,r))}function fg(t,e,n,i,r){r.isAvailableBehavior=Kg(dg,null,n,i),t.trigger(e,r)}function dg(t,e,n){var i=n[t];return!t||i&&(!C(i)||e.event[i+"Key"])}function gg(t,e,n){vD(t).coordSysRecordMap.each(function(t){var i=t.dataZoomInfoMap.get(e.uid);i&&(i.getRange=n)})}function vg(t,e){for(var n=vD(t).coordSysRecordMap,i=n.keys(),r=0;ri[n+e]&&(e=a),r=r&&o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!r}}}function bg(t){t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,function(t,e){var n=vD(e),i=n.coordSysRecordMap||(n.coordSysRecordMap=Y());i.each(function(t){t.dataZoomInfoMap=null}),t.eachComponent({mainType:"dataZoom",subType:"inside"},function(t){var n=og(t);v(n.infoList,function(n){var r=n.model.uid,o=i.get(r)||i.set(r,mg(e,n.model)),a=o.dataZoomInfoMap||(o.dataZoomInfoMap=Y());a.set(t.uid,{dzReferCoordSysInfo:n,model:t,getRange:null})})}),i.each(function(t){var e,n=t.controller,r=t.dataZoomInfoMap;if(r){var o=r.keys()[0];null!=o&&(e=r.get(o))}if(!e)return void yg(i,t);var a=wg(r);n.enable(a.controlType,a.opt),n.setPointerChecker(t.containsPoint),ih(t,"dispatchAction",e.model.get("throttle",!0),"fixRate")})})}function Sg(t){return function(e,n,i,r){var o=this.range,a=o.slice(),s=e.axisModels[0];if(s){var l=t(a,s,e,n,i,r);return sg(l,a,[0,100],"all"),this.range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}}}function Mg(t,e,n){var i=[1/0,-1/0];xD(n,function(t){gf(i,t.getData(),e)});var r=t.getAxisModel(),o=rf(r.axis.scale,r,i).calculate();return[o.min,o.max]}function Tg(t){t.registerAction("dataZoom",function(t,e){var n=rg(e,t);v(n,function(e){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})})}function Cg(t){MD||(MD=!0,t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,SD),Tg(t),t.registerSubTypeDefaulter("dataZoom",function(){return"slider"}))}function Ig(t){Cg(t),t.registerComponentModel(pD),t.registerComponentView(yD),bg(t)}function Dg(t){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[t]}function kg(t){return"vertical"===t?"ns-resize":"ew-resize"}function Ag(t){t.registerComponentModel(TD),t.registerComponentView(ED),Cg(t)}function Og(){xf(Ig),xf(Ag)}var Pg=function(t,e){return(Pg=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,e)},Rg=function(){function t(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1}return t}(),Lg=function(){function t(){this.browser=new Rg,this.node=!1,this.wxa=!1,this.worker=!1,this.canvasSupported=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1}return t}(),zg=new Lg;"object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?(zg.wxa=!0,zg.canvasSupported=!0,zg.touchEventsSupported=!0):"undefined"==typeof document&&"undefined"!=typeof self?(zg.worker=!0,zg.canvasSupported=!0):"undefined"==typeof navigator?(zg.node=!0,zg.canvasSupported=!0,zg.svgSupported=!0):i(navigator.userAgent,zg);var Eg={"[object Function]":!0,"[object RegExp]":!0,"[object Date]":!0,"[object Error]":!0,"[object CanvasGradient]":!0,"[object CanvasPattern]":!0,"[object Image]":!0,"[object Canvas]":!0},Bg={"[object Int8Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Int16Array]":!0,"[object Uint16Array]":!0,"[object Int32Array]":!0,"[object Uint32Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0},Fg=Object.prototype.toString,Ng=Array.prototype,Vg=Ng.forEach,Hg=Ng.filter,Wg=Ng.slice,Gg=Ng.map,Ug=function(){}.constructor,Xg=Ug?Ug.prototype:null,Yg="__proto__",Zg={},qg=2311,jg=function(){return Zg.createCanvas()};Zg.createCanvas=function(){return document.createElement("canvas")};var Kg=Xg&&T(Xg.bind)?Xg.call.bind(Xg.bind):b,$g="__ec_primitive__",Jg=function(){function t(e){function n(t,e){i?r.set(t,e):r.set(e,t)}this.data={};var i=M(e);this.data={};var r=this;e instanceof t?e.each(n):e&&v(e,n)}return t.prototype.get=function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},t.prototype.set=function(t,e){return this.data[t]=e},t.prototype.each=function(t,e){for(var n in this.data)this.data.hasOwnProperty(n)&&t.call(e,this.data[n],n)},t.prototype.keys=function(){return w(this.data)},t.prototype.removeKey=function(t){delete this.data[t]},t}(),Qg=(Object.freeze||Object)({$override:r,guid:o,logError:a,clone:s,merge:l,mergeAll:u,extend:h,defaults:c,createCanvas:jg,indexOf:p,inherits:f,mixin:d,isArrayLike:g,each:v,map:y,reduce:m,filter:_,find:x,keys:w,bind:Kg,curry:S,isArray:M,isFunction:T,isString:C,isStringSafe:I,isNumber:D,isObject:k,isBuiltInObject:A,isTypedArray:O,isDom:P,isGradientObject:R,isImagePatternObject:L,isRegExp:z,eqNaN:E,retrieve:B,retrieve2:F,retrieve3:N,slice:V,normalizeCssArray:H,assert:W,trim:G,setAsPrimitive:U,isPrimitive:X,HashMap:Jg,createHashMap:Y,concatArray:Z,createObject:q,hasOwn:j,noop:K}),tv=re,ev=oe,nv=ce,iv=pe,rv=(Object.freeze||Object)({create:$,copy:J,clone:Q,set:te,add:ee,scaleAndAdd:ne,sub:ie,len:re,length:tv,lenSquare:oe,lengthSquare:ev,mul:ae,div:se,dot:le,scale:ue,normalize:he,distance:ce,dist:nv,distanceSquare:pe,distSquare:iv,negate:fe,lerp:de,applyTransform:ge,min:ve,max:ye}),ov=function(){function t(t,e){this.target=t,this.topTarget=e&&e.topTarget}return t}(),av=function(){function t(t){this.handler=t,t.on("mousedown",this._dragStart,this),t.on("mousemove",this._drag,this),t.on("mouseup",this._dragEnd,this)}return t.prototype._dragStart=function(t){for(var e=t.target;e&&!e.draggable;)e=e.parent;e&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.handler.dispatchToElement(new ov(e,t),"dragstart",t.event))},t.prototype._drag=function(t){var e=this._draggingTarget;if(e){var n=t.offsetX,i=t.offsetY,r=n-this._x,o=i-this._y;this._x=n,this._y=i,e.drift(r,o,t),this.handler.dispatchToElement(new ov(e,t),"drag",t.event);var a=this.handler.findHover(n,i,e).target,s=this._dropTarget;this._dropTarget=a,e!==a&&(s&&a!==s&&this.handler.dispatchToElement(new ov(s,t),"dragleave",t.event),a&&a!==s&&this.handler.dispatchToElement(new ov(a,t),"dragenter",t.event))}},t.prototype._dragEnd=function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.handler.dispatchToElement(new ov(e,t),"dragend",t.event),this._dropTarget&&this.handler.dispatchToElement(new ov(this._dropTarget,t),"drop",t.event),this._draggingTarget=null,this._dropTarget=null},t}(),sv=function(){function t(t){t&&(this._$eventProcessor=t)}return t.prototype.on=function(t,e,n,i){this._$handlers||(this._$handlers={});var r=this._$handlers;if("function"==typeof e&&(i=n,n=e,e=null),!n||!t)return this;var o=this._$eventProcessor;null!=e&&o&&o.normalizeQuery&&(e=o.normalizeQuery(e)),r[t]||(r[t]=[]);for(var a=0;ar;r++)n[t][r].h!==e&&i.push(n[t][r]);n[t]=i}n[t]&&0===n[t].length&&delete n[t]}else delete n[t];return this},t.prototype.trigger=function(t){for(var e=[],n=1;ns;s++){var l=i[s];if(!r||!r.filter||null==l.query||r.filter(t,l.query))switch(o){case 0:l.h.call(l.ctx);break;case 1:l.h.call(l.ctx,e[0]);break;case 2:l.h.call(l.ctx,e[0],e[1]);break;default:l.h.apply(l.ctx,e)}}return r&&r.afterTrigger&&r.afterTrigger(t),this},t.prototype.triggerWithContext=function(t){for(var e=[],n=1;nl;l++){var u=i[l];if(!r||!r.filter||null==u.query||r.filter(t,u.query))switch(o){case 0:u.h.call(a);break;case 1:u.h.call(a,e[0]);break;case 2:u.h.call(a,e[0],e[1]);break;default:u.h.apply(a,e.slice(1,o-1))}}return r&&r.afterTrigger&&r.afterTrigger(t),this},t}(),lv=Math.log(2),uv="___zrEVENTSAVED",hv="undefined"!=typeof window&&!!window.addEventListener,cv=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,pv=[],fv=hv?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0},dv=function(){function t(){this._track=[]}return t.prototype.recognize=function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},t.prototype.clear=function(){return this._track.length=0,this},t.prototype._doTrack=function(t,e,n){var i=t.touches;if(i){for(var r={points:[],touches:[],target:e,event:t},o=0,a=i.length;a>o;o++){var s=i[o],l=Me(n,s,{});r.points.push([l.zrX,l.zrY]),r.touches.push(s)}this._track.push(r)}},t.prototype._recognize=function(t){for(var e in gv)if(gv.hasOwnProperty(e)){var n=gv[e](this._track,t);if(n)return n}},t}(),gv={pinch:function(t,e){var n=t.length;if(n){var i=(t[n-1]||{}).points,r=(t[n-2]||{}).points||i;if(r&&r.length>1&&i&&i.length>1){var o=Pe(i)/Pe(r);!isFinite(o)&&(o=1),e.pinchScale=o;var a=Re(i);return e.pinchX=a[0],e.pinchY=a[1],{type:"pinch",target:t[0].target,event:e}}}}},vv="silent",yv=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.handler=null,e}return e(n,t),n.prototype.dispose=function(){},n.prototype.setCursor=function(){},n}(sv),mv=function(){function t(t,e){this.x=t,this.y=e}return t}(),_v=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],xv=function(t){function n(e,n,i,r){var o=t.call(this)||this;return o._hovered=new mv(0,0),o.storage=e,o.painter=n,o.painterRoot=r,i=i||new yv,o.proxy=null,o.setHandlerProxy(i),o._draggingMgr=new av(o),o}return e(n,t),n.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(v(_v,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},n.prototype.mousemove=function(t){var e=t.zrX,n=t.zrY,i=Be(this,e,n),r=this._hovered,o=r.target;o&&!o.__zr&&(r=this.findHover(r.x,r.y),o=r.target);var a=this._hovered=i?new mv(e,n):this.findHover(e,n),s=a.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),o&&s!==o&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(a,"mousemove",t),s&&s!==o&&this.dispatchToElement(a,"mouseover",t)},n.prototype.mouseout=function(t){var e=t.zrEventControl;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&this.trigger("globalout",{type:"globalout",event:t})},n.prototype.resize=function(){this._hovered=new mv(0,0)},n.prototype.dispatch=function(t,e){var n=this[t];n&&n.call(this,e)},n.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},n.prototype.setCursorStyle=function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},n.prototype.dispatchToElement=function(t,e,n){t=t||{};var i=t.target;if(!i||!i.silent){for(var r="on"+e,o=Le(e,t,n);i&&(i[r]&&(o.cancelBubble=!!i[r].call(i,o)),i.trigger(e,o),i=i.__hostTarget?i.__hostTarget:i.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer(function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)}))}},n.prototype.findHover=function(t,e,n){for(var i=this.storage.getDisplayList(),r=new mv(t,e),o=i.length-1;o>=0;o--){var a=void 0;if(i[o]!==n&&!i[o].ignore&&(a=Ee(i[o],t,e))&&(!r.topTarget&&(r.topTarget=i[o]),a!==vv)){r.target=i[o];break}}return r},n.prototype.processGesture=function(t,e){this._gestureMgr||(this._gestureMgr=new dv);var n=this._gestureMgr;"start"===e&&n.clear();var i=n.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&n.clear(),i){var r=i.type;t.gestureEvent=r;var o=new mv;o.target=i.target,this.dispatchToElement(o,r,i.event)}},n}(sv);v(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){xv.prototype[t]=function(e){var n,i,r=e.zrX,o=e.zrY,a=Be(this,r,o);if("mouseup"===t&&a||(n=this.findHover(r,o),i=n.target),"mousedown"===t)this._downEl=i,this._downPoint=[e.zrX,e.zrY],this._upEl=i;else if("mouseup"===t)this._upEl=i;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||nv(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,t,e)}});var wv,bv=32,Sv=7,Mv=1,Tv=2,Cv=4,Iv=!1,Dv=function(){function t(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=Ze}return t.prototype.traverse=function(t,e){for(var n=0;ni;i++)this._updateAndAddDisplayable(e[i],null,t);n.length=this._displayListLen,zg.canvasSupported&&Xe(n,Ze)},t.prototype._updateAndAddDisplayable=function(t,e,n){if(!t.ignore||n){t.beforeUpdate(),t.update(),t.afterUpdate();var i=t.getClipPath();if(t.ignoreClip)e=null;else if(i){e=e?e.slice():[];for(var r=i,o=t;r;)r.parent=o,r.updateTransform(),e.push(r),o=r,r=r.getClipPath()}if(t.childrenRef){for(var a=t.childrenRef(),s=0;s0&&(u.__clipPaths=[]),isNaN(u.z)&&(Ye(),u.z=0),isNaN(u.z2)&&(Ye(),u.z2=0),isNaN(u.zlevel)&&(Ye(),u.zlevel=0),this._displayList[this._displayListLen++]=u}var h=t.getDecalElement&&t.getDecalElement();h&&this._updateAndAddDisplayable(h,e,n);var c=t.getTextGuideLine();c&&this._updateAndAddDisplayable(c,e,n);var p=t.getTextContent();p&&this._updateAndAddDisplayable(p,e,n)}},t.prototype.addRoot=function(t){t.__zr&&t.__zr.storage===this||this._roots.push(t)},t.prototype.delRoot=function(t){if(t instanceof Array)for(var e=0,n=t.length;n>e;e++)this.delRoot(t[e]);else{var i=p(this._roots,t);i>=0&&this._roots.splice(i,1)}},t.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},t.prototype.getRoots=function(){return this._roots},t.prototype.dispose=function(){this._displayList=null,this._roots=null},t}();wv="undefined"!=typeof window&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){return setTimeout(t,16)};var kv=wv,Av={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*(-Math.pow(2,-10*(t-1))+2)},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,n=.1,i=.4;return 0===t?0:1===t?1:(!n||1>n?(n=1,e=i/4):e=i*Math.asin(1/n)/(2*Math.PI),-(n*Math.pow(2,10*(t-=1))*Math.sin(2*(t-e)*Math.PI/i)))},elasticOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||1>n?(n=1,e=i/4):e=i*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*t)*Math.sin(2*(t-e)*Math.PI/i)+1)},elasticInOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||1>n?(n=1,e=i/4):e=i*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?-.5*n*Math.pow(2,10*(t-=1))*Math.sin(2*(t-e)*Math.PI/i):n*Math.pow(2,-10*(t-=1))*Math.sin(2*(t-e)*Math.PI/i)*.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?.5*t*t*((e+1)*t-e):.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-Av.bounceOut(1-t)},bounceOut:function(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return.5>t?.5*Av.bounceIn(2*t):.5*Av.bounceOut(2*t-1)+.5}},Ov=function(){function t(t){this._initialized=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,this.loop=null==t.loop?!1:t.loop,this.gap=t.gap||0,this.easing=t.easing||"linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart}return t.prototype.step=function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)return void(this._pausedTime+=e);var n=(t-this._startTime-this._pausedTime)/this._life;0>n&&(n=0),n=Math.min(n,1);var i=this.easing,r="string"==typeof i?Av[i]:i,o="function"==typeof r?r(n):n;if(this.onframe&&this.onframe(o),1===n){if(!this.loop)return!0;this._restart(t),this.onrestart&&this.onrestart()}return!1},t.prototype._restart=function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){this._paused=!1},t}(),Pv=function(){function t(t){this.value=t}return t}(),Rv=function(){function t(){this._len=0}return t.prototype.insert=function(t){var e=new Pv(t);return this.insertEntry(e),e},t.prototype.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++},t.prototype.remove=function(t){var e=t.prev,n=t.next;e?e.next=n:this.head=n,n?n.prev=e:this.tail=e,t.next=t.prev=null,this._len--},t.prototype.len=function(){return this._len},t.prototype.clear=function(){this.head=this.tail=null,this._len=0},t}(),Lv=function(){function t(t){this._list=new Rv,this._maxSize=10,this._map={},this._maxSize=t}return t.prototype.put=function(t,e){var n=this._list,i=this._map,r=null;if(null==i[t]){var o=n.len(),a=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var s=n.head;n.remove(s),delete i[s.key],r=s.value,this._lastRemovedEntry=s}a?a.value=e:a=new Pv(e),a.key=t,n.insertEntry(a),i[t]=a}return r},t.prototype.get=function(t){var e=this._map[t],n=this._list;return null!=e?(e!==n.tail&&(n.remove(e),n.insertEntry(e)),e.value):void 0},t.prototype.clear=function(){this._list.clear(),this._map={}},t.prototype.len=function(){return this._list.len()},t}(),zv={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]},Ev=new Lv(20),Bv=null,Fv=hn,Nv=cn,Vv=(Object.freeze||Object)({parse:on,lift:ln,toHex:un,fastLerp:hn,fastMapToColor:Fv,lerp:cn,mapToColor:Nv,modifyHSL:pn,modifyAlpha:fn,stringify:dn,lum:gn,random:vn}),Hv=Array.prototype.slice,Wv=[0,0,0,0],Gv=function(){function t(t){this.keyframes=[],this.maxTime=0,this.arrDim=0,this.interpolable=!0,this._needsSort=!1,this._isAllValueEqual=!0,this._lastFrame=0,this._lastFramePercent=0,this.propName=t }return t.prototype.isFinished=function(){return this._finished},t.prototype.setFinished=function(){this._finished=!0,this._additiveTrack&&this._additiveTrack.setFinished()},t.prototype.needsAnimate=function(){return!this._isAllValueEqual&&this.keyframes.length>=2&&this.interpolable&&this.maxTime>0},t.prototype.getAdditiveTrack=function(){return this._additiveTrack},t.prototype.addKeyframe=function(t,e){t>=this.maxTime?this.maxTime=t:this._needsSort=!0;var n=this.keyframes,i=n.length;if(this.interpolable)if(g(e)){var r=An(e);if(i>0&&this.arrDim!==r)return void(this.interpolable=!1);if(1===r&&"number"!=typeof e[0]||2===r&&"number"!=typeof e[0][0])return void(this.interpolable=!1);if(i>0){var o=n[i-1];this._isAllValueEqual&&(1===r?Mn(e,o.value)||(this._isAllValueEqual=!1):this._isAllValueEqual=!1)}this.arrDim=r}else{if(this.arrDim>0)return void(this.interpolable=!1);if("string"==typeof e){var a=on(e);a?(e=a,this.isValueColor=!0):this.interpolable=!1}else if("number"!=typeof e||isNaN(e))return void(this.interpolable=!1);if(this._isAllValueEqual&&i>0){var o=n[i-1];this.isValueColor&&!Mn(o.value,e)?this._isAllValueEqual=!1:o.value!==e&&(this._isAllValueEqual=!1)}}var s={time:t,value:e,percent:0};return this.keyframes.push(s),s},t.prototype.prepare=function(t){var e=this.keyframes;this._needsSort&&e.sort(function(t,e){return t.time-e.time});for(var n=this.arrDim,i=e.length,r=e[i-1],o=0;i>o;o++)e[o].percent=e[o].time/this.maxTime,n>0&&o!==i-1&&Sn(e[o].value,r.value,n);if(t&&this.needsAnimate()&&t.needsAnimate()&&n===t.arrDim&&this.isValueColor===t.isValueColor&&!t._finished){this._additiveTrack=t;for(var a=e[0].value,o=0;i>o;o++)0===n?e[o].additiveValue=this.isValueColor?wn([],e[o].value,a,-1):e[o].value-a:1===n?e[o].additiveValue=wn([],e[o].value,a,-1):2===n&&(e[o].additiveValue=bn([],e[o].value,a,-1))}},t.prototype.step=function(t,e){if(!this._finished){this._additiveTrack&&this._additiveTrack._finished&&(this._additiveTrack=null);var n,i=null!=this._additiveTrack,r=i?"additiveValue":"value",o=this.keyframes,a=this.keyframes.length,s=this.propName,l=this.arrDim,u=this.isValueColor;if(0>e)n=0;else if(e=0&&!(o[n].percent<=e);n--);n=Math.min(n,a-2)}else{for(n=this._lastFrame;a>n&&!(o[n].percent>e);n++);n=Math.min(n-1,a-2)}var c=o[n+1],p=o[n];if(p&&c){this._lastFrame=n,this._lastFramePercent=e;var f=c.percent-p.percent;if(0!==f){var d=(e-p.percent)/f,g=i?this._additiveValue:u?Wv:t[s];if((l>0||u)&&!g&&(g=this._additiveValue=[]),this.useSpline){var v=o[n][r],y=o[0===n?n:n-1][r],m=o[n>a-2?a-1:n+1][r],_=o[n>a-3?a-1:n+2][r];if(l>0)1===l?Cn(g,y,v,m,_,d,d*d,d*d*d):In(g,y,v,m,_,d,d*d,d*d*d);else if(u)Cn(g,y,v,m,_,d,d*d,d*d*d),i||(t[s]=kn(g));else{var x=void 0;x=this.interpolable?Tn(y,v,m,_,d,d*d,d*d*d):m,i?this._additiveValue=x:t[s]=x}}else if(l>0)1===l?_n(g,p[r],c[r],d):xn(g,p[r],c[r],d);else if(u)_n(g,p[r],c[r],d),i||(t[s]=kn(g));else{var x=void 0;x=this.interpolable?yn(p[r],c[r],d):mn(p[r],c[r],d),i?this._additiveValue=x:t[s]=x}i&&this._addToTarget(t)}}}},t.prototype._addToTarget=function(t){var e=this.arrDim,n=this.propName,i=this._additiveValue;0===e?this.isValueColor?(on(t[n],Wv),wn(Wv,Wv,i,1),t[n]=kn(Wv)):t[n]=t[n]+i:1===e?wn(t[n],t[n],i,1):2===e&&bn(t[n],t[n],i,1)},t}(),Uv=function(){function t(t,e,n){return this._tracks={},this._trackKeys=[],this._delay=0,this._maxTime=0,this._paused=!1,this._started=0,this._clip=null,this._target=t,this._loop=e,e&&n?void a("Can' use additive animation on looped animation."):void(this._additiveAnimators=n)}return t.prototype.getTarget=function(){return this._target},t.prototype.changeTarget=function(t){this._target=t},t.prototype.when=function(t,e){return this.whenWithKeys(t,e,w(e))},t.prototype.whenWithKeys=function(t,e,n){for(var i=this._tracks,r=0;rn;n++)t[n].call(this)},t.prototype._abortedCallback=function(){this._setTracksFinished();var t=this.animation,e=this._abortedCbs;if(t&&t.removeClip(this._clip),this._clip=null,e)for(var n=0;n0)){this._started=1;for(var n=this,i=[],r=0;r1){var a=o.pop();r.addKeyframe(a.time,t[i]),r.prepare(r.getAdditiveTrack())}}}},t}(),Xv=function(t){function n(e){var n=t.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,e=e||{},n.stage=e.stage||{},n.onframe=e.onframe||function(){},n}return e(n,t),n.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._clipsHead?(this._clipsTail.next=t,t.prev=this._clipsTail,t.next=null,this._clipsTail=t):this._clipsHead=this._clipsTail=t,t.animation=this},n.prototype.addAnimator=function(t){t.animation=this;var e=t.getClip();e&&this.addClip(e)},n.prototype.removeClip=function(t){if(t.animation){var e=t.prev,n=t.next;e?e.next=n:this._clipsHead=n,n?n.prev=e:this._clipsTail=e,t.next=t.prev=t.animation=null}},n.prototype.removeAnimator=function(t){var e=t.getClip();e&&this.removeClip(e),t.animation=null},n.prototype.update=function(t){for(var e=(new Date).getTime()-this._pausedTime,n=e-this._time,i=this._clipsHead;i;){var r=i.next,o=i.step(e,n);o?(i.ondestroy&&i.ondestroy(),this.removeClip(i),i=r):i=r}this._time=e,t||(this.onframe(n),this.trigger("frame",n),this.stage.update&&this.stage.update())},n.prototype._startLoop=function(){function t(){e._running&&(kv(t),!e._paused&&e.update())}var e=this;this._running=!0,kv(t)},n.prototype.start=function(){this._running||(this._time=(new Date).getTime(),this._pausedTime=0,this._startLoop())},n.prototype.stop=function(){this._running=!1},n.prototype.pause=function(){this._paused||(this._pauseStart=(new Date).getTime(),this._paused=!0)},n.prototype.resume=function(){this._paused&&(this._pausedTime+=(new Date).getTime()-this._pauseStart,this._paused=!1)},n.prototype.clear=function(){for(var t=this._clipsHead;t;){var e=t.next;t.prev=t.next=t.animation=null,t=e}this._clipsHead=this._clipsTail=null},n.prototype.isFinished=function(){return null==this._clipsHead},n.prototype.animate=function(t,e){e=e||{},this.start();var n=new Uv(t,e.loop);return this.addAnimator(n),n},n}(sv),Yv=300,Zv=zg.domSupported,qv=function(){var t=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],e=["touchstart","touchend","touchmove"],n={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},i=y(t,function(t){var e=t.replace("mouse","pointer");return n.hasOwnProperty(e)?e:t});return{mouse:t,touch:e,pointer:i}}(),jv={mouse:["mousemove","mouseup"],pointer:["pointermove","pointerup"]},Kv=!1,$v=function(){function t(t,e){this.stopPropagation=K,this.stopImmediatePropagation=K,this.preventDefault=K,this.type=e.type,this.target=this.currentTarget=t.dom,this.pointerType=e.pointerType,this.clientX=e.clientX,this.clientY=e.clientY}return t}(),Jv={mousedown:function(t){t=Ie(this.dom,t),this.__mayPointerCapture=[t.zrX,t.zrY],this.trigger("mousedown",t)},mousemove:function(t){t=Ie(this.dom,t);var e=this.__mayPointerCapture;!e||t.zrX===e[0]&&t.zrY===e[1]||this.__togglePointerCapture(!0),this.trigger("mousemove",t)},mouseup:function(t){t=Ie(this.dom,t),this.__togglePointerCapture(!1),this.trigger("mouseup",t)},mouseout:function(t){t=Ie(this.dom,t);var e=t.toElement||t.relatedTarget;zn(this,e)||(this.__pointerCapturing&&(t.zrEventControl="no_globalout"),this.trigger("mouseout",t))},wheel:function(t){Kv=!0,t=Ie(this.dom,t),this.trigger("mousewheel",t)},mousewheel:function(t){Kv||(t=Ie(this.dom,t),this.trigger("mousewheel",t))},touchstart:function(t){t=Ie(this.dom,t),Rn(t),this.__lastTouchMoment=new Date,this.handler.processGesture(t,"start"),Jv.mousemove.call(this,t),Jv.mousedown.call(this,t)},touchmove:function(t){t=Ie(this.dom,t),Rn(t),this.handler.processGesture(t,"change"),Jv.mousemove.call(this,t)},touchend:function(t){t=Ie(this.dom,t),Rn(t),this.handler.processGesture(t,"end"),Jv.mouseup.call(this,t),+new Date-+this.__lastTouchMoment1e-10&&vy(t[3]-1)>1e-10?Math.sqrt(vy(t[0]*t[3]-t[2]*t[1])):1},t.prototype.copyTransform=function(t){for(var e=this,n=0;nn&&(t+=n,n=-n),0>i&&(e+=i,i=-i),this.x=t,this.y=e,this.width=n,this.height=i}return t.prototype.union=function(t){var e=xy(t.x,this.x),n=xy(t.y,this.y);this.width=isFinite(this.x)&&isFinite(this.width)?wy(t.x+t.width,this.x+this.width)-e:t.width,this.height=isFinite(this.y)&&isFinite(this.height)?wy(t.y+t.height,this.y+this.height)-n:t.height,this.x=e,this.y=n},t.prototype.applyTransform=function(e){t.applyTransform(this,this,e)},t.prototype.calculateTransform=function(t){var e=this,n=t.width/e.width,i=t.height/e.height,r=Vn();return Un(r,r,[-e.x,-e.y]),Yn(r,r,[n,i]),Un(r,r,[t.x,t.y]),r},t.prototype.intersect=function(e,n){if(!e)return!1;e instanceof t||(e=t.create(e));var i=this,r=i.x,o=i.x+i.width,a=i.y,s=i.y+i.height,l=e.x,u=e.x+e.width,h=e.y,c=e.y+e.height,p=!(l>o||r>u||h>s||a>c);if(n){var f=1/0,d=0,g=Math.abs(o-l),v=Math.abs(u-r),y=Math.abs(s-h),m=Math.abs(c-a),_=Math.min(g,v),x=Math.min(y,m);l>o||r>u?_>d&&(d=_,v>g?_y.set(Iy,-g,0):_y.set(Iy,v,0)):f>_&&(f=_,v>g?_y.set(Cy,g,0):_y.set(Cy,-v,0)),h>s||a>c?x>d&&(d=x,m>y?_y.set(Iy,0,-y):_y.set(Iy,0,m)):f>_&&(f=_,m>y?_y.set(Cy,0,y):_y.set(Cy,0,-m))}return n&&_y.copy(n,p?Cy:Iy),p},t.prototype.contain=function(t,e){var n=this;return t>=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},t.prototype.clone=function(){return new t(this.x,this.y,this.width,this.height)},t.prototype.copy=function(e){t.copy(this,e)},t.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},t.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},t.prototype.isZero=function(){return 0===this.width||0===this.height},t.create=function(e){return new t(e.x,e.y,e.width,e.height)},t.copy=function(t,e){t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height},t.applyTransform=function(e,n,i){if(!i)return void(e!==n&&t.copy(e,n));if(i[1]<1e-5&&i[1]>-1e-5&&i[2]<1e-5&&i[2]>-1e-5){var r=i[0],o=i[3],a=i[4],s=i[5];return e.x=n.x*r+a,e.y=n.y*o+s,e.width=n.width*r,e.height=n.height*o,e.width<0&&(e.x+=e.width,e.width=-e.width),void(e.height<0&&(e.y+=e.height,e.height=-e.height))}by.x=My.x=n.x,by.y=Ty.y=n.y,Sy.x=Ty.x=n.x+n.width,Sy.y=My.y=n.y+n.height,by.transform(i),Ty.transform(i),Sy.transform(i),My.transform(i),e.x=xy(by.x,Sy.x,My.x,Ty.x),e.y=xy(by.y,Sy.y,My.y,Ty.y);var l=wy(by.x,Sy.x,My.x,Ty.x),u=wy(by.y,Sy.y,My.y,Ty.y);e.width=l-e.x,e.height=u-e.y},t}(),ky={},Ay="12px sans-serif",Oy={measureText:Kn},Py="__zr_normal__",Ry=["x","y","scaleX","scaleY","originX","originY","rotation","ignore"],Ly={x:!0,y:!0,scaleX:!0,scaleY:!0,originX:!0,originY:!0,rotation:!0,ignore:!1},zy={},Ey=new Dy(0,0,0,0),By=function(){function t(t){this.id=o(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return t.prototype._init=function(t){this.attr(t)},t.prototype.drift=function(t,e){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var n=this.transform;n||(n=this.transform=[1,0,0,1,0,0]),n[4]+=t,n[5]+=e,this.decomposeTransform(),this.markRedraw()},t.prototype.beforeUpdate=function(){},t.prototype.afterUpdate=function(){},t.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},t.prototype.updateInnerText=function(t){var e=this._textContent;if(e&&(!e.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,i=n.local,r=e.innerTransformable,o=void 0,a=void 0,s=!1;r.parent=i?this:null;var l=!1;if(r.copyTransform(e),null!=n.position){var u=Ey;u.copy(n.layoutRect?n.layoutRect:this.getBoundingRect()),i||u.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(zy,n,u):ri(zy,n,u),r.x=zy.x,r.y=zy.y,o=zy.align,a=zy.verticalAlign;var h=n.origin;if(h&&null!=n.rotation){var c=void 0,p=void 0;"center"===h?(c=.5*u.width,p=.5*u.height):(c=ii(h[0],u.width),p=ii(h[1],u.height)),l=!0,r.originX=-r.x+c+(i?0:u.x),r.originY=-r.y+p+(i?0:u.y)}}null!=n.rotation&&(r.rotation=n.rotation);var f=n.offset;f&&(r.x+=f[0],r.y+=f[1],l||(r.originX=-f[0],r.originY=-f[1]));var d=null==n.inside?"string"==typeof n.position&&n.position.indexOf("inside")>=0:n.inside,g=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),v=void 0,y=void 0,m=void 0;d&&this.canBeInsideText()?(v=n.insideFill,y=n.insideStroke,(null==v||"auto"===v)&&(v=this.getInsideTextFill()),(null==y||"auto"===y)&&(y=this.getInsideTextStroke(v),m=!0)):(v=n.outsideFill,y=n.outsideStroke,(null==v||"auto"===v)&&(v=this.getOutsideFill()),(null==y||"auto"===y)&&(y=this.getOutsideStroke(v),m=!0)),v=v||"#000",(v!==g.fill||y!==g.stroke||m!==g.autoStroke||o!==g.align||a!==g.verticalAlign)&&(s=!0,g.fill=v,g.stroke=y,g.autoStroke=m,g.align=o,g.verticalAlign=a,e.setDefaultTextStyle(g)),e.__dirty|=Mv,s&&e.dirtyStyle(!0)}},t.prototype.canBeInsideText=function(){return!0},t.prototype.getInsideTextFill=function(){return"#fff"},t.prototype.getInsideTextStroke=function(){return"#000"},t.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?ly:sy},t.prototype.getOutsideStroke=function(){var t=this.__zr&&this.__zr.getBackgroundColor(),e="string"==typeof t&&on(t);e||(e=[255,255,255,1]);for(var n=e[3],i=this.__zr.isDarkMode(),r=0;3>r;r++)e[r]=e[r]*n+(i?0:255)*(1-n);return e[3]=1,dn(e,"rgba")},t.prototype.traverse=function(){},t.prototype.attrKV=function(t,e){"textConfig"===t?this.setTextConfig(e):"textContent"===t?this.setTextContent(e):"clipPath"===t?this.setClipPath(e):"extra"===t?(this.extra=this.extra||{},h(this.extra,e)):this[t]=e},t.prototype.hide=function(){this.ignore=!0,this.markRedraw()},t.prototype.show=function(){this.ignore=!1,this.markRedraw()},t.prototype.attr=function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(k(t))for(var n=t,i=w(n),r=0;r0},t.prototype.getState=function(t){return this.states[t]},t.prototype.ensureState=function(t){var e=this.states;return e[t]||(e[t]={}),e[t]},t.prototype.clearStates=function(t){this.useState(Py,!1,t)},t.prototype.useState=function(t,e,n,i){var r=t===Py,o=this.hasState();if(o||!r){var s=this.currentStates,l=this.stateTransition;if(!(p(s,t)>=0)||!e&&1!==s.length){var u;if(this.stateProxy&&!r&&(u=this.stateProxy(t)),u||(u=this.states&&this.states[t]),!u&&!r)return void a("State "+t+" not exists.");r||this.saveCurrentToNormalState(u);var h=!!(u&&u.hoverLayer||i);h&&this._toggleHoverLayerFlag(!0),this._applyStateObj(t,u,this._normalState,e,!n&&!this.__inHover&&l&&l.duration>0,l);var c=this._textContent,f=this._textGuide;return c&&c.useState(t,e,n,h),f&&f.useState(t,e,n,h),r?(this.currentStates=[],this._normalState={}):e?this.currentStates.push(t):this.currentStates=[t],this._updateAnimationTargets(),this.markRedraw(),!h&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~Mv),u}}},t.prototype.useStates=function(t,e,n){if(t.length){var i=[],r=this.currentStates,o=t.length,a=o===r.length;if(a)for(var s=0;o>s;s++)if(t[s]!==r[s]){a=!1;break}if(a)return;for(var s=0;o>s;s++){var l=t[s],u=void 0;this.stateProxy&&(u=this.stateProxy(l,t)),u||(u=this.states[l]),u&&i.push(u)}var h=i[o-1],c=!!(h&&h.hoverLayer||n);c&&this._toggleHoverLayerFlag(!0);var p=this._mergeStates(i),f=this.stateTransition;this.saveCurrentToNormalState(p),this._applyStateObj(t.join(","),p,this._normalState,!1,!e&&!this.__inHover&&f&&f.duration>0,f);var d=this._textContent,g=this._textGuide;d&&d.useStates(t,e,c),g&&g.useStates(t,e,c),this._updateAnimationTargets(),this.currentStates=t.slice(),this.markRedraw(),!c&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~Mv)}else this.clearStates()},t.prototype._updateAnimationTargets=function(){for(var t=0;t=0){var n=this.currentStates.slice();n.splice(e,1),this.useStates(n)}},t.prototype.replaceState=function(t,e,n){var i=this.currentStates.slice(),r=p(i,t),o=p(i,e)>=0;r>=0?o?i.splice(r,1):i[r]=e:n&&!o&&i.push(e),this.useStates(i)},t.prototype.toggleState=function(t,e){e?this.useState(t,!0):this.removeState(t)},t.prototype._mergeStates=function(t){for(var e,n={},i=0;i=0&&e.splice(n,1)}),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},t.prototype.updateDuringAnimation=function(){this.markRedraw()},t.prototype.stopAnimation=function(t,e){for(var n=this.animators,i=n.length,r=[],o=0;i>o;o++){var a=n[o];t&&t!==a.scope?r.push(a):a.stop(e)}return this.animators=r,this},t.prototype.animateTo=function(t,e,n){oi(this,t,e,n)},t.prototype.animateFrom=function(t,e,n){oi(this,t,e,n,!0)},t.prototype._transitionState=function(t,e,n,i){for(var r=oi(this,e,n,i),o=0;o8)&&(n("position","_legacyPos","x","y"),n("scale","_legacyScale","scaleX","scaleY"),n("origin","_legacyOrigin","originX","originY"))}(),t}();d(By,sv),d(By,yy);var Fy=function(t){function n(e){var n=t.call(this)||this;return n.isGroup=!0,n._children=[],n.attr(e),n }return e(n,t),n.prototype.childrenRef=function(){return this._children},n.prototype.children=function(){return this._children.slice()},n.prototype.childAt=function(t){return this._children[t]},n.prototype.childOfName=function(t){for(var e=this._children,n=0;n=0&&(n.splice(i,0,t),this._doAdd(t))}return this},n.prototype.replace=function(t,e){var n=p(this._children,t);return n>=0&&this.replaceAt(e,n),this},n.prototype.replaceAt=function(t,e){var n=this._children,i=n[e];if(t&&t!==this&&t.parent!==this&&t!==i){n[e]=t,i.parent=null;var r=this.__zr;r&&i.removeSelfFromZr(r),this._doAdd(t)}return this},n.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__zr;e&&e!==t.__zr&&t.addSelfToZr(e),e&&e.refresh()},n.prototype.remove=function(t){var e=this.__zr,n=this._children,i=p(n,t);return 0>i?this:(n.splice(i,1),t.parent=null,e&&t.removeSelfFromZr(e),e&&e.refresh(),this)},n.prototype.removeAll=function(){for(var t=this._children,e=this.__zr,n=0;n0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},t.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},t.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},t.prototype.addHover=function(){},t.prototype.removeHover=function(){},t.prototype.clearHover=function(){},t.prototype.refreshHover=function(){this._needsRefreshHover=!0},t.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover()},t.prototype.resize=function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},t.prototype.clearAnimation=function(){this.animation.clear()},t.prototype.getWidth=function(){return this.painter.getWidth()},t.prototype.getHeight=function(){return this.painter.getHeight()},t.prototype.pathToImage=function(t,e){return this.painter.pathToImage?this.painter.pathToImage(t,e):void 0},t.prototype.setCursorStyle=function(t){this.handler.setCursorStyle(t)},t.prototype.findHover=function(t,e){return this.handler.findHover(t,e)},t.prototype.on=function(t,e,n){return this.handler.on(t,e,n),this},t.prototype.off=function(t,e){this.handler.off(t,e)},t.prototype.trigger=function(t,e){this.handler.trigger(t,e)},t.prototype.clear=function(){for(var t=this.storage.getRoots(),e=0;e0&&(this._ux=Qm(n/oy/t)||0,this._uy=Qm(n/oy/e)||0)},t.prototype.setDPR=function(t){this.dpr=t},t.prototype.setContext=function(t){this._ctx=t},t.prototype.getContext=function(){return this._ctx},t.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},t.prototype.reset=function(){this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},t.prototype.moveTo=function(t,e){return this._drawPendingPt(),this.addData(Hm.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},t.prototype.lineTo=function(t,e){var n=Qm(t-this._xi),i=Qm(e-this._yi),r=n>this._ux||i>this._uy;if(this.addData(Hm.L,t,e),this._ctx&&r&&(this._needsDash?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),r)this._xi=t,this._yi=e,this._pendingPtDist=0;else{var o=n*n+i*i;o>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=e,this._pendingPtDist=o)}return this},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){return this._drawPendingPt(),this.addData(Hm.C,t,e,n,i,r,o),this._ctx&&(this._needsDash?this._dashedBezierTo(t,e,n,i,r,o):this._ctx.bezierCurveTo(t,e,n,i,r,o)),this._xi=r,this._yi=o,this},t.prototype.quadraticCurveTo=function(t,e,n,i){return this._drawPendingPt(),this.addData(Hm.Q,t,e,n,i),this._ctx&&(this._needsDash?this._dashedQuadraticTo(t,e,n,i):this._ctx.quadraticCurveTo(t,e,n,i)),this._xi=n,this._yi=i,this},t.prototype.arc=function(t,e,n,i,r,o){this._drawPendingPt(),i_[0]=i,i_[1]=r,so(i_,o),i=i_[0],r=i_[1];var a=r-i;return this.addData(Hm.A,t,e,n,n,i,a,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,o),this._xi=Km(r)*n+t,this._yi=$m(r)*n+e,this},t.prototype.arcTo=function(t,e,n,i,r){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},t.prototype.rect=function(t,e,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.rect(t,e,n,i),this.addData(Hm.R,t,e,n,i),this},t.prototype.closePath=function(){this._drawPendingPt(),this.addData(Hm.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&(this._needsDash&&this._dashedLineTo(e,n),t.closePath()),this._xi=e,this._yi=n,this},t.prototype.fill=function(t){t&&t.fill(),this.toStatic()},t.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},t.prototype.setLineDash=function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,n=0;nn;n++)this.data[n]=t[n];this._len=e},t.prototype.appendPath=function(t){t instanceof Array||(t=[t]);for(var e=t.length,n=0,i=this._len,r=0;e>r;r++)n+=t[r].len();n_&&this.data instanceof Float32Array&&(this.data=new Float32Array(i+n));for(var r=0;e>r;r++)for(var o=t[r].data,a=0;at.length&&(this._expandData(),t=this.data);for(var e=0;e0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},t.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],e=0;es&&(s=r+s),s%=r,f-=s*h,d-=s*c;h>0&&t>=f||0>h&&f>=t||0===h&&(c>0&&e>=d||0>c&&d>=e);)i=this._dashIdx,n=o[i],f+=h*n,d+=c*n,this._dashIdx=(i+1)%g,h>0&&l>f||0>h&&f>l||c>0&&u>d||0>c&&d>u||a[i%2?"moveTo":"lineTo"](h>=0?qm(f,t):jm(f,t),c>=0?qm(d,e):jm(d,e));h=f-t,c=d-e,this._dashOffset=-Jm(h*h+c*c)},t.prototype._dashedBezierTo=function(t,e,n,i,r,o){var a,s,l,u,h,c=this._ctx,p=this._dashSum,f=this._dashOffset,d=this._lineDash,g=this._xi,v=this._yi,y=0,m=this._dashIdx,_=d.length,x=0;for(0>f&&(f=p+f),f%=p,a=0;1>a;a+=.1)s=Hr(g,t,n,r,a+.1)-Hr(g,t,n,r,a),l=Hr(v,e,i,o,a+.1)-Hr(v,e,i,o,a),y+=Jm(s*s+l*l);for(;_>m&&(x+=d[m],!(x>f));m++);for(a=(x-f)/y;1>=a;)u=Hr(g,t,n,r,a),h=Hr(v,e,i,o,a),m%2?c.moveTo(u,h):c.lineTo(u,h),a+=d[m]/y,m=(m+1)%_;m%2!==0&&c.lineTo(r,o),s=r-u,l=o-h,this._dashOffset=-Jm(s*s+l*l)},t.prototype._dashedQuadraticTo=function(t,e,n,i){var r=n,o=i;n=(n+2*t)/3,i=(i+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,n,i,r,o)},t.prototype.toStatic=function(){if(this._saveData){this._drawPendingPt();var t=this.data;t instanceof Array&&(t.length=this._len,n_&&this._len>11&&(this.data=new Float32Array(t)))}},t.prototype.getBoundingRect=function(){Um[0]=Um[1]=Ym[0]=Ym[1]=Number.MAX_VALUE,Xm[0]=Xm[1]=Zm[0]=Zm[1]=-Number.MAX_VALUE;var t,e=this.data,n=0,i=0,r=0,o=0;for(t=0;tc;){var p=t[c++],f=1===c;f&&(r=t[c],o=t[c+1],a=r,s=o);var d=-1;switch(p){case Hm.M:r=a=t[c++],o=s=t[c++];break;case Hm.L:var g=t[c++],v=t[c++],y=g-r,m=v-o;(Qm(y)>n||Qm(m)>i||c===e-1)&&(d=Math.sqrt(y*y+m*m),r=g,o=v);break;case Hm.C:var _=t[c++],x=t[c++],g=t[c++],v=t[c++],w=t[c++],b=t[c++];d=Zr(r,o,_,x,g,v,w,b,10),r=w,o=b;break;case Hm.Q:var _=t[c++],x=t[c++],g=t[c++],v=t[c++];d=to(r,o,_,x,g,v,10),r=g,o=v;break;case Hm.A:var S=t[c++],M=t[c++],T=t[c++],C=t[c++],I=t[c++],D=t[c++],k=D+I;c+=1;{!t[c++]}f&&(a=Km(I)*T+S,s=$m(I)*C+M),d=jm(T,C)*qm(e_,Math.abs(D)),r=Km(k)*T+S,o=$m(k)*C+M;break;case Hm.R:a=r=t[c++],s=o=t[c++];var A=t[c++],O=t[c++];d=2*A+2*O;break;case Hm.Z:var y=a-r,m=s-o;d=Math.sqrt(y*y+m*m),r=a,o=s}d>=0&&(l[h++]=d,u+=d)}return this._pathLen=u,u},t.prototype.rebuildPath=function(t,e){var n,i,r,o,a,s,l,u,h,c,p,f=this.data,d=this._ux,g=this._uy,v=this._len,y=1>e,m=0,_=0,x=0;if(!y||(this._pathSegLen||this._calculateLength(),l=this._pathSegLen,u=this._pathLen,h=e*u))t:for(var w=0;v>w;){var b=f[w++],S=1===w;switch(S&&(r=f[w],o=f[w+1],n=r,i=o),b!==Hm.L&&x>0&&(t.lineTo(c,p),x=0),b){case Hm.M:n=r=f[w++],i=o=f[w++],t.moveTo(r,o);break;case Hm.L:a=f[w++],s=f[w++];var M=Qm(a-r),T=Qm(s-o);if(M>d||T>g){if(y){var C=l[_++];if(m+C>h){var I=(h-m)/C;t.lineTo(r*(1-I)+a*I,o*(1-I)+s*I);break t}m+=C}t.lineTo(a,s),r=a,o=s,x=0}else{var D=M*M+T*T;D>x&&(c=a,p=s,x=D)}break;case Hm.C:var k=f[w++],A=f[w++],O=f[w++],P=f[w++],R=f[w++],L=f[w++];if(y){var C=l[_++];if(m+C>h){var I=(h-m)/C;Xr(r,k,O,R,I,Wm),Xr(o,A,P,L,I,Gm),t.bezierCurveTo(Wm[1],Gm[1],Wm[2],Gm[2],Wm[3],Gm[3]);break t}m+=C}t.bezierCurveTo(k,A,O,P,R,L),r=R,o=L;break;case Hm.Q:var k=f[w++],A=f[w++],O=f[w++],P=f[w++];if(y){var C=l[_++];if(m+C>h){var I=(h-m)/C;Jr(r,k,O,I,Wm),Jr(o,A,P,I,Gm),t.quadraticCurveTo(Wm[1],Gm[1],Wm[2],Gm[2]);break t}m+=C}t.quadraticCurveTo(k,A,O,P),r=O,o=P;break;case Hm.A:var z=f[w++],E=f[w++],B=f[w++],F=f[w++],N=f[w++],V=f[w++],H=f[w++],W=!f[w++],G=B>F?B:F,U=Qm(B-F)>.001,X=N+V,Y=!1;if(y){var C=l[_++];m+C>h&&(X=N+V*(h-m)/C,Y=!0),m+=C}if(U&&t.ellipse?t.ellipse(z,E,B,F,H,N,X,W):t.arc(z,E,G,N,X,W),Y)break t;S&&(n=Km(N)*B+z,i=$m(N)*F+E),r=Km(X)*B+z,o=$m(X)*F+E;break;case Hm.R:n=r=f[w],i=o=f[w+1],a=f[w++],s=f[w++];var Z=f[w++],q=f[w++];if(y){var C=l[_++];if(m+C>h){var j=h-m;t.moveTo(a,s),t.lineTo(a+qm(j,Z),s),j-=Z,j>0&&t.lineTo(a+Z,s+qm(j,q)),j-=q,j>0&&t.lineTo(a+jm(Z-j,0),s+q),j-=Z,j>0&&t.lineTo(a,s+jm(q-j,0));break t}m+=C}t.rect(a,s,Z,q);break;case Hm.Z:if(y){var C=l[_++];if(m+C>h){var I=(h-m)/C;t.lineTo(r*(1-I)+n*I,o*(1-I)+i*I);break t}m+=C}t.closePath(),r=n,o=i}}},t.prototype.clone=function(){var e=new t,n=this.data;return e.data=n.slice?n.slice():Array.prototype.slice.call(n),e._len=this._len,e},t.CMD=Hm,t.initDefaultProps=function(){var e=t.prototype;e._saveData=!0,e._needsDash=!1,e._dashOffset=0,e._dashIdx=0,e._dashSum=0,e._ux=0,e._uy=0,e._pendingPtDist=0,e._version=0}(),t}(),o_=2*Math.PI,a_=2*Math.PI,s_=r_.CMD,l_=2*Math.PI,u_=1e-4,h_=[-1,-1,-1],c_=[-1,-1],p_=c({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},gm),f_={style:c({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},vm.style)},d_=["x","y","rotation","scaleX","scaleY","originX","originY","invisible","culling","z","z2","zlevel","parent"],g_=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.update=function(){var e=this;t.prototype.update.call(this);var i=this.style;if(i.decal){var r=this._decalEl=this._decalEl||new n;r.buildPath===n.prototype.buildPath&&(r.buildPath=function(t){e.buildPath(t,e.shape)}),r.silent=!0;var o=r.style;for(var a in i)o[a]!==i[a]&&(o[a]=i[a]);o.fill=i.fill?i.decal:null,o.decal=null,o.shadowColor=null,i.strokeFirst&&(o.stroke=null);for(var s=0;s.5?sy:e>.2?uy:ly}if(t)return ly}return sy},n.prototype.getInsideTextStroke=function(t){var e=this.style.fill;if(C(e)){var n=this.__zr,i=!(!n||!n.isDarkMode()),r=gn(t,0)0))},n.prototype.hasFill=function(){var t=this.style,e=t.fill;return null!=e&&"none"!==e},n.prototype.getBoundingRect=function(){var t=this._rect,e=this.style,n=!t;if(n){var i=!1;this.path||(i=!0,this.createPathProxy());var r=this.path;(i||this.__dirty&Cv)&&(r.beginPath(),this.buildPath(r,this.shape,!1),this.pathUpdated()),t=r.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||n){o.copy(t);var a=e.strokeNoScale?this.getLineScale():1,s=e.lineWidth;if(!this.hasFill()){var l=this.strokeContainThreshold;s=Math.max(s,null==l?4:l)}a>1e-10&&(o.width+=s/a,o.height+=s/a,o.x-=s/a/2,o.y-=s/a/2)}return o}return t},n.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect(),r=this.style;if(t=n[0],e=n[1],i.contain(t,e)){var o=this.path;if(this.hasStroke()){var a=r.lineWidth,s=r.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(this.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),bo(o,a/s,t,e)))return!0}if(this.hasFill())return wo(o,t,e)}return!1},n.prototype.dirtyShape=function(){this.__dirty|=Cv,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},n.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},n.prototype.animateShape=function(t){return this.animate("shape",t)},n.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():"shape"===t?this.dirtyShape():this.markRedraw()},n.prototype.attrKV=function(e,n){"shape"===e?this.setShape(n):t.prototype.attrKV.call(this,e,n)},n.prototype.setShape=function(t,e){var n=this.shape;return n||(n=this.shape={}),"string"==typeof t?n[t]=e:h(n,t),this.dirtyShape(),this},n.prototype.shapeChanged=function(){return!!(this.__dirty&Cv)},n.prototype.createStyle=function(t){return q(p_,t)},n.prototype._innerSaveToNormal=function(e){t.prototype._innerSaveToNormal.call(this,e);var n=this._normalState;e.shape&&!n.shape&&(n.shape=h({},this.shape))},n.prototype._applyStateObj=function(e,n,i,r,o,a){t.prototype._applyStateObj.call(this,e,n,i,r,o,a);var s,l=!(n&&r);if(n&&n.shape?o?r?s=n.shape:(s=h({},i.shape),h(s,n.shape)):(s=h({},r?this.shape:i.shape),h(s,n.shape)):l&&(s=i.shape),s)if(o){this.shape=h({},this.shape);for(var u={},c=w(s),p=0;p0},n.prototype.hasFill=function(){var t=this.style,e=t.fill;return null!=e&&"none"!==e},n.prototype.createStyle=function(t){return q(v_,t)},n.prototype.setBoundingRect=function(t){this._rect=t},n.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var e=t.text;null!=e?e+="":e="";var n=Qn(e,t.font,t.textAlign,t.textBaseline);if(n.x+=t.x||0,n.y+=t.y||0,this.hasStroke()){var i=t.lineWidth;n.x-=i/2,n.y-=i/2,n.width+=i,n.height+=i}this._rect=n}return this._rect},n.initDefaultProps=function(){var t=n.prototype;t.dirtyRectTolerance=10}(),n}(_m);y_.prototype.type="tspan";var m_=c({x:0,y:0},gm),__={style:c({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},vm.style)},x_=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.prototype.createStyle=function(t){return q(m_,t)},n.prototype._getSize=function(t){var e=this.style,n=e[t];if(null!=n)return n;var i=So(e.image)?e.image:this.__image;if(!i)return 0;var r="width"===t?"height":"width",o=e[r];return null==o?i[t]:i[t]/i[r]*o},n.prototype.getWidth=function(){return this._getSize("width")},n.prototype.getHeight=function(){return this._getSize("height")},n.prototype.getAnimationStyleProps=function(){return __},n.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new Dy(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},n}(_m);x_.prototype.type="image";var w_=Math.round,b_=function(){function t(){this.x=0,this.y=0,this.width=0,this.height=0}return t}(),S_={},M_=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.getDefaultShape=function(){return new b_},n.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=Co(S_,e,this.style);n=a.x,i=a.y,r=a.width,o=a.height,a.r=e.r,e=a}else n=e.x,i=e.y,r=e.width,o=e.height;e.r?Mo(t,e):t.rect(n,i,r,o)},n.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},n}(g_);M_.prototype.type="rect";var T_={fill:"#000"},C_=2,I_={style:c({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},vm.style)},D_=function(t){function n(e){var n=t.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=T_,n.attr(e),n}return e(n,t),n.prototype.childrenRef=function(){return this._children},n.prototype.update=function(){t.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var e=0;e0,T=null!=t.width&&("truncate"===t.overflow||"break"===t.overflow||"breakAll"===t.overflow),C=r.calculatedLineHeight,I=0;IM&&(D=x[M],!D.align||"left"===D.align);)this._placeToken(D,t,b,g,T,"left",y),S-=D.width,T+=D.width,M++;for(;I>=0&&(D=x[I],"right"===D.align);)this._placeToken(D,t,b,g,C,"right",y),S-=D.width,C-=D.width,I--;for(T+=(i-(T-d)-(v-C)-S)/2;I>=M;)D=x[M],this._placeToken(D,t,b,g,T+D.width/2,"center",y),T+=D.width,M++;g+=b}},n.prototype._placeToken=function(t,e,n,i,r,o,a){var s=e.rich[t.styleName]||{};s.text=t.text;var l=t.verticalAlign,u=i+n/2;"top"===l?u=i+t.height/2:"bottom"===l&&(u=i+n-t.height/2);var h=!t.isLineHolder&&Lo(s);h&&this._renderBackground(s,e,"right"===o?r-t.width:"center"===o?r-t.width/2:r,u-t.height/2,t.width,t.height);var c=!!s.backgroundColor,p=t.textPadding;p&&(r=Po(r,o,p),u-=t.height/2-p[0]-t.innerHeight/2);var f=this._getOrCreateChild(y_),d=f.createStyle();f.useStyle(d);var g=this._defaultStyle,v=!1,y=0,m=Oo("fill"in s?s.fill:"fill"in e?e.fill:(v=!0,g.fill)),_=Ao("stroke"in s?s.stroke:"stroke"in e?e.stroke:c||a||g.autoStroke&&!v?null:(y=C_,g.stroke)),x=s.textShadowBlur>0||e.textShadowBlur>0;d.text=t.text,d.x=r,d.y=u,x&&(d.shadowBlur=s.textShadowBlur||e.textShadowBlur||0,d.shadowColor=s.textShadowColor||e.textShadowColor||"transparent",d.shadowOffsetX=s.textShadowOffsetX||e.textShadowOffsetX||0,d.shadowOffsetY=s.textShadowOffsetY||e.textShadowOffsetY||0),d.textAlign=o,d.textBaseline="middle",d.font=t.font||Ay,d.opacity=N(s.opacity,e.opacity,1),_&&(d.lineWidth=N(s.lineWidth,e.lineWidth,y),d.lineDash=F(s.lineDash,e.lineDash),d.lineDashOffset=e.lineDashOffset||0,d.stroke=_),m&&(d.fill=m);var w=t.contentWidth,b=t.contentHeight;f.setBoundingRect(new Dy(ti(d.x,w,d.textAlign),ei(d.y,b,d.textBaseline),w,b))},n.prototype._renderBackground=function(t,e,n,i,r,o){var a,s,l=t.backgroundColor,u=t.borderWidth,h=t.borderColor,c=l&&l.image,p=l&&!c,f=t.borderRadius,d=this;if(p||t.lineHeight||u&&h){a=this._getOrCreateChild(M_),a.useStyle(a.createStyle()),a.style.fill=null;var g=a.shape;g.x=n,g.y=i,g.width=r,g.height=o,g.r=f,a.dirtyShape()}if(p){var v=a.style;v.fill=l||null,v.fillOpacity=F(t.fillOpacity,1)}else if(c){s=this._getOrCreateChild(x_),s.onload=function(){d.dirtyStyle()};var y=s.style;y.image=l.image,y.x=n,y.y=i,y.width=r,y.height=o}if(u&&h){var v=a.style;v.lineWidth=u,v.stroke=h,v.strokeOpacity=F(t.strokeOpacity,1),v.lineDash=t.borderDash,v.lineDashOffset=t.borderDashOffset||0,a.strokeContainThreshold=0,a.hasFill()&&a.hasStroke()&&(v.strokeFirst=!0,v.lineWidth*=2)}var m=(a||s).style;m.shadowBlur=t.shadowBlur||0,m.shadowColor=t.shadowColor||"transparent",m.shadowOffsetX=t.shadowOffsetX||0,m.shadowOffsetY=t.shadowOffsetY||0,m.opacity=N(t.opacity,e.opacity,1)},n.makeFont=function(t){var e="";if(t.fontSize||t.fontFamily||t.fontWeight){var n="";n="string"!=typeof t.fontSize||-1===t.fontSize.indexOf("px")&&-1===t.fontSize.indexOf("rem")&&-1===t.fontSize.indexOf("em")?isNaN(+t.fontSize)?"12px":t.fontSize+"px":t.fontSize,e=[t.fontStyle,t.fontWeight,n,t.fontFamily||"sans-serif"].join(" ")}return e&&G(e)||t.textFont||t.font},n}(_m),k_={left:!0,right:1,center:1},A_={top:1,bottom:1,middle:1},O_=ar(),P_=function(t,e,n,i){if(i){var r=O_(i);r.dataIndex=n,r.dataType=e,r.seriesIndex=t,"group"===i.type&&i.traverse(function(i){var r=O_(i);r.seriesIndex=t,r.dataIndex=n,r.dataType=e})}},R_=1,L_={},z_=ar(),E_=0,B_=1,F_=2,N_=["emphasis","blur","select"],V_=["normal","emphasis","blur","select"],H_=10,W_=9,G_="highlight",U_="downplay",X_="select",Y_="unselect",Z_="toggleSelect",q_=new Lv(100),j_=["emphasis","blur","select"],K_={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"},$_=r_.CMD,J_=[[],[],[]],Q_=Math.sqrt,tx=Math.atan2,ex=Math.sqrt,nx=Math.sin,ix=Math.cos,rx=Math.PI,ox=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,ax=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g,sx=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.prototype.applyTransform=function(){},n}(g_),lx=function(){function t(){this.cx=0,this.cy=0,this.r=0}return t}(),ux=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.getDefaultShape=function(){return new lx},n.prototype.buildPath=function(t,e,n){n&&t.moveTo(e.cx+e.r,e.cy),t.arc(e.cx,e.cy,e.r,0,2*Math.PI)},n}(g_);ux.prototype.type="circle";var hx=function(){function t(){this.cx=0,this.cy=0,this.rx=0,this.ry=0}return t}(),cx=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.getDefaultShape=function(){return new hx},n.prototype.buildPath=function(t,e){var n=.5522848,i=e.cx,r=e.cy,o=e.rx,a=e.ry,s=o*n,l=a*n;t.moveTo(i-o,r),t.bezierCurveTo(i-o,r-l,i-s,r-a,i,r-a),t.bezierCurveTo(i+s,r-a,i+o,r-l,i+o,r),t.bezierCurveTo(i+o,r+l,i+s,r+a,i,r+a),t.bezierCurveTo(i-s,r+a,i-o,r+l,i-o,r),t.closePath()},n}(g_);cx.prototype.type="ellipse";var px=Math.PI,fx=2*px,dx=Math.sin,gx=Math.cos,vx=Math.acos,yx=Math.atan2,mx=Math.abs,_x=Math.sqrt,xx=Math.max,bx=Math.min,Sx=1e-4,Mx=function(){function t(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0,this.cornerRadius=0,this.innerCornerRadius=0}return t}(),Tx=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.getDefaultShape=function(){return new Mx},n.prototype.buildPath=function(t,e){Na(t,e)},n.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},n}(g_);Tx.prototype.type="sector";var Cx=function(){function t(){this.cx=0,this.cy=0,this.r=0,this.r0=0}return t}(),Ix=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.getDefaultShape=function(){return new Cx},n.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=2*Math.PI;t.moveTo(n+e.r,i),t.arc(n,i,e.r,0,r,!1),t.moveTo(n+e.r0,i),t.arc(n,i,e.r0,0,r,!0)},n}(g_);Ix.prototype.type="ring";var Dx=function(){function t(){this.points=null,this.smooth=0,this.smoothConstraint=null}return t}(),kx=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.getDefaultShape=function(){return new Dx},n.prototype.buildPath=function(t,e){Ga(t,e,!0)},n}(g_);kx.prototype.type="polygon";var Ax=function(){function t(){this.points=null,this.percent=1,this.smooth=0,this.smoothConstraint=null}return t}(),Ox=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},n.prototype.getDefaultShape=function(){return new Ax},n.prototype.buildPath=function(t,e){Ga(t,e,!1)},n}(g_);Ox.prototype.type="polyline";var Px={},Rx=function(){function t(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.percent=1}return t}(),Lx=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},n.prototype.getDefaultShape=function(){return new Rx},n.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=To(Px,e,this.style);n=a.x1,i=a.y1,r=a.x2,o=a.y2}else n=e.x1,i=e.y1,r=e.x2,o=e.y2;var s=e.percent;0!==s&&(t.moveTo(n,i),1>s&&(r=n*(1-s)+r*s,o=i*(1-s)+o*s),t.lineTo(r,o))},n.prototype.pointAt=function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]},n}(g_);Lx.prototype.type="line";var zx=[],Ex=function(){function t(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.cpx1=0,this.cpy1=0,this.percent=1}return t}(),Bx=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},n.prototype.getDefaultShape=function(){return new Ex},n.prototype.buildPath=function(t,e){var n=e.x1,i=e.y1,r=e.x2,o=e.y2,a=e.cpx1,s=e.cpy1,l=e.cpx2,u=e.cpy2,h=e.percent;0!==h&&(t.moveTo(n,i),null==l||null==u?(1>h&&(Jr(n,a,r,h,zx),a=zx[1],r=zx[2],Jr(i,s,o,h,zx),s=zx[1],o=zx[2]),t.quadraticCurveTo(a,s,r,o)):(1>h&&(Xr(n,a,l,r,h,zx),a=zx[1],l=zx[2],r=zx[3],Xr(i,s,u,o,h,zx),s=zx[1],u=zx[2],o=zx[3]),t.bezierCurveTo(a,s,l,u,r,o)))},n.prototype.pointAt=function(t){return Ua(this.shape,t,!1)},n.prototype.tangentAt=function(t){var e=Ua(this.shape,t,!0);return he(e,e)},n}(g_);Bx.prototype.type="bezier-curve";var Fx=function(){function t(){this.cx=0,this.cy=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0}return t}(),Nx=function(t){function n(e){return t.call(this,e)||this}return e(n,t),n.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},n.prototype.getDefaultShape=function(){return new Fx},n.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r,0),o=e.startAngle,a=e.endAngle,s=e.clockwise,l=Math.cos(o),u=Math.sin(o);t.moveTo(l*r+n,u*r+i),t.arc(n,i,r,o,a,!s)},n}(g_);Nx.prototype.type="arc";var Vx=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="compound",e}return e(n,t),n.prototype._updatePathDirty=function(){for(var t=this.shape.paths,e=this.shapeChanged(),n=0;nn;n++)this._corners[n]=new _y;for(var n=0;2>n;n++)this._axes[n]=new _y;t&&this.fromBoundingRect(t,e)}return t.prototype.fromBoundingRect=function(t,e){var n=this._corners,i=this._axes,r=t.x,o=t.y,a=r+t.width,s=o+t.height;if(n[0].set(r,o),n[1].set(a,o),n[2].set(a,s),n[3].set(r,s),e)for(var l=0;4>l;l++)n[l].transform(e);_y.sub(i[0],n[1],n[0]),_y.sub(i[1],n[3],n[0]),i[0].normalize(),i[1].normalize();for(var l=0;2>l;l++)this._origin[l]=i[l].dot(n[0])},t.prototype.intersect=function(t,e){var n=!0,i=!e;return Yx.set(1/0,1/0),Zx.set(0,0),!this._intersectCheckOneSide(this,t,Yx,Zx,i,1)&&(n=!1,i)?n:!this._intersectCheckOneSide(t,this,Yx,Zx,i,-1)&&(n=!1,i)?n:(i||_y.copy(e,n?Yx:Zx),n)},t.prototype._intersectCheckOneSide=function(t,e,n,i,r,o){for(var a=!0,s=0;2>s;s++){var l=this._axes[s];if(this._getProjMinMaxOnAxis(s,t._corners,Ux),this._getProjMinMaxOnAxis(s,e._corners,Xx),Ux[1]Xx[1]){if(a=!1,r)return a;var u=Math.abs(Xx[0]-Ux[1]),h=Math.abs(Ux[0]-Xx[1]);Math.min(u,h)>i.len()&&(h>u?_y.scale(i,l,-u*o):_y.scale(i,l,h*o))}else if(n){var u=Math.abs(Xx[0]-Ux[1]),h=Math.abs(Ux[0]-Xx[1]);Math.min(u,h)u?_y.scale(n,l,u*o):_y.scale(n,l,-h*o))}}return a},t.prototype._getProjMinMaxOnAxis=function(t,e,n){for(var i=this._axes[t],r=this._origin,o=e[0].dot(i)+r[t],a=o,s=o,l=1;l-1?ww:Sw}():Sw;Os(bw,_w),Os(ww,xw);var Iw=1e3,Dw=60*Iw,kw=60*Dw,Aw=24*kw,Ow=365*Aw,Pw={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},Rw="{yyyy}-{MM}-{dd}",Lw={year:"{yyyy}",month:"{yyyy}-{MM}",day:Rw,hour:Rw+" "+Pw.hour,minute:Rw+" "+Pw.minute,second:Rw+" "+Pw.second,millisecond:Pw.none},zw=["year","month","day","hour","minute","second","millisecond"],Ew=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"],Bw=H,Fw=/([&<>"'])/g,Nw={"&":"&","<":"<",">":">",'"':""","'":"'"},Vw=["a","b","c","d","e","f","g"],Hw=function(t,e){return"{"+t+(null==e?"":e)+"}"},Ww=v,Gw=["left","right","top","bottom","width","height"],Uw=[["width","left","right"],["height","top","bottom"]],Xw=fl,Yw=(S(fl,"vertical"),S(fl,"horizontal"),ar()),Zw=function(t){function n(e,n,i){var r=t.call(this,e,n,i)||this;return r.uid=Is("ec_cpt_model"),r}return e(n,t),n.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n)},n.prototype.mergeDefaultAndTheme=function(t,e){var n=gl(this),i=n?yl(t):{},r=e.getTheme();l(t,r.get(this.mainType)),l(t,this.getDefaultOption()),n&&vl(t,i,n)},n.prototype.mergeOption=function(t){l(this.option,t,!0);var e=gl(this);e&&vl(this.option,t,e)},n.prototype.optionUpdated=function(){},n.prototype.getDefaultOption=function(){var t=this.constructor;if(!gr(t))return t.defaultOption;var e=Yw(this);if(!e.defaultOption){for(var n=[],i=t;i;){var r=i.prototype.defaultOption;r&&n.push(r),i=i.superClass}for(var o={},a=n.length-1;a>=0;a--)o=l(o,n[a],!0);e.defaultOption=o}return e.defaultOption},n.prototype.getReferringComponents=function(t,e){var n=t+"Index",i=t+"Id";return ur(this.ecModel,t,{index:this.get(n,!0),id:this.get(i,!0)},e)},n.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},n.protoInitialize=function(){var t=n.prototype;t.type="component",t.id="",t.name="",t.mainType="",t.subType="",t.componentIndex=0}(),n}(yw);mr(Zw,yw),br(Zw),Ds(Zw),ks(Zw,_l);var qw="";"undefined"!=typeof navigator&&(qw=navigator.platform||"");var jw,Kw,$w="rgba(0, 0, 0, 0.2)",Jw={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:$w,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:$w,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:$w,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:$w,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:$w,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:$w,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:qw.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},Qw=Y(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),tb="original",eb="arrayRows",nb="objectRows",ib="keyedColumns",rb="typedArray",ob="unknown",ab="column",sb="row",lb={Must:1,Might:2,Not:3},ub=ar(),hb=Y(),cb=ar(),pb=(ar(),function(){function t(){}return t.prototype.getColorFromPalette=function(t,e,n){var i=Hi(this.get("color",!0)),r=this.get("colorLayer",!0);return Dl(this,cb,i,r,t,e,n)},t.prototype.clearColorPalette=function(){kl(this,cb)},t}()),fb="\x00_ec_inner",db=1,gb=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return e(n,t),n.prototype.init=function(t,e,n,i,r,o){i=i||{},this.option=null,this._theme=new yw(i),this._locale=new yw(r),this._optionManager=o},n.prototype.setOption=function(t,e,n){var i=Ll(e);this._optionManager.setOption(t,n,i),this._resetOption(null,i)},n.prototype.resetOption=function(t,e){return this._resetOption(t,Ll(e))},n.prototype._resetOption=function(t,e){var n=!1,i=this._optionManager;if(!t||"recreate"===t){var r=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(r,e)):Kw(this,r),n=!0}if(("timeline"===t||"media"===t)&&this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(n=!0,this._mergeOption(o,e))}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this);a.length&&v(a,function(t){n=!0,this._mergeOption(t,e)},this)}return n},n.prototype.mergeOption=function(t){this._mergeOption(t,null)},n.prototype._mergeOption=function(t,e){function n(e){var n=Cl(this,e,Hi(t[e])),a=r.get(e),s=a?c&&c.get(e)?"replaceMerge":"normalMerge":"replaceAll",l=Xi(a,n,s);ir(l,e,Zw),i[e]=null,r.set(e,null),o.set(e,0);var u=[],p=[],f=0;v(l,function(t,n){var i=t.existing,r=t.newOption;if(r){var o="series"===e,a=Zw.getClass(e,t.keyInfo.subType,!o);if(!a)return;if(i&&i.constructor===a)i.name=t.keyInfo.name,i.mergeOption(r,this),i.optionUpdated(r,!1);else{var s=h({componentIndex:n},t.keyInfo);i=new a(r,this,this,s),h(i,s),t.brandNew&&(i.__requireNewView=!0),i.init(r,this,this),i.optionUpdated(null,!0)}}else i&&(i.mergeOption({},this),i.optionUpdated({},!1));i?(u.push(i.option),p.push(i),f++):(u.push(void 0),p.push(void 0))},this),i[e]=u,r.set(e,p),o.set(e,f),"series"===e&&jw(this)}var i=this.option,r=this._componentsMap,o=this._componentsCount,a=[],u=Y(),c=e&&e.replaceMergeMainTypeMap;xl(this),v(t,function(t,e){null!=t&&(Zw.hasClass(e)?e&&(a.push(e),u.set(e,!0)):i[e]=null==i[e]?s(t):l(i[e],t,!0))}),c&&c.each(function(t,e){Zw.hasClass(e)&&!u.get(e)&&(a.push(e),u.set(e,!0))}),Zw.topologicalTravel(a,Zw.getAllClassMainTypes(),n,this),this._seriesIndices||jw(this)},n.prototype.getOption=function(){var t=s(this.option);return v(t,function(e,n){if(Zw.hasClass(n)){for(var i=Hi(e),r=i.length,o=!1,a=r-1;a>=0;a--)i[a]&&!nr(i[a])?o=!0:(i[a]=null,!o&&r--);i.length=r,t[n]=i}}),delete t[fb],t},n.prototype.getTheme=function(){return this._theme},n.prototype.getLocaleModel=function(){return this._locale},n.prototype.setUpdatePayload=function(t){this._payload=t},n.prototype.getUpdatePayload=function(){return this._payload},n.prototype.getComponent=function(t,e){var n=this._componentsMap.get(t);if(n){var i=n[e||0];if(i)return i;if(null==e)for(var r=0;ra;a++)El(n[a].query,t,e)&&r.push(a);return!r.length&&i&&(r=[-1]),r.length&&!Fl(r,this._currentMediaIndices)&&(o=y(r,function(t){return s(-1===t?i.option:n[t].option)})),this._currentMediaIndices=r,o},t}(),Db=v,kb=k,Ab=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"],Ob=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],Pb=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],Rb=[["borderRadius","barBorderRadius"],["borderColor","barBorderColor"],["borderWidth","barBorderWidth"]],Lb=function(){function t(t){this.data=t.data||(t.sourceFormat===ib?{}:[]),this.sourceFormat=t.sourceFormat||ob,this.seriesLayoutBy=t.seriesLayoutBy||ab,this.startIndex=t.startIndex||0,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.metaRawOption=t.metaRawOption;var e=this.dimensionsDefine=t.dimensionsDefine;if(e)for(var n=0;no;o++)e[o]=n[r+o];return e},i=function(t,e,n,i){for(var r=this._data,o=this._dimSize,a=0;o>a;a++){for(var s=i[a],l=null==s[0]?1/0:s[0],u=null==s[1]?-1/0:s[1],h=e-t,c=n[a],p=0;h>p;p++){var f=r[p*o+a];c[t+p]=f,l>f&&(l=f),f>u&&(u=f)}s[0]=l,s[1]=u}},r=function(){return this._data?this._data.length/this._dimSize:0};e={},e[eb+"_"+ab]={pure:!0,appendData:t},e[eb+"_"+sb]={pure:!0,appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: "row".')}},e[nb]={pure:!0,appendData:t},e[ib]={pure:!0,appendData:function(t){var e=this._data;v(t,function(t,n){for(var i=e[n]||(e[n]=[]),r=0;r<(t||[]).length;r++)i.push(t[r])})}},e[tb]={appendData:t},e[rb]={persistent:!1,pure:!0,appendData:function(t){this._data=t},clean:function(){this._offset+=this.count(),this._data=null}},_b=e}(),t}(),Eb=function(t,e,n,i){return t[i]},Bb=(vb={},vb[eb+"_"+ab]=function(t,e,n,i){return t[i+e]},vb[eb+"_"+sb]=function(t,e,n,i,r){i+=e;for(var o=r||[],a=t,s=0;s=0&&(s=o.interpolatedValue[l])}return null!=s?s+"":""})}},t.prototype.getRawValue=function(t,e){return _u(this.getData(e),t)},t.prototype.formatTooltip=function(){},t}(),Ub=function(){function t(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0}return t.prototype.perform=function(t){function e(t){return!(t>=1)&&(t=1),t}var n=this._upstream,i=t&&t.skip;if(this._dirty&&n){var r=this.context;r.data=r.outputData=n.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var o;this._plan&&!i&&(o=this._plan(this.context));var a=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),u=t&&t.modDataCount||0;(a!==l||s!==u)&&(o="reset");var h;(this._dirty||"reset"===o)&&(this._dirty=!1,h=this._doReset(i)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var p=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!i&&(h||f>p)){var d=this._progress;if(M(d))for(var g=0;gi?i++:null}function e(){var t=i%a*r+Math.ceil(i/a),e=i>=n?null:o>t?t:i;return i++,e}var n,i,r,o,a,s={reset:function(l,u,h,c){i=l,n=u,r=h,o=c,a=Math.ceil(o/r),s.next=r>1&&o>0?e:t}};return s}(),Yb=(Y({number:function(t){return parseFloat(t)},time:function(t){return+ki(t)},trim:function(t){return"string"==typeof t?G(t):t}}),{lt:function(t,e){return e>t},lte:function(t,e){return e>=t},gt:function(t,e){return t>e},gte:function(t,e){return t>=e}}),Zb=(function(){function t(t,e){if("number"!=typeof e){var n="";Vi(n)}this._opFn=Yb[t],this._rvalFloat=zi(e)}return t.prototype.evaluate=function(t){return"number"==typeof t?this._opFn(t,this._rvalFloat):this._opFn(zi(t),this._rvalFloat)},t}(),function(){function t(t,e){var n="desc"===t;this._resultLT=n?1:-1,null==e&&(e=n?"min":"max"),this._incomparable="min"===e?-1/0:1/0}return t.prototype.evaluate=function(t,e){var n=typeof t,i=typeof e,r="number"===n?t:zi(t),o="number"===i?e:zi(e),a=isNaN(r),s=isNaN(o);if(a&&(r=this._incomparable),s&&(o=this._incomparable),a&&s){var l="string"===n,u="string"===i;l&&(r=u?t:0),u&&(o=l?e:0)}return o>r?this._resultLT:r>o?-this._resultLT:0},t}(),function(){function t(t,e){this._rval=e,this._isEQ=t,this._rvalTypeof=typeof e,this._rvalFloat=zi(e)}return t.prototype.evaluate=function(t){var e=t===this._rval;if(!e){var n=typeof t;n===this._rvalTypeof||"number"!==n&&"number"!==this._rvalTypeof||(e=zi(t)===this._rvalFloat)}return this._isEQ?e:!e},t}(),function(){function t(){}return t.prototype.getRawData=function(){throw new Error("not supported")},t.prototype.getRawDataItem=function(){throw new Error("not supported")},t.prototype.cloneRawData=function(){},t.prototype.getDimensionInfo=function(){},t.prototype.cloneAllDimensionInfo=function(){},t.prototype.count=function(){},t.prototype.retrieveValue=function(){},t.prototype.retrieveValueFromItem=function(){},t.prototype.convertValue=function(t,e){return wu(t,e)},t}()),qb=Y(),jb="undefined",Kb=typeof Uint32Array===jb?Array:Uint32Array,$b=typeof Uint16Array===jb?Array:Uint16Array,Jb=typeof Int32Array===jb?Array:Int32Array,Qb=typeof Float64Array===jb?Array:Float64Array,tS={"float":Qb,"int":Jb,ordinal:Array,number:Array,time:Qb},eS=function(){function t(){this._chunks=[],this._rawExtent=[],this._extent=[],this._count=0,this._rawCount=0,this._calcDimNameToIdx=Y()}return t.prototype.initData=function(t,e,n){this._provider=t,this._chunks=[],this._indices=null,this.getRawIndex=this._getRawIdxIdentity;var i=t.getSource(),r=this.defaultDimValueGetter=wb[i.sourceFormat];this._dimValueGetter=n||r,this._rawExtent=[];du(i);this._dimensions=y(e,function(t){return{type:t.type,property:t.property}}),this._initDataFromProvider(0,t.count())},t.prototype.getProvider=function(){return this._provider},t.prototype.getSource=function(){return this._provider.getSource()},t.prototype.ensureCalculationDimension=function(t,e){var n=this._calcDimNameToIdx,i=this._dimensions,r=n.get(t);if(null!=r){if(i[r].type===e)return r}else r=i.length;return i[r]={type:e},n.set(t,r),this._chunks[r]=new tS[e||"float"](this._rawCount),this._rawExtent[r]=Pu(),r},t.prototype.collectOrdinalMeta=function(t,e){var n=this._chunks[t],i=this._dimensions[t],r=this._rawExtent,o=i.ordinalOffset||0,a=n.length;0===o&&(r[t]=Pu());for(var s=r[t],l=o;a>l;l++){var u=n[l]=e.parseAndCollect(n[l]);s[0]=Math.min(u,s[0]),s[1]=Math.max(u,s[1])}i.ordinalMeta=e,i.ordinalOffset=a,i.type="ordinal"},t.prototype.getOrdinalMeta=function(t){var e=this._dimensions[t],n=e.ordinalMeta;return n},t.prototype.getDimensionProperty=function(t){var e=this._dimensions[t];return e&&e.property},t.prototype.appendData=function(t){var e=this._provider,n=this.count();e.appendData(t);var i=e.count();return e.persistent||(i+=n),i>n&&this._initDataFromProvider(n,i,!0),[n,i]},t.prototype.appendValues=function(t,e){for(var n=this._chunks,i=this._dimensions,r=i.length,o=this._rawExtent,a=this.count(),s=a+Math.max(t.length,e||0),l=0;r>l;l++){var u=i[l];Lu(n,l,u.type,s,!0)}for(var h=[],c=a;s>c;c++)for(var p=c-a,f=0;r>f;f++){var u=i[f],d=wb.arrayRows.call(this,t[p]||h,u.property,p,f);n[f][c]=d;var g=o[f];dg[1]&&(g[1]=d)}return this._rawCount=this._count=s,{start:a,end:s}},t.prototype._initDataFromProvider=function(t,e,n){for(var i=this._provider,r=this._chunks,o=this._dimensions,a=o.length,s=this._rawExtent,l=y(o,function(t){return t.property}),u=0;a>u;u++){var h=o[u];s[u]||(s[u]=Pu()),Lu(r,u,h.type,e,n)}if(i.fillStorage)i.fillStorage(t,e,r,s);else for(var c=[],p=t;e>p;p++){c=i.getItem(p,c);for(var f=0;a>f;f++){var d=r[f],g=this._dimValueGetter(c,l[f],p,f);d[p]=g;var v=s[f];gv[1]&&(v[1]=g)}}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=e,this._extent=[]},t.prototype.count=function(){return this._count},t.prototype.get=function(t,e){if(!(e>=0&&er;r++)n.push(this.get(i[r],e));return n},t.prototype.getByRawIndex=function(t,e){if(!(e>=0&&ei;i++){var o=this.get(t,i);isNaN(o)||(n+=o)}return n},t.prototype.getMedian=function(t){var e=[];this.each([t],function(t){isNaN(t)||e.push(t)});var n=e.sort(function(t,e){return t-e}),i=this.count();return 0===i?0:i%2===1?n[(i-1)/2]:(n[i/2]+n[i/2-1])/2},t.prototype.indexOfRawIndex=function(t){if(t>=this._rawCount||0>t)return-1;if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&n=i;){var o=(i+r)/2|0;if(e[o]t))return o;r=o-1}}return-1},t.prototype.indicesOfNearest=function(t,e,n){var i=this._chunks,r=i[t],o=[];if(!r)return o;null==n&&(n=1/0);for(var a=1/0,s=-1,l=0,u=0,h=this.count();h>u;u++){var c=this.getRawIndex(u),p=e-r[c],f=Math.abs(p);n>=f&&((a>f||f===a&&p>=0&&0>s)&&(a=f,s=p,l=0),p===s&&(o[l++]=u))}return o.length=l,o},t.prototype.getIndices=function(){var t,e=this._indices;if(e){var n=e.constructor,i=this._count;if(n===Array){t=new n(i);for(var r=0;i>r;r++)t[r]=e[r]}else t=new n(e.buffer,0,i)}else{var n=Ou(this._rawCount);t=new n(this.count());for(var r=0;rc;c++){var p=void 0,f=n.getRawIndex(c);if(0===s)p=e(c);else if(1===s){var d=h[u][f];p=e(d,c)}else{for(var g=0;s>g;g++)a[g]=h[t[g]][f];a[g]=c,p=e.apply(null,a)}p&&(o[l++]=f)}return i>l&&(n._indices=o),n._count=l,n._extent=[],n._updateGetRawIdx(),n},t.prototype.selectRange=function(t){var e=this.clone(),n=e._count;if(!n)return this;var i=w(t),r=i.length;if(!r)return this;var o=e.count(),a=Ou(e._rawCount),s=new a(o),l=0,u=i[0],h=t[u][0],c=t[u][1],p=e._chunks,f=!1;if(!e._indices){var d=0;if(1===r){for(var g=p[i[0]],v=0;n>v;v++){var y=g[v];(y>=h&&c>=y||isNaN(y))&&(s[l++]=d),d++}f=!0}else if(2===r){for(var g=p[i[0]],m=p[i[1]],_=t[i[1]][0],x=t[i[1]][1],v=0;n>v;v++){var y=g[v],b=m[v];(y>=h&&c>=y||isNaN(y))&&(b>=_&&x>=b||isNaN(b))&&(s[l++]=d),d++}f=!0}}if(!f)if(1===r)for(var v=0;o>v;v++){var S=e.getRawIndex(v),y=p[i[0]][S];(y>=h&&c>=y||isNaN(y))&&(s[l++]=S)}else for(var v=0;o>v;v++){for(var M=!0,S=e.getRawIndex(v),T=0;r>T;T++){var C=i[T],y=p[C][S];(yt[C][1])&&(M=!1)}M&&(s[l++]=e.getRawIndex(v))}return o>l&&(e._indices=s),e._count=l,e._extent=[],e._updateGetRawIdx(),e},t.prototype.map=function(t,e){var n=this.clone(t);return this._updateDims(n,t,e),n},t.prototype.modify=function(t,e){this._updateDims(this,t,e)},t.prototype._updateDims=function(t,e,n){for(var i=t._chunks,r=[],o=e.length,a=t.count(),s=[],l=t._rawExtent,u=0;uh;h++){for(var c=t.getRawIndex(h),p=0;o>p;p++)s[p]=i[e[p]][c];s[o]=h;var f=n&&n.apply(null,s);if(null!=f){"object"!=typeof f&&(r[0]=f,f=r);for(var u=0;uv[1]&&(v[1]=g)}}}},t.prototype.lttbDownSample=function(t,e){var n,i,r,o=this.clone([t],!0),a=o._chunks,s=a[t],l=this.count(),u=0,h=Math.floor(1/e),c=this.getRawIndex(0),p=new(Ou(this._rawCount))(Math.ceil(l/h)+2);p[u++]=c;for(var f=1;l-1>f;f+=h){for(var d=Math.min(f+h,l-1),g=Math.min(f+2*h,l),v=(g+d)/2,y=0,m=d;g>m;m++){var _=this.getRawIndex(m),x=s[_];isNaN(x)||(y+=x)}y/=g-d;var w=f,b=Math.min(f+h,l),S=f-1,M=s[c];n=-1,r=w;for(var m=w;b>m;m++){var _=this.getRawIndex(m),x=s[_];isNaN(x)||(i=Math.abs((S-v)*(x-M)-(S-m)*(y-M)),i>n&&(n=i,r=_))}p[u++]=r,c=r}return p[u++]=this.getRawIndex(l-1),o._count=u,o._indices=p,o.getRawIndex=this._getRawIdx,o},t.prototype.downSample=function(t,e,n,i){for(var r=this.clone([t],!0),o=r._chunks,a=[],s=Math.floor(1/e),l=o[t],u=this.count(),h=r._rawExtent[t]=Pu(),c=new(Ou(this._rawCount))(Math.ceil(u/s)),p=0,f=0;u>f;f+=s){s>u-f&&(s=u-f,a.length=s);for(var d=0;s>d;d++){var g=this.getRawIndex(f+d);a[d]=l[g]}var v=n(a),y=this.getRawIndex(Math.min(f+i(a,v)||0,u-1));l[y]=v,vh[1]&&(h[1]=v),c[p++]=y}return r._count=p,r._indices=c,r._updateGetRawIdx(),r},t.prototype.each=function(t,e){if(this._count)for(var n=t.length,i=this._chunks,r=0,o=this.count();o>r;r++){var a=this.getRawIndex(r);switch(n){case 0:e(r);break;case 1:e(i[t[0]][a],r);break;case 2:e(i[t[0]][a],i[t[1]][a],r);break;default:for(var s=0,l=[];n>s;s++)l[s]=i[t[s]][a];l[s]=r,e.apply(null,l)}}},t.prototype.getDataExtent=function(t){var e=this._chunks[t],n=Pu();if(!e)return n;var i,r=this.count(),o=!this._indices;if(o)return this._rawExtent[t].slice();if(i=this._extent[t])return i.slice();i=n;for(var a=i[0],s=i[1],l=0;r>l;l++){var u=this.getRawIndex(l),h=e[u];a>h&&(a=h),h>s&&(s=h)}return i=[a,s],this._extent[t]=i,i},t.prototype.getRawDataItem=function(t){var e=this.getRawIndex(t);if(this._provider.persistent)return this._provider.getItem(e);for(var n=[],i=this._chunks,r=0;ri;i++)e[i]=this._indices[i]}else e=new t(this._indices);return e}return null},t.prototype._getRawIdxIdentity=function(t){return t},t.prototype._getRawIdx=function(t){return t=0?this._indices[t]:-1},t.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},t.internalField=function(){function t(t,e,n,i){return wu(t[i],this._dimensions[i])}wb={arrayRows:t,objectRows:function(t,e,n,i){return wu(t[e],this._dimensions[i])},keyedColumns:t,original:function(t,e,n,i){var r=t&&(null==t.value?t:t.value);return wu(r instanceof Array?r[i]:r,this._dimensions[i])},typedArray:function(t,e,n,i){return t[i]}}}(),t}(),nS=function(){function t(t){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=t}return t.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},t.prototype._setLocalSource=function(t,e){this._sourceList=t,this._upstreamSignList=e,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},t.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},t.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},t.prototype._createSource=function(){this._setLocalSource([],[]);var t,e,n=this._sourceHost,i=this._getUpstreamSourceManagers(),r=!!i.length;if(Eu(n)){var o=n,a=void 0,s=void 0,l=void 0;if(r){var u=i[0];u.prepareSource(),l=u.getSource(),a=l.data,s=l.sourceFormat,e=[u._getVersionSign()]}else a=o.get("data",!0),s=O(a)?rb:tb,e=[];var h=this._getSourceMetaRawOption()||{},c=l&&l.metaRawOption||{},p=F(h.seriesLayoutBy,c.seriesLayoutBy)||null,f=F(h.sourceHeader,c.sourceHeader)||null,d=F(h.dimensions,c.dimensions),g=p!==c.seriesLayoutBy||!!f!=!!c.sourceHeader||d;t=g?[au(a,{seriesLayoutBy:p,sourceHeader:f,dimensions:d},s)]:[]}else{var v=n;if(r){var y=this._applyTransform(i);t=y.sourceList,e=y.upstreamSignList}else{var m=v.get("source",!0);t=[au(m,this._getSourceMetaRawOption(),null)],e=[]}}this._setLocalSource(t,e)},t.prototype._applyTransform=function(t){var e=this._sourceHost,n=e.get("transform",!0),i=e.get("fromTransformResult",!0);if(null!=i){var r="";1!==t.length&&Bu(r)}var o,a=[],s=[];return v(t,function(t){t.prepareSource();var e=t.getSource(i||0),n="";null==i||e||Bu(n),a.push(e),s.push(t._getVersionSign())}),n?o=Du(n,a,{datasetIndex:e.componentIndex}):null!=i&&(o=[lu(a[0])]),{sourceList:o,upstreamSignList:s}},t.prototype._isDirty=function(){if(this._dirty)return!0;for(var t=this._getUpstreamSourceManagers(),e=0;ethis.getShallow("animationThreshold")&&(t=!1),!!t},n.prototype.restoreData=function(){this.dataTask.dirty()},n.prototype.getColorFromPalette=function(t,e,n){var i=this.ecModel,r=pb.prototype.getColorFromPalette.call(this,t,e,n);return r||(r=i.getColorFromPalette(t,e,n)),r},n.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},n.prototype.getProgressive=function(){return this.get("progressive")},n.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},n.prototype.select=function(t,e){this._innerSelect(this.getData(e),t)},n.prototype.unselect=function(t,e){var n=this.option.selectedMap;if(n)for(var i=this.getData(e),r=0;r=0&&n.push(r)}return n},n.prototype.isSelected=function(t,e){var n=this.option.selectedMap;if(!n)return!1;var i=this.getData(e),r=Wu(i,t);return n[r]||!1},n.prototype.isUniversalTransitionEnabled=function(){if(this[rS])return!0;var t=this.option.universalTransition;return t?t===!0?!0:t&&t.enabled:!1},n.prototype._innerSelect=function(t,e){var n,i,r=this.option.selectedMode,o=e.length;if(r&&o)if("multiple"===r)for(var a=this.option.selectedMap||(this.option.selectedMap={}),s=0;o>s;s++){var l=e[s],u=Wu(t,l);a[u]=!0,this._selectedDataIndicesMap[u]=t.getRawIndex(l)}else if("single"===r||r===!0){var h=e[o-1],u=Wu(t,h);this.option.selectedMap=(n={},n[u]=!0,n),this._selectedDataIndicesMap=(i={},i[u]=t.getRawIndex(h),i)}},n.prototype._initSelectedMapFromData=function(t){if(!this.option.selectedMap){var e=[];t.hasItemOption&&t.each(function(n){var i=t.getRawDataItem(n);i&&i.selected&&e.push(n)}),e.length>0&&this._innerSelect(t,e)}},n.registerClass=function(t){return Zw.registerClass(t)},n.protoInitialize=function(){var t=n.prototype;t.type="series.__base__",t.seriesIndex=0,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",t.visualDrawType="fill"}(),n}(Zw);d(oS,Gb),d(oS,pb),mr(oS,Zw);var aS=function(){function t(){this.group=new Fy,this.uid=Is("viewComponent")}return t.prototype.init=function(){},t.prototype.render=function(){},t.prototype.dispose=function(){},t.prototype.updateView=function(){},t.prototype.updateLayout=function(){},t.prototype.updateVisual=function(){},t.prototype.blurSeries=function(){},t}();vr(aS),br(aS);var sS=ar(),lS=$u(),uS=function(){function t(){this.group=new Fy,this.uid=Is("viewChart"),this.renderTask=xu({plan:th,reset:eh}),this.renderTask.context={view:this}}return t.prototype.init=function(){},t.prototype.render=function(){},t.prototype.highlight=function(t,e,n,i){Qu(t.getData(),i,"emphasis")},t.prototype.downplay=function(t,e,n,i){Qu(t.getData(),i,"normal")},t.prototype.remove=function(){this.group.removeAll()},t.prototype.dispose=function(){},t.prototype.updateView=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateLayout=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},t.markUpdateMethod=function(t,e){sS(t).updateMethod=e},t.protoInitialize=function(){var e=t.prototype;e.type="chart"}(),t}();vr(uS,["dispose"]),br(uS);var hS,cS={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)}}},pS="\x00__throttleOriginMethod",fS="\x00__throttleRate",dS="\x00__throttleType",gS=ar(),vS={itemStyle:Sr(dw,!0),lineStyle:Sr(cw,!0)},yS={lineStyle:"stroke",itemStyle:"fill"},mS={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=t.getModel(i),o=oh(t,i),a=o(r),s=r.getShallow("decal");s&&(n.setVisual("decal",s),s.dirty=!0);var l=ah(t,i),u=a[l],c=T(u)?u:null,p="auto"===a.fill||"auto"===a.stroke;if(!a[l]||c||p){var f=t.getColorFromPalette(t.name,null,e.getSeriesCount());a[l]||(a[l]=f,n.setVisual("colorFromPalette",!0)),a.fill="auto"===a.fill||"function"==typeof a.fill?f:a.fill,a.stroke="auto"===a.stroke||"function"==typeof a.stroke?f:a.stroke }return n.setVisual("style",a),n.setVisual("drawType",l),!e.isSeriesFiltered(t)&&c?(n.setVisual("colorFromPalette",!1),{dataEach:function(e,n){var i=t.getDataParams(n),r=h({},a);r[l]=c(i),e.setItemVisual(n,"style",r)}}):void 0}},_S=new yw,xS={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(!t.ignoreStyleOnData&&!e.isSeriesFiltered(t)){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=oh(t,i),o=n.getVisual("drawType");return{dataEach:n.hasItemOption?function(t,e){var n=t.getRawDataItem(e);if(n&&n[i]){_S.option=n[i];var a=r(_S),s=t.ensureUniqueItemVisual(e,"style");h(s,a),_S.option.decal&&(t.setItemVisual(e,"decal",_S.option.decal),_S.option.decal.dirty=!0),o in a&&t.setItemVisual(e,"colorFromPalette",!1)}}:null}}}},wS={performRawSeries:!0,overallReset:function(t){var e=Y();t.eachSeries(function(t){var n=t.getColorBy();if(!t.isColorBySeries()){var i=t.type+"-"+n,r=e.get(i);r||(r={},e.set(i,r)),gS(t).scope=r}}),t.eachSeries(function(e){if(!e.isColorBySeries()&&!t.isSeriesFiltered(e)){var n=e.getRawData(),i={},r=e.getData(),o=gS(e).scope,a=e.visualStyleAccessPath||"itemStyle",s=ah(e,a);r.each(function(t){var e=r.getRawIndex(t);i[e]=t}),n.each(function(t){var a=i[t],l=r.getItemVisual(a,"colorFromPalette");if(l){var u=r.ensureUniqueItemVisual(a,"style"),h=n.getName(t)||t+"",c=n.count();u[s]=e.getColorFromPalette(h,o,c)}})}})}},bS=Math.PI,SS=function(){function t(t,e,n,i){this._stageTaskMap=Y(),this.ecInstance=t,this.api=e,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}return t.prototype.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each(function(t){var e=t.overallTask;e&&e.dirty()})},t.prototype.getPerformArgs=function(t,e){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),i=n.context,r=!e&&n.progressiveEnabled&&(!i||i.progressiveRender)&&t.__idxInPipeline>n.blockIndex,o=r?n.step:null,a=i&&i.modDataCount,s=null!=a?Math.ceil(a/o):null;return{step:o,modBy:s,modDataCount:a}}},t.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},t.prototype.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData(),r=i.count(),o=n.progressiveEnabled&&e.incrementalPrepareRender&&r>=n.threshold,a=t.get("large")&&r>=t.get("largeThreshold"),s="mod"===t.get("progressiveChunkMode")?r:null;t.pipelineContext=n.context={progressiveRender:o,modDataCount:s,large:a}},t.prototype.restorePipelines=function(t){var e=this,n=e._pipelineMap=Y();t.eachSeries(function(t){var i=t.getProgressive(),r=t.uid;n.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),e._pipe(t,t.dataTask)})},t.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.api.getModel(),n=this.api;v(this._allHandlers,function(i){var r=t.get(i.uid)||t.set(i.uid,{}),o="";W(!(i.reset&&i.overallReset),o),i.reset&&this._createSeriesStageTask(i,r,e,n),i.overallReset&&this._createOverallStageTask(i,r,e,n)},this)},t.prototype.prepareView=function(t,e,n,i){var r=t.renderTask,o=r.context;o.model=e,o.ecModel=n,o.api=i,r.__block=!t.incrementalPrepareRender,this._pipe(e,r)},t.prototype.performDataProcessorTasks=function(t,e){this._performStageTasks(this._dataProcessorHandlers,t,e,{block:!0})},t.prototype.performVisualTasks=function(t,e,n){this._performStageTasks(this._visualHandlers,t,e,n)},t.prototype._performStageTasks=function(t,e,n,i){function r(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}i=i||{};var o=!1,a=this;v(t,function(t){if(!i.visualType||i.visualType===t.visualType){var s=a._stageTaskMap.get(t.uid),l=s.seriesTaskMap,u=s.overallTask;if(u){var h,c=u.agentStubMap;c.each(function(t){r(i,t)&&(t.dirty(),h=!0)}),h&&u.dirty(),a.updatePayload(u,n);var p=a.getPerformArgs(u,i.block);c.each(function(t){t.perform(p)}),u.perform(p)&&(o=!0)}else l&&l.each(function(s){r(i,s)&&s.dirty();var l=a.getPerformArgs(s,i.block);l.skip=!t.performRawSeries&&e.isSeriesFiltered(s.context.model),a.updatePayload(s,n),s.perform(l)&&(o=!0)})}}),this.unfinished=o||this.unfinished},t.prototype.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e=t.dataTask.perform()||e}),this.unfinished=e||this.unfinished},t.prototype.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)})},t.prototype.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},t.prototype._createSeriesStageTask=function(t,e,n,i){function r(e){var r=e.uid,l=s.set(r,a&&a.get(r)||xu({plan:ph,reset:fh,count:gh}));l.context={model:e,ecModel:n,api:i,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:o},o._pipe(e,l)}var o=this,a=e.seriesTaskMap,s=e.seriesTaskMap=Y(),l=t.seriesType,u=t.getTargetSeries;t.createOnAllSeries?n.eachRawSeries(r):l?n.eachRawSeriesByType(l,r):u&&u(n,i).each(r)},t.prototype._createOverallStageTask=function(t,e,n,i){function r(t){var e=t.uid,n=l.set(e,s&&s.get(e)||(p=!0,xu({reset:uh,onDirty:ch})));n.context={model:t,overallProgress:c},n.agent=a,n.__block=c,o._pipe(t,n)}var o=this,a=e.overallTask=e.overallTask||xu({reset:lh});a.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:o};var s=a.agentStubMap,l=a.agentStubMap=Y(),u=t.seriesType,h=t.getTargetSeries,c=!0,p=!1,f="";W(!t.createOnAllSeries,f),u?n.eachRawSeriesByType(u,r):h?h(n,i).each(r):(c=!1,v(n.getSeries(),r)),p&&a.dirty()},t.prototype._pipe=function(t,e){var n=t.uid,i=this._pipelineMap.get(n);!i.head&&(i.head=e),i.tail&&i.tail.pipe(e),i.tail=e,e.__idxInPipeline=i.count++,e.__pipeline=i},t.wrapStageHandler=function(t,e){return T(t)&&(t={overallReset:t,seriesType:vh(t)}),t.uid=Is("stageHandler"),e&&(t.visualType=e),t},t}(),MS=dh(0),TS={},CS={};yh(TS,gb),yh(CS,Sb),TS.eachSeriesByType=TS.eachRawSeriesByType=function(t){hS=t},TS.eachComponent=function(t){"series"===t.mainType&&t.subType&&(hS=t.subType)};var IS=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],DS={color:IS,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],IS]},kS="#B9B8CE",AS="#100C2A",OS=function(){return{axisLine:{lineStyle:{color:kS}},splitLine:{lineStyle:{color:"#484753"}},splitArea:{areaStyle:{color:["rgba(255,255,255,0.02)","rgba(255,255,255,0.05)"]}},minorSplitLine:{lineStyle:{color:"#20203B"}}}},PS=["#4992ff","#7cffb2","#fddd60","#ff6e76","#58d9f9","#05c091","#ff8a45","#8d48e3","#dd79ff"],RS={darkMode:!0,color:PS,backgroundColor:AS,axisPointer:{lineStyle:{color:"#817f91"},crossStyle:{color:"#817f91"},label:{color:"#fff"}},legend:{textStyle:{color:kS}},textStyle:{color:kS},title:{textStyle:{color:"#EEF1FA"},subtextStyle:{color:"#B9B8CE"}},toolbox:{iconStyle:{borderColor:kS}},dataZoom:{borderColor:"#71708A",textStyle:{color:kS},brushStyle:{color:"rgba(135,163,206,0.3)"},handleStyle:{color:"#353450",borderColor:"#C5CBE3"},moveHandleStyle:{color:"#B0B6C3",opacity:.3},fillerColor:"rgba(135,163,206,0.2)",emphasis:{handleStyle:{borderColor:"#91B7F2",color:"#4D587D"},moveHandleStyle:{color:"#636D9A",opacity:.7}},dataBackground:{lineStyle:{color:"#71708A",width:1},areaStyle:{color:"#71708A"}},selectedDataBackground:{lineStyle:{color:"#87A3CE"},areaStyle:{color:"#87A3CE"}}},visualMap:{textStyle:{color:kS}},timeline:{lineStyle:{color:kS},label:{color:kS},controlStyle:{color:kS,borderColor:kS}},calendar:{itemStyle:{color:AS},dayLabel:{color:kS},monthLabel:{color:kS},yearLabel:{color:kS}},timeAxis:OS(),logAxis:OS(),valueAxis:OS(),categoryAxis:OS(),line:{symbol:"circle"},graph:{color:PS},gauge:{title:{color:kS},axisLine:{lineStyle:{color:[[1,"rgba(207,212,219,0.2)"]]}},axisLabel:{color:kS},detail:{color:"#EEF1FA"}},candlestick:{itemStyle:{color:"#f64e56",color0:"#54ea92",borderColor:"#f64e56",borderColor0:"#54ea92"}}};RS.categoryAxis.splitLine.show=!1;var LS=function(){function t(){}return t.prototype.normalizeQuery=function(t){var e={},n={},i={};if(C(t)){var r=fr(t);e.mainType=r.main||null,e.subType=r.sub||null}else{var o=["Index","Name","Id"],a={name:1,dataIndex:1,dataType:1};v(t,function(t,r){for(var s=!1,l=0;l0&&h===r.length-u.length){var c=r.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}a.hasOwnProperty(r)&&(n[r]=t,s=!0),s||(i[r]=t)})}return{cptQuery:e,dataQuery:n,otherQuery:i}},t.prototype.filter=function(t,e){function n(t,e,n,i){return null==t[n]||e[i||n]===t[n]}var i=this.eventInfo;if(!i)return!0;var r=i.targetEl,o=i.packedEvent,a=i.model,s=i.view;if(!a||!s)return!0;var l=e.cptQuery,u=e.dataQuery;return n(l,a,"mainType")&&n(l,a,"subType")&&n(l,a,"index","componentIndex")&&n(l,a,"name")&&n(l,a,"id")&&n(u,o,"name")&&n(u,o,"dataIndex")&&n(u,o,"dataType")&&(!s.filterForExposedEvent||s.filterForExposedEvent(t,e.otherQuery,r,o))},t.prototype.afterTrigger=function(){this.eventInfo=null},t}(),zS={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){function n(e,n){var i=t.getRawValue(n),a=t.getDataParams(n);u&&e.setItemVisual(n,"symbol",r(i,a)),h&&e.setItemVisual(n,"symbolSize",o(i,a)),c&&e.setItemVisual(n,"symbolRotate",s(i,a)),p&&e.setItemVisual(n,"symbolOffset",l(i,a))}var i=t.getData();if(t.legendIcon&&i.setVisual("legendIcon",t.legendIcon),t.hasSymbolVisual){var r=t.get("symbol"),o=t.get("symbolSize"),a=t.get("symbolKeepAspect"),s=t.get("symbolRotate"),l=t.get("symbolOffset"),u=T(r),h=T(o),c=T(s),p=T(l),f=u||h||c||p,d=!u&&r?r:t.defaultSymbol,g=h?null:o,v=c?null:s,y=p?null:l;if(i.setVisual({legendIcon:t.legendIcon||d,symbol:d,symbolSize:g,symbolKeepAspect:a,symbolRotate:v,symbolOffset:y}),!e.isSeriesFiltered(t))return{dataEach:f?n:null}}}},ES={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){function n(t,e){var n=t.getItemModel(e),i=n.getShallow("symbol",!0),r=n.getShallow("symbolSize",!0),o=n.getShallow("symbolRotate",!0),a=n.getShallow("symbolOffset",!0),s=n.getShallow("symbolKeepAspect",!0);null!=i&&t.setItemVisual(e,"symbol",i),null!=r&&t.setItemVisual(e,"symbolSize",r),null!=o&&t.setItemVisual(e,"symbolRotate",o),null!=a&&t.setItemVisual(e,"symbolOffset",a),null!=s&&t.setItemVisual(e,"symbolKeepAspect",s)}if(t.hasSymbolVisual&&!e.isSeriesFiltered(t)){var i=t.getData();return{dataEach:i.hasItemOption?n:null}}}},BS=Math.round(9*Math.random()),FS="function"==typeof Object.defineProperty,NS=function(){function t(){this._id="__ec_inner_"+BS++}return t.prototype.get=function(t){return this._guard(t)[this._id]},t.prototype.set=function(t,e){var n=this._guard(t);return FS?Object.defineProperty(n,this._id,{value:e,enumerable:!1,configurable:!0}):n[this._id]=e,this},t.prototype["delete"]=function(t){return this.has(t)?(delete this._guard(t)[this._id],!0):!1},t.prototype.has=function(t){return!!this._guard(t)[this._id]},t.prototype._guard=function(t){if(t!==Object(t))throw TypeError("Value of WeakMap is not a non-null object.");return t},t}(),VS=g_.extend({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=e.width/2,o=e.height/2;t.moveTo(n,i-o),t.lineTo(n+r,i+o),t.lineTo(n-r,i+o),t.closePath()}}),HS=g_.extend({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=e.width/2,o=e.height/2;t.moveTo(n,i-o),t.lineTo(n+r,i),t.lineTo(n,i+o),t.lineTo(n-r,i),t.closePath()}}),WS=g_.extend({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.x,i=e.y,r=e.width/5*3,o=Math.max(r,e.height),a=r/2,s=a*a/(o-a),l=i-o+a+s,u=Math.asin(s/a),h=Math.cos(u)*a,c=Math.sin(u),p=Math.cos(u),f=.6*a,d=.7*a;t.moveTo(n-h,l+s),t.arc(n,l,a,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(n+h-c*f,l+s+p*f,n,i-d,n,i),t.bezierCurveTo(n,i-d,n-h+c*f,l+s+p*f,n-h,l+s),t.closePath()}}),GS=g_.extend({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.height,i=e.width,r=e.x,o=e.y,a=i/3*2;t.moveTo(r,o),t.lineTo(r+a,o+n),t.lineTo(r,o+n/4*3),t.lineTo(r-a,o+n),t.lineTo(r,o),t.closePath()}}),US={line:Lx,rect:M_,roundRect:M_,square:M_,circle:ux,diamond:HS,pin:WS,arrow:GS,triangle:VS},XS={line:function(t,e,n,i,r){r.x1=t,r.y1=e+i/2,r.x2=t+n,r.y2=e+i/2},rect:function(t,e,n,i,r){r.x=t,r.y=e,r.width=n,r.height=i},roundRect:function(t,e,n,i,r){r.x=t,r.y=e,r.width=n,r.height=i,r.r=Math.min(n,i)/4},square:function(t,e,n,i,r){var o=Math.min(n,i);r.x=t,r.y=e,r.width=o,r.height=o},circle:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.r=Math.min(n,i)/2},diamond:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.width=n,r.height=i},pin:function(t,e,n,i,r){r.x=t+n/2,r.y=e+i/2,r.width=n,r.height=i},arrow:function(t,e,n,i,r){r.x=t+n/2,r.y=e+i/2,r.width=n,r.height=i},triangle:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.width=n,r.height=i}},YS={};v(US,function(t,e){YS[e]=new t});for(var ZS,qS=g_.extend({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},calculateTextPosition:function(t,e,n){var i=ri(t,e,n),r=this.shape;return r&&"pin"===r.symbolType&&"inside"===e.position&&(i.y=n.y+.4*n.height),i},buildPath:function(t,e,n){var i=e.symbolType;if("none"!==i){var r=YS[i];r||(i="rect",r=YS[i]),XS[i](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,n)}}}),jS=new r_(!0),KS=["shadowBlur","shadowOffsetX","shadowOffsetY"],$S=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],JS=1,QS=2,tM=3,eM=4,nM=new NS,iM=new Lv(100),rM=["symbol","symbolSize","symbolKeepAspect","color","backgroundColor","dashArrayX","dashArrayY","maxTileWidth","maxTileHeight"],oM={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-anchor":"textAlign",visibility:"visibility",display:"display"},aM=w(oM),sM={"alignment-baseline":"textBaseline","stop-color":"stopColor"},lM=w(sM),uM=function(){function t(){this._defs={},this._root=null}return t.prototype.parse=function(t,e){e=e||{};var n=rc(t);if(!n)throw new Error("Illegal svg");this._defsUsePending=[];var i=new Fy;this._root=i;var r=[],o=n.getAttribute("viewBox")||"",a=parseFloat(n.getAttribute("width")||e.width),s=parseFloat(n.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(s)&&(s=null),uc(n,i,null,!0,!1);for(var l=n.firstChild;l;)this._parseNode(l,i,r,null,!1,!1),l=l.nextSibling;pc(this._defs,this._defsUsePending),this._defsUsePending=[];var u,h;if(o){var c=fc(o);c.length>=4&&(u={x:parseFloat(c[0]||0),y:parseFloat(c[1]||0),width:parseFloat(c[2]),height:parseFloat(c[3])})}if(u&&null!=a&&null!=s&&(h=yc(u,{x:0,y:0,width:a,height:s}),!e.ignoreViewBox)){var p=i;i=new Fy,i.add(p),p.scaleX=p.scaleY=h.scale,p.x=h.x,p.y=h.y}return e.ignoreRootClip||null==a||null==s||i.setClipPath(new M_({shape:{x:0,y:0,width:a,height:s}})),{root:i,width:a,height:s,viewBoxRect:u,viewBoxTransform:h,named:r}},t.prototype._parseNode=function(t,e,n,i,r,o){var a,s=t.nodeName.toLowerCase(),l=i;if("defs"===s&&(r=!0),"text"===s&&(o=!0),"defs"===s||"switch"===s)a=e;else{if(!r){var u=ZS[s];if(u&&j(ZS,s)){a=u.call(this,t,e);var h=t.getAttribute("name");if(h){var c={name:h,namedFrom:null,svgNodeTagLower:s,el:a};n.push(c),"g"===s&&(l=c)}else i&&n.push({name:i.name,namedFrom:i,svgNodeTagLower:s,el:a});e.add(a)}}var p=hM[s];if(p&&j(hM,s)){var f=p.call(this,t),d=t.getAttribute("id");d&&(this._defs[d]=f)}}if(a&&a.isGroup)for(var g=t.firstChild;g;)1===g.nodeType?this._parseNode(g,a,n,l,r,o):3===g.nodeType&&o&&this._parseText(g,a),g=g.nextSibling},t.prototype._parseText=function(t,e){var n=new y_({style:{text:t.textContent},silent:!0,x:this._textX||0,y:this._textY||0});sc(e,n),uc(t,n,this._defsUsePending,!1,!1),hc(n,e);var i=n.style,r=i.fontSize;r&&9>r&&(i.fontSize=9,n.scaleX*=r/9,n.scaleY*=r/9);var o=(i.fontSize||i.fontFamily)&&[i.fontStyle,i.fontWeight,(i.fontSize||12)+"px",i.fontFamily||"sans-serif"].join(" ");i.font=o;var a=n.getBoundingRect();return this._textX+=a.width,e.add(n),n},t.internalField=function(){ZS={g:function(t,e){var n=new Fy;return sc(e,n),uc(t,n,this._defsUsePending,!1,!1),n},rect:function(t,e){var n=new M_;return sc(e,n),uc(t,n,this._defsUsePending,!1,!1),n.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")}),n.silent=!0,n},circle:function(t,e){var n=new ux;return sc(e,n),uc(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),r:parseFloat(t.getAttribute("r")||"0")}),n.silent=!0,n},line:function(t,e){var n=new Lx;return sc(e,n),uc(t,n,this._defsUsePending,!1,!1),n.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")}),n.silent=!0,n},ellipse:function(t,e){var n=new cx;return sc(e,n),uc(t,n,this._defsUsePending,!1,!1),n.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")}),n.silent=!0,n},polygon:function(t,e){var n,i=t.getAttribute("points");i&&(n=lc(i));var r=new kx({shape:{points:n||[]},silent:!0});return sc(e,r),uc(t,r,this._defsUsePending,!1,!1),r},polyline:function(t,e){var n,i=t.getAttribute("points");i&&(n=lc(i));var r=new Ox({shape:{points:n||[]},silent:!0});return sc(e,r),uc(t,r,this._defsUsePending,!1,!1),r},image:function(t,e){var n=new x_;return sc(e,n),uc(t,n,this._defsUsePending,!1,!1),n.setStyle({image:t.getAttribute("xlink:href")||t.getAttribute("href"),x:+t.getAttribute("x"),y:+t.getAttribute("y"),width:+t.getAttribute("width"),height:+t.getAttribute("height")}),n.silent=!0,n},text:function(t,e){var n=t.getAttribute("x")||"0",i=t.getAttribute("y")||"0",r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0";this._textX=parseFloat(n)+parseFloat(r),this._textY=parseFloat(i)+parseFloat(o);var a=new Fy;return sc(e,a),uc(t,a,this._defsUsePending,!1,!0),a},tspan:function(t,e){var n=t.getAttribute("x"),i=t.getAttribute("y");null!=n&&(this._textX=parseFloat(n)),null!=i&&(this._textY=parseFloat(i));var r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0",a=new Fy;return sc(e,a),uc(t,a,this._defsUsePending,!1,!0),this._textX+=parseFloat(r),this._textY+=parseFloat(o),a},path:function(t,e){var n=t.getAttribute("d")||"",i=La(n);return sc(e,i),uc(t,i,this._defsUsePending,!1,!1),i.silent=!0,i}}}(),t}(),hM={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||"0",10),n=parseInt(t.getAttribute("y1")||"0",10),i=parseInt(t.getAttribute("x2")||"10",10),r=parseInt(t.getAttribute("y2")||"0",10),o=new Wx(e,n,i,r);return oc(t,o),ac(t,o),o},radialgradient:function(t){var e=parseInt(t.getAttribute("cx")||"0",10),n=parseInt(t.getAttribute("cy")||"0",10),i=parseInt(t.getAttribute("r")||"0",10),r=new Gx(e,n,i);return oc(t,r),ac(t,r),r}},cM=/^url\(\s*#(.*?)\)/,pM=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g,fM=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g,dM=Math.PI/180,gM=/([^\s:;]+)\s*:\s*([^:;]+)/g,vM=1e-8,yM=[],mM=function(){function t(t){this.name=t}return t.prototype.getCenter=function(){},t}(),_M=function(t){function n(e,n,i){var r=t.call(this,e)||this;if(r.type="geoJSON",r.geometries=n,i)i=[i[0],i[1]];else{var o=r.getBoundingRect();i=[o.x+o.width/2,o.y+o.height/2]}return r._center=i,r}return e(n,t),n.prototype.getBoundingRect=function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,n=[e,e],i=[-e,-e],r=[],o=[],a=this.geometries,s=0;si;i++)if("polygon"===n[i].type){var o=n[i].exterior,a=n[i].interiors;if(xc(o,t[0],t[1])){for(var s=0;s<(a?a.length:0);s++)if(xc(a[s],t[0],t[1]))continue t;return!0}}return!1},n.prototype.transformTo=function(t,e,n,i){var r=this.getBoundingRect(),o=r.width/r.height;n?i||(i=n/o):n=o*i;for(var a=new Dy(t,e,n,i),s=r.calculateTransform(a),l=this.geometries,u=0;u0&&t.unfinished);t.unfinished||this._zr.flush()}}},n.prototype.getDom=function(){return this._dom},n.prototype.getId=function(){return this.id},n.prototype.getZr=function(){return this._zr},n.prototype.setOption=function(t,e,n){if(!this._disposed){var i,r,o;if(k(e)&&(n=e.lazyUpdate,i=e.silent,r=e.replaceMerge,o=e.transition,e=e.notMerge),this[nT]=!0,!this._model||e){var a=new Ib(this._api),s=this._theme,l=this._model=new gb;l.scheduler=this._scheduler,l.init(null,null,null,s,this._locale,a)}this._model.setOption(t,{replaceMerge:r},BT);var u={seriesTransition:o,optionChanged:!0};n?(this[iT]={silent:i,updateParams:u},this[nT]=!1,this.getZr().wakeUp()):(pT(this),gT.update.call(this,null,u),this._zr.flush(),this[iT]=null,this[nT]=!1,_T.call(this,i),xT.call(this,i))}},n.prototype.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},n.prototype.getModel=function(){return this._model},n.prototype.getOption=function(){return this._model&&this._model.getOption()},n.prototype.getWidth=function(){return this._zr.getWidth()},n.prototype.getHeight=function(){return this._zr.getHeight()},n.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||EM&&window.devicePixelRatio||1},n.prototype.getRenderedCanvas=function(t){return zg.canvasSupported?(t=t||{},this._zr.painter.getRenderedCanvas({backgroundColor:t.backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})):void 0},n.prototype.getSvgDataURL=function(){if(zg.svgSupported){var t=this._zr,e=t.storage.getDisplayList();return v(e,function(t){t.stopAnimation(null,!0)}),t.painter.toDataURL()}},n.prototype.getDataURL=function(t){if(!this._disposed){t=t||{};var e=t.excludeComponents,n=this._model,i=[],r=this;v(e,function(t){n.eachComponent({mainType:t},function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(i.push(e),e.group.ignore=!0)})});var o="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return v(i,function(t){t.group.ignore=!1}),o}},n.prototype.getConnectedDataURL=function(t){if(!this._disposed&&zg.canvasSupported){var e="svg"===t.type,n=this.group,i=Math.min,r=Math.max,o=1/0;if(WT[n]){var a=o,l=o,u=-o,h=-o,c=[],p=t&&t.pixelRatio||this.getDevicePixelRatio();v(HT,function(o){if(o.group===n){var p=e?o.getZr().painter.getSvgDom().innerHTML:o.getRenderedCanvas(s(t)),f=o.getDom().getBoundingClientRect();a=i(f.left,a),l=i(f.top,l),u=r(f.right,u),h=r(f.bottom,h),c.push({dom:p,left:f.left,top:f.top})}}),a*=p,l*=p,u*=p,h*=p;var f=u-a,d=h-l,g=jg(),y=pi(g,{renderer:e?"svg":"canvas"});if(y.resize({width:f,height:d}),e){var m="";return v(c,function(t){var e=t.left-a,n=t.top-l;m+=''+t.dom+""}),y.painter.getSvgRoot().innerHTML=m,t.connectedBackgroundColor&&y.painter.setBackgroundColor(t.connectedBackgroundColor),y.refreshImmediately(),y.painter.toDataURL()}return t.connectedBackgroundColor&&y.add(new M_({shape:{x:0,y:0,width:f,height:d},style:{fill:t.connectedBackgroundColor}})),v(c,function(t){var e=new x_({style:{x:t.left*p-a,y:t.top*p-l,image:t.dom}});y.add(e)}),y.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},n.prototype.convertToPixel=function(t,e){return vT(this,"convertToPixel",t,e)},n.prototype.convertFromPixel=function(t,e){return vT(this,"convertFromPixel",t,e)},n.prototype.containPixel=function(t,e){if(!this._disposed){var n,i=this._model,r=sr(i,t);return v(r,function(t,i){i.indexOf("Models")>=0&&v(t,function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n=n||!!r.containPoint(e);else if("seriesModels"===i){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(n=n||o.containPoint(e,t))}},this)},this),!!n}},n.prototype.getVisual=function(t,e){var n=this._model,i=sr(n,t,{defaultMainType:"series"}),r=i.seriesModel,o=r.getData(),a=i.hasOwnProperty("dataIndexInside")?i.dataIndexInside:i.hasOwnProperty("dataIndex")?o.indexOfRawIndex(i.dataIndex):null;return null!=a?mh(o,a,e):_h(o,e)},n.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},n.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},n.prototype._initEvents=function(){var t=this; v(RT,function(e){var n=function(n){var i,r=t.getModel(),o=n.target,a="globalout"===e;if(a?i={}:o&&bh(o,function(t){var e=O_(t);if(e&&null!=e.dataIndex){var n=e.dataModel||r.getSeriesByIndex(e.seriesIndex);return i=n&&n.getDataParams(e.dataIndex,e.dataType)||{},!0}return e.eventData?(i=h({},e.eventData),!0):void 0},!0),i){var s=i.componentType,l=i.componentIndex;("markLine"===s||"markPoint"===s||"markArea"===s)&&(s="series",l=i.seriesIndex);var u=s&&null!=l&&r.getComponent(s,l),c=u&&t["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];i.event=n,i.type=e,t._$eventProcessor.eventInfo={targetEl:o,packedEvent:i,model:u,view:c},t.trigger(e,i)}};n.zrEventfulCallAtLast=!0,t._zr.on(e,n,t)}),v(zT,function(e,n){t._messageCenter.on(n,function(t){this.trigger(n,t)},t)}),v(["selectchanged"],function(e){t._messageCenter.on(e,function(t){this.trigger(e,t)},t)}),wh(this._messageCenter,this,this._api)},n.prototype.isDisposed=function(){return this._disposed},n.prototype.clear=function(){this._disposed||this.setOption({series:[]},!0)},n.prototype.dispose=function(){if(!this._disposed){this._disposed=!0,hr(this.getDom(),XT,"");var t=this,e=t._api,n=t._model;v(t._componentsViews,function(t){t.dispose(n,e)}),v(t._chartsViews,function(t){t.dispose(n,e)}),t._zr.dispose(),t._dom=t._model=t._chartsMap=t._componentsMap=t._chartsViews=t._componentsViews=t._scheduler=t._api=t._zr=t._throttledZrFlush=t._theme=t._coordSysMgr=t._messageCenter=null,delete HT[t.id]}},n.prototype.resize=function(t){if(!this._disposed){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),i=t&&t.silent;this[iT]&&(null==i&&(i=this[iT].silent),n=!0,this[iT]=null),this[nT]=!0,n&&pT(this),gT.update.call(this,{type:"resize",animation:h({duration:0},t&&t.animation)}),this[nT]=!1,_T.call(this,i),xT.call(this,i)}}},n.prototype.showLoading=function(t,e){if(!this._disposed&&(k(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),VT[t])){var n=VT[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},n.prototype.hideLoading=function(){this._disposed||(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},n.prototype.makeActionFromEvent=function(t){var e=h({},t);return e.type=zT[t.type],e},n.prototype.dispatchAction=function(t,e){if(!this._disposed&&(k(e)||(e={silent:!!e}),LT[t.type]&&this._model)){if(this[nT])return void this._pendingActions.push(t);var n=e.silent;mT.call(this,t,n);var i=e.flush;i?this._zr.flush():i!==!1&&zg.browser.weChat&&this._throttledZrFlush(),_T.call(this,n),xT.call(this,n)}},n.prototype.updateLabelLayout=function(){zM.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},n.prototype.appendData=function(t){if(!this._disposed){var e=t.seriesIndex,n=this.getModel(),i=n.getSeriesByIndex(e);i.appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()}},n.internalField=function(){function t(t){for(var e=[],n=t.currentStates,i=0;ie.get("hoverLayerThreshold")&&!zg.node&&!zg.worker&&e.eachSeries(function(e){if(!e.preventUsingHoverLayer){var n=t._chartsMap[e.__viewId];n.__alive&&n.group.traverse(function(t){t.states.emphasis&&(t.states.emphasis.hoverLayer=!0)})}})}function i(t,e){var n=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||(t.style.blend=n),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.style.blend=n})})}function r(t,e){t.preventAutoZ||o(e.group,t.get("z")||0,t.get("zlevel")||0,-1/0)}function o(t,e,n,i){var r=t.getTextContent(),a=t.getTextGuideLine(),s=t.isGroup;if(s)for(var l=t.childrenRef(),u=0;u0?{duration:o,delay:i.get("delay"),easing:i.get("easing")}:null;n.group.traverse(function(e){if(e.states&&e.states.emphasis){if(ja(e))return;if(e instanceof g_&&Ta(e),e.__dirty){var n=e.prevStates;n&&e.useStates(n)}if(r){e.stateTransition=a;var i=e.getTextContent(),o=e.getTextGuideLine();i&&(i.stateTransition=a),o&&(o.stateTransition=a)}e.__dirty&&t(e)}})}pT=function(t){var e=t._scheduler;e.restorePipelines(t._model),e.prepareStageTasks(),fT(t,!0),fT(t,!1),e.plan()},fT=function(t,e){function n(t){var n=t.__requireNewView;t.__requireNewView=!1;var u="_ec_"+t.id+"_"+t.type,h=!n&&a[u];if(!h){var c=fr(t.type),p=e?aS.getClass(c.main,c.sub):uS.getClass(c.sub);h=new p,h.init(i,l),a[u]=h,o.push(h),s.add(h.group)}t.__viewId=h.__id=u,h.__alive=!0,h.__model=t,h.group.__ecComponentInfo={mainType:t.mainType,index:t.componentIndex},!e&&r.prepareView(h,t,i,l)}for(var i=t._model,r=t._scheduler,o=e?t._componentsViews:t._chartsViews,a=e?t._componentsMap:t._chartsMap,s=t._zr,l=t._api,u=0;u1){var u=s.shift();1===s.length&&(n[a]=s[0]),this._update&&this._update(u,o)}else 1===l?(n[a]=null,this._update&&this._update(s,o)):this._remove&&this._remove(o)}this._performRestAdd(r,n)},t.prototype._executeMultiple=function(){var t=this._old,e=this._new,n={},i={},r=[],o=[];this._initIndexMap(t,n,r,"_oldKeyGetter"),this._initIndexMap(e,i,o,"_newKeyGetter");for(var a=0;a1&&1===c)this._updateManyToOne&&this._updateManyToOne(u,l),i[s]=null;else if(1===h&&c>1)this._updateOneToMany&&this._updateOneToMany(u,l),i[s]=null;else if(1===h&&1===c)this._update&&this._update(u,l),i[s]=null;else if(h>1&&c>1)this._updateManyToMany&&this._updateManyToMany(u,l),i[s]=null;else if(h>1)for(var p=0;h>p;p++)this._remove&&this._remove(l[p]);else this._remove&&this._remove(l)}this._performRestAdd(o,i)},t.prototype._performRestAdd=function(t,e){for(var n=0;n1)for(var a=0;o>a;a++)this._add&&this._add(r[a]);else 1===o&&this._add&&this._add(r);e[i]=null}},t.prototype._initIndexMap=function(t,e,n,i){for(var r=this._diffModeMultiple,o=0;oo;o++){var s=void 0,l=void 0,u=void 0,h=this.dimensions[a];if(h&&h.storeDimIndex===o)s=e?h.name:null,l=h.type,u=h.ordinalMeta,a++;else{var c=this.getSourceDimension(o);c&&(s=e?c.name:null,l=c.type)}r.push({property:s,type:l,ordinalMeta:u}),!e||null==s||h&&h.isCalculationCoord||(i+=n?s.replace(/\`/g,"`1").replace(/\$/g,"`2"):s),i+="$",i+=sC[l]||"f",u&&(i+=u.uid),i+="$"}var p=this.source,f=[p.seriesLayoutBy,p.startIndex,i].join("$$");return{dimensions:r,hash:f}},t.prototype.makeOutputDimensionNames=function(){for(var t=[],e=0,n=0;ea;a++){var s=a-i;this._nameList[a]=e[s],o&&eC(this,a)}},t.prototype._updateOrdinalMeta=function(){for(var t=this._store,e=this.dimensions,n=0;n=e)){var n=this._store,i=n.getProvider();this._updateOrdinalMeta();var r=this._nameList,o=this._idList,a=i.getSource().sourceFormat,s=a===tb;if(s&&!i.pure)for(var l=[],u=t;e>u;u++){var h=i.getItem(u,l);if(!this.hasItemOption&&Ui(h)&&(this.hasItemOption=!0),h){var c=h.name;null==r[u]&&null!=c&&(r[u]=tr(c,null));var p=h.id;null==o[u]&&null!=p&&(o[u]=tr(p,null))}}if(this._shouldMakeIdFromName())for(var u=t;e>u;u++)eC(this,u);jT(this)}},t.prototype.getApproximateExtent=function(t){return this._approximateExtent[t]||this._store.getDataExtent(this._getStoreDimIndex(t))},t.prototype.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},t.prototype.getCalculationInfo=function(t){return this._calculationInfo[t]},t.prototype.setCalculationInfo=function(t,e){uC(t)?h(this._calculationInfo,t):this._calculationInfo[t]=e},t.prototype.getName=function(t){var e=this.getRawIndex(t),n=this._nameList[e];return null==n&&null!=this._nameDimIdx&&(n=$T(this,this._nameDimIdx,e)),null==n&&(n=""),n},t.prototype._getCategory=function(t,e){var n=this._store.get(t,e),i=this._store.getOrdinalMeta(t);return i?i.categories[n]:n},t.prototype.getId=function(t){return KT(this,this.getRawIndex(t))},t.prototype.count=function(){return this._store.count()},t.prototype.get=function(t,e){var n=this._store,i=this._dimInfos[t];return i?n.get(i.storeDimIndex,e):void 0},t.prototype.getByRawIndex=function(t,e){var n=this._store,i=this._dimInfos[t];return i?n.getByRawIndex(i.storeDimIndex,e):void 0},t.prototype.getIndices=function(){return this._store.getIndices()},t.prototype.getDataExtent=function(t){return this._store.getDataExtent(this._getStoreDimIndex(t))},t.prototype.getSum=function(t){return this._store.getSum(this._getStoreDimIndex(t))},t.prototype.getMedian=function(t){return this._store.getMedian(this._getStoreDimIndex(t))},t.prototype.getValues=function(t,e){var n=this,i=this._store;return M(t)?i.getValues(hC(t,function(t){return n._getStoreDimIndex(t)}),e):i.getValues(t)},t.prototype.hasValue=function(t){for(var e=this._dimSummary.dataDimIndicesOnCoord,n=0,i=e.length;i>n;n++)if(isNaN(this._store.get(e[n],t)))return!1;return!0},t.prototype.indexOfName=function(t){for(var e=0,n=this._store.count();n>e;e++)if(this.getName(e)===t)return e;return-1},t.prototype.getRawIndex=function(t){return this._store.getRawIndex(t)},t.prototype.indexOfRawIndex=function(t){return this._store.indexOfRawIndex(t)},t.prototype.rawIndexOf=function(t,e){var n=t&&this._invertedIndicesMap[t],i=n[e];return null==i||isNaN(i)?fC:i},t.prototype.indicesOfNearest=function(t,e,n){return this._store.indicesOfNearest(this._getStoreDimIndex(t),e,n)},t.prototype.each=function(t,e,n){"function"==typeof t&&(n=e,e=t,t=[]);var i=n||this,r=hC(JT(t),this._getStoreDimIndex,this);this._store.each(r,i?Kg(e,i):e)},t.prototype.filterSelf=function(t,e,n){"function"==typeof t&&(n=e,e=t,t=[]);var i=n||this,r=hC(JT(t),this._getStoreDimIndex,this);return this._store=this._store.filter(r,i?Kg(e,i):e),this},t.prototype.selectRange=function(t){var e=this,n={},i=w(t),r=[];return v(i,function(i){var o=e._getStoreDimIndex(i);n[o]=t[i],r.push(o)}),this._store=this._store.selectRange(n),this},t.prototype.mapArray=function(t,e,n){"function"==typeof t&&(n=e,e=t,t=[]),n=n||this;var i=[];return this.each(t,function(){i.push(e&&e.apply(this,arguments))},n),i},t.prototype.map=function(t,e,n,i){var r=n||i||this,o=hC(JT(t),this._getStoreDimIndex,this),a=tC(this);return a._store=this._store.map(o,r?Kg(e,r):e),a},t.prototype.modify=function(t,e,n,i){var r=n||i||this,o=hC(JT(t),this._getStoreDimIndex,this);this._store.modify(o,r?Kg(e,r):e)},t.prototype.downSample=function(t,e,n,i){var r=tC(this);return r._store=this._store.downSample(this._getStoreDimIndex(t),e,n,i),r},t.prototype.lttbDownSample=function(t,e){var n=tC(this);return n._store=this._store.lttbDownSample(this._getStoreDimIndex(t),e),n},t.prototype.getRawDataItem=function(t){return this._store.getRawDataItem(t)},t.prototype.getItemModel=function(t){var e=this.hostModel,n=this.getRawDataItem(t);return new yw(n,e,e&&e.ecModel)},t.prototype.diff=function(t){var e=this;return new iC(t?t.getStore().getIndices():[],this.getStore().getIndices(),function(e){return KT(t,e)},function(t){return KT(e,t)})},t.prototype.getVisual=function(t){var e=this._visual;return e&&e[t]},t.prototype.setVisual=function(t,e){this._visual=this._visual||{},uC(t)?h(this._visual,t):this._visual[t]=e},t.prototype.getItemVisual=function(t,e){var n=this._itemVisuals[t],i=n&&n[e];return null==i?this.getVisual(e):i},t.prototype.hasItemVisual=function(){return this._itemVisuals.length>0},t.prototype.ensureUniqueItemVisual=function(t,e){var n=this._itemVisuals,i=n[t];i||(i=n[t]={});var r=i[e];return null==r&&(r=this.getVisual(e),M(r)?r=r.slice():uC(r)&&(r=h({},r)),i[e]=r),r},t.prototype.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,uC(e)?h(i,e):i[e]=n},t.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},t.prototype.setLayout=function(t,e){if(uC(t))for(var n in t)t.hasOwnProperty(n)&&this.setLayout(n,t[n]);else this._layout[t]=e},t.prototype.getLayout=function(t){return this._layout[t]},t.prototype.getItemLayout=function(t){return this._itemLayouts[t]},t.prototype.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?h(this._itemLayouts[t]||{},e):e},t.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},t.prototype.setItemGraphicEl=function(t,e){var n=this.hostModel&&this.hostModel.seriesIndex;P_(n,this.dataType,t,e),this._graphicEls[t]=e},t.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},t.prototype.eachItemGraphicEl=function(t,e){v(this._graphicEls,function(n,i){n&&t&&t.call(e,n,i)})},t.prototype.cloneShallow=function(e){return e||(e=new t(this._schema?this._schema:hC(this.dimensions,this._getDimInfo,this),this.hostModel)),QT(e,this),e._store=this._store,e},t.prototype.wrapMethod=function(t,e){var n=this[t];"function"==typeof n&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=n.apply(this,arguments);return e.apply(this,[t].concat(V(arguments)))})},t.internalField=function(){jT=function(t){var e=t._invertedIndicesMap;v(e,function(n,i){var r=t._dimInfos[i],o=r.ordinalMeta,a=t._store;if(o){n=e[i]=new cC(o.categories.length);for(var s=0;s1&&(s+="__ec__"+u),i[e]=s}}}(),t}(),yC=function(){function t(t){this.coordSysDims=[],this.axisMap=Y(),this.categoryAxisMap=Y(),this.coordSysName=t}return t}(),mC={cartesian2d:function(t,e,n,i){var r=t.getReferringComponents("xAxis",Qy).models[0],o=t.getReferringComponents("yAxis",Qy).models[0];e.coordSysDims=["x","y"],n.set("x",r),n.set("y",o),_p(r)&&(i.set("x",r),e.firstCategoryDimIndex=0),_p(o)&&(i.set("y",o),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},singleAxis:function(t,e,n,i){var r=t.getReferringComponents("singleAxis",Qy).models[0];e.coordSysDims=["single"],n.set("single",r),_p(r)&&(i.set("single",r),e.firstCategoryDimIndex=0)},polar:function(t,e,n,i){var r=t.getReferringComponents("polar",Qy).models[0],o=r.findAxisModel("radiusAxis"),a=r.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],n.set("radius",o),n.set("angle",a),_p(o)&&(i.set("radius",o),e.firstCategoryDimIndex=0),_p(a)&&(i.set("angle",a),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},geo:function(t,e){e.coordSysDims=["lng","lat"]},parallel:function(t,e,n,i){var r=t.ecModel,o=r.getComponent("parallel",t.get("parallelIndex")),a=e.coordSysDims=o.dimensions.slice();v(o.parallelAxisIndex,function(t,o){var s=r.getComponent("parallelAxis",t),l=a[o];n.set(l,s),_p(s)&&(i.set(l,s),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=o))})}},_C=function(){function t(t){this._setting=t||{},this._extent=[1/0,-1/0]}return t.prototype.getSetting=function(t){return this._setting[t]},t.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},t.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},t.prototype.isInExtentRange=function(t){return this._extent[0]<=t&&this._extent[1]>=t},t.prototype.isBlank=function(){return this._isBlank},t.prototype.setBlank=function(t){this._isBlank=t},t}();br(_C);var xC=0,wC=function(){function t(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this.uid=++xC}return t.createByAxisModel=function(e){var n=e.option,i=n.data,r=i&&y(i,kp);return new t({categories:r,needCollect:!r,deduplication:n.dedplication!==!1})},t.prototype.getOrdinal=function(t){return this._getOrCreateMap().get(t)},t.prototype.parseAndCollect=function(t){var e,n=this._needCollect;if("string"!=typeof t&&!n)return t;if(n&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e; var i=this._getOrCreateMap();return e=i.get(t),null==e&&(n?(e=this.categories.length,this.categories[e]=t,i.set(t,e)):e=0/0),e},t.prototype._getOrCreateMap=function(){return this._map||(this._map=Y(this.categories))},t}(),bC=xi,SC=function(t){function n(e){var n=t.call(this,e)||this;n.type="ordinal";var i=n.getSetting("ordinalMeta");return i||(i=new wC({})),M(i)&&(i=new wC({categories:y(i,function(t){return k(t)?t.value:t})})),n._ordinalMeta=i,n._extent=n.getSetting("extent")||[0,i.categories.length-1],n}return e(n,t),n.prototype.parse=function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},n.prototype.contain=function(t){return t=this.parse(t),Lp(t,this._extent)&&null!=this._ordinalMeta.categories[t]},n.prototype.normalize=function(t){return t=this._getTickNumber(this.parse(t)),zp(t,this._extent)},n.prototype.scale=function(t){return t=Math.round(Ep(t,this._extent)),this.getRawOrdinalNumber(t)},n.prototype.getTicks=function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push({value:n}),n++;return t},n.prototype.getMinorTicks=function(){},n.prototype.setSortInfo=function(t){if(null==t)return void(this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null);for(var e=t.ordinalNumbers,n=this._ordinalNumbersByTick=[],i=this._ticksByOrdinalNumber=[],r=0,o=this._ordinalMeta.categories.length,a=Math.min(o,e.length);a>r;++r){var s=e[r];n[r]=s,i[s]=r}for(var l=0;o>r;++r){for(;null!=i[l];)l++;n.push(l),i[l]=r}},n.prototype._getTickNumber=function(t){var e=this._ticksByOrdinalNumber;return e&&t>=0&&t=0&&t=t},n.prototype.getOrdinalMeta=function(){return this._ordinalMeta},n.prototype.niceTicks=function(){},n.prototype.niceExtent=function(){},n.type="ordinal",n}(_C);_C.registerClass(SC);var MC=xi,TC=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="interval",e._interval=0,e._intervalPrecision=2,e}return e(n,t),n.prototype.parse=function(t){return t},n.prototype.contain=function(t){return Lp(t,this._extent)},n.prototype.normalize=function(t){return zp(t,this._extent)},n.prototype.scale=function(t){return Ep(t,this._extent)},n.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[1]=parseFloat(e))},n.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),this.setExtent(e[0],e[1])},n.prototype.getInterval=function(){return this._interval},n.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Op(t)},n.prototype.getTicks=function(t){var e=this._interval,n=this._extent,i=this._niceExtent,r=this._intervalPrecision,o=[];if(!e)return o;var a=1e4;n[0]a)return[];var l=o.length?o[o.length-1].value:i[1];return n[1]>l&&o.push(t?{value:MC(l+e,r)}:{value:n[1]}),o},n.prototype.getMinorTicks=function(t){for(var e=this.getTicks(!0),n=[],i=this.getExtent(),r=1;rs;){var c=MC(a.value+(s+1)*h);c>i[0]&&cr&&(r=-r,i.reverse());var o=Ap(i,t,e,n);this._intervalPrecision=o.intervalPrecision,this._interval=o.interval,this._niceExtent=o.niceTickExtent}},n.prototype.niceExtent=function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var n=e[0];t.fixMax?e[0]-=n/2:(e[1]+=n/2,e[0]-=n/2)}else e[1]=1;var i=e[1]-e[0];isFinite(i)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var r=this._interval;t.fixMin||(e[0]=MC(Math.floor(e[0]/r)*r)),t.fixMax||(e[1]=MC(Math.ceil(e[1]/r)*r))},n.type="interval",n}(_C);_C.registerClass(TC);var CC="__ec_stack_",IC=.5,DC="undefined"!=typeof Float32Array?Float32Array:Array,kC={seriesType:"bar",plan:$u(),reset:function(t){if(Xp(t)&&Yp(t)){var e=t.getData(),n=t.coordinateSystem,i=n.master.getRect(),r=n.getBaseAxis(),o=n.getOtherAxis(r),a=e.getDimensionIndex(e.mapDimension(o.dim)),s=e.getDimensionIndex(e.mapDimension(r.dim)),l=o.isHorizontal(),u=l?0:1,h=Gp(Hp([t]),r,t).width;return h>IC||(h=IC),{progress:function(t,e){for(var c,p=t.count,f=new DC(2*p),d=new DC(2*p),g=new DC(p),v=[],y=[],m=0,_=0,x=e.getStore();null!=(c=t.next());)y[u]=x.get(a,c),y[1-u]=x.get(s,c),v=n.dataToPoint(y,null),d[m]=l?i.x+i.width:v[0],f[m++]=v[0],d[m]=l?v[1]:i.y+i.height,f[m++]=v[1],g[_++]=c;e.setLayout({largePoints:f,largeDataIndices:g,largeBackgroundPoints:d,barWidth:h,valueAxisStart:Zp(r,o,!1),backgroundStart:l?i.x:i.y,valueAxisHorizontal:l})}}}}},AC=function(t,e,n,i){for(;i>n;){var r=n+i>>>1;t[r][1]n&&(this._approxInterval=n);var o=PC.length,a=Math.min(AC(PC,this._approxInterval,0,o),o-1);this._interval=PC[a][1],this._minLevelUnit=PC[Math.max(a-1,0)][0]},n.prototype.parse=function(t){return"number"==typeof t?t:+ki(t)},n.prototype.contain=function(t){return Lp(this.parse(t),this._extent)},n.prototype.normalize=function(t){return zp(this.parse(t),this._extent)},n.prototype.scale=function(t){return Ep(t,this._extent)},n.type="time",n}(TC),PC=[["second",Iw],["minute",Dw],["hour",kw],["quarter-day",6*kw],["half-day",12*kw],["day",1.2*Aw],["half-week",3.5*Aw],["week",7*Aw],["month",31*Aw],["quarter",95*Aw],["half-year",Ow/2],["year",Ow]];_C.registerClass(OC);var RC=_C.prototype,LC=TC.prototype,zC=xi,EC=Math.floor,BC=Math.ceil,FC=Math.pow,NC=Math.log,VC=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="log",e.base=10,e._originalScale=new TC,e._interval=0,e}return e(n,t),n.prototype.getTicks=function(t){var e=this._originalScale,n=this._extent,i=e.getExtent(),r=LC.getTicks.call(this,t);return y(r,function(t){var e=t.value,r=xi(FC(this.base,e));return r=e===n[0]&&this._fixMin?nf(r,i[0]):r,r=e===n[1]&&this._fixMax?nf(r,i[1]):r,{value:r}},this)},n.prototype.setExtent=function(t,e){var n=this.base;t=NC(t)/NC(n),e=NC(e)/NC(n),LC.setExtent.call(this,t,e)},n.prototype.getExtent=function(){var t=this.base,e=RC.getExtent.call(this);e[0]=FC(t,e[0]),e[1]=FC(t,e[1]);var n=this._originalScale,i=n.getExtent();return this._fixMin&&(e[0]=nf(e[0],i[0])),this._fixMax&&(e[1]=nf(e[1],i[1])),e},n.prototype.unionExtent=function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=NC(t[0])/NC(e),t[1]=NC(t[1])/NC(e),RC.unionExtent.call(this,t)},n.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},n.prototype.niceTicks=function(t){t=t||10;var e=this._extent,n=e[1]-e[0];if(!(1/0===n||0>=n)){var i=Ai(n),r=t/n*i;for(.5>=r&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var o=[xi(BC(e[0]/i)*i),xi(EC(e[1]/i)*i)];this._interval=i,this._niceExtent=o}},n.prototype.niceExtent=function(t){LC.niceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},n.prototype.parse=function(t){return t},n.prototype.contain=function(t){return t=NC(t)/NC(this.base),Lp(t,this._extent)},n.prototype.normalize=function(t){return t=NC(t)/NC(this.base),zp(t,this._extent)},n.prototype.scale=function(t){return t=Ep(t,this._extent),FC(this.base,t)},n.type="log",n}(_C),HC=VC.prototype;HC.getMinorTicks=LC.getMinorTicks,HC.getLabel=LC.getLabel,_C.registerClass(VC);var WC=function(){function t(t,e,n){this._prepareParams(t,e,n)}return t.prototype._prepareParams=function(t,e,n){n[1]0&&s>0&&!l&&(a=0),0>a&&0>s&&!u&&(s=0));var c=this._determinedMin,p=this._determinedMax;return null!=c&&(a=c,l=!0),null!=p&&(s=p,u=!0),{min:a,max:s,minFixed:l,maxFixed:u,isBlank:h}},t.prototype.modifyDataMinMax=function(t,e){this[UC[t]]=e},t.prototype.setDeterminedMinMax=function(t,e){var n=GC[t];this[n]=e},t.prototype.freeze=function(){this.frozen=!0},t}(),GC={min:"_determinedMin",max:"_determinedMax"},UC={min:"_dataMin",max:"_dataMax"},XC=function(){function t(){}return t.prototype.getNeedCrossZero=function(){var t=this.option;return!t.scale},t.prototype.getCoordSysModel=function(){},t}(),YC={isDimensionStacked:bp,enableDataStack:xp,getStackedDimension:Sp},ZC=(Object.freeze||Object)({createList:vf,getLayoutRect:dl,dataStack:YC,createScale:yf,mixinAxisModelCommonMethods:mf,getECData:O_,createTextStyle:_f,createDimensions:fp,createSymbol:Mh,enableHoverEmphasis:ya}),qC=[],jC={registerPreprocessor:Wc,registerProcessor:Gc,registerPostInit:Uc,registerPostUpdate:Xc,registerUpdateLifecycle:Yc,registerAction:Zc,registerCoordinateSystem:qc,registerLayout:Kc,registerVisual:$c,registerTransform:qT,registerLoading:Qc,registerMap:ep,PRIORITY:eT,ComponentModel:Zw,ComponentView:aS,SeriesModel:oS,ChartView:uS,registerComponentModel:function(t){Zw.registerClass(t)},registerComponentView:function(t){aS.registerClass(t)},registerSeriesModel:function(t){oS.registerClass(t)},registerChartView:function(t){uS.registerClass(t)},registerSubTypeDefaulter:function(t,e){Zw.registerSubTypeDefaulter(t,e)},registerPainter:function(t,e){vi(t,e)}},KC=(Object.freeze||Object)({linearMap:mi,round:xi,asc:wi,getPrecision:bi,getPrecisionSafe:Si,getPixelPrecision:Mi,getPercentWithPrecision:Ti,MAX_SAFE_INTEGER:Zy,remRadian:Ii,isRadianAroundZero:Di,parseDate:ki,quantity:Ai,quantityExponent:Oi,nice:Pi,quantile:Ri,reformIntervals:Li,isNumeric:Ei,numericToNumber:zi}),$C=(Object.freeze||Object)({parse:ki,format:Ns}),JC=(Object.freeze||Object)({extendShape:ts,extendPath:es,makePath:rs,makeImage:os,mergePath:nw,resizePath:ss,createIcon:fs,updateProps:Za,initProps:qa,getTransform:ls,clipPointsByRect:cs,clipRectByRect:ps,registerShape:ns,getShapeClass:is,Group:Fy,Image:x_,Text:D_,Circle:ux,Ellipse:cx,Sector:Tx,Ring:Ix,Polygon:kx,Polyline:Ox,Rect:M_,Line:Lx,BezierCurve:Bx,Arc:Nx,IncrementalDisplayable:Kx,CompoundPath:Vx,LinearGradient:Wx,RadialGradient:Gx,BoundingRect:Dy}),QC=(Object.freeze||Object)({addCommas:rl,toCamelCase:ol,normalizeCssArray:Bw,encodeHTML:al,formatTpl:sl,getTooltipMarker:ll,formatTime:ul,capitalFirst:hl,truncateText:Dr,getTextRect:il}),tI=(Object.freeze||Object)({map:y,each:v,indexOf:p,inherits:f,reduce:m,filter:_,bind:Kg,curry:S,isArray:M,isString:C,isObject:k,isFunction:T,extend:h,defaults:c,clone:s,merge:l}),eI=ar(),nI=[0,1],iI=function(){function t(t,e,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=e,this._extent=n||[0,0]}return t.prototype.contain=function(t){var e=this._extent,n=Math.min(e[0],e[1]),i=Math.max(e[0],e[1]);return t>=n&&i>=t},t.prototype.containData=function(t){return this.scale.contain(t)},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.getPixelPrecision=function(t){return Mi(t||this.scale.getExtent(),this._extent)},t.prototype.setExtent=function(t,e){var n=this._extent;n[0]=t,n[1]=e},t.prototype.dataToCoord=function(t,e){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&"ordinal"===i.type&&(n=n.slice(),zf(n,i.count())),mi(t,nI,n,e)},t.prototype.coordToData=function(t,e){var n=this._extent,i=this.scale;this.onBand&&"ordinal"===i.type&&(n=n.slice(),zf(n,i.count()));var r=mi(t,n,nI,e);return this.scale.scale(r)},t.prototype.pointToData=function(){},t.prototype.getTicksCoords=function(t){t=t||{};var e=t.tickModel||this.getTickModel(),n=bf(this,e),i=n.ticks,r=y(i,function(t){return{coord:this.dataToCoord("ordinal"===this.scale.type?this.scale.getRawOrdinalNumber(t):t),tickValue:t}},this),o=e.get("alignWithLabel");return Ef(this,r,o,t.clamp),r},t.prototype.getMinorTicksCoords=function(){if("ordinal"===this.scale.type)return[];var t=this.model.getModel("minorTick"),e=t.get("splitNumber");e>0&&100>e||(e=5);var n=this.scale.getMinorTicks(e),i=y(n,function(t){return y(t,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this)},this);return i},t.prototype.getViewLabels=function(){return wf(this).labels},t.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},t.prototype.getTickModel=function(){return this.model.getModel("axisTick")},t.prototype.getBandWidth=function(){var t=this._extent,e=this.scale.getExtent(),n=e[1]-e[0]+(this.onBand?1:0);0===n&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},t.prototype.calculateCategoryInterval=function(){return Of(this)},t}(),rI=2*Math.PI,oI=r_.CMD,aI=["top","right","bottom","left"],sI=[],lI=new _y,uI=new _y,hI=new _y,cI=new _y,pI=new _y,fI=[],dI=new _y,gI=["align","verticalAlign","width","height","fontSize"],vI=new yy,yI=ar(),mI=ar(),_I=["x","y","rotation"],xI=function(){function t(){this._labelList=[],this._chartViewList=[]}return t.prototype.clearLabels=function(){this._labelList=[],this._chartViewList=[]},t.prototype._addLabel=function(t,e,n,i,r){var o=i.style,a=i.__hostTarget,s=a.textConfig||{},l=i.getComputedTransform(),u=i.getBoundingRect().plain();Dy.applyTransform(u,u,l),l?vI.setLocalTransform(l):(vI.x=vI.y=vI.rotation=vI.originX=vI.originY=0,vI.scaleX=vI.scaleY=1);var h,c=i.__hostTarget;if(c){h=c.getBoundingRect().plain();var p=c.getComputedTransform();Dy.applyTransform(h,h,p)}var f=h&&c.getTextGuideLine();this._labelList.push({label:i,labelLine:f,seriesModel:n,dataIndex:t,dataType:e,layoutOption:r,computedLayoutOption:null,rect:u,hostRect:h,priority:h?h.width*h.height:0,defaultAttr:{ignore:i.ignore,labelGuideIgnore:f&&f.ignore,x:vI.x,y:vI.y,scaleX:vI.scaleX,scaleY:vI.scaleY,rotation:vI.rotation,style:{x:o.x,y:o.y,align:o.align,verticalAlign:o.verticalAlign,width:o.width,height:o.height,fontSize:o.fontSize},cursor:i.cursor,attachedPos:s.position,attachedRot:s.rotation}})},t.prototype.addLabelsOfSeries=function(t){var e=this;this._chartViewList.push(t);var n=t.__model,i=n.get("labelLayout");(T(i)||w(i).length)&&t.group.traverse(function(t){if(t.ignore)return!0;var r=t.getTextContent(),o=O_(t);r&&!r.disableLabelLayout&&e._addLabel(o.dataIndex,o.dataType,n,r,i)})},t.prototype.updateLayoutConfig=function(t){function e(t,e){return function(){Zf(t,e)}}for(var n=t.getWidth(),i=t.getHeight(),r=0;r=0&&n.attr(r.oldLayoutSelect),p(h,"emphasis")>=0&&n.attr(r.oldLayoutEmphasis)),Za(n,l,e,s)}else if(n.attr(l),!sw(n).valueAnimation){var c=F(n.style.opacity,1);n.style.opacity=0,qa(n,{style:{opacity:c}},e,s)}if(r.oldLayout=l,n.states.select){var f=r.oldLayoutSelect={};ad(f,l,_I),ad(f,n.states.select,_I)}if(n.states.emphasis){var d=r.oldLayoutEmphasis={};ad(d,l,_I),ad(d,n.states.emphasis,_I)}Cs(n,s,u,e,e)}if(i&&!i.ignore&&!i.invisible){var r=mI(i),o=r.oldLayout,g={points:i.shape.points};o?(i.attr({shape:o}),Za(i,{shape:g},e)):(i.setShape(g),i.style.strokePercent=0,qa(i,{style:{strokePercent:1}},e)),r.oldLayout=g}},t}(),wI=ar();xf(sd);var bI=function(t){function n(e,n,i){var r=t.call(this)||this;r.motionBlur=!1,r.lastFrameAlpha=.7,r.dpr=1,r.virtual=!1,r.config={},r.incremental=!1,r.zlevel=0,r.maxRepaintRectCount=5,r.__dirty=!0,r.__firstTimePaint=!0,r.__used=!1,r.__drawIndex=0,r.__startIndex=0,r.__endIndex=0,r.__prevStartIndex=null,r.__prevEndIndex=null;var o;i=i||oy,"string"==typeof e?o=ud(e,n,i):k(e)&&(o=e,e=o.id),r.id=e,r.dom=o;var a=o.style;return a&&(o.onselectstart=ld,a.webkitUserSelect="none",a.userSelect="none",a.webkitTapHighlightColor="rgba(0,0,0,0)",a["-webkit-touch-callout"]="none",a.padding="0",a.margin="0",a.borderWidth="0"),r.domBack=null,r.ctxBack=null,r.painter=n,r.config=null,r.dpr=i,r}return e(n,t),n.prototype.getElementCount=function(){return this.__endIndex-this.__startIndex},n.prototype.afterBrush=function(){this.__prevStartIndex=this.__startIndex,this.__prevEndIndex=this.__endIndex},n.prototype.initContext=function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},n.prototype.setUnpainted=function(){this.__firstTimePaint=!0},n.prototype.createBackBuffer=function(){var t=this.dpr;this.domBack=ud("back-"+this.id,this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!==t&&this.ctxBack.scale(t,t)},n.prototype.createRepaintRects=function(t,e,n,i){function r(t){if(t.isFinite()&&!t.isZero())if(0===o.length){var e=new Dy(0,0,0,0);e.copy(t),o.push(e)}else{for(var n=!1,i=1/0,r=0,u=0;ug&&(i=g,r=u)}}if(s&&(o[r].union(t),n=!0),!n){var e=new Dy(0,0,0,0);e.copy(t),o.push(e)}s||(s=o.length>=a)}}if(this.__firstTimePaint)return this.__firstTimePaint=!1,null;for(var o=[],a=this.maxRepaintRectCount,s=!1,l=new Dy(0,0,0,0),u=this.__startIndex;uo;o++){var a=t[o];a.__inHover&&(n||(n=this._hoverlayer=this.getLayer(SI)),i||(i=n.ctx,i.save()),jh(i,a,r,o===e-1))}i&&i.restore()}},t.prototype.getHoverLayer=function(){return this.getLayer(SI)},t.prototype.paintOne=function(t,e){qh(t,e)},t.prototype._paintList=function(t,e,n,i){if(this._redrawId===i){n=n||!1,this._updateLayerStatus(t);var r=this._doPaintList(t,e,n),o=r.finished,a=r.needsRefreshHover;if(this._needsManuallyCompositing&&this._compositeManually(),a&&this._paintHoverList(t),o)this.eachLayer(function(t){t.afterBrush&&t.afterBrush()});else{var s=this;kv(function(){s._paintList(t,e,n,i)})}}},t.prototype._compositeManually=function(){var t=this.getLayer(MI).ctx,e=this._domRoot.width,n=this._domRoot.height;t.clearRect(0,0,e,n),this.eachBuiltinLayer(function(i){i.virtual&&t.drawImage(i.dom,0,0,e,n)})},t.prototype._doPaintList=function(t,e,n){for(var i=this,r=[],o=this._opts.useDirtyRect,a=0;a15)break}}n.prevElClipPaths&&l.restore()};if(c)if(0===c.length)m=s.__endIndex;else for(var x=p.dpr,w=0;w0&&t>i[0]){for(l=0;r-1>l&&!(i[l]t);l++);s=n[i[l]]}if(i.splice(l+1,0,t),n[t]=e,!e.virtual)if(s){var u=s.dom;u.nextSibling?o.insertBefore(e.dom,u.nextSibling):o.appendChild(e.dom)}else o.firstChild?o.insertBefore(e.dom,o.firstChild):o.appendChild(e.dom);e.__painter=this},t.prototype.eachLayer=function(t,e){for(var n=this._zlevelList,i=0;i0?TI:0),this._needsManuallyCompositing),h.__builtin__||a("ZLevel "+u+" has been used by unkown layer "+h.id),h!==s&&(h.__used=!0,h.__startIndex!==o&&(h.__dirty=!0),h.__startIndex=o,h.__drawIndex=h.incremental?-1:o,e(o),s=h),i.__dirty&Mv&&!i.__inHover&&(h.__dirty=!0,h.incremental&&h.__drawIndex<0&&(h.__drawIndex=o))}e(o),this.eachBuiltinLayer(function(t){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},t.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},t.prototype._clearLayer=function(t){t.clear()},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t,v(this._layers,function(t){t.setUnpainted()})},t.prototype.configLayer=function(t,e){if(e){var n=this._layerConfig;n[t]?l(n[t],e,!0):n[t]=e;for(var i=0;is;s++){var u=a[s];jh(n,u,o,s===l-1)}return e.dom},t.prototype.getWidth=function(){return this._width },t.prototype.getHeight=function(){return this._height},t.prototype._getSize=function(t){var e=this._opts,n=["width","height"][t],i=["clientWidth","clientHeight"][t],r=["paddingLeft","paddingTop"][t],o=["paddingRight","paddingBottom"][t];if(null!=e[n]&&"auto"!==e[n])return parseFloat(e[n]);var a=this.root,s=document.defaultView.getComputedStyle(a);return(a[i]||hd(s[n])||hd(a.style[n]))-(hd(s[r])||0)-(hd(s[o])||0)|0},t.prototype.pathToImage=function(t,e){e=e||this.dpr;var n=document.createElement("canvas"),i=n.getContext("2d"),r=t.getBoundingRect(),o=t.style,a=o.shadowBlur*e,s=o.shadowOffsetX*e,l=o.shadowOffsetY*e,u=t.hasStroke()?o.lineWidth:0,c=Math.max(u/2,-s+a),p=Math.max(u/2,s+a),f=Math.max(u/2,-l+a),d=Math.max(u/2,l+a),g=r.width+c+p,v=r.height+f+d;n.width=g*e,n.height=v*e,i.scale(e,e),i.clearRect(0,0,g,v),i.dpr=e;var y={x:t.x,y:t.y,scaleX:t.scaleX,scaleY:t.scaleY,rotation:t.rotation,originX:t.originX,originY:t.originY};t.x=c-r.x,t.y=f-r.y,t.rotation=0,t.scaleX=1,t.scaleY=1,t.updateTransform(),t&&jh(i,t,{inHover:!1,viewWidth:this._width,viewHeight:this._height},!0);var m=new x_({style:{x:0,y:0,image:n}});return h(t,y),m},t}(),DI=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataset",e}return e(n,t),n.prototype.init=function(e,n,i){t.prototype.init.call(this,e,n,i),this._sourceManager=new nS(this),zu(this)},n.prototype.mergeOption=function(e,n){t.prototype.mergeOption.call(this,e,n),zu(this)},n.prototype.optionUpdated=function(){this._sourceManager.dirty()},n.prototype.getSourceManager=function(){return this._sourceManager},n.type="dataset",n.defaultOption={seriesLayoutBy:ab},n}(Zw),kI=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataset",e}return e(n,t),n.type="dataset",n}(aS);xf([fd,dd]),xf(sd);var AI={average:function(t){for(var e=0,n=0,i=0;ie&&(e=t[n]);return isFinite(e)?e:0/0},min:function(t){for(var e=1/0,n=0;nt&&(t=e),t},n.prototype.brushSelector=function(t,e,n){return n.rect(e.getItemLayout(t))},n.type="series.bar",n.dependencies=["grid","polar"],n.defaultOption=As(PI.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),n}(PI),LI=function(){function t(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0}return t}(),zI=function(t){function n(e){var n=t.call(this,e)||this;return n.type="sausage",n}return e(n,t),n.prototype.getDefaultShape=function(){return new LI},n.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=.5*(o-r),s=r+a,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=Math.cos(l),p=Math.sin(l),f=Math.cos(u),d=Math.sin(u),g=h?u-l<2*Math.PI:l-u<2*Math.PI;g&&(t.moveTo(c*r+n,p*r+i),t.arc(c*s+n,p*s+i,a,-Math.PI+l,l,!h)),t.arc(n,i,o,l,u,!h),t.moveTo(f*o+n,d*o+i),t.arc(f*s+n,d*s+i,a,u-2*Math.PI,u-Math.PI,!h),0!==r&&(t.arc(n,i,r,u,l,h),t.moveTo(c*r+n,d*r+i)),t.closePath()},n}(g_),EI=[0,0],BI=Math.max,FI=Math.min,NI=function(t){function n(){var e=t.call(this)||this;return e.type=n.type,e._isFirstFrame=!0,e}return e(n,t),n.prototype.render=function(t,e,n,i){this._model=t,this._removeOnRenderedListener(n),this._updateDrawMode(t);var r=t.get("coordinateSystem");("cartesian2d"===r||"polar"===r)&&(this._isLargeDraw?this._renderLarge(t,e,n):this._renderNormal(t,e,n,i))},n.prototype.incrementalPrepareRender=function(t){this._clear(),this._updateDrawMode(t),this._updateLargeClip(t)},n.prototype.incrementalRender=function(t,e){this._incrementalRenderLarge(t,e)},n.prototype._updateDrawMode=function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e!==this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},n.prototype._renderNormal=function(t,e,n,i){function r(t){var e=XI[u.type](s,t),n=Nd(u,o,e);return n.useStyle(y.getItemStyle()),"cartesian2d"===u.type&&n.setShape("r",m),_[t]=n,n}var o,a=this.group,s=t.getData(),l=this._data,u=t.coordinateSystem,h=u.getBaseAxis();"cartesian2d"===u.type?o=h.isHorizontal():"polar"===u.type&&(o="angle"===h.dim);var c=t.isAnimationEnabled()?t:null,p=Id(t,u);p&&this._enableRealtimeSort(p,s,n);var f=t.get("clip",!0)||p,d=Cd(u,s);a.removeClipPath();var g=t.get("roundCap",!0),v=t.get("showBackground",!0),y=t.getModel("backgroundStyle"),m=y.get("borderRadius")||0,_=[],x=this._backgroundEls,w=i&&i.isInitSort,b=i&&"changeAxisOrder"===i.type;s.diff(l).add(function(e){var n=s.getItemModel(e),i=XI[u.type](s,e,n);if(v&&r(e),s.hasValue(e)&&UI[u.type](i)){var l=!1;f&&(l=VI[u.type](d,i));var y=HI[u.type](t,s,e,i,o,c,h.model,!1,g);p&&(y.forceLabelAnimation=!0),Pd(y,s,e,n,i,t,o,"polar"===u.type),w?y.attr({shape:i}):p?Dd(p,c,y,i,e,o,!1,!1):qa(y,{shape:i},t,e),s.setItemGraphicEl(e,y),a.add(y),y.ignore=l}}).update(function(e,n){var i=s.getItemModel(e),S=XI[u.type](s,e,i);if(v){var M=void 0;0===x.length?M=r(n):(M=x[n],M.useStyle(y.getItemStyle()),"cartesian2d"===u.type&&M.setShape("r",m),_[e]=M);var T=XI[u.type](s,e),C=Fd(o,T,u);Za(M,{shape:C},c,e)}var I=l.getItemGraphicEl(n);if(!s.hasValue(e)||!UI[u.type](S))return void a.remove(I);var D=!1;if(f&&(D=VI[u.type](d,S),D&&a.remove(I)),I?Qa(I):I=HI[u.type](t,s,e,S,o,c,h.model,!!I,g),p&&(I.forceLabelAnimation=!0),b){var k=I.getTextContent();if(k){var A=sw(k);null!=A.prevValue&&(A.prevValue=A.value)}}b||Pd(I,s,e,i,S,t,o,"polar"===u.type),w?I.attr({shape:S}):p?Dd(p,c,I,S,e,o,!0,b):Za(I,{shape:S},t,e,null),s.setItemGraphicEl(e,I),I.ignore=D,a.add(I)}).remove(function(e){var n=l.getItemGraphicEl(e);n&&Ja(n,t,e)}).execute();var S=this._backgroundGroup||(this._backgroundGroup=new Fy);S.removeAll();for(var M=0;M<_.length;++M)S.add(_[M]);a.add(S),this._backgroundEls=_,this._data=s},n.prototype._renderLarge=function(t){this._clear(),Ld(t,this.group),this._updateLargeClip(t)},n.prototype._incrementalRenderLarge=function(t,e){this._removeBackground(),Ld(e,this.group,!0)},n.prototype._updateLargeClip=function(t){var e=t.get("clip",!0)?md(t.coordinateSystem,!1,t):null;e?this.group.setClipPath(e):this.group.removeClipPath()},n.prototype._enableRealtimeSort=function(t,e,n){var i=this;if(e.count()){var r=t.baseAxis;if(this._isFirstFrame)this._dispatchInitSort(e,t,n),this._isFirstFrame=!1;else{var o=function(t){var n=e.getItemGraphicEl(t);if(n){var i=n.shape;return Math.abs(r.isHorizontal()?i.height:i.width)||0}return 0};this._onRendered=function(){i._updateSortWithinSameData(e,o,r,n)},n.getZr().on("rendered",this._onRendered)}}},n.prototype._dataSort=function(t,e,n){var i=[];return t.each(t.mapDimension(e.dim),function(t,e){var r=n(e);r=null==r?0/0:r,i.push({dataIndex:e,mappedValue:r,ordinalNumber:t})}),i.sort(function(t,e){return e.mappedValue-t.mappedValue}),{ordinalNumbers:y(i,function(t){return t.ordinalNumber})}},n.prototype._isOrderChangedWithinSameData=function(t,e,n){for(var i=n.scale,r=t.mapDimension(n.dim),o=Number.MAX_VALUE,a=0,s=i.getOrdinalMeta().categories.length;s>a;++a){var l=t.rawIndexOf(r,i.getRawOrdinalNumber(a)),u=0>l?Number.MIN_VALUE:e(t.indexOfRawIndex(l));if(u>o)return!0;o=u}return!1},n.prototype._isOrderDifferentInView=function(t,e){for(var n=e.scale,i=n.getExtent(),r=Math.max(0,i[0]),o=Math.min(i[1],n.getOrdinalMeta().categories.length-1);o>=r;++r)if(t.ordinalNumbers[r]!==n.getRawOrdinalNumber(r))return!0},n.prototype._updateSortWithinSameData=function(t,e,n,i){if(this._isOrderChangedWithinSameData(t,e,n)){var r=this._dataSort(t,n,e);this._isOrderDifferentInView(r,n)&&(this._removeOnRenderedListener(i),i.dispatchAction({type:"changeAxisOrder",componentType:n.dim+"Axis",axisId:n.index,sortInfo:r}))}},n.prototype._dispatchInitSort=function(t,e,n){var i=e.baseAxis,r=this._dataSort(t,i,function(n){return t.get(t.mapDimension(e.otherAxis.dim),n)});n.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",isInitSort:!0,axisId:i.index,sortInfo:r})},n.prototype.remove=function(t,e){this._clear(this._model),this._removeOnRenderedListener(e)},n.prototype.dispose=function(t,e){this._removeOnRenderedListener(e)},n.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},n.prototype._clear=function(t){var e=this.group,n=this._data;t&&t.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl(function(e){Ja(e,t,O_(e).dataIndex)})):e.removeAll(),this._data=null,this._isFirstFrame=!0},n.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},n.type="bar",n}(uS),VI={cartesian2d:function(t,e){var n=e.width<0?-1:1,i=e.height<0?-1:1;0>n&&(e.x+=e.width,e.width=-e.width),0>i&&(e.y+=e.height,e.height=-e.height);var r=t.x+t.width,o=t.y+t.height,a=BI(e.x,t.x),s=FI(e.x+e.width,r),l=BI(e.y,t.y),u=FI(e.y+e.height,o),h=a>s,c=l>u;return e.x=h&&a>r?s:a,e.y=c&&l>o?u:l,e.width=h?0:s-a,e.height=c?0:u-l,0>n&&(e.x+=e.width,e.width=-e.width),0>i&&(e.y+=e.height,e.height=-e.height),h||c},polar:function(t,e){var n=e.r0<=e.r?1:-1;if(0>n){var i=e.r;e.r=e.r0,e.r0=i}var r=FI(e.r,t.r),o=BI(e.r0,t.r0);e.r=r,e.r0=o;var a=0>r-o;if(0>n){var i=e.r;e.r=e.r0,e.r0=i}return a}},HI={cartesian2d:function(t,e,n,i,r,o){var a=new M_({shape:h({},i),z2:1});if(a.__dataIndex=n,a.name="item",o){var s=a.shape,l=r?"height":"width";s[l]=0}return a},polar:function(t,e,n,i,r,o,a,s,l){var u=!r&&l?zI:Tx,h=new u({shape:i,z2:1});h.name="item";var c=Od(r);if(h.calculateTextPosition=bd(c,{isRoundCap:u===zI}),o){var p=h.shape,f=r?"r":"endAngle",d={};p[f]=r?0:i.startAngle,d[f]=i[f],(s?Za:qa)(h,{shape:d},o)}return h}},WI=["x","y","width","height"],GI=["cx","cy","r","startAngle","endAngle"],UI={cartesian2d:function(t){return!kd(t,WI)},polar:function(t){return!kd(t,GI)}},XI={cartesian2d:function(t,e,n){var i=t.getItemLayout(e),r=n?Rd(n,i):0,o=i.width>0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(t,e){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle,clockwise:n.clockwise}}},YI=function(){function t(){}return t}(),ZI=function(t){function n(e){var n=t.call(this,e)||this;return n.type="largeBar",n}return e(n,t),n.prototype.getDefaultShape=function(){return new YI},n.prototype.buildPath=function(t,e){for(var n=e.points,i=this.__startPoint,r=this.__baseDimIdx,o=0;o=0?n:null},30,!1);xf(Vd);var jI=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=n.type,e.layoutMode={type:"box",ignoreSize:!0},e}return e(n,t),n.type="title",n.defaultOption={zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},n}(Zw),KI=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=n.type,e}return e(n,t),n.prototype.render=function(t,e,n){if(this.group.removeAll(),t.get("show")){var i=this.group,r=t.getModel("textStyle"),o=t.getModel("subtextStyle"),a=t.get("textAlign"),s=F(t.get("textBaseline"),t.get("textVerticalAlign")),l=new D_({style:_s(r,{text:t.get("text"),fill:r.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new D_({style:_s(o,{text:h,fill:o.getTextColor(),y:u.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),p=t.get("link"),f=t.get("sublink"),d=t.get("triggerEvent",!0);l.silent=!p&&!d,c.silent=!f&&!d,p&&l.on("click",function(){pl(p,"_"+t.get("target"))}),f&&c.on("click",function(){pl(f,"_"+t.get("subtarget"))}),O_(l).eventData=O_(c).eventData=d?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(l),h&&i.add(c);var g=i.getBoundingRect(),v=t.getBoxLayoutParams();v.width=g.width,v.height=g.height;var y=dl(v,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));a||(a=t.get("left")||t.get("right"),"middle"===a&&(a="center"),"right"===a?y.x+=y.width:"center"===a&&(y.x+=y.width/2)),s||(s=t.get("top")||t.get("bottom"),"center"===s&&(s="middle"),"bottom"===s?y.y+=y.height:"middle"===s&&(y.y+=y.height/2),s=s||"top"),i.x=y.x,i.y=y.y,i.markRedraw();var m={align:a,verticalAlign:s};l.setStyle(m),c.setStyle(m),g=i.getBoundingRect();var _=y.margin,x=t.getItemStyle(["color","opacity"]);x.fill=t.get("backgroundColor");var w=new M_({shape:{x:g.x-_[3],y:g.y-_[0],width:g.width+_[1]+_[3],height:g.height+_[0]+_[2],r:t.get("borderRadius")},style:x,subPixelOptimize:!0,silent:!0});i.add(w)}},n.type="title",n}(aS);xf(Hd);var $I=function(t,e){return"all"===e?{type:"all",title:t.getLocaleModel().get(["legend","selector","all"])}:"inverse"===e?{type:"inverse",title:t.getLocaleModel().get(["legend","selector","inverse"])}:void 0},JI=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=n.type,e.layoutMode={type:"box",ignoreSize:!0},e}return e(n,t),n.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),t.selected=t.selected||{},this._updateSelector(t)},n.prototype.mergeOption=function(e,n){t.prototype.mergeOption.call(this,e,n),this._updateSelector(e)},n.prototype._updateSelector=function(t){var e=t.selector,n=this.ecModel;e===!0&&(e=t.selector=["all","inverse"]),M(e)&&v(e,function(t,i){C(t)&&(t={type:t}),e[i]=l(t,$I(n,t.type))})},n.prototype.optionUpdated=function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,n=0;n=0},n.prototype.getOrient=function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},n.type="legend.plain",n.dependencies=["series"],n.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,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},n}(Zw),QI=S,tD=v,eD=Fy,nD=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=n.type,e.newlineDisabled=!1,e}return e(n,t),n.prototype.init=function(){this.group.add(this._contentGroup=new eD),this.group.add(this._selectorGroup=new eD),this._isFirstRender=!0},n.prototype.getContentGroup=function(){return this._contentGroup},n.prototype.getSelectorGroup=function(){return this._selectorGroup},n.prototype.render=function(t,e,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var r=t.get("align"),o=t.get("orient");r&&"auto"!==r||(r="right"===t.get("left")&&"vertical"===o?"right":"left");var a=t.get("selector",!0),s=t.get("selectorPosition",!0);!a||s&&"auto"!==s||(s="horizontal"===o?"end":"start"),this.renderInner(r,t,e,n,a,o,s);var l=t.getBoxLayoutParams(),u={width:n.getWidth(),height:n.getHeight()},h=t.get("padding"),p=dl(l,u,h),f=this.layoutInner(t,r,p,i,a,s),d=dl(c({width:f.width,height:f.height},l),u,h);this.group.x=d.x-f.x,this.group.y=d.y-f.y,this.group.markRedraw(),this.group.add(this._backgroundEl=Wd(f,t))}},n.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},n.prototype.renderInner=function(t,e,n,i,r,o,a){var s=this.getContentGroup(),l=Y(),u=e.get("selectedMode"),h=[];n.eachRawSeries(function(t){!t.get("legendHoverLink")&&h.push(t.id)}),tD(e.getData(),function(r,o){var a=r.get("name");if(!this.newlineDisabled&&(""===a||"\n"===a)){var c=new eD;return c.newline=!0,void s.add(c)}var p=n.getSeriesByName(a)[0];if(!l.get(a))if(p){var f=p.getData(),d=f.getVisual("legendLineStyle")||{},g=f.getVisual("legendIcon"),v=f.getVisual("style"),y=this._createItem(p,a,o,r,e,t,d,v,g,u);y.on("click",QI(Xd,a,null,i,h)).on("mouseover",QI(Zd,p.name,null,i,h)).on("mouseout",QI(qd,p.name,null,i,h)),l.set(a,!0)}else n.eachRawSeries(function(n){if(!l.get(a)&&n.legendVisualProvider){var s=n.legendVisualProvider;if(!s.containName(a))return;var c=s.indexOfName(a),p=s.getItemVisual(c,"style"),f=s.getItemVisual(c,"legendIcon"),d=on(p.fill);d&&0===d[3]&&(d[3]=.2,p.fill=dn(d,"rgba"));var g=this._createItem(n,a,o,r,e,t,{},p,f,u);g.on("click",QI(Xd,null,a,i,h)).on("mouseover",QI(Zd,null,a,i,h)).on("mouseout",QI(qd,null,a,i,h)),l.set(a,!0)}},this)},this),r&&this._createSelector(r,e,i,o,a)},n.prototype._createSelector=function(t,e,n){var i=this.getSelectorGroup();tD(t,function(t){var r=t.type,o=new D_({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:"all"===r?"legendAllSelect":"legendInverseSelect"})}});i.add(o);var a=e.getModel("selectorLabel"),s=e.getModel(["emphasis","selectorLabel"]);ys(o,{normal:a,emphasis:s},{defaultText:t.title}),ya(o)})},n.prototype._createItem=function(t,e,n,i,r,o,a,s,l,u){var h=t.visualDrawType,c=r.get("itemWidth"),p=r.get("itemHeight"),f=r.isSelected(e),d=i.get("symbolRotate"),g=i.get("symbolKeepAspect"),v=i.get("icon");l=v||l||"roundRect";var y=Gd(l,i,a,s,h,f),m=new eD,_=i.getModel("textStyle");if("function"!=typeof t.getLegendIcon||v&&"inherit"!==v){var x="inherit"===v&&t.getData().getVisual("symbol")?"inherit"===d?t.getData().getVisual("symbolRotate"):d:0;m.add(Ud({itemWidth:c,itemHeight:p,icon:l,iconRotate:x,itemStyle:y.itemStyle,lineStyle:y.lineStyle,symbolKeepAspect:g}))}else m.add(t.getLegendIcon({itemWidth:c,itemHeight:p,icon:l,iconRotate:d,itemStyle:y.itemStyle,lineStyle:y.lineStyle,symbolKeepAspect:g}));var w="left"===o?c+5:-5,b=o,S=r.get("formatter"),M=e;"string"==typeof S&&S?M=S.replace("{name}",null!=e?e:""):"function"==typeof S&&(M=S(e));var T=i.get("inactiveColor");m.add(new D_({style:_s(_,{text:M,x:w,y:p/2,fill:f?_.getTextColor():T,align:b,verticalAlign:"middle"})}));var C=new M_({shape:m.getBoundingRect(),invisible:!0}),I=i.getModel("tooltip");return I.get("show")&&ds({el:C,componentModel:r,itemName:e,itemTooltipOption:I.option}),m.add(C),m.eachChild(function(t){t.silent=!0}),C.silent=!u,this.getContentGroup().add(m),ya(m),m.__legendDataIndex=n,m},n.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getContentGroup(),s=this.getSelectorGroup();Xw(t.get("orient"),a,t.get("itemGap"),n.width,n.height);var l=a.getBoundingRect(),u=[-l.x,-l.y];if(s.markRedraw(),a.markRedraw(),r){Xw("horizontal",s,t.get("selectorItemGap",!0));var h=s.getBoundingRect(),c=[-h.x,-h.y],p=t.get("selectorButtonGap",!0),f=t.getOrient().index,d=0===f?"width":"height",g=0===f?"height":"width",v=0===f?"y":"x";"end"===o?c[f]+=l[d]+p:u[f]+=h[d]+p,c[1-f]+=l[g]/2-h[g]/2,s.x=c[0],s.y=c[1],a.x=u[0],a.y=u[1];var y={x:0,y:0};return y[d]=l[d]+p+h[d],y[g]=Math.max(l[g],h[g]),y[v]=Math.min(0,h[v]+c[1-f]),y}return a.x=u[0],a.y=u[1],this.group.getBoundingRect()},n.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},n.type="legend.plain",n}(aS),iD=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=n.type,e}return e(n,t),n.prototype.setScrollDataIndex=function(t){this.option.scrollDataIndex=t},n.prototype.init=function(e,n,i){var r=yl(e);t.prototype.init.call(this,e,n,i),Qd(this,e,r)},n.prototype.mergeOption=function(e,n){t.prototype.mergeOption.call(this,e,n),Qd(this,this.option,e)},n.type="legend.scroll",n.defaultOption=As(JI.defaultOption,{scrollDataIndex:0,pageButtonItemGap:5,pageButtonGap:null,pageButtonPosition:"end",pageFormatter:"{current}/{total}",pageIcons:{horizontal:["M0,0L12,-10L12,10z","M0,0L-12,-10L-12,10z"],vertical:["M0,0L20,0L10,-20z","M0,0L20,0L10,20z"]},pageIconColor:"#2f4554",pageIconInactiveColor:"#aaa",pageIconSize:15,pageTextStyle:{color:"#333"},animationDurationUpdate:800}),n}(JI),rD=Fy,oD=["width","height"],aD=["x","y"],sD=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=n.type,e.newlineDisabled=!0,e._currentIndex=0,e}return e(n,t),n.prototype.init=function(){t.prototype.init.call(this),this.group.add(this._containerGroup=new rD),this._containerGroup.add(this.getContentGroup()),this.group.add(this._controllerGroup=new rD)},n.prototype.resetInner=function(){t.prototype.resetInner.call(this),this._controllerGroup.removeAll(),this._containerGroup.removeClipPath(),this._containerGroup.__rectSize=null},n.prototype.renderInner=function(e,n,i,r,o,a,s){function l(t,e){var i=t+"DataIndex",o=fs(n.get("pageIcons",!0)[n.getOrient().name][e],{onclick:Kg(u._pageGo,u,i,n,r)},{x:-p[0]/2,y:-p[1]/2,width:p[0],height:p[1]});o.name=t,h.add(o)}var u=this;t.prototype.renderInner.call(this,e,n,i,r,o,a,s);var h=this._controllerGroup,c=n.get("pageIconSize",!0),p=M(c)?c:[c,c];l("pagePrev",0);var f=n.getModel("pageTextStyle");h.add(new D_({name:"pageText",style:{text:"xx/xx",fill:f.getTextColor(),font:f.getFont(),verticalAlign:"middle",align:"center"},silent:!0})),l("pageNext",1)},n.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getSelectorGroup(),l=t.getOrient().index,u=oD[l],h=aD[l],c=oD[1-l],p=aD[1-l];r&&Xw("horizontal",a,t.get("selectorItemGap",!0));var f=t.get("selectorButtonGap",!0),d=a.getBoundingRect(),g=[-d.x,-d.y],v=s(n);r&&(v[u]=n[u]-d[u]-f);var y=this._layoutContentAndController(t,i,v,l,u,c,p,h);if(r){if("end"===o)g[l]+=y[u]+f;else{var m=d[u]+f;g[l]-=m,y[h]-=m}y[u]+=d[u]+f,g[1-l]+=y[p]+y[c]/2-d[c]/2,y[c]=Math.max(y[c],d[c]),y[p]=Math.min(y[p],d[p]+g[1-l]),a.x=g[0],a.y=g[1],a.markRedraw()}return y},n.prototype._layoutContentAndController=function(t,e,n,i,r,o,a,s){var l=this.getContentGroup(),u=this._containerGroup,h=this._controllerGroup;Xw(t.get("orient"),l,t.get("itemGap"),i?n.width:null,i?null:n.height),Xw("horizontal",h,t.get("pageButtonItemGap",!0));var c=l.getBoundingRect(),p=h.getBoundingRect(),f=this._showController=c[r]>n[r],d=[-c.x,-c.y];e||(d[i]=l[s]);var g=[0,0],v=[-p.x,-p.y],y=F(t.get("pageButtonGap",!0),t.get("itemGap",!0));if(f){var m=t.get("pageButtonPosition",!0);"end"===m?v[i]+=n[r]-p[r]:g[i]+=p[r]+y}v[1-i]+=c[o]/2-p[o]/2,l.setPosition(d),u.setPosition(g),h.setPosition(v);var _={x:0,y:0};if(_[r]=f?n[r]:c[r],_[o]=Math.max(c[o],p[o]),_[a]=Math.min(0,p[a]+v[1-i]),u.__rectSize=n[r],f){var x={x:0,y:0};x[r]=Math.max(n[r]-p[r]-y,0),x[o]=_[o],u.setClipPath(new M_({shape:x})),u.__rectSize=x[r]}else h.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var w=this._getPageInfo(t);return null!=w.pageIndex&&Za(l,{x:w.contentPosition[0],y:w.contentPosition[1]},f?t:null),this._updatePageInfoView(t,w),_},n.prototype._pageGo=function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},n.prototype._updatePageInfoView=function(t,e){var n=this._controllerGroup;v(["pagePrev","pageNext"],function(i){var r=i+"DataIndex",o=null!=e[r],a=n.childOfName(i);a&&(a.setStyle("fill",o?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=o?"pointer":"default")});var i=n.childOfName("pageText"),r=t.get("pageFormatter"),o=e.pageIndex,a=null!=o?o+1:0,s=e.pageCount;i&&r&&i.setStyle("text",C(r)?r.replace("{current}",null==a?"":a+"").replace("{total}",null==s?"":s+""):r({current:a,total:s}))},n.prototype._getPageInfo=function(t){function e(t){if(t){var e=t.getBoundingRect(),n=e[l]+t[l];return{s:n,e:n+e[s],i:t.__legendDataIndex}}}function n(t,e){return t.e>=e&&t.s<=e+o}var i=t.get("scrollDataIndex",!0),r=this.getContentGroup(),o=this._containerGroup.__rectSize,a=t.getOrient().index,s=oD[a],l=aD[a],u=this._findTargetItemIndex(i),h=r.children(),c=h[u],p=h.length,f=p?1:0,d={contentPosition:[r.x,r.y],pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return d;var g=e(c);d.contentPosition[a]=-g.s;for(var v=u+1,y=g,m=g,_=null;p>=v;++v)_=e(h[v]),(!_&&m.e>y.s+o||_&&!n(_,y.s))&&(y=m.i>y.i?m:_,y&&(null==d.pageNextDataIndex&&(d.pageNextDataIndex=y.i),++d.pageCount)),m=_;for(var v=u-1,y=g,m=g,_=null;v>=-1;--v)_=e(h[v]),_&&n(m,_.s)||!(y.i0?100:20}},n.prototype._updateRangeUse=function(t){var e=this._rangePropMode,n=this.get("rangeMode");v([["start","startValue"],["end","endValue"]],function(i,r){var o=null!=t[i[0]],a=null!=t[i[1]];o&&!a?e[r]="percent":!o&&a?e[r]="value":n?e[r]=n[r]:o&&(e[r]="percent")})},n.prototype.noTarget=function(){return this._noTarget},n.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis(function(e,n){null==t&&(t=this.ecModel.getComponent(ig(e),n))},this),t},n.prototype.eachTargetAxis=function(t,e){this._targetAxisInfoMap.each(function(n,i){v(n.indexList,function(n){t.call(e,i,n)})})},n.prototype.getAxisProxy=function(t,e){var n=this.getAxisModel(t,e);return n?n.__dzAxisProxy:void 0},n.prototype.getAxisModel=function(t,e){var n=this._targetAxisInfoMap.get(t);return n&&n.indexMap[e]?this.ecModel.getComponent(ig(t),e):void 0},n.prototype.setRawRange=function(t){var e=this.option,n=this.settledOption;v([["start","startValue"],["end","endValue"]],function(i){(null!=t[i[0]]||null!=t[i[1]])&&(e[i[0]]=n[i[0]]=t[i[0]],e[i[1]]=n[i[1]]=t[i[1]])},this),this._updateRangeUse(t)},n.prototype.setCalculatedRange=function(t){var e=this.option;v(["start","startValue","end","endValue"],function(n){e[n]=t[n]})},n.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy(); return t?t.getDataPercentWindow():void 0},n.prototype.getValueRange=function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var n=this.findRepresentativeAxisProxy();return n?n.getDataValueWindow():void 0},n.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var e,n=this._targetAxisInfoMap.keys(),i=0;i3?1.4:r>1?1.2:1.1,l=i>0?s:1/s;pg(this,"zoom","zoomOnMouseWheel",t,{scale:l,originX:o,originY:a,isAvailableBehavior:null})}if(n){var u=Math.abs(i),h=(i>0?1:-1)*(u>3?.4:u>1?.15:.05);pg(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:h,originX:o,originY:a,isAvailableBehavior:null})}}},n.prototype._pinchHandler=function(t){if(!hg(this._zr,"globalPan")){var e=t.pinchScale>1?1.1:1/1.1;pg(this,"zoom",null,t,{scale:e,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})}},n}(sv),vD=ar(),yD=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataZoom.inside",e}return e(n,t),n.prototype.render=function(e,n,i){return t.prototype.render.apply(this,arguments),e.noTarget()?void this._clear():(this.range=e.getPercentRange(),void gg(i,e,{pan:Kg(mD.pan,this),zoom:Kg(mD.zoom,this),scrollMove:Kg(mD.scrollMove,this)}))},n.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},n.prototype._clear=function(){vg(this.api,this.dataZoomModel),this.range=null},n.type="dataZoom.inside",n}(fD),mD={zoom:function(t,e,n,i){var r=this.range,o=r.slice(),a=t.axisModels[0];if(a){var s=_D[e](null,[i.originX,i.originY],a,n,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(o[1]-o[0])+o[0],u=Math.max(1/i.scale,0);o[0]=(o[0]-l)*u+l,o[1]=(o[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return sg(0,o,[0,100],0,h.minSpan,h.maxSpan),this.range=o,r[0]!==o[0]||r[1]!==o[1]?o:void 0}},pan:Sg(function(t,e,n,i,r,o){var a=_D[i]([o.oldX,o.oldY],[o.newX,o.newY],e,r,n);return a.signal*(t[1]-t[0])*a.pixel/a.pixelLength}),scrollMove:Sg(function(t,e,n,i,r,o){var a=_D[i]([0,0],[o.scrollDelta,o.scrollDelta],e,r,n);return a.signal*(t[1]-t[0])*o.scrollDelta})},_D={grid:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem.getRect();return t=t||[0,0],"x"===o.dim?(a.pixel=e[0]-t[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=o.inverse?-1:1),a},polar:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===n.mainType?(a.pixel=e[0]-t[0],a.pixelLength=l[1]-l[0],a.pixelStart=l[0],a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=u[1]-u[0],a.pixelStart=u[0],a.signal=o.inverse?-1:1),a},singleAxis:function(t,e,n,i,r){var o=n.axis,a=r.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===o.orient?(s.pixel=e[0]-t[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=o.inverse?-1:1),s}},xD=v,wD=wi,bD=function(){function t(t,e,n,i){this._dimName=t,this._axisIndex=e,this.ecModel=i,this._dataZoomModel=n}return t.prototype.hostedBy=function(t){return this._dataZoomModel===t},t.prototype.getDataValueWindow=function(){return this._valueWindow.slice()},t.prototype.getDataPercentWindow=function(){return this._percentWindow.slice()},t.prototype.getTargetSeriesModels=function(){var t=[];return this.ecModel.eachSeries(function(e){if(ng(e)){var n=ig(this._dimName),i=e.getReferringComponents(n,Qy).models[0];i&&this._axisIndex===i.componentIndex&&t.push(e)}},this),t},t.prototype.getAxisModel=function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},t.prototype.getMinMaxSpan=function(){return s(this._minMaxSpan)},t.prototype.calculateDataWindow=function(t){function e(t,e,n,i,r){var a=r?"Span":"ValueSpan";sg(0,t,n,"all",h["min"+a],h["max"+a]);for(var s=0;2>s;s++)e[s]=mi(t[s],n,i,!0),r&&(e[s]=o.parse(e[s]))}var n,i=this._dataExtent,r=this.getAxisModel(),o=r.axis.scale,a=this._dataZoomModel.getRangePropMode(),s=[0,100],l=[],u=[];xD(["start","end"],function(e,r){var h=t[e],c=t[e+"Value"];"percent"===a[r]?(null==h&&(h=s[r]),c=o.parse(mi(h,s,i))):(n=!0,c=null==c?i[r]:o.parse(c),h=mi(c,i,s)),u[r]=c,l[r]=h}),wD(u),wD(l);var h=this._minMaxSpan;return n?e(u,l,i,s,!1):e(l,u,s,i,!0),{valueWindow:u,percentWindow:l}},t.prototype.reset=function(t){if(t===this._dataZoomModel){var e=this.getTargetSeriesModels();this._dataExtent=Mg(this,this._dimName,e),this._updateMinMaxSpan();var n=this.calculateDataWindow(t.settledOption);this._valueWindow=n.valueWindow,this._percentWindow=n.percentWindow,this._setAxisModel()}},t.prototype.filterData=function(t){function e(t){return t>=o[0]&&t<=o[1]}if(t===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),r=t.get("filterMode"),o=this._valueWindow;"none"!==r&&xD(i,function(t){var i=t.getData(),a=i.mapDimensionsAll(n);if(a.length){if("weakFilter"===r){var s=i.getStore(),l=y(a,function(t){return i.getDimensionIndex(t)},i);i.filterSelf(function(t){for(var e,n,i,r=0;ro[1];if(h&&!c&&!p)return!0;h&&(i=!0),c&&(e=!0),p&&(n=!0)}return i&&e&&n})}else xD(a,function(n){if("empty"===r)t.setData(i=i.map(n,function(t){return e(t)?t:0/0}));else{var a={};a[n]=o,i.selectRange(a)}});xD(a,function(t){i.setApproximateExtent(o,t)})}})}},t.prototype._updateMinMaxSpan=function(){var t=this._minMaxSpan={},e=this._dataZoomModel,n=this._dataExtent;xD(["min","max"],function(i){var r=e.get(i+"Span"),o=e.get(i+"ValueSpan");null!=o&&(o=this.getAxisModel().axis.scale.parse(o)),null!=o?r=mi(n[0]+o,n,[0,100],!0):null!=r&&(o=mi(r,[0,100],n,!0)-n[0]),t[i+"Span"]=r,t[i+"ValueSpan"]=o},this)},t.prototype._setAxisModel=function(){var t=this.getAxisModel(),e=this._percentWindow,n=this._valueWindow;if(e){var i=Mi(n,[0,500]);i=Math.min(i,20);var r=t.axis.scale.rawExtentInfo;0!==e[0]&&r.setDeterminedMinMax("min",+n[0].toFixed(i)),100!==e[1]&&r.setDeterminedMinMax("max",+n[1].toFixed(i)),r.freeze()}},t}(),SD={getTargetSeries:function(t){function e(e){t.eachComponent("dataZoom",function(n){n.eachTargetAxis(function(i,r){var o=t.getComponent(ig(i),r);e(i,r,o,n)})})}e(function(t,e,n){n.__dzAxisProxy=null});var n=[];e(function(e,i,r,o){r.__dzAxisProxy||(r.__dzAxisProxy=new bD(e,i,o,t),n.push(r.__dzAxisProxy))});var i=Y();return v(n,function(t){v(t.getTargetSeriesModels(),function(t){i.set(t.uid,t)})}),i},overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(e,n){t.getAxisProxy(e,n).reset(t)}),t.eachTargetAxis(function(n,i){t.getAxisProxy(n,i).filterData(t,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy();if(e){var n=e.getDataPercentWindow(),i=e.getDataValueWindow();t.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})}})}},MD=!1,TD=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=n.type,e}return e(n,t),n.type="dataZoom.slider",n.layoutMode="box",n.defaultOption=As(cD.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),n}(cD),CD=M_,ID=7,DD=1,kD=30,AD=7,OD="horizontal",PD="vertical",RD=5,LD=["line","bar","candlestick","scatter"],zD={easing:"cubicOut",duration:100,delay:0},ED=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=n.type,e._displayables={},e}return e(n,t),n.prototype.init=function(t,e){this.api=e,this._onBrush=Kg(this._onBrush,this),this._onBrushEnd=Kg(this._onBrushEnd,this)},n.prototype.render=function(e,n,i,r){return t.prototype.render.apply(this,arguments),ih(this,"_dispatchZoomAction",e.get("throttle"),"fixRate"),this._orient=e.getOrient(),e.get("show")===!1?void this.group.removeAll():e.noTarget()?(this._clear(),void this.group.removeAll()):(r&&"dataZoom"===r.type&&r.from===this.uid||this._buildView(),void this._updateView())},n.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},n.prototype._clear=function(){rh(this,"_dispatchZoomAction");var t=this.api.getZr();t.off("mousemove",this._onBrush),t.off("mouseup",this._onBrushEnd)},n.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var e=this._displayables.sliderGroup=new Fy;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},n.prototype._resetLocation=function(){var t=this.dataZoomModel,e=this.api,n=t.get("brushSelect"),i=n?AD:0,r=this._findCoordRect(),o={width:e.getWidth(),height:e.getHeight()},a=this._orient===OD?{right:o.width-r.x-r.width,top:o.height-kD-ID-i,width:r.width,height:kD}:{right:ID,top:r.y,width:kD,height:r.height},s=yl(t.option);v(["right","top","width","height"],function(t){"ph"===s[t]&&(s[t]=a[t])});var l=dl(s,o);this._location={x:l.x,y:l.y},this._size=[l.width,l.height],this._orient===PD&&this._size.reverse()},n.prototype._positionGroup=function(){var t=this.group,e=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),r=i&&i.get("inverse"),o=this._displayables.sliderGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(n!==OD||r?n===OD&&r?{scaleY:a?1:-1,scaleX:-1}:n!==PD||r?{scaleY:a?-1:1,scaleX:-1,rotation:Math.PI/2}:{scaleY:a?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:a?1:-1,scaleX:1});var s=t.getBoundingRect([o]);t.x=e.x-s.x,t.y=e.y-s.y,t.markRedraw()},n.prototype._getViewExtent=function(){return[0,this._size[0]]},n.prototype._renderBackground=function(){var t=this.dataZoomModel,e=this._size,n=this._displayables.sliderGroup,i=t.get("brushSelect");n.add(new CD({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var r=new CD({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:Kg(this._onClickPanel,this)}),o=this.api.getZr();i?(r.on("mousedown",this._onBrushStart,this),r.cursor="crosshair",o.on("mousemove",this._onBrush),o.on("mouseup",this._onBrushEnd)):(o.off("mousemove",this._onBrush),o.off("mouseup",this._onBrushEnd)),n.add(r)},n.prototype._renderDataShadow=function(){function t(t){var e=v.getModel(t?"selectedDataBackground":"dataBackground"),n=new Fy,i=new kx({shape:{points:c},segmentIgnoreThreshold:1,style:e.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),r=new Ox({shape:{points:p},segmentIgnoreThreshold:1,style:e.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19});return n.add(i),n.add(r),n}var e=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],e){var n=this._size,i=e.series,r=i.getRawData(),o=i.getShadowDim?i.getShadowDim():e.otherDim;if(null!=o){var a=r.getDataExtent(o),s=.3*(a[1]-a[0]);a=[a[0]-s,a[1]+s];var l,u=[0,n[1]],h=[0,n[0]],c=[[n[0],0],[0,0]],p=[],f=h[1]/(r.count()-1),d=0,g=Math.round(r.count()/n[0]);r.each([o],function(t,e){if(g>0&&e%g)return void(d+=f);var n=null==t||isNaN(t)||""===t,i=n?0:mi(t,a,u,!0);n&&!l&&e?(c.push([c[c.length-1][0],0]),p.push([p[p.length-1][0],0])):!n&&l&&(c.push([d,0]),p.push([d,0])),c.push([d,i]),p.push([d,i]),d+=f,l=n});for(var v=this.dataZoomModel,y=0;3>y;y++){var m=t(1===y);this._displayables.sliderGroup.add(m),this._displayables.dataShadowSegs.push(m)}}}},n.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(e!==!1){var n,i=this.ecModel;return t.eachTargetAxis(function(r,o){var a=t.getAxisProxy(r,o).getTargetSeriesModels();v(a,function(t){if(!(n||e!==!0&&p(LD,t.get("type"))<0)){var a,s=i.getComponent(ig(r),o).axis,l=Dg(r),u=t.coordinateSystem;null!=l&&u.getOtherAxis&&(a=u.getOtherAxis(s).inverse),l=t.getData().mapDimension(l),n={thisAxis:s,series:t,thisDim:r,otherDim:l,otherAxisInverse:a}}},this)},this),n}},n.prototype._renderHandle=function(){var t=this.group,e=this._displayables,n=e.handles=[null,null],i=e.handleLabels=[null,null],r=this._displayables.sliderGroup,o=this._size,a=this.dataZoomModel,s=this.api,l=a.get("borderRadius")||0,u=a.get("brushSelect"),h=e.filler=new CD({silent:u,style:{fill:a.get("fillerColor")},textConfig:{position:"inside"}});r.add(h),r.add(new CD({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:o[0],height:o[1],r:l},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:DD,fill:"rgba(0,0,0,0)"}})),v([0,1],function(e){var o=a.get("handleIcon");!YS[o]&&o.indexOf("path://")<0&&o.indexOf("image://")<0&&(o="path://"+o);var s=Mh(o,-1,0,2,2,null,!0);s.attr({cursor:kg(this._orient),draggable:!0,drift:Kg(this._onDragMove,this,e),ondragend:Kg(this._onDragEnd,this),onmouseover:Kg(this._showDataInfo,this,!0),onmouseout:Kg(this._showDataInfo,this,!1),z2:5});var l=s.getBoundingRect(),u=a.get("handleSize");this._handleHeight=_i(u,this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,s.setStyle(a.getModel("handleStyle").getItemStyle()),s.style.strokeNoScale=!0,s.rectHover=!0,s.ensureState("emphasis").style=a.getModel(["emphasis","handleStyle"]).getItemStyle(),ya(s);var h=a.get("handleColor");null!=h&&(s.style.fill=h),r.add(n[e]=s);var c=a.getModel("textStyle");t.add(i[e]=new D_({silent:!0,invisible:!0,style:_s(c,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:c.getTextColor(),font:c.getFont()}),z2:10}))},this);var c=h;if(u){var p=_i(a.get("moveHandleSize"),o[1]),f=e.moveHandle=new M_({style:a.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:o[1]-.5,height:p}}),d=.8*p,g=e.moveHandleIcon=Mh(a.get("moveHandleIcon"),-d/2,-d/2,d,d,"#fff",!0);g.silent=!0,g.y=o[1]+p/2-.5,f.ensureState("emphasis").style=a.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var y=Math.min(o[1]/2,Math.max(p,10));c=e.moveZone=new M_({invisible:!0,shape:{y:o[1]-y,height:p+y}}),c.on("mouseover",function(){s.enterEmphasis(f)}).on("mouseout",function(){s.leaveEmphasis(f)}),r.add(f),r.add(g),r.add(c)}c.attr({draggable:!0,cursor:kg(this._orient),drift:Kg(this._onDragMove,this,"all"),ondragstart:Kg(this._showDataInfo,this,!0),ondragend:Kg(this._onDragEnd,this),onmouseover:Kg(this._showDataInfo,this,!0),onmouseout:Kg(this._showDataInfo,this,!1)})},n.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[mi(t[0],[0,100],e,!0),mi(t[1],[0,100],e,!0)]},n.prototype._updateInterval=function(t,e){var n=this.dataZoomModel,i=this._handleEnds,r=this._getViewExtent(),o=n.findRepresentativeAxisProxy().getMinMaxSpan(),a=[0,100];sg(e,i,r,n.get("zoomLock")?"all":t,null!=o.minSpan?mi(o.minSpan,a,r,!0):null,null!=o.maxSpan?mi(o.maxSpan,a,r,!0):null);var s=this._range,l=this._range=wi([mi(i[0],r,a,!0),mi(i[1],r,a,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},n.prototype._updateView=function(t){var e=this._displayables,n=this._handleEnds,i=wi(n.slice()),r=this._size;v([0,1],function(t){var i=e.handles[t],o=this._handleHeight;i.attr({scaleX:o/2,scaleY:o/2,x:n[t]+(t?-1:1),y:r[1]/2-o/2})},this),e.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:r[1]});var o={x:i[0],width:i[1]-i[0]};e.moveHandle&&(e.moveHandle.setShape(o),e.moveZone.setShape(o),e.moveZone.getBoundingRect(),e.moveHandleIcon&&e.moveHandleIcon.attr("x",o.x+o.width/2));for(var a=e.dataShadowSegs,s=[0,i[0],i[1],r[0]],l=0;le[0]||n[1]<0||n[1]>e[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval("all",n[0]-r);this._updateView(),o&&this._dispatchZoomAction(!1)}},n.prototype._onBrushStart=function(t){var e=t.offsetX,n=t.offsetY;this._brushStart=new _y(e,n),this._brushing=!0,this._brushStartTime=+new Date},n.prototype._onBrushEnd=function(){if(this._brushing){var t=this._displayables.brushRect;if(this._brushing=!1,t){t.attr("ignore",!0);var e=t.shape,n=+new Date;if(!(n-this._brushStartTime<200&&Math.abs(e.width)<5)){var i=this._getViewExtent(),r=[0,100];this._range=wi([mi(e.x,i,r,!0),mi(e.x+e.width,i,r,!0)]),this._handleEnds=[e.x,e.x+e.width],this._updateView(),this._dispatchZoomAction(!1)}}}},n.prototype._onBrush=function(t){this._brushing&&(fv(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},n.prototype._updateBrushRect=function(t,e){var n=this._displayables,i=this.dataZoomModel,r=n.brushRect;r||(r=n.brushRect=new CD({silent:!0,style:i.getModel("brushStyle").getItemStyle()}),n.sliderGroup.add(r)),r.attr("ignore",!1);var o=this._brushStart,a=this._displayables.sliderGroup,s=a.transformCoordToLocal(t,e),l=a.transformCoordToLocal(o.x,o.y),u=this._size;s[0]=Math.max(Math.min(u[0],s[0]),0),r.setShape({x:l[0],y:0,width:s[0]-l[0],height:u[1]})},n.prototype._dispatchZoomAction=function(t){var e=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?zD:null,start:e[0],end:e[1]})},n.prototype._findCoordRect=function(){var t,e=og(this.dataZoomModel).infoList;if(!t&&e.length){var n=e[0].model.coordinateSystem;t=n.getRect&&n.getRect()}if(!t){var i=this.api.getWidth(),r=this.api.getHeight();t={x:.2*i,y:.2*r,width:.6*i,height:.6*r}}return t},n.type="dataZoom.slider",n}(fD);xf(Og),t.version=BM,t.dependencies=FM,t.PRIORITY=eT,t.init=zc,t.connect=Ec,t.disConnect=Bc,t.disconnect=YT,t.dispose=Fc,t.getInstanceByDom=Nc,t.getInstanceById=Vc,t.registerTheme=Hc,t.registerPreprocessor=Wc,t.registerProcessor=Gc,t.registerPostInit=Uc,t.registerPostUpdate=Xc,t.registerUpdateLifecycle=Yc,t.registerAction=Zc,t.registerCoordinateSystem=qc,t.getCoordinateSystemDimensions=jc,t.registerLayout=Kc,t.registerVisual=$c,t.registerLoading=Qc,t.setCanvasCreator=tp,t.registerMap=ep,t.getMap=np,t.registerTransform=qT,t.dataTool=nC,t.registerLocale=Os,t.zrender=Uy,t.matrix=hy,t.vector=rv,t.zrUtil=Qg,t.color=Vv,t.helper=ZC,t.number=KC,t.time=$C,t.graphic=JC,t.format=QC,t.util=tI,t.List=vC,t.ComponentModel=Zw,t.ComponentView=aS,t.SeriesModel=oS,t.ChartView=uS,t.extendComponentModel=Bf,t.extendComponentView=Ff,t.extendSeriesModel=Nf,t.extendChartView=Vf,t.throttle=nh,t.use=xf,t.parseGeoJSON=Tc,t.parseGeoJson=Tc,t.env=zg,t.Model=yw,t.Axis=iI,t.innerDrawElementOnCanvas=qh}); ================================================ FILE: miniprogram/components/ec-canvas/wx-canvas.js ================================================ export default class WxCanvas { constructor(ctx, canvasId, isNew, canvasNode) { this.ctx = ctx; this.canvasId = canvasId; this.chart = null; this.isNew = isNew if (isNew) { this.canvasNode = canvasNode; } else { this._initStyle(ctx); } // this._initCanvas(zrender, ctx); this._initEvent(); } getContext(contextType) { if (contextType === '2d') { return this.ctx; } } // canvasToTempFilePath(opt) { // if (!opt.canvasId) { // opt.canvasId = this.canvasId; // } // return wx.canvasToTempFilePath(opt, this); // } setChart(chart) { this.chart = chart; } attachEvent() { // noop } detachEvent() { // noop } _initCanvas(zrender, ctx) { zrender.util.getContext = function () { return ctx; }; zrender.util.$override('measureText', function (text, font) { ctx.font = font || '12px sans-serif'; return ctx.measureText(text); }); } _initStyle(ctx) { ctx.createRadialGradient = () => { return ctx.createCircularGradient(arguments); }; } _initEvent() { this.event = {}; const eventNames = [{ wxName: 'touchStart', ecName: 'mousedown' }, { wxName: 'touchMove', ecName: 'mousemove' }, { wxName: 'touchEnd', ecName: 'mouseup' }, { wxName: 'touchEnd', ecName: 'click' }]; eventNames.forEach(name => { this.event[name.wxName] = e => { const touch = e.touches[0]; this.chart.getZr().handler.dispatch(name.ecName, { zrX: name.wxName === 'tap' ? touch.clientX : touch.x, zrY: name.wxName === 'tap' ? touch.clientY : touch.y }); }; }); } set width(w) { if (this.canvasNode) this.canvasNode.width = w } set height(h) { if (this.canvasNode) this.canvasNode.height = h } get width() { if (this.canvasNode) return this.canvasNode.width return 0 } get height() { if (this.canvasNode) return this.canvasNode.height return 0 } } ================================================ FILE: miniprogram/components/image-cropper/image-cropper.js ================================================ Component({ properties: { /** * 图片路径 */ 'imgSrc': { type: String }, /** * 裁剪框高度 */ 'height': { type: Number, value: 200 }, /** * 裁剪框宽度 */ 'width': { type: Number, value: 200 }, /** * 裁剪框最小尺寸 */ 'min_width': { type: Number, value: 100 }, 'min_height': { type: Number, value: 100 }, /** * 裁剪框最大尺寸 */ 'max_width': { type: Number, value: 300 }, 'max_height': { type: Number, value: 300 }, /** * 裁剪框禁止拖动 */ 'disable_width': { type: Boolean, value: false }, 'disable_height': { type: Boolean, value: false }, /** * 锁定裁剪框比例 */ 'disable_ratio': { type: Boolean, value: false }, /** * 生成的图片尺寸相对剪裁框的比例 */ 'export_scale': { type: Number, value: 3 }, /** * 生成的图片质量0-1 */ 'quality': { type: Number, value: 1 }, 'cut_top': { type: Number, value: null }, 'cut_left': { type: Number, value: null }, /** * canvas上边距(不设置默认不显示) */ 'canvas_top': { type: Number, value: null }, /** * canvas左边距(不设置默认不显示) */ 'canvas_left': { type: Number, value: null }, /** * 图片宽度 */ 'img_width': { type: null, value: null }, /** * 图片高度 */ 'img_height': { type: null, value: null }, /** * 图片缩放比 */ 'scale': { type: Number, value: 1 }, /** * 图片旋转角度 */ 'angle': { type: Number, value: 0 }, /** * 最小缩放比 */ 'min_scale': { type: Number, value: 0.5 }, /** * 最大缩放比 */ 'max_scale': { type: Number, value: 2 }, /** * 是否禁用旋转 */ 'disable_rotate': { type: Boolean, value: false }, /** * 是否限制移动范围(剪裁框只能在图片内) */ 'limit_move': { type: Boolean, value: false } }, data: { el: 'image-cropper', //暂时无用 info: wx.getSystemInfoSync(), MOVE_THROTTLE: null, //触摸移动节流settimeout MOVE_THROTTLE_FLAG: true, //节流标识 INIT_IMGWIDTH: 0, //图片设置尺寸,此值不变(记录最初设定的尺寸) INIT_IMGHEIGHT: 0, //图片设置尺寸,此值不变(记录最初设定的尺寸) TIME_BG: null, //背景变暗延时函数 TIME_CUT_CENTER: null, _touch_img_relative: [{ x: 0, y: 0 }], //鼠标和图片中心的相对位置 _flag_cut_touch: false, //是否是拖动裁剪框 _hypotenuse_length: 0, //双指触摸时斜边长度 _flag_img_endtouch: false, //是否结束触摸 _flag_bright: true, //背景是否亮 _canvas_overflow: true, //canvas缩略图是否在屏幕外面 _canvas_width: 200, _canvas_height: 200, origin_x: 0.5, //图片旋转中心 origin_y: 0.5, //图片旋转中心 _cut_animation: false, //是否开启图片和裁剪框过渡 _img_top: wx.getSystemInfoSync().windowHeight / 2, //图片上边距 _img_left: wx.getSystemInfoSync().windowWidth / 2, //图片左边距 watch: { //监听截取框宽高变化 width(value, that) { if (value < that.data.min_width) { that.setData({ width: that.data.min_width }); } that._computeCutSize(); }, height(value, that) { if (value < that.data.min_height) { that.setData({ height: that.data.min_height }); } that._computeCutSize(); }, angle(value, that) { //停止居中裁剪框,继续修改图片位置 that._moveStop(); if (that.data.limit_move) { if (that.data.angle % 90) { that.setData({ angle: Math.round(that.data.angle / 90) * 90 }); return; } } }, _cut_animation(value, that) { //开启过渡300毫秒之后自动关闭 clearTimeout(that.data._cut_animation_time); if (value) { that.data._cut_animation_time = setTimeout(() => { that.setData({ _cut_animation: false }); }, 300) } }, limit_move(value, that) { if (value) { if (that.data.angle % 90) { that.setData({ angle: Math.round(that.data.angle / 90) * 90 }); } that._imgMarginDetectionScale(); !that.data._canvas_overflow && that._draw(); } }, canvas_top(value, that) { that._canvasDetectionPosition(); }, canvas_left(value, that) { that._canvasDetectionPosition(); }, imgSrc(value, that) { that.pushImg(); }, cut_top(value, that) { that._cutDetectionPosition(); if (that.data.limit_move) { !that.data._canvas_overflow && that._draw(); } }, cut_left(value, that) { that._cutDetectionPosition(); if (that.data.limit_move) { !that.data._canvas_overflow && that._draw(); } } } }, attached() { this.data.info = wx.getSystemInfoSync(); //启用数据监听 this._watcher(); this.data.INIT_IMGWIDTH = this.data.img_width; this.data.INIT_IMGHEIGHT = this.data.img_height; this.setData({ _canvas_height: this.data.height, _canvas_width: this.data.width, }); this._initCanvas(); this.data.imgSrc && (this.data.imgSrc = this.data.imgSrc); //根据开发者设置的图片目标尺寸计算实际尺寸 this._initImageSize(); //设置裁剪框大小>设置图片尺寸>绘制canvas this._computeCutSize(); //检查裁剪框是否在范围内 this._cutDetectionPosition(); //检查canvas是否在范围内 this._canvasDetectionPosition(); //初始化完成 this.triggerEvent('load', { cropper: this }); }, methods: { /** * 上传图片 */ upload() { let that = this; wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success(res) { const tempFilePaths = res.tempFilePaths[0]; that.pushImg(tempFilePaths); wx.showLoading({ title: '加载中...' }) } }) }, /** * 返回图片信息 */ getImg(getCallback) { this._draw(() => { wx.canvasToTempFilePath({ width: this.data.width * this.data.export_scale, height: Math.round(this.data.height * this.data.export_scale), destWidth: this.data.width * this.data.export_scale, destHeight: Math.round(this.data.height) * this.data.export_scale, fileType: 'png', quality: this.data.quality, canvasId: this.data.el, success: (res) => { getCallback({ url: res.tempFilePath, width: this.data.width * this.data.export_scale, height: this.data.height * this.data.export_scale }); } }, this) }); }, /** * 设置图片动画 * { * x:10,//图片在原有基础上向下移动10px * y:10,//图片在原有基础上向右移动10px * angle:10,//图片在原有基础上旋转10deg * scale:0.5,//图片在原有基础上增加0.5倍 * } */ setTransform(transform) { if (!transform) return; if (!this.data.disable_rotate) { this.setData({ angle: transform.angle ? this.data.angle + transform.angle : this.data.angle }); } var scale = this.data.scale; if (transform.scale) { scale = this.data.scale + transform.scale; scale = scale <= this.data.min_scale ? this.data.min_scale : scale; scale = scale >= this.data.max_scale ? this.data.max_scale : scale; } this.data.scale = scale; let cutX = this.data.cut_left; let cutY = this.data.cut_top; if (transform.cutX) { this.setData({ cut_left: cutX + transform.cutX }); this.data.watch.cut_left(null, this); } if (transform.cutY) { this.setData({ cut_top: cutY + transform.cutY }); this.data.watch.cut_top(null, this); } this.data._img_top = transform.y ? this.data._img_top + transform.y : this.data._img_top; this.data._img_left = transform.x ? this.data._img_left + transform.x : this.data._img_left; //图像边缘检测,防止截取到空白 this._imgMarginDetectionScale(); //停止居中裁剪框,继续修改图片位置 this._moveDuring(); this.setData({ scale: this.data.scale, _img_top: this.data._img_top, _img_left: this.data._img_left }); !this.data._canvas_overflow && this._draw(); //可以居中裁剪框了 this._moveStop(); //结束操作 }, /** * 设置剪裁框位置 */ setCutXY(x, y) { this.setData({ cut_top: y, cut_left: x }); }, /** * 设置剪裁框尺寸 */ setCutSize(w, h) { this.setData({ width: w, height: h }); this._computeCutSize(); }, /** * 设置剪裁框和图片居中 */ setCutCenter() { let cut_top = (this.data.info.windowHeight - this.data.height) * 0.5; let cut_left = (this.data.info.windowWidth - this.data.width) * 0.5; //顺序不能变 this.setData({ _img_top: this.data._img_top - this.data.cut_top + cut_top, cut_top: cut_top, //截取的框上边距 _img_left: this.data._img_left - this.data.cut_left + cut_left, cut_left: cut_left, //截取的框左边距 }); }, _setCutCenter() { let cut_top = (this.data.info.windowHeight - this.data.height) * 0.5; let cut_left = (this.data.info.windowWidth - this.data.width) * 0.5; this.setData({ cut_top: cut_top, //截取的框上边距 cut_left: cut_left, //截取的框左边距 }); }, /** * 设置剪裁框宽度-即将废弃 */ setWidth(width) { this.setData({ width: width }); this._computeCutSize(); }, /** * 设置剪裁框高度-即将废弃 */ setHeight(height) { this.setData({ height: height }); this._computeCutSize(); }, /** * 是否锁定旋转 */ setDisableRotate(value) { this.data.disable_rotate = value; }, /** * 是否限制移动 */ setLimitMove(value) { this.setData({ _cut_animation: true, limit_move: !!value }); }, /** * 初始化图片,包括位置、大小、旋转角度 */ imgReset() { this.setData({ scale: 1, angle: 0, _img_top: wx.getSystemInfoSync().windowHeight / 2, _img_left: wx.getSystemInfoSync().windowWidth / 2, }) }, /** * 加载(更换)图片 */ pushImg(src) { if (src) { this.setData({ imgSrc: src }); //发现是手动赋值直接返回,交给watch处理 return; } // getImageInfo接口传入 src: '' 会导致内存泄漏 if (!this.data.imgSrc) return; wx.getImageInfo({ src: this.data.imgSrc, success: (res) => { this.data.imageObject = res; //图片非本地路径需要换成本地路径 if (this.data.imgSrc.search(/tmp/) == -1) { this.setData({ imgSrc: res.path }); } //计算最后图片尺寸 this._imgComputeSize(); if (this.data.limit_move) { //限制移动,不留空白处理 this._imgMarginDetectionScale(); } this._draw(); }, fail: (err) => { this.setData({ imgSrc: '' }); } }); }, imageLoad(e) { setTimeout(() => { this.triggerEvent('imageload', this.data.imageObject); }, 1000) }, /** * 设置图片放大缩小 */ setScale(scale) { if (!scale) return; this.setData({ scale: scale }); !this.data._canvas_overflow && this._draw(); }, /** * 设置图片旋转角度 */ setAngle(angle) { if (!angle) return; this.setData({ _cut_animation: true, angle: angle }); this._imgMarginDetectionScale(); !this.data._canvas_overflow && this._draw(); }, _initCanvas() { //初始化canvas if (!this.data.ctx) { this.data.ctx = wx.createCanvasContext("image-cropper", this); } }, /** * 根据开发者设置的图片目标尺寸计算实际尺寸 */ _initImageSize() { //处理宽高特殊单位 %>px if (this.data.INIT_IMGWIDTH && typeof this.data.INIT_IMGWIDTH == "string" && this.data.INIT_IMGWIDTH.indexOf("%") != -1) { let width = this.data.INIT_IMGWIDTH.replace("%", ""); this.data.INIT_IMGWIDTH = this.data.img_width = this.data.info.windowWidth / 100 * width; } if (this.data.INIT_IMGHEIGHT && typeof this.data.INIT_IMGHEIGHT == "string" && this.data.INIT_IMGHEIGHT.indexOf("%") != -1) { let height = this.data.img_height.replace("%", ""); this.data.INIT_IMGHEIGHT = this.data.img_height = this.data.info.windowHeight / 100 * height; } }, /** * 检测剪裁框位置是否在允许的范围内(屏幕内) */ _cutDetectionPosition() { let _cutDetectionPositionTop = () => { //检测上边距是否在范围内 if (this.data.cut_top < 0) { this.setData({ cut_top: 0 }); } if (this.data.cut_top > this.data.info.windowHeight - this.data.height) { this.setData({ cut_top: this.data.info.windowHeight - this.data.height }); } }, _cutDetectionPositionLeft = () => { //检测左边距是否在范围内 if (this.data.cut_left < 0) { this.setData({ cut_left: 0 }); } if (this.data.cut_left > this.data.info.windowWidth - this.data.width) { this.setData({ cut_left: this.data.info.windowWidth - this.data.width }); } }; //裁剪框坐标处理(如果只写一个参数则另一个默认为0,都不写默认居中) if (this.data.cut_top == null && this.data.cut_left == null) { this._setCutCenter(); } else if (this.data.cut_top != null && this.data.cut_left != null) { _cutDetectionPositionTop(); _cutDetectionPositionLeft(); } else if (this.data.cut_top != null && this.data.cut_left == null) { _cutDetectionPositionTop(); this.setData({ cut_left: (this.data.info.windowWidth - this.data.width) / 2 }); } else if (this.data.cut_top == null && this.data.cut_left != null) { _cutDetectionPositionLeft(); this.setData({ cut_top: (this.data.info.windowHeight - this.data.height) / 2 }); } }, /** * 检测canvas位置是否在允许的范围内(屏幕内)如果在屏幕外则不开启实时渲染 * 如果只写一个参数则另一个默认为0,都不写默认超出屏幕外 */ _canvasDetectionPosition() { if (this.data.canvas_top == null && this.data.canvas_left == null) { this.data._canvas_overflow = false; this.setData({ canvas_top: -5000, canvas_left: -5000 }); } else if (this.data.canvas_top != null && this.data.canvas_left != null) { if (this.data.canvas_top < -this.data.height || this.data.canvas_top > this.data.info.windowHeight) { this.data._canvas_overflow = true; } else { this.data._canvas_overflow = false; } } else if (this.data.canvas_top != null && this.data.canvas_left == null) { this.setData({ canvas_left: 0 }); } else if (this.data.canvas_top == null && this.data.canvas_left != null) { this.setData({ canvas_top: 0 }); if (this.data.canvas_left < -this.data.width || this.data.canvas_left > this.data.info.windowWidth) { this.data._canvas_overflow = true; } else { this.data._canvas_overflow = false; } } }, /** * 图片边缘检测-位置 */ _imgMarginDetectionPosition(scale) { if (!this.data.limit_move) return; let left = this.data._img_left; let top = this.data._img_top; var scale = scale || this.data.scale; let img_width = this.data.img_width; let img_height = this.data.img_height; if (this.data.angle / 90 % 2) { img_width = this.data.img_height; img_height = this.data.img_width; } left = this.data.cut_left + img_width * scale / 2 >= left ? left : this.data.cut_left + img_width * scale / 2; left = this.data.cut_left + this.data.width - img_width * scale / 2 <= left ? left : this.data.cut_left + this.data.width - img_width * scale / 2; top = this.data.cut_top + img_height * scale / 2 >= top ? top : this.data.cut_top + img_height * scale / 2; top = this.data.cut_top + this.data.height - img_height * scale / 2 <= top ? top : this.data.cut_top + this.data.height - img_height * scale / 2; this.setData({ _img_left: left, _img_top: top, scale: scale }) }, /** * 图片边缘检测-缩放 */ _imgMarginDetectionScale() { if (!this.data.limit_move) return; let scale = this.data.scale; let img_width = this.data.img_width; let img_height = this.data.img_height; if (this.data.angle / 90 % 2) { img_width = this.data.img_height; img_height = this.data.img_width; } if (img_width * scale < this.data.width) { scale = this.data.width / img_width; } if (img_height * scale < this.data.height) { scale = Math.max(scale, this.data.height / img_height); } this._imgMarginDetectionPosition(scale); }, _setData(obj) { let data = {}; for (var key in obj) { if (this.data[key] != obj[key]) { data[key] = obj[key]; } } this.setData(data); return data; }, /** * 计算图片尺寸 */ _imgComputeSize() { let img_width = this.data.img_width, img_height = this.data.img_height; if (!this.data.INIT_IMGHEIGHT && !this.data.INIT_IMGWIDTH) { //默认按图片最小边 = 对应裁剪框尺寸 img_width = this.data.imageObject.width; img_height = this.data.imageObject.height; if (img_width / img_height > this.data.width / this.data.height) { img_height = this.data.height; img_width = this.data.imageObject.width / this.data.imageObject.height * img_height; } else { img_width = this.data.width; img_height = this.data.imageObject.height / this.data.imageObject.width * img_width; } } else if (this.data.INIT_IMGHEIGHT && !this.data.INIT_IMGWIDTH) { img_width = this.data.imageObject.width / this.data.imageObject.height * this.data.INIT_IMGHEIGHT; } else if (!this.data.INIT_IMGHEIGHT && this.data.INIT_IMGWIDTH) { img_height = this.data.imageObject.height / this.data.imageObject.width * this.data.INIT_IMGWIDTH; } this.setData({ img_width: img_width, img_height: img_height }); }, //改变截取框大小 _computeCutSize() { if (this.data.width > this.data.info.windowWidth) { this.setData({ width: this.data.info.windowWidth, }); } else if (this.data.width + this.data.cut_left > this.data.info.windowWidth) { this.setData({ cut_left: this.data.info.windowWidth - this.data.cut_left, }); }; if (this.data.height > this.data.info.windowHeight) { this.setData({ height: this.data.info.windowHeight, }); } else if (this.data.height + this.data.cut_top > this.data.info.windowHeight) { this.setData({ cut_top: this.data.info.windowHeight - this.data.cut_top, }); }!this.data._canvas_overflow && this._draw(); }, //开始触摸 _start(event) { this.data._flag_img_endtouch = false; if (event.touches.length == 1) { //单指拖动 this.data._touch_img_relative[0] = { x: (event.touches[0].clientX - this.data._img_left), y: (event.touches[0].clientY - this.data._img_top) } } else { //双指放大 let width = Math.abs(event.touches[0].clientX - event.touches[1].clientX); let height = Math.abs(event.touches[0].clientY - event.touches[1].clientY); this.data._touch_img_relative = [{ x: (event.touches[0].clientX - this.data._img_left), y: (event.touches[0].clientY - this.data._img_top) }, { x: (event.touches[1].clientX - this.data._img_left), y: (event.touches[1].clientY - this.data._img_top) }]; this.data._hypotenuse_length = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)); }!this.data._canvas_overflow && this._draw(); }, _move_throttle() { //安卓需要节流 if (this.data.info.platform == 'android') { clearTimeout(this.data.MOVE_THROTTLE); this.data.MOVE_THROTTLE = setTimeout(() => { this.data.MOVE_THROTTLE_FLAG = true; }, 1000 / 40) return this.data.MOVE_THROTTLE_FLAG; } else { this.data.MOVE_THROTTLE_FLAG = true; } }, _move(event) { if (this.data._flag_img_endtouch || !this.data.MOVE_THROTTLE_FLAG) return; this.data.MOVE_THROTTLE_FLAG = false; this._move_throttle(); this._moveDuring(); if (event.touches.length == 1) { //单指拖动 let left = (event.touches[0].clientX - this.data._touch_img_relative[0].x), top = (event.touches[0].clientY - this.data._touch_img_relative[0].y); //图像边缘检测,防止截取到空白 this.data._img_left = left; this.data._img_top = top; this._imgMarginDetectionPosition(); this.setData({ _img_left: this.data._img_left, _img_top: this.data._img_top }); } else { //双指放大 let width = (Math.abs(event.touches[0].clientX - event.touches[1].clientX)), height = (Math.abs(event.touches[0].clientY - event.touches[1].clientY)), hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)), scale = this.data.scale * (hypotenuse / this.data._hypotenuse_length), current_deg = 0; scale = scale <= this.data.min_scale ? this.data.min_scale : scale; scale = scale >= this.data.max_scale ? this.data.max_scale : scale; //图像边缘检测,防止截取到空白 this.data.scale = scale; this._imgMarginDetectionScale(); //双指旋转(如果没禁用旋转) let _touch_img_relative = [{ x: (event.touches[0].clientX - this.data._img_left), y: (event.touches[0].clientY - this.data._img_top) }, { x: (event.touches[1].clientX - this.data._img_left), y: (event.touches[1].clientY - this.data._img_top) }]; if (!this.data.disable_rotate) { let first_atan = 180 / Math.PI * Math.atan2(_touch_img_relative[0].y, _touch_img_relative[0].x); let first_atan_old = 180 / Math.PI * Math.atan2(this.data._touch_img_relative[0].y, this.data._touch_img_relative[0].x); let second_atan = 180 / Math.PI * Math.atan2(_touch_img_relative[1].y, _touch_img_relative[1].x); let second_atan_old = 180 / Math.PI * Math.atan2(this.data._touch_img_relative[1].y, this.data._touch_img_relative[1].x); //当前旋转的角度 let first_deg = first_atan - first_atan_old, second_deg = second_atan - second_atan_old; if (first_deg != 0) { current_deg = first_deg; } else if (second_deg != 0) { current_deg = second_deg; } } this.data._touch_img_relative = _touch_img_relative; this.data._hypotenuse_length = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)); //更新视图 this.setData({ angle: this.data.angle + current_deg, scale: this.data.scale }); }!this.data._canvas_overflow && this._draw(); }, //结束操作 _end(event) { this.data._flag_img_endtouch = true; this._moveStop(); }, //点击中间剪裁框处理 _click(event) { if (!this.data.imgSrc) { //调起上传 this.upload(); return; } this._draw(() => { let x = event.detail ? event.detail.x : event.touches[0].clientX; let y = event.detail ? event.detail.y : event.touches[0].clientY; if ((x >= this.data.cut_left && x <= (this.data.cut_left + this.data.width)) && (y >= this.data.cut_top && y <= (this.data.cut_top + this.data.height))) { //生成图片并回调 wx.canvasToTempFilePath({ width: this.data.width * this.data.export_scale, height: Math.round(this.data.height * this.data.export_scale), destWidth: this.data.width * this.data.export_scale, destHeight: Math.round(this.data.height) * this.data.export_scale, fileType: 'png', quality: this.data.quality, canvasId: this.data.el, success: (res) => { this.triggerEvent('tapcut', { url: res.tempFilePath, width: this.data.width * this.data.export_scale, height: this.data.height * this.data.export_scale }); } }, this) } }); }, //渲染 _draw(callback) { if (!this.data.imgSrc) return; let draw = () => { //图片实际大小 let img_width = this.data.img_width * this.data.scale * this.data.export_scale; let img_height = this.data.img_height * this.data.scale * this.data.export_scale; //canvas和图片的相对距离 var xpos = this.data._img_left - this.data.cut_left; var ypos = this.data._img_top - this.data.cut_top; //旋转画布 this.data.ctx.translate(xpos * this.data.export_scale, ypos * this.data.export_scale); this.data.ctx.rotate(this.data.angle * Math.PI / 180); this.data.ctx.drawImage(this.data.imgSrc, -img_width / 2, -img_height / 2, img_width, img_height); this.data.ctx.draw(false, () => { callback && callback(); }); } if (this.data.ctx.width != this.data.width || this.data.ctx.height != this.data.height) { //优化拖动裁剪框,所以必须把宽高设置放在离用户触发渲染最近的地方 this.setData({ _canvas_height: this.data.height, _canvas_width: this.data.width, }, () => { //延迟40毫秒防止点击过快出现拉伸或裁剪过多 setTimeout(() => { draw(); }, 40); }); } else { draw(); } }, //裁剪框处理 _cutTouchMove(e) { if (this.data._flag_cut_touch && this.data.MOVE_THROTTLE_FLAG) { if (this.data.disable_ratio && (this.data.disable_width || this.data.disable_height)) return; //节流 this.data.MOVE_THROTTLE_FLAG = false; this._move_throttle(); let width = this.data.width, height = this.data.height, cut_top = this.data.cut_top, cut_left = this.data.cut_left, size_correct = () => { width = width <= this.data.max_width ? width >= this.data.min_width ? width : this.data.min_width : this.data.max_width; height = height <= this.data.max_height ? height >= this.data.min_height ? height : this.data.min_height : this.data.max_height; }, size_inspect = () => { if ((width > this.data.max_width || width < this.data.min_width || height > this.data.max_height || height < this.data.min_height) && this.data.disable_ratio) { size_correct(); return false; } else { size_correct(); return true; } }; height = this.data.CUT_START.height + ((this.data.CUT_START.corner > 1 && this.data.CUT_START.corner < 4 ? 1 : -1) * (this.data.CUT_START.y - e.touches[0].clientY)); switch (this.data.CUT_START.corner) { case 1: width = this.data.CUT_START.width + this.data.CUT_START.x - e.touches[0].clientX; if (this.data.disable_ratio) { height = width / (this.data.width / this.data.height) } if (!size_inspect()) return; cut_left = this.data.CUT_START.cut_left - (width - this.data.CUT_START.width); break case 2: width = this.data.CUT_START.width + this.data.CUT_START.x - e.touches[0].clientX; if (this.data.disable_ratio) { height = width / (this.data.width / this.data.height) } if (!size_inspect()) return; cut_top = this.data.CUT_START.cut_top - (height - this.data.CUT_START.height) cut_left = this.data.CUT_START.cut_left - (width - this.data.CUT_START.width) break case 3: width = this.data.CUT_START.width - this.data.CUT_START.x + e.touches[0].clientX; if (this.data.disable_ratio) { height = width / (this.data.width / this.data.height) } if (!size_inspect()) return; cut_top = this.data.CUT_START.cut_top - (height - this.data.CUT_START.height); break case 4: width = this.data.CUT_START.width - this.data.CUT_START.x + e.touches[0].clientX; if (this.data.disable_ratio) { height = width / (this.data.width / this.data.height) } if (!size_inspect()) return; break } if (!this.data.disable_width && !this.data.disable_height) { this.setData({ width: width, cut_left: cut_left, height: height, cut_top: cut_top, }) } else if (!this.data.disable_width) { this.setData({ width: width, cut_left: cut_left }) } else if (!this.data.disable_height) { this.setData({ height: height, cut_top: cut_top }) } this._imgMarginDetectionScale(); } }, _cutTouchStart(e) { let currentX = e.touches[0].clientX; let currentY = e.touches[0].clientY; let cutbox_top4 = this.data.cut_top + this.data.height - 30; let cutbox_bottom4 = this.data.cut_top + this.data.height + 20; let cutbox_left4 = this.data.cut_left + this.data.width - 30; let cutbox_right4 = this.data.cut_left + this.data.width + 30; let cutbox_top3 = this.data.cut_top - 30; let cutbox_bottom3 = this.data.cut_top + 30; let cutbox_left3 = this.data.cut_left + this.data.width - 30; let cutbox_right3 = this.data.cut_left + this.data.width + 30; let cutbox_top2 = this.data.cut_top - 30; let cutbox_bottom2 = this.data.cut_top + 30; let cutbox_left2 = this.data.cut_left - 30; let cutbox_right2 = this.data.cut_left + 30; let cutbox_top1 = this.data.cut_top + this.data.height - 30; let cutbox_bottom1 = this.data.cut_top + this.data.height + 30; let cutbox_left1 = this.data.cut_left - 30; let cutbox_right1 = this.data.cut_left + 30; if (currentX > cutbox_left4 && currentX < cutbox_right4 && currentY > cutbox_top4 && currentY < cutbox_bottom4) { this._moveDuring(); this.data._flag_cut_touch = true; this.data._flag_img_endtouch = true; this.data.CUT_START = { width: this.data.width, height: this.data.height, x: currentX, y: currentY, corner: 4 } } else if (currentX > cutbox_left3 && currentX < cutbox_right3 && currentY > cutbox_top3 && currentY < cutbox_bottom3) { this._moveDuring(); this.data._flag_cut_touch = true; this.data._flag_img_endtouch = true; this.data.CUT_START = { width: this.data.width, height: this.data.height, x: currentX, y: currentY, cut_top: this.data.cut_top, cut_left: this.data.cut_left, corner: 3 } } else if (currentX > cutbox_left2 && currentX < cutbox_right2 && currentY > cutbox_top2 && currentY < cutbox_bottom2) { this._moveDuring(); this.data._flag_cut_touch = true; this.data._flag_img_endtouch = true; this.data.CUT_START = { width: this.data.width, height: this.data.height, cut_top: this.data.cut_top, cut_left: this.data.cut_left, x: currentX, y: currentY, corner: 2 } } else if (currentX > cutbox_left1 && currentX < cutbox_right1 && currentY > cutbox_top1 && currentY < cutbox_bottom1) { this._moveDuring(); this.data._flag_cut_touch = true; this.data._flag_img_endtouch = true; this.data.CUT_START = { width: this.data.width, height: this.data.height, cut_top: this.data.cut_top, cut_left: this.data.cut_left, x: currentX, y: currentY, corner: 1 } } }, _cutTouchEnd(e) { this._moveStop(); this.data._flag_cut_touch = false; }, //停止移动时需要做的操作 _moveStop() { //清空之前的自动居中延迟函数并添加最新的 clearTimeout(this.data.TIME_CUT_CENTER); this.data.TIME_CUT_CENTER = setTimeout(() => { //动画启动 if (!this.data._cut_animation) { this.setData({ _cut_animation: true }); } this.setCutCenter(); }, 1000) //清空之前的背景变化延迟函数并添加最新的 clearTimeout(this.data.TIME_BG); this.data.TIME_BG = setTimeout(() => { if (this.data._flag_bright) { this.setData({ _flag_bright: false }); } }, 2000) }, //移动中 _moveDuring() { //清空之前的自动居中延迟函数 clearTimeout(this.data.TIME_CUT_CENTER); //清空之前的背景变化延迟函数 clearTimeout(this.data.TIME_BG); //高亮背景 if (!this.data._flag_bright) { this.setData({ _flag_bright: true }); } }, //监听器 _watcher() { Object.keys(this.data).forEach(v => { this._observe(this.data, v, this.data.watch[v]); }) }, _observe(obj, key, watchFun) { var val = obj[key]; Object.defineProperty(obj, key, { configurable: true, enumerable: true, set: (value) => { val = value; watchFun && watchFun(val, this); }, get() { if (val && '_img_top|img_left||width|height|min_width|max_width|min_height|max_height|export_scale|cut_top|cut_left|canvas_top|canvas_left|img_width|img_height|scale|angle|min_scale|max_scale'.indexOf(key) != -1) { let ret = parseFloat(parseFloat(val).toFixed(3)); if (typeof val == "string" && val.indexOf("%") != -1) { ret += '%'; } return ret; } return val; } }) }, _preventTouchMove() {} } }) ================================================ FILE: miniprogram/components/image-cropper/image-cropper.json ================================================ { "component": true } ================================================ FILE: miniprogram/components/image-cropper/image-cropper.wxml ================================================ ================================================ FILE: miniprogram/components/image-cropper/image-cropper.wxss ================================================ .image-cropper { background: rgba(14, 13, 13, .8); position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 1; } .image-cropper .main { position: absolute; width: 100vw; height: 100vh; overflow: hidden; } .image-cropper .content { z-index: 9; position: absolute; width: 100vw; height: 100vh; display: flex; flex-direction: column; pointer-events: none; } .image-cropper .bg_black { background: rgba(0, 0, 0, 0.8) !important; } .image-cropper .bg_gray { background: rgba(0, 0, 0, 0.45); transition-duration: .35s; } .image-cropper .content>.content_top { pointer-events: none; } .image-cropper .content>.content_middle { display: flex; height: 200px; width: 100%; } .image-cropper .content_middle_middle { width: 200px; box-sizing: border-box; position: relative; transition-duration: .3s; } .image-cropper .content_middle_right { flex: auto; } .image-cropper .content>.content_bottom { flex: auto; } .image-cropper .img { z-index: 2; top: 0; left: 0; position: absolute; border: none; width: 100%; backface-visibility: hidden; transform-origin: center; } .image-cropper .image-cropper-canvas { position: fixed; background: white; width: 150px; height: 150px; z-index: 10; top: -200%; pointer-events: none; } .image-cropper .border { background: white; pointer-events: auto; position: absolute; } .image-cropper .border-top-left { left: -2.5px; top: -2.5px; height: 2.5px; width: 33rpx; } .image-cropper .border-top-right { right: -2.5px; top: -2.5px; height: 2.5px; width: 33rpx; } .image-cropper .border-right-top { top: -1px; width: 2.5px; height: 30rpx; right: -2.5px; } .image-cropper .border-right-bottom { width: 2.5px; height: 30rpx; right: -2.5px; bottom: -1px; } .image-cropper .border-bottom-left { height: 2.5px; width: 33rpx; bottom: -2.5px; left: -2.5px; } .image-cropper .border-bottom-right { height: 2.5px; width: 33rpx; bottom: -2.5px; right: -2.5px; } .image-cropper .border-left-top { top: -1px; width: 2.5px; height: 30rpx; left: -2.5px; } .image-cropper .border-left-bottom { width: 2.5px; height: 30rpx; left: -2.5px; bottom: -1px; } ================================================ FILE: miniprogram/components/mp-progress/mp-progress.js ================================================ // import MpProgress from "../progress.min.js"; import MpProgress from "./progress.js"; Component({ options: { addGlobalClass: true, }, properties: { config: { type: Object, value: {} }, percentage: { type: Number, value: 0 }, reset: { type: Boolean, value: false }, isStop: { type: Boolean, value: false } }, data: { customOptions: { // canvasSize: { // width: 100, // height: 100 // }, percent: 100 }, percentage: 100, canvasId: `mp_progress_${new Date().getTime()}` }, attached() { // const customOptions = Object.assign({}, this.data.customOptions, this.data.config); // this.setData({ // customOptions, // }); // let canvasId = `mp_progress_${new Date().getTime()}`; // this.setData({ // canvasId, // }); }, ready() { // this._mpprogress = new MpProgress(Object.assign({}, this.data.customOptions, { canvasId: this.data.canvasId, target: this })); // this._mpprogress.draw(this.data.percentage || 0); }, observers: { 'config': function (config) { // console.log('Get Config') if (JSON.stringify(config) == "{}") return; // console.log("go init"); // const customOptions = Object.assign({}, this.data.customOptions, this.data.config); const customOptions = config; // let canvasId = `mp_progress_${new Date().getTime()}`; this.setData({ customOptions, // canvasId, }); let options = JSON.parse(JSON.stringify(this.data.customOptions)); options.canvasId = this.data.canvasId; options.target = this; this._mpprogress = new MpProgress(options); // this._mpprogress = new MpProgress(Object.assign({}, this.data.customOptions, { canvasId: this.data.canvasId, target: this })); this._mpprogress.draw(this.data.percentage || 0); }, 'reset': function (reset) { if (reset) { if (this._mpprogress) { this._mpprogress.stopAnimation(true); } // let canvasId = `mp_progress_${new Date().getTime()}`; // this.setData({ // canvasId, // }); let options = JSON.parse(JSON.stringify(this.data.customOptions)); options.canvasId = this.data.canvasId; options.target = this; this._mpprogress = new MpProgress(options); // this._mpprogress = new MpProgress(Object.assign({}, this.data.customOptions, { canvasId: this.data.canvasId, target: this })); // delete this._mpprogress this._mpprogress.draw(this.data.percentage || 0); } }, 'isStop': function (isStop) { if (isStop && this._mpprogress) { this._mpprogress.stopAnimation(isStop); } // this._mpprogress.stopAnimation(); }, // 'percentage': function (percentage) { // if (this._mpprogress) { // // 第一次进来的时候还没有初始化完成 // this._mpprogress.draw(percentage); // } // }, } }); ================================================ FILE: miniprogram/components/mp-progress/mp-progress.json ================================================ { "component": true, "usingComponents": {} } ================================================ FILE: miniprogram/components/mp-progress/mp-progress.wxml ================================================ ================================================ FILE: miniprogram/components/mp-progress/progress.js ================================================ /*! mp-progress.js v1.2.13 https://www.npmjs.com/package/mp-progress */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["MpProgress"] = factory(); else root["MpProgress"] = factory(); })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof 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; } /** * 渲染函数 * @param {canvasId} String canvas标签的id * @param {percentage} Number 旋转百分比 * @param {needDot} Boolean 是否需要纽扣 * @param {dotStyle} Array 进度点样式,最多支持两种颜色,如:[{r: 3, fillStyle: '#56B37F'}],r代表半径、fillStyle代表填充颜色 * @param {gradientList} Array 渐变颜色定义数组 */ var MpProgress = /*#__PURE__*/function () { function MpProgress(options) { _classCallCheck(this, MpProgress); var canvasId = options.canvasId, _options$canvasSize = options.canvasSize, canvasSize = _options$canvasSize === void 0 ? { width: 400, height: 400 } : _options$canvasSize, _options$percent = options.percent, percent = _options$percent === void 0 ? 100 : _options$percent, _options$barStyle = options.barStyle, barStyle = _options$barStyle === void 0 ? {} : _options$barStyle, _options$needDot = options.needDot, needDot = _options$needDot === void 0 ? false : _options$needDot, _options$dotStyle = options.dotStyle, dotStyle = _options$dotStyle === void 0 ? [] : _options$dotStyle, _options$totalTime = options.totalTime, totalTime = _options$totalTime === void 0 ? 2000 : _options$totalTime, _options$target = options.target, target = _options$target === void 0 ? null : _options$target; if (canvasId) { // 定义展示圆环的百分比,百分比不少于50% this._percent = percent < 50 ? 50 : percent > 100 ? 100 : percent; this._options = { canvasId: canvasId, needDot: needDot, dotStyle: dotStyle, canvasSize: canvasSize, barStyle: barStyle, totalTime: totalTime, target: target }; this._barIndex = 0; this.isInit = false; } else { throw '[初始化失败]: 缺少canvasId'; } } _createClass(MpProgress, [{ key: "draw", value: function draw(percentage) { var _this = this; var version = wx.getSystemInfoSync().SDKVersion; if (this.compareVersion(version, '2.7.0') < 0) { console.error("\u8BF7\u57282.7.0\u4EE5\u4E0A\u7684SDK\u4E2D\u4F7F\u7528\uFF0C\u5F53\u524DSDK\u7248\u672C\uFF1A".concat(version)); return; } if (typeof percentage === 'undefined') { console.warn('[绘图过程出现错误]: 调用draw方法必须传入百分比参数'); return; } if (percentage < 0) { percentage = 0; console.warn('[参数percentagegit<0]: 已自动调整为0'); } if (percentage > 100) { percentage = 100; console.warn('[参数percentage>100]: 已自动调整为100'); } this._options.percentage = +percentage || 0; if (this._context) { // context初始化完毕 this.drawFn(); } else { try { var _target = this._options.target; var query = wx.createSelectorQuery()["in"](_target); if (_target.$wx && _target.$wx.$wepy) { // wepy不支持in的方式去查找 query = wx.createSelectorQuery(); } query.select("#".concat(this._options.canvasId)).node(function (res) { // console.log(res); // console.log('res', res); // console.log('res.node', res.node); var canvas = res.node; _this._requestAnimationFrame = canvas.requestAnimationFrame.bind(canvas); var ctx = canvas.getContext('2d'); var dpr = wx.getSystemInfoSync().pixelRatio; canvas.width = canvas._width * dpr; canvas.height = canvas._height * dpr; ctx.scale(dpr, dpr); _this._context = ctx; _this.drawFn(); }).exec(); } catch (err) { // console.log('query err', err); console.warn(err); } } } }, { key: "drawFn", value: function drawFn() { var _this2 = this; try { var barStyle = this._options.barStyle; if (barStyle.length > 0) { if (this.isInit) { console.log(this._positionInfo); // 需要清除画布 if (this._percent === 100) { this._context.clearRect(-this._positionInfo.originX, -this._positionInfo.originY, this.convertLength(this._options.canvasSize.width), this.convertLength(this._options.canvasSize.height)); } else { this._context.clearRect(-this._positionInfo.originX, -this.convertLength(this._options.canvasSize.height) / 2, this.convertLength(this._options.canvasSize.width), this.convertLength(this._options.canvasSize.height)); } // 重置shadow相关的参数,否则进度条会变粗 this._context.shadowColor = 'transparent'; this._context.shadowBlur = 0; } else { // console.log('init'); // 找到最大宽度的bar var maxBarWidth = 0; for (var j = 0; j < barStyle.length; j++) { var _width = barStyle[j].width; if (_width > maxBarWidth) { maxBarWidth = _width; } } // 取canvas的height计算圆圈半径取 var _r = 0; var cosP = Math.cos(2 * Math.PI / 360 * ((100 - this._percent) / 2 / 100 * 360)); if (this._percent === 100) { _r = ((Math.min(this._options.canvasSize.width, this._options.canvasSize.height) - 2 * maxBarWidth) / 2).toFixed(2); } else { _r = (Math.min(this._options.canvasSize.width / 2, (this._options.canvasSize.height - 2 * maxBarWidth) / (1 + cosP)) - maxBarWidth).toFixed(2); } // 更换原点 var originX = Math.round(this._options.canvasSize.width / 2); var originY = 0; if (this._percent === 100) { originY = Math.round(this._options.canvasSize.height / 2); } else { originY = Math.round(this._options.canvasSize.height / (1 + cosP)); } // 基础数据初始化完成 this.isInit = true; if (this._options.needDot) { // 考虑剔除进度点的宽度差以及进度点阴影的宽度查 if (this._options.dotStyle.length > 0) { var circleR = this._options.dotStyle[0].r; if (circleR * 2 > maxBarWidth) { var shadowDiff = this._options.dotStyle[0].shadow ? circleR / 4 : 0; _r -= circleR - maxBarWidth + shadowDiff; if (this._percent !== 100) { originY -= circleR + shadowDiff; } } } else { console.warn('参数dotStyle不完整,请检查'); return; } } // console.log(originX, originY, this.convertLength(originX), this.convertLength(originY)); // arc原点默认为3点钟方向,需要调整到12点 var rotateDeg = this._percent === 100 ? -90 : ((100 - this._percent + (this._percent - 50) / 2) / 100).toFixed(2) * 360; this._positionInfo = { originX: this.convertLength(originX), originY: this.convertLength(originY) }; this._context.translate(this._positionInfo.originX, this._positionInfo.originY); this._context.rotate(rotateDeg * Math.PI / 180); // console.log('_r', _r); this._r = this.convertLength(_r); } // 需要旋转的角度 this.deg = (this._options.percentage / 100).toFixed(2) * 2 * Math.PI; (barStyle || []).forEach(function (item, index) { // 重置percent以免出现计算数据不归为的问题 item.percent = 0; _this2._barIndex = index; if(index==1) _this2.stop = false // console.log('draw bar', index) _this2.drawBar(); }); if (this.hasAnimateBar && this._options.needDot) { console.warn('animate和dotStyle不可同时使用'); } else { if (this._options.needDot) { this.drawBarCoordinateDot(); } } } else { console.warn('参数barStyle不符合要求,请检查'); } } catch (err) { console.warn('[绘图过程出现错误]: ', err); } } }, { key: "drawBar", value: function drawBar() { var currentBar = this._options.barStyle[this._barIndex]; var isLastBar = (this._options.barStyle.length - 1 === this._barIndex)? true:false; var barDeg = (isLastBar ? this.deg : 2 * Math.PI) * this._percent / 100; // 需要旋转到的最终角度 var endAngle = barDeg; // 先把本次需要旋转到的角度初始化为最终角度 // var diff = 1; // let startAngle = 0; 每一帧动画的百分比(满是100) // 若是第二个Bar,即实际进度条,且设置了动画且百分比未到100则需要继续进行重设endAngle // if (isLastBar && currentBar.animate && currentBar.percent < 100) { // this.hasAnimateBar = true; // if (currentBar.percent) { // currentBar.percent += diff; // } else { // currentBar.percent = diff; // } // startAngle = barDeg*((currentBar.percent - diff)/100); // endAngle = barDeg * (currentBar.percent / 100); // } // console.log(`startAngle: ${startAngle}, endAngle: ${endAngle}`); let elapsed let totalTime let timeStamp if (isLastBar && currentBar.animate) { timeStamp = new Date().getTime(); totalTime = this._options.totalTime; if (this.start === undefined){ this.start = timeStamp; // console.log('Start timeStamp:', timeStamp); // console.log(this); } elapsed = timeStamp - this.start; if(elapsed < totalTime){ // 计算本次绘制应绘制的进度 endAngle = barDeg * (elapsed / totalTime); } if(this.stop){ // 若暂停,则保存当前进度 this._options.totalTime = totalTime - elapsed; return; } } // console.log("endAngle: ".concat(endAngle)); this._context.beginPath(); this._context.arc(0, 0, this._r, 0, endAngle); this._context.lineWidth = this.convertLength(currentBar.width); // this._context.lineJoin = 'round' this._context.strokeStyle = this.generateBarFillStyle(currentBar.fillStyle); var barLineCap = currentBar.lineCap; if (barLineCap) { this._context.lineCap = barLineCap; } this._context.stroke(); // let _thisn = this if (isLastBar && currentBar.animate) { if (elapsed < totalTime && !(this.stop)) { // 时间未到则调用requestAnimationFrame在下次重绘时再次调用绘制函数 this._requestAnimationFrame(this.drawBar.bind(this)); }else{ // 时间到了则触发timingOut事件 this._options.target.triggerEvent('timingOut', {timeout: true}, {}) } // 旧版动画方案 // if(!this.animationTimer){ // this.animationTimer = setInterval(this.drawBar.bind(this), 20) // setTimeout(function(){ // clearInterval(_thisn.animationTimer) // }, 1000) // } // if (currentBar.percent < 100) { // // this._requestAnimationFrame(this.drawBar.bind(this)); // setTimeout(this.drawBar.bind(this), 20); // } } } }, { key: "compareVersion", value: function compareVersion(v1, v2) { v1 = v1.split('.'); v2 = v2.split('.'); var len = Math.max(v1.length, v2.length); while (v1.length < len) { v1.push('0'); } while (v2.length < len) { v2.push('0'); } for (var i = 0; i < len; i++) { var num1 = parseInt(v1[i]); var num2 = parseInt(v2[i]); if (num1 > num2) { return 1; } else if (num1 < num2) { return -1; } } return 0; } /** * 计算填充颜色 * @param {config} 传入的颜色配置 */ }, { key: "generateBarFillStyle", value: function generateBarFillStyle(config) { if (typeof config === 'string') { // 单一色彩 return config; } else { // 渐变色彩 var grd = this._context.createLinearGradient(0, 0, 100, 90); for (var i = 0; i < config.length; i++) { var item = config[i]; grd.addColorStop(item.position, item.color); } return grd; } } /** * convertLength * 小程序长度单位转换函数 */ }, { key: "convertLength", value: function convertLength(length) { return +Math.round(wx.getSystemInfoSync().windowWidth * length / 750); } /** * drawCircleWithFillStyle * @param {context} Object canvas 2d context * @param {style} Object 圆的样式参数 */ }, { key: "drawCircleWithFillStyle", value: function drawCircleWithFillStyle(style) { console.log(style); this._context.beginPath(); this._context.arc(style.x, style.y, this.convertLength(style.r), 0, 2 * Math.PI); this._context.fillStyle = style.fillStyle || '#ffffff'; if (style.shadow) { this._context.shadowOffsetX = 0; this._context.shadowOffsetY = 0; this._context.shadowColor = style.shadow; this._context.shadowBlur = this.convertLength(style.r / 2); } this._context.fill(); } /** * drawBarCoordinateDot * @param {percentage} Number 旋转百分比 */ }, { key: "drawBarCoordinateDot", value: function drawBarCoordinateDot() { // 数学夹脚 var mathDeg = (this._options.percentage / 100 * this._percent / 100).toFixed(2) * 360; // 计算弧度 var radian = ''; // 三角函数cos=y/r,sin=x/r,分别得到小点的x、y坐标 var x = 0; var y = 0; if (mathDeg <= 90) { // 求弧度 radian = 2 * Math.PI / 360 * mathDeg; x = (Math.cos(radian) * this._r).toFixed(2); y = (Math.sin(radian) * this._r).toFixed(2); } else if (mathDeg > 90 && mathDeg <= 180) { // 求弧度 radian = 2 * Math.PI / 360 * (180 - mathDeg); x = -(Math.cos(radian) * this._r).toFixed(2); y = (Math.sin(radian) * this._r).toFixed(2); } else if (mathDeg > 180 && mathDeg <= 270) { // 求弧度 radian = 2 * Math.PI / 360 * (mathDeg - 180); x = -(Math.cos(radian) * this._r).toFixed(2); y = -(Math.sin(radian) * this._r).toFixed(2); } else { // 求弧度 radian = 2 * Math.PI / 360 * (360 - mathDeg); x = (Math.cos(radian) * this._r).toFixed(2); y = -(Math.sin(radian) * this._r).toFixed(2); } // console.log(x, y); if (this._options.dotStyle.length > 0) { // 画背景大点 this.drawCircleWithFillStyle(_objectSpread({ x: x, y: y }, this._options.dotStyle[0])); } else { console.warn('参数dotStyle不完整,请检查'); } if (this._options.dotStyle.length > 1) { // 画前景小点 this.drawCircleWithFillStyle(_objectSpread({ x: x, y: y }, this._options.dotStyle[1])); } } }, { key: "stopAnimation", value: function stopAnimation(isStop) { // if(this.stop == undefined) return // console.log("stoppppppppppppp!") // this.stop = isStop this.stop = true // if(!isStop){ // this._barIndex = 1; // this.start = new Date().getTime() // this.drawBar(); // } } }]); return MpProgress; }(); /* harmony default export */ __webpack_exports__["default"] = (MpProgress); /***/ }) /******/ ])["default"]; }); ================================================ FILE: miniprogram/envList.js ================================================ const envList = [{"envId":"music-cloud-1v7x1","alias":"music-cloud"}] const isMac = false module.exports = { envList, isMac } ================================================ FILE: miniprogram/lib/runtime/runtime.js ================================================ /** * Copyright (c) 2014-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var regeneratorRuntime = (function (exports) { "use strict"; var Op = Object.prototype; var hasOwn = Op.hasOwnProperty; var undefined; // More compressible than void 0. var $Symbol = typeof Symbol === "function" ? Symbol : {}; var iteratorSymbol = $Symbol.iterator || "@@iterator"; var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function wrap(innerFn, outerFn, self, tryLocsList) { // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; var generator = Object.create(protoGenerator.prototype); var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next, // .throw, and .return methods. generator._invoke = makeInvokeMethod(innerFn, self, context); return generator; } exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion // record like context.tryEntries[i].completion. This interface could // have been (and was previously) designed to take a closure to be // invoked without arguments, but in all the cases we care about we // already have an existing method we want to call, so there's no need // to create a new function object. We can even get away with assuming // the method takes exactly one argument, since that happens to be true // in every case, so we don't have to touch the arguments object. The // only additional allocation required is the completion record, which // has a stable shape and so hopefully should be cheap to allocate. function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } var GenStateSuspendedStart = "suspendedStart"; var GenStateSuspendedYield = "suspendedYield"; var GenStateExecuting = "executing"; var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as // breaking out of the dispatch switch statement. var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and // .constructor.prototype properties for functions that return Generator // objects. For full spec compliance, you may wish to configure your // minifier not to mangle the names of these two functions. function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that // don't natively support it. var IteratorPrototype = {}; IteratorPrototype[iteratorSymbol] = function () { return this; }; var getProto = Object.getPrototypeOf; var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { // This environment has a native %IteratorPrototype%; use it instead // of the polyfill. IteratorPrototype = NativeIteratorPrototype; } var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; GeneratorFunctionPrototype.constructor = GeneratorFunction; GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; // Helper for defining the .next, .throw, and .return methods of the // Iterator interface in terms of a single ._invoke method. function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function(method) { prototype[method] = function(arg) { return this._invoke(method, arg); }; }); } exports.isGeneratorFunction = function(genFun) { var ctor = typeof genFun === "function" && genFun.constructor; return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can // do is to check its .name property. (ctor.displayName || ctor.name) === "GeneratorFunction" : false; }; exports.mark = function(genFun) { if (Object.setPrototypeOf) { Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); } else { genFun.__proto__ = GeneratorFunctionPrototype; if (!(toStringTagSymbol in genFun)) { genFun[toStringTagSymbol] = "GeneratorFunction"; } } genFun.prototype = Object.create(Gp); return genFun; }; // Within the body of any async function, `await x` is transformed to // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test // `hasOwn.call(value, "__await")` to determine if the yielded value is // meant to be awaited. exports.awrap = function(arg) { return { __await: arg }; }; function AsyncIterator(generator) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (record.type === "throw") { reject(record.arg); } else { var result = record.arg; var value = result.value; if (value && typeof value === "object" && hasOwn.call(value, "__await")) { return Promise.resolve(value.__await).then(function(value) { invoke("next", value, resolve, reject); }, function(err) { invoke("throw", err, resolve, reject); }); } return Promise.resolve(value).then(function(unwrapped) { // When a yielded Promise is resolved, its final value becomes // the .value of the Promise<{value,done}> result for the // current iteration. result.value = unwrapped; resolve(result); }, function(error) { // If a rejected Promise was yielded, throw the rejection back // into the async generator function so it can be handled there. return invoke("throw", error, resolve, reject); }); } } var previousPromise; function enqueue(method, arg) { function callInvokeWithMethodAndArg() { return new Promise(function(resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = // If enqueue has been called before, then we want to wait until // all previous Promises have been resolved before calling invoke, // so that results are always delivered in the correct order. If // enqueue has not been called before, then it is important to // call invoke immediately, without waiting on a callback to fire, // so that the async generator function has the opportunity to do // any necessary setup in a predictable way. This predictability // is why the Promise constructor synchronously invokes its // executor callback, and why async functions synchronously // execute code before the first await. Since we implement simple // async functions in terms of async generators, it is especially // important to get this right, even though it requires care. previousPromise ? previousPromise.then( callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later // invocations of the iterator. callInvokeWithMethodAndArg ) : callInvokeWithMethodAndArg(); } // Define the unified helper method that is used to implement .next, // .throw, and .return (see defineIteratorMethods). this._invoke = enqueue; } defineIteratorMethods(AsyncIterator.prototype); AsyncIterator.prototype[asyncIteratorSymbol] = function () { return this; }; exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of // AsyncIterator objects; they just return a Promise for the value of // the final result produced by the iterator. exports.async = function(innerFn, outerFn, self, tryLocsList) { var iter = new AsyncIterator( wrap(innerFn, outerFn, self, tryLocsList) ); return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator. : iter.next().then(function(result) { return result.done ? result.value : iter.next(); }); }; function makeInvokeMethod(innerFn, self, context) { var state = GenStateSuspendedStart; return function invoke(method, arg) { if (state === GenStateExecuting) { throw new Error("Generator is already running"); } if (state === GenStateCompleted) { if (method === "throw") { throw arg; } // Be forgiving, per 25.3.3.3.3 of the spec: // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume return doneResult(); } context.method = method; context.arg = arg; while (true) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (context.method === "next") { // Setting context._sent for legacy support of Babel's // function.sent implementation. context.sent = context._sent = context.arg; } else if (context.method === "throw") { if (state === GenStateSuspendedStart) { state = GenStateCompleted; throw context.arg; } context.dispatchException(context.arg); } else if (context.method === "return") { context.abrupt("return", context.arg); } state = GenStateExecuting; var record = tryCatch(innerFn, self, context); if (record.type === "normal") { // If an exception is thrown from innerFn, we leave state === // GenStateExecuting and loop back for another invocation. state = context.done ? GenStateCompleted : GenStateSuspendedYield; if (record.arg === ContinueSentinel) { continue; } return { value: record.arg, done: context.done }; } else if (record.type === "throw") { state = GenStateCompleted; // Dispatch the exception by looping back around to the // context.dispatchException(context.arg) call above. context.method = "throw"; context.arg = record.arg; } } }; } // Call delegate.iterator[context.method](context.arg) and handle the // result, either by returning a { value, done } result from the // delegate iterator, or by modifying context.method and context.arg, // setting context.delegate to null, and returning the ContinueSentinel. function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (method === undefined) { // A .throw or .return when the delegate iterator has no .throw // method always terminates the yield* loop. context.delegate = null; if (context.method === "throw") { if (delegate.iterator.return) { // If the delegate iterator has a return method, give it a // chance to clean up. context.method = "return"; context.arg = undefined; maybeInvokeDelegate(delegate, context); if (context.method === "throw") { // If maybeInvokeDelegate(context) changed context.method from // "return" to "throw", let that override the TypeError below. return ContinueSentinel; } } context.method = "throw"; context.arg = new TypeError( "The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if (record.type === "throw") { context.method = "throw"; context.arg = record.arg; context.delegate = null; return ContinueSentinel; } var info = record.arg; if (! info) { context.method = "throw"; context.arg = new TypeError("iterator result is not an object"); context.delegate = null; return ContinueSentinel; } if (info.done) { // Assign the result of the finished delegate to the temporary // variable specified by delegate.resultName (see delegateYield). context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield). context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the // exception, let the outer generator proceed normally. If // context.method was "next", forget context.arg since it has been // "consumed" by the delegate iterator. If context.method was // "return", allow the original .return call to continue in the // outer generator. if (context.method !== "return") { context.method = "next"; context.arg = undefined; } } else { // Re-yield the result returned by the delegate method. return info; } // The delegate iterator is finished, so forget it and continue with // the outer generator. context.delegate = null; return ContinueSentinel; } // Define Generator.prototype.{next,throw,return} in terms of the // unified ._invoke helper method. defineIteratorMethods(Gp); Gp[toStringTagSymbol] = "Generator"; // A Generator should always return itself as the iterator object when the // @@iterator function is called on it. Some browsers' implementations of the // iterator prototype chain incorrectly implement this, causing the Generator // object to not be returned from this call. This ensures that doesn't happen. // See https://github.com/facebook/regenerator/issues/274 for more details. Gp[iteratorSymbol] = function() { return this; }; Gp.toString = function() { return "[object Generator]"; }; function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; if (1 in locs) { entry.catchLoc = locs[1]; } if (2 in locs) { entry.finallyLoc = locs[2]; entry.afterLoc = locs[3]; } this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal"; delete record.arg; entry.completion = record; } function Context(tryLocsList) { // The root entry object (effectively a try statement without a catch // or a finally block) gives us a place to store values thrown from // locations where there is no enclosing try statement. this.tryEntries = [{ tryLoc: "root" }]; tryLocsList.forEach(pushTryEntry, this); this.reset(true); } exports.keys = function(object) { var keys = []; for (var key in object) { keys.push(key); } keys.reverse(); // Rather than returning an object with a next method, we keep // things simple and return the next function itself. return function next() { while (keys.length) { var key = keys.pop(); if (key in object) { next.value = key; next.done = false; return next; } } // To avoid creating an additional object, we just hang the .value // and .done properties off the next function object itself. This // also ensures that the minifier will not anonymize the function. next.done = true; return next; }; }; function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) { return iteratorMethod.call(iterable); } if (typeof iterable.next === "function") { return iterable; } if (!isNaN(iterable.length)) { var i = -1, next = function next() { while (++i < iterable.length) { if (hasOwn.call(iterable, i)) { next.value = iterable[i]; next.done = false; return next; } } next.value = undefined; next.done = true; return next; }; return next.next = next; } } // Return an iterator with no values. return { next: doneResult }; } exports.values = values; function doneResult() { return { value: undefined, done: true }; } Context.prototype = { constructor: Context, reset: function(skipTempReset) { this.prev = 0; this.next = 0; // Resetting context._sent for legacy support of Babel's // function.sent implementation. this.sent = this._sent = undefined; this.done = false; this.delegate = null; this.method = "next"; this.arg = undefined; this.tryEntries.forEach(resetTryEntry); if (!skipTempReset) { for (var name in this) { // Not sure about the optimal order of these conditions: if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { this[name] = undefined; } } } }, stop: function() { this.done = true; var rootEntry = this.tryEntries[0]; var rootRecord = rootEntry.completion; if (rootRecord.type === "throw") { throw rootRecord.arg; } return this.rval; }, dispatchException: function(exception) { if (this.done) { throw exception; } var context = this; function handle(loc, caught) { record.type = "throw"; record.arg = exception; context.next = loc; if (caught) { // If the dispatched exception was caught by a catch block, // then let that catch block handle the exception normally. context.method = "next"; context.arg = undefined; } return !! caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; var record = entry.completion; if (entry.tryLoc === "root") { // Exception thrown outside of any try block that could handle // it, so set the completion value of the entire function to // throw the exception. return handle("end"); } if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"); var hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) { return handle(entry.catchLoc, true); } else if (this.prev < entry.finallyLoc) { return handle(entry.finallyLoc); } } else if (hasCatch) { if (this.prev < entry.catchLoc) { return handle(entry.catchLoc, true); } } else if (hasFinally) { if (this.prev < entry.finallyLoc) { return handle(entry.finallyLoc); } } else { throw new Error("try statement without catch or finally"); } } } }, abrupt: function(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { // Ignore the finally entry if control is not jumping to a // location outside the try/catch block. finallyEntry = null; } var record = finallyEntry ? finallyEntry.completion : {}; record.type = type; record.arg = arg; if (finallyEntry) { this.method = "next"; this.next = finallyEntry.finallyLoc; return ContinueSentinel; } return this.complete(record); }, complete: function(record, afterLoc) { if (record.type === "throw") { throw record.arg; } if (record.type === "break" || record.type === "continue") { this.next = record.arg; } else if (record.type === "return") { this.rval = this.arg = record.arg; this.method = "return"; this.next = "end"; } else if (record.type === "normal" && afterLoc) { this.next = afterLoc; } return ContinueSentinel; }, finish: function(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) { this.complete(entry.completion, entry.afterLoc); resetTryEntry(entry); return ContinueSentinel; } } }, "catch": function(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (record.type === "throw") { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } // The context.catch method must only be called with a location // argument that corresponds to a known catch block. throw new Error("illegal catch attempt"); }, delegateYield: function(iterable, resultName, nextLoc) { this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }; if (this.method === "next") { // Deliberately forget the last sent value so that we don't // accidentally pass it on to the delegate. this.arg = undefined; } return ContinueSentinel; } }; // Regardless of whether this script is executing as a CommonJS module // or not, return the runtime object so that we can declare the variable // regeneratorRuntime in the outer scope, which allows this module to be // injected easily by `bin/regenerator --include-runtime script.js`. return exports; }( // If this script is executing as a CommonJS module, use module.exports // as the regeneratorRuntime namespace. Otherwise create a new empty // object. Either way, the resulting object will be used to initialize // the regeneratorRuntime variable at the top of this file. typeof module === "object" ? module.exports : {} )); ================================================ FILE: miniprogram/lib/sm-5.js ================================================ // SM-5算法 // 计算下一个最优间隔的同时更新OF矩阵,从而单词在学习的时候不是一个个体,而是 // 用于生成最佳区间的随机散布 NOI--near-optimal intervals // ------------------------------------------------------------- // 优点1: 通过一些差异值来加速OF矩阵优化过程 // 优点2: 消除复习的块状问题,将同一时期学习的内容适当分散进行复习 // 公式: NOI=PI+(OI-PI)*(1+m) m∈(-0.5, 0.5) // m需满足(设概率密度函数为f(x)): // (0, 0.5)内的概率为0.5,即 ∫[0, 0.5]f(x)dx=0.5 // m=0的概率为m=0.5的概率的100倍 即 f(0)/f(0.5)=100 // 假设概率密度函数为 f(x)=a*exp(-b*x) // ------------------------------------------------------------- // Piotr Wozniak求得 a=0.047; b=0.092; // 从0到m的积分记为概率p,对于每一个p都有一个对应的m存在,p∈(0, 0.5) // 生成一个(0, 1)之间的随机数,减去0.5得p,则|p|∈(0, 0.5),而p的符号可以控制m的符号 // 则 ∫[0, m]f(x)dx=|p| => ∫[0, m]d( a*exp(-b*x) / (-b) )=|p| => m=-1/b*ln(1-b/a*|p|)) // // const createNOI = (PI, OI) => { // let a = 0.047 // let b = 0.092 // let randNum = Math.random() // let p = randNum - 0.5 // console.log('random p', p) // let m = -1 / b * (Math.log((1 - b / a * Math.abs(p)))) // m = m * Math.sign(p) // console.log('random m', m) // let NOI = PI + (OI - PI) * (1 + m) // NOI = Math.round(NOI) // return NOI // } // ------------------------------------------------------------- // 由于作者给出的参数带入是有误的,采用类正态分布实现分布函数 // 原型(标准正态分布):f(x) = 1/(√(2π)*Ω) * e(-x^2/(2Ω^2)) // 简化:f(x) = a*e(-b*x^2) // f(0) = 100*f(0.5) 可求得 b = -18.420680743952367 // ∫[0, 0.5]f(x)dx = 0.5 可求得 a = 2.4273047133848933 // 积分计算器网址: https://zh.numberempire.com/definiteintegralcalculator.php // 画函数图像网址:https://www.desmos.com/calculator?lang=zh-CN // 这里使用能解正态分布分位数的库进行运算 // f(0) = 100*f(0.5) 按正态分布算,可求得 std=0.1647525572455652 // X ~ N(0,0.1647525572455652) 从0~0.5的累计分布值为0.4987967402705885 // 故若要满足∫[0, 0.5]f(x)dx = 0.5,要在前面再乘上 // JStat库的jStat.normal.inv( p, mean, std )可以求出N(mean,std)分布从负无穷开始累计分布为p的分位点 // 因此思路转变为,首先随机获取[0, 1)的数r, r-0.5得到[-0.5, 0.5)的数m,(m*0.4987967402705885/0.5+0.5)得到累计值 // 即jStat.normal.inv(abs(m*0.4987967402705885/0.5)+0.5, 0, 0.1647525572455652) 可得到分位点 const jStat = require("./jstat.min.js") const createNOI = (PI, OI) => { let mean = 0 let std = 0.1647525572455652 let randNum = Math.random() // console.log('randNum', randNum) let p = Math.abs((randNum - 0.5) * 0.4987967402705885 / 0.5) + 0.5 // console.log('random p', p) let inv_cdf = jStat.normal.inv(p, mean, std) let m = inv_cdf * Math.sign(randNum - 0.5) // console.log('random m', m) let NOI = PI + (OI - PI) * (1 + m) NOI = Math.round(NOI) return NOI } // 符号函数 const sgn = (num) => { if (num < 0) { return -1 } else if (num == 0) { return 0 } else { return 1 } } // 计算新的OF矩阵对应项 // 输入: // last_i - 用于相关项目的最后(上一个)间隔(原文描述为the last interval used for the item in question) // q - 重复响应的质量 // used_OF - 用于计算相关项目的最后一个间隔时使用的最佳因子 // old_OF - 与项目的相关重复次数和电子因子相对应的 OF 条目的前一个值 // fraction - 属于确定修改速率的范围 (0,1) 的数字 (OF矩阵的变化越快) // 输出: // new_OF - 考虑的 OF 矩阵条目的新计算值 // 局部变量: // modifier - 确定 OF 值将增加或减少多少次的数字 // mod5 - 在 q=5 的情况下为修饰符建议的值 // mod2 - 在 q=2 的情况下为修饰符建议的值 const calculateNewOF = (last_i, q, used_OF, old_OF, fraction = 0.8) => { let modifier let mod5 = (last_i + 1) / last_i if (mod5 < 1.05) mod5 = 1.05 let mod2 = (last_i - 1) / last_i if (mod2 > 0.75) mod2 = 0.75 if (q > 4) { modifier = 1 + (mod5 - 1) * (q - 4) } else { modifier = 1 - (1 - mod2) / 2 * (4 - q) } if (modifier < 0.05) modifier = 0.05 let new_OF = used_OF * modifier if (q > 4) if (new_OF < old_OF) new_OF = old_OF if (q < 4) if (new_OF > old_OF) new_OF = old_OF new_OF = new_OF * fraction + old_OF * (1 - fraction) if (new_OF < 1.2) new_OF = 1.2 new_OF = new_OF.toFixed(4) new_OF = parseFloat(new_OF) return new_OF } // 单词记录提供数据:循环次数,上次的EF,上次的间隔时间(/天), q(quality,回忆质量) // 其他:OF矩阵 const sm_5 = (OF, wd_learning_record) => { let EF = wd_learning_record.EF let q = wd_learning_record.q let last_NOI = wd_learning_record.NOI let n = wd_learning_record.next_n let last_l = wd_learning_record.last_l let next_l = wd_learning_record.next_l let master = wd_learning_record.master if (master) { return { wd_learning_record: { word_id: wd_learning_record.word_id, last_l, next_l, NOI: last_NOI, EF, next_n: n, master, }, OF, } } // 计算此时与上次复习/学习的时间差(/天) let now = new Date() now.setMilliseconds(0) now.setSeconds(0) now.setMinutes(0) now.setHours(0) let last_i = Math.ceil((now.getTime() - last_l) / 86400000) // console.log('word', wd_learning_record.word_id, 'last interval', last_i) // 更改EF(由于作为键,EF规定为一位小数转换成的字符串) EF = parseFloat(EF) + (0.1 - (5 - q) * (0.08 + (5 - q) * 0.02)) if (EF < 1.3) EF = 1.3 if (EF > 2.8) EF = 2.8 EF = EF.toFixed(1) // 更改矩阵对应项,这里认为若实际间隔时间超过所需间隔时间的1.5倍 // 则视为极大异常值,规整为1.5倍,且不更改矩阵 let used_OF = OF[EF][n - 1] if (!used_OF) used_OF = 1.2 n++ if (!OF[EF][n - 1]) OF[EF][n - 1] = 1.2 if (last_i <= 1.5 * last_NOI) { let old_OF = OF[EF][n - 1] let new_OF = calculateNewOF(last_i, q, used_OF, old_OF) // console.log('new_OF of', 'OF[', EF, '][', n - 1, ']:', new_OF) OF[EF][n - 1] = new_OF } else { // console.log('last_i', last_i, 'is longer than 1.5 expected interval :', last_NOI) last_i = Math.round(last_NOI * 1.5) } // 计算最优间隔时长并进行指定分布的随机分散 // 同时计算下次需要复习的时间(1970.1.1至今毫秒数表示) let NOI if (q < 2) { n = 0 NOI = 1 } else if (q < 3) { n = 1 let interval = OF[EF][0] NOI = Math.round(interval) } else { let interval = n == 1 ? 5 : OF[EF][n - 1] * last_i // 若下个最优间隔时间大于100天,则将单词标记为已掌握 if (interval > 100) master = true console.log('next optimal interval', interval) NOI = Math.round(createNOI(last_i, interval)) if (NOI > 100 && !master) NOI = 100 if (NOI < 0 && !master) NOI = 1 } last_l = now.getTime() next_l = last_l + NOI * 86400000 return { wd_learning_record: { word_id: wd_learning_record.word_id, last_l, next_l, NOI, EF, next_n: n, master, }, OF, } } module.exports = { sm_5: sm_5, } ================================================ FILE: miniprogram/pages/image_cropper/image_cropper.js ================================================ //获取应用实例 const app = getApp() import regeneratorRuntime, { async } from '../../lib/runtime/runtime'; const userApi = require("../../utils/userApi.js") Page({ data: { src: '', width: 250, //宽度 height: 250, //高度 max_width: 300, max_height: 300, }, cropper: undefined, onLoad: function (options) { this.cropper = this.selectComponent("#image-cropper") this.setData({ src: app.globalData.forChangeAvatar.tempImgSrc }) }, cropperload(e) { console.log('cropper加载完成') }, loadimage(e) { wx.hideLoading() console.log('图片') this.cropper.imgReset() }, clickcut(e) { console.log(e.detail) //图片预览 wx.previewImage({ current: e.detail.url, // 当前显示图片的http链接 urls: [e.detail.url] // 需要预览的图片http链接列表 }) }, chooseImage() { let that = this; wx.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: ['album', 'camera'], success(res) { wx.showLoading({ title: '加载中', }) const tempFilePaths = res.tempFilePaths[0] app.globalData.forChangeAvatar.tempImgSrc = tempFilePaths //重置图片角度、缩放、位置 that.cropper.imgReset() that.setData({ src: tempFilePaths }) } }) }, submit() { this.cropper.getImg(this.uploadAndModify) }, async uploadAndModify(obj) { wx.showLoading({ title: '头像上传中...', mask: true, }) let res1 = await userApi.uploadFile(obj.url) let file = res1.fileID if (!file) { wx.hideLoading() wx.showToast({ title: '更改失败,请重试', icon: 'none', duration: 1500, }) return } console.log('file', file) this.changeAvatar(file) }, async uploadAndModify1(obj) { console.log(obj) let fileExtName = /\.\w+$/.exec(obj.url)[0] //获取文件格式(后缀名) let _this = this wx.cloud.uploadFile({ cloudPath: 'avatar_pic/' + Date.now() + '-' + Math.floor(Math.random() * 10000) + fileExtName, //生成添加时间戳后的随机序列作为文件名 filePath: obj.url, success: res1 => { let file = res1.fileID console.log('file', file) _this.changeAvatar(file) }, fail: err => { console.log(err) wx.showToast({ title: '更改失败,请重试', icon: 'none', duration: 1500, }) } }) }, async changeAvatar(file) { let data = { user_id: app.globalData.userInfo.user_id, } if (app.globalData.userInfo.wx_user == true && app.globalData.userInfo.settings.auto_update_avatar == true) { data.type = ['avatar_pic', 'settings'] data.value = [file, { auto_update_avatar: false }] } else { data.type = 'avatar_pic' data.value = file } let res2 = await userApi.changeUserInfo(data) console.log(res2) wx.hideLoading() if (res2.data == true) { app.globalData.userInfo.avatar_pic = file app.globalData.forChangeAvatar.change = true app.globalData.forChangeAvatar.imgSrc = file if (app.globalData.userInfo.wx_user == true && app.globalData.userInfo.settings.auto_update_avatar == true) { app.globalData.userInfo.settings.auto_update_avatar = false } wx.navigateBack({ delta: -1 }) } else { wx.showToast({ title: '更改失败,请重试', icon: 'none', duration: 1500, }) } }, rotate() { //在用户旋转的基础上旋转90° this.cropper.setAngle(this.cropper.data.angle += 90) }, setWidth(e) { this.setData({ width: e.detail.value < 10 ? 10 : e.detail.value }) this.setData({ cut_left: this.cropper.data.cut_left }) }, setHeight(e) { this.setData({ height: e.detail.value < 10 ? 10 : e.detail.value }) this.setData({ cut_top: this.cropper.data.cut_top }) }, setCutTop(e) { this.setData({ cut_top: e.detail.value }) this.setData({ cut_top: this.cropper.data.cut_top }) }, setCutLeft(e) { this.setData({ cut_left: e.detail.value }) this.setData({ cut_left: this.cropper.data.cut_left }) }, }) ================================================ FILE: miniprogram/pages/image_cropper/image_cropper.json ================================================ { "navigationBarTitleText": "裁切头像", "disableScroll": true, "navigationBarBackgroundColor": "#292929", "navigationBarTextStyle": "white", "backgroundColor": "#292929", "usingComponents": { "image-cropper": "../../components/image-cropper/image-cropper" } } ================================================ FILE: miniprogram/pages/image_cropper/image_cropper.less ================================================ /* pages/image_cropper/image_cropper.wxss */ // .top { // position: absolute; // width: 100%; // top: 10rpx; // display: flex; // flex-flow: wrap; // z-index: 10; // color: white; // justify-content: space-around; // } .hint { position: absolute; top: 10rpx; width: 100%; font-size: 33rpx; text-align: center; color: white; z-index: 10; } .bottom { position: absolute; width: 100%; height: 100rpx; bottom: 50rpx; display: flex; z-index: 10; justify-content: space-around; align-items: center; flex-wrap: wrap; font-weight: 600; .btnText { font-size: 32rpx; color: #ffffff; width: 200rpx; height: 80rpx; line-height: 80rpx; text-align: center; } .icon-rotate { font-size: 44rpx; font-weight: 300; } .button { font-size: 36rpx; padding: 0; margin: 0; z-index: 2; width: 200rpx; height: 80rpx; text-align: center; line-height: 80rpx; // color: white; // background-color: #757575; } } ================================================ FILE: miniprogram/pages/image_cropper/image_cropper.wxml ================================================ 点击中间裁剪框可查看裁剪后的图片 更换 ================================================ FILE: miniprogram/pages/image_cropper/image_cropper.wxss ================================================ /* pages/image_cropper/image_cropper.wxss */ .hint { position: absolute; top: 10rpx; width: 100%; font-size: 33rpx; text-align: center; color: white; z-index: 10; } .bottom { position: absolute; width: 100%; height: 100rpx; bottom: 50rpx; display: flex; z-index: 10; justify-content: space-around; align-items: center; flex-wrap: wrap; font-weight: 600; } .bottom .btnText { font-size: 32rpx; color: #ffffff; width: 200rpx; height: 80rpx; line-height: 80rpx; text-align: center; } .bottom .icon-rotate { font-size: 44rpx; font-weight: 300; } .bottom .button { font-size: 36rpx; padding: 0; margin: 0; z-index: 2; width: 200rpx; height: 80rpx; text-align: center; line-height: 80rpx; } ================================================ FILE: miniprogram/pages/index/index.js ================================================ // pages/index/index.js const app = getApp() import regeneratorRuntime, { async } from '../../lib/runtime/runtime'; const format_time = require('../../utils/format_time.js') const rescontent = require('../../utils/response_content.js') const wordApi = require('../../utils/wordApi.js') const userApi = require('../../utils/userApi.js') const word_utils = require("../../utils/word_utils.js") // const innerAudioContext = wx.createInnerAudioContext({ useWebAudioImplement: true }) Page({ /** * 页面的初始数据 */ data: { dailySentence: [], sentenceIndex: 0, isLogin: false, needToLearn: 0, needToReview: 0, isChangingBook: false, allBkData: [], }, control: { innerAudioContextList: [], isPlayingVoice: false, lastIndex: 0, isUpdatingData: false, loginTimer: -1, dataStr: '', pageHide: false, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { this.init() }, init() { wx.setNavigationBarColor({ backgroundColor: '#86e3ce', frontColor: '#ffffff', }) this.getDailySentence() this.setData({ isLogin: app.globalData.isLogin }) if (app.globalData.tryingLogin) { // console.log('Open tryingLogin listener') let _this = this this.control.loginTimer = setInterval(function () { // console.log('tryingLogin listener') if (!app.globalData.tryingLogin) { _this.control.pageHide = true _this.onShow() clearInterval(_this.control.loginTimer) } }, 200) } if (this.data.isLogin) { if (app.globalData.userInfo.l_book_id == -1) { wx.showToast({ title: '您还未设置词书,请先设置词书哦', icon: 'none', duration: 1000, }) this.showBookList() return } this.getBasicLearningData() } }, async getDailySentence() { let dateStr = format_time.formatDate(new Date()) this.control.dateStr = dateStr // let dailySentence = wx.getStorageSync('dailySentence') // wx.removeStorageSync('dailySentence') // if (dailySentence && dailySentence.date == dateStr) { // dailySentence = dailySentence.data // } else { let t1 = new Date().getTime() console.log('Start', t1) let res = await wordApi.getDailySentence() console.log(res) let t2 = new Date().getTime() console.log('Done', t2, 'Time Spent', t2 - t1) for (let i = 0; i < res.data.length; i++) { if (!(res.data[i].voiceUrl && res.data[i].voiceUrl != '')) { res.data[i].voiceUrl = word_utils.getWordVoiceUrl(res.data[i].content) } } // wx.setStorageSync('dailySentence', { // date: dateStr, // data: res.data // }) let dailySentence = res.data // } this.setData({ dailySentence: dailySentence }) this.control.innerAudioContextList = [] for (let j = 0; j < dailySentence.length; j++) { let innerAudioContext = wx.createInnerAudioContext({ useWebAudioImplement: true }) let _this = this innerAudioContext.onEnded(() => { // console.log('结束播放') _this.control.isPlayingVoice = false }) innerAudioContext.volume = 1 innerAudioContext.src = dailySentence[j].voiceUrl this.control.innerAudioContextList.push(innerAudioContext) } }, async getBasicLearningData() { this.control.isUpdatingData = true let res = await wordApi.getBasicLearningData({ user_id: app.globalData.userInfo.user_id, wd_bk_id: app.globalData.userInfo.l_book_id, }) console.log('getBasicLearningData result', res) this.setData({ needToLearn: res.data.needToLearn, needToReview: res.data.needToReview, }) this.control.isUpdatingData = false }, playVoice(e) { // console.log('playVoice', e) let index = e.currentTarget.dataset.index console.log('try to play/stop sentence voice') if (this.control.isPlayingVoice) { this.control.innerAudioContextList[index].stop() // console.log('手动停止') this.control.isPlayingVoice = false return } this.control.innerAudioContextList[index].play() this.control.isPlayingVoice = true }, changeSwiperItem(e) { // console.log(e) let nextIndex = e.detail.current if (this.control.isPlayingVoice) { this.control.innerAudioContextList[this.control.lastIndex].stop() this.control.isPlayingVoice = false // console.log('被动停止') } this.control.lastIndex = nextIndex }, toOtherPage(e) { let type = e.currentTarget.dataset.type wx.navigateTo({ url: `../${type}/${type}`, }) }, toLearnPage(e) { let type = e.currentTarget.dataset.type if (this.control.isUpdatingData) { wx.showToast({ title: '更新数据中,请重试', icon: 'none', duration: 1000, }) return } if (type == 'learning') { if (app.globalData.userInfo.l_book_id == -1) { wx.showToast({ title: '请选择词书后再进行学习哦', icon: 'none', duration: 1000, }) return } if (this.data.needToLearn == 0) { wx.showToast({ title: '已完成本书的学习啦,可以选新的词书哦', icon: 'none', duration: 1000, }) return } } else if (type == 'review') { if (this.data.needToReview == 0) { wx.showToast({ title: '今日复习任务已完成啦~', icon: 'none', duration: 1000, }) return } } wx.navigateTo({ url: `../${type}/${type}`, }) }, touchMove(e) { return let time = new Date().getTime() console.log('手指触摸后移动', time) console.log(e) }, async showBookList() { this.setData({ isChangingBook: true, }) let allBkData = this.data.allBkData if (!allBkData || allBkData.length == 0) allBkData = (await wordApi.getAllWBData()).data this.setData({ allBkData: allBkData, }) }, showTips(e) { wx.showToast({ title: '请先选择词书哦', icon: 'none', duration: 1500, }) }, async changeWordBook(e) { console.log('changeWordBook') let index = e.currentTarget.dataset.index let bkInfo = this.data.allBkData[index] if (bkInfo.wd_bk_id != app.globalData.userInfo.l_book_id) { let res = await userApi.changeWordBook({ user_id: app.globalData.userInfo.user_id, wd_bk_id: bkInfo.wd_bk_id, }) if (res.data) { app.globalData.userInfo.l_book_id = bkInfo.wd_bk_id app.globalData.updatedForOverview = true this.getBasicLearningData() this.setData({ isChangingBook: false, }) } else { wx.showToast({ title: '更换失败,请重试~', icon: "none", duration: 1500, }) } } }, endChange() { if (app.globalData.isLogin && app.globalData.userInfo.l_book_id == -1) { wx.showToast({ title: '您还未选择词书,可以在概览页选择哦', icon: 'none', duration: 1500, }) } this.setData({ isChangingBook: false, }) }, // 为拥有进入过渡动画用,实际可不做处理 onEnter() { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { if (this.control.pageHide) { if (this.data.isChangingBook) { this.setData({ isChangingBook: false }) } if (this.data.isLogin != app.globalData.isLogin) { this.setData({ isLogin: app.globalData.isLogin }) if (app.globalData.isLogin) { if (app.globalData.userInfo.l_book_id == -1) { wx.showToast({ title: '您还未设置词书,请先设置词书哦', icon: 'none', duration: 1000, }) this.showBookList() } else { this.getBasicLearningData() } app.globalData.updatedForIndex = false } else { this.setData({ needToLearn: 0, needToReview: 0, }) } } if (app.globalData.updatedForIndex) { if (app.globalData.isLogin) this.getBasicLearningData() app.globalData.updatedForIndex = false } if (format_time.formatDate(new Date()) != this.control.dateStr) { console.log('from onShow, change dailySentence') this.getDailySentence() } this.control.pageHide = false } }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { this.control.pageHide = true }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } }) ================================================ FILE: miniprogram/pages/index/index.json ================================================ { "usingComponents": {} } ================================================ FILE: miniprogram/pages/index/index.less ================================================ .bgWrapper { width: 100%; height: 100%; position: absolute; z-index: -100; background-image: linear-gradient(to bottom, #86e3ce, #FFFFFF); // -webkit-filter: blur(10px); // filter: blur(10px); .bg { margin-left: -15%; margin-top: -15%; width: 130%; height: 130%; } } .wrapper { width: 100%; height: 100%; position: absolute; z-index: -1; } .searchBtn { position: absolute; top: 35rpx; right: 45rpx; height: 60rpx; width: 60rpx; border-radius: 34rpx; // background-color: #f6f6f6; // border: solid 3rpx rgba(250, 153, 93, 0.2); // border: solid 4rpx #fa995d; // border: solid 4rpx #f6f6f6; border: solid 4rpx #70ac9e; display: flex; justify-content: center; align-items: center; background: transparent; background: rgba(144, 194, 182, 0.2); .searchIcon { // font-size: 32rpx; font-size: 40rpx; background: transparent; font-weight: 600; // color: #e0e0e0; // color: #fa995d; // color: #f6f6f6; // color: #757575; color: #70ac9e; border-radius: 50%; } } // .wasTaped { // background: rgba(112, 172, 158, 0.2); // } .swiperContainer { margin-top: 300rpx; width: 100%; height: 500rpx; .dailySentenceWrapper { width: 90%; height: 500rpx; margin-left: auto; margin-right: auto; display: flex; flex-direction: column; justify-content: center; align-items: center; .content { width: 100%; font-size: 42rpx; font-weight: 800; font-family: 'Microsoft YaHei'; text-align: center; color: #333333; // color: #ee9c6c; // color: white; margin-bottom: 20rpx; } .voice { width: 50rpx; height: 50rpx; font-size: 40rpx; line-height: 50rpx; text-align: center; color: #8a8a8a; // color: white; margin-top: -10rpx; margin-bottom: 10rpx; } .translation { width: 100%; height: 60rpx; font-size: 32rpx; font-weight: 800; font-family: 'Microsoft YaHei'; color: #4A4A4A; // color: #f5b994; // color: white; text-align: center; } } } .btnWrapper { margin-top: 100rpx; width: 100%; height: 140rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; .loginBtn { width: 50%; height: 100rpx; // background-color: #007bff; // background-color: #6fb3b8; background-color: #90ced3; color: #FFFFFF; font-size: 40rpx; line-height: 100rpx; text-align: center; border-radius: 10rpx; font-weight: 800; box-shadow: 4rpx 4rpx 4rpx #e6e6e6; } } .learnBtnWrapper { position: absolute; bottom: 100rpx; width: 100%; // left: 20rpx; height: 150rpx; display: flex; justify-content: space-between; // justify-content: space-around; align-items: center; .both { width: 38%; height: 135rpx; display: flex; justify-content: center; flex-direction: column; padding-left: 40rpx; border-radius: 10rpx; box-shadow: 4rpx 4rpx 4rpx #e6e6e6; .text { font-size: 42rpx; // color: #b3ddd1; // color: white; color: #515151; font-weight: 800; // margin-bottom: 10rpx; } .number { font-size: 32rpx; // color: #b3ddd1; // color: #f6f6f6; color: #fa995d; font-weight: 700; } } .forLearn { background-image: linear-gradient(to bottom, #ffc8cb, #FFFFFF); // background-color: rgba(150, 150, 150, 0.1);c6e5fa margin-left: 35rpx; } // .wasTaped { // opacity: 0.7; // } .forReview { background-image: linear-gradient(to bottom, #e4d1fe, #FFFFFF); background-image: linear-gradient(to bottom, #87cafe, #FFFFFF); margin-right: 35rpx; } } .wasTaped { // filter: grayscale(40%); opacity: 0.7; } .mask { position: absolute; top: 0; left: 0; width: 750rpx; height: 1200rpx; // width: 100%; // height: 100%; z-index: 80; background-color: rgba(0, 0, 0, 0.7); } .changeBookWrapper { width: 750rpx; height: 600rpx; margin-top: 50rpx; position: relative; z-index: 101; .book { width: 750rpx; height: 160rpx; display: flex; justify-content: center; align-items: center; position: relative; margin-bottom: 10rpx; .bookCover { // margin-top: 30rpx; margin-left: 20rpx; margin-right: 40rpx; width: 106rpx; //遵循A4纸21*27.9的比例 height: 140rpx; background-color: rgb(37, 134, 229); background-color: rgb(105, 149, 194); border-radius: 10rpx; .name { width: 28rpx; height: 100rpx; font-size: 28rpx; // line-height: 50rpx; color: #ffffff; margin-left: 10rpx; margin-top: 10rpx; font-weight: 600; } } .info { width: 70%; height: 160rpx; position: relative; font-weight: 600; .bookName { color: #757575; font-size: 28rpx; margin-top: 10rpx; font-weight: 700; } .des { margin-top: 10rpx; font-size: 22rpx; color: #8a8a8a; } .total { position: absolute; bottom: 10rpx; font-size: 22rpx; color: #8a8a8a; .num { font-size: 26rpx; } } } } .wasTaped { opacity: 1; background-color: rgba(150, 150, 150, 0.1); } } ================================================ FILE: miniprogram/pages/index/index.wxml ================================================ {{item.content}} {{item.translation}} 登录 学习 {{needToLearn}} 复习 {{needToReview}} {{item.name}} {{item.name}} {{item.description}} 词汇量 {{item.total}} ================================================ FILE: miniprogram/pages/index/index.wxss ================================================ .bgWrapper { width: 100%; height: 100%; position: absolute; z-index: -100; background-image: linear-gradient(to bottom, #86e3ce, #FFFFFF); } .bgWrapper .bg { margin-left: -15%; margin-top: -15%; width: 130%; height: 130%; } .wrapper { width: 100%; height: 100%; position: absolute; z-index: -1; } .searchBtn { position: absolute; top: 35rpx; right: 45rpx; height: 60rpx; width: 60rpx; border-radius: 34rpx; border: solid 4rpx #70ac9e; display: flex; justify-content: center; align-items: center; background: transparent; background: rgba(144, 194, 182, 0.2); } .searchBtn .searchIcon { font-size: 40rpx; background: transparent; font-weight: 600; color: #70ac9e; border-radius: 50%; } .swiperContainer { margin-top: 300rpx; width: 100%; height: 500rpx; } .swiperContainer .dailySentenceWrapper { width: 90%; height: 500rpx; margin-left: auto; margin-right: auto; display: flex; flex-direction: column; justify-content: center; align-items: center; } .swiperContainer .dailySentenceWrapper .content { width: 100%; font-size: 42rpx; font-weight: 800; font-family: 'Microsoft YaHei'; text-align: center; color: #333333; margin-bottom: 20rpx; } .swiperContainer .dailySentenceWrapper .voice { width: 50rpx; height: 50rpx; font-size: 40rpx; line-height: 50rpx; text-align: center; color: #8a8a8a; margin-top: -10rpx; margin-bottom: 10rpx; } .swiperContainer .dailySentenceWrapper .translation { width: 100%; height: 60rpx; font-size: 32rpx; font-weight: 800; font-family: 'Microsoft YaHei'; color: #4A4A4A; text-align: center; } .btnWrapper { margin-top: 100rpx; width: 100%; height: 140rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; } .btnWrapper .loginBtn { width: 50%; height: 100rpx; background-color: #90ced3; color: #FFFFFF; font-size: 40rpx; line-height: 100rpx; text-align: center; border-radius: 10rpx; font-weight: 800; box-shadow: 4rpx 4rpx 4rpx #e6e6e6; } .learnBtnWrapper { position: absolute; bottom: 100rpx; width: 100%; height: 150rpx; display: flex; justify-content: space-between; align-items: center; } .learnBtnWrapper .both { width: 38%; height: 135rpx; display: flex; justify-content: center; flex-direction: column; padding-left: 40rpx; border-radius: 10rpx; box-shadow: 4rpx 4rpx 4rpx #e6e6e6; } .learnBtnWrapper .both .text { font-size: 42rpx; color: #515151; font-weight: 800; } .learnBtnWrapper .both .number { font-size: 32rpx; color: #fa995d; font-weight: 700; } .learnBtnWrapper .forLearn { background-image: linear-gradient(to bottom, #ffc8cb, #FFFFFF); margin-left: 35rpx; } .learnBtnWrapper .forReview { background-image: linear-gradient(to bottom, #e4d1fe, #FFFFFF); background-image: linear-gradient(to bottom, #87cafe, #FFFFFF); margin-right: 35rpx; } .wasTaped { opacity: 0.7; } .mask { position: absolute; top: 0; left: 0; width: 750rpx; height: 1200rpx; z-index: 80; background-color: rgba(0, 0, 0, 0.7); } .changeBookWrapper { width: 750rpx; height: 600rpx; margin-top: 50rpx; position: relative; z-index: 101; } .changeBookWrapper .book { width: 750rpx; height: 160rpx; display: flex; justify-content: center; align-items: center; position: relative; margin-bottom: 10rpx; } .changeBookWrapper .book .bookCover { margin-left: 20rpx; margin-right: 40rpx; width: 106rpx; height: 140rpx; background-color: #2586e5; background-color: #6995c2; border-radius: 10rpx; } .changeBookWrapper .book .bookCover .name { width: 28rpx; height: 100rpx; font-size: 28rpx; color: #ffffff; margin-left: 10rpx; margin-top: 10rpx; font-weight: 600; } .changeBookWrapper .book .info { width: 70%; height: 160rpx; position: relative; font-weight: 600; } .changeBookWrapper .book .info .bookName { color: #757575; font-size: 28rpx; margin-top: 10rpx; font-weight: 700; } .changeBookWrapper .book .info .des { margin-top: 10rpx; font-size: 22rpx; color: #8a8a8a; } .changeBookWrapper .book .info .total { position: absolute; bottom: 10rpx; font-size: 22rpx; color: #8a8a8a; } .changeBookWrapper .book .info .total .num { font-size: 26rpx; } .changeBookWrapper .wasTaped { opacity: 1; background-color: rgba(150, 150, 150, 0.1); } ================================================ FILE: miniprogram/pages/learning/learning.js ================================================ // pages/learning/learning.js import regeneratorRuntime, { async } from '../../lib/runtime/runtime'; const rescontent = require("../../utils/response_content.js") const wordApi = require("../../utils/wordApi.js") const word_utils = require("../../utils/word_utils.js") const color = require("../../utils/color.js") const app = getApp() // const innerAudioContext = wx.createInnerAudioContext({ useWebAudioImplement: true }) let mode = { chooseTrans: { wordMode: 0, contentMode: 0, controlMode: 0 }, // 看词选义 recallTrans: { wordMode: 0, contentMode: 2, controlMode: 1 }, // 看词识义 recallWord: { wordMode: 1, contentMode: 1, controlMode: 1 }, // 看义识词 all: { wordMode: 0, contentMode: 1, controlMode: 3 }, // 不做遮挡 // 如果不倒计时,会在init里进行调整,故没有用const声明 } let insertIndex = 4 let listMinLength = 4 Page({ /** * 页面的初始数据 */ data: { colorType: 0, learnedNum: 0, learnNum: 0, wordDetail: {}, repeatTimes: 0, thisWordRepeatTime: 1, wordMode: 2, contentMode: 3, controlMode: 2, // 选择题相关 wrongTransWordList: [], choiceOrder: [], choiceBgList: [], // 倒计时用到 wordTimingConfig: {}, wordTimingReset: false, wordTimingStop: false, contentTimingConfig: {}, contentTimingReset: false, contentTimingStop: false, // innerAudioContextIndex: 0, isInNotebook: false, isBtnActive: false, learnDone: false, }, settings: {}, wordDetailList: [], wordLearningRecord: [], control: { // 当前&下一个词汇在原数组中下标 nowIndex: -1, nextIndex: -1, // 正确选项的下标 rightIndex: -1, // 单词音频播放器 innerAudioContext: undefined, // 倒计时模块是否初始化 isWordTimingInit: false, isContentTimingInit: false, // 选择题显示答案后停留计时器 isShowAllTimerSet: false, showAllTimer: -1, // 学习队列 unLearnedList: undefined, repeatOnce: undefined, repeatTwice: undefined, repeatThree: undefined, learnedList: undefined, queNameList: [], modeList: undefined, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { wx.setNavigationBarTitle({ title: '学习', }) this.init() this.initLearningData() }, init() { wx.enableAlertBeforeUnload({ message: '现在退出将导致学习数据丢失哦', success: () => { console.log('success') }, fail: () => { console.log('fail') }, }) // 初始化页面颜色 let colorType = Math.floor(Math.random() * color.colorList.length) wx.setNavigationBarColor({ backgroundColor: color.colorList[colorType], frontColor: '#ffffff', }) // 初始化设置 let userSettings = app.globalData.userInfo.settings let settings = {} settings.repeat_times = (!(userSettings.learn_repeat_t)) ? 3 : userSettings.learn_repeat_t settings.group_size = (!(userSettings.group_size)) ? 20 : userSettings.group_size settings.first_mode = (!(userSettings.learn_first_m)) ? 'chooseTrans' : userSettings.learn_first_m settings.second_mode = (settings.repeat_times >= 2 && !(userSettings.learn_second_m)) ? 'recallTrans' : userSettings.learn_second_m settings.third_mode = (settings.repeat_times >= 3 && !(userSettings.learn_third_m)) ? 'recallWord' : userSettings.learn_third_m settings.fourth_mode = (settings.repeat_times == 4 && !(userSettings.learn_fourth_m)) ? 'recallTrans' : userSettings.learn_fourth_m settings.timing = (userSettings.timing === undefined) ? true : userSettings.timing settings.timing_duration = (userSettings.timing_duration === undefined) ? 1500 : userSettings.timing_duration settings.autoplay = (userSettings.autoplay === undefined) ? true : userSettings.autoplay this.settings = settings let queNameList = ['unLearnedList', 'repeatOnce', 'repeatTwice', 'repeatThree', 'learnedList'] for (let i = settings.repeat_times; i < 4; i++) queNameList[i] = 'learnedList' this.control.queNameList = queNameList // 初始化显示内容组合 let modeList = [] if (!(settings.timing)) { mode.recallTrans.contentMode = 3 mode.recallWord.wordMode = 2 } modeList.push(settings.first_mode) if (settings.repeat_times >= 2) modeList.push(settings.second_mode) if (settings.repeat_times >= 3) modeList.push(settings.third_mode) if (settings.repeat_times == 4) modeList.push(settings.fourth_mode) this.control.modeList = modeList // 检查题型是否包含“选义”题,包含则需要获取混淆选项 let chooseTransIndex = modeList.indexOf('chooseTrans') this.settings.sample = (chooseTransIndex != -1) ? true : false this.setData({ colorType, repeatTimes: settings.repeat_times, }) }, async initLearningData() { console.log('before getting data', new Date().getTime()) let learnDataRes = await wordApi.getLearningData({ user_id: app.globalData.userInfo.user_id, wd_bk_id: app.globalData.userInfo.l_book_id, groupSize: this.settings.group_size, sample: this.settings.sample, }) // wx.setStorageSync('wordDetailList', learnDataRes.data) let wordDetailList = learnDataRes.data // let wordDetailList = wx.getStorageSync('wordDetailList') wordDetailList = word_utils.batchHandleWordDetal(wordDetailList, { getShortTrans: true }) console.log(wordDetailList) console.log('after handling data', new Date().getTime()) let wordLearningRecord = [] let unLearnedList = [] let repeatOnce = this.settings.repeat_times >= 2 ? [] : undefined let repeatTwice = this.settings.repeat_times >= 3 ? [] : undefined let repeatThree = this.settings.repeat_times == 4 ? [] : undefined for (let i = 0; i < wordDetailList.length; i++) { wordDetailList[i].innerAudioContext = wx.createInnerAudioContext({ useWebAudioImplement: true }) wordDetailList[i].innerAudioContext.src = wordDetailList[i].voiceUrl wordLearningRecord.push({ word_id: wordDetailList[i].word_id, repeatTimes: 0, reStartTimes: 0, master: false, }) // 云端会将有学习过的记录一起返回,下面将已经学习过的词在词汇数组中的索引根据上次学习的重复次数添加到对应学习队列 // 并将学习时重复次数添加入当前页面的记录,而reStartTimes等则重置 if (!(wordDetailList[i].learning_record) || JSON.stringify(wordDetailList[i].learning_record) == "{}" || this.settings.repeat_times == 1) { unLearnedList.push(i) } else if (wordDetailList[i].learning_record.repeatTimes == 1) { // 要求重复次数不为1的话,则至少为2,这里无需再判断 wordLearningRecord[i].repeatTimes = 1 repeatOnce.push(i) } else if (wordDetailList[i].learning_record.repeatTimes == 2) { if (this.settings.repeat_times == 2) { wordLearningRecord[i].repeatTimes = 1 repeatOnce.push(i) } else { wordLearningRecord[i].repeatTimes = 2 repeatTwice.push(i) } } else if (wordDetailList[i].learning_record.repeatTimes == 3) { if (this.settings.repeat_times == 2) { wordLearningRecord[i].repeatTimes = 1 repeatOnce.push(i) } else if (this.settings.repeat_times == 3) { wordLearningRecord[i].repeatTimes = 2 repeatTwice.push(i) } else { wordLearningRecord[i].repeatTimes = 3 repeatThree.push(i) } } } this.wordDetailList = wordDetailList this.wordLearningRecord = wordLearningRecord this.control.unLearnedList = unLearnedList this.control.repeatOnce = repeatOnce this.control.repeatTwice = repeatTwice this.control.repeatThree = repeatThree this.control.learnedList = [] this.setData({ learnNum: wordDetailList.length < this.settings.group_size ? wordDetailList.length : this.settings.group_size }) // 将未学习的队列的第一项“放出来”学习 let nowIndex = this.control.unLearnedList.shift() this.showNextWord(nowIndex) }, // 生成干扰项数组(最后一项为正确答案),生成用于打乱和标记背景颜色的数组以及正确选项索引 getWrongTrans(nowIndex) { if (!(nowIndex)) nowIndex = this.control.nowIndex let numList = word_utils.randNumList(8, 3) let wrongTransWordList = [] for (let j = 0; j < numList.length; j++) { wrongTransWordList.push(this.wordDetailList[nowIndex].sample_list[numList[j]]) } wrongTransWordList.push(this.wordDetailList[nowIndex].sample_list[9]) let choiceOrder = [0, 1, 2, 3] choiceOrder = word_utils.randArr(choiceOrder) let rightIndex = choiceOrder.indexOf(3) let choiceBgList = ['', '', '', ''] // choiceBgList[rightIndex] = 'rightchoice' // choiceBgList[(rightIndex + 1) % 4] = 'falsechoice' this.control.rightIndex = rightIndex this.setData({ wrongTransWordList, choiceOrder, choiceBgList, }) }, initTiming(type = 'content') { let colorType = this.data.colorType let config = { canvasSize: { width: 80, height: 80 }, percent: 100, barStyle: [ { width: 8, fillStyle: '#f6f6f6' }, { width: 8, animate: true, fillStyle: color.deeperColorList[colorType], lineCap: 'round' }], totalTime: this.settings.timing_duration, } if (type == 'content') { this.setData({ contentTimingConfig: config, contentTimingReset: false, contentTimingStop: false, }) this.control.isContentTimingInit = true } else if (type == 'word') { this.setData({ wordTimingConfig: config, wordTimingReset: false, wordTimingStop: false, }) this.control.isWordTimingInit = true } // this.resetCanvasFunc() }, playVoice() { this.control.innerAudioContext.stop() this.control.innerAudioContext.play() // this.wordDetailList[this.data.innerAudioContextIndex].innerAudioContext.stop() // this.wordDetailList[this.data.innerAudioContextIndex].innerAudioContext.play() }, checkChoice(e) { this.setData({ isBtnActive: false }) // console.log(e) let thisChoice = e.currentTarget.dataset.index let rightIndex = this.control.rightIndex // let choiceOrder = this.data.choiceOrder let choiceBgList = ['', '', '', ''] choiceBgList[rightIndex] = 'rightChoice' // 如果显示答案的倒计时已经设置了,则“加速”,同时进行错误选项的检测 if (this.control.isShowAllTimerSet) { if (thisChoice != rightIndex) choiceBgList[thisChoice] = 'falseChoice' this.setData({ contentMode: 1, controlMode: 3, choiceBgList, isBtnActive: true }) clearTimeout(this.control.showAllTimer) this.control.isShowAllTimerSet = false this.checkDone() return } let nowIndex = this.control.nowIndex let nowRepeatTimes = this.wordLearningRecord[nowIndex].repeatTimes // let queNameList = ['unLearnedList', 'repeatOnce', 'repeatTwice', 'repeatThree', 'learnedList'] // for (let i = this.settings.repeat_times; i < 4; i++) queNameList[i] = 'learnedList' if (thisChoice == rightIndex) { this.wordLearningRecord[nowIndex].repeatTimes += 1 // this.control.repeatOnce.push(nowIndex) this.control[this.control.queNameList[this.wordLearningRecord[nowIndex].repeatTimes]].push(nowIndex) if (this.wordLearningRecord[nowIndex].repeatTimes >= this.settings.repeat_times) this.updateLearned() } else { choiceBgList[thisChoice] = 'falseChoice' if (this.wordLearningRecord[nowIndex].reStartTimes >= 3) { this.control[this.control.queNameList[this.wordLearningRecord[nowIndex].repeatTimes]].splice(insertIndex, 0, nowIndex) } else { this.wordLearningRecord[nowIndex].reStartTimes += 1 this.wordLearningRecord[nowIndex].repeatTimes = 0 this.control['unLearnedList'].splice(insertIndex, 0, nowIndex) } } this.setData({ choiceBgList, thisWordRepeatTime: this.wordLearningRecord[nowIndex].repeatTimes, }) this.control.nextIndex = this.getNextIndex(nowRepeatTimes) // 设置1s之后显示详情 let _this = this this.control.isShowAllTimerSet = true this.control.showAllTimer = setTimeout(function () { _this.setData({ contentMode: 1, controlMode: 3, }) _this.control.isShowAllTimerSet = false _this.checkDone() }, 1000) this.setData({ isBtnActive: true }) }, showAnswer() { this.setData({ isBtnActive: false }) // 如果显示答案的倒计时已经设置了,则“加速” if (this.control.isShowAllTimerSet) { clearTimeout(this.control.showAllTimer) this.setData({ contentMode: 1, controlMode: 3, isBtnActive: true, }) this.control.isShowAllTimerSet = false this.checkDone() return } let nowIndex = this.control.nowIndex let nowRepeatTimes = this.wordLearningRecord[nowIndex].repeatTimes let rightIndex = this.control.rightIndex let choiceBgList = ['', '', '', ''] choiceBgList[rightIndex] = 'rightChoice' // let queNameList = ['unLearnedList', 'repeatOnce', 'repeatTwice', 'repeatThree', 'learnedList'] // for (let i = this.settings.repeat_times; i < 4; i++) queNameList[i] = 'learnedList' if (this.wordLearningRecord[nowIndex].reStartTimes >= 3) { this.control[this.control.queNameList[this.wordLearningRecord[nowIndex].repeatTimes]].splice(insertIndex, 0, nowIndex) } else { this.wordLearningRecord[nowIndex].reStartTimes += 1 this.wordLearningRecord[nowIndex].repeatTimes = 0 this.control['unLearnedList'].splice(insertIndex, 0, nowIndex) } this.setData({ choiceBgList, thisWordRepeatTime: this.wordLearningRecord[nowIndex].repeatTimes, }) // this.control.unLearnedList.splice(2, 0, nowIndex) // 如果数组长度超出2则会自动加在末尾 this.control.nextIndex = this.getNextIndex(nowRepeatTimes) // 设置1s之后显示详情 let _this = this this.control.isShowAllTimerSet = true this.control.showAllTimer = setTimeout(function () { _this.setData({ contentMode: 1, controlMode: 3, }) _this.control.isShowAllTimerSet = false }, 1000) this.setData({ isBtnActive: true }) }, setAsKnown() { this.setData({ isBtnActive: false }) // 正常标记为认识 let nowIndex = this.control.nowIndex this.wordLearningRecord[nowIndex].repeatTimes += 1 // let queNameList = ['unLearnedList', 'repeatOnce', 'repeatTwice', 'repeatThree', 'learnedList'] // for (let i = this.settings.repeat_times; i < 4; i++) queNameList[i] = 'learnedList' this.control[this.control.queNameList[this.wordLearningRecord[nowIndex].repeatTimes]].push(nowIndex) if (this.wordLearningRecord[nowIndex].repeatTimes >= this.settings.repeat_times) this.updateLearned() this.control.nextIndex = this.getNextIndex(this.wordLearningRecord[nowIndex].repeatTimes - 1) // 更改显示 if (this.data.contentMode != 1) { this.setData({ contentTimingStop: true, controlMode: 2, thisWordRepeatTime: this.wordLearningRecord[nowIndex].repeatTimes, }) this.setData({ contentMode: 1, isBtnActive: true, }) this.checkDone() } else if (this.data.wordMode != 0) { this.setData({ wordTimingStop: true, controlMode: 2, thisWordRepeatTime: this.wordLearningRecord[nowIndex].repeatTimes, }) this.setData({ wordMode: 0, isBtnActive: true, }) this.checkDone() } else { this.showNextWord() } }, setAsUnknown() { this.setData({ isBtnActive: false }) let nowIndex = this.control.nowIndex let nowRepeatTimes = this.wordLearningRecord[nowIndex].repeatTimes // let queNameList = ['unLearnedList', 'repeatOnce', 'repeatTwice', 'repeatThree', 'learnedList'] // for (let i = this.settings.repeat_times; i < 4; i++) queNameList[i] = 'learnedList' if (this.wordLearningRecord[nowIndex].reStartTimes >= 3) { this.control[this.control.queNameList[this.wordLearningRecord[nowIndex].repeatTimes]].splice(insertIndex, 0, nowIndex) } else { this.wordLearningRecord[nowIndex].reStartTimes += 1 this.wordLearningRecord[nowIndex].repeatTimes = 0 this.control['unLearnedList'].splice(insertIndex, 0, nowIndex) } this.control.nextIndex = this.getNextIndex(nowRepeatTimes) // 更改显示 if (this.data.contentMode != 1) { this.setData({ contentTimingStop: true, controlMode: 3, thisWordRepeatTime: this.wordLearningRecord[nowIndex].repeatTimes, }) this.setData({ contentMode: 1, isBtnActive: true, }) } else if (this.data.wordMode != 0) { this.setData({ wordTimingStop: true, controlMode: 3, thisWordRepeatTime: this.wordLearningRecord[nowIndex].repeatTimes, }) this.setData({ wordMode: 0, isBtnActive: true, }) } else { this.showNextWord() } }, changeToUnknown() { wx.showToast({ title: '已标记为不认识', icon: 'none', duration: 1000, }) let nowIndex = this.control.nowIndex // 现在repeatTimes是加过1后的,也在加过1后对应次数的队列里,在对应列队中找到该单词(索引)并删除加到未学习队列中/次数太多就只退一级 // let queNameList = ['unLearnedList', 'repeatOnce', 'repeatTwice', 'repeatThree', 'learnedList'] // for (let i = this.settings.repeat_times; i < 4; i++) queNameList[i] = 'learnedList' let nowRepeatTimes = this.wordLearningRecord[nowIndex].repeatTimes let wrongPlaceIndex = this.control[this.control.queNameList[nowRepeatTimes]].indexOf(nowIndex) let removedWord = -1 if (wrongPlaceIndex != -1) removedWord = this.control[this.control.queNameList[nowRepeatTimes]].splice(wrongPlaceIndex, 1) if (removedWord != nowIndex && removedWord != -1) this.control[this.control.queNameList[nowRepeatTimes]].splice(wrongPlaceIndex, 0, removedWord) if (this.wordLearningRecord[nowIndex].reStartTimes >= 3) { this.wordLearningRecord[nowIndex].repeatTimes -= 1 this.control[this.control.queNameList[this.wordLearningRecord[nowIndex].repeatTimes]].splice(insertIndex, 0, nowIndex) } else { this.wordLearningRecord[nowIndex].reStartTimes += 1 this.wordLearningRecord[nowIndex].repeatTimes = 0 this.control['unLearnedList'].splice(insertIndex, 0, nowIndex) } this.showNextWord() }, toNextWord() { // 由于页面事件的第一个参数默认是event,与showNextWord默认参数有冲突,故用此函数间接调用 this.setData({ isBtnActive: false }) this.showNextWord() }, getNextIndex(thisWordRepeatTime) { // 获取下一个单词的索引,单词顺序是 未学过的->学过一次的->(学过两次的->学过三次的->)未学过的 // 先检查该轮到的队列的长度是不是超过listMinLength(如果是1的话,就会出现刚学完第一次又从学过一次的队列中取出来学第二次的情况),小于listMinLength则要暂时跳过该队列,循环repeat_times次 // 最后一次不满足相当于所有队列都不满足,且没有break的话出来的i会再加一次1,相加一取余,相当于又回到第一次检测的队列(即没人救得了(length>listMinLength)就还是自己硬扛) let i = 0 for (i; i < this.settings.repeat_times; i++) { if (this.control[this.control.queNameList[(thisWordRepeatTime + i + 1) % (this.settings.repeat_times)]].length > listMinLength) { break } } thisWordRepeatTime = (thisWordRepeatTime + i) % (this.settings.repeat_times) let nextIndex = -1 if (thisWordRepeatTime == 0) { if (this.settings.repeat_times >= 2 && this.control.repeatOnce.length > 0) { nextIndex = this.control.repeatOnce.shift() } else if (this.settings.repeat_times >= 3 && this.control.repeatTwice.length > 0) { nextIndex = this.control.repeatTwice.shift() } else if (this.settings.repeat_times == 4 && this.control.repeatThree.length > 0) { nextIndex = this.control.repeatThree.shift() } else if (this.control.unLearnedList.length > 0) { nextIndex = this.control.unLearnedList.shift() } } else if (thisWordRepeatTime == 1) { if (this.settings.repeat_times >= 3 && this.control.repeatTwice.length > 0) { nextIndex = this.control.repeatTwice.shift() } else if (this.settings.repeat_times == 4 && this.control.repeatThree.length > 0) { nextIndex = this.control.repeatThree.shift() } else if (this.control.unLearnedList.length > 0) { nextIndex = this.control.unLearnedList.shift() } else if (this.settings.repeat_times >= 2 && this.control.repeatOnce.length > 0) { nextIndex = this.control.repeatOnce.shift() } } else if (thisWordRepeatTime == 2) { if (this.settings.repeat_times == 4 && this.control.repeatThree.length > 0) { nextIndex = this.control.repeatThree.shift() } else if (this.control.unLearnedList.length > 0) { nextIndex = this.control.unLearnedList.shift() } else if (this.settings.repeat_times >= 2 && this.control.repeatOnce.length > 0) { nextIndex = this.control.repeatOnce.shift() } else if (this.settings.repeat_times >= 3 && this.control.repeatTwice.length > 0) { nextIndex = this.control.repeatTwice.shift() } } else if (thisWordRepeatTime == 3) { if (this.control.unLearnedList.length > 0) { nextIndex = this.control.unLearnedList.shift() } else if (this.settings.repeat_times == 2 && this.control.repeatOnce.length > 0) { nextIndex = this.control.repeatOnce.shift() } else if (this.settings.repeat_times == 3 && this.control.repeatTwice.length > 0) { nextIndex = this.control.repeatTwice.shift() } else if (this.settings.repeat_times == 4 && this.control.repeatThree.length > 0) { nextIndex = this.control.repeatThree.shift() } } if (nextIndex == -1) console.log('GetNextIndex Err!') return nextIndex }, showNextWord(nextIndex) { if (this.checkDone()) return // 获取单词索引后,根据该单词的学习记录设置显示内容 if (!(nextIndex) && nextIndex != 0) nextIndex = this.control.nextIndex console.log('nextIndex:', nextIndex) if (nextIndex == -1) console.log('学完本组单词啦~') this.control.nowIndex = nextIndex let repeatTimes = this.wordLearningRecord[nextIndex].repeatTimes let modeDetail = mode[this.control.modeList[repeatTimes]] if (modeDetail.contentMode == 0) this.getWrongTrans(nextIndex) if (modeDetail.wordMode == 1) { if (!(this.control.isWordTimingInit)) { this.initTiming('word') } else { // this.resetCanvas('word') } } if (modeDetail.contentMode == 2) { if (!(this.control.isContentTimingInit)) { this.initTiming('content') } else { // this.resetCanvas('content') } } // this.setData(modeDetail) this.setData({ ...modeDetail, wordDetail: { word: this.wordDetailList[nextIndex].word, word_id: this.wordDetailList[nextIndex].word_id, phonetic: this.wordDetailList[nextIndex].phonetic, shortTrans: this.wordDetailList[nextIndex].shortTrans, }, thisWordRepeatTime: this.wordLearningRecord[nextIndex].repeatTimes, contentTimingStop: false, wordTimingStop: false, isInNotebook: this.wordDetailList[nextIndex].in_notebook ? true : false, isBtnActive: true, }) if (this.control.innerAudioContext) this.control.innerAudioContext.stop() this.control.innerAudioContext = this.wordDetailList[nextIndex].innerAudioContext if (this.settings.autoplay && modeDetail.wordMode == 0) this.control.innerAudioContext.play() }, // 实际重新显示的时候会再次触发config内容更改(重新获取)从而再次触发重绘,无需手动设置reset resetCanvas(type = 'content') { if (type == 'content') { this.setData({ contentTimingReset: false, // contentTimingStop: false, }) this.setData({ contentTimingReset: true, }) } else if (type == 'word') { this.setData({ wordTimingReset: false, // wordTimingStop: false, }) this.setData({ wordTimingReset: true, }) } }, showTrans() { this.setData({ contentTimingStop: true, }) this.setData({ contentMode: 1, }) }, showWord() { this.setData({ wordTimingStop: true, }) if (this.settings.autoplay) this.control.innerAudioContext.play() this.setData({ wordMode: 0, }) }, timingOut(e) { // console.log('receive from myprogress', e) let type = e.currentTarget.dataset.type if (e.detail.timeout) { if (type == 'content') { if (this.data.contentMode == 2) { this.showTrans() } else { console.log('content倒计时没真正没关掉') } } if (type == 'word') { if (this.data.wordMode == 1) { this.showWord() } else { console.log('word倒计时没真正没关掉') } } } }, toDetail: function () { wx.navigateTo({ url: '../word_detail/word_detail?word_id=' + this.data.wordDetail.word_id + '&colorType=' + this.data.colorType, }) }, // 跳过当前环节/设置为已掌握 skip(e) { this.setData({ isBtnActive: false }) let type = e.currentTarget.dataset.type let nowIndex = this.control.nowIndex let repeatTimes = this.wordLearningRecord[nowIndex].repeatTimes if (repeatTimes == this.settings.repeat_times) { wx.showToast({ title: '该词已完成学习啦', icon: 'none', duration: 1000, }) if (type == 'master') this.wordLearningRecord[nowIndex].master = true this.setData({ isBtnActive: true }) return } let index = this.control[this.control.queNameList[repeatTimes]].indexOf(nowIndex) if (index != -1) this.control[this.control.queNameList[repeatTimes]].splice(index, 1) this.control.learnedList.push(this.control.nowIndex) this.wordLearningRecord[nowIndex].repeatTimes = this.settings.repeat_times if (type == 'master') this.wordLearningRecord[nowIndex].master = true this.control.nextIndex = this.getNextIndex(repeatTimes) this.setData({ thisWordRepeatTime: this.settings.repeat_times, ...mode.all, isBtnActive: true, }) let tips = (type == 'master') ? '已掌握' : '跳过该轮学习' wx.showToast({ title: `已将该词设置为${tips}`, icon: 'none', duration: 1000, }) if (this.updateLearned()) return this.setData({ isBtnActive: true }) }, // 调整是否添加到生词本 toggleAddToNB: async function () { this.setData({ isBtnActive: false }) let add = this.data.isInNotebook let res = await wordApi.toggleAddToNB({ user_id: app.globalData.userInfo.user_id, word_id: this.wordDetailList[this.control.nowIndex].word_id, add: !add, }) console.log(res) if (res.data) { this.wordDetailList[this.control.nowIndex].in_notebook = !add this.setData({ isInNotebook: !add, isBtnActive: true }) } else { wx.showToast({ title: '操作出错,请重试', icon: 'none', duration: 1000, }) this.setData({ isBtnActive: true }) } }, updateLearned() { let learnedNum = this.control.learnedList.length this.setData({ learnedNum }) }, checkDone() { let learnedNum = this.control.learnedList.length if (learnedNum != this.data.learnedNum) this.setData({ learnedNum }) if (learnedNum >= this.data.learnNum) { console.log('本组单词学习完毕啦~') this.setData({ isBtnActive: false, learnDone: true, }) this.sendLearningData() return true } return false }, async sendLearningData() { wx.showLoading({ title: '学习数据上传中...', mask: true, }) console.log('sendLearningData') // 生成已完成的单词学习记录 let now = new Date() now.setMilliseconds(0) now.setSeconds(0) now.setMinutes(0) now.setHours(0) let last_l = now.getTime() // let next_l = last_l + 86400000 let learnedRecord = [] let user_id = app.globalData.userInfo.user_id for (let i = 0; i < this.control.learnedList.length; i++) { learnedRecord.push({ word_id: this.wordLearningRecord[this.control.learnedList[i]].word_id, user_id, // last_l, // next_l, // NOI: 1, // EF: "2.5", // next_n: 0, master: this.wordLearningRecord[this.control.learnedList[i]].master, }) } // 生成正在学习的单词队列学习记录 let learningRecord = [] for (let j = 1; j < this.settings.repeat_times; j++) { let queName = this.control.queNameList[j] for (let k = 0; k < this.control[queName].length; k++) { learningRecord.push({ word_id: this.wordLearningRecord[this.control[queName][k]].word_id, user_id, learn_time: last_l, repeatTimes: k, }) } } console.log('learningRecord', learningRecord) let res = await wordApi.addLearningRecord({ learnedRecord, learningRecord, user_id: app.globalData.userInfo.user_id }) console.log('addLearningRecord res', res) app.globalData.updatedForIndex = true app.globalData.updatedForOverview = true wx.hideLoading() wx.disableAlertBeforeUnload() if (res.errorcode != rescontent.SUCCESS.errorcode) { wx.showToast({ title: '很抱歉,数据上传出错', icon: 'none', duration: 1000, }) } }, goBack() { wx.navigateBack({ delta: 1, }) }, reInit() { // 数据恢复初始状态 this.settings = {} this.wordDetailList = [] this.wordLearningRecord = [] this.control = { // 当前&下一个词汇在原数组中下标 nowIndex: -1, nextIndex: -1, // 正确选项的下标 rightIndex: -1, // 单词音频播放器 innerAudioContext: undefined, // 倒计时模块是否初始化 // isWordTimingInit: this.control.isWordTimingInit, // isContentTimingInit: this.control.isContentTimingInit, isWordTimingInit: false, isContentTimingInit: false, // 选择题显示答案后停留计时器 isShowAllTimerSet: false, showAllTimer: -1, // 学习队列 unLearnedList: undefined, repeatOnce: undefined, repeatTwice: undefined, repeatThree: undefined, learnedList: undefined, queNameList: [], modeList: undefined, } this.setData({ learnedNum: 0, learnNum: 0, wordDetail: {}, repeatTimes: 0, thisWordRepeatTime: 1, wordMode: 2, contentMode: 3, controlMode: 2, learnDone: false, }) this.init() this.initLearningData() }, // 调试用 showInfo(e) { let infoName = e.currentTarget.dataset.name console.log(infoName, ':', this[infoName]) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { console.log('onReady') }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { console.log('disableAlertBeforeUnload') wx.disableAlertBeforeUnload() }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } }) ================================================ FILE: miniprogram/pages/learning/learning.json ================================================ { "usingComponents": { "mpProgress": "../../components/mp-progress/mp-progress" } } ================================================ FILE: miniprogram/pages/learning/learning.less ================================================ .bgWrapper { width: 100%; height: 100%; position: fixed; z-index: -100; // background-image: linear-gradient(to bottom, #ffb284, #FFFFFF); } .topline { width: 100%; height: 60rpx; display: flex; justify-content: center; align-items: center; .progress { font-size: 32rpx; color: #f6f6f6; } } .wordWrapper { margin-top: 30rpx; width: 100%; height: 500rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 1; .word { font-size: 75rpx; font-weight: 700; // color: #ffffff; margin-bottom: 10rpx; } .repeatTime { margin-bottom: 20rpx; width: 150rpx; height: 16rpx; display: flex; justify-content: center; align-items: center; .times { width: 20rpx; height: 10rpx; border-radius: 5rpx; margin-left: 16rpx; box-shadow: 2rpx 2rpx 4rpx rgba(0, 0, 0, 0.1); } .first { margin-left: 0rpx; } .bg { background-color: #ffffff; } } .pron { font-size: 34rpx; font-family: Arial, Helvetica, sans-serif; // font-weight: 700; color: #ffffff; } .timing { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; flex-direction: column; .progress { width: 100rpx; height: 100rpx; } .resetbtn { margin-top: 20rpx; } .model { width: 300rpx; height: 70rpx; opacity: 0.3; border-radius: 16rpx; box-shadow: 2rpx 2rpx 15rpx rgba(0, 0, 0, 0.1), -2rpx -2rpx 15rpx rgba(0, 0, 0, 0.1); background-image: linear-gradient(to right, #cdcdcd, #ffffff); } .phonetic { margin-top: 20rpx; width: 150rpx; height: 50rpx; border-radius: 10rpx; } } } .content { // margin-top: 50rpx; position: absolute; bottom: 260rpx; width: 100%; height: 650rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 2; .chooseCorrect { // width: 100%; .choice { margin-bottom: 15rpx; display: flex; // align-items: flex-end; flex-direction: column; justify-content: center; padding-left: 30rpx; height: 135rpx; width: 670rpx; border-radius: 15rpx; box-shadow: 2rpx 2rpx 5rpx rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.5); .pos { font-size: 24rpx; line-height: 30rpx; font-weight: 600; color: #a0a0a0; min-width: 36rpx; margin-right: 10rpx } .meaning { font-size: 32rpx; line-height: 40rpx; font-weight: 600; color: #757575; // height: 40rpx; } } .rightChoice { // background-color: #a8e7ca; background-color: rgb(177, 223, 201); } .falseChoice { background-color: #fdbaba; } .wasTaped { background-color: rgba(150, 150, 150, 0.4); } } .translationWrapper { max-width: 85%; .transRow { margin-bottom: 20rpx; display: flex; align-items: flex-end; // height: 42rpx; .pos { font-size: 28rpx; line-height: 30rpx; font-weight: 600; color: #a0a0a0; min-width: 36rpx; margin-right: 10rpx } .meaning { font-size: 36rpx; line-height: 40rpx; font-weight: 600; color: #757575; // height: 40rpx; } .moreBtn { width: 150rpx; text-align: center; font-size: 28rpx; color: #a0a0a0; margin-left: auto; margin-right: auto; } .tapedText { color: #757575; } } } .timing { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; flex-direction: column; .progress { width: 100rpx; height: 100rpx; } .resetbtn { margin-top: 20rpx; } .model { width: 350rpx; height: 50rpx; margin-bottom: 20rpx; border-radius: 10rpx; box-shadow: 2rpx 2rpx 15rpx rgba(0, 0, 0, 0.1), -2rpx -2rpx 15rpx rgba(0, 0, 0, 0.1); background-image: linear-gradient(to right, #cdcdcd, #ffffff); opacity: 0.3; } } } .control { position: absolute; bottom: 20rpx; width: 100%; height: 230rpx; display: flex; align-items: center; justify-content: center; flex-direction: column; .btn { height: 120rpx; border-radius: 15rpx; font-weight: 700; display: flex; flex-direction: column; align-items: center; justify-content: center; .text { font-size: 34rpx; } .decorate { margin-top: 10rpx; width: 30rpx; height: 10rpx; border-radius: 5rpx; } } .knowWrapper { width: 100%; display: flex; align-items: center; justify-content: center; .knowBtn { width: 330rpx; .notknowtext { color: #a0a0a0; } .dforNotKnow { background-color: #cdcdcd; } } .left { margin-right: 30rpx; } } .wasTaped { background-color: rgba(150, 150, 150, 0.1); } .answerBtn { width: 700rpx; .text { color: #a0a0a0; } .decorate { background-color: #cdcdcd; } } .nextBtn { width: 700rpx; } .bottomMenu { height: 80rpx; width: 100%; margin-top: 40rpx; margin-left: auto; margin-right: auto; display: flex; justify-content: space-around; align-items: center; .bottomBtn { width: 100rpx; height: 70rpx; font-size: 46rpx; font-weight: 600; color: #cdcdcd; // border-radius: 10rpx; // background-color: rgba(150, 150, 150, 0.1); line-height: 70rpx; text-align: center; } .icon-addToNB-yes { color: #fb6a00; } .wasTaped-bottom { color: #a0a0a0; } .wasTaped-bottom1 { filter: grayscale(20%); } } } .doneWrapper { width: 750rpx; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; position: fixed; z-index: 10; .text { font-size: 50rpx; font-weight: 700; margin-top: -100rpx; margin-bottom: 100rpx; } .btn { width: 300rpx; height: 80rpx; line-height: 80rpx; text-align: center; border-radius: 10rpx; border-radius: 40rpx; font-weight: 600; margin-bottom: 50rpx; font-size: 32rpx; } .back { background-color: rgba(150, 150, 150, 0.4); color: #a0a0a0; color: #ffffff; } .continue { color: #ffffff; } .wasTaped { opacity: 0.6; } } .test { position: absolute; top: 50rpx; right: 20rpx; display: flex; .showInfo { width: 150rpx; font-size: 28rpx; height: 36rpx; border-radius: 6rpx; background-color: #f6f6f6; padding: 0; margin-right: 20rpx; } } ================================================ FILE: miniprogram/pages/learning/learning.wxml ================================================ {{learnedNum}} / {{learnNum}} {{wordDetail.word}} / {{wordDetail.phonetic}} / {{wrongTransWordList[item].translation.pos}} {{wrongTransWordList[item].translation.meaning}} {{item.pos}} {{item.meaning}} 答案 认识 不认识 下一个 记错了 下一个 本组单词学习已完成 完成学习 继续学习 ================================================ FILE: miniprogram/pages/learning/learning.wxss ================================================ .bgWrapper { width: 100%; height: 100%; position: fixed; z-index: -100; } .topline { width: 100%; height: 60rpx; display: flex; justify-content: center; align-items: center; } .topline .progress { font-size: 32rpx; color: #f6f6f6; } .wordWrapper { margin-top: 30rpx; width: 100%; height: 500rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 1; } .wordWrapper .word { font-size: 75rpx; font-weight: 700; margin-bottom: 10rpx; } .wordWrapper .repeatTime { margin-bottom: 20rpx; width: 150rpx; height: 16rpx; display: flex; justify-content: center; align-items: center; } .wordWrapper .repeatTime .times { width: 20rpx; height: 10rpx; border-radius: 5rpx; margin-left: 16rpx; box-shadow: 2rpx 2rpx 4rpx rgba(0, 0, 0, 0.1); } .wordWrapper .repeatTime .first { margin-left: 0rpx; } .wordWrapper .repeatTime .bg { background-color: #ffffff; } .wordWrapper .pron { font-size: 34rpx; font-family: Arial, Helvetica, sans-serif; color: #ffffff; } .wordWrapper .timing { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; flex-direction: column; } .wordWrapper .timing .progress { width: 100rpx; height: 100rpx; } .wordWrapper .timing .resetbtn { margin-top: 20rpx; } .wordWrapper .timing .model { width: 300rpx; height: 70rpx; opacity: 0.3; border-radius: 16rpx; box-shadow: 2rpx 2rpx 15rpx rgba(0, 0, 0, 0.1), -2rpx -2rpx 15rpx rgba(0, 0, 0, 0.1); background-image: linear-gradient(to right, #cdcdcd, #ffffff); } .wordWrapper .timing .phonetic { margin-top: 20rpx; width: 150rpx; height: 50rpx; border-radius: 10rpx; } .content { position: absolute; bottom: 260rpx; width: 100%; height: 650rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 2; } .content .chooseCorrect .choice { margin-bottom: 15rpx; display: flex; flex-direction: column; justify-content: center; padding-left: 30rpx; height: 135rpx; width: 670rpx; border-radius: 15rpx; box-shadow: 2rpx 2rpx 5rpx rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.5); } .content .chooseCorrect .choice .pos { font-size: 24rpx; line-height: 30rpx; font-weight: 600; color: #a0a0a0; min-width: 36rpx; margin-right: 10rpx; } .content .chooseCorrect .choice .meaning { font-size: 32rpx; line-height: 40rpx; font-weight: 600; color: #757575; } .content .chooseCorrect .rightChoice { background-color: #b1dfc9; } .content .chooseCorrect .falseChoice { background-color: #fdbaba; } .content .chooseCorrect .wasTaped { background-color: rgba(150, 150, 150, 0.4); } .content .translationWrapper { max-width: 85%; } .content .translationWrapper .transRow { margin-bottom: 20rpx; display: flex; align-items: flex-end; } .content .translationWrapper .transRow .pos { font-size: 28rpx; line-height: 30rpx; font-weight: 600; color: #a0a0a0; min-width: 36rpx; margin-right: 10rpx; } .content .translationWrapper .transRow .meaning { font-size: 36rpx; line-height: 40rpx; font-weight: 600; color: #757575; } .content .translationWrapper .transRow .moreBtn { width: 150rpx; text-align: center; font-size: 28rpx; color: #a0a0a0; margin-left: auto; margin-right: auto; } .content .translationWrapper .transRow .tapedText { color: #757575; } .content .timing { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; flex-direction: column; } .content .timing .progress { width: 100rpx; height: 100rpx; } .content .timing .resetbtn { margin-top: 20rpx; } .content .timing .model { width: 350rpx; height: 50rpx; margin-bottom: 20rpx; border-radius: 10rpx; box-shadow: 2rpx 2rpx 15rpx rgba(0, 0, 0, 0.1), -2rpx -2rpx 15rpx rgba(0, 0, 0, 0.1); background-image: linear-gradient(to right, #cdcdcd, #ffffff); opacity: 0.3; } .control { position: absolute; bottom: 20rpx; width: 100%; height: 230rpx; display: flex; align-items: center; justify-content: center; flex-direction: column; } .control .btn { height: 120rpx; border-radius: 15rpx; font-weight: 700; display: flex; flex-direction: column; align-items: center; justify-content: center; } .control .btn .text { font-size: 34rpx; } .control .btn .decorate { margin-top: 10rpx; width: 30rpx; height: 10rpx; border-radius: 5rpx; } .control .knowWrapper { width: 100%; display: flex; align-items: center; justify-content: center; } .control .knowWrapper .knowBtn { width: 330rpx; } .control .knowWrapper .knowBtn .notknowtext { color: #a0a0a0; } .control .knowWrapper .knowBtn .dforNotKnow { background-color: #cdcdcd; } .control .knowWrapper .left { margin-right: 30rpx; } .control .wasTaped { background-color: rgba(150, 150, 150, 0.1); } .control .answerBtn { width: 700rpx; } .control .answerBtn .text { color: #a0a0a0; } .control .answerBtn .decorate { background-color: #cdcdcd; } .control .nextBtn { width: 700rpx; } .control .bottomMenu { height: 80rpx; width: 100%; margin-top: 40rpx; margin-left: auto; margin-right: auto; display: flex; justify-content: space-around; align-items: center; } .control .bottomMenu .bottomBtn { width: 100rpx; height: 70rpx; font-size: 46rpx; font-weight: 600; color: #cdcdcd; line-height: 70rpx; text-align: center; } .control .bottomMenu .icon-addToNB-yes { color: #fb6a00; } .control .bottomMenu .wasTaped-bottom { color: #a0a0a0; } .control .bottomMenu .wasTaped-bottom1 { filter: grayscale(20%); } .doneWrapper { width: 750rpx; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; position: fixed; z-index: 10; } .doneWrapper .text { font-size: 50rpx; font-weight: 700; margin-top: -100rpx; margin-bottom: 100rpx; } .doneWrapper .btn { width: 300rpx; height: 80rpx; line-height: 80rpx; text-align: center; border-radius: 10rpx; border-radius: 40rpx; font-weight: 600; margin-bottom: 50rpx; font-size: 32rpx; } .doneWrapper .back { background-color: rgba(150, 150, 150, 0.4); color: #a0a0a0; color: #ffffff; } .doneWrapper .continue { color: #ffffff; } .doneWrapper .wasTaped { opacity: 0.6; } .test { position: absolute; top: 50rpx; right: 20rpx; display: flex; } .test .showInfo { width: 150rpx; font-size: 28rpx; height: 36rpx; border-radius: 6rpx; background-color: #f6f6f6; padding: 0; margin-right: 20rpx; } ================================================ FILE: miniprogram/pages/login/login.js ================================================ //login.js const app = getApp() import regeneratorRuntime, { async } from '../../lib/runtime/runtime.js'; const { formatTime } = require('../../utils/format_time.js') const error_message = [ '', '请完成填写再重试', '账号或密码错误', '该账号已被注册', '两次输入密码不同', '用户名仅能包含数字、中英文和下划线', '用户名不能以下划线开头或结尾', '密码仅能包含数字、英文字母和下划线', '密码不能以下划线开头或结尾', ] const userApi = require("../../utils/userApi.js") const rescontent = require('../../utils/response_content.js') Page({ data: { isregister: false, errmsg: error_message, errtype: 0, }, user: { username: '', pwd: '', confirm_pwd: '', }, // isUsernameChecked: false, onLoad(options) { wx.setNavigationBarColor({ backgroundColor: '#d0e6a5', frontColor: '#ffffff', }) wx.setNavigationBarTitle({ title: '登录', }) }, //处理input内容变化时的时间 handleInput(e) { let inputtype = e.target.dataset.inputtype let value = e.detail.value this.user[inputtype] = value // if (inputtype == "username") { // if (this.data.isregister) { // this.isUsernameChecked = false // } // } // console.log(inputtype, this.user[inputtype]) }, async checkUsername() { let username = this.user.username if (username == '') { return false } if(!(this.checkUsernameVaild())) return false // console.log('check whether', username, 'have been registered') let res = await userApi.checkUsernameInDB({ username }) // console.log('checkUsername', res) if (!res.errorcode) { return false } if (res.data.isFind) { this.setErrType(3) return false } // this.isUsernameChecked = true return true }, checkUsernameVaild(register = true) { // 用户名合法性判断,只能包含字母、数字、中文、下划线且不能以下划线开头或结尾 // let exp1 = /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/ let username = this.user.username let exp1 = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/ let exp2 = /^(?!_)(?!.*?_$).+$/ if (!exp1.test(username)) { this.setErrType(register ? 5 : 2) return false } if (!exp2.test(username)) { this.setErrType(register ? 6 : 2) return false } return true }, checkPwd(register = true) { // 密码合法性判断,只能包含字母、数字、下划线且不能以下划线开头或结尾 let pwd = this.user.pwd let exp1 = /^[a-zA-Z0-9_]+$/ let exp2 = /^(?!_)(?!.*?_$).+$/ if (!exp1.test(pwd)) { this.setErrType(register ? 7 : 2) return false } if (!exp2.test(pwd)) { this.setErrType(register ? 8 : 2) return false } return true }, checkTwoPwd() { let pwd = this.user.pwd let confirm_pwd = this.user.confirm_pwd if (pwd != confirm_pwd) { this.setErrType(4) return false } return true }, checkEmptyField() { if (this.user.username != '' && this.user.pwd != '') { if (this.data.isregister) { if (this.user.confirm_pwd != '') { return true } } else { return true } } this.setErrType(1) return false }, changeType(e) { this.setData({ isregister: !(this.data.isregister), errtype: 0, }) this.user = { username: '', pwd: '', confirm_pwd: '', } // this.isUsernameChecked = false }, setErrType(errtype) { let _this = this this.setData({ errtype }) clearTimeout(this.timer) this.timer = setTimeout(() => { _this.setData({ errtype: 0 }) }, 1500) }, async login() { if (!(this.checkEmptyField()) || !(this.checkUsernameVaild(false)) || !(this.checkPwd(false))) { return } console.log('try to login') let username = this.user.username let pwd = this.user.pwd let res = await userApi.login({ username, pwd }) console.log(res) this.afterLogin(res) }, async register() { if (!(this.checkEmptyField()) || !(this.checkPwd()) || !(this.checkTwoPwd())) { return } // if (!(this.isUsernameChecked)) { let usernameOk = await this.checkUsername() if (!usernameOk) { return } // this.isUsernameChecked = true // } console.log('try to register') // return let username = this.user.username let pwd = this.user.pwd let res = await userApi.register({ username, pwd }) // console.log(res) this.afterLogin(res) }, async wxLogin() { console.log('login/register using wechat userinfo') let res = await userApi.getWxUserInfo() if (!res.userInfo) { return } let username = res.userInfo.nickName let avatar_pic = res.userInfo.avatarUrl let res1 = await userApi.wxLogin({ username, avatar_pic }) console.log(res1) this.afterLogin(res1) }, afterLogin(res) { let duration = 1000 if (res.errorcode == rescontent.LOGINERR.errorcode) { this.setErrType(2) return } else if (res.errorcode == rescontent.REGISTEROK.errorcode) { wx.showToast({ title: `注册成功`, icon: 'none', duration: duration, }) } else if (res.errorcode == rescontent.LOGINOK.errorcode) { let lastlogin = formatTime(res.data.last_login) wx.showToast({ title: `登录成功,上次登录时间 ${lastlogin}`, icon: 'none', duration: duration, }) } else { wx.showToast({ title: '服务出错,请重试', icon: 'none', duration: duration }) return } setTimeout(function () { app.globalData.isLogin = true app.globalData.userInfo = res.data app.globalData.updatedForIndex = true app.globalData.updatedForOverview = true let storageContent = { time: new Date().getTime(), info: res.data, } wx.setStorageSync('userInfo', storageContent) wx.navigateBack({ delta: 1, complete: (res) => { console.log('navigate back complete', res) }, }) }, duration) }, }) ================================================ FILE: miniprogram/pages/login/login.json ================================================ { "usingComponents": {} } ================================================ FILE: miniprogram/pages/login/login.less ================================================ .bgWrapper { width: 100%; height: 100%; position: absolute; z-index: -100; background-image: linear-gradient(to bottom, #d0e6a5, #FFFFFF); // -webkit-filter: blur(10px); // filter: blur(10px); .bg { margin-left: -15%; margin-top: -15%; width: 130%; height: 130%; } } .wrapper { width: 80%; height: 500rpx; margin-left: auto; margin-right: auto; margin-top: 300rpx; margin-bottom: auto; .title { margin-top: 30rpx; width: 100%; font-size: 56rpx; text-align: center; font-weight: 800; color: #819c4b; } .inputField { height: 70rpx; font-size: 34rpx; background-color: rgba(255, 255, 255, 0.7); padding-left: 20rpx; border: solid 4rpx #e2e2e2; } .username { margin-top: 40rpx; border-top-left-radius: 10rpx; border-top-right-radius: 10rpx; border-bottom: 2rpx solid #e2e2e2; } .middlePwd { border-top: 2rpx solid #e2e2e2; border-bottom: 2rpx solid #e2e2e2; margin-top: -2rpx; } .pwd { border-bottom-left-radius: 10rpx; border-bottom-right-radius: 10rpx; border-top: 2rpx solid #e2e2e2; margin-top: -2rpx; } .btnWrapper { margin-top: 10rpx; width: 100%; height: 40rpx; .changeBtn { width: 60rpx; height: 40rpx; font-size: 28rpx; line-height: 40rpx; color: #819c4b; font-weight: 500; } .loginBtn { margin-left: 10rpx; } .registerBtn { margin-right: 10rpx; } } .registerBtnWrapper { display: flex; justify-content: flex-end; } .errmsg { height: 50rpx; width: 100%; text-align: center; line-height: 50rpx; font-size: 30rpx; color: rgb(247, 98, 96); } .submit { margin-top: 0rpx; width: 100%; color: white; // background-color: #007bff; background-color: #b9ce8e; } } .wxLoginWrapper { position: absolute; bottom: 150rpx; width: 100%; height: 150rpx; margin-left: 0; margin-right: 0; .loginBtn { width: 100rpx; height: 100rpx; border-radius: 50%; margin-left: auto; margin-right: auto; background-color: rgb(42, 174, 103); display: flex; align-items: center; justify-content: center; .logo { width: 85%; height: 85%; border-radius: 50%; } } .wxLoginTip { margin-top: 20rpx; width: 100%; height: 24rpx; font-size: 22rpx; color: rgba(0, 0, 0, 0.3); text-align: center; } } .wasTaped { filter: grayscale(30%); } .avatarPicTest { width: 100rpx; height: 100rpx; margin-top: 50rpx; margin-right: auto; margin-left: auto; border-radius: 50rpx; .pic { width: 100rpx; height: 100rpx; border-radius: 50rpx; } } ================================================ FILE: miniprogram/pages/login/login.wxml ================================================ 登录 注册 {{errmsg[errtype]}} 注册 登录 {{errmsg[errtype]}} 微信登录无需注册哦~ ================================================ FILE: miniprogram/pages/login/login.wxss ================================================ .bgWrapper { width: 100%; height: 100%; position: absolute; z-index: -100; background-image: linear-gradient(to bottom, #d0e6a5, #FFFFFF); } .bgWrapper .bg { margin-left: -15%; margin-top: -15%; width: 130%; height: 130%; } .wrapper { width: 80%; height: 500rpx; margin-left: auto; margin-right: auto; margin-top: 300rpx; margin-bottom: auto; } .wrapper .title { margin-top: 30rpx; width: 100%; font-size: 56rpx; text-align: center; font-weight: 800; color: #819c4b; } .wrapper .inputField { height: 70rpx; font-size: 34rpx; background-color: rgba(255, 255, 255, 0.7); padding-left: 20rpx; border: solid 4rpx #e2e2e2; } .wrapper .username { margin-top: 40rpx; border-top-left-radius: 10rpx; border-top-right-radius: 10rpx; border-bottom: 2rpx solid #e2e2e2; } .wrapper .middlePwd { border-top: 2rpx solid #e2e2e2; border-bottom: 2rpx solid #e2e2e2; margin-top: -2rpx; } .wrapper .pwd { border-bottom-left-radius: 10rpx; border-bottom-right-radius: 10rpx; border-top: 2rpx solid #e2e2e2; margin-top: -2rpx; } .wrapper .btnWrapper { margin-top: 10rpx; width: 100%; height: 40rpx; } .wrapper .btnWrapper .changeBtn { width: 60rpx; height: 40rpx; font-size: 28rpx; line-height: 40rpx; color: #819c4b; font-weight: 500; } .wrapper .btnWrapper .loginBtn { margin-left: 10rpx; } .wrapper .btnWrapper .registerBtn { margin-right: 10rpx; } .wrapper .registerBtnWrapper { display: flex; justify-content: flex-end; } .wrapper .errmsg { height: 50rpx; width: 100%; text-align: center; line-height: 50rpx; font-size: 30rpx; color: #f76260; } .wrapper .submit { margin-top: 0rpx; width: 100%; color: white; background-color: #b9ce8e; } .wxLoginWrapper { position: absolute; bottom: 150rpx; width: 100%; height: 150rpx; margin-left: 0; margin-right: 0; } .wxLoginWrapper .loginBtn { width: 100rpx; height: 100rpx; border-radius: 50%; margin-left: auto; margin-right: auto; background-color: #2aae67; display: flex; align-items: center; justify-content: center; } .wxLoginWrapper .loginBtn .logo { width: 85%; height: 85%; border-radius: 50%; } .wxLoginWrapper .wxLoginTip { margin-top: 20rpx; width: 100%; height: 24rpx; font-size: 22rpx; color: rgba(0, 0, 0, 0.3); text-align: center; } .wasTaped { filter: grayscale(30%); } .avatarPicTest { width: 100rpx; height: 100rpx; margin-top: 50rpx; margin-right: auto; margin-left: auto; border-radius: 50rpx; } .avatarPicTest .pic { width: 100rpx; height: 100rpx; border-radius: 50rpx; } ================================================ FILE: miniprogram/pages/overview/overview.js ================================================ // pages/overview/overview.js import regeneratorRuntime, { async } from '../../lib/runtime/runtime'; const wordApi = require("../../utils/wordApi.js") const userApi = require("../../utils/userApi.js") const word_utils = require("../../utils/word_utils.js") // const sm_5_js = require("../../lib/sm-5.js") // const jStat = require("../../lib/jstat.min.js") const format_time = require('../../utils/format_time.js') import * as echarts from '../../components/ec-canvas/echarts' // import * as echarts from '../../components/ec-canvas/echartsForBar' const color = require("../../utils/color.js") const app = getApp() let chart = null let isInit = false let chartColor = { normalText: '#757575', textHighlight: '#ff831e', learnBar: '#ffc8cb', learnBarHighlight: '#fcaaae', reviewBar: '#87cafe', reviewBarHighlight: '#50b3ff', // learnBar: '#87cafe', // learnBarHighlight: '#50b3ff', // reviewBar: '#ffc8cb', // reviewBarHighlight: '#fcaaae', } function initChart(canvas, width, height, dpr) { chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); isInit = true return chart } Page({ /** * 页面的初始数据 */ data: { learnConfig: {}, learnPercentage: 0, learnReset: false, reviewConfig: {}, reviewPercentage: 0, reviewReset: false, percentage: 100, resetCanvas: false, isStop: false, ec: { onInit: initChart }, bkDetail: {}, bkLearnData: {}, allLearnData: {}, notebookWord: [], todayLearnData: {}, selectedDay: {}, isChangingBook: false, allBkData: [], dailyTask: {}, }, chartdata: {}, control: { checkTimer: -1, highlightIndex: -1, highlightIndexHide: false, skip: 0, hasMore: true, isLoading: false, dateTime: -1, pageHide: false, isLogin: false, loginTimer: -1, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { this.init() }, async init() { wx.setNavigationBarTitle({ title: '概览', }) this.control.isLogin = app.globalData.isLogin this.createEmptylearnData() this.createEmptyDailySum() this.checkEchartInit() this.control.dateTime = format_time.getDayZeroTime() this.initDailyTask() if (!this.control.isLogin) { wx.showToast({ title: '您还未登录哦~', icon: 'none', duration: 1500, }) if (app.globalData.tryingLogin) { let _this = this this.control.loginTimer = setInterval(function () { if (!app.globalData.tryingLogin) { _this.control.pageHide = true _this.onShow() clearInterval(_this.control.loginTimer) } }, 200) } return } this.getSingleWBData() this.initLearnData() }, createEmptylearnData() { let bkDetail = { name: '', total: 0 } let bkLearnData = { notLearn: 0, learn: 0, master: 0 } let allLearnData = { learn: 0, master: 0, } let notebookWord = [] let todayLearnData = { learn: 0, review: 0, } this.setData({ bkDetail, bkLearnData, allLearnData, notebookWord, todayLearnData, }) }, async getSingleWBData() { let res = await wordApi.getSingleWBData({ wd_bk_id: app.globalData.userInfo.l_book_id }) this.setData({ bkDetail: res.data, }) }, async initLearnData(needUpdateDailySum = false) { let t1 = new Date().getTime() // console.log('the same time') let promise1 = wordApi.getWBLearnData({ user_id: app.globalData.userInfo.user_id, wd_bk_id: app.globalData.userInfo.l_book_id }) let promise2 = wordApi.getAllLearnData({ user_id: app.globalData.userInfo.user_id }) let promise3 = wordApi.getNoteBookWord({ user_id: app.globalData.userInfo.user_id, num: 10, }) let promise4 = wordApi.getTodayLearnData({ user_id: app.globalData.userInfo.user_id, }) let taskList = [promise1, promise2, promise3, promise4] let resList = await Promise.all(taskList) let t2 = new Date().getTime() console.log('use', t2 - t1) console.log('resList', resList) this.setData({ bkLearnData: resList[0].data, allLearnData: resList[1].data, notebookWord: resList[2].data, todayLearnData: resList[3].data, }) this.updateDailyTaskPercentage() this.data.learnReset = false this.data.reviewReset = false this.setData({ learnReset: true, reviewReset: true, }) // console.log('reset') if (needUpdateDailySum) this.updateTodayDailySum() }, initDailyTask() { this.initProgress('learn') this.initProgress('review') }, updateDailyTaskPercentage() { if (this.control.isLogin) { // console.log('settings', app.globalData.userInfo.settings) if (app.globalData.userInfo.settings.daily_task) { let dailyTask = {} dailyTask.dailyTask = true let groupSize = app.globalData.userInfo.settings.group_size let dailyLearn = app.globalData.userInfo.settings.daily_learn let dailyReview = app.globalData.userInfo.settings.daily_review if (groupSize === undefined) groupSize = 20 if (dailyLearn === undefined) dailyLearn = 1 if (dailyReview === undefined) dailyReview = 1 dailyTask.dailyLearn = dailyLearn * groupSize dailyTask.dailyReview = dailyReview * groupSize let learnPercentage = this.data.todayLearnData.learn / dailyTask.dailyLearn * 100 let reviewPercentage = this.data.todayLearnData.review / dailyTask.dailyReview * 100 if (learnPercentage > 100) learnPercentage = 100 if (reviewPercentage > 100) reviewPercentage = 100 // console.log('dailyTask', dailyTask) // console.log('learnPercentage', learnPercentage) // console.log('reviewPercentage', reviewPercentage) this.setData({ dailyTask, learnPercentage, reviewPercentage, }) return } } this.setData({ dailyTask: { dailyLearn: 0, dailyReview: 0 }, learnPercentage: 0, reviewPercentage: 0, }) }, initProgress(type = 'learn') { // let colorStart = undefined let colorEnd = undefined if (type == 'learn') { // colorStart = '#ffffff' colorEnd = chartColor.learnBar // colorEnd = chartColor.reviewBar } else if (type == 'review') { // colorStart = '#ffffff' colorEnd = chartColor.reviewBar // colorEnd = chartColor.learnBar } let config = { canvasSize: { width: 200, height: 200 }, percent: 100, barStyle: [ { width: 16, fillStyle: '#f6f6f6' }, { width: 16, animate: true, // fillStyle: [ // 这个渐变是背景的渐变,不太一样。。。 // { position: 0, color: colorStart }, // { position: 1, color: colorEnd } // ], fillStyle: colorEnd, lineCap: 'round' }], totalTime: 1000, } if (type == 'learn') { this.setData({ learnConfig: config, learnReset: false, // learnPercentage: 20, }) } else if (type == 'review') { this.setData({ reviewConfig: config, reviewReset: false, // reviewPercentage: 20, }) } }, toWordDetail(e) { let word_id = e.currentTarget.dataset.word_id wx.navigateTo({ url: `../word_detail/word_detail?word_id=${word_id}`, }) }, async showBookList() { if (!this.checkLogin()) return this.setData({ isChangingBook: true, }) let allBkData = this.data.allBkData if (!allBkData || allBkData.length == 0) allBkData = (await wordApi.getAllWBData()).data this.setData({ allBkData: allBkData, }) }, async changeWordBook(e) { let index = e.currentTarget.dataset.index let bkInfo = this.data.allBkData[index] if (bkInfo.wd_bk_id != app.globalData.userInfo.l_book_id) { let res = await userApi.changeWordBook({ user_id: app.globalData.userInfo.user_id, wd_bk_id: bkInfo.wd_bk_id, }) if (res.data) { let wbLearnDataRes = await wordApi.getWBLearnData({ user_id: app.globalData.userInfo.user_id, wd_bk_id: bkInfo.wd_bk_id }) app.globalData.userInfo.l_book_id = bkInfo.wd_bk_id app.globalData.updatedForIndex = true this.setData({ bkDetail: { color: bkInfo.color, coverType: bkInfo.coverType, description: bkInfo.description, name: bkInfo.name, total: bkInfo.total, }, bkLearnData: wbLearnDataRes.data, isChangingBook: false, }) } else { wx.showToast({ title: '更换失败,请重试~', icon: "none", duration: 1500, }) } } }, getWordList(e) { if (!this.checkLogin()) return let type = e.currentTarget.dataset.type wx.navigateTo({ url: `../word_list/word_list?type=${type}`, }) }, endChange() { this.setData({ isChangingBook: false, }) }, // 为拥有进入过渡动画用,实际可不做处理 onEnter() { }, // 历史每日学习统计图表所用函数 // --------------------------------------------------------------------------------- // 获取统计数据,初始配置、图表左侧(数轴反转了)触底时调用 async getDailySum() { if (!this.control.isLogin) return if (!this.control.hasMore) return if (this.control.isLoading) return this.control.isLoading = true let res = await wordApi.getDailySum({ user_id: app.globalData.userInfo.user_id, skip: this.control.skip }) // console.log('getDailySum', res) let dailySumList = res.data this.control.hasMore = (dailySumList.length < 10) ? false : true if (dailySumList.length == 0) return // console.log('dailySumList length', dailySumList.length) let chartdataLengthBefore = this.chartdata.time.length let chartdata = this.control.skip == 0 ? { time: [], total: [], learn: [], review: [], } : this.chartdata let lastTime = format_time.getDayZeroTime() + 86400000 if (this.control.skip > 0) lastTime = format_time.getDayZeroTime('2021-' + this.chartdata.time[this.chartdata.time.length - 1]) // console.log('lastTime', lastTime) // console.log(new Date(lastTime)) for (let i = 0; i < dailySumList.length; i++) { if (dailySumList[i].date < lastTime - 86400000) { while (dailySumList[i].date < lastTime - 86400000) { lastTime = lastTime - 86400000 let time1 = format_time.formatDate(lastTime) time1 = time1.substring(5) chartdata.time.push(time1) chartdata.learn.push(0) chartdata.review.push(0) chartdata.total.push(0) } } let time = format_time.formatDate(dailySumList[i].date) time = time.substring(5) chartdata.time.push(time) chartdata.learn.push(dailySumList[i].learn) chartdata.review.push(dailySumList[i].review) chartdata.total.push(dailySumList[i].learn + dailySumList[i].review) lastTime = dailySumList[i].date } this.chartdata = JSON.parse(JSON.stringify(chartdata)) this.control.skip += dailySumList.length if (!isInit) return // 设置显示内容 let highlightIndex = this.control.highlightIndex if (highlightIndex == -1) { highlightIndex = 0 this.control.highlightIndex = 0 chart.dispatchAction({ type: 'highlight', dataIndex: highlightIndex }) } if (this.control.skip == dailySumList.length) { this.setData({ selectedDay: { time: chartdata.time[0], learn: chartdata.learn[0], review: chartdata.review[0], } }) } let highlightxAxisItem = { value: chartdata.time[highlightIndex], textStyle: { color: chartColor.textHighlight } } chartdata.time[highlightIndex] = highlightxAxisItem let chartOption = chart.getOption() let series = chartOption.series series[0].data = this.chartdata.total // series[1].data = this.chartdata.learn // series[2].data = this.chartdata.review series[1].data = this.chartdata.review series[2].data = this.chartdata.learn let startValue = 0 let endValue = 0 let dataZoom = chartOption.dataZoom // 设置新范围为当前触底数据范围往后移一格 if (this.control.skip == dailySumList.length) { startValue = 0 endValue = 6 } else { startValue = chartdataLengthBefore - 1 + 1 - 6 endValue = chartdataLengthBefore - 1 + 1 } if (!this.control.highlightIndexHide & startValue > this.control.highlightIndex) this.control.highlightIndexHide = true dataZoom[0].startValue = startValue dataZoom[0].endValue = endValue // console.log('startValue', startValue) // console.log('endValue', endValue) // console.log(chartOption) chart.setOption({ xAxis: { data: chartdata.time }, series: series, dataZoom: dataZoom, }) this.control.isLoading = false }, // 生成最近一周的空数据(onLoad时调用),用于在未获得真实数据前“占位” createEmptyDailySum() { let time = new Date().getTime() // let date = format_time.formatDate(time) // console.log(date.substring(5)) let chartdata = { time: [], total: [], learn: [], review: [], } for (let i = 0; i < 7; i++) { let date = format_time.formatDate(time) date = date.substring(5) // date = date.replace('-', '.') // let learn = Math.floor(Math.random() * 5) * 10 // let review = Math.floor(Math.random() * 30) * 10 // let total = learn + review chartdata.time.push(date) chartdata.learn.push(0) chartdata.review.push(0) chartdata.total.push(0) time -= 86400000 } this.chartdata = chartdata }, // 应用空数据 setEmptyDailySum() { let chartOption = chart.getOption() let series = chartOption.series series[0].data = this.chartdata.total series[1].data = this.chartdata.review series[2].data = this.chartdata.learn this.control.highlightIndex = -1 this.control.highlightIndexHide = false chart.setOption({ xAxis: { data: this.chartdata.time }, series: series, }) this.setData({ selectedDay: { time: this.chartdata.time[0], learn: this.chartdata.learn[0], review: this.chartdata.review[0], } }) }, // 更新当日学习数据到图表中 updateTodayDailySum() { let todayLearnData = this.data.todayLearnData let chartOption if (isInit) { chartOption = chart.getOption() let series = chartOption.series this.chartdata.total[0] = todayLearnData.learn + todayLearnData.review this.chartdata.review[0] = todayLearnData.review this.chartdata.learn[0] = todayLearnData.learn series[0].data[0] = todayLearnData.learn + todayLearnData.review series[1].data[0] = todayLearnData.review series[2].data[0] = todayLearnData.learn let dataZoom = chartOption.dataZoom chart.setOption({ series: series, dataZoom: dataZoom, }) let dateTime = new Date() let time = format_time.formatDate(dateTime) time = time.substring(5) if (this.data.selectedDay.time == time) { this.setData({ selectedDay: { time: this.chartdata.time[0], learn: this.chartdata.learn[0], review: this.chartdata.review[0], } }) } } }, // 拖动位置时触发,监测到左侧触底则进行数据获取、隐藏的高亮柱形重新显现则重新将之高亮 dataZoomEvent(e) { // console.log('dataZoom', e) // console.log('highlightIndexHide', this.control.highlightIndexHide) // console.log('percentage', (this.control.highlightIndex + 1) / this.chartdata.time.length) if (e.batch[0].end > 99) { if (!this.control.hasMore) { wx.showToast({ title: '已经没有再早的数据了噢', icon: 'none', duration: 1000, }) return } this.getDailySum() } else if (!this.control.highlightIndexHide) { let nowPercentage = ((this.control.highlightIndex + 1) / this.chartdata.time.length) * 100 let startBigger = (e.batch[0].start > nowPercentage) ? true : false let endSmaller = (e.batch[0].end < nowPercentage) ? true : false if (startBigger || endSmaller) { this.control.highlightIndexHide = true } } else if (this.control.highlightIndexHide) { let nowPercentage = ((this.control.highlightIndex + 1) / this.chartdata.time.length) * 100 let startSmaller = (e.batch[0].start < nowPercentage) ? true : false let endBigger = (e.batch[0].end > nowPercentage) ? true : false if (startSmaller && endBigger) { // 对应设置高亮与否 let _this = this setTimeout(function () { chart.dispatchAction({ type: 'highlight', dataIndex: _this.control.highlightIndex }) let downPlayIndex = [] for (let i = 0; i < _this.chartdata.time.length; i++) { if (i != _this.control.highlightIndex) downPlayIndex.push(i) } chart.dispatchAction({ type: 'downplay', dataIndex: downPlayIndex }) _this.control.highlightIndexHide = false }, 100) } } }, // 检测图表一整列范围内被点击则触发对应列柱形和标签高亮 dataColumnClicked(e) { let pointInPixel = [e.offsetX, e.offsetY] if (chart.containPixel('grid', pointInPixel)) { let xIndex = chart.convertFromPixel({ seriesIndex: 0 }, [e.offsetX, e.offsetY])[0] // console.log(xIndex) xIndex = Math.abs(xIndex) this.control.highlightIndex = xIndex let chartxAxis = chart.getOption().xAxis // console.log(chart.getOption().dataZoom) let dataZoom = chart.getOption().dataZoom let xData = JSON.parse(JSON.stringify(this.chartdata.time)) // 深复制,防止对time数组的更改影响数据源 let xAxisItem = { value: this.chartdata.time[xIndex], textStyle: { color: chartColor.textHighlight } } xData.splice(xIndex, 1, xAxisItem) chartxAxis[0].data = xData chart.setOption({ xAxis: chartxAxis, dataZoom: dataZoom }) // 更新显示内容,显示点击日期当天的数据 this.setData({ selectedDay: { time: this.chartdata.time[xIndex], learn: this.chartdata.learn[xIndex], review: this.chartdata.review[xIndex], } }) // console.log('dataColumnClicked get option', chart.getOption()) // 对应设置高亮与否 chart.dispatchAction({ type: 'highlight', dataIndex: xIndex }) let downPlayIndex = [] for (let i = 0; i < this.chartdata.time.length; i++) { if (i != xIndex) downPlayIndex.push(i) } chart.dispatchAction({ type: 'downplay', dataIndex: downPlayIndex }) this.control.highlightIndexHide = false } }, // 图例标签被点击则触发,更新总和数据、高亮范围(由图例切换复现的所有图形会自动高亮,要取消) legendChange(e) { // console.log('legendChange', e) if (!isInit) return let totalArr = undefined let bothUnselected = false let changeName = '' if (e.selected['学习'] && e.selected['复习']) { totalArr = this.chartdata.total } else if (e.selected['学习'] && !e.selected['复习']) { totalArr = this.chartdata.learn } else if (!e.selected['学习'] && e.selected['复习']) { totalArr = this.chartdata.review } else { let name = e.name changeName = name == '学习' ? '复习' : '学习' bothUnselected = true } if (bothUnselected) { chart.dispatchAction({ type: 'legendToggleSelect', name: changeName }) // legendToggleSelect会触发legendchange事件,故这里退出以下设置部分可以不用运行以节省资源 return } let series = chart.getOption().series let dataZoom = chart.getOption().dataZoom series[0].data = totalArr chart.setOption({ // dataset: { // source: { // total: totalArr // } // } series: series, dataZoom: dataZoom }) let _this = this // 由于由legend调整显示的图形默认高亮,且有动画延时,需在动画开始之后(柱子出现后)再设置取消高亮 // 故需加到“任务队列”中,即使Timeout为0也可,执行完该轮Event Loop再设置高亮与否,即可成功 setTimeout(function () { let downPlayIndex = [] for (let i = 0; i < _this.chartdata.time.length; i++) { if (i != _this.control.highlightIndex) downPlayIndex.push(i) } if (_this.control.highlightIndex != -1) { chart.dispatchAction({ type: 'highlight', dataIndex: _this.control.highlightIndex }) } chart.dispatchAction({ type: 'downplay', dataIndex: downPlayIndex, }) }, 0) }, // 检测图表是否初始化完毕,是则传入基础配置,由于宽高等数据单位为px // 需要转换成rpx以自适应屏幕大小,故参数传入均在此处给出 async checkEchartInit() { let _this = this this.control.checkTimer = setInterval(function () { // console.log('interval time out') if (!isInit) { // console.log('not init') } else { clearInterval(_this.control.checkTimer) // console.log('windowWidth', wx.getSystemInfoSync().windowWidth) // 750:needwidth(rpx) = realwidth:needwidth(px) // needwidth(px) = realwidth*needwidth(rpx)/750 let rectRatio = wx.getSystemInfoSync().windowWidth / 750 // console.log('time out print', chart) let option = { legend: { top: 10 * 2 * rectRatio, right: 20 * 2 * rectRatio, data: [ { name: '学习', icon: 'circle', }, { name: '复习', icon: 'circle', }, ], itemWidth: 12 * 2 * rectRatio, itemHeight: 12 * 2 * rectRatio, textStyle: { fontSize: 12 * 2 * rectRatio, color: chartColor.normalText, fontWeight: 600, }, borderRadius: 6 * 2 * rectRatio, }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: { type: 'category', inverse: true, axisTick: { alignWithLabel: true }, axisLabel: { fontSize: 10 * 2 * rectRatio, fontWeight: 600, color: chartColor.normalText, }, data: JSON.parse(JSON.stringify(_this.chartdata.time)), }, yAxis: { axisLabel: { fontSize: 10 * 2 * rectRatio, fontWeight: 600, color: chartColor.normalText, } }, dataZoom: [ { id: 'dataZoomX', type: 'inside', filterMode: 'empty', startValue: 0, endValue: 6, rangeMode: ['value', 'value'], // zoomLock: true, minValueSpan: 6, maxValueSpan: 6, zoomOnMouseWheel: false, }, ], series: [ { type: 'bar', label: { show: true, position: 'top', fontWeight: 600, color: chartColor.normalText, }, barWidth: 10 * 2 * rectRatio, emphasis: { label: { color: chartColor.textHighlight } }, itemStyle: { color: 'rgba(255, 255, 255, 0)', }, data: JSON.parse(JSON.stringify(_this.chartdata.total)), }, { type: 'bar', // name: '学习', name: '复习', barGap: "-100%", // 这里设置后两个的堆积柱形与前一个(总)的柱形位置重合 barWidth: 10 * 2 * rectRatio, emphasis: { itemStyle: { // color: chartColor.learnBarHighlight, color: chartColor.reviewBarHighlight, }, }, stack: 'data', itemStyle: { // color: chartColor.learnBar, color: chartColor.reviewBar, }, // data: JSON.parse(JSON.stringify(_this.chartdata.learn)), data: JSON.parse(JSON.stringify(_this.chartdata.review)), }, { type: 'bar', // name: '复习', name: '学习', barGap: "-100%", // 这里设置后两个的堆积柱形与前一个(总)的柱形位置重合 barWidth: 10 * 2 * rectRatio, emphasis: { itemStyle: { // color: chartColor.reviewBarHighlight, color: chartColor.learnBarHighlight, } }, stack: 'data', itemStyle: { // color: chartColor.reviewBar, color: chartColor.learnBar, }, // data: JSON.parse(JSON.stringify(_this.chartdata.review)), data: JSON.parse(JSON.stringify(_this.chartdata.learn)), }, ], } chart.setOption(option) // console.log('init print', chart) chart.on('legendselectchanged', '', _this.legendChange) chart.on('dataZoom', '', _this.dataZoomEvent) chart.getZr().on('click', _this.dataColumnClicked) _this.getDailySum() // 默认高亮最右边这一项(第一项) let chartxAxis = chart.getOption().xAxis let xData = JSON.parse(JSON.stringify(_this.chartdata.time)) let xAxisItem = { value: _this.chartdata.time[0], textStyle: { color: chartColor.textHighlight } } xData[0] = xAxisItem chartxAxis[0].data = xData chart.setOption({ xAxis: chartxAxis }) chart.dispatchAction({ type: 'highlight', dataIndex: 0 }) // console.log(chart.getOption()) } }, 100) }, // --------------------------------------------------------------------------------- async testAddLearningRecord() { // let wordDetailList = wx.getStorageSync('wordDetailList') let learnDataRes = await wordApi.getLearningData({ user_id: app.globalData.userInfo.user_id, // wd_bk_id: app.globalData.userInfo.l_book_id, wd_bk_id: 5, groupSize: 20, sample: false, // user_id: 2, // wd_bk_id: 2, // groupSize: 20, }) // let learnDataRes = await wordApi.getReviewData({ // user_id: app.globalData.userInfo.user_id, // wd_bk_id: app.globalData.userInfo.l_book_id, // groupSize: 10, // sample: false, // }) let wordDetailList = learnDataRes.data let wordLearningRecord = [] // console.log(wordDetailList) let now = new Date() now.setMilliseconds(0) now.setSeconds(0) now.setMinutes(0) now.setHours(0) let last_l = now.getTime() let next_l = last_l + 86400000 // let next_l = now.getTime() // let last_l = next_l - 86400000 for (let i = 0; i < wordDetailList.length; i++) { // let record = wordDetailList[i].record // record.q = 3 + Math.floor(Math.random() * 3) // wordLearningRecord.push(record) wordLearningRecord.push({ word_id: wordDetailList[i].word_id, last_l, next_l, NOI: 1, EF: "2.5", next_n: 0, // master: false, master: (Math.random() * 6 < 5) ? false : true }) } let res = await wordApi.addLearningRecord({ learnedRecord: wordLearningRecord, user_id: app.globalData.userInfo.user_id }) console.log(res) return // wordLearningRecord[8].q = 2 // wordLearningRecord[9].q = 1 console.log('upload wordLearningRecord', wordLearningRecord) // let of_matrix = { // '1.3': [5], // '1.4': [5], // '1.5': [5], // '1.6': [5], // '1.7': [5], // '1.8': [5], // '1.9': [5], // '2.0': [5], // '2.1': [5], // '2.2': [5], // '2.3': [5], // '2.4': [5], // '2.5': [5], // '2.6': [5], // '2.7': [5], // '2.8': [5], // } // let resList = [] // for (let j = 0; j < wordLearningRecord.length; j++) { // let result = sm_5_js.sm_5(of_matrix, wordLearningRecord[j]) // let record = result.wd_learning_record // of_matrix = result.OF // resList.push(record) // } // console.log('resList', resList) // console.log('of_matrix', of_matrix) let res1 = await wordApi.updateLearningRecord({ wordLearningRecord: wordLearningRecord, user_id: app.globalData.userInfo.user_id }) console.log(res1) }, async getBasicLearningData() { let res = await wordApi.getBasicLearningData() console.log('getBasicLearningData result', res) this.setData({ needToLearn: res.data.needToLearn, needToReview: res.data.needToReview, }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, checkLogin() { if (this.control.isLogin) { return true } else { wx.showToast({ title: '登录后才可以查看哦~', icon: 'none', duration: 1500, }) return false } }, /** * 生命周期函数--监听页面显示 */ onShow: function () { if (this.control.pageHide) { if (this.control.isLogin != app.globalData.isLogin) { this.control.isLogin = app.globalData.isLogin if (app.globalData.isLogin) { // 若登录状态变为已登录则获取数据并更新相应图表 this.getDailySum() this.getSingleWBData() this.initLearnData() } else { // 若登录状态变为使用空数据替代 this.control.skip = 0 this.createEmptylearnData() this.createEmptyDailySum() this.setEmptyDailySum() } this.updateDailyTaskPercentage() app.globalData.updatedForOverview = false } if (app.globalData.updatedForOverview) { this.initLearnData(true) if (app.globalData.userInfo.settings.daily_task) { //若启用每日任务,则进行更新 this.control.pageHide = false app.globalData.updatedForOverview = false // initLearnData里已经更新过dailyTask数据且刷新图表,为防止重复刷新,就直接返回 return } else { //若未启用每日任务,则使用注入空数据 let dailyTask = {} dailyTask.dailyTask = false dailyTask.dailyLearn = 0 dailyTask.dailyReview = 0 this.setData({ dailyTask, learnPercentage: 0, reviewPercentage: 0, }) } app.globalData.updatedForOverview = false } // 重置进度条 this.data.learnReset = false this.data.reviewReset = false console.log('reset') this.setData({ learnReset: true, reviewReset: true, }) this.control.pageHide = false } }, // 调试用 getControl(e) { console.log('control', this.control) console.log('option', chart.getOption()) console.log('chartdata', this.chartdata) }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { this.control.pageHide = true }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } }) ================================================ FILE: miniprogram/pages/overview/overview.json ================================================ { "usingComponents": { "mpProgress": "../../components/mp-progress/mp-progress", "ec-canvas": "../../components/ec-canvas/ec-canvas" } } ================================================ FILE: miniprogram/pages/overview/overview.less ================================================ .bgWrapper { width: 100%; height: 100%; position: absolute; z-index: -100; // background-image: linear-gradient(to bottom, #ee9c6c, #ffffff); // background-image: linear-gradient(to bottom, #ef9d6d, #FFFFFF); background-color: #f6f6f6; } .progress { margin-top: 100rpx; margin-left: auto; margin-right: auto; } .resetbtn { margin-top: 100rpx; margin-left: auto; margin-right: auto; } .eccanvasContainer { // margin-top: 50rpx; width: 95%; height: 500rpx; margin-right: auto; margin-left: auto; background-color: #ffffff; border-radius: 20rpx; // color: rgb(45, 156, 235); // color: rgb(255, 131, 30); // color: rgb(117, 117, 117); } .contentWarpper { width: 675rpx; margin-left: auto; margin-right: auto; margin-top: 20rpx; .contentTitle { margin-left: 20rpx; margin-top: 20rpx; color: #fd6802; font-size: 40rpx; font-weight: 700; } .contentCard { margin-top: 20rpx; width: 675rpx; border-radius: 20rpx; // box-shadow: 2rpx 2rpx 10rpx #e6e6e6; box-shadow: 2rpx 2rpx 10rpx rgba(0, 0, 0, 0.1); background-color: #ffffff; overflow: hidden; .title { width: 620rpx; // height: 60rpx; // border-bottom: solid 2rpx rgba(0, 0, 0, 0.1); // border-bottom: solid 4rpx #f6f6f6; margin-right: auto; margin-left: auto; // margin-left: 30rpx; margin-top: 20rpx; font-size: 40rpx; color: #fd6802; // color: #ff831e; font-weight: 700; } .cardTop { display: flex; .bookWrapper { width: 265rpx; height: 280rpx; display: flex; justify-content: center; align-items: center; position: relative; .book { // margin-top: 30rpx; // margin-left: 40rpx; width: 147rpx; //遵循A4纸21*27.9的比例 height: 208rpx; background-color: rgb(37, 134, 229); background-color: rgb(105, 149, 194); border-radius: 10rpx; .name { width: 40rpx; height: 100rpx; font-size: 36rpx; // line-height: 50rpx; color: #ffffff; margin-left: 20rpx; margin-top: 20rpx; font-weight: 600; } } .tips { position: absolute; bottom: 0rpx; width: 265rpx; height: 20rpx; text-align: center; font-size: 20rpx; font-weight: 600; color: #bfbfbf; } } } .cardBottom { width: 600rpx; margin-right: auto; margin-left: auto; height: 70rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; .learnProgress { width: 600rpx; height: 20rpx; } .progressNum { width: 600rpx; display: flex; justify-content: space-between; font-size: 20rpx; font-weight: 600; color: #bfbfbf; } } .dataWrapper { width: 410rpx; height: 240rpx; height: 280rpx; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; // padding-top: 20rpx; .dataItem { width: 170rpx; height: 120rpx; padding-left: 20rpx; margin-right: 10rpx; margin-bottom: 10rpx; display: flex; flex-direction: column; justify-content: center; .dataName { height: 30rpx; // margin-top: 10rpx; margin-left: 10rpx; font-size: 24rpx; font-weight: 700; color: #8a8a8a; } .dataValue { height: 44rpx; margin-top: 10rpx; margin-left: 10rpx; font-size: 36rpx; font-weight: 700; color: #515151; color: #757575; .unit { font-size: 24rpx; font-weight: 600; color: #8a8a8a; } } } .wasTaped { border-radius: 10rpx; background-color: #f6f6f6; } } .forAllData { width: 600rpx; height: 240rpx; margin-left: auto; margin-right: auto; margin-bottom: 30rpx; margin-top: 10rpx; .dataItem { width: 240rpx; padding-left: 50rpx; .dataName { position: relative; .dot { position: absolute; top: 6rpx; width: 20rpx; height: 20rpx; border-radius: 10rpx; background-color: #fd6802; left: -40rpx; } } } } .wordContainer { width: 620rpx; margin-top: 10rpx; // margin-bottom: 40rpx; margin-left: auto; margin-right: auto; min-height: 150rpx; display: flex; flex-wrap: wrap; align-content: flex-start; .word { margin-right: 10rpx; height: 40rpx; line-height: 40rpx; font-size: 28rpx; border-radius: 20rpx; background-color: #f0f0f0; color: #8a8a8a; padding: 0rpx 20rpx; font-weight: 600; margin-top: 10rpx; } .wasTaped { background-color: rgba(0, 0, 0, 0.2); } } .moreBtn { width: 620rpx; height: 80rpx; margin-left: auto; margin-right: auto; display: flex; align-items: center; justify-content: flex-end; margin-top: 10rpx; margin-bottom: 10rpx; .btn { width: 200rpx; height: 80rpx; font-size: 30rpx; font-weight: 600; color: #757575; border-radius: 10rpx; text-align: center; line-height: 80rpx; } .wasTaped { background-color: #f6f6f6; } } .bottom { width: 620rpx; height: 20rpx; } .tips { width: 620rpx; height: 150rpx; margin-left: auto; margin-right: auto; display: flex; align-items: center; justify-content: center; color: #757575; font-size: 30rpx; font-weight: 600; } .mpprogressWrapper { width: 600rpx; height: 240rpx; margin-top: 20rpx; margin-left: auto; margin-right: auto; display: flex; align-items: center; justify-content: center; z-index: 10; .taskProgress { width: 300rpx; height: 240rpx; display: flex; align-items: center; justify-content: center; position: relative; .mpProgress { width: 200rpx; height: 200rpx; } .learnData { position: absolute; // top: 50rpx; // margin-left: auto; // margin-right: auto; width: 300rpx; height: 240rpx; font-weight: 600; display: flex; flex-direction: column; align-items: center; justify-content: center; .num { font-size: 32rpx; color: #515151; color: #757575; } .workload { font-size: 20rpx; color: #8a8a8a; } .dec { font-size: 20rpx; color: #8a8a8a; } } } } .forDailySum { width: 600rpx; height: 120rpx; margin-left: auto; margin-right: auto; .dataItem { width: 160rpx; .dataName { font-size: 20rpx; height: 24rpx; } .dataValue { font-size: 36rpx; margin-top: 6rpx; height: 40rpx; color: #ff831e; .unit { font-size: 20rpx; } } .date { font-size: 30rpx; color: #757575; } } } } } .bottom { width: 100rpx; height: 100rpx; } .changeBookWrapper { width: 750rpx; height: 600rpx; margin-top: 50rpx; .book { width: 750rpx; height: 160rpx; display: flex; justify-content: center; align-items: center; position: relative; margin-bottom: 10rpx; .bookCover { // margin-top: 30rpx; margin-left: 20rpx; margin-right: 40rpx; width: 106rpx; //遵循A4纸21*27.9的比例 height: 140rpx; background-color: rgb(37, 134, 229); background-color: rgb(105, 149, 194); border-radius: 10rpx; .name { width: 28rpx; height: 100rpx; font-size: 28rpx; // line-height: 50rpx; color: #ffffff; margin-left: 10rpx; margin-top: 10rpx; font-weight: 600; } } .info { width: 70%; height: 160rpx; position: relative; font-weight: 600; .bookName { color: #757575; font-size: 28rpx; margin-top: 10rpx; font-weight: 700; } .des { margin-top: 10rpx; font-size: 22rpx; color: #8a8a8a; } .total { position: absolute; bottom: 10rpx; font-size: 22rpx; color: #8a8a8a; .num { font-size: 26rpx; } } } } .wasTaped{ background-color: rgba(150, 150, 150, 0.1); } } .test { color: #a781e0; color: #f5cec7; color: #c396d3; color: #ffa2ad; color: #46cca4; color: #fd6802; color: #ff831e; // 使用色 color: #87cafe; color: #50b3ff; color: #ffc8cb; color: #fcaaae; color: #bfbfbf; } ================================================ FILE: miniprogram/pages/overview/overview.wxml ================================================ 单词书 {{bkDetail.name}} 点击词书可以进行切换哦 已学习 {{bkLearnData.learn}} 已掌握 {{bkLearnData.master}} 待学习 {{bkLearnData.notLearn}} 总词量 {{bkDetail.total}} 已学习: {{bkLearnData.learn}} 总词量: {{bkDetail.total}} 总览 今日学习&复习 {{todayLearnData.learn + todayLearnData.review}} 累计学习 {{allLearnData.learn}} 复习中 {{allLearnData.learn-allLearnData.master}} 已掌握 {{allLearnData.master}} 每日任务 {{todayLearnData.learn}}/{{dailyTask.dailyLearn}} 今日已学习 {{todayLearnData.review}}/{{dailyTask.dailyReview}} 今日已复习 收藏夹 {{item.word}} 你还没有收藏词汇哦~ 查看更多 历史 日期 {{selectedDay.time}} 学习 {{selectedDay.learn}} 复习 {{selectedDay.review}} {{item.name}} {{item.name}} {{item.description}} 词汇量 {{item.total}} ================================================ FILE: miniprogram/pages/overview/overview.wxss ================================================ .bgWrapper { width: 100%; height: 100%; position: absolute; z-index: -100; background-color: #f6f6f6; } .progress { margin-top: 100rpx; margin-left: auto; margin-right: auto; } .resetbtn { margin-top: 100rpx; margin-left: auto; margin-right: auto; } .eccanvasContainer { width: 95%; height: 500rpx; margin-right: auto; margin-left: auto; background-color: #ffffff; border-radius: 20rpx; } .contentWarpper { width: 675rpx; margin-left: auto; margin-right: auto; margin-top: 20rpx; } .contentWarpper .contentTitle { margin-left: 20rpx; margin-top: 20rpx; color: #fd6802; font-size: 40rpx; font-weight: 700; } .contentWarpper .contentCard { margin-top: 20rpx; width: 675rpx; border-radius: 20rpx; box-shadow: 2rpx 2rpx 10rpx rgba(0, 0, 0, 0.1); background-color: #ffffff; overflow: hidden; } .contentWarpper .contentCard .title { width: 620rpx; margin-right: auto; margin-left: auto; margin-top: 20rpx; font-size: 40rpx; color: #fd6802; font-weight: 700; } .contentWarpper .contentCard .cardTop { display: flex; } .contentWarpper .contentCard .cardTop .bookWrapper { width: 265rpx; height: 280rpx; display: flex; justify-content: center; align-items: center; position: relative; } .contentWarpper .contentCard .cardTop .bookWrapper .book { width: 147rpx; height: 208rpx; background-color: #2586e5; background-color: #6995c2; border-radius: 10rpx; } .contentWarpper .contentCard .cardTop .bookWrapper .book .name { width: 40rpx; height: 100rpx; font-size: 36rpx; color: #ffffff; margin-left: 20rpx; margin-top: 20rpx; font-weight: 600; } .contentWarpper .contentCard .cardTop .bookWrapper .tips { position: absolute; bottom: 0rpx; width: 265rpx; height: 20rpx; text-align: center; font-size: 20rpx; font-weight: 600; color: #bfbfbf; } .contentWarpper .contentCard .cardBottom { width: 600rpx; margin-right: auto; margin-left: auto; height: 70rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; } .contentWarpper .contentCard .cardBottom .learnProgress { width: 600rpx; height: 20rpx; } .contentWarpper .contentCard .cardBottom .progressNum { width: 600rpx; display: flex; justify-content: space-between; font-size: 20rpx; font-weight: 600; color: #bfbfbf; } .contentWarpper .contentCard .dataWrapper { width: 410rpx; height: 240rpx; height: 280rpx; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; } .contentWarpper .contentCard .dataWrapper .dataItem { width: 170rpx; height: 120rpx; padding-left: 20rpx; margin-right: 10rpx; margin-bottom: 10rpx; display: flex; flex-direction: column; justify-content: center; } .contentWarpper .contentCard .dataWrapper .dataItem .dataName { height: 30rpx; margin-left: 10rpx; font-size: 24rpx; font-weight: 700; color: #8a8a8a; } .contentWarpper .contentCard .dataWrapper .dataItem .dataValue { height: 44rpx; margin-top: 10rpx; margin-left: 10rpx; font-size: 36rpx; font-weight: 700; color: #515151; color: #757575; } .contentWarpper .contentCard .dataWrapper .dataItem .dataValue .unit { font-size: 24rpx; font-weight: 600; color: #8a8a8a; } .contentWarpper .contentCard .dataWrapper .wasTaped { border-radius: 10rpx; background-color: #f6f6f6; } .contentWarpper .contentCard .forAllData { width: 600rpx; height: 240rpx; margin-left: auto; margin-right: auto; margin-bottom: 30rpx; margin-top: 10rpx; } .contentWarpper .contentCard .forAllData .dataItem { width: 240rpx; padding-left: 50rpx; } .contentWarpper .contentCard .forAllData .dataItem .dataName { position: relative; } .contentWarpper .contentCard .forAllData .dataItem .dataName .dot { position: absolute; top: 6rpx; width: 20rpx; height: 20rpx; border-radius: 10rpx; background-color: #fd6802; left: -40rpx; } .contentWarpper .contentCard .wordContainer { width: 620rpx; margin-top: 10rpx; margin-left: auto; margin-right: auto; min-height: 150rpx; display: flex; flex-wrap: wrap; align-content: flex-start; } .contentWarpper .contentCard .wordContainer .word { margin-right: 10rpx; height: 40rpx; line-height: 40rpx; font-size: 28rpx; border-radius: 20rpx; background-color: #f0f0f0; color: #8a8a8a; padding: 0rpx 20rpx; font-weight: 600; margin-top: 10rpx; } .contentWarpper .contentCard .wordContainer .wasTaped { background-color: rgba(0, 0, 0, 0.2); } .contentWarpper .contentCard .moreBtn { width: 620rpx; height: 80rpx; margin-left: auto; margin-right: auto; display: flex; align-items: center; justify-content: flex-end; margin-top: 10rpx; margin-bottom: 10rpx; } .contentWarpper .contentCard .moreBtn .btn { width: 200rpx; height: 80rpx; font-size: 30rpx; font-weight: 600; color: #757575; border-radius: 10rpx; text-align: center; line-height: 80rpx; } .contentWarpper .contentCard .moreBtn .wasTaped { background-color: #f6f6f6; } .contentWarpper .contentCard .bottom { width: 620rpx; height: 20rpx; } .contentWarpper .contentCard .tips { width: 620rpx; height: 150rpx; margin-left: auto; margin-right: auto; display: flex; align-items: center; justify-content: center; color: #757575; font-size: 30rpx; font-weight: 600; } .contentWarpper .contentCard .mpprogressWrapper { width: 600rpx; height: 240rpx; margin-top: 20rpx; margin-left: auto; margin-right: auto; display: flex; align-items: center; justify-content: center; z-index: 10; } .contentWarpper .contentCard .mpprogressWrapper .taskProgress { width: 300rpx; height: 240rpx; display: flex; align-items: center; justify-content: center; position: relative; } .contentWarpper .contentCard .mpprogressWrapper .taskProgress .mpProgress { width: 200rpx; height: 200rpx; } .contentWarpper .contentCard .mpprogressWrapper .taskProgress .learnData { position: absolute; width: 300rpx; height: 240rpx; font-weight: 600; display: flex; flex-direction: column; align-items: center; justify-content: center; } .contentWarpper .contentCard .mpprogressWrapper .taskProgress .learnData .num { font-size: 32rpx; color: #515151; color: #757575; } .contentWarpper .contentCard .mpprogressWrapper .taskProgress .learnData .workload { font-size: 20rpx; color: #8a8a8a; } .contentWarpper .contentCard .mpprogressWrapper .taskProgress .learnData .dec { font-size: 20rpx; color: #8a8a8a; } .contentWarpper .contentCard .forDailySum { width: 600rpx; height: 120rpx; margin-left: auto; margin-right: auto; } .contentWarpper .contentCard .forDailySum .dataItem { width: 160rpx; } .contentWarpper .contentCard .forDailySum .dataItem .dataName { font-size: 20rpx; height: 24rpx; } .contentWarpper .contentCard .forDailySum .dataItem .dataValue { font-size: 36rpx; margin-top: 6rpx; height: 40rpx; color: #ff831e; } .contentWarpper .contentCard .forDailySum .dataItem .dataValue .unit { font-size: 20rpx; } .contentWarpper .contentCard .forDailySum .dataItem .date { font-size: 30rpx; color: #757575; } .bottom { width: 100rpx; height: 100rpx; } .changeBookWrapper { width: 750rpx; height: 600rpx; margin-top: 50rpx; } .changeBookWrapper .book { width: 750rpx; height: 160rpx; display: flex; justify-content: center; align-items: center; position: relative; margin-bottom: 10rpx; } .changeBookWrapper .book .bookCover { margin-left: 20rpx; margin-right: 40rpx; width: 106rpx; height: 140rpx; background-color: #2586e5; background-color: #6995c2; border-radius: 10rpx; } .changeBookWrapper .book .bookCover .name { width: 28rpx; height: 100rpx; font-size: 28rpx; color: #ffffff; margin-left: 10rpx; margin-top: 10rpx; font-weight: 600; } .changeBookWrapper .book .info { width: 70%; height: 160rpx; position: relative; font-weight: 600; } .changeBookWrapper .book .info .bookName { color: #757575; font-size: 28rpx; margin-top: 10rpx; font-weight: 700; } .changeBookWrapper .book .info .des { margin-top: 10rpx; font-size: 22rpx; color: #8a8a8a; } .changeBookWrapper .book .info .total { position: absolute; bottom: 10rpx; font-size: 22rpx; color: #8a8a8a; } .changeBookWrapper .book .info .total .num { font-size: 26rpx; } .changeBookWrapper .wasTaped { background-color: rgba(150, 150, 150, 0.1); } .test { color: #a781e0; color: #f5cec7; color: #c396d3; color: #ffa2ad; color: #46cca4; color: #fd6802; color: #ff831e; color: #87cafe; color: #50b3ff; color: #ffc8cb; color: #fcaaae; color: #bfbfbf; } ================================================ FILE: miniprogram/pages/review/review.js ================================================ // pages/review/review.js import regeneratorRuntime, { async } from '../../lib/runtime/runtime'; const rescontent = require("../../utils/response_content.js") const wordApi = require("../../utils/wordApi.js") const word_utils = require("../../utils/word_utils.js") const color = require("../../utils/color.js") const app = getApp() // const innerAudioContext = wx.createInnerAudioContext({ useWebAudioImplement: true }) let mode = { chooseTrans: { wordMode: 0, contentMode: 0, controlMode: 0 }, recallTrans: { wordMode: 0, contentMode: 2, controlMode: 1 }, recallWord: { wordMode: 1, contentMode: 1, controlMode: 1 }, all: { wordMode: 0, contentMode: 1, controlMode: 3 }, // 如果不倒计时,会在init里进行调整,故没有用const声明 } Page({ /** * 页面的初始数据 */ data: { colorType: 0, reviewedNum: 0, reviewNum: 0, wordDetail: {}, repeatTimes: 0, thisWordRepeatTime: 1, wordMode: 2, contentMode: 3, controlMode: 2, // 选择题相关 wrongTransWordList: [], choiceOrder: [], choiceBgList: [], // 倒计时用到 wordTimingConfig: {}, wordTimingReset: false, wordTimingStop: false, contentTimingConfig: {}, contentTimingReset: false, contentTimingStop: false, // innerAudioContextIndex: 0, isInNotebook: false, isBtnActive: false, reviewDone: false, reviewRes: [], }, settings: {}, wordDetailList: [], wordLearningRecord: [], control: { // 当前&下一个词汇在原数组中下标 nowIndex: -1, nextIndex: -1, // 正确选项的下标 rightIndex: -1, // 单词音频播放器 innerAudioContext: undefined, // 倒计时模块是否初始化 isWordTimingInit: false, isContentTimingInit: false, // 选择题显示答案后停留计时器 isShowAllTimerSet: false, showAllTimer: -1, // 复习队列 reviewingList: undefined, reviewedList: undefined, // queNameList: [], modeList: undefined, isQuickTimer: false, quickTimer: -1, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { wx.setNavigationBarTitle({ title: '复习', }) this.init() this.initReviewData() }, tempShow() { let reviewData = wx.getStorageSync('reviewData') let wordDetailList = wx.getStorageSync('wordDetailList') let temp = 0 for (let i = 0; i < reviewData.length; i++) { for (let j = 0; j < wordDetailList.length; j++) { let innerTemp = (temp + j) % wordDetailList.length if (reviewData[i].word_id == wordDetailList[innerTemp].word_id) { reviewData[i].word = wordDetailList[innerTemp].word temp = innerTemp break } } } this.setData({ reviewRes: reviewData, }) }, init() { // this.tempShow() wx.enableAlertBeforeUnload({ message: '现在退出将导致复习数据丢失哦', success: () => { console.log('success') }, fail: () => { console.log('fail') }, }) // 初始化页面颜色 let colorType = Math.floor(Math.random() * color.colorList.length) wx.setNavigationBarColor({ backgroundColor: color.colorList[colorType], frontColor: '#ffffff', }) // 初始化设置 let userSettings = app.globalData.userInfo.settings let settings = {} settings.repeat_times = (!(userSettings.review_repeat_t)) ? 1 : userSettings.review_repeat_t settings.group_size = (!(userSettings.group_size)) ? 20 : userSettings.group_size settings.first_mode = (!(userSettings.review_first_m)) ? 'recallTrans' : userSettings.review_first_m settings.second_mode = (!(userSettings.review_second_m)) ? 'recallWord' : userSettings.review_second_m settings.third_mode = (!(userSettings.review_third_m)) ? 'recallTrans' : userSettings.review_third_m settings.timing = (userSettings.timing === undefined) ? true : userSettings.timing settings.timing_duration = (userSettings.timing_duration === undefined) ? 1500 : userSettings.timing_duration settings.autoplay = (userSettings.autoplay === undefined) ? true : userSettings.autoplay this.settings = settings // let queNameList = ['unLearnedList', 'repeatOnce', 'repeatTwice','learnedList'] // for (let i = settings.repeat_times; i < 3; i++) queNameList[i] = 'learnedList' // this.control.queNameList = queNameList // 初始化显示内容组合 let modeList = [] if (!(settings.timing)) { mode.recallTrans.contentMode = 3 mode.recallWord.wordMode = 2 } modeList.push(settings.first_mode) modeList.push(settings.second_mode) modeList.push(settings.third_mode) this.control.modeList = modeList let chooseTransIndex = modeList.indexOf('chooseTrans') this.settings.sample = (chooseTransIndex != -1) ? true : false this.setData({ colorType, repeatTimes: settings.repeat_times, }) }, async initReviewData() { console.log('before getting data', new Date().getTime()) let learnDataRes = await wordApi.getReviewData({ user_id: app.globalData.userInfo.user_id, wd_bk_id: app.globalData.userInfo.l_book_id, groupSize: this.settings.group_size, sample: this.settings.sample, }) console.log(learnDataRes) // wx.setStorageSync('wordDetailList', learnDataRes.data) let wordDetailList = learnDataRes.data // let wordDetailList = wx.getStorageSync('wordDetailList') wordDetailList = word_utils.batchHandleWordDetal(wordDetailList, { getShortTrans: true }) console.log(wordDetailList) console.log('after handling data', new Date().getTime()) // let reviewingList = [...new Array(wordDetailList.length).keys()] // 不知道为啥会报错 let reviewingList = [] let wordLearningRecord = [] for (let i = 0; i < wordDetailList.length; i++) { wordDetailList[i].innerAudioContext = wx.createInnerAudioContext({ useWebAudioImplement: true }) wordDetailList[i].innerAudioContext.src = wordDetailList[i].voiceUrl reviewingList.push(i) wordLearningRecord.push({ word_id: wordDetailList[i].word_id, repeatTimes: 0, wrongTimes: 0, uncertainTimes: 0, master: false, q: -1, }) } this.wordDetailList = wordDetailList this.wordLearningRecord = wordLearningRecord this.control.reviewingList = reviewingList this.control.reviewedList = [] this.setData({ reviewNum: wordDetailList.length < this.settings.group_size ? wordDetailList.length : this.settings.group_size }) // 将未学习的队列的第一项“放出来”学习 this.showNextWord() }, // 生成干扰项数组(最后一项为正确答案),生成用于打乱和标记背景颜色的数组以及正确选项索引 getWrongTrans(nowIndex) { if (!(nowIndex)) nowIndex = this.control.nowIndex let numList = word_utils.randNumList(8, 3) let wrongTransWordList = [] for (let j = 0; j < numList.length; j++) { wrongTransWordList.push(this.wordDetailList[nowIndex].sample_list[numList[j]]) } wrongTransWordList.push(this.wordDetailList[nowIndex].sample_list[9]) let choiceOrder = [0, 1, 2, 3] choiceOrder = word_utils.randArr(choiceOrder) let rightIndex = choiceOrder.indexOf(3) let choiceBgList = ['', '', '', ''] // choiceBgList[rightIndex] = 'rightchoice' // choiceBgList[(rightIndex + 1) % 4] = 'falsechoice' this.control.rightIndex = rightIndex this.setData({ wrongTransWordList, choiceOrder, choiceBgList, }) }, initTiming(type = 'content') { let colorType = this.data.colorType let config = { canvasSize: { width: 80, height: 80 }, percent: 100, barStyle: [ { width: 8, fillStyle: '#f6f6f6' }, { width: 8, animate: true, fillStyle: color.deeperColorList[colorType], lineCap: 'round' }], totalTime: this.settings.timing_duration, } if (type == 'content') { this.setData({ contentTimingConfig: config, contentTimingReset: false, contentTimingStop: false, }) this.control.isContentTimingInit = true } else if (type == 'word') { this.setData({ wordTimingConfig: config, wordTimingReset: false, wordTimingStop: false, }) this.control.isWordTimingInit = true } // this.resetCanvasFunc() }, playVoice() { this.control.innerAudioContext.stop() this.control.innerAudioContext.play() // this.wordDetailList[this.data.innerAudioContextIndex].innerAudioContext.stop() // this.wordDetailList[this.data.innerAudioContextIndex].innerAudioContext.play() }, checkChoice(e) { this.setData({ isBtnActive: false }) // console.log(e) let thisChoice = e.currentTarget.dataset.index let rightIndex = this.control.rightIndex // let choiceOrder = this.data.choiceOrder let choiceBgList = ['', '', '', ''] choiceBgList[rightIndex] = 'rightChoice' // 如果显示答案的倒计时已经设置了,则“加速”,同时进行错误选项的检测 if (this.control.isShowAllTimerSet) { if (thisChoice != rightIndex) choiceBgList[thisChoice] = 'falseChoice' this.setData({ contentMode: 1, controlMode: 3, choiceBgList, isBtnActive: true }) clearTimeout(this.control.showAllTimer) this.control.isShowAllTimerSet = false this.checkDone() return } let nowIndex = this.control.nowIndex if (thisChoice == rightIndex) { // 如果是第一次,则作为recall质量的判定 if (this.wordLearningRecord[nowIndex].wrongTimes == 0 && this.wordLearningRecord[nowIndex].repeatTimes == 0 && this.wordLearningRecord[nowIndex].uncertainTimes == 0) { if (this.control.isQuickTimer) { this.wordLearningRecord[nowIndex].q = 5 clearTimeout(this.control.quickTimer) this.control.isQuickTimer = false } else { this.wordLearningRecord[nowIndex].q = 4 } } this.wordLearningRecord[nowIndex].repeatTimes += 1 if (this.wordLearningRecord[nowIndex].repeatTimes >= 3) { this.updateReviewed() } else if (this.wordLearningRecord[nowIndex].wrongTimes == 0 && this.wordLearningRecord[nowIndex].uncertainTimes == 0 && this.wordLearningRecord[nowIndex].repeatTimes >= this.settings.repeat_times) { this.updateReviewed() } else { this.control.reviewingList.push(nowIndex) } } else { choiceBgList[thisChoice] = 'falseChoice' if (this.wordLearningRecord[nowIndex].wrongTimes <= 3) { this.wordLearningRecord[nowIndex].repeatTimes = 0 } this.wordLearningRecord[nowIndex].q = 3 this.wordLearningRecord[nowIndex].wrongTimes += 1 this.control.reviewingList.push(nowIndex) } this.setData({ choiceBgList, thisWordRepeatTime: this.wordLearningRecord[nowIndex].repeatTimes, }) // 设置1s之后显示详情 let _this = this this.control.isShowAllTimerSet = true this.control.showAllTimer = setTimeout(function () { _this.setData({ contentMode: 1, controlMode: 3, }) _this.control.isShowAllTimerSet = false _this.checkDone() }, 1000) this.setData({ isBtnActive: true }) }, showAnswer() { this.setData({ isBtnActive: false }) // 如果显示答案的倒计时已经设置了,则“加速” if (this.control.isShowAllTimerSet) { clearTimeout(this.control.showAllTimer) this.setData({ contentMode: 1, controlMode: 3, isBtnActive: true, }) this.control.isShowAllTimerSet = false this.checkDone() return } let rightIndex = this.control.rightIndex let choiceBgList = ['', '', '', ''] choiceBgList[rightIndex] = 'rightChoice' // 按照错误处理 let nowIndex = this.control.nowIndex if (this.wordLearningRecord[nowIndex].wrongTimes <= 3) { this.wordLearningRecord[nowIndex].repeatTimes = 0 } this.wordLearningRecord[nowIndex].q = 3 this.wordLearningRecord[nowIndex].wrongTimes += 1 this.control.reviewingList.push(nowIndex) this.setData({ choiceBgList, thisWordRepeatTime: this.wordLearningRecord[nowIndex].repeatTimes, }) // 设置1s之后显示详情 let _this = this this.control.isShowAllTimerSet = true this.control.showAllTimer = setTimeout(function () { _this.setData({ contentMode: 1, controlMode: 3, }) _this.control.isShowAllTimerSet = false }, 1000) this.setData({ isBtnActive: true }) }, setAsType(e) { this.setData({ isBtnActive: false }) let type = e.currentTarget.dataset.type let nowIndex = this.control.nowIndex if (type == 'known') { // 如果是第一次,则作为recall质量的判定 if (this.wordLearningRecord[nowIndex].wrongTimes == 0 && this.wordLearningRecord[nowIndex].repeatTimes == 0 && this.wordLearningRecord[nowIndex].uncertainTimes == 0) { if (this.control.isQuickTimer) { this.wordLearningRecord[nowIndex].q = 5 clearTimeout(this.control.quickTimer) this.control.isQuickTimer = false } else { this.wordLearningRecord[nowIndex].q = 4 } } this.wordLearningRecord[nowIndex].repeatTimes += 1 if (this.wordLearningRecord[nowIndex].repeatTimes >= 3) { this.updateReviewed() } else if (this.wordLearningRecord[nowIndex].wrongTimes == 0 && this.wordLearningRecord[nowIndex].uncertainTimes == 0 && this.wordLearningRecord[nowIndex].repeatTimes >= this.settings.repeat_times) { this.updateReviewed() } else { this.control.reviewingList.push(nowIndex) } } else if (type == 'uncertain') { // 模糊按照错误的方法处理,但增加不确定次数,若是第一次则判定相应质量为4 if (this.wordLearningRecord[nowIndex].wrongTimes == 0 && this.wordLearningRecord[nowIndex].repeatTimes == 0 && this.wordLearningRecord[nowIndex].uncertainTimes == 0) { this.wordLearningRecord[nowIndex].q = 4 clearTimeout(this.control.quickTimer) this.control.isQuickTimer = false } if (this.wordLearningRecord[nowIndex].q == 5) this.wordLearningRecord[nowIndex].q = 4 if (this.wordLearningRecord[nowIndex].wrongTimes <= 3) { this.wordLearningRecord[nowIndex].repeatTimes = 0 } this.wordLearningRecord[nowIndex].uncertainTimes += 1 this.control.reviewingList.push(nowIndex) } else if (type == 'unknown') { // 不认识/错误则在错误次数不大于3次时重置学习次数 if (this.wordLearningRecord[nowIndex].wrongTimes == 0 && this.wordLearningRecord[nowIndex].repeatTimes == 0 && this.wordLearningRecord[nowIndex].uncertainTimes == 0) { clearTimeout(this.control.quickTimer) this.control.isQuickTimer = false } if (this.wordLearningRecord[nowIndex].wrongTimes <= 3) { this.wordLearningRecord[nowIndex].repeatTimes = 0 } this.wordLearningRecord[nowIndex].q = 3 this.wordLearningRecord[nowIndex].wrongTimes += 1 this.control.reviewingList.push(nowIndex) } else if (type == 'changeToUnknown') { wx.showToast({ title: '已标记为不认识', icon: 'none', duration: 1000, }) // 从认识/模糊转成忘记时,一样按照错误处理一次,若复习队列最后一项不是该词的话,将之添加进学习队列 if (this.wordLearningRecord[nowIndex].wrongTimes <= 3) { this.wordLearningRecord[nowIndex].repeatTimes = 0 } this.wordLearningRecord[nowIndex].q = 3 this.wordLearningRecord[nowIndex].wrongTimes += 1 if (this.control.reviewedList.indexOf(nowIndex) >= 0) this.control.reviewingList.push(nowIndex) } let control_m = { known: 2, uncertain: 2, unknown: 3, } // 更改显示 if (this.data.contentMode != 1) { this.setData({ contentTimingStop: true, controlMode: control_m[type], thisWordRepeatTime: this.wordLearningRecord[nowIndex].repeatTimes, }) this.setData({ contentMode: 1, isBtnActive: true, }) this.checkDone() } else if (this.data.wordMode != 0) { this.setData({ wordTimingStop: true, controlMode: control_m[type], thisWordRepeatTime: this.wordLearningRecord[nowIndex].repeatTimes, }) this.setData({ wordMode: 0, isBtnActive: true, }) this.checkDone() } else { this.showNextWord() } }, toNextWord() { // 由于页面事件的第一个参数默认是event,与showNextWord默认参数有冲突,故用此函数间接调用 this.setData({ isBtnActive: false }) this.showNextWord() }, showNextWord() { if (this.checkDone()) return // 获取单词索引后,根据该单词的学习记录设置显示内容 let nextIndex = this.control.reviewingList.shift() console.log('nextIndex:', nextIndex) if (nextIndex == -1) console.log('学完本组单词啦~') this.control.nowIndex = nextIndex let repeatTimes = this.wordLearningRecord[nextIndex].repeatTimes let modeDetail = mode[this.control.modeList[repeatTimes]] if (modeDetail.contentMode == 0) this.getWrongTrans(nextIndex) if (modeDetail.wordMode == 1) { if (!(this.control.isWordTimingInit)) { this.initTiming('word') } else { // this.resetCanvas('word') } } if (modeDetail.contentMode == 2) { if (!(this.control.isContentTimingInit)) { this.initTiming('content') } else { // this.resetCanvas('content') } } // this.setData(modeDetail) this.setData({ ...modeDetail, wordDetail: { word: this.wordDetailList[nextIndex].word, word_id: this.wordDetailList[nextIndex].word_id, phonetic: this.wordDetailList[nextIndex].phonetic, shortTrans: this.wordDetailList[nextIndex].shortTrans, }, thisWordRepeatTime: this.wordLearningRecord[nextIndex].repeatTimes, repeatTimes: (this.wordLearningRecord[nextIndex].wrongTimes == 0 && this.wordLearningRecord[nextIndex].uncertainTimes == 0) ? this.settings.repeat_times : 3, contentTimingStop: false, wordTimingStop: false, isInNotebook: this.wordDetailList[nextIndex].in_notebook ? true : false, isBtnActive: true, }) if (this.wordLearningRecord[nextIndex].repeatTimes == 0 && this.wordLearningRecord[nextIndex].wrongTimes == 0 && this.wordLearningRecord[nextIndex].uncertainTimes == 0) { let _this = this this.control.isQuickTimer = true this.control.quickTimer = setTimeout(function () { _this.control.isQuickTimer = false }, 2000) } if (this.control.innerAudioContext) this.control.innerAudioContext.stop() this.control.innerAudioContext = this.wordDetailList[nextIndex].innerAudioContext if (this.settings.autoplay && modeDetail.wordMode == 0) this.control.innerAudioContext.play() }, // 实际重新显示的时候会再次触发config内容更改(重新获取)从而再次触发重绘,无需手动设置reset resetCanvas(type = 'content') { if (type == 'content') { this.setData({ contentTimingReset: false, // contentTimingStop: false, }) this.setData({ contentTimingReset: true, }) } else if (type == 'word') { this.setData({ wordTimingReset: false, // wordTimingStop: false, }) this.setData({ wordTimingReset: true, }) } }, showTrans() { this.setData({ contentTimingStop: true, }) this.setData({ contentMode: 1, }) }, showWord() { this.setData({ wordTimingStop: true, }) if (this.settings.autoplay) this.control.innerAudioContext.play() this.setData({ wordMode: 0, }) }, timingOut(e) { // console.log('receive from myprogress', e) let type = e.currentTarget.dataset.type if (e.detail.timeout) { if (type == 'content') { if (this.data.contentMode == 2) { this.showTrans() } else { console.log('content倒计时没真正没关掉') } } if (type == 'word') { if (this.data.wordMode == 1) { this.showWord() } else { console.log('word倒计时没真正没关掉') } } } }, toDetail: function () { wx.navigateTo({ url: '../word_detail/word_detail?word_id=' + this.data.wordDetail.word_id + '&colorType=' + this.data.colorType, }) }, // 跳过当前环节/设置为已掌握 skip(e) { this.setData({ isBtnActive: false }) let type = e.currentTarget.dataset.type let nowIndex = this.control.nowIndex if (this.control.reviewedList.indexOf(nowIndex) >= 0) { wx.showToast({ title: '该词已完成学习啦', icon: 'none', duration: 1000, }) if (type == 'master') this.wordLearningRecord[nowIndex].master = true this.setData({ isBtnActive: true }) return } // this.control.reviewedList.push(nowIndex) this.wordLearningRecord[nowIndex].repeatTimes = this.settings.repeat_times if (type == 'master') this.wordLearningRecord[nowIndex].master = true this.setData({ thisWordRepeatTime: this.settings.repeat_times, ...mode.all, isBtnActive: true, }) let tips = (type == 'master') ? '已掌握' : '跳过该轮学习' wx.showToast({ title: `已将该词设置为${tips}`, icon: 'none', duration: 1000, }) this.updateReviewed() this.setData({ isBtnActive: true }) }, // 调整是否添加到生词本 toggleAddToNB: async function () { this.setData({ isBtnActive: false }) let add = this.data.isInNotebook let res = await wordApi.toggleAddToNB({ user_id: app.globalData.userInfo.user_id, word_id: this.wordDetailList[this.control.nowIndex].word_id, add: !add, }) console.log(res) if (res.data) { this.wordDetailList[this.control.nowIndex].in_notebook = !add this.setData({ isInNotebook: !add, isBtnActive: true }) } else { wx.showToast({ title: '操作出错,请重试', icon: 'none', duration: 1000, }) this.setData({ isBtnActive: true }) } }, updateReviewed() { this.control.reviewedList.push(this.control.nowIndex) let reviewedNum = this.control.reviewedList.length this.setData({ reviewedNum }) }, checkDone() { let reviewedNum = this.control.reviewedList.length if (reviewedNum != this.data.reviewedNum) this.setData({ reviewedNum }) if (reviewedNum >= this.data.reviewNum) { console.log('本组单词复习完毕啦~') this.setData({ isBtnActive: false, reviewDone: true, }) this.updateLearningData() return true } return false }, async updateLearningData() { wx.showLoading({ title: '复习数据上传中...', mask: true, }) let wordLearningRecord = [] for (let i = 0; i < this.control.reviewedList.length; i++) { let record = this.wordDetailList[i].record let q = this.wordLearningRecord[this.control.reviewedList[i]].q // 只要错q就为3,每多错两次q-1,即>0则q=3, >2则q=2, >4则q=1, >6则q=0 if (this.wordLearningRecord[this.control.reviewedList[i]].wrongTimes > 0) { q = 3 q = q + 1 - Math.ceil(this.wordLearningRecord[this.control.reviewedList[i]].wrongTimes / 2) if (q < 0) q = 0 } record.q = q record.master = this.wordLearningRecord[this.control.reviewedList[i]].master wordLearningRecord.push(record) } console.log('upload wordLearningRecord', wordLearningRecord) let res = await wordApi.updateLearningRecord({ wordLearningRecord: wordLearningRecord, user_id: app.globalData.userInfo.user_id }) console.log(res) app.globalData.updatedForIndex = true app.globalData.updatedForOverview = true wx.hideLoading() wx.disableAlertBeforeUnload() // wx.setStorageSync('reviewData', res.data) if (res.errorcode != rescontent.SUCCESS.errorcode) { wx.showToast({ title: '很抱歉,数据上传出错', icon: 'none', duration: 1000, }) return } console.log('res.data', res.data) let reviewData = JSON.parse(JSON.stringify(res.data)) reviewData.sort(function (a, b) { return a.NOI - b.NOI }) let temp = 0 for (let i = 0; i < reviewData.length; i++) { for (let j = 0; j < this.wordDetailList.length; j++) { let innerTemp = (temp + j) % this.wordDetailList.length if (reviewData[i].word_id == this.wordDetailList[innerTemp].word_id) { reviewData[i].word = this.wordDetailList[innerTemp].word temp = innerTemp break } } } this.setData({ reviewRes: reviewData, }) }, goBack() { wx.navigateBack({ delta: 1, }) }, reInit() { // 数据恢复初始状态 this.settings = {} this.wordDetailList = [] this.wordLearningRecord = [] this.control = { // 当前&下一个词汇在原数组中下标 nowIndex: -1, nextIndex: -1, // 正确选项的下标 rightIndex: -1, // 单词音频播放器 innerAudioContext: undefined, // 倒计时模块是否初始化 isWordTimingInit: false, isContentTimingInit: false, // 选择题显示答案后停留计时器 isShowAllTimerSet: false, showAllTimer: -1, // 复习队列 reviewingList: undefined, reviewedList: undefined, modeList: undefined, isQuickTimer: false, quickTimer: -1, } this.setData({ reviewedNum: 0, learnNum: 0, reviewNum: {}, repeatTimes: 0, thisWordRepeatTime: 1, wordMode: 2, contentMode: 3, controlMode: 2, reviewDone: false, reviewRes: [], }) this.init() this.initReviewData() }, // 调试用 showInfo(e) { let infoName = e.currentTarget.dataset.name console.log(infoName, ':', this[infoName]) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { console.log('onReady') }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { wx.disableAlertBeforeUnload() }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } }) ================================================ FILE: miniprogram/pages/review/review.json ================================================ { "usingComponents": { "mpProgress": "../../components/mp-progress/mp-progress" } } ================================================ FILE: miniprogram/pages/review/review.less ================================================ .bgWrapper { width: 100%; height: 100%; position: fixed; z-index: -100; // background-image: linear-gradient(to bottom, #ffb284, #FFFFFF); } .topline { width: 100%; height: 60rpx; display: flex; justify-content: center; align-items: center; .progress { font-size: 32rpx; color: #f6f6f6; } } .wordWrapper { margin-top: 30rpx; width: 100%; height: 500rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 1; .word { font-size: 75rpx; font-weight: 700; // color: #ffffff; margin-bottom: 10rpx; } .repeatTime { margin-bottom: 20rpx; width: 150rpx; height: 16rpx; display: flex; justify-content: center; align-items: center; .times { width: 20rpx; height: 10rpx; border-radius: 5rpx; margin-left: 16rpx; box-shadow: 2rpx 2rpx 4rpx rgba(0, 0, 0, 0.1); } .first { margin-left: 0rpx; } .bg { background-color: #ffffff; } } .pron { font-size: 34rpx; font-family: Arial, Helvetica, sans-serif; // font-weight: 700; color: #ffffff; } .timing { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; flex-direction: column; .progress { width: 100rpx; height: 100rpx; } .resetbtn { margin-top: 20rpx; } .model { width: 300rpx; height: 70rpx; opacity: 0.3; border-radius: 16rpx; box-shadow: 2rpx 2rpx 15rpx rgba(0, 0, 0, 0.1), -2rpx -2rpx 15rpx rgba(0, 0, 0, 0.1); background-image: linear-gradient(to right, #cdcdcd, #ffffff); } .phonetic { margin-top: 20rpx; width: 150rpx; height: 50rpx; border-radius: 10rpx; } } } .content { // margin-top: 50rpx; position: absolute; bottom: 260rpx; width: 100%; height: 650rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 2; .chooseCorrect { // width: 100%; .choice { margin-bottom: 15rpx; display: flex; // align-items: flex-end; flex-direction: column; justify-content: center; padding-left: 30rpx; height: 135rpx; width: 670rpx; border-radius: 15rpx; box-shadow: 2rpx 2rpx 5rpx rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.5); .pos { font-size: 24rpx; line-height: 30rpx; font-weight: 600; color: #a0a0a0; min-width: 36rpx; margin-right: 10rpx } .meaning { font-size: 32rpx; line-height: 40rpx; font-weight: 600; color: #757575; // height: 40rpx; } } .rightChoice { // background-color: #a8e7ca; background-color: rgb(177, 223, 201); } .falseChoice { background-color: #fdbaba; } .wasTaped { background-color: rgba(150, 150, 150, 0.4); } } .translationWrapper { max-width: 85%; .transRow { margin-bottom: 20rpx; display: flex; align-items: flex-end; // height: 42rpx; .pos { font-size: 28rpx; line-height: 30rpx; font-weight: 600; color: #a0a0a0; min-width: 36rpx; margin-right: 10rpx } .meaning { font-size: 36rpx; line-height: 40rpx; font-weight: 600; color: #757575; // height: 40rpx; } .moreBtn { width: 150rpx; text-align: center; font-size: 28rpx; color: #a0a0a0; margin-left: auto; margin-right: auto; } .tapedText { color: #757575; } } } .timing { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; flex-direction: column; .progress { width: 100rpx; height: 100rpx; } .resetbtn { margin-top: 20rpx; } .model { width: 350rpx; height: 50rpx; margin-bottom: 20rpx; border-radius: 10rpx; box-shadow: 2rpx 2rpx 15rpx rgba(0, 0, 0, 0.1), -2rpx -2rpx 15rpx rgba(0, 0, 0, 0.1); background-image: linear-gradient(to right, #cdcdcd, #ffffff); opacity: 0.3; } } } .control { position: absolute; bottom: 20rpx; width: 100%; height: 230rpx; display: flex; align-items: center; justify-content: center; flex-direction: column; .btn { height: 120rpx; border-radius: 15rpx; font-weight: 700; display: flex; flex-direction: column; align-items: center; justify-content: center; .text { font-size: 34rpx; } .decorate { margin-top: 10rpx; width: 30rpx; height: 10rpx; border-radius: 5rpx; } } .knowWrapper { width: 100%; display: flex; align-items: center; justify-content: center; .knowBtn { width: 210rpx; margin-left: 30rpx; .notknowtext { color: #a0a0a0; } .dforNotKnow { background-color: #cdcdcd; } } .twoBtn { width: 330rpx; } .left { margin-left: 0rpx; } } .wasTaped { background-color: rgba(150, 150, 150, 0.1); } .answerBtn { width: 700rpx; .text { color: #a0a0a0; } .decorate { background-color: #cdcdcd; } } .nextBtn { width: 700rpx; } .bottomMenu { height: 80rpx; width: 100%; margin-top: 40rpx; margin-left: auto; margin-right: auto; display: flex; justify-content: space-around; align-items: center; .bottomBtn { width: 100rpx; height: 70rpx; font-size: 46rpx; font-weight: 600; color: #cdcdcd; // border-radius: 10rpx; // background-color: rgba(150, 150, 150, 0.1); line-height: 70rpx; text-align: center; } .icon-addToNB-yes { color: #fb6a00; } .wasTaped-bottom { color: #a0a0a0; } .wasTaped-bottom1 { filter: grayscale(20%); } } } .doneWrapper { width: 750rpx; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; position: fixed; z-index: 10; .text { font-size: 50rpx; font-weight: 700; margin-top: -100rpx; margin-bottom: 100rpx; } .decorate { width: 690rpx; height: 4rpx; border-radius: 2rpx; } .title { font-size: 28rpx; height: 40rpx; margin-top: 20rpx; width: 670rpx; display: flex; align-items: center; justify-content: space-between; font-weight: 600; } .reviewResWrapper { width: 750rpx; min-height: 460rpx; // 5*80+60 max-height: 620rpx; // 7*80+60 padding-bottom: 10rpx; .item { width: 750rpx; display: flex; align-items: center; justify-content: space-between; font-weight: 600; } .words { font-size: 32rpx; height: 80rpx; .word { color: #757575; margin-left: 40rpx; } .interval { color: #8a8a8a; margin-right: 40rpx; } .mastered { margin-right: 40rpx; } } } .btnWraper { display: flex; align-items: center; justify-content: center; margin-top: 50rpx; .btn { width: 300rpx; height: 80rpx; line-height: 80rpx; text-align: center; border-radius: 40rpx; font-weight: 600; font-size: 32rpx; } .back { background-color: rgba(150, 150, 150, 0.4); color: #ffffff; margin-right: 50rpx; } .continue { color: #ffffff; } .wasTaped { opacity: 0.6; } } } .test { position: absolute; top: 50rpx; right: 20rpx; display: flex; .showInfo { width: 150rpx; font-size: 28rpx; height: 36rpx; border-radius: 6rpx; background-color: #f6f6f6; padding: 0; margin-right: 20rpx; } } ================================================ FILE: miniprogram/pages/review/review.wxml ================================================ {{reviewedNum}} / {{reviewNum}} {{wordDetail.word}} / {{wordDetail.phonetic}} / {{wrongTransWordList[item].translation.pos}} {{wrongTransWordList[item].translation.meaning}} {{item.pos}} {{item.meaning}} 答案 认识 模糊 不认识 下一个 记错了 下一个 本组单词复习已完成 单词 下次学习时间 {{item.word}} {{item.NOI}}天后 已掌握 上传失败 完成复习 继续复习 ================================================ FILE: miniprogram/pages/review/review.wxss ================================================ .bgWrapper { width: 100%; height: 100%; position: fixed; z-index: -100; } .topline { width: 100%; height: 60rpx; display: flex; justify-content: center; align-items: center; } .topline .progress { font-size: 32rpx; color: #f6f6f6; } .wordWrapper { margin-top: 30rpx; width: 100%; height: 500rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 1; } .wordWrapper .word { font-size: 75rpx; font-weight: 700; margin-bottom: 10rpx; } .wordWrapper .repeatTime { margin-bottom: 20rpx; width: 150rpx; height: 16rpx; display: flex; justify-content: center; align-items: center; } .wordWrapper .repeatTime .times { width: 20rpx; height: 10rpx; border-radius: 5rpx; margin-left: 16rpx; box-shadow: 2rpx 2rpx 4rpx rgba(0, 0, 0, 0.1); } .wordWrapper .repeatTime .first { margin-left: 0rpx; } .wordWrapper .repeatTime .bg { background-color: #ffffff; } .wordWrapper .pron { font-size: 34rpx; font-family: Arial, Helvetica, sans-serif; color: #ffffff; } .wordWrapper .timing { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; flex-direction: column; } .wordWrapper .timing .progress { width: 100rpx; height: 100rpx; } .wordWrapper .timing .resetbtn { margin-top: 20rpx; } .wordWrapper .timing .model { width: 300rpx; height: 70rpx; opacity: 0.3; border-radius: 16rpx; box-shadow: 2rpx 2rpx 15rpx rgba(0, 0, 0, 0.1), -2rpx -2rpx 15rpx rgba(0, 0, 0, 0.1); background-image: linear-gradient(to right, #cdcdcd, #ffffff); } .wordWrapper .timing .phonetic { margin-top: 20rpx; width: 150rpx; height: 50rpx; border-radius: 10rpx; } .content { position: absolute; bottom: 260rpx; width: 100%; height: 650rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 2; } .content .chooseCorrect .choice { margin-bottom: 15rpx; display: flex; flex-direction: column; justify-content: center; padding-left: 30rpx; height: 135rpx; width: 670rpx; border-radius: 15rpx; box-shadow: 2rpx 2rpx 5rpx rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.5); } .content .chooseCorrect .choice .pos { font-size: 24rpx; line-height: 30rpx; font-weight: 600; color: #a0a0a0; min-width: 36rpx; margin-right: 10rpx; } .content .chooseCorrect .choice .meaning { font-size: 32rpx; line-height: 40rpx; font-weight: 600; color: #757575; } .content .chooseCorrect .rightChoice { background-color: #b1dfc9; } .content .chooseCorrect .falseChoice { background-color: #fdbaba; } .content .chooseCorrect .wasTaped { background-color: rgba(150, 150, 150, 0.4); } .content .translationWrapper { max-width: 85%; } .content .translationWrapper .transRow { margin-bottom: 20rpx; display: flex; align-items: flex-end; } .content .translationWrapper .transRow .pos { font-size: 28rpx; line-height: 30rpx; font-weight: 600; color: #a0a0a0; min-width: 36rpx; margin-right: 10rpx; } .content .translationWrapper .transRow .meaning { font-size: 36rpx; line-height: 40rpx; font-weight: 600; color: #757575; } .content .translationWrapper .transRow .moreBtn { width: 150rpx; text-align: center; font-size: 28rpx; color: #a0a0a0; margin-left: auto; margin-right: auto; } .content .translationWrapper .transRow .tapedText { color: #757575; } .content .timing { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; flex-direction: column; } .content .timing .progress { width: 100rpx; height: 100rpx; } .content .timing .resetbtn { margin-top: 20rpx; } .content .timing .model { width: 350rpx; height: 50rpx; margin-bottom: 20rpx; border-radius: 10rpx; box-shadow: 2rpx 2rpx 15rpx rgba(0, 0, 0, 0.1), -2rpx -2rpx 15rpx rgba(0, 0, 0, 0.1); background-image: linear-gradient(to right, #cdcdcd, #ffffff); opacity: 0.3; } .control { position: absolute; bottom: 20rpx; width: 100%; height: 230rpx; display: flex; align-items: center; justify-content: center; flex-direction: column; } .control .btn { height: 120rpx; border-radius: 15rpx; font-weight: 700; display: flex; flex-direction: column; align-items: center; justify-content: center; } .control .btn .text { font-size: 34rpx; } .control .btn .decorate { margin-top: 10rpx; width: 30rpx; height: 10rpx; border-radius: 5rpx; } .control .knowWrapper { width: 100%; display: flex; align-items: center; justify-content: center; } .control .knowWrapper .knowBtn { width: 210rpx; margin-left: 30rpx; } .control .knowWrapper .knowBtn .notknowtext { color: #a0a0a0; } .control .knowWrapper .knowBtn .dforNotKnow { background-color: #cdcdcd; } .control .knowWrapper .twoBtn { width: 330rpx; } .control .knowWrapper .left { margin-left: 0rpx; } .control .wasTaped { background-color: rgba(150, 150, 150, 0.1); } .control .answerBtn { width: 700rpx; } .control .answerBtn .text { color: #a0a0a0; } .control .answerBtn .decorate { background-color: #cdcdcd; } .control .nextBtn { width: 700rpx; } .control .bottomMenu { height: 80rpx; width: 100%; margin-top: 40rpx; margin-left: auto; margin-right: auto; display: flex; justify-content: space-around; align-items: center; } .control .bottomMenu .bottomBtn { width: 100rpx; height: 70rpx; font-size: 46rpx; font-weight: 600; color: #cdcdcd; line-height: 70rpx; text-align: center; } .control .bottomMenu .icon-addToNB-yes { color: #fb6a00; } .control .bottomMenu .wasTaped-bottom { color: #a0a0a0; } .control .bottomMenu .wasTaped-bottom1 { filter: grayscale(20%); } .doneWrapper { width: 750rpx; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; position: fixed; z-index: 10; } .doneWrapper .text { font-size: 50rpx; font-weight: 700; margin-top: -100rpx; margin-bottom: 100rpx; } .doneWrapper .decorate { width: 690rpx; height: 4rpx; border-radius: 2rpx; } .doneWrapper .title { font-size: 28rpx; height: 40rpx; margin-top: 20rpx; width: 670rpx; display: flex; align-items: center; justify-content: space-between; font-weight: 600; } .doneWrapper .reviewResWrapper { width: 750rpx; min-height: 460rpx; max-height: 620rpx; padding-bottom: 10rpx; } .doneWrapper .reviewResWrapper .item { width: 750rpx; display: flex; align-items: center; justify-content: space-between; font-weight: 600; } .doneWrapper .reviewResWrapper .words { font-size: 32rpx; height: 80rpx; } .doneWrapper .reviewResWrapper .words .word { color: #757575; margin-left: 40rpx; } .doneWrapper .reviewResWrapper .words .interval { color: #8a8a8a; margin-right: 40rpx; } .doneWrapper .reviewResWrapper .words .mastered { margin-right: 40rpx; } .doneWrapper .btnWraper { display: flex; align-items: center; justify-content: center; margin-top: 50rpx; } .doneWrapper .btnWraper .btn { width: 300rpx; height: 80rpx; line-height: 80rpx; text-align: center; border-radius: 40rpx; font-weight: 600; font-size: 32rpx; } .doneWrapper .btnWraper .back { background-color: rgba(150, 150, 150, 0.4); color: #ffffff; margin-right: 50rpx; } .doneWrapper .btnWraper .continue { color: #ffffff; } .doneWrapper .btnWraper .wasTaped { opacity: 0.6; } .test { position: absolute; top: 50rpx; right: 20rpx; display: flex; } .test .showInfo { width: 150rpx; font-size: 28rpx; height: 36rpx; border-radius: 6rpx; background-color: #f6f6f6; padding: 0; margin-right: 20rpx; } ================================================ FILE: miniprogram/pages/search/search.js ================================================ // pages/search/search.js import regeneratorRuntime, { async } from '../../lib/runtime/runtime'; const wordApi = require("../../utils/wordApi.js") const word_utils = require("../../utils/word_utils.js") const app = getApp() Page({ /** * 页面的初始数据 */ data: { true: true, searchWords: "", keyword: '', lemmaResult: [], directResult: [], history: [], haveResult: false, focus: false, DBtype: 0, hasMore: true, }, searchTimeId: -1, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { wx.setNavigationBarTitle({ title: '搜索', }) wx.setNavigationBarColor({ backgroundColor: '#f6f6f6', frontColor: '#000000', }) this.getHistory() this.setData({ focus: true }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, // input内容变化时对内容进行记录,同时设置定时器,停止输入达到一定时间则发起查询 handleInput(e) { let keyword = e.detail.value // console.log("keyword:", keyword) clearTimeout(this.searchTimeId); if (keyword == '') { this.setData({ keyword, haveResult: false }) return } this.setData({ keyword, haveResult: true }) let _this = this this.searchTimeId = setTimeout(() => { _this.getSearchResult(keyword); }, 500); }, // 清空输入框 clearInput() { this.setData({ searchWords: '', keyword: '', lemmaResult: [], directResult: [], haveResult: false, }) clearTimeout(this.searchTimeId); }, // 获取搜索结果(原型+作为前缀搜索) // 会预先变成小写并检查keyword内容(正则) 缓存前缀字段的搜索结果 async getSearchResult(keyword, skip = 0, getLemma = true, clear = true) { // return if (keyword == '') { return } // console.log('trigger get result for', keyword) keyword = keyword.toLowerCase() let expUnallow = new RegExp('[^A-Za-z- \u4e00-\u9fa5\'\.]', 'g') let expSymbol = new RegExp('^[ -\'\.]+$', 'g') // let zhExp = /[\u4e00-\u9fa5]/ let isInvalid = expUnallow.test(keyword) let onlySymbol = expSymbol.test(keyword) console.log('regexp is invalid test:', isInvalid) console.log('regexp only symbol test:', onlySymbol) if (isInvalid || onlySymbol) { this.setData({ lemmaResult: [], directResult: [], }) console.log('invalid') return } this.setData({ hasMore: true, }) if (clear) { this.setData({ lemmaResult: [], directResult: [], }) } wx.showLoading({ title: '玩命记载中...', }) console.log(keyword) let DBtype = this.data.DBtype let timer = setTimeout(function () { wx.hideLoading() wx.showToast({ title: '查询时间过长,已自动取消,请输入更精确的关键词', icon: 'none', duration: 1500, }) }, 12000) // 由于大数据库耗时较长,设置超时时长12s(服务端设置的超时时间为10s) let res = await wordApi.getSearchResult({ keyword, DBtype, skip, getLemma, }) console.log(res) this.transResult(res.data, keyword, clear) wx.hideLoading() clearTimeout(timer) this.isLoadingMore = false }, // 处理获得的搜索结果,包括获取搜索词是原型的什么变换以及仅保留第一条解释 transResult(searchresult, keyword, clear = true) { let lemmares = searchresult.lemmaSearch let directres = searchresult.directSearch for (let i = 0; i < lemmares.length; i++) { console.log(lemmares[i].exchange) let exchangeList = word_utils.toExchangeList(lemmares[i].exchange) let find = false let exchange = '' for (let m = 0; m < exchangeList.length; m++) { if (exchangeList[m].word.toLowerCase() == keyword) { exchange = exchange + exchangeList[m].name + '、' find = true } } if (!find) { lemmares.splice(i, 1) i-- continue } lemmares[i].exchange = exchange.substring(0, exchange.length - 1) if (lemmares[i].translation.indexOf('\n') != -1) { lemmares[i].translation = lemmares[i].translation.substring(0, lemmares[i].translation.indexOf('\n')) } } console.log('lemmares', lemmares) for (let i = 0; i < directres.length; i++) { if (directres[i].translation.indexOf('\n') != -1) { directres[i].translation = directres[i].translation.substring(0, directres[i].translation.indexOf('\n')) } // console.log('rect length of:', directres[i], word_utils.getResObjRectLength(directres[i])) } console.log('directres', directres) if (directres.length < 20) { this.setData({ hasMore: false, }) } if (!clear) { console.log('directResult before', this.data.directResult) lemmares = this.data.lemmaResult directres = this.data.directResult.concat(directres) } this.setData({ lemmaResult: lemmares, directResult: directres, }) }, //获取历史搜索 getHistory() { let history = wx.getStorageSync('history') if (!history) { return } this.setData({ history }) }, getWordDetail(e) { let index = e.currentTarget.dataset.index let type = parseInt(e.currentTarget.dataset.sourcetype) // dataset不区分大小写 // console.log('index:', index, 'type:', type) let type_l = ['lemmaResult', 'directResult', 'history'] let wordObjList = this.data[type_l[type]] let wordObj = wordObjList[index] // 首先获取单词对象(id、单词、释义) if (type == 0) { delete wordObj.exchange } console.log(wordObj) let history = this.data.history for (let i = 0; i < history.length; i++) { if (history[i].word_id == wordObj.word_id) { history.splice(i, 1) break } } if (history.length >= 20) { history.pop() } history.unshift(wordObj) this.setData({ history }) // wx.setStorageSync('history', this.data.history) // 实际每次都会跳转,不必设置到隐藏或卸载页面时才保存 // 跳转进行查询 wx.navigateTo({ url: '../word_detail/word_detail?word_id=' + wordObj.word_id, }) }, deleteHistory(e) { let index = e.currentTarget.dataset.index if (index == "-1") { this.setData({ history: [] }) } else { let history = this.data.history history.splice(index, 1) this.setData({ history }) } }, changeType() { let DBtype = this.data.DBtype if (DBtype == 0) { DBtype = 1 } else if (DBtype == 1) { DBtype = 0 } this.setData({ DBtype }) }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { console.log('trigger get more') if (!this.data.hasMore) return if (this.isLoadingMore) return this.isLoadingMore = true this.getSearchResult(this.data.keyword, this.data.directResult.length, false, false) }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { // wx.setStorageSync('history', this.data.history) }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { wx.setStorageSync('history', this.data.history) }, }) ================================================ FILE: miniprogram/pages/search/search.json ================================================ { "usingComponents": {} } ================================================ FILE: miniprogram/pages/search/search.less ================================================ .searchWrapper { width: 100%; height: 100rpx; position: fixed; z-index: 8; display: flex; align-items: center; justify-content: center; background-color: #f6f6f6; .searchIcon { position: absolute; top: 30rpx; left: 40rpx; font-size: 40rpx; font-weight: 500; color: #808080; z-index: 10; } .search { width: 85%; height: 70rpx; font-size: 32rpx; line-height: 60rpx; padding-left: 70rpx; // border: 4rpx solid #e2e2e2; border: 2rpx solid #e2e2e2; border-radius: 15rpx; background-color: white; color: #333333; font-family: Arial; } .placeHolder { font-size: 32rpx; line-height: 60rpx; // padding-left: 70rpx; // color: #333333; // font-family: 'Microsoft YaHei', Arial; } } .cancelWrapper { position: fixed; top: 0rpx; right: 8rpx; width: 100rpx; height: 100rpx; z-index: 9999; display: flex; align-items: center; justify-content: center; .cancel { width: 36rpx; height: 36rpx; // text-align: center; // font-size: 36rpx; // line-height: 36rpx; // color: #757575; background-color: #d6d6d6; border-radius: 18rpx; display: flex; align-items: center; justify-content: center; .cancelIcon { font-size: 24rpx; color: white; } } } .resultWrapper { margin-top: 100rpx; width: 100%; display: flex; flex-direction: column; align-items: center; // margin-bottom: 10rpx; .result { width: 670rpx; // 750-40*2 height: 80rpx; line-height: 80rpx; font-size: 32rpx; padding-left: 40rpx; padding-right: 40rpx; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 1; .word { color: #333333; } .desc { color: #333333; } .trans { color: #757575; font-size: 28rpx; } } .wasTaped { background-color: #e6e6e6; } } .resultTips { width: 100%; height: 60rpx; margin-bottom: 130rpx; display: flex; align-items: center; justify-content: center; .text { font-size: 28rpx; color: #757575; } } .historyWrapper { margin-top: 100rpx; width: 100%; display: flex; flex-direction: column; align-items: center; margin-bottom: 140rpx; .history { width: 670rpx; // 750-40*2 height: 80rpx; line-height: 80rpx; font-size: 32rpx; padding-left: 40rpx; padding-right: 40rpx; position: relative; .wordInfo { width: 630rpx; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 1; .word { color: #333333; } .trans { color: #757575; font-size: 28rpx; } } .delete { position: absolute; top: 0rpx; right: 40rpx; width: 30rpx; height: 80rpx; z-index: 5; // border-radius: 18rpx; display: flex; align-items: center; justify-content: center; .deleteIcon { font-size: 30rpx; color: #515151; } } } .clearAll { margin-top: 20rpx; margin-left: auto; margin-right: auto; width: 200rpx; font-size: 28rpx; color: #808080; } .wasTaped { background-color: #e6e6e6; } } .changeBigDB { position: fixed; width: 100%; height: 80rpx; padding-bottom: 40rpx; bottom: 0rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; background-color: #f6f6f6; z-index: 10; .text { font-size: 24rpx; line-height: 30rpx; color: #a0a0a0; .changeBtn { color: #515151; } } } ================================================ FILE: miniprogram/pages/search/search.wxml ================================================ {{item.word}} 的{{item.exchange}}     {{item.translation}} {{item.word}}     {{item.translation}} 没有更多结果了哦 {{item.word}}     {{item.translation}} 清除全部历史 当前在使用小词库,速度较快,能满足大部分需求 可切换大词库获得更多的搜索结果 当前在使用大词库,包含本应用所有词汇,速度较慢 可切换小词库获得更快的搜索速度 ================================================ FILE: miniprogram/pages/search/search.wxss ================================================ .searchWrapper { width: 100%; height: 100rpx; position: fixed; z-index: 8; display: flex; align-items: center; justify-content: center; background-color: #f6f6f6; } .searchWrapper .searchIcon { position: absolute; top: 30rpx; left: 40rpx; font-size: 40rpx; font-weight: 500; color: #808080; z-index: 10; } .searchWrapper .search { width: 85%; height: 70rpx; font-size: 32rpx; line-height: 60rpx; padding-left: 70rpx; border: 2rpx solid #e2e2e2; border-radius: 15rpx; background-color: white; color: #333333; font-family: Arial; } .searchWrapper .placeHolder { font-size: 32rpx; line-height: 60rpx; } .cancelWrapper { position: fixed; top: 0rpx; right: 8rpx; width: 100rpx; height: 100rpx; z-index: 9999; display: flex; align-items: center; justify-content: center; } .cancelWrapper .cancel { width: 36rpx; height: 36rpx; background-color: #d6d6d6; border-radius: 18rpx; display: flex; align-items: center; justify-content: center; } .cancelWrapper .cancel .cancelIcon { font-size: 24rpx; color: white; } .resultWrapper { margin-top: 100rpx; width: 100%; display: flex; flex-direction: column; align-items: center; } .resultWrapper .result { width: 670rpx; height: 80rpx; line-height: 80rpx; font-size: 32rpx; padding-left: 40rpx; padding-right: 40rpx; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 1; } .resultWrapper .result .word { color: #333333; } .resultWrapper .result .desc { color: #333333; } .resultWrapper .result .trans { color: #757575; font-size: 28rpx; } .resultWrapper .wasTaped { background-color: #e6e6e6; } .resultTips { width: 100%; height: 60rpx; margin-bottom: 130rpx; display: flex; align-items: center; justify-content: center; } .resultTips .text { font-size: 28rpx; color: #757575; } .historyWrapper { margin-top: 100rpx; width: 100%; display: flex; flex-direction: column; align-items: center; margin-bottom: 140rpx; } .historyWrapper .history { width: 670rpx; height: 80rpx; line-height: 80rpx; font-size: 32rpx; padding-left: 40rpx; padding-right: 40rpx; position: relative; } .historyWrapper .history .wordInfo { width: 630rpx; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 1; } .historyWrapper .history .wordInfo .word { color: #333333; } .historyWrapper .history .wordInfo .trans { color: #757575; font-size: 28rpx; } .historyWrapper .history .delete { position: absolute; top: 0rpx; right: 40rpx; width: 30rpx; height: 80rpx; z-index: 5; display: flex; align-items: center; justify-content: center; } .historyWrapper .history .delete .deleteIcon { font-size: 30rpx; color: #515151; } .historyWrapper .clearAll { margin-top: 20rpx; margin-left: auto; margin-right: auto; width: 200rpx; font-size: 28rpx; color: #808080; } .historyWrapper .wasTaped { background-color: #e6e6e6; } .changeBigDB { position: fixed; width: 100%; height: 80rpx; padding-bottom: 40rpx; bottom: 0rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; background-color: #f6f6f6; z-index: 10; } .changeBigDB .text { font-size: 24rpx; line-height: 30rpx; color: #a0a0a0; } .changeBigDB .text .changeBtn { color: #515151; } ================================================ FILE: miniprogram/pages/user/user.js ================================================ // pages/user/user.js import regeneratorRuntime, { async } from '../../lib/runtime/runtime'; const app = getApp() const modifyDict = { username: 0, pwd: 1, } const error_message = { empty: '请完成填写再重试', usernameUsed: '该账号已被注册', usernameInvalid1: '用户名仅能包含数字、中英文和下划线', usernameInvalid2: '用户名不能以下划线开头或结尾', pwdInvalid1: '密码仅能包含数字、英文字母和下划线', pwdInvalid2: '密码不能以下划线开头或结尾', pwdErr1: '所输入新密码与旧密码相同', pwdErr2: '旧密码错误', } const userApi = require("../../utils/userApi.js") Page({ /** * 页面的初始数据 */ data: { isLogin: false, userInfo: {}, defaultPic: 'https://pic2.zhimg.com/50/v2-b1e4eb7f72908a04306958f13ce45d94_hd.jpg?source=1940ef5c', changeType: -1, inputValue: {}, errMsg: '', }, control: { loginTimer: -1, pageHide: false, timer: -1, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { wx.setNavigationBarTitle({ title: '我的', }) this.init() }, init() { // console.log(app.globalData) let isLogin = app.globalData.isLogin let userInfo = {} if (isLogin) { userInfo = { avatar_pic: app.globalData.userInfo.avatar_pic, username: app.globalData.userInfo.username, user_id: app.globalData.userInfo.user_id, wx_user: app.globalData.userInfo.wx_user, } } this.setData({ isLogin, userInfo, }) if (app.globalData.tryingLogin) { let _this = this this.control.loginTimer = setInterval(function () { if (!app.globalData.tryingLogin) { _this.onShow() clearInterval(_this.control.loginTimer) } }, 200) } }, notDoneTips() { wx.showToast({ title: '此功能还在开发中哦~', icon: 'none', duration: 1500, }) }, goLogin() { wx.navigateTo({ url: '../login/login', }) }, goSettings() { if (!this.checkLogin()) return wx.navigateTo({ url: "../user_settings/user_settings" }) }, checkLogin() { if (this.data.isLogin) { return true } else { wx.showToast({ title: '请先登录哦~', icon: 'none', duration: 1500, }) return false } }, logout() { let _this = this wx.showModal({ // title: '退出登录', content: '退出登录后将无法继续学习哦~', success(res) { console.log('showModal res', res) if (res.confirm) { console.log('用户点击确定') app.globalData.isLogin = false app.globalData.userInfo = {} app.globalData.updatedForIndex = true app.globalData.updatedForOverview = true _this.setData({ isLogin: false, userInfo: {} }) wx.removeStorageSync('userInfo') } else if (res.cancel) { console.log('用户点击取消') } } }) }, previewAvatar() { wx.previewImage({ current: this.data.userInfo.avatar_pic, // 当前显示图片的http链接 urls: [this.data.userInfo.avatar_pic] // 需要预览的图片http链接列表 }) }, changeAvatar() { if (!this.checkLogin()) return wx.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: ['album', 'camera'], success(res) { // tempFilePath可以作为img标签的src属性显示图片 // const tempFilePaths = res.tempFilePaths console.log(res) const tempFilePaths = res.tempFilePaths[0] app.globalData.forChangeAvatar.tempImgSrc = tempFilePaths wx.navigateTo({ url: '../image_cropper/image_cropper', }) } }) }, modify(e) { if (!this.checkLogin()) return let type = e.currentTarget.dataset.type this.setData({ changeType: modifyDict[type], inputValue: { username: '', oldPwd: '', newPwd: '', }, errMsg: '', }) let _this = this setTimeout(function () { _this.setData({ focus: true }) }, 500) }, handleInput(e) { console.log('event', e) let value = e.detail.value let inputType = e.currentTarget.dataset.inputtype console.log('inputType', inputType) let inputValue = this.data.inputValue inputValue[inputType] = value this.setData({ inputValue }) }, setErrType(errtype) { let _this = this this.setData({ errMsg: error_message[errtype] }) clearTimeout(this.control.timer) this.control.timer = setTimeout(() => { _this.setData({ errMsg: '' }) }, 2000) }, async changeUsername() { // 用户名合法性判断,只能包含字母、数字、中文、下划线且不能以下划线开头或结尾 // let exp1 = /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/ let username = this.data.inputValue.username if (username == '') { this.setErrType('empty') return false } let exp1 = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/ let exp2 = /^(?!_)(?!.*?_$).+$/ if (!exp1.test(username)) { this.setErrType('usernameInvalid1') return false } if (!exp2.test(username)) { this.setErrType('usernameInvalid2') return false } let msg = '用户名更改成功~' if (username == this.data.userInfo.username) { msg = '与原用户名相同,无需更改' } else { let res1 = await userApi.checkUsernameInDB({ username }) if (!res1.errorcode) { return false } if (res1.data.isFind) { this.setErrType('usernameUsed') return false } let data = { user_id: this.data.userInfo.user_id, } if (app.globalData.userInfo.wx_user == true && app.globalData.userInfo.settings.auto_update_username == true) { data.type = ['username', 'settings'] data.value = [username, { auto_update_username: false }] } else { data.type = 'username' data.value = username } let res2 = await userApi.changeUserInfo(data) if (res2.data == true) { this.setData({ 'userInfo.username': username }) app.globalData.userInfo.username = username if (app.globalData.userInfo.wx_user == true && app.globalData.userInfo.settings.auto_update_username == true) { app.globalData.userInfo.settings.auto_update_username = false } } else { wx.showToast({ title: '更改出错,请重试', icon: 'none', duration: 1500, }) return false } } wx.showToast({ title: msg, icon: 'none', duration: 1500, }) return true }, async changePwd() { // 密码合法性判断,只能包含字母、数字、下划线且不能以下划线开头或结尾 let oldPwd = this.data.inputValue.oldPwd let newPwd = this.data.inputValue.newPwd if (oldPwd == '' || newPwd == '') { this.setErrType('empty') return false } let exp1 = /^[a-zA-Z0-9_]+$/ let exp2 = /^(?!_)(?!.*?_$).+$/ if (!exp1.test(oldPwd) || !exp1.test(newPwd)) { this.setErrType('pwdInvalid1') return false } if (!exp2.test(newPwd) || !exp2.test(newPwd)) { this.setErrType('pwdInvalid2') return false } if (newPwd == oldPwd) { this.setErrType('pwdErr1') return false } else { let res = await userApi.changePwd({ user_id: this.data.userInfo.user_id, oldPwd, newPwd, }) if (res.data != true) { this.setErrType('pwdErr2') return false } wx.showToast({ title: '密码修改成功~', icon: 'none', duration: 1500, }) return true } }, async confirmModify() { let changeType = this.data.changeType if (changeType == modifyDict['username']) { let success = await this.changeUsername() if (!success) return } else if ((changeType == modifyDict['pwd'])) { let success = await this.changePwd() if (!success) return } this.setData({ changeType: -1, }) }, cancelModify() { this.setData({ changeType: -1, }) }, // 为拥有进入过渡动画用,实际可不做处理 onEnter() { }, pageleave(e) { console.log('pageleave', e) this.setData({ changeType: -1, }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { if (this.control.pageHide) { if (this.data.isLogin != app.globalData.isLogin) { let userInfo = {} if (app.globalData.isLogin) { userInfo = { avatar_pic: app.globalData.userInfo.avatar_pic, username: app.globalData.userInfo.username, user_id: app.globalData.userInfo.user_id, wx_user: app.globalData.userInfo.wx_user, } } else { userInfo = {} } this.setData({ isLogin: app.globalData.isLogin, userInfo }) } if (app.globalData.forChangeAvatar.change) { this.setData({ 'userInfo.avatar_pic': app.globalData.forChangeAvatar.imgSrc }) app.globalData.forChangeAvatar = { change: false, tempImgSrc: '', imgSrc: '', } } this.control.pageHide = false } }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { this.control.pageHide = true }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } }) ================================================ FILE: miniprogram/pages/user/user.json ================================================ { "usingComponents": {} } ================================================ FILE: miniprogram/pages/user/user.less ================================================ .header { width: 100%; height: 500rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; .background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; filter: blur(60rpx); z-index: -1; opacity: 0.6; .bgImg { width: 100%; height: 100%; } } .loginBtn { width: 300rpx; height: 80rpx; background-color: #90ced3; color: #FFFFFF; font-size: 36rpx; line-height: 80rpx; text-align: center; border-radius: 10rpx; font-weight: 800; // box-shadow: 4rpx 4rpx 4rpx #e6e6e6; } .wasTaped { opacity: 0.7; } .avatar { width: 160rpx; height: 160rpx; border-radius: 50%; border: solid 4rpx #e6e6e6; margin-top: 20rpx; } .username { margin-top: 30rpx; color: #ffffff; font-size: 44rpx; text-shadow: 2rpx 2rpx 2rpx #bfbfbf; } } .optionList { width: 100%; // height: 600rpx; background-color: #ffffff; .option { width: 670rpx; // 750-40*2 height: 100rpx; padding: 0 40rpx; background-color: #ffffff; // background-color: #f6f6f6; // border-bottom: solid 4rpx #e6e6e6; display: flex; align-items: center; justify-content: center; position: relative; font-weight: 600; .optionIcon { width: 40rpx; height: 40rpx; color: #bfbfbf; color: #8a8a8a; // color: #fd6802; // font-weight: 600; font-size: 40rpx; } .optionName { width: 600rpx; // 670-40-30 margin-left: 30rpx; color: #515151; font-weight: 600; font-size: 32rpx; } .more { position: absolute; right: 40rpx; top: 30rpx; width: 40rpx; height: 40rpx; color: #bfbfbf; color: #8a8a8a; // font-weight: 600; font-size: 40rpx; } } .split { width: 100%; height: 20rpx; background-color: #f6f6f6; } .wasTaped { background-color: #e6e6e6; } } .logoutBtn { width: 250rpx; height: 80rpx; line-height: 80rpx; text-align: center; margin-top: 50rpx; margin-left: auto; margin-right: auto; color: #8a8a8a; color: #bfbfbf; font-weight: 600; background-color: #f6f6f6; border-radius: 10rpx; } .wasTaped { background-color: rgba(150, 150, 150, 0.1); } .customizeWrapper { width: 750rpx; height: 500rpx; margin-top: 50rpx; position: relative; z-index: 101; .customValue { width: 600rpx; height: 80rpx; margin-top: 20rpx; margin-left: auto; margin-right: auto; padding: 0 30rpx; border: 2rpx solid #e2e2e2; border-radius: 10rpx; font-size: 36rpx; color: #515151; } .placeHolder { font-size: 30rpx; } .errMsg{ margin-top: 20rpx; width: 600rpx; height: 60rpx; margin-left: auto; margin-right: auto; text-align: center; line-height: 60rpx; font-size: 30rpx; color: rgb(247, 98, 96); } .btn { width: 300rpx; height: 80rpx; margin-top: 20rpx; margin-left: auto; margin-right: auto; font-size: 36rpx; font-weight: 600; line-height: 80rpx; text-align: center; color: #ffffff; background-color: #90ced3; // background-color: #fd6802; border-radius: 10rpx; } .wasTaped { opacity: 0.7; } } ================================================ FILE: miniprogram/pages/user/user.wxml ================================================ 登录 {{userInfo.username}} 更改头像 更改昵称 修改密码 更多设置 退出登录 {{errMsg}} 确认 ================================================ FILE: miniprogram/pages/user/user.wxss ================================================ .header { width: 100%; height: 500rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; } .header .background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; filter: blur(60rpx); z-index: -1; opacity: 0.6; } .header .background .bgImg { width: 100%; height: 100%; } .header .loginBtn { width: 300rpx; height: 80rpx; background-color: #90ced3; color: #FFFFFF; font-size: 36rpx; line-height: 80rpx; text-align: center; border-radius: 10rpx; font-weight: 800; } .header .wasTaped { opacity: 0.7; } .header .avatar { width: 160rpx; height: 160rpx; border-radius: 50%; border: solid 4rpx #e6e6e6; margin-top: 20rpx; } .header .username { margin-top: 30rpx; color: #ffffff; font-size: 44rpx; text-shadow: 2rpx 2rpx 2rpx #bfbfbf; } .optionList { width: 100%; background-color: #ffffff; } .optionList .option { width: 670rpx; height: 100rpx; padding: 0 40rpx; background-color: #ffffff; display: flex; align-items: center; justify-content: center; position: relative; font-weight: 600; } .optionList .option .optionIcon { width: 40rpx; height: 40rpx; color: #bfbfbf; color: #8a8a8a; font-size: 40rpx; } .optionList .option .optionName { width: 600rpx; margin-left: 30rpx; color: #515151; font-weight: 600; font-size: 32rpx; } .optionList .option .more { position: absolute; right: 40rpx; top: 30rpx; width: 40rpx; height: 40rpx; color: #bfbfbf; color: #8a8a8a; font-size: 40rpx; } .optionList .split { width: 100%; height: 20rpx; background-color: #f6f6f6; } .optionList .wasTaped { background-color: #e6e6e6; } .logoutBtn { width: 250rpx; height: 80rpx; line-height: 80rpx; text-align: center; margin-top: 50rpx; margin-left: auto; margin-right: auto; color: #8a8a8a; color: #bfbfbf; font-weight: 600; background-color: #f6f6f6; border-radius: 10rpx; } .wasTaped { background-color: rgba(150, 150, 150, 0.1); } .customizeWrapper { width: 750rpx; height: 500rpx; margin-top: 50rpx; position: relative; z-index: 101; } .customizeWrapper .customValue { width: 600rpx; height: 80rpx; margin-top: 20rpx; margin-left: auto; margin-right: auto; padding: 0 30rpx; border: 2rpx solid #e2e2e2; border-radius: 10rpx; font-size: 36rpx; color: #515151; } .customizeWrapper .placeHolder { font-size: 30rpx; } .customizeWrapper .errMsg { margin-top: 20rpx; width: 600rpx; height: 60rpx; margin-left: auto; margin-right: auto; text-align: center; line-height: 60rpx; font-size: 30rpx; color: #f76260; } .customizeWrapper .btn { width: 300rpx; height: 80rpx; margin-top: 20rpx; margin-left: auto; margin-right: auto; font-size: 36rpx; font-weight: 600; line-height: 80rpx; text-align: center; color: #ffffff; background-color: #90ced3; border-radius: 10rpx; } .customizeWrapper .wasTaped { opacity: 0.7; } ================================================ FILE: miniprogram/pages/user_settings/user_settings.js ================================================ // pages/user_settings/user_settings.js import regeneratorRuntime, { async } from '../../lib/runtime/runtime'; const wordApi = require("../../utils/wordApi.js") const userApi = require("../../utils/userApi.js") const app = getApp() let timingRange = [500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000, '自定义'] let groupSizeRange = [10, 15, 20, 25, 30, 35, 40, '自定义'] let voiceTypeRange = ['英式', '美式'] let lRepeatRange = [1, 2, 3, 4] let rRepeatRange = [1, 2, 3] let modeNameRange = ['看词选义', '看词识义', '看义识词'] let modeRange = ['chooseTrans', 'recallTrans', 'recallWord'] let taskLoadRange = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, '自定义'] let placeholderText = { timing_duration: '请输入想要延时的毫秒数如 1500', group_size: '请输入每组单词数量如 20', daily_learn: '请输入目标学习量为几组单词如 2', daily_review: '请输入目标复习量为几组单词如 2', } Page({ /** * 页面的初始数据 */ data: { timingRange: timingRange, groupSizeRange: groupSizeRange, voiceTypeRange: voiceTypeRange, lRepeatRange: lRepeatRange, rRepeatRange: rRepeatRange, modeNameRange: modeNameRange, taskLoadRange: taskLoadRange, switchSettings: {}, picker: {}, customTypeValue: {}, isCustomize: false, focus: true, inputValue: '', }, settings: {}, isChange: false, customObj: {}, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { wx.setNavigationBarTitle({ title: '设置', }) this.init() }, init() { let settings = JSON.parse(JSON.stringify(app.globalData.userInfo.settings)) this.settings = settings let wx_user = app.globalData.userInfo.wx_user let switchSettings = {} let picker = {} let customTypeValue = {} if (wx_user) { switchSettings.auto_update_avatar = (settings.auto_update_avatar === undefined) ? true : settings.auto_update_avatar switchSettings.auto_update_username = (settings.auto_update_username === undefined) ? true : settings.auto_update_username } switchSettings.timing = (settings.timing === undefined) ? true : settings.timing switchSettings.autoplay = (settings.autoplay === undefined) ? true : settings.autoplay switchSettings.daily_task = (settings.daily_task === undefined) ? false : settings.daily_task picker.timing_duration = (settings.timing_duration === undefined) ? 2 : ((timingRange.indexOf(settings.timing_duration) == -1) ? 10 : (timingRange.indexOf(settings.timing_duration))) picker.group_size = (settings.group_size === undefined) ? 2 : ((groupSizeRange.indexOf(settings.group_size) == -1) ? 7 : (groupSizeRange.indexOf(settings.group_size))) picker.voice_type = (settings.voice_type === undefined) ? 1 : (settings.voice_type - 1) picker.learn_repeat_t = (settings.learn_repeat_t === undefined) ? 2 : lRepeatRange.indexOf(settings.learn_repeat_t) picker.learn_first_m = (settings.learn_first_m === undefined) ? 0 : modeRange.indexOf(settings.learn_first_m) picker.learn_second_m = (settings.learn_second_m === undefined) ? 1 : modeRange.indexOf(settings.learn_second_m) picker.learn_third_m = (settings.learn_third_m === undefined) ? 2 : modeRange.indexOf(settings.learn_third_m) picker.learn_fourth_m = (settings.learn_fourth_m === undefined) ? 1 : modeRange.indexOf(settings.learn_fourth_m) picker.review_repeat_t = (settings.review_repeat_t === undefined) ? 0 : rRepeatRange.indexOf(settings.review_repeat_t) picker.review_first_m = (settings.review_first_m === undefined) ? 1 : modeRange.indexOf(settings.review_first_m) picker.review_second_m = (settings.review_second_m === undefined) ? 2 : modeRange.indexOf(settings.review_second_m) picker.review_third_m = (settings.review_third_m === undefined) ? 1 : modeRange.indexOf(settings.review_third_m) picker.daily_learn = (settings.daily_learn === undefined) ? 0 : ((taskLoadRange.indexOf(settings.daily_learn) == -1) ? 10 : (taskLoadRange.indexOf(settings.daily_learn))) picker.daily_review = (settings.daily_review === undefined) ? 0 : ((taskLoadRange.indexOf(settings.daily_review) == -1) ? 10 : (taskLoadRange.indexOf(settings.daily_review))) customTypeValue.timing_duration = (picker.timing_duration != 10) ? timingRange[picker.timing_duration] : settings.timing_duration customTypeValue.group_size = (picker.group_size != 7) ? groupSizeRange[picker.group_size] : settings.group_size customTypeValue.daily_learn = (picker.daily_learn != 10) ? taskLoadRange[picker.daily_learn] : settings.daily_learn customTypeValue.daily_review = (picker.daily_review != 10) ? taskLoadRange[picker.daily_review] : settings.daily_review this.setData({ wx_user, switchSettings, picker, customTypeValue, }) }, async switchChange(e) { // console.log(e) let value = e.detail.value let type = e.currentTarget.dataset.type if (type == 'timing') { this.setData({ 'switchSettings.timing': value, }) if (this.settings.timing != value) { this.settings.timing = value this.isChange = true } } else if (type == 'autoplay') { this.setData({ 'switchSettings.autoplay': value, }) if (this.settings.autoplay != value) { this.settings.autoplay = value this.isChange = true } } else if (type == 'daily_task') { this.setData({ 'switchSettings.daily_task': value, }) if (this.settings.daily_task != value) { this.settings.daily_task = value if (value == true) { if (!this.settings.daily_learn) this.settings.daily_learn = 1 if (!this.settings.daily_review) this.settings.daily_review = 1 } this.isChange = true } } else if (type == 'auto_update_avatar') { this.setData({ 'switchSettings.auto_update_avatar': value, }) if (this.settings.auto_update_avatar != value) { this.settings.auto_update_avatar = value this.isChange = true } if (value == false) { let prefix = app.globalData.userInfo.avatar_pic.substring(0, 6) // console.log('avatar_pic', app.globalData.userInfo.avatar_pic) console.log(prefix) if (prefix != 'cloud:') { this.uploadAndModify(app.globalData.userInfo.avatar_pic) } } } else if (type == 'auto_update_username') { this.setData({ 'switchSettings.auto_update_username': value, }) if (this.settings.auto_update_username != value) { this.settings.auto_update_username = value this.isChange = true } } }, rangeDict: { timing_duration: 'timingRange', group_size: 'groupSizeRange', voice_type: 'voiceTypeRange', // 学习相关 learn_repeat_t: 'lRepeatRange', learn_first_m: 'modeNameRange', learn_second_m: 'modeNameRange', learn_third_m: 'modeNameRange', learn_fourth_m: 'modeNameRange', // 复习相关 review_repeat_t: 'rRepeatRange', review_first_m: 'modeNameRange', review_second_m: 'modeNameRange', review_third_m: 'modeNameRange', // 每日任务相关 daily_learn: 'taskLoadRange', daily_review: 'taskLoadRange', }, pickerChange(e) { console.log('event', e) let value = parseInt(e.detail.value) let type = e.currentTarget.dataset.type // console.log('this.rangeDict[type]', this.rangeDict[type]) let rangeListName = this.rangeDict[type] let newValue = this.data[rangeListName][value] if (rangeListName == 'modeNameRange') newValue = modeRange[value] if (type == 'voice_type') { newValue = value + 1 } if (this.data.picker[type] != value && this.settings != newValue) { this.settings[type] = newValue this.isChange = true let picker = this.data.picker picker[type] = value this.setData({ picker }) } }, customPickerChange(e) { console.log('event', e) let value = parseInt(e.detail.value) let type = e.currentTarget.dataset.type let rangeListName = this.rangeDict[type] let newValue = this.data[rangeListName][value] if (newValue == '自定义') { // 调起输入框供用户输入 this.customObj = { value, type } this.setData({ isCustomize: true, placeholder: placeholderText[type], inputValue: '', }) let _this = this setTimeout(function () { _this.setData({ focus: true }) }, 500) return } if (this.data.picker[type] != value && this.settings != newValue) { this.settings[type] = newValue this.isChange = true let picker = this.data.picker picker[type] = value let customTypeValue = this.data.customTypeValue customTypeValue[type] = newValue this.setData({ picker, customTypeValue, }) } }, pageleave(e) { console.log('pageleave', e) this.setData({ isCustomize: false, }) }, handleInput(e) { let value = e.detail.value this.customObj.inputValue = value }, onConfirmInput(e) { console.log('onConfirmInput', e) this.confirmCustomize() }, confirmCustomize() { let inputValue = this.customObj.inputValue let exp = new RegExp('[^0-9]', 'g') if (exp.test(inputValue)) { console.log('invalid') wx.showToast({ title: '输入内容有误,请重试', icon: 'none', duration: 1000, }) return } console.log('valid') let num = parseInt(inputValue) this.settings[this.customObj.type] = num this.isChange = true let picker = this.data.picker picker[this.customObj.type] = this.customObj.value let customTypeValue = this.data.customTypeValue customTypeValue[this.customObj.type] = num this.setData({ picker, customTypeValue, isCustomize: false, }) }, // 为拥有进入过渡动画用,实际可不做处理 onEnter() { }, getControl() { console.log('settings', this.settings) console.log('customObj', this.customObj) }, async uploadAndModify(imgSrc) { let res = await userApi.downloadFile(imgSrc) let tempFilePath = res.tempFilePath console.log('downloadFile', res) let res1 = await userApi.uploadFile(tempFilePath) let file = res1.fileID console.log('file', file) console.log('uploadFile', res1) let res2 = await userApi.changeUserInfo({ user_id: app.globalData.userInfo.user_id, type: 'avatar_pic', value: file }) console.log('changeUserInfo', res2) if (res2.data == true) { app.globalData.userInfo.avatar_pic = file app.globalData.forChangeAvatar.change = true app.globalData.forChangeAvatar.imgSrc = file } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: async function () { if (this.isChange) { // 由于可能出现反复更改又改回原来的情况,为减少请求次数,在此通过对象比对检查是否真的进行更改 let realIsChange = false let oldSettings = JSON.parse(JSON.stringify(app.globalData.userInfo.settings)) let oldSettingsKeys = Object.keys(oldSettings) let newSettingsKeys = Object.keys(this.settings) if (oldSettingsKeys.length == newSettingsKeys.length) { oldSettingsKeys.sort() newSettingsKeys.sort() // 经排序后的设置的key的数组,若key本身不同或key对应的value不同,则说明settings发生了改变 for (let i = 0; i < oldSettingsKeys.length; i++) { if (oldSettingsKeys[i] != newSettingsKeys[i] || oldSettings[oldSettingsKeys[i]] != this.settings[newSettingsKeys[i]]) { realIsChange = true break } } } else { realIsChange = true } if (!realIsChange) return let res1 = await userApi.changeSettings({ user_id: app.globalData.userInfo.user_id, settings: this.settings, }) console.log('try1', res1) if (!res1.data) { // 再次尝试 let res2 = await userApi.changeSettings({ user_id: app.globalData.userInfo.user_id, settings: this.settings, }) if (!res2.data) { wx.showToast({ title: '更改设置失败,请重试', icon: 'none', duration: 1500, }) return } } console.log('更改设置成功') app.globalData.userInfo.settings = this.settings app.globalData.updatedForOverview = true } }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } }) ================================================ FILE: miniprogram/pages/user_settings/user_settings.json ================================================ { "usingComponents": {} } ================================================ FILE: miniprogram/pages/user_settings/user_settings.less ================================================ .optionList { width: 100%; margin-bottom: 100rpx; .option { width: 100%; height: 100rpx; display: flex; align-items: center; justify-content: space-between; background-color: #ffffff; .optionName { font-size: 32rpx; font-weight: 600; color: #515151; margin-left: 40rpx; } .optionValue { font-size: 28rpx; font-weight: 600; color: #757575; margin-right: 40rpx; .switch { zoom: 0.9; margin-right: -10rpx; } } } .wasTaped { background-color: rgba(150, 150, 150, 0.1); } .split { width: 100%; height: 20rpx; background-color: #f6f6f6; } } .mask { position: absolute; width: 100%; height: 100%; z-index: 100; background-color: rgba(0, 0, 0, 0.7); } .customizeWrapper { width: 750rpx; height: 500rpx; margin-top: 50rpx; position: relative; z-index: 101; .customValue { width: 600rpx; height: 80rpx; margin-top: 20rpx; margin-left: auto; margin-right: auto; padding: 0 30rpx; border: 2rpx solid #e2e2e2; border-radius: 10rpx; font-size: 36rpx; color: #515151; } .placeHolder{ font-size: 30rpx; } .btn { width: 300rpx; height: 80rpx; margin-top: 100rpx; margin-left: auto; margin-right: auto; font-size: 36rpx; font-weight: 600; line-height: 80rpx; text-align: center; color: #ffffff; background-color: #90ced3; // background-color: #fd6802; border-radius: 10rpx; } .wasTaped { opacity: 0.7; } } .resetbtn { margin-top: 100rpx; margin-left: auto; margin-right: auto; } ================================================ FILE: miniprogram/pages/user_settings/user_settings.wxml ================================================ 自动更新微信头像 自动更新微信昵称 遮挡单词或释义时倒计时 倒计时时间(ms) {{customTypeValue.timing_duration}} 每组单词数量 {{customTypeValue.group_size}} 单词自动发音 发音类型 {{voiceTypeRange[picker.voice_type]}} 学习时重复次数 {{lRepeatRange[picker.learn_repeat_t]}} 第一次重复题型 {{modeNameRange[picker.learn_first_m]}} 第二次重复题型 {{modeNameRange[picker.learn_second_m]}} 第三次重复题型 {{modeNameRange[picker.learn_third_m]}} 第四次重复题型 {{modeNameRange[picker.learn_fourth_m]}} 复习时重复次数 {{rRepeatRange[picker.review_repeat_t]}} 第一次重复题型 {{modeNameRange[picker.review_first_m]}} 重复/错误后第二次题型 {{modeNameRange[picker.review_second_m]}} 重复/错误后第三次题型 {{modeNameRange[picker.review_third_m]}} 每日任务 每日学习量(整数组单词) {{customTypeValue.daily_learn * customTypeValue.group_size}} 每日复习量(整数组单词) {{customTypeValue.daily_review * customTypeValue.group_size}} 确认 ================================================ FILE: miniprogram/pages/user_settings/user_settings.wxss ================================================ .optionList { width: 100%; margin-bottom: 100rpx; } .optionList .option { width: 100%; height: 100rpx; display: flex; align-items: center; justify-content: space-between; background-color: #ffffff; } .optionList .option .optionName { font-size: 32rpx; font-weight: 600; color: #515151; margin-left: 40rpx; } .optionList .option .optionValue { font-size: 28rpx; font-weight: 600; color: #757575; margin-right: 40rpx; } .optionList .option .optionValue .switch { zoom: 0.9; margin-right: -10rpx; } .optionList .wasTaped { background-color: rgba(150, 150, 150, 0.1); } .optionList .split { width: 100%; height: 20rpx; background-color: #f6f6f6; } .mask { position: absolute; width: 100%; height: 100%; z-index: 100; background-color: rgba(0, 0, 0, 0.7); } .customizeWrapper { width: 750rpx; height: 500rpx; margin-top: 50rpx; position: relative; z-index: 101; } .customizeWrapper .customValue { width: 600rpx; height: 80rpx; margin-top: 20rpx; margin-left: auto; margin-right: auto; padding: 0 30rpx; border: 2rpx solid #e2e2e2; border-radius: 10rpx; font-size: 36rpx; color: #515151; } .customizeWrapper .placeHolder { font-size: 30rpx; } .customizeWrapper .btn { width: 300rpx; height: 80rpx; margin-top: 100rpx; margin-left: auto; margin-right: auto; font-size: 36rpx; font-weight: 600; line-height: 80rpx; text-align: center; color: #ffffff; background-color: #90ced3; border-radius: 10rpx; } .customizeWrapper .wasTaped { opacity: 0.7; } .resetbtn { margin-top: 100rpx; margin-left: auto; margin-right: auto; } ================================================ FILE: miniprogram/pages/word_detail/word_detail.js ================================================ // pages/word_detail/word_detail.js import regeneratorRuntime, { async } from '../../lib/runtime/runtime'; const wordApi = require("../../utils/wordApi.js") const word_utils = require("../../utils/word_utils.js") const app = getApp() const colorList = ['#ffb284', '#99c4d3', '#d0e6a5', '#86e3ce', '#ffdd95', '#fa897b', '#ccabd8', '#80beaf', '#b3ddd1', '#d1dce2', '#ef9d6d', '#c6c09c', '#f5cec7', '#ffc98b', '#b598c6', '#73c8dd', '#c56a4b'] const innerAudioContext = wx.createInnerAudioContext({ useWebAudioImplement: true }) Page({ /** * 页面的初始数据 */ data: { // bgStyle: '#ffb284', // bgStyle: '#d1dce0', colorType: 16, word_id: 0, wordDetail: {}, voiceUrl: '', isInNotebook: false, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { wx.setNavigationBarTitle({ title: '单词详情', }) let colorType = Math.floor(Math.random() * 17) if (options.colorType) { colorType = options.colorType } wx.setNavigationBarColor({ backgroundColor: colorList[colorType], frontColor: '#ffffff', }) this.setData({ colorType }) console.log(options) // let pages = getCurrentPages() // let thisPage = pages[pages.length-1] // let pagesOptions = thisPage.options // console.log(pagesOptions) let word_id = parseInt(options.word_id) this.getDetail(word_id) }, async getDetail(word_id) { let user_id = -1 let isLogin = app.globalData.isLogin if (isLogin) user_id = app.globalData.userInfo.user_id let res = await wordApi.getWordDetail({ word_id, user_id, }) let wordDetail = JSON.parse(JSON.stringify(res.data)) console.log(wordDetail) wordDetail = word_utils.handleWordDetail(wordDetail) console.log(wordDetail) this.setData({ wordDetail, isLogin, isInNotebook: wordDetail.in_notebook, }) let voiceUrl = word_utils.getWordVoiceUrl(wordDetail.word) innerAudioContext.src = voiceUrl }, playVoice() { innerAudioContext.stop() innerAudioContext.play() }, // 调整是否添加到生词本 toggleAddToNB: async function () { let add = this.data.isInNotebook let res = await wordApi.toggleAddToNB({ user_id: app.globalData.userInfo.user_id, word_id: this.data.wordDetail.word_id, add: !add, }) console.log(res) if (res.data) { this.setData({ isInNotebook: !add, }) } else { wx.showToast({ title: '操作出错,请重试', icon: 'none', duration: 1000, }) } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { if (this.data.wordDetail.in_notebook != this.data.isInNotebook) app.globalData.updatedForOverview = true }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } }) ================================================ FILE: miniprogram/pages/word_detail/word_detail.json ================================================ { "usingComponents": {} } ================================================ FILE: miniprogram/pages/word_detail/word_detail.less ================================================ .bgWrapper { width: 100%; height: 100%; position: fixed; z-index: -100; // background-image: linear-gradient(to bottom, #99c4d3, #FFFFFF); } .word { margin-top: 70rpx; margin-left: 40rpx; height: 80rpx; font-size: 64rpx; // font-family: 'Microsoft YaHei', 'Times New Roman', Times, serif; font-weight: 700; line-height: 70rpx; position: relative; .notebookBtn { position: absolute; top: 0; right: 10rpx; width: 80rpx; height: 80rpx; font-size: 46rpx; color: #f0f0f0; line-height: 80rpx; text-align: center; } .icon-addToNB-yes { color: #fb6a00; } .wasTaped-bottom { color: #ffffff; } .wasTaped-bottom1 { filter: grayscale(20%); } } .pron { margin-top: 20rpx; margin-left: 45rpx; height: 40rpx; line-height: 40rpx; font-size: 30rpx; // font-weight: 600; font-family: Arial, Helvetica, sans-serif; // color: #f6f6f6; color: #ffffff; } .tagContainer { width: 670rpx; margin-top: 10rpx; margin-bottom: 40rpx; margin-left: auto; margin-right: auto; display: flex; flex-wrap: wrap; .tag { margin-right: 10rpx; height: 40rpx; line-height: 40rpx; font-size: 26rpx; border-radius: 20rpx; background-color: rgba(0, 0, 0, 0.2); color: #e6e6e6; padding: 0rpx 20rpx; margin-top: 10rpx; } } .contentCard { width: 95%; margin-top: 20rpx; margin-left: auto; margin-right: auto; background-color: rgba(255, 255, 255, 0.6); border-radius: 20rpx; box-shadow: 2rpx 2rpx 10rpx rgba(0, 0, 0, 0.1); .title { width: 655rpx; margin-top: 26rpx; margin-left: auto; margin-right: auto; font-size: 36rpx; line-height: 60rpx; font-weight: 700; } .contentWrapper { width: 650rpx; margin-top: 14rpx; margin-left: auto; margin-right: auto; padding-bottom: 50rpx; .content { font-size: 32rpx; // font-family: Arial, Helvetica, sans-serif; color: #757575; // color: #515151; margin-bottom: 10rpx; // font-weight: 600; line-height: 40rpx; .exchangeName { display: inline-block; width: 220rpx; } .exchangeWord { display: inline-block; } .pos { font-size: 28rpx; color: #a0a0a0; margin-right: 10rpx; } } } } .last { margin-bottom: 50rpx; } ================================================ FILE: miniprogram/pages/word_detail/word_detail.wxml ================================================ {{wordDetail.word}} / {{wordDetail.phonetic}} / {{item}} 英文释义 {{item.pos}} {{item.meaning}} 中文释义 {{item.pos}} {{item.meaning}} 词形变换 {{item.name}} {{item.word}} {{item.word}} 的{{item.name}} ================================================ FILE: miniprogram/pages/word_detail/word_detail.wxss ================================================ .bgWrapper { width: 100%; height: 100%; position: fixed; z-index: -100; } .word { margin-top: 70rpx; margin-left: 40rpx; height: 80rpx; font-size: 64rpx; font-weight: 700; line-height: 70rpx; position: relative; } .word .notebookBtn { position: absolute; top: 0; right: 10rpx; width: 80rpx; height: 80rpx; font-size: 46rpx; color: #f0f0f0; line-height: 80rpx; text-align: center; } .word .icon-addToNB-yes { color: #fb6a00; } .word .wasTaped-bottom { color: #ffffff; } .word .wasTaped-bottom1 { filter: grayscale(20%); } .pron { margin-top: 20rpx; margin-left: 45rpx; height: 40rpx; line-height: 40rpx; font-size: 30rpx; font-family: Arial, Helvetica, sans-serif; color: #ffffff; } .tagContainer { width: 670rpx; margin-top: 10rpx; margin-bottom: 40rpx; margin-left: auto; margin-right: auto; display: flex; flex-wrap: wrap; } .tagContainer .tag { margin-right: 10rpx; height: 40rpx; line-height: 40rpx; font-size: 26rpx; border-radius: 20rpx; background-color: rgba(0, 0, 0, 0.2); color: #e6e6e6; padding: 0rpx 20rpx; margin-top: 10rpx; } .contentCard { width: 95%; margin-top: 20rpx; margin-left: auto; margin-right: auto; background-color: rgba(255, 255, 255, 0.6); border-radius: 20rpx; box-shadow: 2rpx 2rpx 10rpx rgba(0, 0, 0, 0.1); } .contentCard .title { width: 655rpx; margin-top: 26rpx; margin-left: auto; margin-right: auto; font-size: 36rpx; line-height: 60rpx; font-weight: 700; } .contentCard .contentWrapper { width: 650rpx; margin-top: 14rpx; margin-left: auto; margin-right: auto; padding-bottom: 50rpx; } .contentCard .contentWrapper .content { font-size: 32rpx; color: #757575; margin-bottom: 10rpx; line-height: 40rpx; } .contentCard .contentWrapper .content .exchangeName { display: inline-block; width: 220rpx; } .contentCard .contentWrapper .content .exchangeWord { display: inline-block; } .contentCard .contentWrapper .content .pos { font-size: 28rpx; color: #a0a0a0; margin-right: 10rpx; } .last { margin-bottom: 50rpx; } ================================================ FILE: miniprogram/pages/word_list/word_list.js ================================================ // pages/word_list/word_list.js import regeneratorRuntime, { async } from '../../lib/runtime/runtime'; const wordApi = require("../../utils/wordApi.js") const word_utils = require("../../utils/word_utils.js") const color = require("../../utils/color.js") const app = getApp() let typeParameter = { getBkLearnedWord: { navTitle: '本书已学', user_id: true, wd_bk_id: true }, getBkMasteredWord: { navTitle: '本书已掌握', user_id: true, wd_bk_id: true }, getBkUnlearnedWord: { navTitle: '本书未学', user_id: true, wd_bk_id: true }, getBkWord: { navTitle: '本书全部单词', user_id: false, wd_bk_id: true }, getLearnedWord: { navTitle: '已学单词', user_id: true, wd_bk_id: false }, getMasteredWord: { navTitle: '已掌握单词', user_id: true, wd_bk_id: false }, getReviewWord: { navTitle: '复习中单词', user_id: true, wd_bk_id: false }, getNoteBookWord: { navTitle: '收藏夹', user_id: true, wd_bk_id: false }, today: { navTitle: '今日学习&复习', user_id: true, wd_bk_id: false }, } Page({ /** * 页面的初始数据 */ data: { wordList: [], hasMore: true, learnHasMore: true, reviewHasMore: true, isToday: false, todayLearn: undefined, todayReview: undefined, todayType: -1, }, skip: 0, learnSkip: undefined, reviewSkip: undefined, type: '', /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { let type = this.options.type console.log('type', type) wx.setNavigationBarTitle({ title: typeParameter[type].navTitle, }) this.type = type if (type != 'today') { this.getData() } else { this.setData({ todayType: 0 }) this.getTodayWord(0) this.getTodayWord(1) } }, async getData() { let type = this.type if (!this.data.hasMore) return wx.showLoading({ title: '加载中...', }) let parameters = {} if (typeParameter[type].user_id) parameters.user_id = app.globalData.userInfo.user_id if (typeParameter[type].wd_bk_id) parameters.wd_bk_id = app.globalData.userInfo.l_book_id parameters.skip = this.skip let wordList = this.data.wordList console.log('parameters', parameters) let res = await wordApi[type](parameters) console.log('res', res) for (let i = 0; i < res.data.length; i++) { if (res.data[i].translation.indexOf('\n') != -1) { res.data[i].translation = res.data[i].translation.substring(0, res.data[i].translation.indexOf('\n')) } // console.log('rect length of:', directres[i], word_utils.getResObjRectLength(directres[i])) } wordList = wordList.concat(res.data) this.skip = wordList.length let hasMore = true if (res.data.length < 20) hasMore = false this.setData({ wordList, hasMore }) wx.hideLoading() }, async getTodayWord(todayType) { if (todayType === undefined) todayType = this.data.todayType let hasMoreType = ['learnHasMore', 'reviewHasMore'] if (!this.data[hasMoreType[todayType]]) return wx.showLoading({ title: '加载中...', }) let apiNameType = ['getTodayLearnWord', 'getTodayReviewWord'] let skipType = ['getTodayLearnWord', 'getTodayReviewWord'] let wordListType = ['todayLearn', 'todayReview'] let type = apiNameType[todayType] let parameters = {} parameters.user_id = app.globalData.userInfo.user_id if (this[skipType[todayType]] === undefined) this[skipType[todayType]] = 0 parameters.skip = this[skipType[todayType]] if (this.data[wordListType[todayType]] === undefined) this.data[wordListType[todayType]] = [] let wordList = this.data[wordListType[todayType]] console.log('parameters', parameters) let res = await wordApi[type](parameters) console.log('res', res) for (let i = 0; i < res.data.length; i++) { if (res.data[i].translation.indexOf('\n') != -1) { res.data[i].translation = res.data[i].translation.substring(0, res.data[i].translation.indexOf('\n')) } // console.log('rect length of:', directres[i], word_utils.getResObjRectLength(directres[i])) } wordList = wordList.concat(res.data) this[skipType[todayType]] = wordList.length let hasMore = true if (res.data.length < 20) hasMore = false let updateData = {} updateData[wordListType[todayType]] = wordList updateData[hasMoreType[todayType]] = hasMore this.setData(updateData) wx.hideLoading() }, getWordDetail(e) { let wordListName = 'wordList' if (this.data.todayType != -1) { let wordListType = ['todayLearn', 'todayReview'] wordListName = wordListType[this.data.todayType] } let index = e.currentTarget.dataset.index let word_id = this.data[wordListName][index].word_id wx.navigateTo({ url: `../word_detail/word_detail?word_id=${word_id}`, }) }, changeType() { this.setData({ todayType: (this.data.todayType + 1) % 2 }) }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { console.log('onReachBottom') if (this.data.todayType == -1) { this.getData() } else { this.getTodayWord() } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } }) ================================================ FILE: miniprogram/pages/word_list/word_list.json ================================================ { "usingComponents": {} } ================================================ FILE: miniprogram/pages/word_list/word_list.less ================================================ @wordItemHeight: 80rpx; .wordWrapper { // margin-top: 10rpx; width: 100%; // margin-bottom: 10rpx; // margin-bottom: 130rpx; // background-color: #ffffff; .wordItem { // width: 670rpx; width: 750rpx; height: wordItemHeight; // margin-left: auto; // margin-right: auto; background-color: #ffffff; // margin-bottom: 6rpx; display: flex; align-items: center; justify-content: center; font-weight: 600; .dot { width: 16rpx; height: 16rpx; border-radius: 8rpx; background-color: #fd6802; // margin-left: 40rpx; margin-right: 24rpx; } .wordInfo { width: 630rpx; // 750-40*2-20-20 height: @wordItemHeight; line-height: @wordItemHeight; font-size: 32rpx; // padding-left: 40rpx; // padding-right: 40rpx; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 1; // border-bottom: solid 4rpx #f6f6f6; .word { // color: #333333; color: #757575; } .trans { // color: #757575; color: #8a8a8a; font-size: 28rpx; } } } .wasTaped { background-color: #e6e6e6; } .tips { width: 100%; height: 100rpx; color: #8a8a8a; font-size: 28rpx; display: flex; align-items: center; justify-content: center; } .changeType { width: 100%; height: 100rpx; font-size: 32rpx; display: flex; background-color: #ffffff; position: fixed; .type { width: 50%; height: 100rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; .text { font-size: 26rpx; color: #8a8a8a; font-weight: 600; } .decorate { margin-top: 10rpx; width: 30rpx; height: 10rpx; border-radius: 5rpx; background-color: #fd6802; } .active { font-size: 30rpx; color: #515151; margin-top: 10rpx; } } } .forToday { width: 100%; margin-top: 100rpx; } .bottom { width: 100%; height: 100rpx; } } ================================================ FILE: miniprogram/pages/word_list/word_list.wxml ================================================ {{item.word}}     {{item.translation}} 没有更多了哦~ ~ 今日学习 今日复习 {{item.word}}     {{item.translation}} 没有更多了哦~ ================================================ FILE: miniprogram/pages/word_list/word_list.wxss ================================================ .wordWrapper { width: 100%; } .wordWrapper .wordItem { width: 750rpx; height: wordItemHeight; background-color: #ffffff; display: flex; align-items: center; justify-content: center; font-weight: 600; } .wordWrapper .wordItem .dot { width: 16rpx; height: 16rpx; border-radius: 8rpx; background-color: #fd6802; margin-right: 24rpx; } .wordWrapper .wordItem .wordInfo { width: 630rpx; height: 80rpx; line-height: 80rpx; font-size: 32rpx; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 1; } .wordWrapper .wordItem .wordInfo .word { color: #757575; } .wordWrapper .wordItem .wordInfo .trans { color: #8a8a8a; font-size: 28rpx; } .wordWrapper .wasTaped { background-color: #e6e6e6; } .wordWrapper .tips { width: 100%; height: 100rpx; color: #8a8a8a; font-size: 28rpx; display: flex; align-items: center; justify-content: center; } .wordWrapper .changeType { width: 100%; height: 100rpx; font-size: 32rpx; display: flex; background-color: #ffffff; position: fixed; } .wordWrapper .changeType .type { width: 50%; height: 100rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; } .wordWrapper .changeType .type .text { font-size: 26rpx; color: #8a8a8a; font-weight: 600; } .wordWrapper .changeType .type .decorate { margin-top: 10rpx; width: 30rpx; height: 10rpx; border-radius: 5rpx; background-color: #fd6802; } .wordWrapper .changeType .type .active { font-size: 30rpx; color: #515151; margin-top: 10rpx; } .wordWrapper .forToday { width: 100%; margin-top: 100rpx; } .wordWrapper .bottom { width: 100%; height: 100rpx; } ================================================ FILE: miniprogram/sitemap.json ================================================ { "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", "rules":[{ "action": "allow", "page": "pages/index/index" }, { "action": "disallow", "page": "*" }] } ================================================ FILE: miniprogram/static/color.wxss ================================================ /* for #ffb284 */ .bg-linear-0 { background-image: linear-gradient(to bottom, #ffb284, #FFFFFF); } .word-color-0 { color: #ee5b20; } .content-title-color-0 { color: #fa804f; } .bg-color-light-0 { background-color: #fa804f; } /* for #99c4d3 */ .bg-linear-1 { background-image: linear-gradient(to bottom, #99c4d3, #FFFFFF); } .word-color-1 { color: #166381; } .content-title-color-1 { color: #66a8eb; } .bg-color-light-1 { background-color: #66a8eb; } /* for #d0e6a5 */ .bg-linear-2 { background-image: linear-gradient(to bottom, #d0e6a5, #FFFFFF); } .word-color-2 { color: #7a9e32; } .content-title-color-2 { color: #adc57c; } .bg-color-light-2 { background-color: #adc57c; } /* for #86e3ce */ .bg-linear-3 { background-image: linear-gradient(to bottom, #86e3ce, #FFFFFF); } .word-color-3 { color: #30a58a; } .content-title-color-3 { color: #60d4b9; } .bg-color-light-3 { background-color: #60d4b9; } /* for #ffdd95 */ .bg-linear-4 { background-image: linear-gradient(to bottom, #ffdd95, #FFFFFF); } .word-color-4 { color: #c79b3d; } .content-title-color-4 { color: #f0c76f; } .bg-color-light-4 { background-color: #f0c76f; } /* for #fa897b */ .bg-linear-5 { background-image: linear-gradient(to bottom, #fa897b, #FFFFFF); } .word-color-5 { color: #d84c39; } .content-title-color-5 { color: #fd7361; } .bg-color-light-5 { background-color: #fd7361; } /* for #ccabd8 */ .bg-linear-6 { background-image: linear-gradient(to bottom, #ccabd8, #FFFFFF); } .word-color-6 { color: #b163ce; } .content-title-color-6 { color: #be78d8; } .bg-color-light-6 { background-color: #be78d8; } /* for #80beaf */ .bg-linear-7 { background-image: linear-gradient(to bottom, #80beaf, #FFFFFF); } .word-color-7 { color: #46927f; } .content-title-color-7 { color: #61cfb4; } .bg-color-light-7 { background-color: #61cfb4; } /* for #b3ddd1 */ .bg-linear-8 { background-image: linear-gradient(to bottom, #b3ddd1, #FFFFFF); } .word-color-8 { color: #459780; } .content-title-color-8 { color: #7adabe; } .bg-color-light-8 { background-color: #7adabe; } /* for #d1dce2 */ .bg-linear-9 { background-image: linear-gradient(to bottom, #d1dce2, #FFFFFF); } .word-color-9 { color: #6fa7c5; } .content-title-color-9 { color: #95bfd6; } .bg-color-light-9 { background-color: #95bfd6; } /* for #ef9d6d */ .bg-linear-10 { background-image: linear-gradient(to bottom, #ef9d6d, #FFFFFF); } .word-color-10 { color: #c4632c; } .content-title-color-10 { color: #f38b4e; } .bg-color-light-10 { background-color: #f38b4e; } /* for #c6c09c */ .bg-linear-11 { background-image: linear-gradient(to bottom, #c6c09c, #FFFFFF); } .word-color-11 { color: #ac9f5a; } .content-title-color-11 { color: #c7b861; } .bg-color-light-11 { background-color: #c7b861; } /* for #f5cec7 */ .bg-linear-12 { background-image: linear-gradient(to bottom, #f5cec7, #FFFFFF); } .word-color-12 { color: #c7938a; } .content-title-color-12 { color: #f0b2a7; } .bg-color-light-12 { background-color: #f0b2a7; } /* for #ffc98b */ .bg-linear-13 { background-image: linear-gradient(to bottom, #ffc98b, #FFFFFF); } .word-color-13 { color: #ce9553; } .content-title-color-13 { color: #f1b167; } .bg-color-light-13 { background-color: #f1b167; } /* for #b598c6 */ .bg-linear-14 { background-image: linear-gradient(to bottom, #b598c6, #FFFFFF); } .word-color-14 { color: #866699; } .content-title-color-14 { color: #ae78ce; } .bg-color-light-14 { background-color: #ae78ce; } /* for #73c8dd */ .bg-linear-15 { background-image: linear-gradient(to bottom, #73c8dd, #FFFFFF); } .word-color-15 { color: #4899ad; } .content-title-color-15 { color: #50c1dd; } .bg-color-light-15 { background-color: #50c1dd; } /* for #c56a4b */ .bg-linear-16 { background-image: linear-gradient(to bottom, #c56a4b, #FFFFFF); } .word-color-16 { color: #a14323; } .content-title-color-16 { color: #e26e47; } .bg-color-light-16 { background-color: #e26e47; } ================================================ FILE: miniprogram/static/iconfont.wxss ================================================ @font-face { font-family: "iconfont"; /* Project id 2904327 */ src: url('//at.alicdn.com/t/font_2904327_ob31m8hc8ul.woff2?t=1641287710427') format('woff2'), url('//at.alicdn.com/t/font_2904327_ob31m8hc8ul.woff?t=1641287710427') format('woff'), url('//at.alicdn.com/t/font_2904327_ob31m8hc8ul.ttf?t=1641287710427') format('truetype'); } .iconfont { font-family: "iconfont" !important; font-size: 16px; font-style: normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-rotate:before { content: "\e61d"; } .icon-settings:before { content: "\e8b7"; } .icon-pwd:before { content: "\e600"; } .icon-toDetail:before { content: "\e775"; } .icon-camera:before { content: "\e77f"; } .icon-settings_old:before { content: "\e892"; } .icon-nickname:before { content: "\e608"; } .icon-learned:before { content: "\e721"; } .icon-addToNB-no:before { content: "\e8b9"; } .icon-addToNB-yes:before { content: "\e8c6"; } .icon-skip:before { content: "\e622"; } .icon-getDetail:before { content: "\e68e"; } .icon-cancel:before { content: "\e668"; } .icon-delete:before { content: "\e621"; } .icon-bin:before { content: "\e652"; } .icon-search1:before { content: "\e8d6"; } .icon-search:before { content: "\e60c"; } .icon-sound:before { content: "\e7a8"; } ================================================ FILE: miniprogram/utils/color.js ================================================ const colorList = ['#ffb284', '#99c4d3', '#d0e6a5', '#86e3ce', '#ffdd95', '#fa897b', '#ccabd8', '#80beaf', '#b3ddd1', '#d1dce2', '#ef9d6d', '#c6c09c', '#f5cec7', '#ffc98b', '#b598c6', '#73c8dd', '#c56a4b'] const deeperColorList = ['#ee5b20', '#166381', '#7a9e32', '#30a58a', '#c79b3d', '#d84c39', '#b163ce', '#46927f', '#459780', '#6fa7c5', '#c4632c', '#ac9f5a', '#c7938a', '#ce9553', '#866699', '#4899ad', '#a14323'] module.exports = { colorList: colorList, deeperColorList: deeperColorList, } ================================================ FILE: miniprogram/utils/format_time.js ================================================ // 传入时间的毫秒数(date.getTime())获取时间详情 const formatTime = (time) => { var date = new Date(time) var y = date.getFullYear() var m = date.getMonth() + 1 var d = date.getDate() var h = date.getHours() var min = date.getMinutes() var s = date.getSeconds() var timeStr = y + "-" + enterZero(m) + "-" + enterZero(d) + " " + enterZero(h) + ":" + enterZero(min) + ":" + enterZero(s) return timeStr } const formatDate = (time) => { var date = new Date(time) var y = date.getFullYear() var m = date.getMonth() + 1 var d = date.getDate() var dateStr = y + "-" + enterZero(m) + "-" + enterZero(d) return dateStr } const getDayZeroTime = (time = new Date().getTime()) => { var date = new Date(time) date.setMilliseconds(0) date.setSeconds(0) date.setMinutes(0) date.setHours(0) return date.getTime() } const dateNum = (time) => { var date = new Date(time) var y = date.getFullYear() var m = date.getMonth() + 1 var d = date.getDate() var num = y * 10000 + m * 100 + d return num } const enterZero = (num) => { num = Math.abs(num) if (num <= 9) { num = "0" + num } return num } module.exports = { formatTime: formatTime, formatDate: formatDate, dateNum: dateNum, getDayZeroTime: getDayZeroTime, } ================================================ FILE: miniprogram/utils/response_content.js ================================================ const SUCCESS = { errorcode: 100, errormsg: "success" } //成功 const LOGINOK = { errorcode: 1, errormsg: "Login successfully" } //登录成功 const REGISTEROK= { errorcode: 2, errormsg: "Register successfully" } //注册成功 const DBERR = { errorcode: -1, errormsg: "Database error!" } //数据库操作失败 const ROUTERERR = { errorcode: -2, errormsg: "Wrong router name" } //路由名字有误 const LOGINERR = { errorcode: -3, errormsg: "Wrong username or pwd" } //登录信息有误 const DATAERR = { errorcode: -4, errormsg: "Wrong data!" } //数据有误 const UNKOWNERR = { errorcode: -100, errormsg: "Unkown error!" } //出现未知错误 module.exports={ SUCCESS: SUCCESS, LOGINOK: LOGINOK, REGISTEROK: REGISTEROK, DBERR: DBERR, ROUTERERR: ROUTERERR, LOGINERR: LOGINERR, DATAERR: DATAERR, UNKOWNERR: UNKOWNERR, } ================================================ FILE: miniprogram/utils/userApi.js ================================================ const checkUsernameInDB = (data) => { data.$url = 'checkUsername' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "userRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const register = (data) => { data.$url = 'register' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "userRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const login = (data) => { data.$url = 'login' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "userRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getWxUserInfo = () => { return new Promise((resolve, reject) => { wx.getUserProfile({ desc: '信息用于快捷登录小程序', success: (res) => { resolve(res) }, fail: (err) => { console.log('获取微信用户信息失败') reject(err) } }) }) } const wxLogin = (data) => { data.$url = 'wxLogin' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "userRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const changeWordBook = (data) => { // let data = {} data.$url = 'changeWordBook' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "userRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const changeSettings = (data) => { // let data = {} data.$url = 'changeSettings' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "userRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getUserInfoViaId = (data) => { // let data = {} data.$url = 'getUserInfoViaId' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "userRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const changeUserInfo = (data) => { // let data = {} data.$url = 'changeUserInfo' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "userRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const changePwd = (data) => { // let data = {} data.$url = 'changePwd' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "userRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const uploadFile = (imgSrc) => { return new Promise((resolve, reject) => { let fileExtName = /\.\w+$/.exec(imgSrc)[0] //获取文件格式(后缀名) wx.cloud.uploadFile({ cloudPath: 'avatar_pic/' + Date.now() + '-' + Math.floor(Math.random() * 10000) + fileExtName, //生成添加时间戳后的随机序列作为文件名 filePath: imgSrc, success: (res) => { resolve(res) }, fail: (err) => { console.log(err) reject(err) } }) }) } const downloadFile = (imgSrc) => { return new Promise((resolve, reject) => { wx.downloadFile({ url: imgSrc, success(res) { // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容 if (res.statusCode === 200) { // console.log(res) resolve(res) } }, fail: (err) => { console.log(err) reject(err) } }) }) } module.exports = { checkUsernameInDB: checkUsernameInDB, register: register, login: login, getWxUserInfo: getWxUserInfo, wxLogin: wxLogin, changeWordBook: changeWordBook, changeSettings: changeSettings, getUserInfoViaId: getUserInfoViaId, changeUserInfo: changeUserInfo, changePwd: changePwd, downloadFile: downloadFile, uploadFile: uploadFile, } ================================================ FILE: miniprogram/utils/wordApi.js ================================================ const getDailySentence = () => { let data = {} data.$url = 'getDailySentence' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "wordRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getSearchResult = (data) => { // let data = {} data.$url = 'getSearchResult' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "wordRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getWordDetail = (data) => { // let data = {} data.$url = 'getwordDetail' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "wordRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getBasicLearningData = (data) => { // let data = {} data.$url = 'getBasicLearningData' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "wordRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getLearningData = (data) => { // let data = {} data.$url = 'getLearningData' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "wordRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getReviewData = (data) => { // let data = {} data.$url = 'getReviewData' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "wordRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const toggleAddToNB = (data) => { // let data = {} data.$url = 'toggleAddToNB' // data.user_id = getApp().globalData.userInfo.user_id return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "wordRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const addLearningRecord = (data) => { // let data = {} // 重复添加的官方errCode是-502001,在返回的err里 data.$url = 'addLearningRecord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "wordRouter", // name: "learningRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const updateLearningRecord = (data) => { // let data = {} data.$url = 'updateLearningRecord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "wordRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getWBLearnData = (data) => { // let data = {} data.$url = 'getWBLearnData' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getAllWBData = () => { let data = {} data.$url = 'getAllWBData' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getSingleWBData = (data) => { // let data = {} data.$url = 'getSingleWBData' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getAllLearnData = (data) => { // let data = {} data.$url = 'getAllLearnData' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getDailySum = (data) => { // let data = {} data.$url = 'getDailySum' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getTodayLearnData = (data) => { // let data = {} data.$url = 'getTodayLearnData' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getNoteBookWord = (data) => { // let data = {} data.$url = 'getNoteBookWord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getBkLearnedWord = (data) => { // let data = {} data.$url = 'getBkLearnedWord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getBkMasteredWord = (data) => { // let data = {} data.$url = 'getBkMasteredWord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getBkUnlearnedWord = (data) => { // let data = {} data.$url = 'getBkUnlearnedWord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getBkWord = (data) => { // let data = {} data.$url = 'getBkWord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getLearnedWord = (data) => { // let data = {} data.$url = 'getLearnedWord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getMasteredWord = (data) => { // let data = {} data.$url = 'getMasteredWord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getReviewWord = (data) => { // let data = {} data.$url = 'getReviewWord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getTodayLearnWord = (data) => { // let data = {} data.$url = 'getTodayLearnWord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } const getTodayReviewWord = (data) => { // let data = {} data.$url = 'getTodayReviewWord' return new Promise((resolve, reject) => { wx.cloud.callFunction({ name: "statisticRouter", data, success: (res) => { resolve(res.result) }, fail: (err) => { reject(err) } }) }) } module.exports = { getDailySentence: getDailySentence, getSearchResult: getSearchResult, getWordDetail: getWordDetail, getBasicLearningData: getBasicLearningData, getLearningData: getLearningData, getReviewData: getReviewData, toggleAddToNB: toggleAddToNB, addLearningRecord: addLearningRecord, updateLearningRecord: updateLearningRecord, getWBLearnData: getWBLearnData, getAllWBData: getAllWBData, getSingleWBData: getSingleWBData, getAllLearnData: getAllLearnData, getDailySum: getDailySum, getTodayLearnData: getTodayLearnData, getNoteBookWord: getNoteBookWord, getBkLearnedWord: getBkLearnedWord, getBkMasteredWord: getBkMasteredWord, getBkUnlearnedWord: getBkUnlearnedWord, getBkWord: getBkWord, getLearnedWord: getLearnedWord, getMasteredWord: getMasteredWord, getReviewWord: getReviewWord, getTodayLearnWord: getTodayLearnWord, getTodayReviewWord: getTodayReviewWord, } import regeneratorRuntime, { async } from '../lib/runtime/runtime'; const format_time = require('./format_time.js') const getDailySentenceWx = async () => { // console.log('on tap button 2') // return let t1 = new Date().getTime() console.log('Start', t1) let time = new Date().getTime() - 86400000 * 0 let dateStr = format_time.formatDate(time) let requestUrl_youdao = 'https://dict.youdao.com/infoline?mode=publish&date=' + dateStr + '&update=auto&apiversion=5.0' let requestUrl_iciba = 'https://sentence.iciba.com/index.php?c=dailysentence&m=getdetail&title=' + dateStr let requestUrl_shanbay = 'https://apiv3.shanbay.com/weapps/dailyquote/quote/?date=' + dateStr let dailySentenceList = [] // for Youdao-------------------------------------------------------- let res1 = await this.exportRequest(requestUrl_youdao) let result_list = res1.data[dateStr] console.log('dateStr:', dateStr, 'type:', typeof dateStr) console.log(result_list) let dateNum = format_time.dateNum(time) let timenum = dateNum * 10000 let i = 0 for (i; i < result_list.length; i++) { if (result_list[i].startTime - timenum < 10000 && result_list[i].voice && result_list[i].voice != '') { break } } let dailySentence = {} console.log(result_list[i]) dailySentence.content = result_list[i].title dailySentence.translation = result_list[i].summary dailySentence.voiceUrl = result_list[i].voice dailySentenceList.push(dailySentence) // ------------------------------------------------------------------ // for iCIBA-------------------------------------------------------- dailySentence = {} let res2 = await exportRequest(requestUrl_iciba) dailySentence.content = res2.data.content dailySentence.translation = res2.data.note dailySentence.voiceUrl = res2.data.tts dailySentenceList.push(dailySentence) // ------------------------------------------------------------------ // for shanbay-------------------------------------------------------- dailySentence = {} let res3 = await exportRequest(requestUrl_shanbay) dailySentence.content = res3.data.content dailySentence.translation = res3.data.translation dailySentence.author = res3.data.author dailySentenceList.push(dailySentence) // ------------------------------------------------------------------ console.log(dailySentenceList) let t2 = new Date().getTime() console.log('Done', t2, 'Time Spent', t2 - t1) } const exportRequest = (url) => { return new Promise((resolve, reject) => { wx.request({ url: url, method: 'GET', dataType: 'json', success: (res) => { resolve(res) }, fail: (err) => { console.log('请求失败') console.log(err) reject(err) } }) }) } ================================================ FILE: miniprogram/utils/word_utils.js ================================================ const tagDict = { zk: '中考', gk: '高考', ky: '考研', cet4: '四级', cet6: '六级', toefl: '托福', ielts: '雅思', gre: 'GRE' } const exchangeTagList = ['s', 'p', 'd', 'i', '3', 'r', 't'] // 统一词形变换排列顺序用 const exchangeNameDict = { p: '过去式', d: '过去分词', i: '现在分词', 3: '第三人称单数', r: '比较级', t: '最高级', s: '复数形式', 0: '原型', 1: '原型的什么变体', } // 解析原exchange字段(字符串),返回包含word(变体)和name(变体形式)(&lemma,即原型)的对象的数组 const toExchangeList = (exchange) => { if (exchange == '') { return [] } console.log(exchange) let strList = exchange.split('/') let exchangeDict = {} let exchangeList = [] let lemma = '' let type_1_exchange = [] for (let i = 0; i < strList.length; i++) { let exchangeType = strList[i].split(':') if (exchangeType[0] == '0') { lemma = exchangeType[1] continue } if (exchangeType[0] == '1') { type_1_exchange = exchangeType continue } exchangeDict[exchangeType[0]] = exchangeType[1] } if (lemma != '' && type_1_exchange.toString() != '' && type_1_exchange[0] == '1') { exchangeList.push({ word: lemma, name: exchangeNameDict[type_1_exchange[1]], lemma: true, }) } for (let m = 0; m < exchangeTagList.length; m++) { if (exchangeDict[exchangeTagList[m]]) { exchangeList.push({ word: exchangeDict[exchangeTagList[m]], name: exchangeNameDict[exchangeTagList[m]] }) } } return exchangeList } // 解析原translation字段(字符串),返回包含pos(词性)和meaning(释义)的对象的数组 const toTransList = (translation) => { if (translation == '') { return [] } let l = translation.split('\n') let transList = [] for (let i = 0; i < l.length; i++) { let spaceIndex = l[i].indexOf(' ') // 找到第一个空格,空格前为词性,空格后为释义 let pos = '' let meaning = l[i] if (spaceIndex != -1) { pos = l[i].substring(0, spaceIndex) meaning = l[i].substring(spaceIndex + 1, l[i].length) } transList.push({ pos, meaning }) } return transList } // 生成tagList(词书+牛津+柯林斯) const getTagList = (wordDetail) => { let originTagList = wordDetail.tagList let tagList = [] if (originTagList.length != 0) { for (let i = 0; i < originTagList.length; i++) { tagList.push(originTagList[i].name) } } if (wordDetail.oxford != 0) { tagList.push('牛津3k核心词汇') } if (wordDetail.collins != 0) { tagList.push('柯林斯' + wordDetail.collins + '星') } return tagList } // 用于生成单词音频链接 // 有道词典: http://dict.youdao.com/dictvoice?type={1:英式;2:美式}&audio={word} // gstatic oxford: https://ssl.gstatic.com/dictionary/static/sounds/oxford/{word}--_gb_1.mp3 const getWordVoiceUrl = (word, source = 0, type = 2) => { let globalData = getApp().globalData if (globalData.isLogin && globalData.userInfo.settings.type) type = globalData.userInfo.settings.type let url = '' if (source == 0) { url = `http://dict.youdao.com/dictvoice?type=${type}&audio=${word}` } else if (source == 1) { url = `https://ssl.gstatic.com/dictionary/static/sounds/oxford/${word}--_gb_1.mp3` } return url } // 处理单词信息 const handleWordDetail = (wordDetail, settings = {}) => { if (wordDetail.tagList) wordDetail.tag = getTagList(wordDetail) if (wordDetail.translation) wordDetail.translation = toTransList(wordDetail.translation) if (wordDetail.definition) wordDetail.definition = toTransList(wordDetail.definition) if (wordDetail.exchange) wordDetail.exchange = toExchangeList(wordDetail.exchange) if ('getShortTrans' in settings && settings.getShortTrans) { let transList = JSON.parse(JSON.stringify(wordDetail.translation)) let shortTransList = transList.slice(0, transList.length > 5 ? 5 : transList.length) for (let i = 0; i < shortTransList.length; i++) { let str = shortTransList[i].meaning if (str.length > 20) { let cutIndex = str.lastIndexOf(',', 18) if (cutIndex != -1) shortTransList[i].meaning = str.substring(0, cutIndex) + ' ...' } } if (transList.length > 5) { shortTransList[4] = { pos: '', meaning: "更多释义...", more: true, } } wordDetail.shortTrans = shortTransList } if (wordDetail.sample_list) { wordDetail.sample_list.push({ word: wordDetail.word, translation: { ...(wordDetail.translation[0]) }, }) for (let i = 0; i < wordDetail.sample_list.length; i++) { let transItem = wordDetail.sample_list[i].translation if (i != wordDetail.sample_list.length - 1) transItem = (toTransList(wordDetail.sample_list[i].translation))[0] let meaningStr = transItem.meaning if (meaningStr.length > 23) { let cutIndex = meaningStr.lastIndexOf(',', 24) if (cutIndex != -1) transItem.meaning = meaningStr.substring(0, cutIndex) } wordDetail.sample_list[i].translation = transItem } } wordDetail.voiceUrl = getWordVoiceUrl(wordDetail.word) return wordDetail } // 批量处理单词信息 const batchHandleWordDetal = (wordDetailList, settings = {}) => { for (let i = 0; i < wordDetailList.length; i++) { wordDetailList[i] = handleWordDetail(wordDetailList[i], settings) } return wordDetailList } // 随机生成size个0-max的数 const randNumList = (max, size = 1) => { let numList = [] for (var i = 0; i < size; i++) { numList[i] = Math.floor(Math.random() * (max + 1)); for (var j = 0; j < i; j++) { if (numList[i] == numList[j]) { i-- } } } return numList } // 打乱数组用 const randArr = (arr) => { for (var i = 0; i < arr.length; i++) { var iRand = parseInt(arr.length * Math.random()) var temp = arr[i] arr[i] = arr[iRand] arr[iRand] = temp } return arr } module.exports = { tagDict: tagDict, exchangeNameDict: exchangeNameDict, toExchangeList: toExchangeList, toTransList: toTransList, getTagList: getTagList, getWordVoiceUrl: getWordVoiceUrl, handleWordDetail: handleWordDetail, batchHandleWordDetal: batchHandleWordDetal, randNumList: randNumList, randArr: randArr, } // 用于解决释义超长的问题,计算总长度,超过指定长则截断替换为... // 英文字符长度计1,中文字符长度计2,由于Microsoft Ya Hei(但又比宋体好看)字符不是严格占此宽度,已废弃 const getRectLength = (str) => { let rectLength = 0 for (let i = 0; i < str.length; i++) { if (str.charCodeAt(i) <= 127) { rectLength += 1 } else { rectLength += 2 } } return rectLength } const getResObjRectLength = (obj) => { let totalLength = 0 totalLength += getRectLength(obj.word) if (obj.exchange && obj.exchange.name) { totalLength += getRectLength(' 的' + obj.exchange.name) } totalLength += getRectLength(obj.translation) return totalLength } ================================================ FILE: project.config.json ================================================ { "miniprogramRoot": "miniprogram/", "cloudfunctionRoot": "cloudfunctions/", "setting": { "urlCheck": true, "es6": true, "enhance": true, "postcss": true, "preloadBackgroundData": false, "minified": true, "newFeature": true, "coverView": true, "nodeModules": false, "autoAudits": false, "showShadowRootInWxmlPanel": true, "scopeDataCheck": false, "uglifyFileName": false, "checkInvalidKey": true, "checkSiteMap": true, "uploadWithSourceMap": true, "compileHotReLoad": false, "lazyloadPlaceholderEnable": false, "useMultiFrameRuntime": true, "useApiHook": true, "useApiHostProcess": true, "babelSetting": { "ignore": [], "disablePlugins": [], "outputPath": "" }, "enableEngineNative": false, "useIsolateContext": false, "userConfirmedBundleSwitch": false, "packNpmManually": false, "packNpmRelationList": [], "minifyWXSS": true, "disableUseStrict": false, "minifyWXML": true, "showES6CompileOption": false, "useCompilerPlugins": false }, "appid": "wx9d444179caa0a6b5", "projectname": "%E5%AD%A6%E4%B8%8D%E4%BC%9A%E5%8D%95%E8%AF%8D", "libVersion": "2.20.1", "cloudfunctionTemplateRoot": "cloudfunctionTemplate", "condition": { "search": { "list": [] }, "conversation": { "list": [] }, "plugin": { "list": [] }, "game": { "list": [] }, "miniprogram": { "list": [] } } } ================================================ FILE: project.private.config.json ================================================ { "setting": {}, "condition": { "plugin": { "list": [] }, "game": { "list": [] }, "gamePlugin": { "list": [] }, "miniprogram": { "list": [ { "name": "pages/search/search", "pathName": "pages/search/search", "query": "", "scene": null }, { "name": "pages/word_detail/word_detail", "pathName": "pages/word_detail/word_detail", "query": "word_id=1630", "scene": null }, { "name": "pages/login/login", "pathName": "pages/login/login", "query": "", "scene": null }, { "name": "pages/learning/learning", "pathName": "pages/learning/learning", "query": "", "scene": null }, { "name": "pages/overview/overview", "pathName": "pages/overview/overview", "query": "", "scene": null }, { "name": "pages/review/review", "pathName": "pages/review/review", "query": "", "scene": null }, { "name": "pages/word_list/word_list", "pathName": "pages/word_list/word_list", "query": "type=getBkLearnedWord", "scene": null }, { "name": "pages/user/user", "pathName": "pages/user/user", "query": "", "scene": null }, { "name": "pages/user_settings/user_settings", "pathName": "pages/user_settings/user_settings", "query": "", "scene": null }, { "name": "", "pathName": "pages/image_cropper/image_cropper", "query": "", "scene": null } ] } } }