Showing preview only (2,087K chars total). Download the full file or copy to clipboard to get everything.
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**项目,把这些数据稍微做了些处理导入了数据库。
主要实现搜索,学习单词,复习单词,统计,登录等功能。
### 整体结构

### 功能模块及页面
- [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] 设置页
### 效果图
<img src="images/before_login_index.jpg" width="19%" alt="首页登录前"> <img src="images/before_login_user.jpg" width="19%" alt="个人页登录前"> <img src="images/login.jpg" width="19%" alt="登录页"> <img src="images/after_login_index.jpg" width="19%" alt="首页登录后"> <img src="images/after_login_user.jpg" width="19%" alt="个人页登录后">
<img src="images/title_1.png" width="100%" alt="图名1">
<img src="images/after_login_overview_1.jpg" width="19%" alt="概览页登录后1"> <img src="images/after_login_overview_2.jpg" width="19%" alt="概览页登录后2"> <img src="images/word_list.jpg" width="19%" alt="单词列表"> <img src="images/learning_1.jpg" width="19%" alt="学习/复习页1"> <img src="images/learning_3.jpg" width="19%" alt="学习/复习页2">
<img src="images/title_2.png" width="100%" alt="图名2">
<img src="images/learning_4.jpg" width="19%" alt="学习/复习页3"> <img src="images/learning_5.jpg" width="19%" alt="学习/复习页4"> <img src="images/learning_6.jpg" width="19%" alt="学习/复习页5"> <img src="images/learning_8.jpg" width="19%" alt="学习/复习页6"> <img src="images/search_1.jpg" width="19%" alt="搜索页">
<img src="images/title_3.png" width="100%" alt="图名3">
<img src="images/search_word_small.jpg" width="19%" alt="小词库搜索"> <img src="images/search_word_big.jpg" width="19%" alt="大词库搜索"> <img src="images/search_translation.jpg" width="19%" alt="释义搜索"> <img src="images/word_detail.jpg" width="19%" alt="单词详情"> <img src="images/settings.jpg" width="19%" alt="设置页">
<img src="images/title_4.png" width="100%" alt="图名4">
### 体验
~~想要玩一下的可以扫描以下二维码~~:
<img src="images/miniprogram_QRcode.jpg" width="20%" alt="小程序二维码">
由于微信要取消云开发基础套餐的免费使用了,而本人暂无精力完善此项目,这个月(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
================================================
<!--miniprogram/components/cloudTipModal/index.wxml-->
<view class="install_tip" wx:if="{{showUploadTip}}">
<view class="install_tip_back"></view>
<view class="install_tip_detail">
<view class="install_tip_detail_title">体验前需部署云资源</view>
<view class="install_tip_detail_tip">请开启调试器进入终端窗口,复制并运行以下命令</view>
<view class="install_tip_detail_shell">
{{tipText}}
<view bindtap="copyShell" class="install_tip_detail_copy">复制</view>
</view>
<view bindtap="onChangeShowUploadTip" class="install_tip_detail_button">已执行命令</view>
</view>
</view>
================================================
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 变量,例:<ec-canvas id="mychart-dom-bar" '
+ 'canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>');
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,开始使用<canvas type="2d"/>');
// 2.9.0 可以使用 <canvas type="2d"></canvas>
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
================================================
<!-- 新的:接口对其了H5 -->
<canvas wx:if="{{isUseNewCanvas}}" type="2d" class="ec-canvas" canvas-id="{{ canvasId }}" bindinit="init" bindtouchstart="{{ ec.disableTouch ? '' : 'touchStart' }}" bindtouchmove="{{ ec.disableTouch ? '' : 'touchMove' }}" bindtouchend="{{ ec.disableTouch ? '' : 'touchEnd' }}"></canvas>
<!-- 旧的 -->
<canvas wx:else class="ec-canvas" canvas-id="{{ canvasId }}" bindinit="init" bindtouchstart="{{ ec.disableTouch ? '' : 'touchStart' }}" bindtouchmove="{{ ec.disableTouch ? '' : 'touchMove' }}" bindtouchend="{{ ec.disableTouch ? '' : 'touchEnd' }}"></canvas>
================================================
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;n<i;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function r(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var i=Array(t),r=0;for(e=0;e<n;e++)for(var o=arguments[e],a=0,s=o.length;a<s;a++,r++)i[r]=o[a];return i}var o=function(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1},a=new function(){this.browser=new o,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};"object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?(a.wxa=!0,a.canvasSupported=!0,a.touchEventsSupported=!0):"undefined"==typeof document&&"undefined"!=typeof self?(a.worker=!0,a.canvasSupported=!0):"undefined"==typeof navigator?(a.node=!0,a.canvasSupported=!0,a.svgSupported=!0):function(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}(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<arguments.length;e++)t[e]=arguments[e];"undefined"!=typeof console&&console.error.apply(console,t)}function w(t){if(null==t||"object"!=typeof t)return t;var e=t,n=u.call(t);if("[object Array]"===n){if(!lt(t)){e=[];for(var i=0,r=t.length;i<r;i++)e[i]=w(t[i])}}else if(l[n]){if(!lt(t)){var o=t.constructor;if(o.from)e=o.from(t);else{e=new o(t.length);for(i=0,r=t.length;i<r;i++)e[i]=w(t[i])}}}else if(!s[n]&&!lt(t)&&!j(t))for(var a in e={},t)t.hasOwnProperty(a)&&(e[a]=w(t[a]));return e}function S(t,e,n){if(!X(e)||!X(t))return n?w(e):t;for(var i in e)if(e.hasOwnProperty(i)){var r=t[i],o=e[i];!X(o)||!X(r)||F(o)||F(r)||j(o)||j(r)||Y(o)||Y(r)||lt(o)||lt(r)?!n&&i in t||(t[i]=w(e[i])):S(r,o,n)}return t}function M(t,e){for(var n=t[0],i=1,r=t.length;i<r;i++)n=S(n,t[i],e);return n}function I(t,e){if(Object.assign)Object.assign(t,e);else for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function T(t,e,n){for(var i=E(e),r=0;r<i.length;r++){var o=i[r];(n?null!=e[o]:null==t[o])&&(t[o]=e[o])}return t}var C=function(){return v.createCanvas()};function D(t,e){if(t){if(t.indexOf)return t.indexOf(e);for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return n}return-1}function A(t,e){var n=t.prototype;function i(){}for(var r in i.prototype=e.prototype,t.prototype=new i,n)n.hasOwnProperty(r)&&(t.prototype[r]=n[r]);t.prototype.constructor=t,t.superClass=e}function L(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;r<i.length;r++){var o=i[r];"constructor"!==o&&(n?null!=e[o]:null==t[o])&&(t[o]=e[o])}else T(t,e,n)}function k(t){return!!t&&("string"!=typeof t&&"number"==typeof t.length)}function P(t,e,n){if(t&&e)if(t.forEach&&t.forEach===c)t.forEach(e,n);else if(t.length===+t.length)for(var i=0,r=t.length;i<r;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 O(t,e,n){if(!t)return[];if(!e)return nt(t);if(t.map&&t.map===f)return t.map(e,n);for(var i=[],r=0,o=t.length;r<o;r++)i.push(e.call(n,t[r],r,t));return i}function R(t,e,n,i){if(t&&e){for(var r=0,o=t.length;r<o;r++)n=e.call(i,n,t[r],r,t);return n}}function N(t,e,n){if(!t)return[];if(!e)return nt(t);if(t.filter&&t.filter===p)return t.filter(e,n);for(var i=[],r=0,o=t.length;r<o;r++)e.call(n,t[r],r,t)&&i.push(t[r]);return i}function z(t,e,n){if(t&&e)for(var i=0,r=t.length;i<r;i++)if(e.call(n,t[i],i,t))return t[i]}function E(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}v.createCanvas=function(){return document.createElement("canvas")};var V=y&&G(y.bind)?y.call.bind(y.bind):function(t,e){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];return function(){return t.apply(e,n.concat(d.call(arguments)))}};function B(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return function(){return t.apply(this,e.concat(d.call(arguments)))}}function F(t){return Array.isArray?Array.isArray(t):"[object Array]"===u.call(t)}function G(t){return"function"==typeof t}function H(t){return"string"==typeof t}function W(t){return"[object String]"===u.call(t)}function U(t){return"number"==typeof t}function X(t){var e=typeof t;return"function"===e||!!t&&"object"===e}function Y(t){return!!s[u.call(t)]}function Z(t){return!!l[u.call(t)]}function j(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function q(t){return null!=t.colorStops}function K(t){return null!=t.image}function $(t){return"[object RegExp]"===u.call(t)}function J(t){return t!=t}function Q(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var n=0,i=t.length;n<i;n++)if(null!=t[n])return t[n]}function tt(t,e){return null!=t?t:e}function et(t,e,n){return null!=t?t:null!=e?e:n}function nt(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return d.apply(t,e)}function it(t){if("number"==typeof t)return[t,t,t,t];var e=t.length;return 2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t}function rt(t,e){if(!t)throw new Error(e)}function ot(t){return null==t?null:"function"==typeof t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}var at="__ec_primitive__";function st(t){t[at]=!0}function lt(t){return t[at]}var ut=function(){function t(e){this.data={};var n=F(e);this.data={};var i=this;function r(t,e){n?i.set(t,e):i.set(e,t)}e instanceof t?e.each(r):e&&P(e,r)}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 E(this.data)},t.prototype.removeKey=function(t){delete this.data[t]},t}();function ht(t){return new ut(t)}function ct(t,e){for(var n=new t.constructor(t.length+e.length),i=0;i<t.length;i++)n[i]=t[i];var r=t.length;for(i=0;i<e.length;i++)n[i+r]=e[i];return n}function pt(t,e){var n;if(Object.create)n=Object.create(t);else{var i=function(){};i.prototype=t,n=new i}return e&&I(n,e),n}function dt(t,e){return t.hasOwnProperty(e)}function ft(){}var gt=Object.freeze({__proto__:null,$override:m,guid:x,logError:b,clone:w,merge:S,mergeAll:M,extend:I,defaults:T,createCanvas:C,indexOf:D,inherits:A,mixin:L,isArrayLike:k,each:P,map:O,reduce:R,filter:N,find:z,keys:E,bind:V,curry:B,isArray:F,isFunction:G,isString:H,isStringSafe:W,isNumber:U,isObject:X,isBuiltInObject:Y,isTypedArray:Z,isDom:j,isGradientObject:q,isImagePatternObject:K,isRegExp:$,eqNaN:J,retrieve:Q,retrieve2:tt,retrieve3:et,slice:nt,normalizeCssArray:it,assert:rt,trim:ot,setAsPrimitive:st,isPrimitive:lt,HashMap:ut,createHashMap:ht,concatArray:ct,createObject:pt,hasOwn:dt,noop:ft});function yt(t,e){return null==t&&(t=0),null==e&&(e=0),[t,e]}function vt(t,e){return t[0]=e[0],t[1]=e[1],t}function mt(t){return[t[0],t[1]]}function _t(t,e,n){return t[0]=e,t[1]=n,t}function xt(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}function bt(t,e,n,i){return t[0]=e[0]+n[0]*i,t[1]=e[1]+n[1]*i,t}function wt(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}function St(t){return Math.sqrt(It(t))}var Mt=St;function It(t){return t[0]*t[0]+t[1]*t[1]}var Tt=It;function Ct(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}function Dt(t,e){var n=St(e);return 0===n?(t[0]=0,t[1]=0):(t[0]=e[0]/n,t[1]=e[1]/n),t}function At(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))}var Lt=At;function kt(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])}var Pt=kt;function Ot(t,e,n,i){return t[0]=e[0]+i*(n[0]-e[0]),t[1]=e[1]+i*(n[1]-e[1]),t}function Rt(t,e,n){var i=e[0],r=e[1];return t[0]=n[0]*i+n[2]*r+n[4],t[1]=n[1]*i+n[3]*r+n[5],t}function Nt(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t}function zt(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t}var Et=Object.freeze({__proto__:null,create:yt,copy:vt,clone:mt,set:_t,add:xt,scaleAndAdd:bt,sub:wt,len:St,length:Mt,lenSquare:It,lengthSquare:Tt,mul:function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t},div:function(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t},dot:function(t,e){return t[0]*e[0]+t[1]*e[1]},scale:Ct,normalize:Dt,distance:At,dist:Lt,distanceSquare:kt,distSquare:Pt,negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:Ot,applyTransform:Rt,min:Nt,max:zt}),Vt=function(t,e){this.target=t,this.topTarget=e&&e.topTarget},Bt=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 Vt(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 Vt(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 Vt(s,t),"dragleave",t.event),a&&a!==s&&this.handler.dispatchToElement(new Vt(a,t),"dragenter",t.event))}},t.prototype._dragEnd=function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.handler.dispatchToElement(new Vt(e,t),"dragend",t.event),this._dropTarget&&this.handler.dispatchToElement(new Vt(this._dropTarget,t),"drop",t.event),this._draggingTarget=null,this._dropTarget=null},t}(),Ft=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;a<r[t].length;a++)if(r[t][a].h===n)return this;var s={h:n,query:e,ctx:i||this,callAtLast:n.zrEventfulCallAtLast},l=r[t].length-1,u=r[t][l];return u&&u.callAtLast?r[t].splice(l,0,s):r[t].push(s),this},t.prototype.isSilent=function(t){var e=this._$handlers;return!e||!e[t]||!e[t].length},t.prototype.off=function(t,e){var n=this._$handlers;if(!n)return this;if(!t)return this._$handlers={},this;if(e){if(n[t]){for(var i=[],r=0,o=n[t].length;r<o;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;n<arguments.length;n++)e[n-1]=arguments[n];if(!this._$handlers)return this;var i=this._$handlers[t],r=this._$eventProcessor;if(i)for(var o=e.length,a=i.length,s=0;s<a;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){if(!this._$handlers)return this;var e=this._$handlers[t],n=this._$eventProcessor;if(e)for(var i=arguments,r=i.length,o=i[r-1],a=e.length,s=0;s<a;s++){var l=e[s];if(!n||!n.filter||null==l.query||n.filter(t,l.query))switch(r){case 0:l.h.call(o);break;case 1:l.h.call(o,i[0]);break;case 2:l.h.call(o,i[0],i[1]);break;default:l.h.apply(o,i.slice(1,r-1))}}return n&&n.afterTrigger&&n.afterTrigger(t),this},t}(),Gt=Math.log(2);function Ht(t,e,n,i,r,o){var a=i+"-"+r,s=t.length;if(o.hasOwnProperty(a))return o[a];if(1===e){var l=Math.round(Math.log((1<<s)-1&~r)/Gt);return t[n][l]}for(var u=i|1<<n,h=n+1;i&1<<h;)h++;for(var c=0,p=0,d=0;p<s;p++){var f=1<<p;f&r||(c+=(d%2?-1:1)*t[n][p]*Ht(t,e-1,h,u,r|f,o),d++)}return o[a]=c,c}function Wt(t,e){var n=[[t[0],t[1],1,0,0,0,-e[0]*t[0],-e[0]*t[1]],[0,0,0,t[0],t[1],1,-e[1]*t[0],-e[1]*t[1]],[t[2],t[3],1,0,0,0,-e[2]*t[2],-e[2]*t[3]],[0,0,0,t[2],t[3],1,-e[3]*t[2],-e[3]*t[3]],[t[4],t[5],1,0,0,0,-e[4]*t[4],-e[4]*t[5]],[0,0,0,t[4],t[5],1,-e[5]*t[4],-e[5]*t[5]],[t[6],t[7],1,0,0,0,-e[6]*t[6],-e[6]*t[7]],[0,0,0,t[6],t[7],1,-e[7]*t[6],-e[7]*t[7]]],i={},r=Ht(n,8,0,0,0,i);if(0!==r){for(var o=[],a=0;a<8;a++)for(var s=0;s<8;s++)null==o[s]&&(o[s]=0),o[s]+=((a+s)%2?-1:1)*Ht(n,7,0===a?1:0,1<<a,1<<s,i)/r*e[a];return function(t,e,n){var i=e*o[6]+n*o[7]+1;t[0]=(e*o[0]+n*o[1]+o[2])/i,t[1]=(e*o[3]+n*o[4]+o[5])/i}}}var Ut=[];function Xt(t,e,n,i,r){if(e.getBoundingClientRect&&a.domSupported&&!Yt(e)){var o=e.___zrEVENTSAVED||(e.___zrEVENTSAVED={}),s=function(t,e,n){for(var i=n?"invTrans":"trans",r=e[i],o=e.srcCoords,a=[],s=[],l=!0,u=0;u<4;u++){var h=t[u].getBoundingClientRect(),c=2*u,p=h.left,d=h.top;a.push(p,d),l=l&&o&&p===o[c]&&d===o[c+1],s.push(t[u].offsetLeft,t[u].offsetTop)}return l&&r?r:(e.srcCoords=a,e[i]=n?Wt(s,a):Wt(a,s))}(function(t,e){var n=e.markers;if(n)return n;n=e.markers=[];for(var i=["left","right"],r=["top","bottom"],o=0;o<4;o++){var a=document.createElement("div"),s=o%2,l=(o>>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;o<a;o++){var s=i[o],l=Kt(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 oe)if(oe.hasOwnProperty(e)){var n=oe[e](this._track,t);if(n)return n}},t}();function re(t){var e=t[1][0]-t[0][0],n=t[1][1]-t[0][1];return Math.sqrt(e*e+n*n)}var oe={pinch:function(t,e){var n=t.length;if(n){var i,r=(t[n-1]||{}).points,o=(t[n-2]||{}).points||r;if(o&&o.length>1&&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<n&&i(t[r],t[r-1])<0;)r++;!function(t,e,n){n--;for(;e<n;){var i=t[e];t[e++]=t[n],t[n--]=i}}(t,e,r)}else for(;r<n&&i(t[r],t[r-1])>=0;)r++;return r-e}function ge(t,e,n,i,r){for(i===e&&i++;i<n;i++){for(var o,a=t[i],s=e,l=i;s<l;)r(a,t[o=s+l>>>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;l<s&&o(t,e[n+r+l])>0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;l<s&&o(t,e[n+r-l])<=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}for(a++;a<l;){var h=a+(l-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;l<s&&o(t,e[n+r-l])<0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=i-r;l<s&&o(t,e[n+r+l])>=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a<l;){var h=a+(l-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<i;l++)a[l]=t[n+l];var u=0,h=o,c=n;if(t[c++]=t[h++],0==--s){for(l=0;l<i;l++)t[c+l]=a[u+l];return}if(1===i){for(l=0;l<s;l++)t[c+l]=t[h+l];return void(t[c+s]=a[u])}var p,d,f,g=r;for(;;){p=0,d=0,f=!1;do{if(e(t[h],a[u])<0){if(t[c++]=t[h++],d++,p=0,0==--s){f=!0;break}}else if(t[c++]=a[u++],p++,d=0,1==--i){f=!0;break}}while((p|d)<g);if(f)break;do{if(0!==(p=ve(t[h],a,u,i,0,e))){for(l=0;l<p;l++)t[c+l]=a[u+l];if(c+=p,u+=p,(i-=p)<=1){f=!0;break}}if(t[c++]=t[h++],0==--s){f=!0;break}if(0!==(d=ye(a[u],t,h,s,0,e))){for(l=0;l<d;l++)t[c+l]=t[h+l];if(c+=d,h+=d,0===(s-=d)){f=!0;break}}if(t[c++]=a[u++],1==--i){f=!0;break}g--}while(p>=7||d>=7);if(f)break;g<0&&(g=0),g+=2}if((r=g)<1&&(r=1),1===i){for(l=0;l<s;l++)t[c+l]=t[h+l];t[c+s]=a[u]}else{if(0===i)throw new Error;for(l=0;l<i;l++)t[c+l]=a[u+l]}}(l,u,h,c):function(n,i,o,s){var l=0;for(l=0;l<s;l++)a[l]=t[o+l];var u=n+i-1,h=s-1,c=o+s-1,p=0,d=0;if(t[c--]=t[u--],0==--i){for(p=c-(s-1),l=0;l<s;l++)t[p+l]=a[l];return}if(1===s){for(d=(c-=i)+1,p=(u-=i)+1,l=i-1;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)<f);if(v)break;do{if(0!==(g=i-ve(a[h],t,n,i,i-1,e))){for(i-=g,d=(c-=g)+1,p=(u-=g)+1,l=g-1;l>=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<y;l++)t[d+l]=a[p+l];if(s<=1){v=!0;break}}if(t[c--]=t[u--],0==--i){v=!0;break}f--}while(g>=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;l<s;l++)t[p+l]=a[l]}}(l,u,h,c))}return n=[],i=[],{mergeRuns:function(){for(;o>1;){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]&&t--;else if(i[t]>i[t+1])break;s(t)}},forceMergeRuns:function(){for(;o>1;){var t=o-2;t>0&&i[t-1]<i[t+1]&&t--,s(t)}},pushRun:function(t,e){n[o]=t,i[o]=e,o+=1}}}function _e(t,e,n,i){n||(n=0),i||(i=t.length);var r=i-n;if(!(r<2)){var o=0;if(r<32)ge(t,n,i,n+(o=fe(t,n,i,e)),e);else{var a=me(t,e),s=function(t){for(var e=0;t>=32;)e|=1&t,t>>=1;return t+e}(r);do{if((o=fe(t,n,i,e))<s){var l=r;l>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;n<this._roots.length;n++)this._roots[n].traverse(t,e)},t.prototype.getDisplayList=function(t,e){e=e||!1;var n=this._displayList;return!t&&n.length||this.updateDisplayList(e),n},t.prototype.updateDisplayList=function(t){this._displayListLen=0;for(var e=this._roots,n=this._displayList,i=0,r=e.length;i<r;i++)this._updateAndAddDisplayable(e[i],null,t);n.length=this._displayListLen,a.canvasSupported&&_e(n,we)},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;s<a.length;s++){var l=a[s];t.__dirty&&(l.__dirty|=1),this._updateAndAddDisplayable(l,e,n)}t.__dirty=0}else{var u=t;e&&e.length?u.__clipPaths=e:u.__clipPaths&&u.__clipPaths.length>0&&(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<n;e++)this.delRoot(t[e]);else{var i=D(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}(),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;o<r;o++)t[o]=nn(e[o],n[o],i)}function on(t,e,n,i){for(var r=e.length,o=0;o<r;o++)t[o]=e[o]+n[o]*i;return t}function an(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;a<r;a++){t[a]||(t[a]=[]);for(var s=0;s<o;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)if(o>a)i.length=a;else for(var s=o;s<a;s++)i.push(1===n?r[s]:en.call(r[s]));var l=i[0]&&i[0].length;for(s=0;s<i.length;s++)if(1===n)isNaN(i[s])&&(i[s]=r[s]);else for(var u=0;u<l;u++)isNaN(i[s][u])&&(i[s][u]=r[s][u])}}function ln(t,e){var n=t.length;if(n!==e.length)return!1;for(var i=0;i<n;i++)if(t[i]!==e[i])return!1;return!0}function un(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 hn(t,e,n,i,r,o,a,s){for(var l=e.length,u=0;u<l;u++)t[u]=un(e[u],n[u],i[u],r[u],o,a,s)}function cn(t){if(k(t)){var e=t.length;if(k(t[0])){for(var n=[],i=0;i<e;i++)n.push(en.call(t[i]));return n}return en.call(t)}return t}function pn(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}var dn,fn,gn=[0,0,0,0],yn=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},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;o<i;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;var a=e[0].value;for(o=0;o<i;o++)0===n?this.isValueColor?e[o].additiveValue=on([],e[o].value,a,-1):e[o].additiveValue=e[o].value-a:1===n?e[o].additiveValue=on([],e[o].value,a,-1):2===n&&(e[o].additiveValue=an([],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(e<0)n=0;else if(e<this._lastFramePercent){for(n=Math.min(this._lastFrame+1,a-1);n>=0&&!(o[n].percent<=e);n--);n=Math.min(n,a-2)}else{for(n=this._lastFrame;n<a&&!(o[n].percent>e);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;h<l;h++){t[h]||(t[1]=[]);for(var c=0;c<u;c++)t[h][c]=un(e[h][c],n[h][c],i[h][c],r[h][c],o,a,s)}}(f,y,g,v,m,d,d*d,d*d*d);else if(u)hn(f,y,g,v,m,d,d*d,d*d*d),i||(t[s]=pn(f));else{var _=void 0;_=this.interpolable?un(y,g,v,m,d,d*d,d*d*d):v,i?this._additiveValue=_:t[s]=_}}else if(l>0)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<r;a++){t[a]||(t[a]=[]);for(var s=0;s<o;s++)t[a][s]=nn(e[a][s],n[a][s],i)}}(f,c[r],h[r],d);else if(u)rn(f,c[r],h[r],d),i||(t[s]=pn(f));else{_=void 0;_=this.interpolable?nn(c[r],h[r],d):function(t,e,n){return n>.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;r<n.length;r++){var o=n[r],a=i[o];if(!a){a=i[o]=new yn(o);var s=void 0,l=this._getAdditiveTrack(o);if(l){var u=l.keyframes[l.keyframes.length-1];s=u&&u.value,l.isValueColor&&s&&(s=pn(s))}else s=this._target[o];if(null==s)continue;0!==t&&a.addKeyframe(0,cn(s)),this._trackKeys.push(o)}a.addKeyframe(t,cn(e[o]))}return this._maxTime=Math.max(this._maxTime,t),this},t.prototype.pause=function(){this._clip.pause(),this._paused=!0},t.prototype.resume=function(){this._clip.resume(),this._paused=!1},t.prototype.isPaused=function(){return!!this._paused},t.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var t=this._doneList;if(t)for(var e=t.length,n=0;n<e;n++)t[n].call(this)},t.prototype._abortedCallback=function(){this._setTracksFinished();var t=this.animation,e=this._abortedList;if(t&&t.removeClip(this._clip),this._clip=null,e)for(var n=0;n<e.length;n++)e[n].call(this)},t.prototype._setTracksFinished=function(){for(var t=this._tracks,e=this._trackKeys,n=0;n<e.length;n++)t[e[n]].setFinished()},t.prototype._getAdditiveTrack=function(t){var e,n=this._additiveAnimators;if(n)for(var i=0;i<n.length;i++){var r=n[i].getTrack(t);r&&(e=r)}return e},t.prototype.start=function(t,e){if(!(this._started>0)){this._started=1;for(var n=this,i=[],r=0;r<this._trackKeys.length;r++){var o=this._trackKeys[r],a=this._tracks[o],s=this._getAdditiveTrack(o),l=a.keyframes;if(a.prepare(s),a.needsAnimate())i.push(a);else if(!a.interpolable){var u=l[l.length-1];u&&(n._target[a.propName]=u.value)}}if(i.length||e){var h=new Te({life:this._maxTime,loop:this._loop,delay:this._delay,onframe:function(t){n._started=2;var e=n._additiveAnimators;if(e){for(var r=!1,o=0;o<e.length;o++)if(e[o]._clip){r=!0;break}r||(n._additiveAnimators=null)}for(o=0;o<i.length;o++)i[o].step(n._target,t);var a=n._onframeList;if(a)for(o=0;o<a.length;o++)a[o](n._target,t)},ondestroy:function(){n._doneCallback()}});this._clip=h,this.animation&&this.animation.addClip(h),t&&"spline"!==t&&(h.easing=t)}else this._doneCallback();return this}},t.prototype.stop=function(t){if(this._clip){var e=this._clip;t&&e.onframe(1),this._abortedCallback()}},t.prototype.delay=function(t){return this._delay=t,this},t.prototype.during=function(t){return t&&(this._onframeList||(this._onframeList=[]),this._onframeList.push(t)),this},t.prototype.done=function(t){return t&&(this._doneList||(this._doneList=[]),this._doneList.push(t)),this},t.prototype.aborted=function(t){return t&&(this._abortedList||(this._abortedList=[]),this._abortedList.push(t)),this},t.prototype.getClip=function(){return this._clip},t.prototype.getTrack=function(t){return this._tracks[t]},t.prototype.stopTracks=function(t,e){if(!t.length||!this._clip)return!0;for(var n=this._tracks,i=this._trackKeys,r=0;r<t.length;r++){var o=n[t[r]];o&&(e?o.step(this._target,1):1===this._started&&o.step(this._target,0),o.setFinished())}var a=!0;for(r=0;r<i.length;r++)if(!n[i[r]].isFinished()){a=!1;break}return a&&this._abortedCallback(),a},t.prototype.saveFinalToTarget=function(t,e){if(t){e=e||this._trackKeys;for(var n=0;n<e.length;n++){var i=e[n],r=this._tracks[i];if(r&&!r.isFinished()){var o=r.keyframes,a=o[o.length-1];if(a){var s=cn(a.value);r.isValueColor&&(s=pn(s)),t[i]=s}}}}},t.prototype.__changeFinalValue=function(t,e){e=e||E(t);for(var n=0;n<e.length;n++){var i=e[n],r=this._tracks[i];if(r){var o=r.keyframes;if(o.length>1){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=!(o<l||u<r||s<h||c<a);if(n){var d=1/0,f=0,g=Math.abs(o-l),y=Math.abs(u-r),v=Math.abs(s-h),m=Math.abs(c-a),_=Math.min(g,y),x=Math.min(v,m);o<l||u<r?_>f&&(f=_,g<y?ai.set(fi,-g,0):ai.set(fi,y,0)):_<d&&(d=_,g<y?ai.set(di,g,0):ai.set(di,-y,0)),s<h||c<a?x>f&&(f=x,v<m?ai.set(fi,0,-v):ai.set(fi,0,m)):_<d&&(d=_,v<m?ai.set(di,0,v):ai.set(di,0,-m))}return n&&ai.copy(n,p?di:fi),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){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<r.length;a++){var s=xi(r[a],e,n,i);0===a?o.copy(s):o.union(s)}return o}function wi(t,e,n){return"right"===n?t-=e:"center"===n&&(t-=e/2),t}function Si(t,e,n){return"middle"===n?t-=e/2:"bottom"===n&&(t-=e),t}function Mi(t){return _i("国",t)}function Ii(t,e){return"string"==typeof t?t.lastIndexOf("%")>=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;i<n.length;i++){var r=n[i];this.attrKV(r,t[r])}return this.markRedraw(),this},t.prototype.saveCurrentToNormalState=function(t){this._innerSaveToNormal(t);for(var e=this._normalState,n=0;n<this.animators.length;n++){var i=this.animators[n],r=i.__fromStateTransition;if(!r||r===Ci){var o=i.targetName,a=o?e[o]:e;i.saveFinalToTarget(a)}}},t.prototype._innerSaveToNormal=function(t){var e=this._normalState;e||(e=this._normalState={}),t.textConfig&&!e.textConfig&&(e.textConfig=this.textConfig),this._savePrimaryToNormal(t,e,Di)},t.prototype._savePrimaryToNormal=function(t,e,n){for(var i=0;i<n.length;i++){var r=n[i];null==t[r]||r in e||(e[r]=this[r])}},t.prototype.hasState=function(){return this.currentStates.length>0},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;s<o;s++)if(t[s]!==r[s]){a=!1;break}if(a)return;for(s=0;s<o;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),d=this.stateTransition;this.saveCurrentToNormalState(p),this._applyStateObj(t.join(","),p,this._normalState,!1,!e&&!this.__inHover&&d&&d.duration>0,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<this.animators.length;t++){var e=this.animators[t];e.targetName&&e.changeTarget(this[e.targetName])}},t.prototype.removeState=function(t){var e=D(this.currentStates,t);if(e>=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<t.length;i++){var r=t[i];I(n,r),r.textConfig&&I(e=e||{},r.textConfig)}return e&&(n.textConfig=e),n},t.prototype._applyStateObj=function(t,e,n,i,r,o){var a=!(e&&i);e&&e.textConfig?(this.textConfig=I({},i?this.textConfig:n.textConfig),I(this.textConfig,e.textConfig)):a&&n.textConfig&&(this.textConfig=n.textConfig);for(var s={},l=!1,u=0;u<Di.length;u++){var h=Di[u],c=r&&Ai[h];e&&null!=e[h]?c?(l=!0,s[h]=e[h]):this[h]=e[h]:a&&null!=n[h]&&(c?(l=!0,s[h]=n[h]):this[h]=n[h])}if(!r)for(u=0;u<this.animators.length;u++){var p=this.animators[u],d=p.targetName;p.__changeFinalValue(d?(e||n)[d]:e||n)}l&&this._transitionState(t,s,o)},t.prototype._attachComponent=function(t){if(t.__zr&&!t.__hostTarget)throw new Error("Text element has been added to zrender.");if(t===this)throw new Error("Recursive component attachment.");var e=this.__zr;e&&t.addSelfToZr(e),t.__zr=e,t.__hostTarget=this},t.prototype._detachComponent=function(t){t.__zr&&t.removeSelfFromZr(t.__zr),t.__zr=null,t.__hostTarget=null},t.prototype.getClipPath=function(){return this._clipPath},t.prototype.setClipPath=function(t){this._clipPath&&this._clipPath!==t&&this.removeClipPath(),this._attachComponent(t),this._clipPath=t,this.markRedraw()},t.prototype.removeClipPath=function(){var t=this._clipPath;t&&(this._detachComponent(t),this._clipPath=null,this.markRedraw())},t.prototype.getTextContent=function(){return this._textContent},t.prototype.setTextContent=function(t){var e=this._textContent;if(e!==t){if(e&&e!==t&&this.removeTextContent(),t.__zr&&!t.__hostTarget)throw new Error("Text element has been added to zrender.");t.attachedTransform=new oi,this._attachComponent(t),this._textContent=t,this.markRedraw()}},t.prototype.setTextConfig=function(t){this.textConfig||(this.textConfig={}),I(this.textConfig,t),this.markRedraw()},t.prototype.removeTextConfig=function(){this.textConfig=null,this.markRedraw()},t.prototype.removeTextContent=function(){var t=this._textContent;t&&(t.attachedTransform=null,this._detachComponent(t),this._textContent=null,this._innerTextDefaultStyle=null,this.markRedraw())},t.prototype.getTextGuideLine=function(){return this._textGuide},t.prototype.setTextGuideLine=function(t){this._textGuide&&this._textGuide!==t&&this.removeTextGuideLine(),this._attachComponent(t),this._textGuide=t,this.markRedraw()},t.prototype.removeTextGuideLine=function(){var t=this._textGuide;t&&(this._detachComponent(t),this._textGuide=null,this.markRedraw())},t.prototype.markRedraw=function(){this.__dirty|=1;var t=this.__zr;t&&(this.__inHover?t.refreshHover():t.refresh()),this.__hostTarget&&this.__hostTarget.markRedraw()},t.prototype.dirty=function(){this.markRedraw()},t.prototype._toggleHoverLayerFlag=function(t){this.__inHover=t;var e=this._textCo
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
Showing preview only (250K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2801 symbols across 25 files)
FILE: cloudfunctions/statisticRouter/utils/response_content.js
constant SUCCESS (line 1) | const SUCCESS = { errorcode: 100, errormsg: "success" } ...
constant LOGINOK (line 2) | const LOGINOK = { errorcode: 1, errormsg: "Login successfully" }...
constant REGISTEROK (line 3) | const REGISTEROK= { errorcode: 2, errormsg: "Register successfully...
constant DBERR (line 4) | const DBERR = { errorcode: -1, errormsg: "Database error!" } ...
constant ROUTERERR (line 5) | const ROUTERERR = { errorcode: -2, errormsg: "Wrong router name" } ...
constant LOGINERR (line 6) | const LOGINERR = { errorcode: -3, errormsg: "Wrong username or pwd...
constant DATAERR (line 7) | const DATAERR = { errorcode: -4, errormsg: "Wrong data!" } ...
constant UNKOWNERR (line 8) | const UNKOWNERR = { errorcode: -100, errormsg: "Unkown error!" } ...
FILE: cloudfunctions/userRouter/utils/response_content.js
constant SUCCESS (line 1) | const SUCCESS = { errorcode: 100, errormsg: "success" } ...
constant LOGINOK (line 2) | const LOGINOK = { errorcode: 1, errormsg: "Login successfully" }...
constant REGISTEROK (line 3) | const REGISTEROK= { errorcode: 2, errormsg: "Register successfully...
constant DBERR (line 4) | const DBERR = { errorcode: -1, errormsg: "Database error!" } ...
constant ROUTERERR (line 5) | const ROUTERERR = { errorcode: -2, errormsg: "Wrong router name" } ...
constant LOGINERR (line 6) | const LOGINERR = { errorcode: -3, errormsg: "Wrong username or pwd...
constant DATAERR (line 7) | const DATAERR = { errorcode: -4, errormsg: "Wrong data!" } ...
constant UNKOWNERR (line 8) | const UNKOWNERR = { errorcode: -100, errormsg: "Unkown error!" } ...
FILE: cloudfunctions/wordRouter/utils/response_content.js
constant SUCCESS (line 1) | const SUCCESS = { errorcode: 100, errormsg: "success" } ...
constant LOGINOK (line 2) | const LOGINOK = { errorcode: 1, errormsg: "Login successfully" }...
constant REGISTEROK (line 3) | const REGISTEROK= { errorcode: 2, errormsg: "Register successfully...
constant DBERR (line 4) | const DBERR = { errorcode: -1, errormsg: "Database error!" } ...
constant ROUTERERR (line 5) | const ROUTERERR = { errorcode: -2, errormsg: "Wrong router name" } ...
constant LOGINERR (line 6) | const LOGINERR = { errorcode: -3, errormsg: "Wrong username or pwd...
constant DATAERR (line 7) | const DATAERR = { errorcode: -4, errormsg: "Wrong data!" } ...
constant UNKOWNERR (line 8) | const UNKOWNERR = { errorcode: -100, errormsg: "Unkown error!" } ...
FILE: miniprogram/components/cloudTipModal/index.js
method onChangeShowUploadTip (line 24) | onChangeShowUploadTip() {
method copyShell (line 30) | copyShell() {
FILE: miniprogram/components/ec-canvas/ec-canvas.js
function compareVersion (line 7) | function compareVersion(v1, v2) {
method initByOldWay (line 112) | initByOldWay(callback) {
method initByNewWay (line 141) | initByNewWay(callback) {
method canvasToTempFilePath (line 176) | canvasToTempFilePath(opt) {
method touchStart (line 199) | touchStart(e) {
method touchMove (line 215) | touchMove(e) {
method touchEnd (line 227) | touchEnd(e) {
function wrapTouch (line 245) | function wrapTouch(event) {
FILE: miniprogram/components/ec-canvas/echarts.js
function n (line 35) | function n(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null=...
function r (line 35) | function r(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e]....
function m (line 35) | function m(t,e){v[t]=e}
function x (line 35) | function x(){return _++}
function b (line 35) | function b(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];"...
function w (line 35) | function w(t){if(null==t||"object"!=typeof t)return t;var e=t,n=u.call(t...
function S (line 35) | function S(t,e,n){if(!X(e)||!X(t))return n?w(e):t;for(var i in e)if(e.ha...
function M (line 35) | function M(t,e){for(var n=t[0],i=1,r=t.length;i<r;i++)n=S(n,t[i],e);retu...
function I (line 35) | function I(t,e){if(Object.assign)Object.assign(t,e);else for(var n in e)...
function T (line 35) | function T(t,e,n){for(var i=E(e),r=0;r<i.length;r++){var o=i[r];(n?null!...
function D (line 35) | function D(t,e){if(t){if(t.indexOf)return t.indexOf(e);for(var n=0,i=t.l...
function A (line 35) | function A(t,e){var n=t.prototype;function i(){}for(var r in i.prototype...
function L (line 35) | function L(t,e,n){if(t="prototype"in t?t.prototype:t,e="prototype"in e?e...
function k (line 35) | function k(t){return!!t&&("string"!=typeof t&&"number"==typeof t.length)}
function P (line 35) | function P(t,e,n){if(t&&e)if(t.forEach&&t.forEach===c)t.forEach(e,n);els...
function O (line 35) | function O(t,e,n){if(!t)return[];if(!e)return nt(t);if(t.map&&t.map===f)...
function R (line 35) | function R(t,e,n,i){if(t&&e){for(var r=0,o=t.length;r<o;r++)n=e.call(i,n...
function N (line 35) | function N(t,e,n){if(!t)return[];if(!e)return nt(t);if(t.filter&&t.filte...
function z (line 35) | function z(t,e,n){if(t&&e)for(var i=0,r=t.length;i<r;i++)if(e.call(n,t[i...
function E (line 35) | function E(t){if(!t)return[];if(Object.keys)return Object.keys(t);var e=...
function B (line 35) | function B(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n...
function F (line 35) | function F(t){return Array.isArray?Array.isArray(t):"[object Array]"===u...
function G (line 35) | function G(t){return"function"==typeof t}
function H (line 35) | function H(t){return"string"==typeof t}
function W (line 35) | function W(t){return"[object String]"===u.call(t)}
function U (line 35) | function U(t){return"number"==typeof t}
function X (line 35) | function X(t){var e=typeof t;return"function"===e||!!t&&"object"===e}
function Y (line 35) | function Y(t){return!!s[u.call(t)]}
function Z (line 35) | function Z(t){return!!l[u.call(t)]}
function j (line 35) | function j(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"ob...
function q (line 35) | function q(t){return null!=t.colorStops}
function K (line 35) | function K(t){return null!=t.image}
function $ (line 35) | function $(t){return"[object RegExp]"===u.call(t)}
function J (line 35) | function J(t){return t!=t}
function Q (line 35) | function Q(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];f...
function tt (line 35) | function tt(t,e){return null!=t?t:e}
function et (line 35) | function et(t,e,n){return null!=t?t:null!=e?e:n}
function nt (line 35) | function nt(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[...
function it (line 35) | function it(t){if("number"==typeof t)return[t,t,t,t];var e=t.length;retu...
function rt (line 35) | function rt(t,e){if(!t)throw new Error(e)}
function ot (line 35) | function ot(t){return null==t?null:"function"==typeof t.trim?t.trim():t....
function st (line 35) | function st(t){t[at]=!0}
function lt (line 35) | function lt(t){return t[at]}
function t (line 35) | function t(e){this.data={};var n=F(e);this.data={};var i=this;function r...
function ht (line 35) | function ht(t){return new ut(t)}
function ct (line 35) | function ct(t,e){for(var n=new t.constructor(t.length+e.length),i=0;i<t....
function pt (line 35) | function pt(t,e){var n;if(Object.create)n=Object.create(t);else{var i=fu...
function dt (line 35) | function dt(t,e){return t.hasOwnProperty(e)}
function ft (line 35) | function ft(){}
function yt (line 35) | function yt(t,e){return null==t&&(t=0),null==e&&(e=0),[t,e]}
function vt (line 35) | function vt(t,e){return t[0]=e[0],t[1]=e[1],t}
function mt (line 35) | function mt(t){return[t[0],t[1]]}
function _t (line 35) | function _t(t,e,n){return t[0]=e,t[1]=n,t}
function xt (line 35) | function xt(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}
function bt (line 35) | function bt(t,e,n,i){return t[0]=e[0]+n[0]*i,t[1]=e[1]+n[1]*i,t}
function wt (line 35) | function wt(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}
function St (line 35) | function St(t){return Math.sqrt(It(t))}
function It (line 35) | function It(t){return t[0]*t[0]+t[1]*t[1]}
function Ct (line 35) | function Ct(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}
function Dt (line 35) | function Dt(t,e){var n=St(e);return 0===n?(t[0]=0,t[1]=0):(t[0]=e[0]/n,t...
function At (line 35) | function At(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t...
function kt (line 35) | function kt(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])}
function Ot (line 35) | function Ot(t,e,n,i){return t[0]=e[0]+i*(n[0]-e[0]),t[1]=e[1]+i*(n[1]-e[...
function Rt (line 35) | function Rt(t,e,n){var i=e[0],r=e[1];return t[0]=n[0]*i+n[2]*r+n[4],t[1]...
function Nt (line 35) | function Nt(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[...
function zt (line 35) | function zt(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[...
function t (line 35) | function t(t){this.handler=t,t.on("mousedown",this._dragStart,this),t.on...
function t (line 35) | function t(t){t&&(this._$eventProcessor=t)}
function Ht (line 35) | function Ht(t,e,n,i,r,o){var a=i+"-"+r,s=t.length;if(o.hasOwnProperty(a)...
function Wt (line 35) | function Wt(t,e){var n=[[t[0],t[1],1,0,0,0,-e[0]*t[0],-e[0]*t[1]],[0,0,0...
function Xt (line 35) | function Xt(t,e,n,i,r){if(e.getBoundingClientRect&&a.domSupported&&!Yt(e...
function Yt (line 35) | function Yt(t){return"CANVAS"===t.nodeName.toUpperCase()}
function Kt (line 35) | function Kt(t,e,n,i){return n=n||{},i||!a.canvasSupported?$t(t,e,n):a.br...
function $t (line 35) | function $t(t,e,n){if(a.domSupported&&t.getBoundingClientRect){var i=e.c...
function Jt (line 35) | function Jt(t){return t||window.event}
function Qt (line 35) | function Qt(t,e,n){if(null!=(e=Jt(e)).zrX)return e;var i=e.type;if(i&&i....
function te (line 35) | function te(t,e,n,i){Zt?t.addEventListener(e,n,i):t.attachEvent("on"+e,n)}
function ne (line 35) | function ne(t){return 2===t.which||3===t.which}
function t (line 35) | function t(){this._track=[]}
function re (line 35) | function re(t){var e=t[1][0]-t[0][0],n=t[1][1]-t[0][1];return Math.sqrt(...
function se (line 35) | function se(){ee(this.event)}
function e (line 35) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hand...
function e (line 35) | function e(e,n,i,r){var o=t.call(this)||this;return o._hovered=new ue(0,...
function pe (line 35) | function pe(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){for(v...
function de (line 35) | function de(t,e,n){var i=t.painter;return e<0||e>i.getWidth()||n<0||n>i....
function fe (line 35) | function fe(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){fo...
function ge (line 35) | function ge(t,e,n,i,r){for(i===e&&i++;i<n;i++){for(var o,a=t[i],s=e,l=i;...
function ye (line 35) | 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;l<s...
function ve (line 35) | 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;l<s...
function me (line 35) | function me(t,e){var n,i,r=7,o=0;t.length;var a=[];function s(s){var l=n...
function _e (line 35) | function _e(t,e,n,i){n||(n=0),i||(i=t.length);var r=i-n;if(!(r<2)){var o...
function be (line 35) | function be(){xe||(xe=!0,console.warn("z / z2 / zlevel of displayable is...
function we (line 35) | function we(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:...
function t (line 35) | function t(){this._roots=[],this._displayList=[],this._displayListLen=0,...
function t (line 35) | function t(t){this._initialized=!1,this._startTime=0,this._pausedTime=0,...
function t (line 35) | function t(){this._len=0}
function t (line 35) | function t(t){this._list=new De,this._maxSize=10,this._map={},this._maxS...
function ke (line 35) | function ke(t){return(t=Math.round(t))<0?0:t>255?255:t}
function Pe (line 35) | function Pe(t){return t<0?0:t>1?1:t}
function Oe (line 35) | function Oe(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?ke(pa...
function Re (line 35) | function Re(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?Pe(pa...
function Ne (line 35) | 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...
function ze (line 35) | function ze(t,e,n){return t+(e-t)*n}
function Ee (line 35) | function Ee(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}
function Ve (line 35) | function Ve(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}
function Ge (line 35) | function Ge(t,e){Fe&&Ve(Fe,e),Fe=Be.put(t,Fe||e.slice())}
function He (line 35) | function He(t,e){if(t){e=e||[];var n=Be.get(t);if(n)return Ve(e,n);var i...
function We (line 35) | function We(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=Re(t[1]),r=R...
function Ue (line 35) | function Ue(t,e){var n=He(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-...
function Xe (line 35) | function Xe(t){var e=He(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[...
function Ye (line 35) | function Ye(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[];var i=t*(e.length...
function je (line 35) | function je(t,e,n){if(e&&e.length&&t>=0&&t<=1){var i=t*(e.length-1),r=Ma...
function Ke (line 35) | function Ke(t,e,n,i){var r=He(t);if(t)return r=function(t){if(t){var e,n...
function $e (line 35) | function $e(t,e){var n=He(t);if(n&&null!=e)return n[3]=Pe(e),Je(n,"rgba")}
function Je (line 35) | function Je(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return"rgb...
function Qe (line 35) | function Qe(t,e){var n=He(t);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[...
function nn (line 35) | function nn(t,e,n){return(e-t)*n+t}
function rn (line 35) | function rn(t,e,n,i){for(var r=e.length,o=0;o<r;o++)t[o]=nn(e[o],n[o],i)}
function on (line 35) | function on(t,e,n,i){for(var r=e.length,o=0;o<r;o++)t[o]=e[o]+n[o]*i;ret...
function an (line 35) | function an(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;a<r;a++){t[...
function sn (line 35) | function sn(t,e,n){var i=t,r=e;if(i.push&&r.push){var o=i.length,a=r.len...
function ln (line 35) | function ln(t,e){var n=t.length;if(n!==e.length)return!1;for(var i=0;i<n...
function un (line 35) | function un(t,e,n,i,r,o,a){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)...
function hn (line 35) | function hn(t,e,n,i,r,o,a,s){for(var l=e.length,u=0;u<l;u++)t[u]=un(e[u]...
function cn (line 35) | function cn(t){if(k(t)){var e=t.length;if(k(t[0])){for(var n=[],i=0;i<e;...
function pn (line 35) | function pn(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=M...
function t (line 35) | function t(t){this.keyframes=[],this.maxTime=0,this.arrDim=0,this.interp...
function t (line 35) | function t(t,e,n){this._tracks={},this._trackKeys=[],this._delay=0,this....
function e (line 35) | function e(e){var n=t.call(this)||this;return n._running=!1,n._time=0,n....
function Mn (line 35) | function Mn(t){var e=t.pointerType;return"pen"===e||"touch"===e}
function In (line 35) | function In(t){t&&(t.zrByTouch=!0)}
function Tn (line 35) | function Tn(t,e){for(var n=e,i=!1;n&&9!==n.nodeType&&!(i=n.domBelongToZr...
function Ln (line 35) | function Ln(t,e){var n=e.domHandlers;a.pointerEventsSupported?P(xn.point...
function kn (line 35) | function kn(t,e){function n(n){Pn(e,n,(function(i){i=Jt(i),Tn(t,i.target...
function Pn (line 35) | function Pn(t,e,n,i){t.mounted[e]=n,t.listenerOpts[e]=i,te(t.domTarget,e...
function On (line 35) | function On(t){var e,n,i,r,o=t.mounted;for(var a in o)o.hasOwnProperty(a...
function e (line 35) | function e(e,n){var i=t.call(this)||this;return i.__pointerCapturing=!1,...
function Fn (line 35) | function Fn(){return[1,0,0,1,0,0]}
function Gn (line 35) | 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 (line 35) | 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...
function Wn (line 35) | 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...
function Un (line 35) | 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...
function Xn (line 35) | 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....
function Yn (line 35) | 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]...
function Zn (line 35) | 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...
function jn (line 35) | function jn(t){var e=[1,0,0,1,0,0];return Hn(e,t),e}
function Jn (line 35) | function Jn(t){return t>$n||t<-5e-5}
function t (line 35) | function t(){}
function t (line 35) | function t(t,e){this.x=t||0,this.y=e||0}
function t (line 35) | function t(t,e,n,i){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i),this.x=t,this.y=e,...
function _i (line 35) | function _i(t,e){var n=yi[e=e||vi];n||(n=yi[e]=new Ae(500));var i=n.get(...
function xi (line 35) | function xi(t,e,n,i){var r=_i(t,e),o=Mi(e),a=wi(0,r,n),s=Si(0,o,i);retur...
function bi (line 35) | function bi(t,e,n,i){var r=((t||"")+"").split("\n");if(1===r.length)retu...
function wi (line 35) | function wi(t,e,n){return"right"===n?t-=e:"center"===n&&(t-=e/2),t}
function Si (line 35) | function Si(t,e,n){return"middle"===n?t-=e/2:"bottom"===n&&(t-=e),t}
function Mi (line 35) | function Mi(t){return _i("国",t)}
function Ii (line 35) | function Ii(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFlo...
function Ti (line 35) | function Ti(t,e,n){var i=e.position||"inside",r=null!=e.distance?e.dista...
function t (line 35) | function t(t){this.id=x(),this.animators=[],this.currentStates=[],this.s...
function i (line 35) | function i(t,e,i){n[t+e+i]||(console.warn("DEPRECATED: '"+t+"' has been ...
function r (line 35) | function r(t,n,r,o){function a(t,e){Object.defineProperty(e,0,{get:funct...
function Oi (line 35) | function Oi(t,e,n,i,r){var o=[];zi(t,"",t,e,n=n||{},i,o,r);var a=o.lengt...
function Ri (line 35) | function Ri(t,e,n){for(var i=0;i<n;i++)t[i]=e[i]}
function Ni (line 35) | function Ni(t,e,n){if(k(e[n]))if(k(t[n])||(t[n]=[]),Z(e[n])){var i=e[n]....
function zi (line 35) | function zi(t,e,n,i,r,o,a,s){for(var l=[],u=[],h=E(i),c=r.duration,p=r.d...
function e (line 35) | function e(e){var n=t.call(this)||this;return n.isGroup=!0,n._children=[...
function t (line 45) | function t(t,e,n){var i=this;this._sleepAfterStill=10,this._stillFrameAc...
function Hi (line 45) | function Hi(t,e){var n=new Gi(x(),t,e);return Fi[n.id]=n,n}
function Wi (line 45) | function Wi(t,e){Bi[t]=e}
function Yi (line 45) | function Yi(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===...
function Zi (line 45) | function Zi(t,e){switch(t){case"center":case"middle":t="50%";break;case"...
function ji (line 45) | function ji(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t...
function qi (line 45) | function qi(t){return t.sort((function(t,e){return t-e})),t}
function Ki (line 45) | function Ki(t){if(t=+t,isNaN(t))return 0;if(t>1e-14)for(var e=1,n=0;n<15...
function $i (line 45) | function $i(t){var e=t.toString().toLowerCase(),n=e.indexOf("e"),i=n>0?+...
function Ji (line 45) | function Ji(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i)...
function Qi (line 45) | function Qi(t,e,n){if(!t[e])return 0;var i=R(t,(function(t,e){return t+(...
function tr (line 45) | function tr(t,e){var n=Math.max(Ki(t),Ki(e)),i=t+e;return n>20?i:ji(i,n)}
function nr (line 45) | function nr(t){var e=2*Math.PI;return(t%e+e)%e}
function ir (line 45) | function ir(t){return t>-1e-4&&t<Xi}
function or (line 45) | function or(t){if(t instanceof Date)return t;if("string"==typeof t){var ...
function ar (line 45) | function ar(t){return Math.pow(10,sr(t))}
function sr (line 45) | function sr(t){if(0===t)return 0;var e=Math.floor(Math.log(t)/Math.LN10)...
function lr (line 45) | function lr(t,e){var n=sr(t),i=Math.pow(10,n),r=t/i;return t=(e?r<1.5?1:...
function ur (line 45) | function ur(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;...
function hr (line 45) | function hr(t){t.sort((function(t,e){return s(t,e,0)?-1:1}));for(var e=-...
function cr (line 45) | function cr(t){var e=parseFloat(t);return e==t&&(0!==e||"string"!=typeof...
function pr (line 45) | function pr(t){return!isNaN(cr(t))}
function dr (line 45) | function dr(){return Math.round(9*Math.random())}
function fr (line 45) | function fr(t,e){return 0===e?t:fr(e,t%e)}
function gr (line 45) | function gr(t,e){return null==t?e:null==e?t:t*e/fr(t,e)}
function yr (line 45) | function yr(t){0}
function vr (line 45) | function vr(t){throw new Error(t)}
function xr (line 45) | function xr(t){return t instanceof Array?t:null==t?[]:[t]}
function br (line 45) | function br(t,e,n){if(t){t[e]=t[e]||{},t.emphasis=t.emphasis||{},t.empha...
function Sr (line 45) | function Sr(t){return!X(t)||F(t)||t instanceof Date?t:t.value}
function Mr (line 45) | function Mr(t,e,n){var i="normalMerge"===n,r="replaceMerge"===n,o="repla...
function Ir (line 45) | function Ir(t,e,n){var i=Cr(e[t],null),r=Cr(n[t],null);return null!=i&&n...
function Tr (line 45) | function Tr(t){return Cr(t,"")}
function Cr (line 45) | function Cr(t,e){if(null==t)return e;var n=typeof t;return"string"===n?t...
function Dr (line 45) | function Dr(t){var e=t.name;return!(!e||!e.indexOf(mr))}
function Ar (line 45) | function Ar(t){return t&&null!=t.id&&0===Tr(t.id).indexOf(_r)}
function Lr (line 45) | function Lr(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=...
function kr (line 45) | function kr(){var t="__ec_inner_"+Pr++;return function(e){return e[t]||(...
function Or (line 45) | function Or(t,e,n){var i=Rr(e,n),r=i.mainTypeSpecified,o=i.queryOptionMa...
function Rr (line 45) | function Rr(t,e){var n;if(H(t)){var i={};i[t+"Index"]=0,n=i}else n=t;var...
function Er (line 45) | function Er(t,e,n,i){i=i||Nr;var r=n.index,o=n.id,a=n.name,s={models:nul...
function Vr (line 45) | function Vr(t,e,n){t.setAttribute?t.setAttribute(e,n):t[e]=n}
function Br (line 45) | function Br(t,e){var n=ht(),i=[];return P(t,(function(t){var r=e(t);(n.g...
function Fr (line 45) | function Fr(t,e,n,i,r){var o=null==e||"auto"===e;if(null==i)return i;if(...
function Wr (line 45) | function Wr(t){var e={main:"",sub:""};if(t){var n=t.split(".");e.main=n[...
function Ur (line 45) | function Ur(t,e){t.$constructor=t,t.extend=function(t){var e=this;functi...
function Xr (line 45) | function Xr(t){return"function"==typeof t&&/^class\s/.test(Function.prot...
function Yr (line 45) | function Yr(t,e){t.extend=e.extend}
function jr (line 45) | function jr(t,e){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=argument...
function qr (line 45) | function qr(t,e,n){return this.superClass.prototype[e].apply(t,n)}
function Kr (line 45) | function Kr(t){var e={};t.registerClass=function(t){var n,i=t.type||t.pr...
function $r (line 45) | function $r(t,e){for(var n=0;n<t.length;n++)t[n][1]||(t[n][1]=t[n][0]);r...
function t (line 45) | function t(){}
function eo (line 45) | function eo(t){if("string"==typeof t){var e=to.get(t);return e&&e.image}...
function no (line 45) | function no(t,e,n,i,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc...
function io (line 45) | function io(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__...
function ro (line 45) | function ro(t){return t&&t.width&&t.height}
function ao (line 45) | function ao(t,e,n,i,r){if(!e)return"";var o=(t+"").split("\n");r=so(e,n,...
function so (line 45) | function so(t,e,n,i){var r=I({},i=i||{});r.font=e,n=tt(n,"..."),r.maxIte...
function lo (line 45) | function lo(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)...
function uo (line 45) | function uo(t,e,n,i){for(var r=0,o=0,a=t.length;o<a&&r<e;o++){var s=t.ch...
function fo (line 45) | function fo(t,e,n,i,r){var o,a,s=""===e,l=r&&n.rich[r]||{},u=t.lines,h=l...
function yo (line 45) | function yo(t){return!function(t){var e=t.charCodeAt(0);return e>=33&&e<...
function vo (line 45) | function vo(t,e,n,i,r){for(var o=[],a=[],s="",l="",u=0,h=0,c=0;c<t.lengt...
function e (line 45) | function e(e){return t.call(this,e)||this}
function No (line 45) | function No(t){return t>-1e-8&&t<Do}
function zo (line 45) | function zo(t){return t>Do||t<-1e-8}
function Eo (line 45) | 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 (line 45) | function Vo(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r...
function Bo (line 45) | 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...
function Fo (line 45) | 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=...
function Go (line 45) | 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)...
function Ho (line 45) | 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...
function Wo (line 45) | function Wo(t,e,n,i,r,o,a,s,l){for(var u=t,h=e,c=0,p=1/l,d=1;d<=l;d++){v...
function Uo (line 45) | function Uo(t,e,n,i){var r=1-i;return r*(r*t+2*i*e)+i*i*n}
function Xo (line 45) | function Xo(t,e,n,i){return 2*((1-i)*(e-t)+i*(n-e))}
function Yo (line 45) | function Yo(t,e,n){var i=t+n-2*e;return 0===i?.5:(t-e)/i}
function Zo (line 45) | function Zo(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[...
function jo (line 45) | function jo(t,e,n,i,r,o,a,s,l){var u,h=.005,c=1/0;Po[0]=a,Po[1]=s;for(va...
function qo (line 45) | function qo(t,e,n,i,r,o,a){for(var s=t,l=e,u=0,h=1/a,c=1;c<=a;c++){var p...
function ra (line 45) | function ra(t,e,n){if(0!==t.length){for(var i=t[0],r=i[0],o=i[0],a=i[1],...
function oa (line 45) | function oa(t,e,n,i,r,o){r[0]=Ko(t,n),r[1]=Ko(e,i),o[0]=$o(t,n),o[1]=$o(...
function la (line 45) | function la(t,e,n,i,r,o,a,s,l,u){var h=Fo,c=Eo,p=h(t,n,r,a,aa);l[0]=1/0,...
function ua (line 45) | function ua(t,e,n,i,r,o,a,s){var l=Yo,u=Uo,h=$o(Ko(l(t,n,r),1),0),c=$o(K...
function ha (line 45) | function ha(t,e,n,i,r,o,a,s,l){var u=Nt,h=zt,c=Math.abs(r-o);if(c%ta<1e-...
function Da (line 45) | function Da(t){return Math.round(t/Ma*1e8)/1e8%2*Ma}
function Aa (line 45) | function Aa(t,e){var n=Da(t[0]);n<0&&(n+=Ia);var i=n-t[0],r=t[1];r+=i,!e...
function t (line 45) | function t(t){this.dpr=1,this._xi=0,this._yi=0,this._x0=0,this._y0=0,thi...
function ka (line 45) | 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...
function Pa (line 45) | function Pa(t,e,n,i,r,o,a,s,l,u,h){if(0===l)return!1;var c=l;return!(h>e...
function Oa (line 45) | function Oa(t,e,n,i,r,o,a,s,l){if(0===a)return!1;var u=a;return!(l>e+u&&...
function Na (line 45) | function Na(t){return(t%=Ra)<0&&(t+=Ra),t}
function Ea (line 45) | function Ea(t,e,n,i,r,o,a,s,l){if(0===a)return!1;var u=a;s-=t,l-=e;var h...
function Va (line 45) | function Va(t,e,n,i,r,o){if(o>e&&o>i||o<e&&o<i)return 0;if(i===e)return ...
function Wa (line 45) | function Wa(t,e,n,i,r,o,a,s,l,u){if(u>e&&u>i&&u>o&&u>s||u<e&&u<i&&u<o&&u...
function Ua (line 45) | function Ua(t,e,n,i,r,o,a,s){if(s>e&&s>i&&s>o||s<e&&s<i&&s<o)return 0;va...
function Xa (line 45) | function Xa(t,e,n,i,r,o,a,s){if((s-=e)>n||s<-n)return 0;var l=Math.sqrt(...
function Ya (line 45) | 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=...
function e (line 45) | function e(e){return t.call(this,e)||this}
function i (line 45) | function i(n){var i=e.call(this,n)||this;return t.init&&t.init.call(i,n),i}
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function is (line 45) | 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...
function rs (line 45) | 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=...
function os (line 45) | function os(t,e,n){if(!e)return t;var i=ns(2*t);return(i+ns(e))%2==0?i/2...
function e (line 45) | function e(e){return t.call(this,e)||this}
function e (line 45) | function e(e){var n=t.call(this)||this;return n.type="text",n._children=...
function y (line 45) | function y(t,e,n){t.width=e,t.lineHeight=n,c+=n,p=Math.max(p,e)}
function fs (line 45) | function fs(t){if(t){t.font=cs.makeFont(t);var e=t.align;"middle"===e&&(...
function gs (line 45) | function gs(t,e){return null==t||e<=0||"transparent"===t||"none"===t?nul...
function ys (line 45) | function ys(t,e,n){return"right"===e?t-n[1]:"center"===e?t+n[3]/2-n[1]/2...
function vs (line 45) | function vs(t){var e=t.text;return null!=e&&(e+=""),e}
function ms (line 45) | function ms(t){return!!(t.backgroundColor||t.borderWidth&&t.borderColor)}
function ks (line 45) | function ks(t){return null!=t&&"none"!==t}
function Os (line 45) | function Os(t){if("string"!=typeof t)return t;var e=Ps.get(t);return e||...
function Rs (line 45) | function Rs(t,e,n){t.onHoverStateChange&&(t.hoverState||0)!==n&&t.onHove...
function Ns (line 45) | function Ns(t){Rs(t,"emphasis",2)}
function zs (line 45) | function zs(t){2===t.hoverState&&Rs(t,"normal",0)}
function Es (line 45) | function Es(t){Rs(t,"blur",1)}
function Vs (line 45) | function Vs(t){1===t.hoverState&&Rs(t,"normal",0)}
function Bs (line 45) | function Bs(t){t.selected=!0}
function Fs (line 45) | function Fs(t){t.selected=!1}
function Gs (line 45) | function Gs(t,e,n){e(t,n)}
function Hs (line 45) | function Hs(t,e,n){Gs(t,e,n),t.isGroup&&t.traverse((function(t){Gs(t,e,n...
function Ws (line 45) | function Ws(t,e){switch(e){case"emphasis":t.hoverState=2;break;case"norm...
function Us (line 45) | function Us(t,e){var n=this.states[t];if(this.style){if("emphasis"===t)r...
function Xs (line 45) | function Xs(t){t.stateProxy=Us;var e=t.getTextContent(),n=t.getTextGuide...
function Ys (line 45) | function Ys(t,e){!tl(t,e)&&!t.__highByOuter&&Hs(t,Ns)}
function Zs (line 45) | function Zs(t,e){!tl(t,e)&&!t.__highByOuter&&Hs(t,zs)}
function js (line 45) | function js(t,e){t.__highByOuter|=1<<(e||0),Hs(t,Ns)}
function qs (line 45) | function qs(t,e){!(t.__highByOuter&=~(1<<(e||0)))&&Hs(t,zs)}
function Ks (line 45) | function Ks(t){Hs(t,Es)}
function $s (line 45) | function $s(t){Hs(t,Vs)}
function Js (line 45) | function Js(t){Hs(t,Bs)}
function Qs (line 45) | function Qs(t){Hs(t,Fs)}
function tl (line 45) | function tl(t,e){return t.__highDownSilentOnTouch&&e.zrByTouch}
function el (line 45) | function el(t){t.getModel().eachComponent((function(e,n){("series"===e?t...
function nl (line 45) | function nl(t,e,n,i){var r=i.getModel();function o(t,e){for(var n=0;n<e....
function il (line 45) | function il(t,e,n){if(null!=t&&null!=e){var i=n.getModel().getComponent(...
function rl (line 45) | function rl(t,e,n,i){var r={focusSelf:!1,dispatchers:null};if(null==t||"...
function ol (line 45) | function ol(t){P(t.getAllData(),(function(e){var n=e.data,i=e.type;n.eac...
function al (line 45) | function al(t){var e=[];return t.eachSeries((function(t){P(t.getAllData(...
function sl (line 45) | function sl(t,e,n){pl(t,!0),Hs(t,Xs),ll(t,e,n)}
function ll (line 45) | function ll(t,e,n){var i=_s(t);null!=e?(i.focus=e,i.blurScope=n):i.focus...
function cl (line 45) | function cl(t,e,n,i){n=n||"itemStyle";for(var r=0;r<ul.length;r++){var o...
function pl (line 45) | function pl(t,e){var n=!1===e,i=t;t.highDownSilentOnTouch&&(i.__highDown...
function dl (line 45) | function dl(t){return!(!t||!t.__highDownDispatcher)}
function fl (line 45) | function fl(t){var e=t.type;return e===Ds||e===As||e===Ls}
function gl (line 45) | function gl(t){var e=t.type;return e===Ts||e===Cs}
function Ml (line 45) | function Ml(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}
function Il (line 45) | function Il(t,e){return(t[0]*e[0]+t[1]*e[1])/(Ml(t)*Ml(e))}
function Tl (line 45) | function Tl(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(Il(t,e))}
function Cl (line 45) | function Cl(t,e,n,i,r,o,a,s,l,u,h){var c=l*(Sl/180),p=wl(c)*(t-n)/2+bl(c...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function kl (line 45) | function kl(t){return null!=t.setData}
function Pl (line 45) | function Pl(t,e){var n=function(t){var e=new La;if(!t)return e;var n,i=0...
function Ol (line 45) | function Ol(t,e){return new Ll(Pl(t,e))}
function e (line 45) | function e(e){return t.call(this,e)||this}
function e (line 45) | function e(e){return t.call(this,e)||this}
function ql (line 45) | function ql(t,e,n,i,r,o,a){var s=t-n,l=e-i,u=(a?o:-o)/Xl(s*s+l*l),h=u*l,...
function Kl (line 45) | 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||...
function e (line 45) | function e(e){return t.call(this,e)||this}
function e (line 45) | function e(e){return t.call(this,e)||this}
function eu (line 45) | function eu(t,e,n,i,r,o,a){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)...
function nu (line 45) | function nu(t,e,n){var i=e.smooth,r=e.points;if(r&&r.length>=2){if(i&&"s...
function e (line 45) | function e(e){return t.call(this,e)||this}
function e (line 45) | function e(e){return t.call(this,e)||this}
function e (line 45) | function e(e){return t.call(this,e)||this}
function pu (line 45) | function pu(t,e,n){var i=t.cpx2,r=t.cpy2;return null===i||null===r?[(n?V...
function e (line 45) | function e(e){return t.call(this,e)||this}
function e (line 45) | function e(e){return t.call(this,e)||this}
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type...
function t (line 45) | function t(t){this.colorStops=t||[]}
function e (line 45) | function e(e,n,i,r,o,a){var s=t.call(this,o)||this;return s.x=null==e?0:...
function e (line 45) | function e(e,n,i,r,o){var a=t.call(this,r)||this;return a.x=null==e?.5:e...
function t (line 45) | function t(t,e){this._corners=[],this._axes=[],this._origin=[0,0];for(va...
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.notC...
function Lu (line 45) | function Lu(t){return Ka.extend(t)}
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.applyTransform=i.apply...
function Pu (line 45) | function Pu(t,e){return ku(t,e)}
function Ou (line 45) | function Ou(t,e){Au[t]=e}
function Ru (line 45) | function Ru(t){if(Au.hasOwnProperty(t))return Au[t]}
function Nu (line 45) | function Nu(t,e,n,i){var r=Ol(t,e);return n&&("center"===i&&(n=Eu(n,r.ge...
function zu (line 45) | function zu(t,e,n){var i=new es({style:{image:t,x:e.x,y:e.y,width:e.widt...
function Eu (line 45) | function Eu(t,e){var n,i=e.width/e.height,r=t.height*i;return n=r<=t.wid...
function Bu (line 45) | function Bu(t,e){if(t.applyTransform){var n=t.getBoundingRect().calculat...
function Gu (line 45) | function Gu(t,e,n,i,r,o,a){var s,l=!1;"function"==typeof r?(a=o,o=r,r=nu...
function Hu (line 45) | function Hu(t,e,n,i,r,o){Gu("update",t,e,n,i,r,o)}
function Wu (line 45) | function Wu(t,e,n,i,r,o){Gu("init",t,e,n,i,r,o)}
function Uu (line 45) | function Uu(t,e,n,i,r,o){Zu(t)||Gu("remove",t,e,n,i,r,o)}
function Xu (line 45) | function Xu(t,e,n,i){t.removeTextContent(),t.removeTextGuideLine(),Uu(t,...
function Yu (line 45) | function Yu(t,e,n){function i(){t.parent&&t.parent.remove(t)}t.isGroup?t...
function Zu (line 45) | function Zu(t){if(!t.__zr)return!0;for(var e=0;e<t.animators.length;e++)...
function ju (line 45) | function ju(t,e){for(var n=Gn([]);t&&t!==e;)Wn(n,t.getLocalTransform(),n...
function qu (line 45) | function qu(t,e,n){return e&&!k(e)&&(e=oi.getLocalTransform(e)),n&&(e=Zn...
function Ku (line 45) | function Ku(t,e,n){var i=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/...
function $u (line 45) | function $u(t){return!t.isGroup}
function Ju (line 45) | function Ju(t,e,n){if(t&&e){var i,r=(i={},t.traverse((function(t){$u(t)&...
function Qu (line 45) | function Qu(t,e){return O(t,(function(t){var n=t[0];n=Cu(n,e.x),n=Du(n,e...
function th (line 45) | function th(t,e){var n=Cu(t.x,e.x),i=Du(t.x+t.width,e.x+e.width),r=Cu(t....
function eh (line 45) | function eh(t,e,n){var i=I({rectHover:!0},e),r=i.style={strokeNoScale:!0...
function nh (line 45) | function nh(t,e,n,i,r){for(var o=0,a=r[r.length-1];o<r.length;o++){var s...
function ih (line 45) | function ih(t,e,n,i,r,o,a,s){var l,u=n-t,h=i-e,c=a-r,p=s-o,d=rh(c,p,u,h)...
function rh (line 45) | function rh(t,e,n,i){return t*i-n*e}
function oh (line 45) | function oh(t){var e=t.itemTooltipOption,n=t.componentModel,i=t.itemName...
function lh (line 45) | function lh(t,e){for(var n=0;n<Ss.length;n++){var i=Ss[n],r=e[i],o=t.ens...
function uh (line 45) | function uh(t,e,n){var i,r=t.labelFetcher,o=t.labelDataIndex,a=t.labelDi...
function hh (line 45) | function hh(t,e,n,i){n=n||sh;for(var r=t instanceof cs,o=!1,a=0;a<Ms.len...
function ch (line 45) | function ch(t,e){e=e||"label";for(var n={normal:t.getModel(e)},i=0;i<Ss....
function ph (line 45) | function ph(t,e,n,i,r){var o={};return function(t,e,n,i,r){n=n||sh;var o...
function dh (line 45) | function dh(t,e,n){e=e||{};var i,r={},o=t.getShallow("rotate"),a=tt(t.ge...
function vh (line 45) | function vh(t,e,n,i,r,o,a,s){n=!r&&n||sh;var l=i&&i.inheritColor,u=e.get...
function mh (line 45) | function mh(t,e){var n=e&&e.getModel("textStyle");return ot([t.fontStyle...
function xh (line 45) | function xh(t,e,n,i){if(t){var r=_h(t);r.prevValue=r.value,r.value=n;var...
function bh (line 45) | function bh(t,e,n,i,r){var o=_h(t);if(o.valueAnimation){var a=o.defaultI...
function t (line 45) | function t(){}
function t (line 45) | function t(){}
function t (line 45) | function t(){}
function t (line 45) | function t(t,e,n){this.parentModel=e,this.ecModel=n,this.option=t}
function Nh (line 45) | function Nh(t){return[t||"",Rh++].join("_")}
function zh (line 45) | function zh(t,e){return S(S({},t,!0),e,!0)}
function Wh (line 45) | function Wh(t,e){t=t.toUpperCase(),Gh[t]=new Oh(e),Fh[t]=e}
function tc (line 45) | function tc(t,e){return"0000".substr(0,e-(t+="").length)+t}
function ec (line 45) | function ec(t){switch(t){case"half-year":case"quarter":return"month";cas...
function nc (line 45) | function nc(t){return t===ec(t)}
function ic (line 45) | function ic(t,e,n,i){var r=or(t),o=r[ac(n)](),a=r[sc(n)]()+1,s=Math.floo...
function rc (line 45) | function rc(t,e){var n=or(t),i=n[sc(e)]()+1,r=n[lc(e)](),o=n[uc(e)](),a=...
function oc (line 45) | function oc(t,e,n){var i="number"==typeof t?or(t):t;switch(e=e||rc(t,n))...
function ac (line 45) | function ac(t){return t?"getUTCFullYear":"getFullYear"}
function sc (line 45) | function sc(t){return t?"getUTCMonth":"getMonth"}
function lc (line 45) | function lc(t){return t?"getUTCDate":"getDate"}
function uc (line 45) | function uc(t){return t?"getUTCHours":"getHours"}
function hc (line 45) | function hc(t){return t?"getUTCMinutes":"getMinutes"}
function cc (line 45) | function cc(t){return t?"getUTCSeconds":"getSeconds"}
function pc (line 45) | function pc(t){return t?"getUTCSeconds":"getSeconds"}
function dc (line 45) | function dc(t){return t?"setUTCFullYear":"setFullYear"}
function fc (line 45) | function fc(t){return t?"setUTCMonth":"setMonth"}
function gc (line 45) | function gc(t){return t?"setUTCDate":"setDate"}
function yc (line 45) | function yc(t){return t?"setUTCHours":"setHours"}
function vc (line 45) | function vc(t){return t?"setUTCMinutes":"setMinutes"}
function mc (line 45) | function mc(t){return t?"setUTCSeconds":"setSeconds"}
function _c (line 45) | function _c(t){return t?"setUTCSeconds":"setSeconds"}
function xc (line 45) | function xc(t){if(!pr(t))return H(t)?t:"-";var e=(t+"").split(".");retur...
function bc (line 45) | function bc(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,(functio...
function Ic (line 45) | function Ic(t){return null==t?"":(t+"").replace(Sc,(function(t,e){return...
function Tc (line 45) | function Tc(t,e,n){function i(t){return t&&ot(t)?t:"-"}function r(t){ret...
function Ac (line 45) | function Ac(t,e,n){F(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r...
function Lc (line 45) | function Lc(t,e){var n=H(t)?{color:t,extraCssText:e}:t||{},i=n.color,r=n...
function kc (line 45) | function kc(t,e){return e=e||"transparent",H(t)?t:X(t)&&t.colorStops&&(t...
function Pc (line 45) | function Pc(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.ope...
function zc (line 45) | function zc(t,e,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var...
function Vc (line 45) | function Vc(t,e,n){n=wc(n||0);var i=e.width,r=e.height,o=Zi(t.left,i),a=...
function Bc (line 45) | function Bc(t,e,n,i,r){var o=!r||!r.hv||r.hv[0],a=!r||!r.hv||r.hv[1],s=r...
function Fc (line 45) | function Fc(t){var e=t.layoutMode||t.constructor.layoutMode;return X(e)?...
function Gc (line 45) | function Gc(t,e,n){var i=n&&n.ignoreSize;!F(i)&&(i=[i,i]);var r=a(Nc[0],...
function Hc (line 45) | function Hc(t){return Wc({},t)}
function Wc (line 45) | function Wc(t,e){return e&&t&&Oc(Rc,(function(n){e.hasOwnProperty(n)&&(t...
function e (line 45) | function e(e,n,i){var r=t.call(this,e,n,i)||this;return r.uid=Nh("ec_cpt...
function n (line 45) | function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}
function d (line 45) | function d(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}
function f (line 45) | function f(t){u[t]=!0,d(t)}
function lp (line 45) | function lp(t,e,n){var i={},r=hp(e);if(!r||!t)return i;var o,a,s=[],l=[]...
function up (line 45) | function up(t,e,n){var i={};if(!hp(t))return i;var r,o=e.sourceFormat,a=...
function hp (line 45) | function hp(t){if(!t.get("data",!0))return Er(t.ecModel,"dataset",{index...
function cp (line 45) | function cp(t,e){return pp(t.data,t.sourceFormat,t.seriesLayoutBy,t.dime...
function pp (line 45) | function pp(t,e,n,i,r,o){var a,s,l;if(Z(t))return ap;if(i){var u=i[o];X(...
function t (line 45) | function t(){}
function xp (line 45) | function xp(t,e,n,i){var r=xr(t.get(["aria","decal","decals"]));return b...
function bp (line 45) | function bp(t,e,n,i,r,o,a){var s=e(o=o||t),l=s.paletteIdx||0,u=s.palette...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function Sp (line 45) | function Sp(t,e,n){if(F(e)){var i=ht();return P(e,(function(t){null!=t&&...
function Mp (line 45) | function Mp(t,e){return e.hasOwnProperty("subType")?N(t,(function(t){ret...
function Ip (line 45) | function Ip(t){var e=ht();return t&&P(xr(t.replaceMerge),(function(t){e....
function t (line 45) | function t(){this._coordinateSystems=[]}
function t (line 45) | function t(t){this._timelineOptions=[],this._mediaList=[],this._currentM...
function p (line 45) | function p(t){P(e,(function(e){e(t,n)}))}
function Pp (line 45) | function Pp(t,e,n){var i={width:e,height:n,aspectratio:e/n},r=!0;return ...
function zp (line 45) | function zp(t){var e=t&&t.itemStyle;if(e)for(var n=0,i=Np.length;n<i;n++...
function Ep (line 45) | function Ep(t,e,n){if(t&&t[e]&&(t[e].normal||t[e].emphasis)){var i=t[e]....
function Vp (line 45) | function Vp(t){Ep(t,"itemStyle"),Ep(t,"lineStyle"),Ep(t,"areaStyle"),Ep(...
function Bp (line 45) | function Bp(t,e){var n=Rp(t)&&t[e],i=Rp(n)&&n.textStyle;if(i){0;for(var ...
function Fp (line 45) | function Fp(t){t&&(Vp(t),Bp(t,"label"),t.emphasis&&Bp(t.emphasis,"label"))}
function Gp (line 45) | function Gp(t){return F(t)?t:t?[t]:[]}
function Hp (line 45) | function Hp(t){return(F(t)?t[0]:t)||{}}
function Wp (line 45) | function Wp(t,e){Op(Gp(t.series),(function(t){Rp(t)&&function(t){if(Rp(t...
function Up (line 45) | function Up(t){t&&P(Xp,(function(e){e[0]in t&&!(e[1]in t)&&(t[e[1]]=t[e[...
function jp (line 45) | function jp(t){var e=t&&t.itemStyle;if(e)for(var n=0;n<Zp.length;n++){va...
function qp (line 45) | function qp(t){t&&"edge"===t.alignTo&&null!=t.margin&&null==t.edgeDistan...
function Kp (line 45) | function Kp(t){t&&t.downplay&&!t.blur&&(t.blur=t.downplay)}
function $p (line 45) | function $p(t,e){if(t)for(var n=0;n<t.length;n++)e(t[n]),t[n]&&$p(t[n].c...
function Jp (line 45) | function Jp(t,e){Wp(t,e),t.series=xr(t.series),P(t.series,(function(t){i...
function Qp (line 45) | function Qp(t){P(t,(function(e,n){var i=[],r=[NaN,NaN],o=[e.stackResultD...
function ad (line 45) | function ad(t){return t instanceof od}
function sd (line 45) | function sd(t,e,n,i){n=n||hd(t);var r=e.seriesLayoutBy,o=function(t,e,n,...
function ld (line 45) | function ld(t){return new od({data:t,sourceFormat:Z(t)?tp:Kc})}
function ud (line 45) | function ud(t){return t?ht(t):null}
function hd (line 45) | function hd(t){var e=ep;if(Z(t))e=tp;else if(F(t)){0===t.length&&(e=$c);...
function cd (line 45) | function cd(t){if(t){var e=ht();return O(t,(function(t,n){var i={name:(t...
function pd (line 45) | function pd(t,e,n,i){if(e===ip)for(var r=0;r<n.length&&r<i;r++)t(n[r]?n[...
function t (line 45) | function t(t,e){var n=ad(t)?t:ld(t);this._source=n;var i=this._data=n.da...
function r (line 45) | function r(t){for(var e=0;e<t.length;e++)this._data.push(t[e])}
function yd (line 45) | function yd(t,e){var n=gd[Sd(t,e)];return n}
function _d (line 45) | function _d(t,e){var n=md[Sd(t,e)];return n}
function wd (line 45) | function wd(t){var e=bd[t];return e}
function Sd (line 45) | function Sd(t,e){return t===$c?t+"_"+e:t}
function Md (line 45) | function Md(t,e,n){if(t){var i=t.getRawDataItem(e);if(null!=i){var r,o,a...
function t (line 45) | function t(){}
function Cd (line 45) | function Cd(t){var e,n;return X(t)?t.type&&(n=t):e=t,{markupText:e,marku...
function Dd (line 45) | function Dd(t){return new Ad(t)}
function t (line 45) | function t(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=...
function h (line 45) | function h(t){return!(t>=1)&&(t=1),t}
function a (line 45) | function a(){return e<t?e++:null}
function s (line 45) | function s(){var o=e%r*n+Math.ceil(e/r),a=e>=t?null:o<i?o:e;return e++,a}
function kd (line 45) | function kd(t,e){var n=e&&e.type;if("ordinal"===n){var i=e&&e.ordinalMet...
function Od (line 45) | function Od(t){return Pd.get(t)}
function t (line 45) | function t(t,e){if("number"!=typeof e){var n="";0,vr(n)}this._opFn=Rd[t]...
function t (line 45) | function t(t,e){var n="desc"===t;this._resultLT=n?1:-1,null==e&&(e=n?"mi...
function t (line 45) | function t(t,e){this._rval=e,this._isEQ=t,this._rvalTypeof=typeof e,this...
function Vd (line 45) | function Vd(t,e){return"eq"===t||"ne"===t?new Ed("eq"===t,e):dt(Rd,t)?ne...
function t (line 45) | function t(){}
function Fd (line 45) | function Fd(t){var e=t.sourceFormat;if(!Yd(e)){var n="";0,vr(n)}return t...
function Gd (line 45) | function Gd(t){var e=t.sourceFormat,n=t.data;if(!Yd(e)){var i="";0,vr(i)...
function Hd (line 45) | function Hd(t,e,n){if(null!=n)return"number"==typeof n||!isNaN(n)&&!dt(e...
function Wd (line 45) | function Wd(t){return w(t)}
function Xd (line 45) | function Xd(t,e,n,i){var r="";e.length||vr(r),X(t)||vr(r);var o=t.type,a...
function Yd (line 45) | function Yd(t){return t===$c||t===Jc}
function t (line 45) | function t(t){this._sourceList=[],this._upstreamSignList=[],this._versio...
function jd (line 45) | function jd(t){t.option.transform&&st(t.option.transform)}
function qd (line 45) | function qd(t){return"series"===t.mainType}
function Kd (line 45) | function Kd(t){throw new Error(t)}
function $d (line 45) | function $d(t,e){var n=t.color||"#6e7079",i=t.fontSize||12,r=t.fontWeigh...
function tf (line 45) | function tf(t,e){return e.type=t,e}
function ef (line 45) | function ef(t){return dt(nf,t.type)&&nf[t.type]}
function rf (line 45) | function rf(t,e,n,i,r,o){if(t){var a=ef(t);a.planLayout(t);var s={useUTC...
function of (line 45) | function of(t){var e=t.__gapLevelBetweenSubBlocks;return{html:Jd[e],rich...
function af (line 45) | function af(t,e){return'<div style="'+("margin: "+e+"px 0 0")+";"+'line-...
function sf (line 45) | function sf(t,e,n){return t.markupStyleCreator.wrapRichTextStyle(e,n)}
function lf (line 45) | function lf(t,e){return kc(t.getData().getItemVisual(e,"style")[t.visual...
function uf (line 45) | function uf(t,e){var n=t.get("padding");return null!=n?n:"richText"===e?...
function t (line 45) | function t(){this.richTextStyles={},this._nextStyleNameId=dr()}
function cf (line 45) | function cf(t){var e,n,i,r,o=t.series,a=t.dataIndex,s=t.multipleSeries,l...
function df (line 45) | function df(t,e){return t.getName(e)||t.getId(e)}
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._sel...
function gf (line 45) | function gf(t){var e=t.name;Dr(t)||(t.name=function(t){var e=t.getRawDat...
function yf (line 45) | function yf(t){return t.model.getRawData().count()}
function vf (line 45) | function vf(t){var e=t.model;return e.setData(e.getRawData().cloneShallo...
function mf (line 45) | function mf(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRa...
function _f (line 45) | function _f(t,e){P(r(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),(function...
function xf (line 45) | function xf(t,e){var n=bf(t);return n&&n.setOutputEnd((e||this).count()),e}
function bf (line 45) | function bf(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid)...
function t (line 45) | function t(){this.group=new Ei,this.uid=Nh("viewComponent")}
function Sf (line 45) | function Sf(){var t=kr();return function(e){var n=t(e),i=e.pipelineConte...
function t (line 45) | function t(){this.group=new Ei,this.uid=Nh("viewChart"),this.renderTask=...
function Cf (line 45) | function Cf(t,e,n){t&&("emphasis"===e?js:qs)(t,n)}
function Df (line 45) | function Df(t,e,n){var i=Lr(t,e),r=e&&null!=e.highlightKey?function(t){v...
function Af (line 45) | function Af(t){return If(t.model)}
function Lf (line 45) | function Lf(t){var e=t.model,n=t.ecModel,i=t.api,r=t.payload,o=e.pipelin...
function Nf (line 45) | function Nf(t,e,n){var i,r,o,a,s,l=0,u=0,h=null;function c(){u=(new Date...
function zf (line 45) | function zf(t,e,n,i){var r=t[e];if(r){var o=r[Pf]||r,a=r[Rf];if(r[Of]!==...
function Ff (line 45) | function Ff(t,e){var n=t.visualStyleMapper||Vf[e];return n||(console.war...
function Gf (line 45) | function Gf(t,e){var n=t.visualDrawType||Bf[e];return n||(console.warn("...
function t (line 45) | function t(t,e,n,i){this._stageTaskMap=ht(),this.ecInstance=t,this.api=e...
function a (line 45) | function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipe...
function u (line 45) | function u(e){var s=e.uid,l=a.set(s,o&&o.get(s)||Dd({plan:Jf,reset:Qf,co...
function d (line 45) | function d(t){var e=t.uid,n=s.set(e,a&&a.get(e)||(c=!0,Dd({reset:qf,onDi...
function jf (line 45) | function jf(t){t.overallReset(t.ecModel,t.api,t.payload)}
function qf (line 45) | function qf(t){return t.overallProgress&&Kf}
function Kf (line 45) | function Kf(){this.agent.dirty(),this.getDownstream().dirty()}
function $f (line 45) | function $f(){this.agent&&this.agent.dirty()}
function Jf (line 45) | function Jf(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):n...
function Qf (line 45) | function Qf(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDe...
function eg (line 45) | function eg(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(...
function ng (line 45) | function ng(t){return t.data.count()}
function ig (line 45) | function ig(t){rg=null;try{t(og,ag)}catch(t){}return rg}
function sg (line 45) | function sg(t,e){for(var n in e.prototype)t[n]=ft}
function t (line 45) | function t(){}
function u (line 45) | function u(t,e,n,i){return null==t[n]||e[i||n]===t[n]}
function vg (line 45) | function vg(t,e,n){switch(n){case"color":return t.getItemVisual(e,"style...
function mg (line 45) | function mg(t,e){switch(e){case"color":return t.getVisual("style")[t.get...
function _g (line 45) | function _g(t,e,n,i){switch(n){case"color":t.ensureUniqueItemVisual(e,"s...
function Sg (line 45) | function Sg(t,e,n,i,r){var o=n.width,a=n.height;switch(t){case"top":i.se...
function Mg (line 45) | 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/=...
function Ig (line 45) | 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...
function Tg (line 45) | 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...
function Dg (line 45) | function Dg(t,e,n){var i=Tg(e.x,e.y,e.width,e.height,t.x,t.y,Cg);return ...
function Ag (line 45) | 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....
function Ng (line 45) | function Ng(t,e){if(t){var n=t.getTextGuideLine(),i=t.getTextContent();i...
function Vg (line 45) | function Vg(t,e){if(e<=180&&e>0){e=e/180*Math.PI,Lg.fromArray(t[0]),kg.f...
function Bg (line 45) | function Bg(t,e,n){if(n<=180&&n>0){n=n/180*Math.PI,Lg.fromArray(t[0]),kg...
function Fg (line 45) | function Fg(t,e,n,i){var r="normal"===n,o=r?t:t.ensureState(n);o.ignore=...
function Gg (line 45) | function Gg(t,e){var n=e.smooth,i=e.points;if(i)if(t.moveTo(i[0][0],i[0]...
function Hg (line 45) | function Hg(t,e,n){var i=t.getTextGuideLine(),r=t.getTextContent();if(r)...
function Wg (line 45) | function Wg(t,e){e=e||"labelLine";for(var n={normal:t.getModel(e)},i=0;i...
function Ug (line 45) | function Ug(t,e,n,i,r,o){var a=t.length;if(!(a<2)){t.sort((function(t,n)...
function Xg (line 45) | function Xg(t,e,n,i){return Ug(t,"y","height",e,n,i)}
function Yg (line 45) | function Yg(t){if(t){for(var e=[],n=0;n<t.length;n++)e.push(t[n].slice()...
function Zg (line 45) | function Zg(t,e){var n=t.label,i=e&&e.getTextGuideLine();return{dataInde...
function Jg (line 45) | function Jg(t,e,n){for(var i=0;i<n.length;i++){var r=n[i];null!=e[r]&&(t...
function t (line 45) | function t(){this._labelList=[],this._chartViewList=[]}
function i (line 45) | function i(t,e){return function(){Ng(t,e)}}
function i (line 45) | function i(t){if(!t.ignore){var e=t.ensureState("emphasis");null==e.igno...
function ey (line 45) | function ey(t,e){function n(e,n){var i=[];return e.eachComponent({mainTy...
function ny (line 45) | function ny(t,e,n,i,r){var o=t+e;n.isSilent(o)||i.eachComponent({mainTyp...
function iy (line 45) | function iy(t,e,n){for(var i;t&&(!e(t)||(i=t,!n));)t=t.__hostTarget||t.p...
function t (line 45) | function t(){this._id="__ec_inner_"+ry++}
function dy (line 45) | function dy(t,e){if("image"!==this.type){var n=this.style;this.__isEmpty...
function fy (line 45) | function fy(t,e,n,i,r,o,a){var s,l=0===t.indexOf("empty");return l&&(t=t...
function gy (line 45) | function gy(t,e,n){for(var i="radial"===e.type?function(t,e,n){var i=n.w...
function yy (line 45) | function yy(t,e){if(t===e||!t&&!e)return!1;if(!t||!e||t.length!==e.lengt...
function vy (line 45) | function vy(t,e){return t&&"solid"!==t&&e>0?(e=e||1,"dashed"===t?[4*e,2*...
function _y (line 45) | function _y(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth...
function xy (line 45) | function xy(t){var e=t.fill;return null!=e&&"none"!==e}
function by (line 45) | function by(t,e){if(null!=e.fillOpacity&&1!==e.fillOpacity){var n=t.glob...
function wy (line 45) | function wy(t,e){if(null!=e.strokeOpacity&&1!==e.strokeOpacity){var n=t....
function Sy (line 45) | function Sy(t,e,n){var i=no(e.image,e.__image,n);if(ro(i)){var r=t.creat...
function Ty (line 45) | function Ty(t,e,n,i,r){var o=!1;if(!i&&e===(n=n||{}))return!1;if(i||e.op...
function Cy (line 45) | function Cy(t,e,n,i,r){var o=Ly(e,r.inHover),a=i?null:n&&Ly(n,r.inHover)...
function Dy (line 45) | function Dy(t,e){var n=e.transform,i=t.dpr||1;n?t.setTransform(i*n[0],i*...
function Ay (line 45) | function Ay(t,e){e.batchFill&&t.fill(),e.batchStroke&&t.stroke(),e.batch...
function Ly (line 45) | function Ly(t,e){return e&&t.__hoverStyle||t.style}
function ky (line 45) | function ky(t,e){Py(t,e,{inHover:!1,viewWidth:0,viewHeight:0},!0)}
function Py (line 45) | function Py(t,e,n,i){var r=e.transform;if(!e.shouldBePainted(n.viewWidth...
function Ey (line 45) | function Ey(t,e){if("none"===t)return null;var n=e.getDevicePixelRatio()...
function Vy (line 45) | function Vy(t){if(!t||0===t.length)return[["rect"]];if("string"==typeof ...
function By (line 45) | function By(t){if(!t||0===t.length)return[[0,0]];if("number"==typeof t)r...
function Fy (line 45) | function Fy(t){for(var e=0,n=0;n<t.length;++n)e+=t[n];return t.length%2=...
function Gy (line 45) | function Gy(t){H(t)&&(t=(new DOMParser).parseFromString(t,"text/xml"));v...
function t (line 45) | function t(){this._defs={},this._root=null}
function jy (line 45) | function jy(t,e){"userSpaceOnUse"===t.getAttribute("gradientUnits")&&(e....
function qy (line 45) | function qy(t,e){for(var n=t.firstChild;n;){if(1===n.nodeType&&"stop"===...
function Ky (line 45) | function Ky(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheri...
function $y (line 45) | function $y(t){for(var e=nv(t),n=[],i=0;i<e.length;i+=2){var r=parseFloa...
function Jy (line 45) | function Jy(t,e,n,i,r){var o=e,a=o.__inheritedStyle=o.__inheritedStyle||...
function tv (line 45) | function tv(t,e,n,i){var r=n&&n.match(Qy);if(!r)return"none"===n&&(n=nul...
function nv (line 45) | function nv(t){return t.match(ev)||[]}
function av (line 45) | function av(t,e,n){var i,r=t.getAttribute("style");if(r)for(ov.lastIndex...
function sv (line 45) | function sv(t,e){var n=e.width/t.width,i=e.height/t.height,r=Math.min(n,...
function lv (line 45) | function lv(t,e){return Math.abs(t-e)<1e-8}
function uv (line 45) | function uv(t,e,n){var i=0,r=t[0];if(!r)return!1;for(var o=1;o<t.length;...
function t (line 45) | function t(t){this.name=t}
function e (line 45) | function e(e,n,i){var r=t.call(this,e)||this;if(r.type="geoJSON",r.geome...
function e (line 45) | function e(e,n){var i=t.call(this,e)||this;return i.type="geoSVG",i._elO...
function t (line 45) | function t(t,e){this.type="geoSVG",this._usedGraphicMap=ht(),this._freed...
function yv (line 45) | function yv(t,e,n){for(var i=[],r=e[0],o=e[1],a=0;a<t.length;a+=2){var s...
function vv (line 45) | function vv(t,e){return O(N((t=function(t){if(!t.UTF8Encoding)return t;v...
function t (line 45) | function t(t,e,n){var i;this.type="geoJSON",this._parsedMap=ht(),this._m...
function Cv (line 45) | function Cv(t){for(var e,n=0;n<t.length;n++){var i=t[n].getBoundingRect(...
function Uv (line 45) | function Uv(t){return function(){for(var e=[],n=0;n<arguments.length;n++...
function Xv (line 45) | function Xv(t){return function(){for(var e=[],n=0;n<arguments.length;n++...
function Yv (line 45) | function Yv(t,e,n){return n[0]=n[0]&&n[0].toLowerCase(),Ft.prototype[e]....
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function e (line 45) | function e(e,n,i){var r=t.call(this,new gg)||this;r._chartsViews=[],r._c...
function t (line 45) | function t(t){for(var e=[],n=t.currentStates,i=0;i<n.length;i++){var r=n...
function e (line 45) | function e(t,e){t.preventAutoZ||i(e.group,t.get("z")||0,t.get("zlevel")|...
function i (line 45) | function i(t,e,n,r){var o=t.getTextContent(),a=t.getTextGuideLine();if(t...
function r (line 45) | function r(t,e){e.group.traverse((function(t){if(!Zu(t)){var e=t.getText...
function o (line 45) | function o(e,n){var i=e.getModel("stateAnimation"),r=e.isAnimationEnable...
function u (line 45) | function u(t){var l=t.__requireNewView;t.__requireNewView=!1;var u="_ec_...
function h (line 45) | function h(i){i&&i.__alive&&i[e]&&i[e](i.__model,o,t._api,n)}
function i (line 45) | function i(){return null!==e&&e.apply(this,arguments)||this}
function e (line 45) | function e(t,e){for(var n=0;n<t.length;n++){t[n][Wv]=e}}
function _m (line 45) | function _m(t){0}
function Rm (line 45) | function Rm(t){Lm[t]=!1}
function zm (line 45) | function zm(t){return Am[function(t,e){return t.getAttribute?t.getAttrib...
function Em (line 45) | function Em(t,e){Cm[t]=e}
function Vm (line 45) | function Vm(t){Ev(Sm,t)<0&&Sm.push(t)}
function Bm (line 45) | function Bm(t,e){Zm(wm,t,e,2e3)}
function Fm (line 45) | function Fm(t){Ev(Mm,t)<0&&t&&Mm.push(t)}
function Gm (line 45) | function Gm(t){Ev(Im,t)<0&&t&&Im.push(t)}
function Hm (line 45) | function Hm(t,e,n){"function"==typeof e&&(n=e,e="");var i=zv(t)?t.type:[...
function Wm (line 45) | function Wm(t,e){Ap.register(t,e)}
function Um (line 45) | function Um(t,e){Zm(Tm,t,e,1e3,"layout")}
function Xm (line 45) | function Xm(t,e){Zm(Tm,t,e,3e3,"visual")}
function Zm (line 45) | function Zm(t,e,n,i,r){if((Nv(e)||zv(e))&&(n=e,e=i),!(Ev(Ym,n)>=0)){Ym.p...
function jm (line 45) | function jm(t,e){Dm[t]=e}
function qm (line 45) | function qm(t,e,n){Av(t,e,n)}
function Qm (line 45) | function Qm(t){F(t)?P(t,(function(t){Qm(t)})):D($m,t)>=0||($m.push(t),G(...
function t_ (line 45) | function t_(t){return null==t?0:t.length||1}
function e_ (line 45) | function e_(t){return t}
function t (line 45) | function t(t,e,n,i,r,o){this._old=t,this._new=e,this._oldKeyGetter=n||e_...
function i_ (line 45) | function i_(t,e){return t.hasOwnProperty(e)||(t[e]=[]),t[e]}
function r_ (line 45) | function r_(t){return"category"===t?"ordinal":"time"===t?"time":"float"}
function t (line 45) | function t(t,e){this.type="list",this._count=0,this._rawCount=0,this._st...
function e (line 45) | function e(t,e,n,i){return kd(t[i],this._dimensionInfos[e])}
function k_ (line 45) | function k_(t,e,n){ad(e)||(e=ld(e)),n=n||{},t=(t||[]).slice();for(var i=...
function P_ (line 45) | function P_(t,e,n){if(n||null!=e.get(t)){for(var i=0;null!=e.get(t+i);)i...
function O_ (line 45) | function O_(t,e){return k_((e=e||{}).coordDimensions||[],t,{dimsDef:e.di...
function z_ (line 45) | function z_(t){return"category"===t.get("type")}
function E_ (line 45) | function E_(t,e,n){var i,r,o,a,s=(n=n||{}).byIndex,l=n.stackedCoordDimen...
function V_ (line 45) | function V_(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}
function B_ (line 45) | function B_(t,e){return V_(t,e)?t.getCalculationInfo("stackResultDimensi...
function F_ (line 45) | function F_(t,e,n){n=n||{},ad(t)||(t=ld(t));var i,r=e.get("coordinateSys...
function t (line 45) | function t(t){this._setting=t||{},this._extent=[1/0,-1/0]}
function t (line 45) | function t(t){this.categories=t.categories||[],this._needCollect=t.needC...
function W_ (line 45) | function W_(t){return X(t)&&null!=t.value?t.value:t+""}
function X_ (line 45) | function X_(t,e,n,i){var r={},o=t[1]-t[0],a=r.interval=lr(o/e,!0);null!=...
function Y_ (line 45) | function Y_(t){return Ki(t)+2}
function Z_ (line 45) | function Z_(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}
function j_ (line 45) | function j_(t,e){return t>=e[0]&&t<=e[1]}
function q_ (line 45) | function q_(t,e){return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])}
function K_ (line 45) | function K_(t,e){return t*(e[1]-e[0])+e[0]}
function e (line 45) | function e(e){var n=t.call(this,e)||this;n.type="ordinal";var i=n.getSet...
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type...
function nx (line 45) | function nx(t){return t.get("stack")||tx+t.seriesIndex}
function ix (line 45) | function ix(t){return t.dim+t.index}
function rx (line 45) | function rx(t,e){var n=[];return e.eachSeriesByType(t,(function(t){hx(t)...
function ox (line 45) | function ox(t){var e=function(t){var e={};P(t,(function(t){var n=t.coord...
function ax (line 45) | function ax(t){var e={};P(t,(function(t,n){var i=t.axisKey,r=t.bandWidth...
function sx (line 45) | function sx(t,e,n){if(t&&e){var i=t[ix(e)];return null!=i&&null!=n?i[nx(...
function lx (line 45) | function lx(t,e){var n=rx(t,e),i=ox(n),r={};P(n,(function(t){var e=t.get...
function hx (line 45) | function hx(t){return t.coordinateSystem&&"cartesian2d"===t.coordinateSy...
function cx (line 45) | function cx(t){return t.pipelineContext&&t.pipelineContext.large}
function px (line 45) | function px(t,e,n){return e.toGlobalCoord(e.dataToCoord("log"===e.type?1...
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.type="time",n}
function s (line 45) | function s(t,e,n,r,o,a,s){for(var l=new Date(e),u=e,h=l[r]();u<n&&u<=i[1...
function l (line 45) | function l(t,r,o){var a=[],l=!r.length;if(!function(t,e,n,i){var r=or(e)...
function gx (line 45) | function gx(t,e){return(t/=Zh)>16?16:t>7.5?7:t>3.5?4:t>1.5?2:1}
function yx (line 45) | function yx(t){return(t/=2592e6)>6?6:t>3?3:t>2?2:1}
function vx (line 45) | function vx(t){return(t/=Yh)>12?12:t>6?6:t>3.5?4:t>2?2:1}
function mx (line 45) | function mx(t,e){return(t/=e?Xh:Uh)>30?30:t>20?20:t>15?15:t>10?10:t>5?5:...
function _x (line 45) | function _x(t){return lr(t,!0)}
function xx (line 45) | function xx(t,e,n){var i=new Date(t);switch(ec(e)){case"year":case"month...
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type...
function kx (line 45) | function kx(t,e){return Mx(t,Ki(e))}
function t (line 45) | function t(t,e,n){this._prepareParams(t,e,n)}
function Nx (line 45) | function Nx(t,e,n){var i=t.rawExtentInfo;return i||(i=new Px(t,e,n),t.ra...
function zx (line 45) | function zx(t,e){return null==e?null:J(e)?NaN:t.parse(e)}
function Ex (line 45) | function Ex(t,e){var n=t.type,i=Nx(t,e,t.getExtent()).calculate();t.setB...
function Vx (line 45) | function Vx(t,e){var n=Ex(t,e),i=n.extent,r=e.get("splitNumber");t insta...
function Bx (line 45) | function Bx(t,e){if(e=e||t.get("type"))switch(e){case"category":return n...
function Fx (line 45) | function Fx(t){var e,n,i=t.getLabelModel().get("formatter"),r="category"...
function Gx (line 45) | function Gx(t,e){return"category"===t.type?t.scale.getLabel(e):e.value}
function Hx (line 45) | function Hx(t,e){var n=e*Math.PI/180,i=t.width,r=t.height,o=i*Math.abs(M...
function Wx (line 45) | function Wx(t){var e=t.get("interval");return null==e?"auto":e}
function Ux (line 45) | function Ux(t){return"category"===t.type&&0===Wx(t.getLabelModel())}
function Xx (line 45) | function Xx(t,e){var n={};return P(t.mapDimensionsAll(e),(function(e){n[...
function t (line 45) | function t(){}
function eb (line 45) | function eb(t){return"category"===t.type?function(t){var e=t.getLabelMod...
function nb (line 45) | function nb(t,e){return"category"===t.type?function(t,e){var n,i,r=rb(t,...
function ib (line 45) | function ib(t,e){var n,i,r=rb(t,"labels"),o=Wx(e),a=ob(r,o);return a||(G...
function rb (line 45) | function rb(t,e){return tb(t)[e]||(tb(t)[e]=[])}
function ob (line 45) | function ob(t,e){for(var n=0;n<t.length;n++)if(t[n].key===e)return t[n]....
function ab (line 45) | function ab(t,e,n){return t.push({key:e,value:n}),n}
function sb (line 45) | function sb(t,e,n){var i=Fx(t),r=t.scale,o=r.getExtent(),a=t.getLabelMod...
function lb (line 45) | function lb(t,e,n){var i=t.scale,r=Fx(t),o=[];return P(i.getTicks(),(fun...
function t (line 45) | function t(t,e,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=e...
function c (line 45) | function c(t,e){return t=ji(t),e=ji(e),h?t>e:t<e}
function cb (line 45) | function cb(t,e){var n=(t[1]-t[0])/e/2;t[0]+=n,t[1]-=n}
function pb (line 45) | function pb(t){return document.createElementNS("http://www.w3.org/2000/s...
function db (line 45) | function db(t,e,n,i,r){for(var o=e.length,a=n.length,s=t.newPos,l=s-i,u=...
function fb (line 45) | function fb(t,e,n){var i=t[t.length-1];i&&i.added===e&&i.removed===n?t[t...
function gb (line 45) | function gb(t){for(var e=0,n=t.length,i=0,r=0;e<n;e++){var o=t[e];if(o.r...
function yb (line 45) | function yb(t,e,n){return function(t,e,n){n||(n=function(t,e){return t==...
function Ib (line 45) | function Ib(t){return mb(1e3*t)/1e3}
function Tb (line 45) | function Tb(t){return mb(1e4*t)/1e4}
function Cb (line 45) | function Cb(t){return t<Mb&&t>-1e-4}
function Db (line 45) | function Db(t,e){e&&Ab(t,"transform","matrix("+Ib(e[0])+","+Ib(e[1])+","...
function Ab (line 45) | function Ab(t,e,n){(!n||"linear"!==n.type&&"radial"!==n.type)&&t.setAttr...
function Lb (line 45) | function Lb(t,e,n){var i=null==e.opacity?1:e.opacity;if(n instanceof es)...
function t (line 45) | function t(){}
function t (line 45) | function t(t,e,n,i,r){this.nextId=0,this._domName="_dom",this.createElem...
function Eb (line 45) | function Eb(t){return"linear"===t.type}
function Vb (line 45) | function Vb(t){return"radial"===t.type}
function Bb (line 45) | function Bb(t){return t&&("linear"===t.type||"radial"===t.type)}
function e (line 45) | function e(e,n){return t.call(this,e,n,["linearGradient","radialGradient...
function Gb (line 45) | function Gb(t){return t&&(!!t.image||!!t.svgElement)}
function e (line 45) | function e(e,n){return t.call(this,e,n,["pattern"],"__pattern_in_use__")...
function Ub (line 45) | function Ub(t){var e=t.__clipPaths;return e&&e.length>0}
function e (line 45) | function e(e,n){var i=t.call(this,e,n,"clipPath","__clippath_in_use__")|...
function e (line 45) | function e(e,n){var i=t.call(this,e,n,["filter"],"__filter_in_use__","_s...
function Zb (line 45) | function Zb(t){return parseInt(t,10)}
function jb (line 45) | function jb(t){return t instanceof Ka?Pb:t instanceof es?Ob:t instanceof...
function qb (line 45) | function qb(t,e){return e&&t&&e.parentNode!==t}
function Kb (line 45) | function Kb(t,e,n){if(qb(t,e)&&n){var i=n.nextSibling;i?t.insertBefore(e...
function $b (line 45) | function $b(t,e){if(qb(t,e)){var n=t.firstChild;n?t.insertBefore(e,n):t....
function Jb (line 45) | function Jb(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)}
function Qb (line 45) | function Qb(t){return t.__svgEl}
function t (line 45) | function t(t,e,n,i){this.type="svg",this.refreshHover=ew("refreshHover")...
function ew (line 45) | function ew(t){return function(){b('In SVG mode painter not support meth...
function nw (line 45) | function nw(){return!1}
function iw (line 45) | function iw(t,e,n){var i=C(),r=e.getWidth(),o=e.getHeight(),a=i.style;re...
function e (line 45) | function e(e,n,i){var r,o=t.call(this)||this;o.motionBlur=!1,o.lastFrame...
function u (line 45) | function u(t){if(t.isFinite()&&!t.isZero())if(0===o.length){(e=new gi(0,...
function p (line 45) | function p(t,n,i,o){if(r.clearRect(t,n,i,o),e&&"transparent"!==e){var a=...
function lw (line 45) | function lw(t){return parseInt(t,10)}
function t (line 45) | function t(t,e,n,i){this.type="canvas",this._zlevelList=[],this._prevDis...
function e (line 45) | function e(t){o&&(o.__endIndex!==t&&(o.__dirty=!0),o.__endIndex=t)}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function cw (line 45) | function cw(t,e){var n=t.mapDimensionsAll("defaultedLabel"),i=n.length;i...
function pw (line 45) | function pw(t,e){var n=t.mapDimensionsAll("defaultedLabel");if(!F(e))ret...
function e (line 45) | function e(e,n,i,r){var o=t.call(this)||this;return o.updateData(e,n,i,r...
function fw (line 45) | function fw(t,e){this.parent.drift(t,e)}
function gw (line 45) | function gw(t,e,n,i){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(i.isIgnore&...
function yw (line 45) | function yw(t){return null==t||X(t)||(t={isIgnore:t}),t||{}}
function vw (line 45) | function vw(t){var e=t.hostModel,n=e.getModel("emphasis");return{emphasi...
function t (line 45) | function t(t){this.group=new Ei,this._SymbolCtor=t||dw}
function i (line 45) | function i(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hov...
function _w (line 45) | function _w(t,e,n){var i=t.getBaseAxis(),r=t.getOtherAxis(i),o=function(...
function xw (line 45) | function xw(t,e,n,i){var r=NaN;t.stacked&&(r=n.get(n.getCalculationInfo(...
function Sw (line 45) | function Sw(t){return F(t)?bw?new Float32Array(t):t:new ww(t)}
function Tw (line 45) | function Tw(t,e){return isNaN(t)||isNaN(e)}
function Cw (line 45) | function Cw(t,e,n,i,r,o,a,s,l){for(var u,h,c,p,d,f,g=n,y=0;y<i;y++){var ...
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.type="ec-polyline",n}
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.type="ec-polygon",n}
function Pw (line 45) | function Pw(t,e,n,i,r){var o=t.getArea(),a=o.x,s=o.y,l=o.width,u=o.heigh...
function Ow (line 45) | function Ow(t,e,n){var i=t.getArea(),r=ji(i.r0,1),o=ji(i.r,1),a=new Jl({...
function Rw (line 45) | function Rw(t,e,n,i,r){return t?"polar"===t.type?Ow(t,e,n):"cartesian2d"...
function Nw (line 45) | function Nw(t,e){return t.type===e}
function zw (line 45) | function zw(t,e){if(t.length===e.length){for(var n=0;n<t.length;n++)if(t...
function Ew (line 45) | function Ew(t){for(var e=1/0,n=1/0,i=-1/0,r=-1/0,o=0;o<t.length;){var a=...
function Vw (line 45) | function Vw(t,e){var n=Ew(t),i=n[0],r=n[1],o=Ew(e),a=o[0],s=o[1];return ...
function Bw (line 45) | function Bw(t){return"number"==typeof t?t:t?.5:0}
function Fw (line 45) | function Fw(t,e,n){for(var i=e.getBaseAxis(),r="x"===i.dim||"radius"===i...
function Gw (line 45) | function Gw(t,e,n){var i=t.get("showAllSymbol"),r="auto"===i;if(!i||r){v...
function Hw (line 45) | function Hw(t,e){return[t[2*e],t[2*e+1]]}
function Ww (line 45) | function Ww(t,e,n,i){if(Nw(e,"cartesian2d")){var r=i.getModel("endLabel"...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function Xw (line 45) | function Xw(t,e){return{seriesType:t,plan:Sf(),reset:function(t){var n=t...
function jw (line 45) | function jw(t){return{seriesType:t,reset:function(t,e,n){var i=t.getData...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.type="sausage",n}
function e (line 45) | function e(){var n=t.call(this)||this;return n.type=e.type,n._isFirstFra...
function w (line 45) | function w(t){var e=aS[l.type](a,t),n=function(t,e,n){return new("polar"...
function oS (line 45) | function oS(t,e,n,i,r,o,a,s){var l,u;o?(u={x:i.x,width:i.width},l={y:i.y...
function sS (line 45) | function sS(t,e,n,i,r,o,a,s){var l=e.getItemVisual(n,"style");s||t.setSh...
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.type="largeBar",n}
function hS (line 45) | function hS(t,e,n){var i=t.getData(),r=[],o=i.getLayout("valueAxisHorizo...
function pS (line 45) | function pS(t,e,n){if(Nw(n,"cartesian2d")){var i=e,r=n.getArea();return{...
function gS (line 45) | function gS(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.getData(),i...
function yS (line 45) | function yS(t){return{seriesType:t,reset:function(t,e){var n=e.findCompo...
function mS (line 45) | function mS(t,e,n,i,r,o,a,s,l,u){if(!(t.length<2)){for(var h=t.length,c=...
function _S (line 45) | function _S(t){return"center"===t.position}
function xS (line 45) | function xS(t){var e,n,i=t.getData(),r=[],o=!1,a=(t.get("minShowLabelAng...
function bS (line 45) | function bS(t,e){var n=t.get("borderRadius");return null==n?null:(F(n)||...
function e (line 45) | function e(e,n,i){var r=t.call(this)||this;r.z2=2;var o=new cs;return r....
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.igno...
function MS (line 45) | function MS(t,e,n){e=F(e)&&{coordDimensions:e}||I({},e);var i=t.getSourc...
function t (line 45) | function t(t,e){this._getDataWithEncodedVisual=t,this._getRawData=e}
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.useC...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e){return t.call(this,e)||this}
function t (line 45) | function t(){this.group=new Ei}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function BS (line 45) | function BS(t,e,i,r){P(VS,(function(o,a){var s=S(S({},ES[a],!0),r,!0),l=...
function FS (line 45) | function FS(t){return t.type||(t.data?"category":"value")}
function t (line 45) | function t(t){this.type="cartesian",this._dimList=[],this._axes={},this....
function WS (line 45) | function WS(t){return"interval"===t.type||"time"===t.type}
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type...
function e (line 45) | function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.index=0,a....
function YS (line 45) | function YS(t,e,n){n=n||{};var i=t.coordinateSystem,r=e.axis,o={},a=r.ge...
function ZS (line 45) | function ZS(t){return"cartesian2d"===t.get("coordinateSystem")}
function jS (line 45) | function jS(t){var e={xAxisModel:null,yAxisModel:null};return P(e,(funct...
function t (line 45) | function t(t,e,n){this.type="grid",this._coordsMap={},this._coordsList=[...
function s (line 45) | function s(){P(a,(function(t){var e=t.isHorizontal(),n=e?[0,o.width]:[0,...
function l (line 45) | function l(e){return function(n,i){if(KS(n,t)){var l=n.get("position");"...
function n (line 45) | function n(t,e){P(Xx(t,e.dim),(function(n){e.scale.unionExtentFromData(t...
function KS (line 45) | function KS(t,e){return t.getCoordSysModel()===e}
function $S (line 45) | function $S(t,e,n,i){n.getAxesOnZeroOf=function(){return r?[r]:[]};var r...
function JS (line 45) | function JS(t){return t&&"category"!==t.type&&"time"!==t.type&&function(...
function t (line 45) | function t(t,e){this.group=new Ei,this.opt=e,this.axisModel=t,T(e,{label...
function nM (line 45) | function nM(t){t&&(t.ignore=!0)}
function iM (line 45) | function iM(t,e){var n=t&&t.getBoundingRect().clone(),i=e&&e.getBounding...
function rM (line 45) | function rM(t){return"middle"===t||"center"===t}
function oM (line 45) | function oM(t,e,n,i,r){for(var o=[],a=[],s=[],l=0;l<t.length;l++){var u=...
function aM (line 45) | function aM(t,e){var n={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{...
function sM (line 45) | function sM(t,e){return"all"===t||F(t)&&D(t,e)>=0||t===e}
function lM (line 45) | function lM(t){var e=uM(t);if(e){var n=e.axisPointerModel,i=e.axis.scale...
function uM (line 45) | function uM(t){var e=(t.ecModel.getComponent("axisPointer")||{}).coordSy...
function hM (line 45) | function hM(t){return!!t.get(["handle","show"])}
function cM (line 45) | function cM(t){return t.type+"||"+t.id}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function gM (line 45) | function gM(t,e,n,i){var r=n.axis;if(!r.scale.isBlank()){var o=n.getMode...
function yM (line 45) | function yM(t){fM(t).splitAreaColors=null}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type...
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type...
function IM (line 45) | function IM(t){t.registerComponentView(SM),t.registerComponentModel(PS),...
function TM (line 45) | function TM(t){t.eachSeriesByType("radar",(function(t){var e=t.getData()...
function CM (line 45) | function CM(t){return!isNaN(t[0])&&!isNaN(t[1])}
function DM (line 45) | function DM(t){return[t.cx,t.cy]}
function AM (line 45) | function AM(t){var e=t.polar;if(e){F(e)||(e=[e]);var n=[];P(e,(function(...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function s (line 45) | function s(t,e){var n=t.getItemVisual(e,"symbol")||"circle";if("none"!==...
function l (line 45) | function l(e,n,i,r,o,a){i.removeAll();for(var l=0;l<n.length-1;l++){var ...
function u (line 45) | function u(t){return O(t,(function(t){return[i.cx,i.cy]}))}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function OM (line 45) | function OM(t,e){return T({show:e},t)}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function D (line 45) | function D(t,e,n){var i=n%e.length;return t[i]=t[i]||[],i}
function e (line 45) | function e(e,n,i){var r=t.call(this,e,n,i)||this;return r.type="value",r...
function t (line 45) | function t(t,e,n){this.dimensions=[],this._model=t,this._indicatorAxes=O...
function o (line 45) | function o(t){var e=Math.pow(10,Math.floor(Math.log(t)/Math.LN10)),n=t/e...
function BM (line 45) | function BM(t){t.registerCoordinateSystem("radar",VM),t.registerComponen...
function GM (line 45) | function GM(t,e){return!!HM(t)[e]}
function HM (line 45) | function HM(t){return t[FM]||(t[FM]={})}
function e (line 45) | function e(e){var n=t.call(this)||this;n._zr=e;var i=V(n._mousedownHandl...
function UM (line 45) | function UM(t,e,n,i,r){t.pointerChecker&&t.pointerChecker(i,r.originX,r....
function XM (line 45) | function XM(t,e,n,i,r){r.isAvailableBehavior=V(YM,null,n,i),t.trigger(e,r)}
function YM (line 45) | function YM(t,e,n){var i=n[t];return!t||i&&(!H(i)||e.event[i+"Key"])}
function ZM (line 45) | function ZM(t,e,n){var i=t.target;i.x+=e,i.y+=n,i.dirty()}
function jM (line 45) | function jM(t,e,n,i){var r=t.target,o=t.zoomLimit,a=t.zoom=t.zoom||1;if(...
function KM (line 45) | function KM(t,e,n){var i=e.getComponentByElement(t.topTarget),r=i&&i.coo...
function nI (line 45) | function nI(t){var e=t.getItemStyle(),n=t.get("areaColor");return null!=...
function t (line 45) | function t(t){var e=new Ei;this.uid=Nh("ec_map_draw"),this._controller=n...
function s (line 45) | function s(){var e={type:"geoRoam",componentType:a};return e[a+"Id"]=t.i...
function rI (line 45) | function rI(t,e,n,i){var r=i.getModel("itemStyle"),o=i.getModel(["emphas...
function oI (line 45) | function oI(t,e,n,i,r,o,a){var s=t.data,l=t.isGeo,u=s&&isNaN(s.get(s.map...
function aI (line 45) | function aI(t,e,n,i,r,o){t.data?t.data.setItemGraphicEl(o,e):_s(e).event...
function sI (line 45) | function sI(t,e,n,i,r){t.data||oh({el:e,componentModel:r,itemName:n,item...
function lI (line 45) | function lI(t,e,n,i,r){e.highDownSilentOnTouch=!!r.get("selectedMode");v...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function cI (line 45) | function cI(t){var e={};t.eachSeriesByType("map",(function(t){var n=t.ge...
function pI (line 45) | function pI(t){var e={};t.eachSeriesByType("map",(function(n){var i=n.ge...
function e (line 45) | function e(e){var n=t.call(this)||this;return n.type="view",n.dimensions...
function gI (line 45) | function gI(t){var e=t.seriesModel;return e?e.coordinateSystem:null}
function e (line 45) | function e(e,n,i){var r=t.call(this,e)||this;r.dimensions=["lng","lat"],...
function mI (line 45) | function mI(t){var e=t.geoModel,n=t.seriesModel;return e?e.coordinateSys...
function _I (line 45) | function _I(t,e){var n=t.get("boundingCoords");if(null!=n){var i=n[0],r=...
function t (line 45) | function t(){this.dimensions=vI.prototype.dimensions}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function wI (line 45) | function wI(t,e,n){var i=t.getZoom(),r=t.getCenter(),o=e.zoom,a=t.dataTo...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function MI (line 45) | function MI(t){function e(e,n){n.update="geo:updateSelectStatus",t.regis...
function II (line 45) | function II(t,e){var n=t.isExpand?t.children:[],i=t.parentNode.children,...
function TI (line 45) | function TI(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t....
function CI (line 45) | function CI(t){return arguments.length?t:OI}
function DI (line 45) | function DI(t,e){return t-=Math.PI/2,{x:e*Math.cos(t),y:e*Math.sin(t)}}
function AI (line 45) | function AI(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1...
function LI (line 45) | function LI(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierN...
function kI (line 45) | function kI(t,e,n){return t.hierNode.ancestor.parentNode===e.parentNode?...
function PI (line 45) | function PI(t,e,n){var i=n/(e.hierNode.i-t.hierNode.i);e.hierNode.change...
function OI (line 45) | function OI(t,e){return t.parentNode===e.parentNode?1:2}
function e (line 45) | function e(e){return t.call(this,e)||this}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function EI (line 45) | function EI(t,e){var n=t.getItemLayout(e);return n&&!isNaN(n.x)&&!isNaN(...
function VI (line 45) | function VI(t,e,n,i,r){var o=!n,a=t.tree.getNodeByDataIndex(e),s=a.getMo...
function BI (line 45) | function BI(t,e,n,i,r){for(var o,a=t.tree.getNodeByDataIndex(e),s=t.tree...
function FI (line 45) | function FI(t,e,n,i,r){var o,a,s,l,u,h,c,p;if("radial"===t){u=i.rawX,c=i...
function HI (line 45) | function HI(t){var e=t.mainData,n=t.datas;n||(n={main:e},t.datasAttr={ma...
function WI (line 45) | function WI(t,e){if(GI(i=this).mainData===i){var n=I({},GI(this).datas);...
function UI (line 45) | function UI(t,e){return t.struct&&t.struct.update(),e}
function XI (line 45) | function XI(t,e){return P(GI(e).datas,(function(n,i){n!==e&&qI(n.cloneSh...
function YI (line 45) | function YI(t){var e=GI(this).mainData;return null==t||null==e?e:GI(e).d...
function ZI (line 45) | function ZI(){var t=GI(this).mainData;return null==t?[{data:t}]:O(E(GI(t...
function jI (line 45) | function jI(t,e,n){GI(t).datas={},P(e,(function(e,i){qI(e,i,t,n)}))}
function qI (line 45) | function qI(t,e,n,i){GI(n).datas[e]=t,GI(t).mainData=n,t.dataType=e,i.st...
function t (line 45) | function t(t,e){this.depth=0,this.height=0,this.dataIndex=-1,this.childr...
function t (line 45) | function t(t){this.type="tree",this._nodes=[],this.hostModel=t}
function JI (line 45) | function JI(t,e,n){if(t&&D(e,t.type)>=0){var i=n.getData().tree.root,r=t...
function QI (line 45) | function QI(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reve...
function tT (line 45) | function tT(t,e){return D(QI(t),e)>=0}
function eT (line 45) | function eT(t,e){for(var n=[];t;){var i=t.dataIndex;n.push({name:t.name,...
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hasS...
function iT (line 45) | function iT(t,e){for(var n,i=[t];n=i.pop();)if(e(n),n.isExpand){var r=n....
function rT (line 45) | function rT(t,e){t.eachSeriesByType("tree",(function(t){!function(t,e){v...
function oT (line 45) | function oT(t){t.eachSeriesByType("tree",(function(t){var e=t.getData();...
function lT (line 45) | function lT(t){var e=t.getData().tree,n={};e.eachNode((function(e){for(v...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function hT (line 45) | function hT(t){var e=0;P(t.children,(function(t){hT(t);var n=t.value;F(n...
function t (line 45) | function t(t){this.group=new Ei,t.add(this.group)}
function pT (line 45) | 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...
function dT (line 45) | function dT(t,e,n){_s(t).eventData={componentType:"series",componentSubT...
function t (line 45) | function t(){this._storage=[],this._elExistsMap={}}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function u (line 45) | function u(t,i,r,u){return function(t,e,n,i,r,o,a,s,l,u){if(!a)return;va...
function a (line 45) | function a(t){return t.getId()}
function s (line 45) | function s(a,s){var l=null!=a?e[a]:null,h=null!=s?n[s]:null,c=u(l,h,i,o)...
function t (line 45) | function t(e){var n=e.mappingMethod,i=e.type,r=this.option=w(e);this.typ...
function c (line 45) | function c(e,n){var o=Math.abs(e-t);o<r&&(r=o,i=n)}
function CT (line 45) | function CT(t,e){var n=t.visual,i=[];X(n)?ST(n,(function(t){i.push(t)}))...
function DT (line 45) | function DT(t){return{applyVisual:function(e,n,i){var r=this.mapValueToV...
function AT (line 45) | function AT(t){var e=this.option.visual;return e[Math.round(Yi(t,[0,1],[...
function LT (line 45) | function LT(t){return function(e,n,i){i(t,this.mapValueToVisual(e))}}
function kT (line 45) | function kT(t){var e=this.option.visual;return e[this.option.loop&&t!==I...
function PT (line 45) | function PT(){return this.option.visual[0]}
function OT (line 45) | function OT(t){return{linear:function(e){return Yi(e,t,this.option.visua...
function RT (line 45) | function RT(t){var e=this.option,n=e.pieceList;if(e.hasSpecialVisual){va...
function NT (line 45) | function NT(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=O(e...
function ET (line 45) | function ET(t,e,n){return t?e<=n:e<n}
function FT (line 45) | function FT(t,e,n,i){var r=t.getModel(),o=t.getLayout(),a=t.hostTree.dat...
function GT (line 45) | function GT(t){var e=HT(t,"color");if(e){var n=HT(t,"colorAlpha"),i=HT(t...
function HT (line 45) | function HT(t,e){var n=t[e];if(null!=n&&"none"!==n)return n}
function WT (line 45) | function WT(t,e){var n=t.get(e);return F(n)&&n.length?{name:e,range:n}:n...
function QT (line 45) | function QT(t,e,n,i){var r,o;if(!t.isRemoved()){var a=t.getLayout();r=a....
function tC (line 45) | function tC(t,e,n){for(var i=0,r=1/0,o=0,a=void 0,s=t.length;o<s;o++)(a=...
function eC (line 45) | function eC(t,e,n,i,r){var o=e===n.width?0:1,a=1-o,s=["x","y"],l=["width...
function nC (line 45) | function nC(t,e,n,i,r){var o=t.getLayout(),a=n[r],s=a&&a===t;if(!(a&&!s|...
function iC (line 45) | function iC(t){return t.get(KT)?t.get($T):0}
function rC (line 45) | function rC(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&...
function oC (line 45) | function oC(t){var e={};t.eachSeriesByType("graph",(function(t){var n=t....
function aC (line 45) | function aC(t){return t instanceof Array||(t=[t,t]),t}
function sC (line 45) | function sC(t){t.eachSeriesByType("graph",(function(t){var e=t.getGraph(...
function fC (line 45) | function fC(t,e,n,i){var r=uC(e),o=F(r);if(!r)return null;var a=function...
function gC (line 45) | function gC(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var n=t....
function yC (line 45) | function yC(t,e){t.eachEdge((function(t,n){var i=et(t.getModel().get(["l...
function vC (line 45) | function vC(t,e){t.eachSeriesByType("graph",(function(t){var e=t.get("la...
function mC (line 45) | function mC(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var ...
function _C (line 45) | function _C(t){var e=t.getVisual("symbolSize");return e instanceof Array...
function wC (line 45) | function wC(t,e){var n=t.coordinateSystem;if(!n||"view"===n.type){var i=...
function MC (line 45) | function MC(t){t.eachSeriesByType("graph",(function(t){"circular"===t.ge...
function TC (line 45) | function TC(t){t.eachSeriesByType("graph",(function(t){var e=t.coordinat...
function CC (line 45) | function CC(t,e){var n=[];return t.eachSeriesByType("graph",(function(t)...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function kC (line 45) | function kC(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.type="ec-line",n}
function RC (line 45) | function RC(t){return"_"+t+"Type"}
function NC (line 45) | function NC(t,e,n){var i=e.getItemVisual(n,t);if(i&&"none"!==i){var r=e....
function zC (line 45) | function zC(t,e){t.x1=e[0][0],t.y1=e[0][1],t.x2=e[1][0],t.y2=e[1][1],t.p...
function e (line 45) | function e(e,n,i){var r=t.call(this)||this;return r._createLine(e,n,i),r}
function S (line 45) | function S(t,e){var n=t.__specifiedRotation;if(null==n){var i=a.tangentA...
function t (line 45) | function t(t){this.group=new Ei,this._LineCtor=t||EC}
function n (line 45) | function n(t){t.isGroup||function(t){return t.animators&&t.animators.len...
function BC (line 45) | function BC(t){var e=t.hostModel;return{lineStyle:e.getModel("lineStyle"...
function FC (line 45) | function FC(t){return isNaN(t[0])||isNaN(t[1])}
function GC (line 45) | function GC(t){return!FC(t[0])&&!FC(t[1])}
function jC (line 45) | function jC(t,e,n){for(var i,r=t[0],o=t[1],a=t[2],s=1/0,l=n*n,u=.1,h=.1;...
function qC (line 45) | function qC(t,e){var n=[],i=Zo,r=[[],[],[]],o=[[],[]],a=[];e/=2,t.eachEd...
function KC (line 45) | function KC(t){return"view"===t.type}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function JC (line 45) | function JC(t){return"_EC_"+t}
function t (line 45) | function t(t){this.type="graph",this.nodes=[],this.edges=[],this._nodesM...
function t (line 45) | function t(t,e){this.inEdges=[],this.outEdges=[],this.edges=[],this.data...
function t (line 45) | function t(t,e,n){this.dataIndex=-1,this.node1=t,this.node2=e,this.dataI...
function nD (line 45) | function nD(t,e){return{getValue:function(n){var i=this[t][e];return i.g...
function iD (line 45) | function iD(t,e,n,i,r){for(var o=new QC(i),a=0;a<t.length;a++)o.addNode(...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function i (line 45) | function i(){return n._categoriesData}
function i (line 45) | function i(t,e){var i=n.call(this,t,e);return i.resolveParentPath=r,i}
function r (line 45) | function r(t){if(t&&("label"===t[0]||"label"===t[1])){var e=t.slice();re...
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.type="pointer",n}
function lD (line 45) | function lD(t,e){var n=null==t?"":t+"";return e&&("string"==typeof e?n=e...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function w (line 45) | function w(e,n){var i,o=y.getItemModel(e).getModel("pointer"),a=Zi(o.get...
function S (line 45) | function S(t,e){var n=f.get("roundCap")?Jw:Jl,i=f.get("overlap"),a=i?f.g...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e,n){var i=t.call(this)||this,r=i,o=new au,a=new cs;return r....
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function yD (line 45) | function yD(t,e){t.eachSeriesByType("funnel",(function(t){var n=t.getDat...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function mD (line 45) | function mD(t,e,n,i){for(var r,o=[],a=0;a<n.length;a++){var s=n[a],l=t.g...
function _D (line 45) | function _D(t,e,n,i,r){var o=mD(t,n,i,r),a=new au({shape:{points:o},z2:1...
function xD (line 45) | function xD(t){var e=t.get("smooth",!0);return!0===e&&(e=.3),J(e=cr(e))&...
function bD (line 45) | function bD(t,e,n,i){t.useStyle(e.getItemVisual(n,"style")),t.style.fill...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function SD (line 45) | function SD(t){var e=t.ecModel.getComponent("parallel",t.get("parallelIn...
function TD (line 45) | function TD(t){!function(t){if(t.parallel)return;var e=!1;P(t.series,(fu...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function AD (line 45) | function AD(t,e){var n=t._model;return n.get("axisExpandable")&&n.get("a...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.type=r||"v...
function PD (line 45) | 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...
function OD (line 45) | function OD(t,e){var n=t[e]-t[1-e];return{span:Math.abs(n),sign:n>0?-1:n...
function RD (line 45) | function RD(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]...
function t (line 45) | function t(t,e,n){this.type="parallel",this._axesMap=ht(),this._axesLayo...
function WD (line 45) | function WD(t,e){return zD(ED(t,e[0]),e[1])}
function UD (line 45) | function UD(t,e){var n=e.layoutLength/(e.axisCount-1);return{position:n*...
function XD (line 45) | function XD(t,e){var n,i,r=e.layoutLength,o=e.axisExpandWidth,a=e.axisCo...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e){var n=t.call(this)||this;return n._track=[],n._covers=[],n...
function o (line 45) | function o(t,e){return(null!=t.id?t.id:"\0-brush-index-"+e)+"-"+t.brushT...
function a (line 45) | function a(o,a){var s=t[o];if(null!=a&&e[a]===r)n[o]=e[a];else{var l=n[o...
function rA (line 45) | function rA(t,e){var n=PA[e.brushType].createCover(t,e);return n.__brush...
function oA (line 45) | function oA(t,e){var n=uA(e);return n.endCreating&&(n.endCreating(t,e),s...
function aA (line 45) | function aA(t,e){var n=e.__brushOption;uA(e).updateCoverShape(t,e,n.rang...
function sA (line 45) | function sA(t,e){var n=e.z;null==n&&(n=1e4),t.traverse((function(t){t.z=...
function lA (line 45) | function lA(t,e){uA(e).updateCommon(t,e),aA(t,e)}
function uA (line 45) | function uA(t){return PA[t.__brushOption.brushType]}
function hA (line 45) | function hA(t,e,n){var i,r=t._panels;if(!r)return jD;var o=t._transform;...
function cA (line 45) | function cA(t,e){var n=t._panels;if(!n)return jD;var i=e.__brushOption.p...
function pA (line 45) | function pA(t){var e=t._covers,n=e.length;return P(e,(function(e){t.grou...
function dA (line 45) | function dA(t,e){var n=O(t._covers,(function(t){var e=t.__brushOption,n=...
function fA (line 45) | function fA(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}
function gA (line 45) | function gA(t,e,n,i){var r=new Ei;return r.add(new ls({name:"main",style...
function yA (line 45) | function yA(t,e,n,i){var r=i.brushStyle.lineWidth||0,o=KD(r,6),a=n[0][0]...
function vA (line 45) | function vA(t,e){var n=e.__brushOption,i=n.transformable,r=e.childAt(0);...
function mA (line 45) | function mA(t,e,n,i,r,o,a){var s=e.childOfName(n);s&&s.setShape(function...
function _A (line 45) | function _A(t){return T({strokeNoScale:!0},t.brushStyle)}
function xA (line 45) | function xA(t,e,n,i){var r=[qD(t,n),qD(e,i)],o=[KD(t,n),KD(e,i)];return[...
function bA (line 45) | function bA(t,e){return{left:"w",right:"e",top:"n",bottom:"s"}[Ku({w:"le...
function wA (line 45) | function wA(t,e,n,i,r,o){var a=n.__brushOption,s=t.toRectRange(a.range),...
function SA (line 45) | function SA(t,e,n,i){var r=e.__brushOption.range,o=MA(t,n,i);P(r,(functi...
function MA (line 45) | function MA(t,e,n){var i=t.group,r=i.transformCoordToLocal(e,n),o=i.tran...
function IA (line 45) | function IA(t,e,n){var i=cA(t,e);return i&&i!==jD?i.clipPath(n,t._transf...
function TA (line 45) | function TA(t){var e=t.event;e.preventDefault&&e.preventDefault()}
function CA (line 45) | function CA(t,e,n){return t.childOfName("main").contain(e,n)}
function DA (line 45) | function DA(t,e,n,i){var r,o=t._creatingCover,a=t._creatingPanel,s=t._br...
function AA (line 45) | function AA(t,e){return"auto"===t?e.defaultBrushType:t}
function kA (line 45) | function kA(t,e){if(t._dragging){TA(e);var n=e.offsetX,i=e.offsetY,r=t.g...
function n (line 45) | function n(t){return t}
function OA (line 45) | function OA(t){return{createCover:function(e,n){return gA({toRectRange:f...
function RA (line 45) | function RA(t){return t=EA(t),function(e){return Qu(e,t)}}
function NA (line 45) | function NA(t,e){return t=EA(t),function(n){var i=null!=e?e:n,r=i?t.widt...
function zA (line 45) | function zA(t,e,n){var i=EA(t);return function(t,r){return i.contain(r[0...
function EA (line 45) | function EA(t){return gi.create(t)}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function HA (line 45) | function HA(t){t.registerComponentView(CD),t.registerComponentModel(LD),...
function e (line 45) | function e(e){return t.call(this,e)||this}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function i (line 45) | function i(t){return isNaN(t)||null==t}
function ZA (line 45) | function ZA(t,e){t.eachSeriesByType("sankey",(function(t){var n=t.get("n...
function jA (line 45) | function jA(t){var e=t.hostGraph.data.getRawDataItem(t.dataIndex);return...
function qA (line 45) | function qA(t,e,n,i,r){var o="vertical"===r?"x":"y";P(t,(function(t){var...
function KA (line 45) | function KA(t,e,n){P(t.slice().reverse(),(function(t){P(t,(function(t){i...
function $A (line 45) | function $A(t,e){return eL(t.node2,e)*t.getValue()}
function JA (line 45) | function JA(t,e){return eL(t.node2,e)}
function QA (line 45) | function QA(t,e){return eL(t.node1,e)*t.getValue()}
function tL (line 45) | function tL(t,e){return eL(t.node1,e)}
function eL (line 45) | function eL(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2...
function nL (line 45) | function nL(t){return t.getValue()}
function iL (line 45) | function iL(t,e,n){for(var i=0,r=t.length,o=-1;++o<r;){var a=+e(t[o],n);...
function rL (line 45) | function rL(t,e,n){P(t,(function(t){P(t,(function(t){if(t.inEdges.length...
function oL (line 45) | function oL(t){t.eachSeriesByType("sankey",(function(t){var e=t.getGraph...
function t (line 45) | function t(){}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.type="boxplotBoxPath",n}
function cL (line 45) | function cL(t,e,n,i,r){var o=t.ends,a=new hL({shape:{points:r?dL(o,i,t):...
function pL (line 45) | function pL(t,e,n,i,r){var o=n.hostModel;(0,ah[r?"initProps":"updateProp...
function dL (line 45) | function dL(t,e,n){return O(t,(function(t){return(t=t.slice())[e]=n.init...
function fL (line 45) | function fL(t,e){}
function yL (line 45) | function yL(t){var e=function(t){var e=[],n=[];return t.eachSeriesByType...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.type="normalCandlestic...
function wL (line 45) | function wL(t,e,n){var i=t.ends;return new bL({shape:{points:n?IL(i,t):i...
function SL (line 45) | function SL(t,e){for(var n=!0,i=0;i<e.ends.length;i++)if(t.contain(e.end...
function ML (line 45) | function ML(t,e,n,i){var r=e.getItemModel(n);t.useStyle(e.getItemVisual(...
function IL (line 45) | function IL(t,e){return O(t,(function(t){return(t=t.slice())[1]=e.initBa...
function e (line 45) | function e(e){var n=t.call(this,e)||this;return n.type="largeCandlestick...
function DL (line 45) | function DL(t,e,n){var i=t.getData().getLayout("largePoints"),r=new CL({...
function AL (line 45) | function AL(t,e,n,i){var r=n.get(["itemStyle",t>0?"borderColor":"borderC...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function kL (line 45) | function kL(t){t&&F(t.series)&&P(t.series,(function(t){X(t)&&"k"===t.typ...
function n (line 45) | function n(t,e){return e.get(t>0?RL:NL)}
function i (line 45) | function i(t,e){return e.get(t>0?PL:OL)}
function w (line 45) | function w(t,n){var i=[];return i[0]=n,i[1]=t,isNaN(n)||isNaN(t)?[NaN,Na...
function S (line 45) | function S(t,e,n){var r=e.slice(),o=e.slice();r[0]=Fu(r[0]+i/2,1,!1),o[0...
function M (line 45) | 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[...
function I (line 45) | function I(t){return t[0]=Fu(t[0],1),t}
function BL (line 45) | function BL(t,e,n,i,r){return n>i?-1:n<i?1:e>0?t.get(r,e-1)<=i?1:-1:1}
function FL (line 45) | function FL(t,e){var n=e.rippleEffectColor||e.color;t.eachChild((functio...
function e (line 45) | function e(e,n){var i=t.call(this)||this,r=new dw(e,n),o=new Ei;return i...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e,n,i){var r=t.call(this)||this;return r.add(r.createLine(e,n...
function e (line 45) | function e(e,n,i){var r=t.call(this)||this;return r._createPolyline(e,n,...
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._las...
function e (line 45) | function e(e){return t.call(this,e)||this}
function t (line 45) | function t(){this.group=new Ei}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function tk (line 45) | function tk(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=O(e...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function nk (line 45) | function nk(t){return t instanceof Array||(t=[t,t]),t}
function t (line 45) | function t(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.m...
function ok (line 45) | function ok(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function pk (line 45) | function pk(t,e,n,i){var r=t.getItemLayout(e),o=n.get("symbolRepeat"),a=...
function dk (line 45) | function dk(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}
function fk (line 45) | function fk(t){var e=t.symbolPatternSize,n=fy(t.symbolType,-e/2,-e/2,e,e...
function gk (line 45) | function gk(t,e,n,i){var r=t.__pictorialBundle,o=n.symbolSize,a=n.valueL...
function yk (line 45) | function yk(t,e,n,i){var r=t.__pictorialBundle,o=t.__pictorialMainPath;o...
function vk (line 45) | function vk(t,e,n){var i=I({},e.barRectShape),r=t.__pictorialBarRect;r?T...
function mk (line 45) | function mk(t,e,n,i){if(n.symbolClip){var r=t.__pictorialClipPath,o=I({}...
function _k (line 45) | function _k(t,e){var n=t.getItemModel(e);return n.getAnimationDelayParam...
function xk (line 45) | function xk(t){return{index:t.__pictorialAnimationIndex,count:t.__pictor...
function bk (line 45) | function bk(){return this.parentModel.isAnimationEnabled()&&!!this.getSh...
function wk (line 45) | function wk(t,e,n,i){var r=new Ei,o=new Ei;return r.add(o),r.__pictorial...
function Sk (line 45) | function Sk(t,e,n,i){var r=i.__pictorialBarRect;r&&r.removeTextContent()...
function Mk (line 45) | function Mk(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!...
function Ik (line 45) | function Ik(t,e,n){P(t.__pictorialBundle.children(),(function(i){i!==t._...
function Tk (line 45) | function Tk(t,e,n,i,r,o){e&&t.attr(e),i.symbolClip&&!r?n&&t.attr(n):n&&a...
function Ck (line 45) | function Ck(t,e,n){var i=n.dataIndex,r=n.itemModel,o=r.getModel("emphasi...
function Dk (line 45) | function Dk(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function h (line 45) | function h(t){return t.name}
function d (line 45) | function d(e,n,s){var l=r._layers;if("remove"!==e){for(var u,h,c=[],d=[]...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function Pk (line 45) | function Pk(t,e){t.eachSeriesByType("themeRiver",(function(t){var e=t.ge...
function Ok (line 45) | function Ok(t,e,n){if(t.count())for(var i,r=e.coordinateSystem,o=e.getLa...
function e (line 45) | function e(e,n,i,r){var o=t.call(this)||this;o.z2=2,o.textConfig={inside...
function f (line 45) | function f(t,e){var n=t.get(e);return null==n?i.get(e):n}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function s (line 45) | function s(t){return t.getId()}
function h (line 45) | function h(s,h){!function(i,r){u||!i||i.getValue()||(i=null);if(i!==a&&r...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function Bk (line 45) | function Bk(t){var e=0;P(t.children,(function(t){Bk(t);var n=t.value;F(n...
function Gk (line 45) | function Gk(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.get("center...
function Hk (line 45) | function Hk(t,e){var n=t.children||[];t.children=function(t,e){if("funct...
function Wk (line 45) | function Wk(t){var e={};t.eachSeriesByType("sunburst",(function(t){var n...
function Uk (line 45) | function Uk(t,e){return e=e||[0,0],O(["x","y"],(function(n,i){var r=this...
function Xk (line 45) | function Xk(t,e){return e=e||[0,0],O([0,1],(function(n){var i=e[n],r=t[n...
function Yk (line 45) | function Yk(t,e){var n=this.getAxis(),i=e instanceof Array?e[0]:e,r=(t i...
function Zk (line 45) | function Zk(t,e){return e=e||[0,0],O(["Radius","Angle"],(function(n,i){v...
function jk (line 45) | function jk(t,e,n,i){return t&&(t.legacy||!1!==t.legacy&&!n&&!i&&"tspan"...
function qk (line 45) | function qk(t,e,n){var i,r,o,a=t;if("text"===e)o=a;else{o={},dt(a,"text"...
function Kk (line 45) | function Kk(t,e){e&&(e.font=e.textFont||e.font,dt(e,"textStrokeWidth")&&...
function $k (line 45) | function $k(t,e,n){var i=t;i.textPosition=i.textPosition||n.position||"i...
function Jk (line 45) | function Jk(t,e){e&&(dt(e,"fill")&&(t.textFill=e.fill),dt(e,"stroke")&&(...
function rP (line 45) | function rP(t,e){return Math.abs(t-e)<1e-5}
function oP (line 45) | function oP(t){var e,n,i,r,o,a=t.data,s=t.len(),l=[],u=0,h=0,c=0,p=0;fun...
function aP (line 45) | function aP(t,e){var n=t.length,i=e.length;if(n===i)return[t,e];for(var ...
function sP (line 45) | function sP(t,e){for(var n=t.length,i=t[n-2],r=t[n-1],o=[],a=0;a<e.lengt...
function lP (line 45) | function lP(t){for(var e=0,n=0,i=0,r=t.length,o=0,a=r-2;o<r;a=o,o+=2){va...
function uP (line 45) | function uP(t,e,n,i){for(var r=(t.length-2)/6,o=1/0,a=0,s=t.length,l=s-2...
function hP (line 45) | function hP(t){for(var e=[],n=t.length,i=0;i<n;i+=2)e[i]=t[n-i-2],e[i+1]...
function cP (line 45) | function cP(t,e,n){var i,r;if(!t||!e)return e;!t.path&&t.createPathProxy...
function pP (line 45) | function pP(t){for(var e=this.__morphingData,n=this.__morphT,i=1-n,r=[],...
function dP (line 45) | function dP(t,e,n){t.__morphingData=e,t.__morphT=n}
function fP (line 45) | function fP(t){return null!=t.__oldBuildPath}
function gP (line 45) | function gP(t){return!!t.__combiningSubList}
function yP (line 45) | function yP(t,e,n,i){for(var r=[],o=0,a=0;a<t.length;a++){var s=t[a];if(...
function vP (line 45) | function vP(t,e){if(t.__combiningSubList!==e){if(_P(t,"removeSelfFromZr"...
function mP (line 45) | function mP(t){this.__oldAddSelfToZr(t),_P(this,"addSelfToZr")}
function _P (line 45) | function _P(t,e){var n=t.__combiningSubList,i=t.__zr;if(n&&i)for(var r=0...
function xP (line 45) | function xP(t){this.__oldRemoveSelfFromZr(t);for(var e=this.__combiningS...
function bP (line 45) | function bP(){return this.__combiningSubList}
function wP (line 45) | function wP(t,e,n){return"duplicate"===n?SP(t,e):function(t,e){var n=[];...
function SP (line 45) | function SP(t,e){var n=[];if(e<=0)return n;for(var i=t.constructor,r=0;r...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function s (line 45) | function s(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hov...
function GP (line 45) | function GP(t,e,n){if(t){if("oneToOne"===e)return function(e,n){return t...
function HP (line 45) | function HP(t){var e,n=t.type;if("path"===n){var i=t.shape,r=null!=i.wid...
function WP (line 45) | function WP(t,e,n,i,r,o,a,s,l,u){var h={},c={},p=e.isGroup?null:e;!n&&YP...
function UP (line 45) | function UP(t,e,n){var i=t.isGroup?null:t;if(i&&n){var r=n.__decalPatter...
function XP (line 45) | function XP(t,e,n,i,r,o){if(r){var a=n.during;MP(t).userDuring=a;var s={...
function YP (line 45) | function YP(t,e,n,i,r,o){var a=i[t];if(a){var s,l=e[t],u=a.enterFrom;if(...
function ZP (line 45) | function ZP(t,e,n){var i=e[t];if(i)for(var r=n[t]={},o=E(i),a=0;a<o.leng...
function jP (line 45) | function jP(t,e,n,i,r){var o=n.enterFrom;if(r&&o)for(var a=E(o),s=0;s<a....
function qP (line 45) | function qP(t,e,n,i,r,o){if(i){var a,s=(e||t).style,l=i.enterFrom;if(o&&...
function KP (line 45) | function KP(t,e){return k(t)?t!==e:null!=t&&isFinite(t)}
function $P (line 45) | function $P(t){var e=MP(t);return e.leaveToProps||(e.leaveToProps={})}
function tO (line 45) | function tO(){var t=this,e=t.el;if(e){var n=MP(e).userDuring,i=t.userDur...
function eO (line 45) | function eO(t,e,n,i,r,o,a){var s=e.isGroup?null:e,l=r&&r[t].cfg;if(s){va...
function nO (line 45) | function nO(t,e,n){var i=n===AP,r=i?e:pO(e,n),o=r?r.z2:null;null!=o&&((i...
function iO (line 45) | function iO(t,e,n,i){var r=t[n],o=zP[n];r&&(i?(e[o[0]]=i[o[0]],e[o[1]]=i...
function rO (line 45) | function rO(t,e,n,i){null!=t[n]&&(e[n]=i?i[n]:t[n])}
function oO (line 45) | function oO(t,e,n){n&&(t[e]=n[e])}
function aO (line 45) | function aO(t,e,n,i){var r=t.get("renderItem"),o=t.coordinateSystem,a={}...
function sO (line 45) | function sO(t){var e={};return P(t.dimensions,(function(n,i){var r=t.get...
function lO (line 45) | function lO(t,e,n,i,r,o,a,s){if(i)return(e=uO(t,e,n,i,r,o,!0,s))&&a.setI...
function uO (line 45) | function uO(t,e,n,i,r,o,a,s){var l=-1;e&&hO(e,i)&&(l=o.childrenRef().ind...
function hO (line 45) | function hO(t,e){var n,i=MP(t),r=e.type,o=e.shape,a=e.style;return null!...
function cO (line 45) | 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...
function pO (line 45) | function pO(t,e){return e?t?t[e]:null:t}
function dO (line 45) | function dO(t,e,n){var i=e&&e.style;return null==i&&n===DP&&t&&(i=t.styl...
function fO (line 45) | function fO(t,e){var n=t&&t.name;return null!=n?n:"e\0\0"+e}
function gO (line 45) | function gO(t,e){var n=this.context,i=null!=t?n.newChildren[t]:null,r=nu...
function yO (line 45) | function yO(t){var e=this.context;vO(e.oldChildren[t],e.seriesModel,e.gr...
function vO (line 45) | function vO(t,e,n){if(t){var i=MP(t).leaveToProps;i?Hu(t,i,e,{cb:functio...
function mO (line 45) | function mO(t){return t&&(t.pathData||t.d)}
function _O (line 45) | function _O(t){return t&&t instanceof Ka}
function xO (line 45) | function xO(t,e){t&&e.remove(t)}
function t (line 45) | function t(t,e){this._fromList=[],this._toList=[],this._toElOptionList=[...
function wO (line 45) | function wO(t,e,n){e.style=n?w(t.style):t.style,e.zlevel=t.zlevel,e.z=t....
function t (line 45) | function t(){this._dragging=!1,this.animationThreshold=15}
function CO (line 45) | function CO(t,e,n,i){DO(SO(n).lastProp,i)||(SO(n).lastProp=i,e?Hu(n,i,t)...
function DO (line 45) | function DO(t,e){if(X(t)&&X(e)){var n=!0;return P(e,(function(e,i){n=n&&...
function AO (line 45) | function AO(t,e){t[e.get(["label","show"])?"show":"hide"]()}
function LO (line 45) | function LO(t){return{x:t.x||0,y:t.y||0,rotation:t.rotation||0}}
function kO (line 45) | function kO(t,e,n){var i=e.get("z"),r=e.get("zlevel");t&&t.traverse((fun...
function PO (line 45) | function PO(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line...
function OO (line 45) | function OO(t,e,n,i,r){var o=RO(n.get("value"),e.axis,e.ecModel,n.get("s...
function RO (line 45) | function RO(t,e,n,i,r){t=e.scale.parse(t);var o=e.scale.getLabel({value:...
function NO (line 45) | function NO(t,e,n){var i=[1,0,0,1,0,0];return Xn(i,i,n.rotation),Un(i,i,...
function zO (line 45) | function zO(t,e,n,i,r,o){var a=tM.innerTextLayout(n.rotation,0,n.labelDi...
function EO (line 45) | function EO(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}}
function VO (line 45) | function VO(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}
function BO (line 45) | function BO(t,e,n,i,r,o){return{cx:t,cy:e,r0:n,r:i,startAngle:r,endAngle...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function GO (line 45) | function GO(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCarte...
function WO (line 45) | function WO(t){return"x"===t.dim?0:1}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function ZO (line 45) | function ZO(t,e,n){if(!a.node){var i=e.getZr();XO(i).records||(XO(i).rec...
function jO (line 45) | function jO(t,e,n){t.handler("leave",null,n)}
function qO (line 45) | function qO(t,e,n,i){e.handler(t,n,i)}
function KO (line 45) | function KO(t,e){if(!a.node){var n=e.getZr();(XO(n).records||{})[t]&&(XO...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function JO (line 45) | function JO(t,e){var n,i=[],r=t.seriesIndex;if(null==r||!(n=e.getSeriesB...
function tR (line 45) | function tR(t,e,n){var i=t.currTrigger,r=[t.x,t.y],o=t,a=t.dispatchActio...
function eR (line 45) | function eR(t,e,n,i,r){var o=t.axis;if(!o.scale.isBlank()&&o.containData...
function nR (line 45) | function nR(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}
function iR (line 45) | function iR(t,e,n,i){var r=n.payloadBatch,o=e.axis,a=o.model,s=e.axisPoi...
function rR (line 45) | function rR(t){var e=t.axis.model,n={},i=n.axisDim=t.axis.dim;return n.a...
function oR (line 45) | function oR(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}
function aR (line 45) | function aR(t){dM.registerAxisPointerClass("CartesianAxisPointer",FO),t....
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e,n){return t.call(this,"radius",e,n)||this}
function e (line 45) | function e(e,n){return t.call(this,"angle",e,n||[0,360])||this}
function t (line 45) | function t(t){this.dimensions=["radius","angle"],this.type="polar",this....
function vR (line 45) | function vR(t){var e=t.seriesModel,n=t.polarModel;return n&&n.coordinate...
function mR (line 45) | function mR(t,e){var n=this,i=n.getAngleAxis(),r=n.getRadiusAxis();if(i....
function _R (line 45) | function _R(t,e){if(t.type=e.get("type"),t.scale=Bx(e),t.onBand=e.get("b...
function wR (line 45) | function wR(t,e,n){e[1]>e[0]&&(e=e.slice().reverse());var i=t.coordToPoi...
function SR (line 45) | function SR(t){return t.getRadiusAxis().inverse?0:1}
function MR (line 45) | function MR(t){var e=t[0],n=t[t.length-1];e&&n&&Math.abs(Math.abs(e.coor...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function kR (line 45) | function kR(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}
function PR (line 45) | function PR(t,e){return e.dim+t.model.componentIndex}
function OR (line 45) | function OR(t,e,n){var i={},r=function(t){var e={};P(t,(function(t,n){va...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function ER (line 45) | function ER(t,e){e=e||{};var n=t.coordinateSystem,i=t.axis,r={},o=i.posi...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.type=r||"v...
function t (line 45) | function t(t,e,n){this.type="single",this.dimension="single",this.dimens...
function XR (line 45) | function XR(t){var e=t.seriesModel,n=t.singleAxisModel;return n&&n.coord...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function $R (line 45) | function $R(t){return t.isHorizontal()?0:1}
function JR (line 45) | function JR(t,e){var n=t.getRect();return[n[ZR[e]],n[ZR[e]]+n[jR[e]]]}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function eN (line 45) | function eN(t,e){var n,i=t.cellSize;1===(n=F(i)?i:t.cellSize=[i,i]).leng...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function p (line 45) | function p(e){r._firstDayOfMonth.push(o.getDateInfo(e)),r._firstDayPoint...
function t (line 45) | function t(e,n,i){this.type="calendar",this.dimensions=t.dimensions,this...
function u (line 45) | function u(t,e){return null!=t[e]&&"auto"!==t[e]}
function sN (line 45) | function sN(t){var e=t.calendarModel,n=t.seriesModel;return e?e.coordina...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function dN (line 45) | function dN(t,e,n,i){var r=n.type;var o=dt(uN,r)?uN[r]:Ru(r);var a=new o...
function fN (line 45) | function fN(t,e){var n=t&&t.parent;n&&("group"===t.type&&t.traverse((fun...
function gN (line 45) | function gN(t,e){var n;return P(e,(function(e){null!=t[e]&&"auto"!==t[e]...
function mN (line 45) | function mN(t){return t+"Axis"}
function _N (line 45) | function _N(t,e){var n,i=ht(),r=[],o=ht();t.eachComponent({mainType:"dat...
function xN (line 45) | function xN(t){var e=t.ecModel,n={infoList:[],infoMap:ht()};return t.eac...
function t (line 45) | function t(){this.indexList=[],this.indexMap=[]}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function o (line 45) | function o(e,n){var r=e[0];if(r){var o=new bN;if(o.add(r.componentIndex)...
function SN (line 45) | function SN(t){var e={};return P(["start","end","startValue","endValue",...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function t (line 45) | function t(t,e,n,i){this._dimName=t,this._axisIndex=e,this.ecModel=i,thi...
function u (line 45) | function u(t,e,n,r,o){var a=o?"Span":"ValueSpan";PD(0,t,n,"all",l["min"+...
function e (line 45) | function e(e){t.eachComponent("dataZoom",(function(n){n.eachTargetAxis((...
function PN (line 45) | function PN(t){kN||(kN=!0,t.registerProcessor(t.PRIORITY.PROCESSOR.FILTE...
function ON (line 45) | function ON(t){t.registerComponentModel(MN),t.registerComponentView(TN),...
function zN (line 45) | function zN(t,e){NN[t]=e}
function EN (line 45) | function EN(t){return NN[t]}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function BN (line 45) | function BN(t,e){var n=wc(e.get("padding")),i=e.getItemStyle(["color","o...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function u (line 45) | function u(u,h){var c,p=l[u],d=l[h],f=a[p],g=new Oh(f,t,t.ecModel);if(i&...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function jN (line 45) | function jN(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}
function KN (line 45) | function KN(t,e){var n=t.split(new RegExp("\n*"+YN+"\n*","g")),i={series...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function _ (line 45) | function _(){n.removeChild(r),m._dom=null}
function JN (line 45) | function JN(t,e){return O(t,(function(t,n){var i=e&&e[n];if(X(i)&&!F(i))...
function ez (line 45) | function ez(t){var e=tz(t);return e.snapshots||(e.snapshots=[{}]),e.snap...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function t (line 45) | function t(t,e,n){var i=this;this._targetInfoList=[];var r=az(e,t);P(sz,...
function oz (line 45) | function oz(t){return t[0]>t[1]&&t.reverse(),t}
function az (line 45) | function az(t,e){return Or(t,e,{includeMainTypes:iz})}
function cz (line 45) | function cz(t,e,n,i){var r=n.getAxis(["x","y"][t]),o=oz(O([0,1],(functio...
function dz (line 45) | function dz(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}
function fz (line 45) | function fz(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function r (line 45) | function r(t,e,r){var o=e.getAxis(t),a=o.model,s=function(t,e,n){var i;r...
function bz (line 45) | function bz(t){var e={xAxisIndex:t.get("xAxisIndex",!0),yAxisIndex:t.get...
function a (line 45) | function a(t,e,n){var o=t.componentIndex,a={type:"select",$fromToolbox:!...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function Sz (line 45) | function Sz(t){var e=t.get("confine");return null!=e?!!e:"richText"===t....
function Mz (line 45) | function Mz(t){if(a.domSupported)for(var e=document.documentElement.styl...
function Tz (line 45) | function Tz(t,e){if(!t)return e;e=bc(e,!0);var n=t.indexOf(e);return(t=-...
function Cz (line 45) | function Cz(t,e){var n=t.currentStyle||document.defaultView&&document.de...
function kz (line 45) | function kz(t,e,n){var i=t.toFixed(0)+"px",r=e.toFixed(0)+"px";if(!a.tra...
function Pz (line 45) | function Pz(t,e,n){var i=[],r=t.get("transitionDuration"),o=t.get("backg...
function Oz (line 45) | function Oz(t,e,n,i,r){var o=e&&e.painter;if(n){var a=o&&o.getViewportRo...
function t (line 45) | function t(t,e,n){if(this._show=!1,this._styleCoord=[0,0,0,0],this._ente...
function t (line 45) | function t(t){this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!...
function zz (line 45) | function zz(t){return Math.max(0,t)}
function Ez (line 45) | function Ez(t){var e=zz(t.shadowBlur||0),n=zz(t.shadowOffsetX||0),i=zz(t...
function Vz (line 45) | function Vz(t,e,n,i){t[0]=n,t[1]=i,t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.ge...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function Uz (line 45) | function Uz(t,e,n){var i,r=e.ecModel;n?(i=new Oh(n,r,r),i=new Oh(e.optio...
function Xz (line 45) | function Xz(t,e){return t.dispatchAction||V(e.dispatchAction,e)}
function Yz (line 45) | function Yz(t){return"center"===t||"middle"===t}
function jz (line 45) | function jz(t,e){var n=xr(t?t.brush:[]);if(n.length){var i=[];P(n,(funct...
function Kz (line 45) | function Kz(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}
function $z (line 45) | function $z(t,e,n){var i={};return qz(e,(function(e){var r,o=i[e]=((r=fu...
function Jz (line 45) | function Jz(t,e,n){var i;P(n,(function(t){e.hasOwnProperty(t)&&Kz(e[t])&...
function tE (line 45) | function tE(t){var e=["x","y"],n=["width","height"];return{point:functio...
function eE (line 45) | function eE(t,e){return e[0]<=t&&t<=e[1]}
function oE (line 45) | function oE(t){t.eachComponent({mainType:"brush"},(function(e){(e.brushT...
function aE (line 45) | function aE(t,e,n){var i,r,o=[];t.eachComponent({mainType:"brush"},(func...
function sE (line 45) | function sE(t,e){if(!t.isDisposed()){var n=t.getZr();n[rE]=!0,t.dispatch...
function lE (line 45) | function lE(t,e,n,i){for(var r=0,o=e.length;r<o;r++){var a=e[r];if(t.bru...
function hE (line 45) | function hE(t){return new gi(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function dE (line 45) | function dE(t,e){return S({brushType:t.brushType,brushMode:t.brushMode,t...
function e (line 45) | function e(){return null!==t&&t.apply(this,arguments)||this}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(e,n,i,r){var o=t.call(this,e,n,i)||this;return o.type=r||"val...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function g (line 45) | function g(t){t.originX=l[0][0]-t.x,t.originY=l[1][0]-t.y}
function y (line 45) | function y(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}
function v (line 45) | function v(t,e,n,i,r){t[i]+=n[i][r]-e[i][r]}
function h (line 45) | function h(t,n,l,u){if(t){var h=Ii(tt(i.get(["controlStyle",n+"BtnSize"]...
function IE (line 45) | function IE(t,e,n,i,r,o){var a=e.get("color");r?(r.setColor(a),n.add(r),...
function TE (line 45) | function TE(t,e,n,i,r,o){if(!t.dragging){var a=r.getModel("checkpointSty...
function CE (line 45) | function CE(t){var e=t&&t.timeline;F(e)||(e=e?[e]:[]),P(e,(function(t){t...
function DE (line 45) | function DE(t){var e=t.itemStyle||(t.itemStyle={}),n=e.emphasis||(e.emph...
function AE (line 45) | function AE(t,e){return t.hasOwnProperty(e)}
function LE (line 45) | function LE(t,e){if(!t)return!1;for(var n=F(t)?t:[t],i=0;i<n.length;i++)...
function kE (line 45) | function kE(t){br(t,"label",["show"])}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function NE (line 45) | function NE(t,e,n,i,r,o){var a=[],s=V_(e,i)?e.getCalculationInfo("stackR...
function EE (line 45) | function EE(t,e){var n=t.getData(),i=t.coordinateSystem;if(e&&!function(...
function VE (line 45) | function VE(t,e,n,i){var r={};return null!=t.valueIndex||null!=t.valueDi...
function BE (line 45) | function BE(t,e){return!(t&&t.containData&&e.coord&&!function(t){return!...
function FE (line 45) | function FE(t,e,n,i){return i<2?t.coord&&t.coord[i]:t.value}
function GE (line 45) | function GE(t,e,n){if("average"===n){var i=0,r=0;return t.each(e,(functi...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function UE (line 45) | function UE(t,e,n){var i=e.coordinateSystem;t.each((function(r){var o,a=...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function qE (line 45) | function qE(t){return!isNaN(t)&&!isFinite(t)}
function KE (line 45) | function KE(t,e,n,i){var r=1-t,o=i.dimensions[t];return qE(e[r])&&qE(n[r...
function $E (line 45) | function $E(t,e){if("cartesian2d"===t.type){var n=e[0].coord,i=e[1].coor...
function JE (line 45) | function JE(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function v (line 45) | function v(e,n,r){var o=e.getItemModel(n);JE(e,n,r,t,i);var s=o.getModel...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function iV (line 45) | function iV(t){return!isNaN(t)&&!isFinite(t)}
function rV (line 45) | function rV(t,e,n,i){var r=1-t;return iV(e[r])&&iV(n[r])}
function oV (line 45) | function oV(t,e){var n=e.coord[0],i=e.coord[1];return!!(Nw(t,"cartesian2...
function aV (line 45) | function aV(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function fV (line 45) | function fV(t,e,n,i){vV(t,e,n,i),n.dispatchAction({type:"legendToggleSel...
function gV (line 45) | function gV(t){for(var e,n=t.getZr().storage.getDisplayList(),i=0,r=n.le...
function yV (line 45) | function yV(t,e,n,i){gV(n)||n.dispatchAction({type:"highlight",seriesNam...
function vV (line 45) | function vV(t,e,n,i){gV(n)||n.dispatchAction({type:"downplay",seriesName...
function mV (line 45) | function mV(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&...
function _V (line 45) | function _V(t,e,n){var i,r={},o="toggleSelected"===t;return n.eachCompon...
function xV (line 45) | function xV(t){t.registerComponentModel(uV),t.registerComponentView(dV),...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function wV (line 45) | function wV(t,e,n){var i=[1,1];i[t.getOrient().index]=0,Gc(e,n,{type:"bo...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function d (line 45) | function d(t,e){var i=t+"DataIndex",o=eh(n.get("pageIcons",!0)[n.getOrie...
function m (line 45) | function m(t){if(t){var e=t.getBoundingRect(),n=e[a]+t[a];return{s:n,e:n...
function _ (line 45) | function _(t,e){return t.e>=e&&t.s<=e+i}
function CV (line 45) | function CV(t){Qm(xV),t.registerComponentModel(bV),t.registerComponentVi...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function LV (line 45) | function LV(t,e,n){AV(t).coordSysRecordMap.each((function(t){var i=t.dat...
function kV (line 45) | function kV(t,e){if(e){t.removeKey(e.model.uid);var n=e.controller;n&&n....
function PV (line 45) | function PV(t,e){t.dispatchAction({type:"dataZoom",animation:{easing:"cu...
function OV (line 45) | function OV(t,e,n,i){return t.coordinateSystem.containPoint([n,i])}
function RV (line 45) | function RV(t){t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,(function...
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type...
function EV (line 45) | function EV(t){return function(e,n,i,r){var o=this.range,a=o.slice(),s=e...
function BV (line 45) | function BV(t){PN(t),t.registerComponentModel(DV),t.registerComponentVie...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function m (line 45) | function m(t){var e=g.getModel(t?"selectedDataBackground":"dataBackgroun...
function c (line 45) | function c(t){var e=ju(n.handles[t].parent,this.group),a=Ku(0===t?"right...
function ZV (line 45) | function ZV(t){return"vertical"===t?"ns-resize":"ew-resize"}
function jV (line 45) | function jV(t){t.registerComponentModel(FV),t.registerComponentView(YV),...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function u (line 45) | function u(t){return t===a[0]?"min":t===a[1]?"max":(+t).toFixed(Math.min...
function a (line 45) | function a(n){QV(e.color)&&!n.inRange&&(n.inRange={color:e.color.slice()...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function r (line 45) | function r(e,n){i.push({value:e,color:t(e,n)})}
function aB (line 45) | function aB(t,e,n){if(n[0]===n[1])return n.slice();for(var i=(n[1]-n[0])...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function s (line 45) | function s(t){return o[t]}
function l (line 45) | function l(t,e){o[t]=e}
function uB (line 45) | function uB(t,e,n){var i=t.option,r=i.align;if(null!=r&&"auto"!==r)retur...
function hB (line 45) | function hB(t,e){return P(t||[],(function(t){null!=t.dataIndex&&(t.dataI...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function r (line 45) | function r(t,e,n){for(var i=0,r=t.length;i<r;i++){var o=Cr(t[i].seriesId...
function o (line 45) | function o(t,e){var n=[];for(var i in t)if(t.hasOwnProperty(i)&&null!=t[...
function yB (line 45) | function yB(t,e,n,i){return new ru({shape:{points:t},draggable:!!n,curso...
function vB (line 45) | function vB(t){var e=t.get("hoverLinkOnHandle");return!!(null==e?t.get("...
function mB (line 45) | function mB(t){return"vertical"===t?"ns-resize":"ew-resize"}
function l (line 45) | function l(t){return vg(e,i,t)}
function u (line 45) | function u(t,n){_g(e,i,t,n)}
function wB (line 45) | function wB(t,e,n,i){for(var r=e.targetVisuals[i],o=TT.prepareVisualType...
function MB (line 45) | function MB(t){var e=t&&t.visualMap;F(e)||(e=e?[e]:[]),SB(e,(function(t)...
function IB (line 45) | function IB(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}
function CB (line 45) | function CB(t){TB||(TB=!0,t.registerSubTypeDefaulter("visualMap",(functi...
function DB (line 45) | function DB(t){t.registerComponentModel(oB),t.registerComponentView(gB),...
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function o (line 45) | function o(t,e,n){return t&&t[e]&&t[e].hasOwnProperty(n)}
function s (line 45) | function s(r,o){var a=i.getRepresentValue({interval:r});o||(o=i.getValue...
function kB (line 45) | function kB(t,e){var n=t.inverse;("vertical"===t.orient?!n:n)&&e.reverse()}
function e (line 45) | function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type...
function OB (line 45) | function OB(t){t.registerComponentModel(AB),t.registerComponentView(PB),...
function EB (line 45) | function EB(t,e){var n=t.getModel("aria");if(n.get("enabled")){var i=w(R...
function VB (line 45) | function VB(t){if(t&&t.aria){var e=t.aria;null!=e.show&&(e.enabled=e.sho...
function t (line 45) | function t(t){if(null==(this._condVal=H(t)?new RegExp(t):$(t)?t:null)){v...
function t (line 45) | function t(){}
function t (line 45) | function t(){}
function t (line 45) | function t(){}
function t (line 45) | function t(){}
function t (line 45) | function t(){}
function YB (line 45) | function YB(t,e){if(!0===t||!1===t){var n=new GB;return n.value=t,n}var ...
function ZB (line 45) | function ZB(t,e,n){var i=e[t],r="";F(i)||vr(r),i.length||vr(r);var o="an...
function jB (line 45) | function jB(t){return X(t)&&!k(t)}
function t (line 45) | function t(t,e){this._cond=YB(t,e)}
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type...
function e (line 45) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type...
FILE: miniprogram/components/ec-canvas/echartsForBar.js
function e (line 1) | function e(t,e){function n(){this.constructor=t}if("function"!=typeof e&...
function n (line 1) | function n(t,e,n){if(n||2===arguments.length)for(var i,r=0,o=e.length;o>...
function i (line 1) | function i(t,e){var n=e.browser,i=t.match(/Firefox\/([\d.]+)/),r=t.match...
function r (line 1) | function r(t,e){Zg[t]=e}
function o (line 1) | function o(){return qg++}
function a (line 1) | function a(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];"...
function s (line 1) | function s(t){if(null==t||"object"!=typeof t)return t;var e=t,n=Fg.call(...
function l (line 1) | function l(t,e,n){if(!k(e)||!k(t))return n?s(e):t;for(var i in e)if(e.ha...
function u (line 1) | function u(t,e){for(var n=t[0],i=1,r=t.length;r>i;i++)n=l(n,t[i],e);retu...
function h (line 1) | function h(t,e){if(Object.assign)Object.assign(t,e);else for(var n in e)...
function c (line 1) | function c(t,e,n){for(var i=w(e),r=0;r<i.length;r++){var o=i[r];(n?null!...
function p (line 1) | function p(t,e){if(t){if(t.indexOf)return t.indexOf(e);for(var n=0,i=t.l...
function f (line 1) | function f(t,e){function n(){}var i=t.prototype;n.prototype=e.prototype,...
function d (line 1) | function d(t,e,n){if(t="prototype"in t?t.prototype:t,e="prototype"in e?e...
function g (line 1) | function g(t){return t?"string"==typeof t?!1:"number"==typeof t.length:!1}
function v (line 1) | function v(t,e,n){if(t&&e)if(t.forEach&&t.forEach===Vg)t.forEach(e,n);el...
function y (line 1) | function y(t,e,n){if(!t)return[];if(!e)return V(t);if(t.map&&t.map===Gg)...
function m (line 1) | function m(t,e,n,i){if(t&&e){for(var r=0,o=t.length;o>r;r++)n=e.call(i,n...
function _ (line 1) | function _(t,e,n){if(!t)return[];if(!e)return V(t);if(t.filter&&t.filter...
function x (line 1) | function x(t,e,n){if(t&&e)for(var i=0,r=t.length;r>i;i++)if(e.call(n,t[i...
function w (line 1) | function w(t){if(!t)return[];if(Object.keys)return Object.keys(t);var e=...
function b (line 1) | function b(t,e){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments...
function S (line 1) | function S(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n...
function M (line 1) | function M(t){return Array.isArray?Array.isArray(t):"[object Array]"===F...
function T (line 1) | function T(t){return"function"==typeof t}
function C (line 1) | function C(t){return"string"==typeof t}
function I (line 1) | function I(t){return"[object String]"===Fg.call(t)}
function D (line 1) | function D(t){return"number"==typeof t}
function k (line 1) | function k(t){var e=typeof t;return"function"===e||!!t&&"object"===e}
function A (line 1) | function A(t){return!!Eg[Fg.call(t)]}
function O (line 1) | function O(t){return!!Bg[Fg.call(t)]}
function P (line 1) | function P(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"ob...
function R (line 1) | function R(t){return null!=t.colorStops}
function L (line 1) | function L(t){return null!=t.image}
function z (line 1) | function z(t){return"[object RegExp]"===Fg.call(t)}
function E (line 1) | function E(t){return t!==t}
function B (line 1) | function B(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];f...
function F (line 1) | function F(t,e){return null!=t?t:e}
function N (line 1) | function N(t,e,n){return null!=t?t:null!=e?e:n}
function V (line 1) | function V(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n...
function H (line 1) | function H(t){if("number"==typeof t)return[t,t,t,t];var e=t.length;retur...
function W (line 1) | function W(t,e){if(!t)throw new Error(e)}
function G (line 1) | function G(t){return null==t?null:"function"==typeof t.trim?t.trim():t.r...
function U (line 1) | function U(t){t[$g]=!0}
function X (line 1) | function X(t){return t[$g]}
function Y (line 1) | function Y(t){return new Jg(t)}
function Z (line 1) | function Z(t,e){for(var n=new t.constructor(t.length+e.length),i=0;i<t.l...
function q (line 1) | function q(t,e){var n;if(Object.create)n=Object.create(t);else{var i=fun...
function j (line 1) | function j(t,e){return t.hasOwnProperty(e)}
function K (line 1) | function K(){}
function $ (line 1) | function $(t,e){return null==t&&(t=0),null==e&&(e=0),[t,e]}
function J (line 1) | function J(t,e){return t[0]=e[0],t[1]=e[1],t}
function Q (line 1) | function Q(t){return[t[0],t[1]]}
function te (line 1) | function te(t,e,n){return t[0]=e,t[1]=n,t}
function ee (line 1) | function ee(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}
function ne (line 1) | function ne(t,e,n,i){return t[0]=e[0]+n[0]*i,t[1]=e[1]+n[1]*i,t}
function ie (line 1) | function ie(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}
function re (line 1) | function re(t){return Math.sqrt(oe(t))}
function oe (line 1) | function oe(t){return t[0]*t[0]+t[1]*t[1]}
function ae (line 1) | function ae(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t}
function se (line 1) | function se(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t}
function le (line 1) | function le(t,e){return t[0]*e[0]+t[1]*e[1]}
function ue (line 1) | function ue(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}
function he (line 1) | function he(t,e){var n=re(e);return 0===n?(t[0]=0,t[1]=0):(t[0]=e[0]/n,t...
function ce (line 1) | function ce(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t...
function pe (line 1) | function pe(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])}
function fe (line 1) | function fe(t,e){return t[0]=-e[0],t[1]=-e[1],t}
function de (line 1) | function de(t,e,n,i){return t[0]=e[0]+i*(n[0]-e[0]),t[1]=e[1]+i*(n[1]-e[...
function ge (line 1) | function ge(t,e,n){var i=e[0],r=e[1];return t[0]=n[0]*i+n[2]*r+n[4],t[1]...
function ve (line 1) | function ve(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[...
function ye (line 1) | function ye(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[...
function me (line 1) | function me(t,e,n,i,r,o){var a=i+"-"+r,s=t.length;if(o.hasOwnProperty(a)...
function _e (line 1) | function _e(t,e){var n=[[t[0],t[1],1,0,0,0,-e[0]*t[0],-e[0]*t[1]],[0,0,0...
function xe (line 1) | function xe(t,e,n,i,r){if(e.getBoundingClientRect&&zg.domSupported&&!Se(...
function we (line 1) | function we(t,e){var n=e.markers;if(n)return n;n=e.markers=[];for(var i=...
function be (line 1) | function be(t,e,n){for(var i=n?"invTrans":"trans",r=e[i],o=e.srcCoords,a...
function Se (line 1) | function Se(t){return"CANVAS"===t.nodeName.toUpperCase()}
function Me (line 1) | function Me(t,e,n,i){return n=n||{},i||!zg.canvasSupported?Te(t,e,n):zg....
function Te (line 1) | function Te(t,e,n){if(zg.domSupported&&t.getBoundingClientRect){var i=e....
function Ce (line 1) | function Ce(t){return t||window.event}
function Ie (line 1) | function Ie(t,e,n){if(e=Ce(e),null!=e.zrX)return e;var i=e.type,r=i&&i.i...
function De (line 1) | function De(t){var e=t.wheelDelta;if(e)return e;var n=t.deltaX,i=t.delta...
function ke (line 1) | function ke(t,e,n,i){hv?t.addEventListener(e,n,i):t.attachEvent("on"+e,n)}
function Ae (line 1) | function Ae(t,e,n,i){hv?t.removeEventListener(e,n,i):t.detachEvent("on"+...
function Oe (line 1) | function Oe(t){return 2===t.which||3===t.which}
function Pe (line 1) | function Pe(t){var e=t[1][0]-t[0][0],n=t[1][1]-t[0][1];return Math.sqrt(...
function Re (line 1) | function Re(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}
function Le (line 1) | function Le(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.top...
function ze (line 1) | function ze(){fv(this.event)}
function Ee (line 1) | function Ee(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){for(v...
function Be (line 1) | function Be(t,e,n){var i=t.painter;return 0>e||e>i.getWidth()||0>n||n>i....
function Fe (line 1) | function Fe(t){for(var e=0;t>=bv;)e|=1&t,t>>=1;return t+e}
function Ne (line 1) | function Ne(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){fo...
function Ve (line 1) | function Ve(t,e,n){for(n--;n>e;){var i=t[e];t[e++]=t[n],t[n--]=i}}
function He (line 1) | function He(t,e,n,i,r){for(i===e&&i++;n>i;i++){for(var o,a=t[i],s=e,l=i;...
function We (line 1) | 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...
function Ge (line 1) | 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...
function Ue (line 1) | function Ue(t,e){function n(t,e){l[c]=t,u[c]=e,c+=1}function i(){for(;c>...
function Xe (line 1) | function Xe(t,e,n,i){n||(n=0),i||(i=t.length);var r=i-n;if(!(2>r)){var o...
function Ye (line 1) | function Ye(){Iv||(Iv=!0,console.warn("z / z2 / zlevel of displayable is...
function Ze (line 1) | function Ze(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:...
function qe (line 1) | function qe(t){return t=Math.round(t),0>t?0:t>255?255:t}
function je (line 1) | function je(t){return t=Math.round(t),0>t?0:t>360?360:t}
function Ke (line 1) | function Ke(t){return 0>t?0:t>1?1:t}
function $e (line 1) | function $e(t){var e=t;return qe(e.length&&"%"===e.charAt(e.length-1)?pa...
function Je (line 1) | function Je(t){var e=t;return Ke(e.length&&"%"===e.charAt(e.length-1)?pa...
function Qe (line 1) | 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...
function tn (line 1) | function tn(t,e,n){return t+(e-t)*n}
function en (line 1) | function en(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}
function nn (line 1) | function nn(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}
function rn (line 1) | function rn(t,e){Bv&&nn(Bv,e),Bv=Ev.put(t,Bv||e.slice())}
function on (line 1) | function on(t,e){if(t){e=e||[];var n=Ev.get(t);if(n)return nn(e,n);t+=""...
function an (line 1) | function an(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=Je(t[1]),r=J...
function sn (line 1) | function sn(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min...
function ln (line 1) | function ln(t,e){var n=on(t);if(n){for(var i=0;3>i;i++)n[i]=0>e?n[i]*(1-...
function un (line 1) | function un(t){var e=on(t);return e?((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]...
function hn (line 1) | function hn(t,e,n){if(e&&e.length&&t>=0&&1>=t){n=n||[];var i=t*(e.length...
function cn (line 1) | function cn(t,e,n){if(e&&e.length&&t>=0&&1>=t){var i=t*(e.length-1),r=Ma...
function pn (line 1) | function pn(t,e,n,i){var r=on(t);return t?(r=sn(r),null!=e&&(r[0]=je(e))...
function fn (line 1) | function fn(t,e){var n=on(t);return n&&null!=e?(n[3]=Ke(e),dn(n,"rgba"))...
function dn (line 1) | function dn(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return("rg...
function gn (line 1) | function gn(t,e){var n=on(t);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[...
function vn (line 1) | function vn(){var t=Math.round(255*Math.random()),e=Math.round(255*Math....
function yn (line 1) | function yn(t,e,n){return(e-t)*n+t}
function mn (line 1) | function mn(t,e,n){return n>.5?e:t}
function _n (line 1) | 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 (line 1) | function xn(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;r>a;a++){t[...
function wn (line 1) | function wn(t,e,n,i){for(var r=e.length,o=0;r>o;o++)t[o]=e[o]+n[o]*i;ret...
function bn (line 1) | function bn(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;r>a;a++){t[...
function Sn (line 1) | function Sn(t,e,n){var i=t,r=e;if(i.push&&r.push){var o=i.length,a=r.len...
function Mn (line 1) | function Mn(t,e){var n=t.length;if(n!==e.length)return!1;for(var i=0;n>i...
function Tn (line 1) | function Tn(t,e,n,i,r,o,a){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)...
function Cn (line 1) | 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]...
function In (line 1) | function In(t,e,n,i,r,o,a,s){for(var l=e.length,u=e[0].length,h=0;l>h;h+...
function Dn (line 1) | function Dn(t){if(g(t)){var e=t.length;if(g(t[0])){for(var n=[],i=0;e>i;...
function kn (line 1) | function kn(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=M...
function An (line 1) | function An(t){return g(t&&t[0])?2:1}
function On (line 1) | function On(t){var e=t.pointerType;return"pen"===e||"touch"===e}
function Pn (line 1) | function Pn(t){t.touching=!0,null!=t.touchTimer&&(clearTimeout(t.touchTi...
function Rn (line 1) | function Rn(t){t&&(t.zrByTouch=!0)}
function Ln (line 1) | function Ln(t,e){return Ie(t.dom,new $v(t,e),!0)}
function zn (line 1) | function zn(t,e){for(var n=e,i=!1;n&&9!==n.nodeType&&!(i=n.domBelongToZr...
function En (line 1) | function En(t,e){var n=e.domHandlers;zg.pointerEventsSupported?v(qv.poin...
function Bn (line 1) | function Bn(t,e){function n(n){function i(i){i=Ce(i),zn(t,i.target)||(i=...
function Fn (line 1) | function Fn(t,e,n,i){t.mounted[e]=n,t.listenerOpts[e]=i,ke(t.domTarget,e...
function Nn (line 1) | function Nn(t){var e=t.mounted;for(var n in e)e.hasOwnProperty(n)&&Ae(t....
function Vn (line 1) | function Vn(){return[1,0,0,1,0,0]}
function Hn (line 1) | 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 (line 1) | 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...
function Gn (line 1) | 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...
function Un (line 1) | 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...
function Xn (line 1) | 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....
function Yn (line 1) | 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]...
function Zn (line 1) | 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...
function qn (line 1) | function qn(t){var e=Vn();return Wn(e,t),e}
function jn (line 1) | function jn(t){return t>py||-py>t}
function Kn (line 1) | function Kn(t,e){return iy||(iy=jg().getContext("2d")),ry!==e&&(ry=iy.fo...
function $n (line 1) | function $n(t,e){e=e||Ay;var n=ky[e];n||(n=ky[e]=new Lv(500));var i=n.ge...
function Jn (line 1) | 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...
function Qn (line 1) | function Qn(t,e,n,i){var r=((t||"")+"").split("\n"),o=r.length;if(1===o)...
function ti (line 1) | function ti(t,e,n){return"right"===n?t-=e:"center"===n&&(t-=e/2),t}
function ei (line 1) | function ei(t,e,n){return"middle"===n?t-=e/2:"bottom"===n&&(t-=e),t}
function ni (line 1) | function ni(t){return $n("国",t)}
function ii (line 1) | function ii(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFlo...
function ri (line 1) | function ri(t,e,n){var i=e.position||"inside",r=null!=e.distance?e.dista...
function oi (line 1) | function oi(t,e,n,i,r){n=n||{};var o=[];ui(t,"",t,e,n,i,o,r);var a=o.len...
function ai (line 1) | function ai(t,e,n){for(var i=0;n>i;i++)t[i]=e[i]}
function si (line 1) | function si(t){return g(t[0])}
function li (line 1) | function li(t,e,n){if(g(e[n]))if(g(t[n])||(t[n]=[]),O(e[n])){var i=e[n]....
function ui (line 1) | function ui(t,e,n,i,r,o,a,s){for(var l=[],u=[],h=w(i),c=r.duration,f=r.d...
function hi (line 1) | function hi(t){delete Hy[t]}
function ci (line 1) | function ci(t){if(!t)return!1;if("string"==typeof t)return gn(t,1)<ay;if...
function pi (line 1) | function pi(t,e){var n=new Wy(o(),t,e);return Hy[n.id]=n,n}
function fi (line 1) | function fi(t){t.dispose()}
function di (line 1) | function di(){for(var t in Hy)Hy.hasOwnProperty(t)&&Hy[t].dispose();Hy={}}
function gi (line 1) | function gi(t){return Hy[t]}
function vi (line 1) | function vi(t,e){Vy[t]=e}
function yi (line 1) | function yi(t){return t.replace(/^\s+|\s+$/g,"")}
function mi (line 1) | 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===...
function _i (line 1) | function _i(t,e){switch(t){case"center":case"middle":t="50%";break;case"...
function xi (line 1) | function xi(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),Yy),t...
function wi (line 1) | function wi(t){return t.sort(function(t,e){return t-e}),t}
function bi (line 1) | function bi(t){if(t=+t,isNaN(t))return 0;if(t>1e-14)for(var e=1,n=0;15>n...
function Si (line 1) | function Si(t){var e=t.toString().toLowerCase(),n=e.indexOf("e"),i=n>0?+...
function Mi (line 1) | function Mi(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i)...
function Ti (line 1) | function Ti(t,e,n){if(!t[e])return 0;var i=m(t,function(t,e){return t+(i...
function Ci (line 1) | function Ci(t,e){var n=Math.max(bi(t),bi(e)),i=t+e;return n>Yy?i:xi(i,n)}
function Ii (line 1) | function Ii(t){var e=2*Math.PI;return(t%e+e)%e}
function Di (line 1) | function Di(t){return t>-Xy&&Xy>t}
function ki (line 1) | function ki(t){if(t instanceof Date)return t;if("string"==typeof t){var ...
function Ai (line 1) | function Ai(t){return Math.pow(10,Oi(t))}
function Oi (line 1) | function Oi(t){if(0===t)return 0;var e=Math.floor(Math.log(t)/Math.LN10)...
function Pi (line 1) | function Pi(t,e){var n,i=Oi(t),r=Math.pow(10,i),o=t/r;return n=e?1.5>o?1...
function Ri (line 1) | function Ri(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;...
function Li (line 1) | function Li(t){function e(t,n,i){return t.interval[i]<n.interval[i]||t.i...
function zi (line 1) | function zi(t){var e=parseFloat(t);return e==t&&(0!==e||"string"!=typeof...
function Ei (line 1) | function Ei(t){return!isNaN(zi(t))}
function Bi (line 1) | function Bi(){return Math.round(9*Math.random())}
function Fi (line 1) | function Fi(t,e){return 0===e?t:Fi(e,t%e)}
function Ni (line 1) | function Ni(t,e){return null==t?e:null==e?t:t*e/Fi(t,e)}
function Vi (line 1) | function Vi(t){throw new Error(t)}
function Hi (line 1) | function Hi(t){return t instanceof Array?t:null==t?[]:[t]}
function Wi (line 1) | function Wi(t,e,n){if(t){t[e]=t[e]||{},t.emphasis=t.emphasis||{},t.empha...
function Gi (line 1) | function Gi(t){return!k(t)||M(t)||t instanceof Date?t:t.value}
function Ui (line 1) | function Ui(t){return k(t)&&!(t instanceof Array)}
function Xi (line 1) | function Xi(t,e,n){var i="normalMerge"===n,r="replaceMerge"===n,o="repla...
function Yi (line 1) | function Yi(t,e,n){var i=[];if("replaceAll"===n)return i;for(var r=0;r<t...
function Zi (line 1) | function Zi(t,e,n,i){v(i,function(r,o){if(r&&null!=r.id){var a=Qi(r.id),...
function qi (line 1) | function qi(t,e){v(e,function(n,i){if(n&&null!=n.name)for(var r=0;r<t.le...
function ji (line 1) | function ji(t,e,n){v(e,function(e){if(e){for(var i,r=0;(i=t[r])&&(i.newO...
function Ki (line 1) | function Ki(t,e){v(e,function(e){t.push({newOption:e,brandNew:!0,existin...
function $i (line 1) | function $i(t){var e=Y();v(t,function(t){var n=t.existing;n&&e.set(n.id,...
function Ji (line 1) | function Ji(t,e,n){var i=tr(e[t],null),r=tr(n[t],null);return null!=i&&n...
function Qi (line 1) | function Qi(t){return tr(t,"")}
function tr (line 1) | function tr(t,e){if(null==t)return e;
function er (line 2) | function er(t){var e=t.name;return!(!e||!e.indexOf(jy))}
function nr (line 2) | function nr(t){return t&&null!=t.id&&0===Qi(t.id).indexOf(Ky)}
function ir (line 2) | function ir(t,e,n){v(t,function(t){var i=t.newOption;k(i)&&(t.keyInfo.ma...
function rr (line 2) | function rr(t,e,n,i){var r=e.type?e.type:n?n.subType:i.determineSubType(...
function or (line 2) | function or(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=...
function ar (line 2) | function ar(){var t="__ec_inner_"+Jy++;return function(e){return e[t]||(...
function sr (line 2) | function sr(t,e,n){var i=lr(e,n),r=i.mainTypeSpecified,o=i.queryOptionMa...
function lr (line 2) | function lr(t,e){var n;if(C(t)){var i={};i[t+"Index"]=0,n=i}else n=t;var...
function ur (line 2) | function ur(t,e,n,i){i=i||Qy;var r=n.index,o=n.id,a=n.name,s={models:nul...
function hr (line 2) | function hr(t,e,n){t.setAttribute?t.setAttribute(e,n):t[e]=n}
function cr (line 2) | function cr(t,e){return t.getAttribute?t.getAttribute(e):t[e]}
function pr (line 2) | function pr(t,e,n,i,r){var o=null==e||"auto"===e;if(null==i)return i;if(...
function fr (line 2) | function fr(t){var e={main:"",sub:""};if(t){var n=t.split(em);e.main=n[0...
function dr (line 2) | function dr(t){W(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'component...
function gr (line 2) | function gr(t){return!(!t||!t[im])}
function vr (line 2) | function vr(t){t.$constructor=t,t.extend=function(t){function e(){for(va...
function yr (line 2) | function yr(t){return"function"==typeof t&&/^class\s/.test(Function.prot...
function mr (line 2) | function mr(t,e){t.extend=e.extend}
function _r (line 2) | function _r(t){var e=["__\x00is_clz",rm++].join("_");t.prototype[e]=!0,t...
function xr (line 2) | function xr(t,e){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=argument...
function wr (line 2) | function wr(t,e,n){return this.superClass.prototype[e].apply(t,n)}
function br (line 2) | function br(t){function e(t){var e=n[t.main];return e&&e[nm]||(e=n[t.mai...
function Sr (line 2) | function Sr(t,e){for(var n=0;n<t.length;n++)t[n][1]||(t[n][1]=t[n][0]);r...
function Mr (line 2) | function Mr(t){if("string"==typeof t){var e=lm.get(t);return e&&e.image}...
function Tr (line 2) | function Tr(t,e,n,i,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc...
function Cr (line 2) | function Cr(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__...
function Ir (line 2) | function Ir(t){return t&&t.width&&t.height}
function Dr (line 2) | function Dr(t,e,n,i,r){if(!e)return"";var o=(t+"").split("\n");r=kr(e,n,...
function kr (line 2) | function kr(t,e,n,i){i=i||{};var r=h({},i);r.font=e,n=F(n,"..."),r.maxIt...
function Ar (line 2) | function Ar(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)...
function Or (line 2) | function Or(t,e,n,i){for(var r=0,o=0,a=t.length;a>o&&e>r;o++){var s=t.ch...
function Pr (line 2) | function Pr(t,e){null!=t&&(t+="");var n,i=e.overflow,r=e.padding,o=e.fon...
function Rr (line 2) | function Rr(t,e){function n(t,e,n){t.width=e,t.lineHeight=n,p+=n,f=Math....
function Lr (line 2) | function Lr(t,e,n,i,r){var o,a,s=""===e,l=r&&n.rich[r]||{},u=t.lines,h=l...
function zr (line 2) | function zr(t){var e=t.charCodeAt(0);return e>=33&&255>=e}
function Er (line 2) | function Er(t){return zr(t)?fm[t]?!0:!1:!0}
function Br (line 2) | function Br(t,e,n,i,r){for(var o=[],a=[],s="",l="",u=0,h=0,c=0;c<t.lengt...
function Fr (line 2) | function Fr(t,e,n){return xm.copy(t.getBoundingRect()),t.transform&&xm.a...
function Nr (line 2) | function Nr(t){return t>-Mm&&Mm>t}
function Vr (line 2) | function Vr(t){return t>Mm||-Mm>t}
function Hr (line 2) | 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 (line 2) | function Wr(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r...
function Gr (line 2) | 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...
function Ur (line 2) | 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=...
function Xr (line 2) | 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)...
function Yr (line 2) | 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...
function Zr (line 2) | 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++){v...
function qr (line 2) | function qr(t,e,n,i){var r=1-i;return r*(r*t+2*i*e)+i*i*n}
function jr (line 2) | function jr(t,e,n,i){return 2*((1-i)*(e-t)+i*(n-e))}
function Kr (line 2) | 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...
function $r (line 2) | function $r(t,e,n){var i=t+n-2*e;return 0===i?.5:(t-e)/i}
function Jr (line 2) | 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[...
function Qr (line 2) | 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(va...
function to (line 2) | 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...
function eo (line 2) | function eo(t,e,n){if(0!==t.length){for(var i=t[0],r=i[0],o=i[0],a=i[1],...
function no (line 2) | function no(t,e,n,i,r,o){r[0]=Om(t,n),r[1]=Om(e,i),o[0]=Pm(t,n),o[1]=Pm(...
function io (line 2) | function io(t,e,n,i,r,o,a,s,l,u){var h=Ur,c=Hr,p=h(t,n,r,a,Nm);l[0]=1/0,...
function ro (line 2) | 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(O...
function oo (line 2) | 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%z...
function ao (line 2) | function ao(t){var e=Math.round(t/t_*1e8)/1e8;return e%2*t_}
function so (line 2) | function so(t,e){var n=ao(t[0]);0>n&&(n+=e_);var i=n-t[0],r=t[1];r+=i,!e...
function lo (line 2) | 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...
function uo (line 2) | 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...
function ho (line 2) | 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...
function co (line 2) | function co(t){return t%=o_,0>t&&(t+=o_),t}
function po (line 2) | 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...
function fo (line 2) | function fo(t,e,n,i,r,o){if(o>e&&o>i||e>o&&i>o)return 0;if(i===e)return ...
function go (line 2) | function go(t,e){return Math.abs(t-e)<u_}
function vo (line 2) | function vo(){var t=c_[0];c_[0]=c_[1],c_[1]=t}
function yo (line 2) | function yo(t,e,n,i,r,o,a,s,l,u){if(u>e&&u>i&&u>o&&u>s||e>u&&i>u&&o>u&&s...
function mo (line 2) | 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;va...
function _o (line 2) | function _o(t,e,n,i,r,o,a,s){if(s-=e,s>n||-n>s)return 0;var l=Math.sqrt(...
function xo (line 2) | 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=...
function wo (line 2) | function wo(t,e,n){return xo(t,0,!1,e,n)}
function bo (line 2) | function bo(t,e,n,i){return xo(t,e,!0,n,i)}
function So (line 2) | function So(t){return!!(t&&"string"!=typeof t&&t.width&&t.height)}
function Mo (line 2) | 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&...
function To (line 2) | 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...
function Co (line 2) | 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=...
function Io (line 2) | function Io(t,e,n){if(!e)return t;var i=w_(2*t);return(i+w_(e))%2===0?i/...
function Do (line 2) | function Do(t){return ko(t),v(t.rich,ko),t}
function ko (line 2) | function ko(t){if(t){t.font=D_.makeFont(t);var e=t.align;"middle"===e&&(...
function Ao (line 2) | function Ao(t,e){return null==t||0>=e||"transparent"===t||"none"===t?nul...
function Oo (line 2) | function Oo(t){return null==t||"none"===t?null:t.image||t.colorStops?"#0...
function Po (line 2) | function Po(t,e,n){return"right"===e?t-n[1]:"center"===e?t+n[3]/2-n[1]/2...
function Ro (line 2) | function Ro(t){var e=t.text;return null!=e&&(e+=""),e}
function Lo (line 2) | function Lo(t){return!!(t.backgroundColor||t.lineHeight||t.borderWidth&&...
function zo (line 2) | function zo(t){return null!=t&&"none"!==t}
function Eo (line 2) | function Eo(t){if("string"!=typeof t)return t;var e=q_.get(t);return e||...
function Bo (line 2) | function Bo(t,e,n){t.onHoverStateChange&&(t.hoverState||0)!==n&&t.onHove...
function Fo (line 2) | function Fo(t){Bo(t,"emphasis",F_)}
function No (line 2) | function No(t){t.hoverState===F_&&Bo(t,"normal",E_)}
function Vo (line 2) | function Vo(t){Bo(t,"blur",B_)}
function Ho (line 2) | function Ho(t){t.hoverState===B_&&Bo(t,"normal",E_)}
function Wo (line 2) | function Wo(t){t.selected=!0}
function Go (line 2) | function Go(t){t.selected=!1}
function Uo (line 2) | function Uo(t,e,n){e(t,n)}
function Xo (line 2) | function Xo(t,e,n){Uo(t,e,n),t.isGroup&&t.traverse(function(t){Uo(t,e,n)})}
function Yo (line 2) | function Yo(t,e,n,i){for(var r=t.style,o={},a=0;a<e.length;a++){var s=e[...
function Zo (line 2) | function Zo(t,e,n,i){var r=n&&p(n,"select")>=0,o=!1;if(t instanceof g_){...
function qo (line 2) | function qo(t,e,n){if(n&&null==n.z2){n=h({},n);var i=t.z2SelectLift;n.z2...
function jo (line 2) | function jo(t,e,n){var i=p(t.currentStates,e)>=0,r=t.style.opacity,o=i?n...
function Ko (line 2) | function Ko(t,e){var n=this.states[t];if(this.style){if("emphasis"===t)r...
function $o (line 2) | function $o(t){t.stateProxy=Ko;var e=t.getTextContent(),n=t.getTextGuide...
function Jo (line 2) | function Jo(t,e){!aa(t,e)&&!t.__highByOuter&&Xo(t,Fo)}
function Qo (line 2) | function Qo(t,e){!aa(t,e)&&!t.__highByOuter&&Xo(t,No)}
function ta (line 2) | function ta(t,e){t.__highByOuter|=1<<(e||0),Xo(t,Fo)}
function ea (line 2) | function ea(t,e){!(t.__highByOuter&=~(1<<(e||0)))&&Xo(t,No)}
function na (line 2) | function na(t){Xo(t,Vo)}
function ia (line 2) | function ia(t){Xo(t,Ho)}
function ra (line 2) | function ra(t){Xo(t,Wo)}
function oa (line 2) | function oa(t){Xo(t,Go)}
function aa (line 2) | function aa(t,e){return t.__highDownSilentOnTouch&&e.zrByTouch}
function sa (line 2) | function sa(t){var e=t.getModel();e.eachComponent(function(e,n){var i="s...
function la (line 2) | function la(t,e,n,i){function r(t,e){for(var n=0;n<e.length;n++){var i=t...
function ua (line 2) | function ua(t,e,n){if(null!=t&&null!=e){var i=n.getModel().getComponent(...
function ha (line 2) | function ha(t,e,n){var i=t.seriesIndex,r=t.getData(e.dataType),o=or(r,e)...
function ca (line 2) | function ca(t,e,n,i){var r={focusSelf:!1,dispatchers:null};if(null==t||"...
function pa (line 2) | function pa(t,e,n){var i=O_(t),r=ca(i.componentMainType,i.componentIndex...
function fa (line 2) | function fa(t,e,n){sa(n);var i=O_(t),r=ca(i.componentMainType,i.componen...
function da (line 2) | function da(t,e){if(Sa(e)){var n=e.dataType,i=t.getData(n),r=or(i,e);M(r...
function ga (line 2) | function ga(t){var e=t.getAllData();v(e,function(e){var n=e.data,i=e.typ...
function va (line 2) | function va(t){var e=[];return t.eachSeries(function(t){var n=t.getAllDa...
function ya (line 2) | function ya(t,e,n){xa(t,!0),Xo(t,$o),ma(t,e,n)}
function ma (line 2) | function ma(t,e,n){var i=O_(t);null!=e?(i.focus=e,i.blurScope=n):i.focus...
function _a (line 2) | function _a(t,e,n,i){n=n||"itemStyle";for(var r=0;r<j_.length;r++){var o...
function xa (line 2) | function xa(t,e){var n=e===!1,i=t;t.highDownSilentOnTouch&&(i.__highDown...
function wa (line 2) | function wa(t){return!(!t||!t.__highDownDispatcher)}
function ba (line 2) | function ba(t){var e=L_[t];return null==e&&32>=R_&&(e=L_[t]=R_++),e}
function Sa (line 2) | function Sa(t){var e=t.type;return e===X_||e===Y_||e===Z_}
function Ma (line 2) | function Ma(t){var e=t.type;return e===G_||e===U_}
function Ta (line 2) | function Ta(t){var e=z_(t);e.normalFill=t.style.fill,e.normalStroke=t.st...
function Ca (line 2) | function Ca(t,e){if(e){var n,i,r,o,a,s,l=t.data,u=t.len(),h=$_.M,c=$_.C,...
function Ia (line 2) | function Ia(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}
function Da (line 2) | function Da(t,e){return(t[0]*e[0]+t[1]*e[1])/(Ia(t)*Ia(e))}
function ka (line 2) | function ka(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(Da(t,e))}
function Aa (line 2) | function Aa(t,e,n,i,r,o,a,s,l,u,h){var c=l*(rx/180),p=ix(c)*(t-n)/2+nx(c...
function Oa (line 2) | function Oa(t){var e=new r_;if(!t)return e;var n,i=0,r=0,o=i,a=r,s=r_.CM...
function Pa (line 2) | function Pa(t){return null!=t.setData}
function Ra (line 2) | function Ra(t,e){var n=Oa(t),i=h({},e);return i.buildPath=function(t){if...
function La (line 2) | function La(t,e){return new sx(Ra(t,e))}
function za (line 2) | function za(t,n){var i=Ra(t,n),r=function(t){function n(e){var n=t.call(...
function Ea (line 2) | function Ea(t,e){for(var n=[],i=t.length,r=0;i>r;r++){var o=t[r];n.push(...
function Ba (line 2) | 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;retur...
function Fa (line 2) | 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,...
function Na (line 2) | 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...
function Va (line 3) | function Va(t,e,n,i,r,o,a){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)...
function Ha (line 3) | function Ha(t,e){for(var n=t.length,i=[],r=0,o=1;n>o;o++)r+=ce(t[o-1],t[...
function Wa (line 3) | function Wa(t,e,n,i){var r,o,a,s,l=[],u=[],h=[],c=[];if(i){a=[1/0,1/0],s...
function Ga (line 3) | function Ga(t,e,n){var i=e.smooth,r=e.points;if(r&&r.length>=2){if(i&&"s...
function Ua (line 3) | function Ua(t,e,n){var i=t.cpx2,r=t.cpy2;return null===i||null===r?[(n?W...
function Xa (line 3) | function Xa(t,e,n,i,r){var o;if(e&&e.ecModel){var a=e.ecModel.getUpdateP...
function Ya (line 3) | function Ya(t,e,n,i,r,o,a){var s,l=!1;"function"==typeof r?(a=o,o=r,r=nu...
function Za (line 3) | function Za(t,e,n,i,r,o){Ya("update",t,e,n,i,r,o)}
function qa (line 3) | function qa(t,e,n,i,r,o){Ya("init",t,e,n,i,r,o)}
function ja (line 3) | function ja(t){if(!t.__zr)return!0;for(var e=0;e<t.animators.length;e++)...
function Ka (line 3) | function Ka(t,e,n,i,r,o){ja(t)||Ya("remove",t,e,n,i,r,o)}
function $a (line 3) | function $a(t,e,n,i){t.removeTextContent(),t.removeTextGuideLine(),Ka(t,...
function Ja (line 3) | function Ja(t,e,n){function i(){t.parent&&t.parent.remove(t)}t.isGroup?t...
function Qa (line 3) | function Qa(t){$x(t).oldStyle=t.style}
function ts (line 3) | function ts(t){return g_.extend(t)}
function es (line 3) | function es(t,e){return ew(t,e)}
function ns (line 3) | function ns(t,e){tw[t]=e}
function is (line 3) | function is(t){return tw.hasOwnProperty(t)?tw[t]:void 0}
function rs (line 3) | function rs(t,e,n,i){var r=La(t,e);return n&&("center"===i&&(n=as(n,r.ge...
function os (line 3) | function os(t,e,n){var i=new x_({style:{image:t,x:e.x,y:e.y,width:e.widt...
function as (line 3) | function as(t,e){var n,i=e.width/e.height,r=t.height*i;r<=t.width?n=t.he...
function ss (line 3) | function ss(t,e){if(t.applyTransform){var n=t.getBoundingRect(),i=n.calc...
function ls (line 3) | function ls(t,e){for(var n=Hn([]);t&&t!==e;)Gn(n,t.getLocalTransform(),n...
function us (line 3) | function us(t,e,n){return e&&!g(e)&&(e=yy.getLocalTransform(e)),n&&(e=Zn...
function hs (line 3) | function hs(t,e,n){var i=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/...
function cs (line 3) | function cs(t,e){return y(t,function(t){var n=t[0];n=Jx(n,e.x),n=Qx(n,e....
function ps (line 3) | function ps(t,e){var n=Jx(t.x,e.x),i=Qx(t.x+t.width,e.x+e.width),r=Jx(t....
function fs (line 3) | function fs(t,e,n){var i=h({rectHover:!0},e),r=i.style={strokeNoScale:!0...
function ds (line 3) | function ds(t){var e=t.itemTooltipOption,n=t.componentModel,i=t.itemName...
function gs (line 3) | function gs(t,e){for(var n=0;n<N_.length;n++){var i=N_[n],r=e[i],o=t.ens...
function vs (line 3) | function vs(t,e,n){var i,r=t.labelFetcher,o=t.labelDataIndex,a=t.labelDi...
function ys (line 3) | function ys(t,e,n,i){n=n||iw;for(var r=t instanceof D_,o=!1,a=0;a<V_.len...
function ms (line 3) | function ms(t,e){e=e||"label";for(var n={normal:t.getModel(e)},i=0;i<N_....
function _s (line 3) | function _s(t,e,n,i,r){var o={};return ws(o,t,n,i,r),e&&h(o,e),o}
function xs (line 3) | function xs(t,e,n){e=e||{};var i,r={},o=t.getShallow("rotate"),a=F(t.get...
function ws (line 3) | function ws(t,e,n,i,r){n=n||iw;var o,a=e.ecModel,s=a&&a.option.textStyle...
function bs (line 3) | function bs(t){for(var e;t&&t!==t.ecModel;){var n=(t.option||iw).rich;if...
function Ss (line 3) | function Ss(t,e,n,i,r,o,a,s){n=!r&&n||iw;var l=i&&i.inheritColor,u=e.get...
function Ms (line 3) | function Ms(t,e){var n=e&&e.getModel("textStyle");return G([t.fontStyle|...
function Ts (line 3) | function Ts(t,e,n,i){if(t){var r=sw(t);r.prevValue=r.value,r.value=n;var...
function Cs (line 3) | function Cs(t,e,n,i,r){function o(i){var o=pr(n,a.precision,l,u,i);a.int...
function Is (line 3) | function Is(t){return[t||"",mw++].join("_")}
function Ds (line 3) | function Ds(t){var e={};t.registerSubTypeDefaulter=function(t,n){var i=f...
function ks (line 3) | function ks(t,e){function n(t){var n={},o=[];return v(t,function(a){var ...
function As (line 3) | function As(t,e){return l(l({},t,!0),e,!0)}
function Os (line 3) | function Os(t,e){t=t.toUpperCase(),Tw[t]=new yw(e),Mw[t]=e}
function Ps (line 3) | function Ps(t){if(C(t)){var e=Mw[t.toUpperCase()]||{};return t===ww||t==...
function Rs (line 3) | function Rs(t){return Tw[t]}
function Ls (line 3) | function Ls(){return Tw[Sw]}
function zs (line 3) | function zs(t,e){return t+="","0000".substr(0,e-t.length)+t}
function Es (line 3) | function Es(t){switch(t){case"half-year":case"quarter":return"month";cas...
function Bs (line 3) | function Bs(t){return t===Es(t)}
function Fs (line 3) | function Fs(t){switch(t){case"year":case"month":return"day";case"millise...
function Ns (line 3) | function Ns(t,e,n,i){var r=ki(t),o=r[Gs(n)](),a=r[Us(n)]()+1,s=Math.floo...
function Vs (line 3) | function Vs(t,e,n,i,r){var o=null;if("string"==typeof n)o=n;else if("fun...
function Hs (line 3) | function Hs(t,e){var n=ki(t),i=n[Us(e)]()+1,r=n[Xs(e)](),o=n[Ys(e)](),a=...
function Ws (line 3) | function Ws(t,e,n){var i="number"==typeof t?ki(t):t;switch(e=e||Hs(t,n))...
function Gs (line 3) | function Gs(t){return t?"getUTCFullYear":"getFullYear"}
function Us (line 3) | function Us(t){return t?"getUTCMonth":"getMonth"}
function Xs (line 3) | function Xs(t){return t?"getUTCDate":"getDate"}
function Ys (line 3) | function Ys(t){return t?"getUTCHours":"getHours"}
function Zs (line 3) | function Zs(t){return t?"getUTCMinutes":"getMinutes"}
function qs (line 3) | function qs(t){return t?"getUTCSeconds":"getSeconds"}
function js (line 3) | function js(t){return t?"getUTCMilliseconds":"getMilliseconds"}
function Ks (line 3) | function Ks(t){return t?"setUTCFullYear":"setFullYear"}
function $s (line 3) | function $s(t){return t?"setUTCMonth":"setMonth"}
function Js (line 3) | function Js(t){return t?"setUTCDate":"setDate"}
function Qs (line 3) | function Qs(t){return t?"setUTCHours":"setHours"}
function tl (line 3) | function tl(t){return t?"setUTCMinutes":"setMinutes"}
function el (line 3) | function el(t){return t?"setUTCSeconds":"setSeconds"}
function nl (line 3) | function nl(t){return t?"setUTCMilliseconds":"setMilliseconds"}
function il (line 3) | function il(t,e,n,i,r,o,a,s){var l=new D_({style:{text:t,font:e,align:n,...
function rl (line 3) | function rl(t){if(!Ei(t))return C(t)?t:"-";var e=(t+"").split(".");retur...
function ol (line 3) | function ol(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function...
function al (line 3) | function al(t){return null==t?"":(t+"").replace(Fw,function(t,e){return ...
function sl (line 3) | function sl(t,e,n){M(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r...
function ll (line 3) | function ll(t,e){var n=C(t)?{color:t,extraCssText:e}:t||{},i=n.color,r=n...
function ul (line 3) | function ul(t,e,n){("week"===t||"month"===t||"quarter"===t||"half-year"=...
function hl (line 3) | function hl(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}
function cl (line 3) | function cl(t,e){return e=e||"transparent",C(t)?t:k(t)?t.colorStops&&(t....
function pl (line 3) | function pl(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.ope...
function fl (line 3) | function fl(t,e,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var...
function dl (line 3) | function dl(t,e,n){n=Bw(n||0);var i=e.width,r=e.height,o=_i(t.left,i),a=...
function gl (line 3) | function gl(t){var e=t.layoutMode||t.constructor.layoutMode;return k(e)?...
function vl (line 3) | function vl(t,e,n){function i(n,i){var a={},l=0,u={},h=0,c=2;if(Ww(n,fun...
function yl (line 3) | function yl(t){return ml({},t)}
function ml (line 3) | function ml(t,e){return e&&t&&Ww(Gw,function(n){e.hasOwnProperty(n)&&(t[...
function _l (line 3) | function _l(t){var e=[];return v(Zw.getClassesByMainType(t),function(t){...
function xl (line 3) | function xl(t){ub(t).datasetMap=Y()}
function wl (line 3) | function wl(t,e,n){function i(t,e,n){for(var i=0;n>i;i++)t.push(e+i)}fun...
function bl (line 3) | function bl(t){var e=t.get("data",!0);return e?void 0:ur(t.ecModel,"data...
function Sl (line 3) | function Sl(t){return t.get("transform",!0)||t.get("fromTransformResult"...
function Ml (line 3) | function Ml(t,e){return Tl(t.data,t.sourceFormat,t.seriesLayoutBy,t.dime...
function Tl (line 3) | function Tl(t,e,n,i,r,o){function a(t){var e=C(t);return null!=t&&isFini...
function Cl (line 3) | function Cl(t,e,n){var i=hb.get(e);if(!i)return n;var r=i(t);return r?n....
function Il (line 3) | function Il(t,e){for(var n=t.length,i=0;n>i;i++)if(t[i].length>e)return ...
function Dl (line 3) | function Dl(t,e,n,i,r,o,a){o=o||t;var s=e(o),l=s.paletteIdx||0,u=s.palet...
function kl (line 3) | function kl(t,e){e(t).paletteIdx=0,e(t).paletteNameMap={}}
function Al (line 3) | function Al(t,e){if(e){var n=e.seriesIndex,i=e.seriesId,r=e.seriesName;r...
function Ol (line 3) | function Ol(t,e){var n=t.color&&!t.colorLayer;v(e,function(e,i){"colorLa...
function Pl (line 3) | function Pl(t,e,n){if(M(e)){var i=Y();return v(e,function(t){if(null!=t)...
function Rl (line 3) | function Rl(t,e){return e.hasOwnProperty("subType")?_(t,function(t){retu...
function Ll (line 3) | function Ll(t){var e=Y();return t&&v(Hi(t.replaceMerge),function(t){e.se...
function zl (line 3) | function zl(t,e,n){function i(t){v(e,function(e){e(t,n)})}var r,o,a=[],s...
function El (line 3) | function El(t,e,n){var i={width:e,height:n,aspectratio:e/n},r=!0;return ...
function Bl (line 3) | function Bl(t,e,n){return"min"===n?t>=e:"max"===n?e>=t:t===e}
function Fl (line 3) | function Fl(t,e){return t.join(",")===e.join(",")}
function Nl (line 3) | function Nl(t){var e=t&&t.itemStyle;if(e)for(var n=0,i=Ab.length;i>n;n++...
function Vl (line 3) | function Vl(t,e,n){if(t&&t[e]&&(t[e].normal||t[e].emphasis)){var i=t[e]....
function Hl (line 3) | function Hl(t){Vl(t,"itemStyle"),Vl(t,"lineStyle"),Vl(t,"areaStyle"),Vl(...
function Wl (line 3) | function Wl(t,e){var n=kb(t)&&t[e],i=kb(n)&&n.textStyle;if(i)for(var r=0...
function Gl (line 3) | function Gl(t){t&&(Hl(t),Wl(t,"label"),t.emphasis&&Wl(t.emphasis,"label"))}
function Ul (line 3) | function Ul(t){if(kb(t)){Nl(t),Hl(t),Wl(t,"label"),Wl(t,"upperLabel"),Wl...
function Xl (line 3) | function Xl(t){return M(t)?t:t?[t]:[]}
function Yl (line 3) | function Yl(t){return(M(t)?t[0]:t)||{}}
function Zl (line 3) | function Zl(t,e){Db(Xl(t.series),function(t){kb(t)&&Ul(t)});var n=["xAxi...
function ql (line 3) | function ql(t,e){for(var n=e.split(","),i=t,r=0;r<n.length&&(i=i&&i[n[r]...
function jl (line 3) | function jl(t,e,n,i){for(var r,o=e.split(","),a=t,s=0;s<o.length-1;s++)r...
function Kl (line 3) | function Kl(t){t&&v(Ob,function(e){e[0]in t&&!(e[1]in t)&&(t[e[1]]=t[e[0...
function $l (line 3) | function $l(t){var e=t&&t.itemStyle;if(e)for(var n=0;n<Rb.length;n++){va...
function Jl (line 3) | function Jl(t){t&&"edge"===t.alignTo&&null!=t.margin&&null==t.edgeDistan...
function Ql (line 3) | function Ql(t){t&&t.downplay&&!t.blur&&(t.blur=t.downplay)}
function tu (line 3) | function tu(t){t&&null!=t.focusNodeAdjacency&&(t.emphasis=t.emphasis||{}...
function eu (line 3) | function eu(t,e){if(t)for(var n=0;n<t.length;n++)e(t[n]),t[n]&&eu(t[n].c...
function nu (line 3) | function nu(t,e){Zl(t,e),t.series=Hi(t.series),v(t.series,function(t){if...
function iu (line 3) | function iu(t){var e=Y();t.eachSeries(function(t){var n=t.get("stack");i...
function ru (line 3) | function ru(t){v(t,function(e,n){var i=[],r=[0/0,0/0],o=[e.stackResultDi...
function ou (line 3) | function ou(t){return t instanceof Lb}
function au (line 3) | function au(t,e,n){n=n||uu(t);var i=e.seriesLayoutBy,r=hu(t,n,i,e.source...
function su (line 3) | function su(t){return new Lb({data:t,sourceFormat:O(t)?rb:tb})}
function lu (line 3) | function lu(t){return new Lb({data:t.data,sourceFormat:t.sourceFormat,se...
function uu (line 3) | function uu(t){var e=ob;if(O(t))e=rb;else if(M(t)){0===t.length&&(e=eb);...
function hu (line 3) | function hu(t,e,n,i,r){var o,a;if(!t)return{dimensionsDefine:pu(r),start...
function cu (line 3) | function cu(t){for(var e,n=0;n<t.length&&!(e=t[n++]););if(e){var i=[];re...
function pu (line 3) | function pu(t){if(t){var e=Y();return y(t,function(t){t=k(t)?t:{name:t};...
function fu (line 3) | function fu(t,e,n,i){if(e===sb)for(var r=0;r<n.length&&i>r;r++)t(n[r]?n[...
function du (line 4) | function du(t){var e=t.sourceFormat;return e===nb||e===ib}
function gu (line 4) | function gu(t,e){var n=Bb[mu(t,e)];return n}
function vu (line 4) | function vu(t,e){var n=Nb[mu(t,e)];return n}
function yu (line 4) | function yu(t){var e=Hb[t];return e}
function mu (line 4) | function mu(t,e){return t===eb?t+"_"+e:t}
function _u (line 4) | function _u(t,e,n){if(t){var i=t.getRawDataItem(e);if(null!=i){var r=t.g...
function xu (line 4) | function xu(t){return new Ub(t)}
function wu (line 4) | function wu(t,e){var n=e&&e.type;return"ordinal"===n?t:("time"===n&&"num...
function bu (line 4) | function bu(t,e){var n=new Zb,i=t.data,r=n.sourceFormat=t.sourceFormat,o...
function Su (line 4) | function Su(t){var e=t.sourceFormat;if(!Au(e)){var n="";Vi(n)}return t.d...
function Mu (line 4) | function Mu(t){var e=t.sourceFormat,n=t.data;if(!Au(e)){var i="";Vi(i)}i...
function Tu (line 4) | function Tu(t,e,n){return null!=n?"number"==typeof n||!isNaN(n)&&!j(e,n)...
function Cu (line 4) | function Cu(t){return s(t)}
function Iu (line 4) | function Iu(t){t=s(t);var e=t.type,n="";e||Vi(n);var i=e.split(":");2!==...
function Du (line 4) | function Du(t,e,n){var i=Hi(t),r=i.length,o="";r||Vi(o);for(var a=0,s=r;...
function ku (line 4) | function ku(t,e){var n="";e.length||Vi(n),k(t)||Vi(n);var i=t.type,r=qb....
function Au (line 4) | function Au(t){return t===eb||t===nb}
function Ou (line 4) | function Ou(t){return t>65535?Kb:$b}
function Pu (line 4) | function Pu(){return[1/0,-1/0]}
function Ru (line 4) | function Ru(t){var e=t.constructor;return e===Array?t.slice():new e(t)}
function Lu (line 4) | function Lu(t,e,n,i,r){var o=tS[n||"float"];if(r){var a=t[e],s=a&&a.leng...
function zu (line 4) | function zu(t){var e=t.option.transform;e&&U(t.option.transform)}
function Eu (line 4) | function Eu(t){return"series"===t.mainType}
function Bu (line 4) | function Bu(t){throw new Error(t)}
function Fu (line 4) | function Fu(t,e){return e.type=t,e}
function Nu (line 4) | function Nu(t,e){var n=t.getData().getItemVisual(e,"style"),i=n[t.visual...
function Vu (line 4) | function Vu(t){var e,n,i,r,o=t.series,a=t.dataIndex,s=t.multipleSeries,l...
function Hu (line 4) | function Hu(t,e,n,i,r){function o(t,e){var n=a.getDimensionInfo(e);n&&n....
function Wu (line 4) | function Wu(t,e){return t.getName(e)||t.getId(e)}
function Gu (line 4) | function Gu(t){var e=t.name;er(t)||(t.name=Uu(t)||e)}
function Uu (line 4) | function Uu(t){var e=t.getRawData(),n=e.mapDimensionsAll("seriesName"),i...
function Xu (line 4) | function Xu(t){return t.model.getRawData().count()}
function Yu (line 4) | function Yu(t){var e=t.model;return e.setData(e.getRawData().cloneShallo...
function Zu (line 4) | function Zu(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRa...
function qu (line 4) | function qu(t,e){v(Z(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),function(...
function ju (line 4) | function ju(t,e){var n=Ku(t);return n&&n.setOutputEnd((e||this).count()),e}
function Ku (line 4) | function Ku(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid)...
function $u (line 4) | function $u(){var t=ar();return function(e){var n=t(e),i=e.pipelineConte...
function Ju (line 4) | function Ju(t,e,n){t&&("emphasis"===e?ta:ea)(t,n)}
function Qu (line 4) | function Qu(t,e,n){var i=or(t,e),r=e&&null!=e.highlightKey?ba(e.highligh...
function th (line 4) | function th(t){return lS(t.model)}
function eh (line 4) | function eh(t){var e=t.model,n=t.ecModel,i=t.api,r=t.payload,o=e.pipelin...
function nh (line 4) | function nh(t,e,n){function i(){h=(new Date).getTime(),c=null,t.apply(a,...
function ih (line 4) | function ih(t,e,n,i){var r=t[e];if(r){var o=r[pS]||r,a=r[dS],s=r[fS];if(...
function rh (line 4) | function rh(t,e){var n=t[e];n&&n[pS]&&(t[e]=n[pS])}
function oh (line 4) | function oh(t,e){var n=t.visualStyleMapper||vS[e];return n?n:(console.wa...
function ah (line 4) | function ah(t,e){var n=t.visualDrawType||yS[e];return n?n:(console.warn(...
function sh (line 4) | function sh(t,e){e=e||{},c(e,{text:"loading",textColor:"#000",fontSize:1...
function lh (line 4) | function lh(t){t.overallReset(t.ecModel,t.api,t.payload)}
function uh (line 4) | function uh(t){return t.overallProgress&&hh}
function hh (line 4) | function hh(){this.agent.dirty(),this.getDownstream().dirty()}
function ch (line 4) | function ch(){this.agent&&this.agent.dirty()}
function ph (line 4) | function ph(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):n...
function fh (line 4) | function fh(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDe...
function dh (line 4) | function dh(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(...
function gh (line 4) | function gh(t){return t.data.count()}
function vh (line 4) | function vh(t){hS=null;try{t(TS,CS)}catch(e){}return hS}
function yh (line 4) | function yh(t,e){for(var n in e.prototype)t[n]=K}
function mh (line 4) | function mh(t,e,n){switch(n){case"color":var i=t.getItemVisual(e,"style"...
function _h (line 4) | function _h(t,e){switch(e){case"color":var n=t.getVisual("style");return...
function xh (line 4) | function xh(t,e,n,i,r){var o=t+e;n.isSilent(o)||i.eachComponent({mainTyp...
function wh (line 4) | function wh(t,e,n){t.on("selectchanged",function(t){var i=n.getModel();t...
function bh (line 4) | function bh(t,e,n){for(var i;t&&(!e(t)||(i=t,!n));)t=t.__hostTarget||t.p...
function Sh (line 4) | function Sh(t,e){if("image"!==this.type){var n=this.style;this.__isEmpty...
function Mh (line 4) | function Mh(t,e,n,i,r,o,a){var s=0===t.indexOf("empty");s&&(t=t.substr(5...
function Th (line 4) | function Th(t,e,n){var i=null==e.x?0:e.x,r=null==e.x2?1:e.x2,o=null==e.y...
function Ch (line 4) | function Ch(t,e,n){var i=n.width,r=n.height,o=Math.min(i,r),a=null==e.x?...
function Ih (line 4) | function Ih(t,e,n){for(var i="radial"===e.type?Ch(t,e,n):Th(t,e,n),r=e.c...
function Dh (line 4) | function Dh(t,e){if(t===e||!t&&!e)return!1;if(!t||!e||t.length!==e.lengt...
function kh (line 4) | function kh(t,e){return t&&"solid"!==t&&e>0?(e=e||1,"dashed"===t?[4*e,2*...
function Ah (line 4) | function Ah(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth...
function Oh (line 4) | function Oh(t){return"string"==typeof t&&"none"!==t}
function Ph (line 4) | function Ph(t){var e=t.fill;return null!=e&&"none"!==e}
function Rh (line 4) | function Rh(t,e){if(null!=e.fillOpacity&&1!==e.fillOpacity){var n=t.glob...
function Lh (line 4) | function Lh(t,e){if(null!=e.strokeOpacity&&1!==e.strokeOpacity){var n=t....
function zh (line 4) | function zh(t,e,n){var i=Tr(e.image,e.__image,n);if(Ir(i)){var r=t.creat...
function Eh (line 4) | function Eh(t,e,n,i){var r=Ah(n),o=Ph(n),a=n.strokePercent,s=1>a,l=!e.pa...
function Bh (line 4) | function Bh(t,e,n){var i=e.__image=Tr(n.image,e.__image,e,e.onload);if(i...
function Fh (line 4) | function Fh(t,e,n){var i=n.text;if(null!=i&&(i+=""),i){t.font=n.font||Ay...
function Nh (line 4) | function Nh(t,e,n,i,r){var o=!1;if(!i&&(n=n||{},e===n))return!1;if(i||e....
function Vh (line 4) | function Vh(t,e,n,i,r){var o=Zh(e,r.inHover),a=i?null:n&&Zh(n,r.inHover)...
function Hh (line 4) | function Hh(t,e,n,i,r){return Nh(t,Zh(e,r.inHover),n&&Zh(n,r.inHover),i,r)}
function Wh (line 4) | function Wh(t,e){var n=e.transform,i=t.dpr||1;n?t.setTransform(i*n[0],i*...
function Gh (line 4) | function Gh(t,e,n){for(var i=!1,r=0;r<t.length;r++){var o=t[r];i=i||o.is...
function Uh (line 4) | function Uh(t,e){return t&&e?t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]...
function Xh (line 4) | function Xh(t){var e=Ph(t),n=Ah(t);return!(t.lineDash||!(+e^+n)||e&&"str...
function Yh (line 4) | function Yh(t,e){e.batchFill&&t.fill(),e.batchStroke&&t.stroke(),e.batch...
function Zh (line 4) | function Zh(t,e){return e?t.__hoverStyle||t.style:t.style}
function qh (line 4) | function qh(t,e){jh(t,e,{inHover:!1,viewWidth:0,viewHeight:0},!0)}
function jh (line 4) | function jh(t,e,n,i){var r=e.transform;if(!e.shouldBePainted(n.viewWidth...
function Kh (line 4) | function Kh(t,e,n){var i=e.getDisplayables(),r=e.getTemporalDisplayables...
function $h (line 4) | function $h(t,e){function n(t){function e(){for(var t=1,e=0,n=m.length;n...
function Jh (line 4) | function Jh(t){if(!t||0===t.length)return[["rect"]];if("string"==typeof ...
function Qh (line 4) | function Qh(t){if(!t||0===t.length)return[[0,0]];if("number"==typeof t){...
function tc (line 4) | function tc(t){if(!t||"object"==typeof t&&0===t.length)return[0,0];if("n...
function ec (line 4) | function ec(t){return y(t,function(t){return nc(t)})}
function nc (line 4) | function nc(t){for(var e=0,n=0;n<t.length;++n)e+=t[n];return t.length%2=...
function ic (line 4) | function ic(t,e){t.eachRawSeries(function(n){if(!t.isSeriesFiltered(n)){...
function rc (line 4) | function rc(t){if(C(t)){var e=new DOMParser;t=e.parseFromString(t,"text/...
function oc (line 4) | function oc(t,e){var n=t.getAttribute("gradientUnits");"userSpaceOnUse"=...
function ac (line 4) | function ac(t,e){for(var n=t.firstChild;n;){if(1===n.nodeType&&"stop"===...
function sc (line 4) | function sc(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheri...
function lc (line 4) | function lc(t){for(var e=fc(t),n=[],i=0;i<e.length;i+=2){var r=parseFloa...
function uc (line 4) | function uc(t,e,n,i,r){var o=e,a=o.__inheritedStyle=o.__inheritedStyle||...
function hc (line 4) | function hc(t,e){var n=e.__selfStyle;if(n){var i=n.textBaseline,r=i;i&&"...
function cc (line 4) | function cc(t,e,n,i){var r=n&&n.match(cM);if(r){var o=G(r[1]);return voi...
function pc (line 4) | function pc(t,e){for(var n=0;n<e.length;n++){var i=e[n];i[0].style[i[1]]...
function fc (line 4) | function fc(t){return t.match(pM)||[]}
function dc (line 4) | function dc(t,e){var n=t.getAttribute("transform");if(n){n=n.replace(/,/...
function gc (line 4) | function gc(t,e,n){var i=t.getAttribute("style");if(i){gM.lastIndex=0;fo...
function vc (line 4) | function vc(t,e,n){for(var i=0;i<aM.length;i++){var r=aM[i],o=t.getAttri...
function yc (line 4) | function yc(t,e){var n=e.width/t.width,i=e.height/t.height,r=Math.min(n,...
function mc (line 4) | function mc(t,e){var n=new uM;return n.parse(t,e)}
function _c (line 4) | function _c(t,e){return Math.abs(t-e)<vM}
function xc (line 4) | function xc(t,e,n){var i=0,r=t[0];if(!r)return!1;for(var o=1;o<t.length;...
function wc (line 4) | function wc(t){t.silent=!1,t.isGroup&&t.traverse(function(t){t.silent=!1})}
function bc (line 4) | function bc(t){var e=[],n=Y();return v(t,function(t){if(null==t.namedFro...
function Sc (line 4) | function Sc(t){if(!t.UTF8Encoding)return t;var e=t,n=e.UTF8Scale;null==n...
function Mc (line 4) | function Mc(t,e,n){for(var i=[],r=e[0],o=e[1],a=0;a<t.length;a+=2){var s...
function Tc (line 4) | function Tc(t,e){return t=Sc(t),y(_(t.features,function(t){return t.geom...
function Cc (line 4) | function Cc(t,e){if("china"===t){for(var n=0;n<e.length;n++)if(e[n].name...
function Ic (line 4) | function Ic(t,e){if("china"===t){var n=DM[e.name];if(n){var i=e.getCente...
function Dc (line 4) | function Dc(t,e){if("world"===t){var n=kM[e.name];if(n){var i=[n[0],n[1]...
function kc (line 4) | function kc(t,e){"china"===t&&"台湾"===e.name&&e.geometries.push({type:"po...
function Ac (line 4) | function Ac(t){for(var e,n=0;n<t.length;n++){var i=t[n].getBoundingRect(...
function Oc (line 4) | function Oc(t){return C(t)?"undefined"!=typeof JSON&&JSON.parse?JSON.par...
function Pc (line 4) | function Pc(t){return function(){for(var e=[],n=0;n<arguments.length;n++...
function Rc (line 4) | function Rc(t){return function(){for(var e=[],n=0;n<arguments.length;n++...
function Lc (line 4) | function Lc(t,e,n){return n[0]=n[0]&&n[0].toLowerCase(),sv.prototype[e]....
function zc (line 4) | function zc(t,e,n){var i=Nc(t);if(i)return i;var r=new OT(t,e,n);return ...
function Ec (line 4) | function Ec(t){if(M(t)){var e=t;t=null,v(e,function(e){null!=e.group&&(t...
function Bc (line 4) | function Bc(t){WT[t]=!1}
function Fc (line 4) | function Fc(t){"string"==typeof t?t=HT[t]:t instanceof OT||(t=Nc(t)),t i...
function Nc (line 4) | function Nc(t){return HT[cr(t,XT)]}
function Vc (line 4) | function Vc(t){return HT[t]}
function Hc (line 4) | function Hc(t,e){NT[t]=e}
function Wc (line 4) | function Wc(t){p(BT,t)<0&&BT.push(t)}
function Gc (line 4) | function Gc(t,e){Jc(ET,t,e,GM)}
function Uc (line 4) | function Uc(t){Yc("afterinit",t)}
function Xc (line 4) | function Xc(t){Yc("afterupdate",t)}
function Yc (line 4) | function Yc(t,e){zM.on(t,e)}
function Zc (line 4) | function Zc(t,e,n){"function"==typeof e&&(n=e,e="");var i=k(t)?t.type:[t...
function qc (line 4) | function qc(t
Condensed preview — 111 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,121K chars).
[
{
"path": ".eslintrc.js",
"chars": 587,
"preview": "/*\n * Eslint config file\n * Documentation: https://eslint.org/docs/user-guide/configuring/\n * Install the Eslint extensi"
},
{
"path": "LICENSE",
"chars": 1067,
"preview": "MIT License\n\nCopyright (c) 2022 Mint-green\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "README.md",
"chars": 3317,
"preview": "# 学不会单词\n\n一个背单词小程序\n\n\n\n\n### 词汇数据来源\n[ECDICT](https://github.com/skywind3000/ECDICT)\n\n\n\n### 简介\n这是一个背单词小程序,是仿**不背单词**App做的(因为"
},
{
"path": "cloudfunctions/statisticRouter/config.json",
"chars": 49,
"preview": "{\n \"permissions\": {\n \"openapi\": [\n ]\n }\n}"
},
{
"path": "cloudfunctions/statisticRouter/index.js",
"chars": 28265,
"preview": "// 云函数入口文件\nconst cloud = require('wx-server-sdk')\nconst TcbRouter = require('tcb-router') // 导入小程序路由\n\nconst rescontent ="
},
{
"path": "cloudfunctions/statisticRouter/package.json",
"chars": 325,
"preview": "{\n \"name\": \"statisticRouter\",\n \"version\": \"1.0.0\",\n \"description\": \"\",\n \"main\": \"index.js\",\n \"scripts\": {"
},
{
"path": "cloudfunctions/statisticRouter/utils/response_content.js",
"chars": 881,
"preview": "const SUCCESS = { errorcode: 100, errormsg: \"success\" } //成功\nconst LOGINOK = { errorcode: 1, "
},
{
"path": "cloudfunctions/userRouter/config.json",
"chars": 49,
"preview": "{\n \"permissions\": {\n \"openapi\": [\n ]\n }\n}"
},
{
"path": "cloudfunctions/userRouter/index.js",
"chars": 13823,
"preview": "// 云函数入口文件\nconst cloud = require('wx-server-sdk')\nconst TcbRouter = require('tcb-router') // 导入小程序路由\nconst rescontent = "
},
{
"path": "cloudfunctions/userRouter/package.json",
"chars": 321,
"preview": "{\n \"name\": \"userRouter\",\n \"version\": \"1.0.0\",\n \"description\": \"\",\n \"main\": \"index.js\",\n \"scripts\": {\n "
},
{
"path": "cloudfunctions/userRouter/utils/default_avatar_pic.js",
"chars": 325,
"preview": "module.exports = [\n 'https://pic2.zhimg.com/50/v2-34395fd10798f4b5bad583d61f98c849_hd.jpg?source=1940ef5c',\n 'http"
},
{
"path": "cloudfunctions/userRouter/utils/init_of_matrix.js",
"chars": 277,
"preview": "\nmodule.exports = {\n '1.3': [5],\n '1.4': [5],\n '1.5': [5],\n '1.6': [5],\n '1.7': [5],\n '1.8': [5],\n "
},
{
"path": "cloudfunctions/userRouter/utils/response_content.js",
"chars": 881,
"preview": "const SUCCESS = { errorcode: 100, errormsg: \"success\" } //成功\nconst LOGINOK = { errorcode: 1, "
},
{
"path": "cloudfunctions/wordRouter/config.json",
"chars": 49,
"preview": "{\n \"permissions\": {\n \"openapi\": [\n ]\n }\n}"
},
{
"path": "cloudfunctions/wordRouter/index.js",
"chars": 43486,
"preview": "// 云函数入口文件\nconst cloud = require('wx-server-sdk')\nconst TcbRouter = require('tcb-router') // 导入小程序路由\n// const request = "
},
{
"path": "cloudfunctions/wordRouter/package.json",
"chars": 348,
"preview": "{\n \"name\": \"wordRouter\",\n \"version\": \"1.0.0\",\n \"description\": \"\",\n \"main\": \"index.js\",\n \"scripts\": {\n "
},
{
"path": "cloudfunctions/wordRouter/utils/format_time.js",
"chars": 1080,
"preview": "// 传入时间的毫秒数(date.getTime())获取时间详情\n\nconst formatTime = (time) => {\n var date = new Date(time)\n var y = date.getFull"
},
{
"path": "cloudfunctions/wordRouter/utils/get_all_sort_list.js",
"chars": 1378,
"preview": "/**\n * \n * @param {*} source 源数组\n * @param {*} count 要取出多少项\n * @param {*} isPermutation 是否使用排列的方式\n * @return {any[]} 所有排"
},
{
"path": "cloudfunctions/wordRouter/utils/response_content.js",
"chars": 881,
"preview": "const SUCCESS = { errorcode: 100, errormsg: \"success\" } //成功\nconst LOGINOK = { errorcode: 1, "
},
{
"path": "cloudfunctions/wordRouter/utils/sm-5.js",
"chars": 6428,
"preview": "// SM-5算法\n// 计算下一个最优间隔的同时更新OF矩阵,从而单词在学习的时候不是一个个体,而是\n\n// 用于生成最佳区间的随机散布 NOI--near-optimal intervals\n// -------------------"
},
{
"path": "miniprogram/app.js",
"chars": 3442,
"preview": "// app.js\nconst rescontent = require('./utils/response_content.js')\nconst { formatTime } = require('./utils/format_time."
},
{
"path": "miniprogram/app.json",
"chars": 1711,
"preview": "{\n \"pages\": [\n \"pages/index/index\",\n \"pages/user/user\",\n \"pages/overview/overview\",\n \"pag"
},
{
"path": "miniprogram/app.wxss",
"chars": 424,
"preview": "/**app.wxss**/\n\n@import './static/iconfont.wxss';\n@import './static/color.wxss';\n\n.container {\n display: flex;\n flex-d"
},
{
"path": "miniprogram/components/cloudTipModal/index.js",
"chars": 699,
"preview": "// miniprogram/components/cloudTipModal/index.js\nconst { isMac } = require('../../envList.js');\n\nComponent({\n\n /**\n *"
},
{
"path": "miniprogram/components/cloudTipModal/index.json",
"chars": 48,
"preview": "{\n \"usingComponents\": {},\n \"component\": true\n}"
},
{
"path": "miniprogram/components/cloudTipModal/index.wxml",
"chars": 571,
"preview": "<!--miniprogram/components/cloudTipModal/index.wxml-->\n<view class=\"install_tip\" wx:if=\"{{showUploadTip}}\">\n <view clas"
},
{
"path": "miniprogram/components/cloudTipModal/index.wxss",
"chars": 921,
"preview": ".install_tip_back {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(0,0,0,0.4)"
},
{
"path": "miniprogram/components/ec-canvas/ec-canvas.js",
"chars": 6976,
"preview": "import WxCanvas from './wx-canvas';\nimport * as echarts from './echarts';\n// import * as echarts from './echartsForBar';"
},
{
"path": "miniprogram/components/ec-canvas/ec-canvas.json",
"chars": 48,
"preview": "{\n \"component\": true,\n \"usingComponents\": {}\n}"
},
{
"path": "miniprogram/components/ec-canvas/ec-canvas.wxml",
"chars": 577,
"preview": "<!-- 新的:接口对其了H5 -->\n<canvas wx:if=\"{{isUseNewCanvas}}\" type=\"2d\" class=\"ec-canvas\" canvas-id=\"{{ canvasId }}\" bindinit=\""
},
{
"path": "miniprogram/components/ec-canvas/ec-canvas.wxss",
"chars": 46,
"preview": ".ec-canvas {\n width: 100%;\n height: 100%;\n}\n"
},
{
"path": "miniprogram/components/ec-canvas/echarts.js",
"chars": 986959,
"preview": "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTI"
},
{
"path": "miniprogram/components/ec-canvas/echartsForBar.js",
"chars": 472818,
"preview": "!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?def"
},
{
"path": "miniprogram/components/ec-canvas/wx-canvas.js",
"chars": 2083,
"preview": "export default class WxCanvas {\n constructor(ctx, canvasId, isNew, canvasNode) {\n this.ctx = ctx;\n this.canvasId "
},
{
"path": "miniprogram/components/image-cropper/image-cropper.js",
"chars": 45951,
"preview": "Component({\n properties: {\n /** \n * 图片路径\n */\n 'imgSrc': {\n type: String\n"
},
{
"path": "miniprogram/components/image-cropper/image-cropper.json",
"chars": 22,
"preview": "{\n\t\"component\": true\n}"
},
{
"path": "miniprogram/components/image-cropper/image-cropper.wxml",
"chars": 2402,
"preview": "<view class='image-cropper' catchtouchmove='_preventTouchMove'>\n <view class='main' bindtouchend=\"_cutTouchEnd\" bindt"
},
{
"path": "miniprogram/components/image-cropper/image-cropper.wxss",
"chars": 2414,
"preview": ".image-cropper {\n background: rgba(14, 13, 13, .8);\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n "
},
{
"path": "miniprogram/components/mp-progress/mp-progress.js",
"chars": 3511,
"preview": "// import MpProgress from \"../progress.min.js\";\nimport MpProgress from \"./progress.js\";\n\nComponent({\n options: {\n "
},
{
"path": "miniprogram/components/mp-progress/mp-progress.json",
"chars": 52,
"preview": "{\n \"component\": true,\n \"usingComponents\": {}\n}"
},
{
"path": "miniprogram/components/mp-progress/mp-progress.wxml",
"chars": 214,
"preview": "<canvas class=\"mp-progress\" type=\"2d\" id=\"{{canvasId}}\" wx:if=\"{{customOptions.canvasSize.width}}\"\n style=\"width: {{c"
},
{
"path": "miniprogram/components/mp-progress/progress.js",
"chars": 21046,
"preview": "/*! mp-progress.js v1.2.13 https://www.npmjs.com/package/mp-progress */\n(function webpackUniversalModuleDefinition(root,"
},
{
"path": "miniprogram/envList.js",
"chars": 133,
"preview": "const envList = [{\"envId\":\"music-cloud-1v7x1\",\"alias\":\"music-cloud\"}]\nconst isMac = false\nmodule.exports = {\n envList"
},
{
"path": "miniprogram/lib/runtime/runtime.js",
"chars": 23225,
"preview": "/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
},
{
"path": "miniprogram/lib/sm-5.js",
"chars": 6426,
"preview": "// SM-5算法\n// 计算下一个最优间隔的同时更新OF矩阵,从而单词在学习的时候不是一个个体,而是\n\n// 用于生成最佳区间的随机散布 NOI--near-optimal intervals\n// -------------------"
},
{
"path": "miniprogram/pages/image_cropper/image_cropper.js",
"chars": 4934,
"preview": "//获取应用实例\nconst app = getApp()\nimport regeneratorRuntime, { async } from '../../lib/runtime/runtime';\nconst userApi = req"
},
{
"path": "miniprogram/pages/image_cropper/image_cropper.json",
"chars": 275,
"preview": "{\n \"navigationBarTitleText\": \"裁切头像\",\n \"disableScroll\": true,\n \"navigationBarBackgroundColor\": \"#292929\",\n \"navigatio"
},
{
"path": "miniprogram/pages/image_cropper/image_cropper.less",
"chars": 1154,
"preview": "/* pages/image_cropper/image_cropper.wxss */\n// .top {\n// position: absolute;\n// width: 100%;\n// top: 10rpx;"
},
{
"path": "miniprogram/pages/image_cropper/image_cropper.wxml",
"chars": 776,
"preview": "<!--pages/image_cropper/image_cropper.wxml-->\n<view style=\"width:100%;height:500rpx;\">\n <image-cropper id=\"image-crop"
},
{
"path": "miniprogram/pages/image_cropper/image_cropper.wxss",
"chars": 751,
"preview": "/* pages/image_cropper/image_cropper.wxss */\n.hint {\n position: absolute;\n top: 10rpx;\n width: 100%;\n font-size: 33r"
},
{
"path": "miniprogram/pages/index/index.js",
"chars": 10333,
"preview": "// pages/index/index.js\nconst app = getApp()\nimport regeneratorRuntime, { async } from '../../lib/runtime/runtime';\ncons"
},
{
"path": "miniprogram/pages/index/index.json",
"chars": 27,
"preview": "{\n \"usingComponents\": {}\n}"
},
{
"path": "miniprogram/pages/index/index.less",
"chars": 6438,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -100;\n background-image: linear-"
},
{
"path": "miniprogram/pages/index/index.wxml",
"chars": 2481,
"preview": "<!--pages/index/index.wxml-->\n<view class=\"bgWrapper\"></view>\n\n<view class=\"wrapper\">\n <view class=\"searchBtn\" hover-"
},
{
"path": "miniprogram/pages/index/index.wxss",
"chars": 4400,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -100;\n background-image: linear-gradient(t"
},
{
"path": "miniprogram/pages/learning/learning.js",
"chars": 34519,
"preview": "// pages/learning/learning.js\nimport regeneratorRuntime, { async } from '../../lib/runtime/runtime';\nconst rescontent = "
},
{
"path": "miniprogram/pages/learning/learning.json",
"chars": 91,
"preview": "{\n \"usingComponents\": {\n \"mpProgress\": \"../../components/mp-progress/mp-progress\"\n }\n}"
},
{
"path": "miniprogram/pages/learning/learning.less",
"chars": 8445,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: fixed;\n z-index: -100;\n // background-image: linear-"
},
{
"path": "miniprogram/pages/learning/learning.wxml",
"chars": 6572,
"preview": "<!--pages/learning/learning.wxml-->\n\n<view class=\"bgWrapper bg-linear-{{colorType}}\"></view>\n\n<view class=\"topline\" wx:i"
},
{
"path": "miniprogram/pages/learning/learning.wxss",
"chars": 6581,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: fixed;\n z-index: -100;\n}\n.topline {\n width: 100%;\n height: 60"
},
{
"path": "miniprogram/pages/login/login.js",
"chars": 6756,
"preview": "//login.js\nconst app = getApp()\nimport regeneratorRuntime, { async } from '../../lib/runtime/runtime.js';\nconst { format"
},
{
"path": "miniprogram/pages/login/login.json",
"chars": 27,
"preview": "{\n \"usingComponents\": {}\n}"
},
{
"path": "miniprogram/pages/login/login.less",
"chars": 3197,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -100;\n background-image: linear-"
},
{
"path": "miniprogram/pages/login/login.wxml",
"chars": 1836,
"preview": "<!--login.wxml-->\n<view class=\"bgWrapper\" style=\"{{bgStyle}}\"></view>\n\n<view class=\"wrapper\" wx:if=\"{{!isregister}}\">\n "
},
{
"path": "miniprogram/pages/login/login.wxss",
"chars": 2606,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -100;\n background-image: linear-gradient(t"
},
{
"path": "miniprogram/pages/overview/overview.js",
"chars": 38330,
"preview": "// pages/overview/overview.js\nimport regeneratorRuntime, { async } from '../../lib/runtime/runtime';\nconst wordApi = req"
},
{
"path": "miniprogram/pages/overview/overview.json",
"chars": 148,
"preview": "{\n \"usingComponents\": {\n \"mpProgress\": \"../../components/mp-progress/mp-progress\",\n \"ec-canvas\": \"../../component"
},
{
"path": "miniprogram/pages/overview/overview.less",
"chars": 12293,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -100;\n // background-image: line"
},
{
"path": "miniprogram/pages/overview/overview.wxml",
"chars": 8006,
"preview": "<!--pages/overview/overview.wxml-->\n\n<view class=\"bgWrapper\"></view>\n\n<view class=\"contentWarpper\">\n <!-- <view class"
},
{
"path": "miniprogram/pages/overview/overview.wxss",
"chars": 8668,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -100;\n background-color: #f6f6f6;\n}\n.progr"
},
{
"path": "miniprogram/pages/review/review.js",
"chars": 29305,
"preview": "// pages/review/review.js\nimport regeneratorRuntime, { async } from '../../lib/runtime/runtime';\nconst rescontent = requ"
},
{
"path": "miniprogram/pages/review/review.json",
"chars": 91,
"preview": "{\n \"usingComponents\": {\n \"mpProgress\": \"../../components/mp-progress/mp-progress\"\n }\n}"
},
{
"path": "miniprogram/pages/review/review.less",
"chars": 9749,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: fixed;\n z-index: -100;\n // background-image: linear-"
},
{
"path": "miniprogram/pages/review/review.wxml",
"chars": 7526,
"preview": "<!--pages/review/review.wxml-->\n<!-- <view class=\"test11\">a3das321d2a1d23a1d</view> -->\n<view class=\"bgWrapper bg-linear"
},
{
"path": "miniprogram/pages/review/review.wxss",
"chars": 7653,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: fixed;\n z-index: -100;\n}\n.topline {\n width: 100%;\n height: 60"
},
{
"path": "miniprogram/pages/search/search.js",
"chars": 8217,
"preview": "// pages/search/search.js\nimport regeneratorRuntime, {\n async\n} from '../../lib/runtime/runtime';\nconst wordApi = req"
},
{
"path": "miniprogram/pages/search/search.json",
"chars": 27,
"preview": "{\n \"usingComponents\": {}\n}"
},
{
"path": "miniprogram/pages/search/search.less",
"chars": 4336,
"preview": ".searchWrapper {\n width: 100%;\n height: 100rpx;\n position: fixed;\n z-index: 8;\n display: flex;\n align-"
},
{
"path": "miniprogram/pages/search/search.wxml",
"chars": 2679,
"preview": "<!--pages/search/search.wxml-->\n\n<view class=\"searchWrapper\">\n <view class=\"searchIcon iconfont icon-search\"></view>\n"
},
{
"path": "miniprogram/pages/search/search.wxss",
"chars": 3403,
"preview": ".searchWrapper {\n width: 100%;\n height: 100rpx;\n position: fixed;\n z-index: 8;\n display: flex;\n align-items: cente"
},
{
"path": "miniprogram/pages/user/user.js",
"chars": 11280,
"preview": "// pages/user/user.js\nimport regeneratorRuntime, { async } from '../../lib/runtime/runtime';\n\nconst app = getApp()\nconst"
},
{
"path": "miniprogram/pages/user/user.json",
"chars": 27,
"preview": "{\n \"usingComponents\": {}\n}"
},
{
"path": "miniprogram/pages/user/user.less",
"chars": 3957,
"preview": ".header {\n width: 100%;\n height: 500rpx;\n display: flex;\n flex-direction: column;\n align-items: center;\n "
},
{
"path": "miniprogram/pages/user/user.wxml",
"chars": 2921,
"preview": "<!--pages/user/user.wxml-->\n\n<view class=\"header\">\n <view class=\"background\">\n <image class=\"bgImg\" src=\"{{use"
},
{
"path": "miniprogram/pages/user/user.wxss",
"chars": 2996,
"preview": ".header {\n width: 100%;\n height: 500rpx;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-c"
},
{
"path": "miniprogram/pages/user_settings/user_settings.js",
"chars": 14347,
"preview": "// pages/user_settings/user_settings.js\nimport regeneratorRuntime, { async } from '../../lib/runtime/runtime';\nconst wor"
},
{
"path": "miniprogram/pages/user_settings/user_settings.json",
"chars": 27,
"preview": "{\n \"usingComponents\": {}\n}"
},
{
"path": "miniprogram/pages/user_settings/user_settings.less",
"chars": 1953,
"preview": ".optionList {\n width: 100%;\n margin-bottom: 100rpx;\n\n .option {\n width: 100%;\n height: 100rpx;\n "
},
{
"path": "miniprogram/pages/user_settings/user_settings.wxml",
"chars": 8731,
"preview": "<!--pages/user_settings/user_settings.wxml-->\n\n<view class=\"optionList\">\n <view class=\"option\" wx:if=\"{{wx_user}}\">\n "
},
{
"path": "miniprogram/pages/user_settings/user_settings.wxss",
"chars": 1631,
"preview": ".optionList {\n width: 100%;\n margin-bottom: 100rpx;\n}\n.optionList .option {\n width: 100%;\n height: 100rpx;\n display"
},
{
"path": "miniprogram/pages/word_detail/word_detail.js",
"chars": 3552,
"preview": "// pages/word_detail/word_detail.js\nimport regeneratorRuntime, { async } from '../../lib/runtime/runtime';\nconst wordApi"
},
{
"path": "miniprogram/pages/word_detail/word_detail.json",
"chars": 27,
"preview": "{\n \"usingComponents\": {}\n}"
},
{
"path": "miniprogram/pages/word_detail/word_detail.less",
"chars": 2753,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: fixed;\n z-index: -100;\n // background-image: linear-"
},
{
"path": "miniprogram/pages/word_detail/word_detail.wxml",
"chars": 2612,
"preview": "<!--pages/word_detail/word_detail.wxml-->\n<!-- style=\"background-image: linear-gradient(to bottom, {{bgStyle}}, #ffffff)"
},
{
"path": "miniprogram/pages/word_detail/word_detail.wxss",
"chars": 2100,
"preview": ".bgWrapper {\n width: 100%;\n height: 100%;\n position: fixed;\n z-index: -100;\n}\n.word {\n margin-top: 70rpx;\n margin-"
},
{
"path": "miniprogram/pages/word_list/word_list.js",
"chars": 6085,
"preview": "// pages/word_list/word_list.js\nimport regeneratorRuntime, { async } from '../../lib/runtime/runtime';\nconst wordApi = r"
},
{
"path": "miniprogram/pages/word_list/word_list.json",
"chars": 27,
"preview": "{\n \"usingComponents\": {}\n}"
},
{
"path": "miniprogram/pages/word_list/word_list.less",
"chars": 2701,
"preview": "@wordItemHeight: 80rpx;\n\n.wordWrapper {\n // margin-top: 10rpx;\n width: 100%;\n // margin-bottom: 10rpx;\n // m"
},
{
"path": "miniprogram/pages/word_list/word_list.wxml",
"chars": 1956,
"preview": "<!--pages/word_list/word_list.wxml-->\n\n<view class=\"wordWrapper\">\n <view class=\"wordItem\" wx:if=\"{{todayType == -1}}\""
},
{
"path": "miniprogram/pages/word_list/word_list.wxss",
"chars": 1713,
"preview": ".wordWrapper {\n width: 100%;\n}\n.wordWrapper .wordItem {\n width: 750rpx;\n height: wordItemHeight;\n background-color: "
},
{
"path": "miniprogram/sitemap.json",
"chars": 227,
"preview": "{\n \"desc\": \"关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html\",\n \"rules\":[{\n "
},
{
"path": "miniprogram/static/color.wxss",
"chars": 4193,
"preview": "/* for #ffb284 */\n.bg-linear-0 {\n background-image: linear-gradient(to bottom, #ffb284, #FFFFFF);\n}\n\n.word-color-0 {\n"
},
{
"path": "miniprogram/static/iconfont.wxss",
"chars": 1352,
"preview": "@font-face {\n font-family: \"iconfont\"; /* Project id 2904327 */\n src: url('//at.alicdn.com/t/font_2904327_ob31m8hc8ul."
},
{
"path": "miniprogram/utils/color.js",
"chars": 520,
"preview": "const colorList = ['#ffb284', '#99c4d3', '#d0e6a5', '#86e3ce', '#ffdd95', '#fa897b',\n '#ccabd8', '#80beaf', '#b3ddd1'"
},
{
"path": "miniprogram/utils/format_time.js",
"chars": 1331,
"preview": "// 传入时间的毫秒数(date.getTime())获取时间详情\n\nconst formatTime = (time) => {\n var date = new Date(time)\n var y = date.getFull"
},
{
"path": "miniprogram/utils/response_content.js",
"chars": 880,
"preview": "const SUCCESS = { errorcode: 100, errormsg: \"success\" } //成功\nconst LOGINOK = { errorcode: 1, "
},
{
"path": "miniprogram/utils/userApi.js",
"chars": 5185,
"preview": "const checkUsernameInDB = (data) => {\n data.$url = 'checkUsername'\n return new Promise((resolve, reject) => {\n "
},
{
"path": "miniprogram/utils/wordApi.js",
"chars": 13980,
"preview": "const getDailySentence = () => {\n let data = {}\n data.$url = 'getDailySentence'\n return new Promise((resolve, r"
},
{
"path": "miniprogram/utils/word_utils.js",
"chars": 7237,
"preview": "const tagDict = {\n zk: '中考',\n gk: '高考',\n ky: '考研',\n cet4: '四级',\n cet6: '六级',\n toefl: '托福',\n ielts: "
},
{
"path": "project.config.json",
"chars": 1746,
"preview": "{\n \"miniprogramRoot\": \"miniprogram/\",\n \"cloudfunctionRoot\": \"cloudfunctions/\",\n \"setting\": {\n \"urlCheck\""
},
{
"path": "project.private.config.json",
"chars": 2473,
"preview": "{\n \"setting\": {},\n \"condition\": {\n \"plugin\": {\n \"list\": []\n },\n \"game\": {\n "
}
]
About this extraction
This page contains the full source code of the Mint-green/UnlearnableWord GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 111 files (1.9 MB), approximately 666.7k tokens, and a symbol index with 2801 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.