From d579a5e81242a7cb06bea6c27b58c23351ffc0b9 Mon Sep 17 00:00:00 2001 From: zhouwentao <1577701412@qq.com> Date: Mon, 4 Mar 2024 22:27:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9UI=E4=B9=8B=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 6 +- common/ApiConstant.js | 37 +- common/ImagesConstant.js | 42 + common/StaticConstant.js | 1697 +--- common/css/gitPro.sh | 86 + common/css/my-color.css | 67 + common/css/uni2.css | 380 + common/operate.js | 21 +- common/request.js | 83 +- common/uni.css | 51 - common/util.js | 54 +- .../mote-lines-divide/mote-lines-divide.vue | 138 + components/my-checkvip/my-checkvip.vue | 75 + components/my-menu/my-menu.vue | 70 + components/my-top-button.vue | 34 + components/u-charts/u-charts.js | 5046 ----------- .../wt-progress-circle/wt-progress-circle.vue | 86 + manifest.json | 11 +- package.json | 30 +- pages.json | 1995 ++--- .../text-show-hide/text-show-hide.vue | 63 + pages/error/serviceDown.vue | 34 + pages/template/ucharts/ucharts.vue | 2 +- pages/zyb/fillVolunteer/aiAuto.vue | 1011 +++ pages/zyb/fillVolunteer/detail.vue | 301 +- pages/zyb/fillVolunteer/index.vue | 1197 +-- pages/zyb/fillVolunteer/list.vue | 160 - pages/zyb/fillVolunteer/my.vue | 234 + pages/zyb/historyScoreControlLine/data.js | 82 + pages/zyb/historyScoreControlLine/index.vue | 153 + pages/zyb/home.vue | 313 +- pages/zyb/login.vue | 233 + pages/zyb/major/detail.vue | 507 ++ pages/zyb/major/list-old-copy.vue | 284 + pages/zyb/major/list.vue | 195 + pages/zyb/npee/index.vue | 115 + pages/zyb/npee/readme.md | 1 + pages/zyb/other/admissionsInformation.uvue | 15 + pages/zyb/other/admissionsInformation.vue | 133 + pages/zyb/other/calculateInvestment.vue | 426 + pages/zyb/other/checkRanking.vue | 314 + pages/zyb/other/commonProblem.vue | 82 + pages/zyb/other/disclaimer.vue | 30 + pages/zyb/other/progressbar.vue | 63 + pages/zyb/other/updateLogs.vue | 39 + pages/zyb/other/useHelp.vue | 200 + pages/zyb/other/userAgreement.vue | 141 + pages/zyb/other/volunteerCardDesc.vue | 31 + pages/zyb/other/web-view.vue | 31 + pages/zyb/other/yifenyiduan.vue | 171 + pages/zyb/school/detail.vue | 584 ++ pages/zyb/school/list.vue | 506 ++ pages/zyb/score/edit.vue | 357 +- pages/zyb/settings.vue | 144 + pages/zyb/testCultural/detail.vue | 528 ++ pages/zyb/testCultural/index.vue | 278 + pages/zyb/user/center.vue | 25 - pages/zyb/user/detail.vue | 122 + pages/zyb/user/index.vue | 295 + pages/zyb/user/myCollect.vue | 223 + pages/zyb/vip/cardamom.vue | 165 + pages/zyb/vip/checkoutCounter.vue | 173 + pages/zyb/vip/index.vue | 266 + static/60x60.png | Bin 774 -> 0 bytes static/api.png | Bin 1449 -> 0 bytes static/apiHL.png | Bin 1418 -> 0 bytes static/apiIndex.png | Bin 1927 -> 0 bytes static/c1.png | Bin 401 -> 0 bytes static/c2.png | Bin 470 -> 0 bytes static/c3.png | Bin 511 -> 0 bytes static/c4.png | Bin 476 -> 0 bytes static/c5.png | Bin 472 -> 0 bytes static/c6.png | Bin 545 -> 0 bytes static/c7.png | Bin 365 -> 0 bytes static/c8.png | Bin 587 -> 0 bytes static/c9.png | Bin 565 -> 0 bytes static/compass.png | Bin 24706 -> 0 bytes static/component.png | Bin 1146 -> 0 bytes static/componentHL.png | Bin 1142 -> 0 bytes static/componentIndex.png | Bin 1705 -> 0 bytes static/extui.png | Bin 5094 -> 0 bytes static/extuiHL.png | Bin 5089 -> 0 bytes static/extuiIndex.png | Bin 5951 -> 0 bytes static/home-active.png | Bin 577 -> 0 bytes static/home.png | Bin 554 -> 0 bytes static/icons/24gl-bookmarkMinus.png | Bin 0 -> 1186 bytes static/icons/arrow/angle-down-active.png | Bin 5104 -> 0 bytes static/icons/arrow/angle-down.png | Bin 4729 -> 0 bytes static/icons/badge.png | Bin 677 -> 0 bytes static/icons/button.png | Bin 3465 -> 0 bytes static/icons/calendar.png | Bin 735 -> 0 bytes static/icons/card.png | Bin 429 -> 0 bytes static/icons/collapse.png | Bin 802 -> 0 bytes static/icons/color.png | Bin 4635 -> 0 bytes static/icons/combox.png | Bin 828 -> 0 bytes static/icons/countdown.png | Bin 1527 -> 0 bytes static/icons/cuti/delete-active.png | Bin 551 -> 0 bytes static/icons/cuti/delete.png | Bin 551 -> 0 bytes static/icons/cuti/done-active.png | Bin 683 -> 0 bytes static/icons/cuti/done.png | Bin 655 -> 0 bytes static/icons/cuti/edit-active.png | Bin 554 -> 0 bytes static/icons/cuti/edit.png | Bin 535 -> 0 bytes static/icons/cuti/file-download-active.png | Bin 440 -> 0 bytes static/icons/cuti/file-download.png | Bin 424 -> 0 bytes .../cuti/keyboard-arrow-right-active.png | Bin 0 -> 653 bytes .../icons/cuti/keyboard-arrow-right-white.png | Bin 0 -> 566 bytes .../cuti/keyboard-arrow-right-white2.png | Bin 0 -> 261 bytes static/icons/cuti/keyboard-arrow-right.png | Bin 0 -> 635 bytes static/icons/cuti/图片库地址.txt | 1 + static/icons/data-checkbox.png | Bin 1888 -> 0 bytes static/icons/data-picker.png | Bin 588 -> 0 bytes static/icons/dateformat.png | Bin 879 -> 0 bytes static/icons/datetime-picker.png | Bin 1779 -> 0 bytes static/icons/drawer.png | Bin 686 -> 0 bytes static/icons/easyinput.png | Bin 465 -> 0 bytes static/icons/fab.png | Bin 1303 -> 0 bytes static/icons/fav.png | Bin 1480 -> 0 bytes static/icons/file-picker.png | Bin 1017 -> 0 bytes static/icons/font.png | Bin 3816 -> 0 bytes static/icons/forms.png | Bin 801 -> 0 bytes static/icons/goods-nav.png | Bin 902 -> 0 bytes static/icons/grid.png | Bin 412 -> 0 bytes static/icons/group.png | Bin 948 -> 0 bytes static/icons/icons.png | Bin 1199 -> 0 bytes static/icons/indexed-list.png | Bin 1620 -> 0 bytes static/icons/linear/calendar.png | Bin 0 -> 455 bytes static/icons/linear/edit-active.png | Bin 0 -> 696 bytes static/icons/linear/edit.png | Bin 0 -> 652 bytes static/icons/linear/illustrate.png | Bin 0 -> 1117 bytes static/icons/linear/index-active.png | Bin 0 -> 730 bytes static/icons/linear/index.png | Bin 0 -> 692 bytes static/icons/linear/love.png | Bin 0 -> 1126 bytes static/icons/linear/quest.png | Bin 0 -> 638 bytes static/icons/linear/settings.png | Bin 0 -> 945 bytes static/icons/linear/user-active.png | Bin 0 -> 825 bytes static/icons/linear/user.png | Bin 0 -> 810 bytes static/icons/linear/图片库地址.txt | 1 + static/icons/link.png | Bin 1670 -> 0 bytes static/icons/list.png | Bin 534 -> 0 bytes static/icons/load-more.png | Bin 1342 -> 0 bytes static/icons/nav-bar.png | Bin 716 -> 0 bytes static/icons/notice-bar.png | Bin 981 -> 0 bytes static/icons/number-box.png | Bin 455 -> 0 bytes static/icons/pagination.png | Bin 943 -> 0 bytes static/icons/popup.png | Bin 980 -> 0 bytes static/icons/radius.png | Bin 1249 -> 0 bytes static/icons/rate.png | Bin 1624 -> 0 bytes static/icons/row.png | Bin 400 -> 0 bytes static/icons/search-bar.png | Bin 1249 -> 0 bytes static/icons/section.png | Bin 541 -> 0 bytes static/icons/segmented-control.png | Bin 624 -> 0 bytes static/icons/space.png | Bin 4175 -> 0 bytes static/icons/steps.png | Bin 1203 -> 0 bytes static/icons/swipe-action.png | Bin 1660 -> 0 bytes static/icons/swiper-dot.png | Bin 1023 -> 0 bytes static/icons/tag.png | Bin 569 -> 0 bytes static/icons/title.png | Bin 364 -> 0 bytes static/icons/transition.png | Bin 1415 -> 0 bytes static/icons/write-l-active.png | Bin 602 -> 0 bytes static/icons/write-l.png | Bin 550 -> 0 bytes static/image-active.png | Bin 557 -> 0 bytes static/image.png | Bin 524 -> 0 bytes static/image/uniui-header-bg.png | Bin 259722 -> 0 bytes static/image/uniui-logo.png | Bin 3294 -> 0 bytes static/location.png | Bin 4980 -> 0 bytes static/logo.png | Bin 4023 -> 0 bytes static/menu.png | Bin 2098 -> 0 bytes static/nav.png | Bin 15782 -> 0 bytes static/pause.png | Bin 3760 -> 0 bytes static/play.png | Bin 4420 -> 0 bytes static/plus.png | Bin 1252 -> 0 bytes static/record.png | Bin 5801 -> 0 bytes static/shuijiao.jpg | Bin 15766 -> 1252 bytes static/star-active.png | Bin 907 -> 0 bytes static/star.png | Bin 839 -> 0 bytes static/stop.png | Bin 2539 -> 0 bytes static/template.png | Bin 461 -> 0 bytes static/templateHL.png | Bin 459 -> 0 bytes static/templateIndex.png | Bin 606 -> 0 bytes static/trash.png | Bin 2656 -> 0 bytes static/uni.png | Bin 4162 -> 0 bytes uni.scss | 1 - .../HM-filterDropdown_1.0.1/changelog.md | 7 + .../HM-filterDropdown/HM-filterDropdown.vue | 896 ++ .../HM-filterDropdown_1.0.1/package.json | 82 + uni_modules/HM-filterDropdown_1.0.1/readme.md | 36 + uni_modules/cc-defineStep/changelog.md | 6 + .../cc-defineStep/cc-defineStep.vue | 144 + uni_modules/cc-defineStep/package.json | 86 + uni_modules/cc-defineStep/readme.md | 170 + uni_modules/le-dropdown/changelog.md | 13 + .../le-dropdown/components/le-picker.vue | 112 + .../components/le-dropdown/le-dropdown.vue | 605 ++ .../components/le-dropdown/utils/cloneDeep.js | 17 + .../components/le-dropdown/utils/hexToRgb.js | 23 + uni_modules/le-dropdown/package.json | 81 + uni_modules/le-dropdown/readme.md | 72 + uni_modules/lsl-protocol-popup/changelog.md | 35 + .../lsl-protocol-popup/lsl-protocol-popup.vue | 463 + uni_modules/lsl-protocol-popup/package.json | 84 + uni_modules/lsl-protocol-popup/readme.md | 99 + .../px-popup-bottom/px-popup-bottom.vue | 317 + .../px-popup-bottom_1.0.4/package.json | 16 + .../qiun-data-charts_2.5.0/changelog.md | 320 + .../qiun-data-charts/qiun-data-charts.vue | 1618 ++++ .../components/qiun-error/qiun-error.vue | 46 + .../components/qiun-loading/loading1.vue | 162 + .../components/qiun-loading/loading2.vue | 170 + .../components/qiun-loading/loading3.vue | 173 + .../components/qiun-loading/loading4.vue | 222 + .../components/qiun-loading/loading5.vue | 229 + .../components/qiun-loading/qiun-loading.vue | 36 + .../js_sdk/u-charts/config-echarts.js | 422 + .../js_sdk/u-charts/config-ucharts.js | 606 ++ .../js_sdk/u-charts/readme.md | 5 + .../js_sdk/u-charts/u-charts.js | 7706 +++++++++++++++++ .../js_sdk/u-charts/u-charts.min.js | 18 + uni_modules/qiun-data-charts_2.5.0/license.md | 201 + .../qiun-data-charts_2.5.0/package.json | 80 + uni_modules/qiun-data-charts_2.5.0/readme.md | 84 + .../static/app-plus/echarts.min.js | 23 + .../static/h5/echarts.min.js | 23 + .../uni-countdown/uni-countdown.vue | 13 +- uni_modules/wei-dropdown-menu/changelog.md | 8 + .../components/wei-dropdown-menu/props.js | 39 + .../wei-dropdown-menu/wei-dropdown-menu.vue | 570 ++ uni_modules/wei-dropdown-menu/package.json | 84 + uni_modules/wei-dropdown-menu/readme.md | 73 + 228 files changed, 27648 insertions(+), 8886 deletions(-) create mode 100644 common/ImagesConstant.js create mode 100644 common/css/gitPro.sh create mode 100644 common/css/my-color.css create mode 100644 common/css/uni2.css create mode 100644 components/mote-lines-divide/mote-lines-divide.vue create mode 100644 components/my-checkvip/my-checkvip.vue create mode 100644 components/my-menu/my-menu.vue create mode 100644 components/my-top-button.vue delete mode 100644 components/u-charts/u-charts.js create mode 100644 components/wt-progress-circle/wt-progress-circle.vue create mode 100644 pages/component/text-show-hide/text-show-hide.vue create mode 100644 pages/error/serviceDown.vue create mode 100644 pages/zyb/fillVolunteer/aiAuto.vue delete mode 100644 pages/zyb/fillVolunteer/list.vue create mode 100644 pages/zyb/fillVolunteer/my.vue create mode 100644 pages/zyb/historyScoreControlLine/data.js create mode 100644 pages/zyb/historyScoreControlLine/index.vue create mode 100644 pages/zyb/login.vue create mode 100644 pages/zyb/major/detail.vue create mode 100644 pages/zyb/major/list-old-copy.vue create mode 100644 pages/zyb/major/list.vue create mode 100644 pages/zyb/npee/index.vue create mode 100644 pages/zyb/npee/readme.md create mode 100644 pages/zyb/other/admissionsInformation.uvue create mode 100644 pages/zyb/other/admissionsInformation.vue create mode 100644 pages/zyb/other/calculateInvestment.vue create mode 100644 pages/zyb/other/checkRanking.vue create mode 100644 pages/zyb/other/commonProblem.vue create mode 100644 pages/zyb/other/disclaimer.vue create mode 100644 pages/zyb/other/progressbar.vue create mode 100644 pages/zyb/other/updateLogs.vue create mode 100644 pages/zyb/other/useHelp.vue create mode 100644 pages/zyb/other/userAgreement.vue create mode 100644 pages/zyb/other/volunteerCardDesc.vue create mode 100644 pages/zyb/other/web-view.vue create mode 100644 pages/zyb/other/yifenyiduan.vue create mode 100644 pages/zyb/school/detail.vue create mode 100644 pages/zyb/school/list.vue create mode 100644 pages/zyb/settings.vue create mode 100644 pages/zyb/testCultural/detail.vue create mode 100644 pages/zyb/testCultural/index.vue delete mode 100644 pages/zyb/user/center.vue create mode 100644 pages/zyb/user/detail.vue create mode 100644 pages/zyb/user/index.vue create mode 100644 pages/zyb/user/myCollect.vue create mode 100644 pages/zyb/vip/cardamom.vue create mode 100644 pages/zyb/vip/checkoutCounter.vue create mode 100644 pages/zyb/vip/index.vue delete mode 100644 static/60x60.png delete mode 100644 static/api.png delete mode 100644 static/apiHL.png delete mode 100644 static/apiIndex.png delete mode 100644 static/c1.png delete mode 100644 static/c2.png delete mode 100644 static/c3.png delete mode 100644 static/c4.png delete mode 100644 static/c5.png delete mode 100644 static/c6.png delete mode 100644 static/c7.png delete mode 100644 static/c8.png delete mode 100644 static/c9.png delete mode 100644 static/compass.png delete mode 100644 static/component.png delete mode 100644 static/componentHL.png delete mode 100644 static/componentIndex.png delete mode 100644 static/extui.png delete mode 100644 static/extuiHL.png delete mode 100644 static/extuiIndex.png delete mode 100644 static/home-active.png delete mode 100644 static/home.png create mode 100644 static/icons/24gl-bookmarkMinus.png delete mode 100644 static/icons/arrow/angle-down-active.png delete mode 100644 static/icons/arrow/angle-down.png delete mode 100644 static/icons/badge.png delete mode 100644 static/icons/button.png delete mode 100644 static/icons/calendar.png delete mode 100644 static/icons/card.png delete mode 100644 static/icons/collapse.png delete mode 100644 static/icons/color.png delete mode 100644 static/icons/combox.png delete mode 100644 static/icons/countdown.png delete mode 100644 static/icons/cuti/delete-active.png delete mode 100644 static/icons/cuti/delete.png delete mode 100644 static/icons/cuti/done-active.png delete mode 100644 static/icons/cuti/done.png delete mode 100644 static/icons/cuti/edit-active.png delete mode 100644 static/icons/cuti/edit.png delete mode 100644 static/icons/cuti/file-download-active.png delete mode 100644 static/icons/cuti/file-download.png create mode 100644 static/icons/cuti/keyboard-arrow-right-active.png create mode 100644 static/icons/cuti/keyboard-arrow-right-white.png create mode 100644 static/icons/cuti/keyboard-arrow-right-white2.png create mode 100644 static/icons/cuti/keyboard-arrow-right.png create mode 100644 static/icons/cuti/图片库地址.txt delete mode 100644 static/icons/data-checkbox.png delete mode 100644 static/icons/data-picker.png delete mode 100644 static/icons/dateformat.png delete mode 100644 static/icons/datetime-picker.png delete mode 100644 static/icons/drawer.png delete mode 100644 static/icons/easyinput.png delete mode 100644 static/icons/fab.png delete mode 100644 static/icons/fav.png delete mode 100644 static/icons/file-picker.png delete mode 100644 static/icons/font.png delete mode 100644 static/icons/forms.png delete mode 100644 static/icons/goods-nav.png delete mode 100644 static/icons/grid.png delete mode 100644 static/icons/group.png delete mode 100644 static/icons/icons.png delete mode 100644 static/icons/indexed-list.png create mode 100644 static/icons/linear/calendar.png create mode 100644 static/icons/linear/edit-active.png create mode 100644 static/icons/linear/edit.png create mode 100644 static/icons/linear/illustrate.png create mode 100644 static/icons/linear/index-active.png create mode 100644 static/icons/linear/index.png create mode 100644 static/icons/linear/love.png create mode 100644 static/icons/linear/quest.png create mode 100644 static/icons/linear/settings.png create mode 100644 static/icons/linear/user-active.png create mode 100644 static/icons/linear/user.png create mode 100644 static/icons/linear/图片库地址.txt delete mode 100644 static/icons/link.png delete mode 100644 static/icons/list.png delete mode 100644 static/icons/load-more.png delete mode 100644 static/icons/nav-bar.png delete mode 100644 static/icons/notice-bar.png delete mode 100644 static/icons/number-box.png delete mode 100644 static/icons/pagination.png delete mode 100644 static/icons/popup.png delete mode 100644 static/icons/radius.png delete mode 100644 static/icons/rate.png delete mode 100644 static/icons/row.png delete mode 100644 static/icons/search-bar.png delete mode 100644 static/icons/section.png delete mode 100644 static/icons/segmented-control.png delete mode 100644 static/icons/space.png delete mode 100644 static/icons/steps.png delete mode 100644 static/icons/swipe-action.png delete mode 100644 static/icons/swiper-dot.png delete mode 100644 static/icons/tag.png delete mode 100644 static/icons/title.png delete mode 100644 static/icons/transition.png delete mode 100644 static/icons/write-l-active.png delete mode 100644 static/icons/write-l.png delete mode 100644 static/image-active.png delete mode 100644 static/image.png delete mode 100644 static/image/uniui-header-bg.png delete mode 100644 static/image/uniui-logo.png delete mode 100644 static/location.png delete mode 100644 static/logo.png delete mode 100644 static/menu.png delete mode 100644 static/nav.png delete mode 100644 static/pause.png delete mode 100644 static/play.png delete mode 100644 static/plus.png delete mode 100644 static/record.png delete mode 100644 static/star-active.png delete mode 100644 static/star.png delete mode 100644 static/stop.png delete mode 100644 static/template.png delete mode 100644 static/templateHL.png delete mode 100644 static/templateIndex.png delete mode 100644 static/trash.png delete mode 100644 static/uni.png create mode 100644 uni_modules/HM-filterDropdown_1.0.1/changelog.md create mode 100644 uni_modules/HM-filterDropdown_1.0.1/components/HM-filterDropdown/HM-filterDropdown.vue create mode 100644 uni_modules/HM-filterDropdown_1.0.1/package.json create mode 100644 uni_modules/HM-filterDropdown_1.0.1/readme.md create mode 100644 uni_modules/cc-defineStep/changelog.md create mode 100644 uni_modules/cc-defineStep/components/cc-defineStep/cc-defineStep.vue create mode 100644 uni_modules/cc-defineStep/package.json create mode 100644 uni_modules/cc-defineStep/readme.md create mode 100644 uni_modules/le-dropdown/changelog.md create mode 100644 uni_modules/le-dropdown/components/le-dropdown/components/le-picker.vue create mode 100644 uni_modules/le-dropdown/components/le-dropdown/le-dropdown.vue create mode 100644 uni_modules/le-dropdown/components/le-dropdown/utils/cloneDeep.js create mode 100644 uni_modules/le-dropdown/components/le-dropdown/utils/hexToRgb.js create mode 100644 uni_modules/le-dropdown/package.json create mode 100644 uni_modules/le-dropdown/readme.md create mode 100644 uni_modules/lsl-protocol-popup/changelog.md create mode 100644 uni_modules/lsl-protocol-popup/components/lsl-protocol-popup/lsl-protocol-popup.vue create mode 100644 uni_modules/lsl-protocol-popup/package.json create mode 100644 uni_modules/lsl-protocol-popup/readme.md create mode 100644 uni_modules/px-popup-bottom_1.0.4/components/px-popup-bottom/px-popup-bottom.vue create mode 100644 uni_modules/px-popup-bottom_1.0.4/package.json create mode 100644 uni_modules/qiun-data-charts_2.5.0/changelog.md create mode 100644 uni_modules/qiun-data-charts_2.5.0/components/qiun-data-charts/qiun-data-charts.vue create mode 100644 uni_modules/qiun-data-charts_2.5.0/components/qiun-error/qiun-error.vue create mode 100644 uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading1.vue create mode 100644 uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading2.vue create mode 100644 uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading3.vue create mode 100644 uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading4.vue create mode 100644 uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading5.vue create mode 100644 uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/qiun-loading.vue create mode 100644 uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/config-echarts.js create mode 100644 uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/config-ucharts.js create mode 100644 uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/readme.md create mode 100644 uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/u-charts.js create mode 100644 uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/u-charts.min.js create mode 100644 uni_modules/qiun-data-charts_2.5.0/license.md create mode 100644 uni_modules/qiun-data-charts_2.5.0/package.json create mode 100644 uni_modules/qiun-data-charts_2.5.0/readme.md create mode 100644 uni_modules/qiun-data-charts_2.5.0/static/app-plus/echarts.min.js create mode 100644 uni_modules/qiun-data-charts_2.5.0/static/h5/echarts.min.js create mode 100644 uni_modules/wei-dropdown-menu/changelog.md create mode 100644 uni_modules/wei-dropdown-menu/components/wei-dropdown-menu/props.js create mode 100644 uni_modules/wei-dropdown-menu/components/wei-dropdown-menu/wei-dropdown-menu.vue create mode 100644 uni_modules/wei-dropdown-menu/package.json create mode 100644 uni_modules/wei-dropdown-menu/readme.md diff --git a/App.vue b/App.vue index 0e3af4f..9d95ae7 100644 --- a/App.vue +++ b/App.vue @@ -15,8 +15,6 @@ 'background:#007aff ;padding: 1px; border-radius: 0 3px 3px 0; color: #fff; font-weight: bold;' ) // #endif - // 线上示例使用 - // console.log('%c uni-app官方团队诚邀优秀前端工程师加盟,一起打造更卓越的uni-app & uniCloud,欢迎投递简历到 hr2013@dcloud.io', 'color: red'); console.log('App Launch'); // #ifdef APP-PLUS // App平台检测升级,服务端代码是通过uniCloud的云函数实现的,详情可参考:https://ext.dcloud.net.cn/plugin?id=4542 @@ -60,6 +58,8 @@ @import '@/uni_modules/uni-scss/index.scss'; /* #ifndef APP-PLUS-NVUE */ /* uni.css - 通用组件、模板样式库,可以当作一套ui库应用 */ + @import './common/css/uni2.css'; + @import './common/css/my-color.css'; @import './common/uni.css'; @import '@/static/customicons.css'; /* H5 兼容 pc 所需 */ @@ -94,7 +94,7 @@ /* 以下样式用于 hello uni-app 演示所需 */ page { - background-color: #efeff4; + background-color: #f4f5f7;//#efeff4; height: 100%; font-size: 28rpx; /* line-height: 1.8; */ diff --git a/common/ApiConstant.js b/common/ApiConstant.js index bca86e3..8f60627 100644 --- a/common/ApiConstant.js +++ b/common/ApiConstant.js @@ -1,16 +1,23 @@ export default { Major: { - recommendMajorPage: '/art/recommendMajor/page',//获取推荐专业列表 + recommendMajorCount: '/art/recommendMajor/recommendMajorCount',//获取推荐专业总数量 + recommendMajorPage: '/art/recommendMajor/mini/page',//获取推荐专业列表 recommendMajorList: '/art/recommendMajor/list',//获取学校的其他专业 - schoolMajorDtoPage: '/yx/yxSchoolMajor/dtoPage',//获取学校开设专业分页数据 + schoolMajorList: '/mini/major/schoolMajorList',//获取学校开设专业分页数据 schoolHistoryMajorEnrollList: '/yx/yxHistoryMajorEnroll/list',//获取学校的分数计划 - schoolMajorList: '/yx/yxSchoolMajor/list',//获取school_major 数据 majorList: '/yx/yxMajor/list',//获取专业信息表-分页列表查询 - majorInfo: '/art/major/majorInfo',//获取专业详情 + majorInfo: '/mini/major/majorInfo',//获取专业详情 + miniMajorList: '/mini/major/miniMajorList',//专业列表 + calculateInvestment: '/art/recommendMajor/calculateInvestment',//投档分测算 + testCultural: '/art/recommendMajor/testCultural',//文化分测算 + aiAuto: '/art/recommendMajor/mini/aiAuto',//智能填报 + schoolMajorListByBatchAndMajorType: '/art/major/schoolMajorListByBatchAndMajorType',//智能填报页面获取专业列表 }, //用户类 User: { exchangeVipCard: '/yx/yxVipCard/exchange',//兑换vip卡 + wxLogin: '/wx/login', + userInfo: '/wx/userInfo', }, System: { findPassWord: '/sys/findPassWord',//找回密码 @@ -21,25 +28,37 @@ export default { scoreSave: "/yx/yxScore/save",//保存用户专业得分 getScore: "/yx/yxScore/getUserScoreInfo",//获取当前用户的高考分数信息 conversionScoreBatch: "/yx/yxHistoryScoreBatch/conversionScoreBatch",//获取分数批次段 + historyScoreControlLineListGroupYear: '/yx/yxHistoryScoreControlLine/listGroupByYear',//省控线分页列表 根据year分组 historyScoreControlLineList: '/yx/yxHistoryScoreControlLine/list',//省控线分页列表 + scoreSegmentSearchByScore: '/yx/yxScoreSegment/searchByScore',//获取五分一段信息 }, //学校类 School: { - searchSchoolList: "/art/school/search",//搜索 学校列表 - schoolInfo: "/art/school/schoolInfo",//学校介绍详情 + searchSchoolList: "/mini/school/search",//搜索 学校列表 + schoolInfo: "/mini/school/schoolInfo",//学校介绍详情 hotSchoolList: '/art/school/hotList',//热门院校 列表 }, //志愿 Volunteer: { + addNew: '/art/volunteer/addNew',//新建志愿单 volunteerSave: "/art/volunteer/save",//保存用户的志愿 //volunteerList:'/art/volunteer/list', volunteerInfo: '/art/volunteer/info',//当前使用中志愿单详情 volunteerPage: '/art/volunteer/page',//志愿单列表 - volunteerDelete:'/art/volunteer/delete',//志愿单删除 - artVolunteerDetail:'/art/volunteer/artVolunteerDetail',//根据id获取志愿单详情 + volunteerDelete: '/art/volunteer/delete',//志愿单删除 + artVolunteerDetail: '/art/volunteer/artVolunteerDetail',//根据id获取志愿单详情 volunteerRecordDel: '/art/volunteer/recordDel',//删除志愿明细(失效了) - volunteerRecordDelete:'/art/volunteer/volunteerRecordDelete',//删除志愿明细 + volunteerRecordDelete: '/art/volunteer/volunteerRecordDelete',//删除志愿明细 volunteerRecordReplace: '/art/volunteer/replaceVolunteer',//替换志愿明细 + saveAs: '/art/volunteer/saveAs',//另存为 + }, + Pay: { + vip1: '/wx/pay/v1/jsApiPay',//支付类型1 + }, + VIP: { + cardActivation: '/mini/vip/card/activation',//卡密兑换 + orderDetail: '/mini/vip/orderDetail',//获取订单信息 + skuList: '/mini/vip/sku/all',//获取全部商品 } } diff --git a/common/ImagesConstant.js b/common/ImagesConstant.js new file mode 100644 index 0000000..323dc32 --- /dev/null +++ b/common/ImagesConstant.js @@ -0,0 +1,42 @@ +export default { + defaultIcon:'http://files.yitisheng.vip/images/icons/swiper-dot.png', + major:'http://files.yitisheng.vip/images/icons/major.png', + skx:'http://files.yitisheng.vip/images/icons/skx.png',//省控线 + cwh:'http://files.yitisheng.vip/images/icons/cwh.png',//测文化 + cwc:'http://files.yitisheng.vip/images/icons/ccw.png',//查位次 + std:'http://files.yitisheng.vip/images/icons/jsq.png',//算投档 + + yxjs: 'http://files.yitisheng.vip/images/icons/fwjs.png',//院校介绍 + zlsj: 'http://files.yitisheng.vip/images/icons/zexian.png',//招录数据 + lqxx: 'http://files.yitisheng.vip/images/icons/dbx.png',//录取信息 + + loveWhile:'http://files.yitisheng.vip/images/icons/love-while.png',//收藏按钮 + loveDarkturquoise:'http://files.yitisheng.vip/images/icons/love-darkturquoise.png',//已搜藏按钮 + + triangle_bottom:'http://files.yitisheng.vip/images/icons/direction/triangle_bottom.png',//三角-下拉选 + + huiyuanquanyi:'http://files.yitisheng.vip/images/huiyuanquanyi.png',//会员权益 + + kfImage:'http://files.yitisheng.vip/images/kf.jpg',//客服二维码图片 + + shuqian:'/static/icons/24gl-bookmarkMinus.png',//书签-时风绿 + + edit:'http://files.yitisheng.vip/images/icons/%E7%BC%96%E8%BE%91.png',//编辑 + cuti:{ + edit:'http://files.yitisheng.vip/images/icons/cuti/edit.png',//编辑 + delete:'http://files.yitisheng.vip/images/icons/cuti/delete.png',//删除 + }, + //方向指针 + keyboard:{ + arrowDown:'http://files.yitisheng.vip/images/icons/cuti/keyboard-arrow-down.png',//下方向 + arrowDown2:'http://files.yitisheng.vip/images/icons/cuti/keyboard-arrow-down2.png',//下方向 + arrowRightWhite:'http://files.yitisheng.vip/images/icons/cuti/keyboard-arrow-right-white.png',//右方向 白色 + arrowRight: 'http://files.yitisheng.vip/images/icons/cuti/keyboard-arrow-right.png',//右方向 + }, + bao:{ + jiaowentuo:'http://files.yitisheng.vip/images/icons/%E4%BF%9D/%E8%BE%83%E7%A8%B3%E5%A6%A5.png',//较稳妥 + kebaodi:'http://files.yitisheng.vip/images/icons/%E4%BF%9D/%E5%8F%AF%E4%BF%9D%E5%BA%95.png',//可保底 + nanluqu:'http://files.yitisheng.vip/images/icons/%E4%BF%9D/%E9%9A%BE%E5%BD%95%E5%8F%96.png',//难录取 + kechongji:'http://files.yitisheng.vip/images/icons/%E4%BF%9D/%E5%8F%AF%E5%86%B2%E5%87%BB.png',//可冲击.png + } +} diff --git a/common/StaticConstant.js b/common/StaticConstant.js index b65ea32..3c6fb8a 100644 --- a/common/StaticConstant.js +++ b/common/StaticConstant.js @@ -1,1304 +1,419 @@ export default { - year: '2023',//年份 - years:['2023','2022','2021','2020'], + systemName: '艺体志愿宝', + bm: '及第生涯', + year: '2024',//年份 + yearSx: '24',//缩写年份 + years: ['2023', '2022', '2021', '2020'], categoryList: [ {name: '文科'}, {name: '理科'} ], batchAllList: [ - "提前批", "本科A段", "本科B段", "高职高专" + { + label: '本科提前批', + value: '提前批' + }, + { + label: '艺术本科A段', + value: '本科A段' + }, + { + label: '艺术本科B段', + value: '本科B段' + }, + { + label: '高职高专批', + value: '高职高专' + } ], - //专业选项 + //专业选项 professionalCategoryList: [ - {value: '美术类', label: '美术类', scoreMax: 300}, - {value: '体育类', label: '体育类', scoreMax: 150}, - {value: '音乐类', label: '音乐类', scoreMax: 200}, - {value: '艺术舞蹈类', label: '艺术舞蹈类', scoreMax: 200}, - {value: '国际标准舞类', label: '国际标准舞类', scoreMax: 200}, - {value: '播音类', label: '播音类', scoreMax: 400}, - {value: '表演类', label: '表演类', scoreMax: 200}, - {value: '书法类', label: '书法类', scoreMax: 200} + {value: '美术与设计类', label: '美术与设计类', scoreMax: 300,}, + { + value: '音乐类', label: '音乐类', scoreMax: 300, children: [ + {label: '音乐表演声乐', value: '音乐表演声乐', exclude: '音乐表演器乐'}, + {label: '音乐表演器乐', value: '音乐表演器乐', exclude: '音乐表演声乐'}, + {label: '音乐教育', value: '音乐教育'} + ] + }, + {value: '舞蹈类', label: '舞蹈类', scoreMax: 300,}, + {value: '播音与主持类', label: '播音与主持类', scoreMax: 300,}, + { + value: '表演类', label: '表演类', scoreMax: 300, children: [ + {label: '服装表演', value: '服装表演'}, + {label: '戏剧影视导演', value: '戏剧影视导演'}, + {label: '戏剧影视表演', value: '戏剧影视表演'} + ] + }, + {value: '书法类', label: '书法类', scoreMax: 300,}, + {value: '戏曲类', label: '戏曲类', scoreMax: 300}, + {value: '体育类', label: '体育类', scoreMax: 150,}, + /*{value: '艺术舞蹈类', label: '艺术舞蹈类', scoreMax: 200}, + {value: '国际标准舞类', label: '国际标准舞类', scoreMax: 200},*/ ], - volunteerList:[ - { - schoolIcon:'http://img1.youzy.cn/content/media/thumbs/p00189990.jpeg', - tagsList: ['一流大学', '211工程', '985工程', '国家重点','双一流','省市级双万计划'], - "enrollProbability": 97.2900, - "schoolName": "山东艺术学院", - "schoolCode": "10458", - "institutionCode": "9927", - "province": "山东", - "propertyName": "公办", - "institutionType": "艺术", - "majorName": "工艺美术", - "majorCode": "350101", - "majorDetail":"专业组62,11000元/年,包含专业.....", - "majorRemarks": "是什么:\n\n工艺美术主要研究美学、色彩构成、立体构成、工艺美术等方面的基本知识和技能,进行工艺品的设计、色彩搭配、制作、保护和修复等。常见的工艺品有木雕、玉雕、漆器、陶器、瓷器、泥塑、剪纸、蜡染等。关键词:陶罐瓷瓶剪纸泥塑。\n\n学什么:\n\n《中外美术通史》、《中外工艺美术通史》、《绘画基础》、《美学》、《专业写作》、《中国文化史》、《中国传统纹饰》、《传统漆器研究》、《立体构成》、《色彩构成》部分高校按以下专业方向培养:陶艺、玉雕。\n\n干什么:\n\n工艺美术类企业:工艺品设计、工艺品制作;艺术馆、博物馆:工艺品保护、工艺品修复。", - "planNum": 0, - "studyCost": 12000.00, - "rulesEnrollProbability": "文0.5000专1.2500", - "probabilityOperator": "文*0.50+专*1.2500", - "studyYear": 4, - "historyMajorEnrollList": [ - { - "id": "1748613827055948556", - "schoolCode": "10458", - "institutionCode": "9927", - "schoolName": "山东艺术学院", - "majorCode": "130507", - "majorName": "工艺美术", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文0.4000专0.6000", - "probabilityOperator": "文*0.40+专*0.60", - "controlLine": 266.0000, - "admissionLine": 326.8000, - "enrollNum": 3, - "admissionNum": 3, - "oneVolunteerAdmissionNum": 3, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "34", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - { - "id": "1748613827055948564", - "schoolCode": "10458", - "institutionCode": "9927", - "schoolName": "山东艺术学院", - "majorCode": "130507", - "majorName": "工艺美术", - "year": "2021", - "category": "文科", - "rulesEnrollProbability": "文0.4000专0.6000", - "probabilityOperator": "文*0.40+专*0.60", - "controlLine": 263.8000, - "admissionLine": 321.2000, - "enrollNum": 3, - "admissionNum": 3, - "oneVolunteerAdmissionNum": 3, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "33", - "actualPitcherNum": 0, - "majorType": "美术类" - } - ], - "historyMajorEnrollMap": { - "2022": { - "id": "1748613827055948556", - "schoolCode": "10458", - "institutionCode": "9927", - "schoolName": "山东艺术学院", - "majorCode": "130507", - "majorName": "工艺美术", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文0.4000专0.6000", - "probabilityOperator": "文*0.40+专*0.60", - "controlLine": 266.0000, - "admissionLine": 326.8000, - "enrollNum": 3, - "admissionNum": 3, - "oneVolunteerAdmissionNum": 3, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "34", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - "2021": { - "id": "1748613827055948564", - "schoolCode": "10458", - "institutionCode": "9927", - "schoolName": "山东艺术学院", - "majorCode": "130507", - "majorName": "工艺美术", - "year": "2021", - "category": "文科", - "rulesEnrollProbability": "文0.4000专0.6000", - "probabilityOperator": "文*0.40+专*0.60", - "controlLine": 263.8000, - "admissionLine": 321.2000, - "enrollNum": 3, - "admissionNum": 3, - "oneVolunteerAdmissionNum": 3, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "33", - "actualPitcherNum": 0, - "majorType": "美术类" - } + //24年专业类别 分数调整 + professionalCategoryScoreUpdadtes: { + '舞蹈类': { + scoreMax: 300, oldScoreMax: 200 }, - "culturalControlLine": 370.0000, - "specialControlLine": 216.0000, - "studentConvertedScore": 512.5000, - "category": "文科", - "batch": "提前批", - "enrollmentCode": "34" + '播音与主持类': { + scoreMax: 300, oldScoreMax: 400 + }, + '表演类': { + scoreMax: 300, oldScoreMax: 200 + }, + '音乐类': { + scoreMax: 300, oldScoreMax: 200 + } }, - { - "enrollProbability": 90.3200, - "schoolName": "天津大学", - "schoolCode": "10056", - "institutionCode": "1305", - "province": "天津", - "propertyName": "公办", - "institutionType": "理工", - "majorName": "环境设计", - "majorCode": "130503", - "majorRemarks": "是什么:\n\n环境设计主要研究艺术学、设计学、建筑学、社会学、环境学等方面的基本知识和技能,涉及地球表层空间设计、城市规划设计、建筑设计、室内设计、室外设计、公共艺术设计等。例如:公园地形地貌、道路、假山的设计,城市公路、绿化带、建筑的规划设计,住宅、商场室内布局的设计等。关键词:公园绿化带广场住宅。\n\n学什么:\n\n《设计制图与透视》、《装饰材料与构造》、《室内环境设计》、《建筑景观设计》、《办公空间设计》、《公共艺术设计》、《材料与结构》、《环艺模型制作与材料加工》、《建筑结构原理》、《营造元素》部分高校按以下专业方向培养:美术、会展设计、景观设计、空间设计、室内设计、展示设计、环境艺术设计、建筑艺术设计、景观艺术设计、城市园林艺术设计。\n\n干什么:\n\n装修装潢类企业:室内设计、室外设计、空间设计;城建类事业单位:城市环境设计、园林艺术设计、建筑景观设计。", - "planNum": 0, - "studyCost": 12000.00, - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "studyYear": 4, - "historyMajorEnrollList": [ - { - "id": "1748613827055948009", - "schoolCode": "10056", - "institutionCode": "1305", - "schoolName": "天津大学", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文0.1330专0.3330", - "probabilityOperator": "文*0.1330+专*0.3330", - "controlLine": 116.4800, - "admissionLine": 154.3000, - "enrollNum": 3, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 1, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "04", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - { - "id": "1748613827055948010", - "schoolCode": "10056", - "institutionCode": "1305", - "schoolName": "天津大学", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2021", - "category": "文科", - "rulesEnrollProbability": "文0.1330专0.3330", - "probabilityOperator": "文*0.1330+专*0.3330", - "controlLine": 115.0810, - "admissionLine": 140.3000, - "enrollNum": 3, - "admissionNum": 3, - "oneVolunteerAdmissionNum": 2, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "04", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - { - "id": "1748613827055948012", - "schoolCode": "10056", - "institutionCode": "1305", - "schoolName": "天津大学", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2020", - "category": "文科", - "rulesEnrollProbability": "文0.1330专0.3330", - "probabilityOperator": "文*0.1330+专*0.3330", - "controlLine": 117.8080, - "admissionLine": 167.7000, - "enrollNum": 3, - "admissionNum": 3, - "oneVolunteerAdmissionNum": 3, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "04", - "actualPitcherNum": 0, - "majorType": "美术类" - } - ], - "historyMajorEnrollMap": { - "2022": { - "id": "1748613827055948009", - "schoolCode": "10056", - "institutionCode": "1305", - "schoolName": "天津大学", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文0.1330专0.3330", - "probabilityOperator": "文*0.1330+专*0.3330", - "controlLine": 116.4800, - "admissionLine": 154.3000, - "enrollNum": 3, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 1, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "04", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - "2021": { - "id": "1748613827055948010", - "schoolCode": "10056", - "institutionCode": "1305", - "schoolName": "天津大学", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2021", - "category": "文科", - "rulesEnrollProbability": "文0.1330专0.3330", - "probabilityOperator": "文*0.1330+专*0.3330", - "controlLine": 115.0810, - "admissionLine": 140.3000, - "enrollNum": 3, - "admissionNum": 3, - "oneVolunteerAdmissionNum": 2, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "04", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - "2020": { - "id": "1748613827055948012", - "schoolCode": "10056", - "institutionCode": "1305", - "schoolName": "天津大学", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2020", - "category": "文科", - "rulesEnrollProbability": "文0.1330专0.3330", - "probabilityOperator": "文*0.1330+专*0.3330", - "controlLine": 117.8080, - "admissionLine": 167.7000, - "enrollNum": 3, - "admissionNum": 3, - "oneVolunteerAdmissionNum": 3, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "04", - "actualPitcherNum": 0, - "majorType": "美术类" - } + volunteerList: [], + provinceList: [ + { + value: '河南', label: '河南' }, - "culturalControlLine": 370.0000, - "specialControlLine": 216.0000, - "studentConvertedScore": 250.0000, - "category": "文科", - "batch": "提前批", - "enrollmentCode": "02" + ], + provinceAllList: [ + {label: "北京", value: "北京"}, + {label: "天津", value: "天津"}, + {label: "河北", value: "河北"}, + {label: "山西", value: "山西"}, + {label: "辽宁", value: "辽宁"}, + {label: "吉林", value: "吉林"}, + {label: "上海", value: "上海"}, + {label: "江苏", value: "江苏"}, + {label: "浙江", value: "浙江"}, + {label: "安徽", value: "安徽"}, + {label: "福建", value: "福建"}, + {label: "江西", value: "江西"}, + {label: "山东", value: "山东"}, + {label: "河南", value: "河南"}, + {label: "湖北", value: "湖北"}, + {label: "湖南", value: "湖南"}, + {label: "广东", value: "广东"}, + {label: "广西", value: "广西"}, + {label: "海南", value: "海南"}, + {label: "重庆", value: "重庆"}, + {label: "四川", value: "四川"}, + {label: "贵州", value: "贵州"}, + {label: "云南", value: "云南"}, + {label: "陕西", value: "陕西"}, + {label: "甘肃", value: "甘肃"}, + {label: "青海", value: "青海"}, + {label: "宁夏", value: "宁夏"}, + {label: "新疆", value: "新疆"}, + {label: "黑龙江", value: "黑龙江"}, + {label: "内蒙古", value: "内蒙古"}, + ],//全部地区 + + schoolNatureList: [ + {label: "综合类", value: "综合"}, + {label: "理工类", value: "理工"}, + {label: "医药类", value: "医药"}, + {label: "农林类", value: "农林"}, + {label: "艺术类", value: "艺术"}, + {label: "民族类", value: "民族"}, + {label: "语言类", value: "语言"}, + {label: "师范类", value: "师范"}, + {label: "财经类", value: "财经"}, + ], + + company: '河南及第生涯信息科技有限公司',//公司全称 + companySx: '及第生涯',//公司缩写 + HomeOptions: [ + { + title: "查大学", + icon: "http://files.yitisheng.vip/images/icons/xx.png", + url: "/pages/zyb/school/list" + }, + { + title: "查专业", + icon: 'http://files.yitisheng.vip/images/icons/major.png', + url: "/pages/zyb/major/list", + width: '85rpx', + }, + { + title: "省控线", + icon: 'http://files.yitisheng.vip/images/icons/skx.png', + url: "/pages/zyb/historyScoreControlLine/index" + }, + { + title: "测文化", + icon: "http://files.yitisheng.vip/images/icons/cwh.png", + url: "/pages/zyb/testCultural/index" + }, + { + title: "查位次", + icon: "http://files.yitisheng.vip/images/icons/ccw.png", + url: "/pages/zyb/other/checkRanking" + }, + { + title: "算投档", + icon: "http://files.yitisheng.vip/images/icons/jsq.png", + url: "/pages/zyb/other/calculateInvestment" + }, + /*{ + title: "招生简章", + url: "/pages/zyb/other/admissionsInformation" + },*/ + { + title: "艺考考研", + url: "/pages/zyb/npee/index" + }, + { + title: "等位分转换", + url: "/pages/zyb/dwfzh/index" + } + ],//首页菜单 + + + // 院校列表下拉搜索项 + schoolMenuData: [ + { + title: '地区', + dtype: '地区', + type: 'filter', + children: [ + { + title: "地区", + type: 'checkbox', + value: [], + options: [ + {label: "北京", value: "北京"}, + {label: "天津", value: "天津"}, + {label: "河北", value: "河北"}, + {label: "山西", value: "山西"}, + {label: "辽宁", value: "辽宁"}, + {label: "吉林", value: "吉林"}, + {label: "上海", value: "上海"}, + {label: "江苏", value: "江苏"}, + {label: "浙江", value: "浙江"}, + {label: "安徽", value: "安徽"}, + {label: "福建", value: "福建"}, + {label: "江西", value: "江西"}, + {label: "山东", value: "山东"}, + {label: "河南", value: "河南"}, + {label: "湖北", value: "湖北"}, + {label: "湖南", value: "湖南"}, + {label: "广东", value: "广东"}, + {label: "广西", value: "广西"}, + {label: "海南", value: "海南"}, + {label: "重庆", value: "重庆"}, + {label: "四川", value: "四川"}, + {label: "贵州", value: "贵州"}, + {label: "云南", value: "云南"}, + {label: "陕西", value: "陕西"}, + {label: "甘肃", value: "甘肃"}, + {label: "青海", value: "青海"}, + {label: "宁夏", value: "宁夏"}, + {label: "新疆", value: "新疆"}, + {label: "黑龙江", value: "黑龙江"}, + {label: "内蒙古", value: "内蒙古"}, + ] + }] + }, + { + title: '院校类型', + dtype: '院校类型', + type: 'filter', + children: [ + { + title: "院校类型", + type: 'checkbox', + value: [], + options: [ + {label: "综合类", value: "综合"}, + {label: "理工类", value: "理工"}, + {label: "医药类", value: "医药"}, + {label: "农林类", value: "农林"}, + {label: "艺术类", value: "艺术"}, + {label: "民族类", value: "民族"}, + {label: "语言类", value: "语言"}, + {label: "师范类", value: "师范"}, + {label: "财经类", value: "财经"},] + }], + }, + { + title: '筛选', + type: 'filter', + children: [ + { + title: "院校标签", + type: 'checkbox', + value: [], + options: [ + { + label: "211", + value: "211" + }, + { + label: "985", + value: "985" + }, + { + label: "双一流", + value: "双一流" + }, + { + label: "全国重点大学", + value: "全国重点大学" + } + ] + }, + { + title: "办学类型", + type: 'checkbox', + value: [], + options: [ + { + label: "公办", + value: "公办" + }, + { + label: "民办", + value: "民办" + }, + { + label: "中外合作办学", + value: "中外合作办学" + } + ] + }, + ] + } + ], + // 推荐志愿列表 下拉搜索项 + fillVolunteerMenuData: [ + { + title: '地区', + dtype: '地区', + type: 'filter', + children: [ + { + title: "地区", + type: 'checkbox', + value: [], + options: [ + {label: "北京", value: "北京"}, + {label: "天津", value: "天津"}, + {label: "河北", value: "河北"}, + {label: "山西", value: "山西"}, + {label: "辽宁", value: "辽宁"}, + {label: "吉林", value: "吉林"}, + {label: "上海", value: "上海"}, + {label: "江苏", value: "江苏"}, + {label: "浙江", value: "浙江"}, + {label: "安徽", value: "安徽"}, + {label: "福建", value: "福建"}, + {label: "江西", value: "江西"}, + {label: "山东", value: "山东"}, + {label: "河南", value: "河南"}, + {label: "湖北", value: "湖北"}, + {label: "湖南", value: "湖南"}, + {label: "广东", value: "广东"}, + {label: "广西", value: "广西"}, + {label: "海南", value: "海南"}, + {label: "重庆", value: "重庆"}, + {label: "四川", value: "四川"}, + {label: "贵州", value: "贵州"}, + {label: "云南", value: "云南"}, + {label: "陕西", value: "陕西"}, + {label: "甘肃", value: "甘肃"}, + {label: "青海", value: "青海"}, + {label: "宁夏", value: "宁夏"}, + {label: "新疆", value: "新疆"}, + {label: "黑龙江", value: "黑龙江"}, + {label: "内蒙古", value: "内蒙古"}, + ] + }] + }, + { + title: '筛选', + type: 'filter', + children: [{ + title: "录取方式", + type: 'radio', + value: null, + options: [ + { + label: "全部", + value: null + }, + { + label: "文过专排", + value: '文过专排' + }, + { + label: "专过文排", + value: "专过文排" + }, + ] + }, + /*{title: "进度", type: 'slider', value: 0, suffix: '%', componentProps: {max: 100,}},*/ + { + title: "院校标签", + type: 'checkbox', + value: [], + options: [ + { + label: "211", + value: "211" + }, + { + label: "985", + value: "985" + }, + { + label: "双一流", + value: "双一流" + }, + { + label: "全国重点大学", + value: "全国重点大学" + } + ] + }, + { + title: "办学类型", + type: 'checkbox', + value: [], + options: [ + { + label: "公办", + value: "公办" + }, + { + label: "民办", + value: "民办" + }, + { + label: "中外合作办学", + value: "中外合作办学" + } + ] + }, + ] + } + ], + + //加载更多状态 + loadStatusTypes: [ + { + value: 'more', + text: '加载前', + checked: true + }, { + value: 'loading', + text: '加载中', + checked: false + }, { + value: 'noMore', + text: '没有更多', + checked: false + }], + //加载更多文字描述 + loadContentText: { + contentdown: '查看更多', + contentrefresh: '加载中', + contentnomore: '没有更多' }, - { - "enrollProbability": 87.5000, - "schoolName": "云南艺术学院", - "schoolCode": "10690", - "institutionCode": "9945", - "province": "云南", - "propertyName": "公办", - "institutionType": "艺术", - "majorName": "戏剧影视美术设计", - "majorCode": "130307", - "majorRemarks": "是什么:\n\n戏剧影视美术设计主要研究戏剧、影视、舞台美术、视觉设计等方面的基本知识和技能,在剧院、电影厂、电视台等进行戏剧、戏曲、影视和其他舞台演出的美术设计,包括舞台设计、场景设计、人物形象设计、布景绘制、灯光设计、服装与化妆设计、道具设计等。\n\n学什么:\n\n《舞台影视美术设计》、《灯光设计》、《服装道具设计》、《化妆设计》、《绘画》、《绘景》、《计算机辅助设计》、《特技美术》 部分高校按以下专业方向培养:影视人物造型设计。\n\n干什么:\n\n剧院(团)、电影厂:美术设计、舞台设计、场景设计、人物形象设计、布景绘制、灯光设计。", - "planNum": 0, - "studyCost": 10000.00, - "rulesEnrollProbability": "文0.5000专1.0000", - "probabilityOperator": "文*0.50+专*1.00", - "studyYear": 4, - "historyMajorEnrollList": [ - { - "id": "1748613827055948644", - "schoolCode": "10690", - "institutionCode": "9945", - "schoolName": "云南艺术学院", - "majorCode": "130307", - "majorName": "戏剧影视美术设计", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 266.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 1, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "14", - "actualPitcherNum": 0, - "majorType": "美术类" - } - ], - "historyMajorEnrollMap": { - "2022": { - "id": "1748613827055948644", - "schoolCode": "10690", - "institutionCode": "9945", - "schoolName": "云南艺术学院", - "majorCode": "130307", - "majorName": "戏剧影视美术设计", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 266.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 1, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "14", - "actualPitcherNum": 0, - "majorType": "美术类" - } - }, - "culturalControlLine": 370.0000, - "specialControlLine": 216.0000, - "studentConvertedScore": 450.0000, - "category": "文科", - "batch": "提前批", - "enrollmentCode": "29" - }, - { - "enrollProbability": 78.1600, - "schoolName": "安徽大学", - "schoolCode": "10357", - "institutionCode": "1885", - "province": "安徽", - "propertyName": "公办", - "institutionType": "综合", - "majorName": "环境设计", - "majorCode": "130503", - "majorRemarks": "是什么:\n\n环境设计主要研究艺术学、设计学、建筑学、社会学、环境学等方面的基本知识和技能,涉及地球表层空间设计、城市规划设计、建筑设计、室内设计、室外设计、公共艺术设计等。例如:公园地形地貌、道路、假山的设计,城市公路、绿化带、建筑的规划设计,住宅、商场室内布局的设计等。关键词:公园绿化带广场住宅。\n\n学什么:\n\n《设计制图与透视》、《装饰材料与构造》、《室内环境设计》、《建筑景观设计》、《办公空间设计》、《公共艺术设计》、《材料与结构》、《环艺模型制作与材料加工》、《建筑结构原理》、《营造元素》部分高校按以下专业方向培养:美术、会展设计、景观设计、空间设计、室内设计、展示设计、环境艺术设计、建筑艺术设计、景观艺术设计、城市园林艺术设计。\n\n干什么:\n\n装修装潢类企业:室内设计、室外设计、空间设计;城建类事业单位:城市环境设计、园林艺术设计、建筑景观设计。", - "planNum": 0, - "studyCost": 8000.00, - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "studyYear": 4, - "historyMajorEnrollList": [ - { - "id": "1748613827055948214", - "schoolCode": "10357", - "institutionCode": "1885", - "schoolName": "安徽大学", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 252.0000, - "enrollNum": 4, - "admissionNum": 4, - "oneVolunteerAdmissionNum": 4, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "08", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - { - "id": "1748613827055948218", - "schoolCode": "10357", - "institutionCode": "1885", - "schoolName": "安徽大学", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2021", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 205.0000, - "admissionLine": 250.0000, - "enrollNum": 4, - "admissionNum": 4, - "oneVolunteerAdmissionNum": 4, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "08", - "actualPitcherNum": 0, - "majorType": "美术类" - } - ], - "historyMajorEnrollMap": { - "2022": { - "id": "1748613827055948214", - "schoolCode": "10357", - "institutionCode": "1885", - "schoolName": "安徽大学", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 252.0000, - "enrollNum": 4, - "admissionNum": 4, - "oneVolunteerAdmissionNum": 4, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "08", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - "2021": { - "id": "1748613827055948218", - "schoolCode": "10357", - "institutionCode": "1885", - "schoolName": "安徽大学", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2021", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 205.0000, - "admissionLine": 250.0000, - "enrollNum": 4, - "admissionNum": 4, - "oneVolunteerAdmissionNum": 4, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "08", - "actualPitcherNum": 0, - "majorType": "美术类" - } - }, - "culturalControlLine": 370.0000, - "specialControlLine": 216.0000, - "studentConvertedScore": 250.0000, - "category": "文科", - "batch": "提前批", - "enrollmentCode": "08" - }, - { - "enrollProbability": 76.6900, - "schoolName": "安徽大学", - "schoolCode": "10357", - "institutionCode": "1885", - "province": "安徽", - "propertyName": "公办", - "institutionType": "综合", - "majorName": "绘画", - "majorCode": "130402", - "majorRemarks": "是什么:\n\n绘画主要研究色彩、构图、素描、绘画等方面的基本知识和技能,涉及国画、油画、水彩画、版画等,进行插图、漫画、壁画、装饰画等的创作和绘制。例如:书籍、杂志中插图的绘制,游戏中人物立绘、场景、CG的设计与绘制,漫画的绘画与上色,室内装饰画的绘制等。 \n\n学什么:\n\n《水彩》、《人体速写》、《透视学》、《素描表现》、《插画创作》、《油画肖像写生》、《色彩静物》、《油画基础技法》、《人物素描》、《版画技法》 部分高校按以下专业方向培养:版画、动画、国画、书法、油画、鉴定与修复、新媒体艺术、壁画与公共艺术。\n\n干什么:\n\n出版社:插画绘制、美术设计; 动漫、游戏类企业:原画绘制、人物设计、CG绘制; 艺术装饰类企业:壁画绘制、装饰画绘制。", - "planNum": 0, - "studyCost": 8000.00, - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "studyYear": 4, - "historyMajorEnrollList": [ - { - "id": "1748613827055948212", - "schoolCode": "10357", - "institutionCode": "1885", - "schoolName": "安徽大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 255.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 1, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "06", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - { - "id": "1748613827055948216", - "schoolCode": "10357", - "institutionCode": "1885", - "schoolName": "安徽大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2021", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 205.0000, - "admissionLine": 245.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 0, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "06", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - { - "id": "1748613827055948220", - "schoolCode": "10357", - "institutionCode": "1885", - "schoolName": "安徽大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2020", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 206.0000, - "admissionLine": 254.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 0, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "07", - "actualPitcherNum": 0, - "majorType": "美术类" - } - ], - "historyMajorEnrollMap": { - "2022": { - "id": "1748613827055948212", - "schoolCode": "10357", - "institutionCode": "1885", - "schoolName": "安徽大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 255.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 1, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "06", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - "2021": { - "id": "1748613827055948216", - "schoolCode": "10357", - "institutionCode": "1885", - "schoolName": "安徽大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2021", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 205.0000, - "admissionLine": 245.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 0, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "06", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - "2020": { - "id": "1748613827055948220", - "schoolCode": "10357", - "institutionCode": "1885", - "schoolName": "安徽大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2020", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 206.0000, - "admissionLine": 254.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 0, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "07", - "actualPitcherNum": 0, - "majorType": "美术类" - } - }, - "culturalControlLine": 370.0000, - "specialControlLine": 216.0000, - "studentConvertedScore": 250.0000, - "category": "文科", - "batch": "提前批", - "enrollmentCode": "06" - }, - { - "enrollProbability": 75.9600, - "schoolName": "河南大学", - "schoolCode": "10475", - "institutionCode": "6005", - "province": "河南", - "propertyName": "公办", - "institutionType": "综合", - "majorName": "绘画", - "majorCode": "130402", - "majorRemarks": "是什么:\n\n绘画主要研究色彩、构图、素描、绘画等方面的基本知识和技能,涉及国画、油画、水彩画、版画等,进行插图、漫画、壁画、装饰画等的创作和绘制。例如:书籍、杂志中插图的绘制,游戏中人物立绘、场景、CG的设计与绘制,漫画的绘画与上色,室内装饰画的绘制等。 \n\n学什么:\n\n《水彩》、《人体速写》、《透视学》、《素描表现》、《插画创作》、《油画肖像写生》、《色彩静物》、《油画基础技法》、《人物素描》、《版画技法》 部分高校按以下专业方向培养:版画、动画、国画、书法、油画、鉴定与修复、新媒体艺术、壁画与公共艺术。\n\n干什么:\n\n出版社:插画绘制、美术设计; 动漫、游戏类企业:原画绘制、人物设计、CG绘制; 艺术装饰类企业:壁画绘制、装饰画绘制。", - "planNum": 0, - "studyCost": 8000.00, - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "studyYear": 4, - "historyMajorEnrollList": [ - { - "id": "1748613827055948463", - "schoolCode": "10475", - "institutionCode": "6005", - "schoolName": "河南大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文0.0670专0.1670", - "probabilityOperator": "文*0.0670+专*0.1670", - "controlLine": 58.5200, - "admissionLine": 67.8000, - "enrollNum": 25, - "admissionNum": 25, - "oneVolunteerAdmissionNum": 25, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "21", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - { - "id": "1748613827055948466", - "schoolCode": "10475", - "institutionCode": "6005", - "schoolName": "河南大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2021", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 205.0000, - "admissionLine": 268.0000, - "enrollNum": 20, - "admissionNum": 23, - "oneVolunteerAdmissionNum": 23, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "21", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - { - "id": "1748613827055948470", - "schoolCode": "10475", - "institutionCode": "6005", - "schoolName": "河南大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2020", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 206.0000, - "admissionLine": 268.0000, - "enrollNum": 20, - "admissionNum": 25, - "oneVolunteerAdmissionNum": 25, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "22", - "actualPitcherNum": 0, - "majorType": "美术类" - } - ], - "historyMajorEnrollMap": { - "2022": { - "id": "1748613827055948463", - "schoolCode": "10475", - "institutionCode": "6005", - "schoolName": "河南大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文0.0670专0.1670", - "probabilityOperator": "文*0.0670+专*0.1670", - "controlLine": 58.5200, - "admissionLine": 67.8000, - "enrollNum": 25, - "admissionNum": 25, - "oneVolunteerAdmissionNum": 25, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "21", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - "2021": { - "id": "1748613827055948466", - "schoolCode": "10475", - "institutionCode": "6005", - "schoolName": "河南大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2021", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 205.0000, - "admissionLine": 268.0000, - "enrollNum": 20, - "admissionNum": 23, - "oneVolunteerAdmissionNum": 23, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "21", - "actualPitcherNum": 0, - "majorType": "美术类" - }, - "2020": { - "id": "1748613827055948470", - "schoolCode": "10475", - "institutionCode": "6005", - "schoolName": "河南大学", - "majorCode": "130402", - "majorName": "绘画", - "year": "2020", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 206.0000, - "admissionLine": 268.0000, - "enrollNum": 20, - "admissionNum": 25, - "oneVolunteerAdmissionNum": 25, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "22", - "actualPitcherNum": 0, - "majorType": "美术类" - } - }, - "culturalControlLine": 370.0000, - "specialControlLine": 216.0000, - "studentConvertedScore": 250.0000, - "category": "文科", - "batch": "提前批", - "enrollmentCode": "25" - }, - { - "enrollProbability": 75.5600, - "schoolName": "云南艺术学院", - "schoolCode": "10690", - "institutionCode": "9945", - "province": "云南", - "propertyName": "公办", - "institutionType": "艺术", - "majorName": "中国画", - "majorCode": "130406", - "majorRemarks": "是什么:\n\n中国画主要研究中国画构图、布局、配色、绘画技法等方面的基本知识和技能,包括水墨人物画、工笔人物画、山水画、花鸟画等,进行国画的创作、鉴定、宣传以及书刊的美术编辑等。例如:人物画、山水画等国画的绘制,齐白石、张大千等名家作品的真伪鉴定,书刊的国画封面、插图的设计、绘制等。\n学什么:\n\n《中国画论》、《人物画》、《山水画》、《花鸟画》、《中国画造型》、《中国工笔花鸟画》、《中国写意花鸟画》、《书法篆刻》、《中外美术史》、《中国古典诗词》\n\n干什么:\n\n艺术、文化类事业单位:国画创作、美术普及、文化宣传; 艺术品鉴定机构:国画鉴定; 出版社、报刊社:美术编辑。", - "planNum": 0, - "studyCost": 10000.00, - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "studyYear": 4, - "historyMajorEnrollList": [ - { - "id": "1748613827055948649", - "schoolCode": "10690", - "institutionCode": "9945", - "schoolName": "云南艺术学院", - "majorCode": "130406", - "majorName": "中国画", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 255.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 1, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "19", - "actualPitcherNum": 0, - "majorType": "美术类" - } - ], - "historyMajorEnrollMap": { - "2022": { - "id": "1748613827055948649", - "schoolCode": "10690", - "institutionCode": "9945", - "schoolName": "云南艺术学院", - "majorCode": "130406", - "majorName": "中国画", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 255.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 1, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "19", - "actualPitcherNum": 0, - "majorType": "美术类" - } - }, - "culturalControlLine": 370.0000, - "specialControlLine": 216.0000, - "studentConvertedScore": 250.0000, - "category": "文科", - "batch": "提前批", - "enrollmentCode": "34" - }, - { - "enrollProbability": 73.9100, - "schoolName": "云南艺术学院", - "schoolCode": "10690", - "institutionCode": "9945", - "province": "云南", - "propertyName": "公办", - "institutionType": "艺术", - "majorName": "环境设计", - "majorCode": "130503", - "majorRemarks": "是什么:\n\n环境设计主要研究艺术学、设计学、建筑学、社会学、环境学等方面的基本知识和技能,涉及地球表层空间设计、城市规划设计、建筑设计、室内设计、室外设计、公共艺术设计等。例如:公园地形地貌、道路、假山的设计,城市公路、绿化带、建筑的规划设计,住宅、商场室内布局的设计等。关键词:公园绿化带广场住宅。\n\n学什么:\n\n《设计制图与透视》、《装饰材料与构造》、《室内环境设计》、《建筑景观设计》、《办公空间设计》、《公共艺术设计》、《材料与结构》、《环艺模型制作与材料加工》、《建筑结构原理》、《营造元素》部分高校按以下专业方向培养:美术、会展设计、景观设计、空间设计、室内设计、展示设计、环境艺术设计、建筑艺术设计、景观艺术设计、城市园林艺术设计。\n\n干什么:\n\n装修装潢类企业:室内设计、室外设计、空间设计;城建类事业单位:城市环境设计、园林艺术设计、建筑景观设计。", - "planNum": 0, - "studyCost": 10000.00, - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "studyYear": 4, - "historyMajorEnrollList": [ - { - "id": "1748613827055948651", - "schoolCode": "10690", - "institutionCode": "9945", - "schoolName": "云南艺术学院", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 256.0000, - "enrollNum": 2, - "admissionNum": 3, - "oneVolunteerAdmissionNum": 3, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "21", - "actualPitcherNum": 0, - "majorType": "美术类" - } - ], - "historyMajorEnrollMap": { - "2022": { - "id": "1748613827055948651", - "schoolCode": "10690", - "institutionCode": "9945", - "schoolName": "云南艺术学院", - "majorCode": "130503", - "majorName": "环境设计", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 256.0000, - "enrollNum": 2, - "admissionNum": 3, - "oneVolunteerAdmissionNum": 3, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "21", - "actualPitcherNum": 0, - "majorType": "美术类" - } - }, - "culturalControlLine": 370.0000, - "specialControlLine": 216.0000, - "studentConvertedScore": 250.0000, - "category": "文科", - "batch": "提前批", - "enrollmentCode": "36" - }, - { - "enrollProbability": 72.3400, - "schoolName": "云南艺术学院", - "schoolCode": "10690", - "institutionCode": "9945", - "province": "云南", - "propertyName": "公办", - "institutionType": "艺术", - "majorName": "美术学(史论)", - "majorCode": "130401", - "majorRemarks": "是什么:\n\n美术学主要研究美术学、艺术学、美术史论等方面的基本知识和技能,进行美术评论、美术编辑、艺术管理、美术研究与教学等。例如:字画、雕塑等艺术作品的点评,报刊、杂志等版面的美术设计,唐伯虎字画、清朝瓷器等古董的真伪鉴定,博物馆文物的管理保养等。 \n\n学什么:\n\n《素描静物》、《书法、篆刻》、《透视学》、《书法史》、《工笔花鸟》、《线性人物素描》、《艺术品鉴定》、《油画创作》、《工艺美术》、《世界美术史》 部分高校按以下专业方向培养:国画、书法、小教、油画、美术教育、实用绘画、数字绘画、艺术设计、美术与服装、美术与装潢。\n\n干什么:\n\n美术类单位:美术评论、艺术管理、艺术品鉴定; 出版社:美术编辑、版面设计; 大、中小学校:美术教学、美术研究。", - "planNum": 0, - "studyCost": 10000.00, - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "studyYear": 4, - "historyMajorEnrollList": [ - { - "id": "1748613827055948645", - "schoolCode": "10690", - "institutionCode": "9945", - "schoolName": "云南艺术学院", - "majorCode": "130401", - "majorName": "美术学(史论)", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 257.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 1, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "15", - "actualPitcherNum": 0, - "majorType": "美术类" - } - ], - "historyMajorEnrollMap": { - "2022": { - "id": "1748613827055948645", - "schoolCode": "10690", - "institutionCode": "9945", - "schoolName": "云南艺术学院", - "majorCode": "130401", - "majorName": "美术学(史论)", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 257.0000, - "enrollNum": 1, - "admissionNum": 1, - "oneVolunteerAdmissionNum": 1, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "15", - "actualPitcherNum": 0, - "majorType": "美术类" - } - }, - "culturalControlLine": 370.0000, - "specialControlLine": 216.0000, - "studentConvertedScore": 250.0000, - "category": "文科", - "batch": "提前批", - "enrollmentCode": "31" - }, - { - "enrollProbability": 70.8300, - "schoolName": "云南艺术学院", - "schoolCode": "10690", - "institutionCode": "9945", - "province": "云南", - "propertyName": "公办", - "institutionType": "艺术", - "majorName": "绘画", - "majorCode": "130402", - "majorRemarks": "是什么:\n\n绘画主要研究色彩、构图、素描、绘画等方面的基本知识和技能,涉及国画、油画、水彩画、版画等,进行插图、漫画、壁画、装饰画等的创作和绘制。例如:书籍、杂志中插图的绘制,游戏中人物立绘、场景、CG的设计与绘制,漫画的绘画与上色,室内装饰画的绘制等。 \n\n学什么:\n\n《水彩》、《人体速写》、《透视学》、《素描表现》、《插画创作》、《油画肖像写生》、《色彩静物》、《油画基础技法》、《人物素描》、《版画技法》 部分高校按以下专业方向培养:版画、动画、国画、书法、油画、鉴定与修复、新媒体艺术、壁画与公共艺术。\n\n干什么:\n\n出版社:插画绘制、美术设计; 动漫、游戏类企业:原画绘制、人物设计、CG绘制; 艺术装饰类企业:壁画绘制、装饰画绘制。", - "planNum": 0, - "studyCost": 10000.00, - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "studyYear": 4, - "historyMajorEnrollList": [ - { - "id": "1748613827055948646", - "schoolCode": "10690", - "institutionCode": "9945", - "schoolName": "云南艺术学院", - "majorCode": "130402", - "majorName": "绘画", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 258.0000, - "enrollNum": 4, - "admissionNum": 5, - "oneVolunteerAdmissionNum": 5, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "16", - "actualPitcherNum": 0, - "majorType": "美术类" - } - ], - "historyMajorEnrollMap": { - "2022": { - "id": "1748613827055948646", - "schoolCode": "10690", - "institutionCode": "9945", - "schoolName": "云南艺术学院", - "majorCode": "130402", - "majorName": "绘画", - "year": "2022", - "category": "文科", - "rulesEnrollProbability": "文过专排", - "probabilityOperator": null, - "controlLine": 210.0000, - "admissionLine": 258.0000, - "enrollNum": 4, - "admissionNum": 5, - "oneVolunteerAdmissionNum": 5, - "scoreLineDifference": 0.00, - "detail": null, - "createBy": "admin", - "createTime": "2024-01-20 15:50:05", - "updateBy": null, - "updateTime": null, - "sysOrgCode": "A01", - "batch": "提前批", - "enrollmentCode": "16", - "actualPitcherNum": 0, - "majorType": "美术类" - } - }, - "culturalControlLine": 370.0000, - "specialControlLine": 216.0000, - "studentConvertedScore": 250.0000, - "category": "文科", - "batch": "提前批", - "enrollmentCode": "32" - } -], + } diff --git a/common/css/gitPro.sh b/common/css/gitPro.sh new file mode 100644 index 0000000..44134f0 --- /dev/null +++ b/common/css/gitPro.sh @@ -0,0 +1,86 @@ +#! /bin/sh + +### BEGIN INIT INFO +# Description: 重启部署脚本 +#执行教程: +#1.放到/server/research/gitPro.sh +#2.chmod -R 755 /server/research/gitPro.sh +#3. 直接执行 /server/research/gitPro.sh restart + +### END INIT INFO +# 主目录 脚本所在目录 +master_home_prefix=/server/research +# research 安装目录 代码根目录 +research_prefix=/server/research/spider-flow-cloud +# maven 目录 +maven_prefix=/usr/local/apache-maven-3.8.5 +currentTimeStamp='' +jar_name=research-web.jar + +# JVM参数 +JVM_OPTS="-Duser.timezone=Asia/Shanghai" +#jar 运行日志打印 +LOG_PATH=/server/research/nohup.out +#jar 运行pid进程 +JAVAPID=/server/research/rjava.pid +function getTime() { + current=`date "+%Y-%m-%d %H:%M:%S"` + timeStamp=`date -d "$current" +%s` + #将current转换为时间戳,精确到毫秒 + currentTimeStamp=$((timeStamp*1000+`date "+%N"`/1000000)) + return $currentTimeStamp +} + +case "$1" in + start) + getTime + echo "start research service" + echo "====================================>>>>>>>>" + #进入项目目录 + cd $research_prefix + #拉取代码 + git pull + echo "拉取最新代码" + echo "====================================>>>>>>>>" + #maven 打包 + $maven_prefix/bin/mvn package + echo "正在maven打包" + echo "====================================>>>>>>>>" + + # 判断旧的jar包是否存在 #! + if [ -f "$master_home_prefix/$jar_name" ]; then + echo "备份上一次的jar包" + echo "====================================>>>>>>>>" + #存在,做备份 + mv $master_home_prefix/$jar_name $master_home_prefix/$jar_name-$currentTimeStamp + fi + #移动jar包 + echo "复制新的jar包至 $master_home_prefix/$jar_name" + echo "====================================>>>>>>>>" + mv $research_prefix/research-web/target/$jar_name $master_home_prefix/$jar_name + #启动jar包 + echo "启动jar包" + echo "====================================>>>>>>>>" + nohup java -jar $JVM_OPTS $master_home_prefix/$jar_name > $LOG_PATH 2>&1 & echo $! > $JAVAPID & + #追踪打印日志 + tail -f $LOG_PATH + ;; + stop) + echo "stop research service" + echo "====================================>>>>>>>>" + echo "停止jar进程 `cat $JAVAPID`" + echo "====================================>>>>>>>>" + kill -9 `cat $JAVAPID` + echo "====================================>>>>>>>>" + echo "已停止" + ;; + restart) + $0 stop + echo "====================================>>>>>>>>" + $0 start + echo "====================================>>>>>>>>" + ;; +esac + + + diff --git a/common/css/my-color.css b/common/css/my-color.css new file mode 100644 index 0000000..8cb7d16 --- /dev/null +++ b/common/css/my-color.css @@ -0,0 +1,67 @@ +/*颜色类型css*/ +/*字体颜色 start*/ +.darkturquoise { + color: darkturquoise !important; +} + +.blue { + color: #4975fd !important; +} + +.green { + color: #3e8e43 !important; +} + +.red { + color: red !important; +} + +.orange { + color: #f9ca1b !important; +} + +.redOrange { + color: #f2891b !important; +} + +.white { + color: white; +} +.black{ + color: black; +} +.brown { + color: #6e3c14; +} + +.lightSlateGray { + color: #778899; +} + +.slateGray { + color: #708090; +} + +.shiFengGreen { + color: #42c6c6; +} + +/*字体颜色 end*/ + + +/*背景 start*/ +.background-white { + background-color: white; +} + +.background-red2 { + background-color: #df4e44; +} +.background-f6f6f6{ + background-color: #f6f6f6; +} + +.background-fafafa{ + background-color: #fafafa; +} +/*背景 end*/ diff --git a/common/css/uni2.css b/common/css/uni2.css new file mode 100644 index 0000000..6e74b21 --- /dev/null +++ b/common/css/uni2.css @@ -0,0 +1,380 @@ +.flex { + display: flex; + /*flex-direction: row; + flex-wrap: wrap;*/ +} +.flexWrap{ + display: flex; + flex-direction: row; + flex-wrap: wrap +} +/*自定义宽度*/ +.flex-item-1 { + width: 10%; +} + +.flex-item-15 { + width: 15%; +} + +.flex-item-17 { + width: 17%; +} + +.flex-item-2 { + width: 20%; +} + +.flex-item-21 { + width: 21%; +} + +.flex-item-22 { + width: 22%; +} + +.flex-item-25 { + width: 25%; +} + +.flex-item-3 { + width: 30%; +} + +.flex-item-33 { + width: 33%; +} + +.flex-item-35 { + width: 35%; +} + +.flex-item-4 { + width: 40%; +} + +.flex-item-45 { + width: 45%; +} + +.flex-item-5 { + width: 50%; +} + +.flex-item-55 { + width: 55%; +} + +.flex-item-58 { + width: 58%; +} + +.flex-item-6 { + width: 60%; +} + +.flex-item-65 { + width: 65%; +} + +.flex-item-7 { + width: 70%; +} + +.flex-item-73 { + width: 73%; +} + +.flex-item-75 { + width: 75%; +} + +.flex-item-77 { + width: 77%; +} + +.flex-item-8 { + width: 80%; +} + +.flex-item-9 { + width: 90%; +} + +.flex-item-10 { + width: 100%; +} + + +.marginCenter { + margin: 0 auto; +} + + +/*内边距*/ +.padding20 { + padding: 20rpx; +} + +.padding30 { + padding: 30rpx; +} + +.padding50 { + padding: 50rpx; +} + +.padding10-30 { + padding: 10rpx 30rpx; +} + +.padding20-10 { + padding: 20rpx 10rpx; +} + +.padding20-30 { + padding: 20rpx 30rpx; +} + +.padding50-30 { + padding: 50rpx 30rpx; +} + +.padding50-100 { + padding: 50rpx 100rpx; +} + +/*外边距*/ +.margin20 { + margin: 20rpx; +} + +.margin30 { + margin: 30rpx; +} + +.margin-right-10 { + margin-right: 10rpx; +} + +.margin-top-300 { + margin-top: 300rpx; +} + +.marginTopBot10 { + margin: 10rpx 0; +} + +.marginTopBot20 { + margin: 20rpx 0; +} + +.marginTopBot30 { + margin: 30rpx 0; +} + +.marginRight { + margin: 0 0 0 auto; +} + +.float-right { + float: right; +} + +.m-card { + background-color: white; + border-radius: 30rpx; +} + +/*字体大小 Start*/ +.font-size-mini-mini { + font-size: 23rpx !important; +} + +.font-size-mini { + font-size: 25rpx !important; +} + +.font-size-mini2 { + font-size: 28rpx !important; +} +.font-size-mini3 { + font-size: 30rpx !important; +} +.font-size-mini4 { + font-size: 32rpx !important; +} + +.font-size-medium { + font-size: 40rpx !important; +} + +.font-size-big { + font-size: 50rpx !important; +} + +.font-size-big2 { + font-size: 70rpx !important; +} + +/*字体大小 End*/ +/*字体粗细 Start*/ +.font-weight-500 { + font-weight: 500; +} + +.font-weight-520 { + font-weight: 520; +} + +.font-weight-550 { + font-weight: 550; +} + +.font-weight-600 { + font-weight: 600; +} + +.font-weight-b { + font-weight: bold; +} + +/*字体粗细 End*/ + + +/*标题*/ +.z-h6 { + font-weight: 600; + font-size: 35rpx; + display: flex; +} + +/*图片64rpx*/ +.icon32 { + width: 32rpx; + height: 32rpx; + vertical-align: middle; +} + +.icon50 { + width: 50rpx; + height: 50rpx; + vertical-align: middle; +} + +.icon64 { + width: 64rpx; + height: 64rpx; + vertical-align: middle; +} + +.icon100 { + width: 100rpx; + height: 100rpx; + vertical-align: middle; +} + +.icon128 { + width: 128rpx; + height: 128rpx; + vertical-align: middle; +} + +.not-border { + border: none !important; +} + +/*通用上边框*/ +.border-top { + border-top: 2rpx solid #f2f2f2; +} + +.border-bottom { + border-bottom: 2rpx solid #f2f2f2; +} + +.radius2 { + border-radius: 2rpx; +} + +.radius5 { + border-radius: 5rpx; +} + +.radius8 { + border-radius: 8rpx; +} + +.radius60 { + border-radius: 60rpx; +} + +.radius50s { + border-radius: 50%; +} + +/*tabs 栏 start*/ +.top-menu-view { + display: flex; + /*position: fixed;*/ + z-index: 100; + /*top: 84rpx;*/ + /* #ifdef H5 */ + top: 84rpx; + /* #endif */ + /* #ifndef H5 */ + top: 0rpx; + /* #endif */ + left: 0; + white-space: nowrap; + width: 100%; + background-color: white; + height: 86rpx; + line-height: 86rpx; + /*border-top: 1rpx solid #d8dbe6;*/ + border-bottom: 1px solid #f5f5f5; +} + +.top-menu-view .menu-topic-view { + display: inline-block; + white-space: nowrap; + height: 86rpx; + position: relative; + width: 50%; + text-align: center; + +} + +.top-menu-view .menu-topic-view .menu-topic-text { + font-size: 30rpx; + color: #303133; + padding: 10rpx 40rpx; + font-weight: 500; +} + +.top-menu-view .menu-topic-view .menu-topic-bottom { + position: absolute; + bottom: 0; + width: 100%; +} + +.top-menu-view .menu-topic-view .menu-topic-bottom-color { + width: 40rpx; + height: 4rpx; +} + +.top-menu-view .menu-topic-view .menu-topic-act .menu-topic-bottom { + display: flex; + justify-content: center; +} + +.top-menu-view .menu-topic-view .menu-topic-act .menu-topic-text { + color: #4975fd; +} + +.top-menu-view .menu-topic-view .menu-topic-act .menu-topic-bottom-color { + background: #4975fd; +} + +/*tabs 栏 end*/ + diff --git a/common/operate.js b/common/operate.js index ee42fb9..e82d1e6 100644 --- a/common/operate.js +++ b/common/operate.js @@ -1,17 +1,10 @@ export default { //接口 - api: "http://127.0.0.1:8080/jeecg-boot/", - /*api: function () { - let version = wx.getAccountInfoSync().miniProgram.envVersion; - switch (version) { - case "dev": //开发预览版 - return "http://127.0.0.1:8080/jeecg-boot/" - break; - case 'prod': //正式版 - return "http://127.0.0.1:8080/jeecg-boot/" - break; - default: //未知,默认调用正式版 - return "http://127.0.0.1:8080/jeecg-boot/" - } - }*/ + // api: "http://127.0.0.1:8080/jeecg-boot/",//本地 + // api: "https://yitisheng.vip/jbt/",//生产环境 + api :"https://yitisheng.vip//jbttest/",//测试环境 + + // 图片服务器 + file:'http://files.yitisheng.vip', } + diff --git a/common/request.js b/common/request.js index 5a219ff..2c07541 100644 --- a/common/request.js +++ b/common/request.js @@ -1,10 +1,10 @@ /*网络请求*/ import operate from '@/common/operate' +import {stringIsNotEmpty} from "@/common/util"; // vuex 的使用 详情参考官网 https://uniapp.dcloud.io/vue-vuex -import store from '../store/index.js' -let token= uni.getStorageSync('token') -token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MDU4ODQ5MDYsInVzZXJuYW1lIjoid2FuZ3hpYW9taW5nIn0.jRSoihlbs08ONDIsrk2U3l3pw8ZQK2Z1Oc2-mQaf7pw' + export default class Request { + http(param) { // 请求参数 var url = param.url, @@ -13,17 +13,15 @@ export default class Request { 'X-Access-Token':param.token || "", }, data = param.data || {}, - hideLoading = param.hideLoading || false; + showLoading = param.showLoad || true; + //hideLoading = param.hideLoading || false; /*token = param.token || "",*/ //拼接完整请求地址 var requestUrl = operate.api + url; - console.log(requestUrl) + //console.log(requestUrl) //拼接完整请求地址(根据环境切换) - // var requestUrl = operate.api() + url; - //请求方式:GET或POST(POST需配置 - // header: {'content-type' : "application/x-www-form-urlencoded"},) if (method) { method = method.toUpperCase(); //小写改为大写 if (method === "POST") { @@ -34,7 +32,7 @@ export default class Request { } //加载圈 - if (!hideLoading) { + if (showLoading) { uni.showLoading({ title: '加载中...' }); @@ -42,6 +40,7 @@ export default class Request { // 返回promise return new Promise((resolve, reject) => { + // 请求 uni.request({ url: requestUrl, @@ -50,34 +49,56 @@ export default class Request { header: header, success: (res) => { console.log('执行http请求') - // 判断 请求api 格式是否正确 - /*if (res.statusCode && res.statusCode != 200) { - uni.showToast({ - title: "api错误" + res.errMsg, - icon: 'none' - }); + let jsons= JSON.stringify(res) + //如果 nginx启动了,后端服务没有启动 + if (jsons.includes('502 Bad Gateway')) { + //跳转到维护页面 + wx.reLaunch({ + url: '/pages/error/serviceDown', + }) return; - }*/ + } + + + if (res.data && res.data.code === 401) { + //请登录 + wx.reLaunch({ + url: '/pages/zyb/login', + }) + return; + } // 将结果抛出 resolve(res.data) }, //请求失败 fail: (e) => { - uni.showToast({ - title: "" + e.data.msg, - icon: 'none' - }); + console.log('e:') + console.log(e) + if (e && e.errMsg === 'request:fail ') { + //服务未启动 + //跳转到维护页面 + wx.reLaunch({ + url: '/pages/error/serviceDown', + }) + return; + }else{ + uni.showToast({ + title: "" + e.data.msg, + icon: 'none' + }); + } resolve(e.data); }, //请求完成 complete() { //隐藏加载 - if (!hideLoading) { + if (showLoading) { uni.hideLoading(); } resolve(); return; - } + }, + }) }) } @@ -85,14 +106,14 @@ export default class Request { options.method='get'; options.data=data; options.url=url; - options.token=token; + options.token=uni.getStorageSync('token'); return this.http(options); } get(url,data,headers={},options={}){ options.method='get'; options.data=data; options.url=url; - options.token=token; + options.token=uni.getStorageSync('token'); return this.http(options); } @@ -100,7 +121,15 @@ export default class Request { options.method='post'; options.data=data; options.url=url; - options.token=token; + options.token=uni.getStorageSync('token'); + return this.http(options); + } + post(url,data,showLoad,options={}){ + options.method='post'; + options.data=data; + options.url=url; + options.showLoad = showLoad; + options.token=uni.getStorageSync('token'); return this.http(options); } @@ -108,7 +137,7 @@ export default class Request { options.method='post'; options.data=data; options.url=url; - options.token=token; + options.token=uni.getStorageSync('token'); return this.http(options); } @@ -116,7 +145,7 @@ export default class Request { options.method='delete'; options.data=data; options.url=url; - options.token=token; + options.token=uni.getStorageSync('token'); return this.http(options); } } diff --git a/common/uni.css b/common/uni.css index 534f524..4414e9b 100644 --- a/common/uni.css +++ b/common/uni.css @@ -1456,54 +1456,3 @@ radio-group label, checkbox-group label{ .left-win-active text{ color: #007AFF !important; } - -.frow .flex-item-1 { - width: 10%; -} - -.frow .flex-item-2 { - width: 20%; -} - -.frow .flex-item-25 { - width: 25%; -} - -.frow .flex-item-3 { - width: 30%; -} -.frow .flex-item-33 { - width: 33%; -} - -.frow .flex-item-35 { - width: 35%; -} - -.frow .flex-item-4 { - width: 40%; -} - -.frow .flex-item-5 { - width: 50%; -} - -.frow .flex-item-6 { - width: 60%; -} - -.frow .flex-item-65 { - width: 65%; -} - -.frow .flex-item-7 { - width: 70%; -} - -.frow .flex-item-8 { - width: 80%; -} - -.frow .flex-item-9 { - width: 90%; -} diff --git a/common/util.js b/common/util.js index eddb458..df663d8 100644 --- a/common/util.js +++ b/common/util.js @@ -66,8 +66,60 @@ var dateUtils = { } }; + +/** + * 判断 字符串 是否为空 + * @param e + * @returns {boolean} + */ +function stringIsNotEmpty(e){ + if (e === undefined || e === '') { + return false; + } + return true; +} + +/** + * 判断数组 是覅为空, + * @param array + * @returns {boolean} true:不为空,false:为空 + */ +function arrayIsNotEmpty(array){ + if (array === undefined || array.length === 0) { + return false; + } + return array.length !== 0; +} + +/** + * 缩写年份 + * @param year 完整的年份 //2023,2022,2021.... + * @returns {string} //23,22,21.... + */ +function yearAbridge(year){ + if ('2020' === year) { + return '20' + }else if('2021' === year){ + return '21' + }else if('2022' === year){ + return '22' + }else if('2023' === year){ + return '23' + }else if('2024' === year){ + return '24' + }else if('2025' === year) { + return '25' + }else if('2026' === year){ + return '26' + } + return '未知' +} + export { formatTime, formatLocation, - dateUtils + dateUtils, + arrayIsNotEmpty, + stringIsNotEmpty, + yearAbridge } diff --git a/components/mote-lines-divide/mote-lines-divide.vue b/components/mote-lines-divide/mote-lines-divide.vue new file mode 100644 index 0000000..f37b091 --- /dev/null +++ b/components/mote-lines-divide/mote-lines-divide.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/components/my-checkvip/my-checkvip.vue b/components/my-checkvip/my-checkvip.vue new file mode 100644 index 0000000..4a122bc --- /dev/null +++ b/components/my-checkvip/my-checkvip.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/components/my-menu/my-menu.vue b/components/my-menu/my-menu.vue new file mode 100644 index 0000000..ddbe51e --- /dev/null +++ b/components/my-menu/my-menu.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/components/my-top-button.vue b/components/my-top-button.vue new file mode 100644 index 0000000..452578b --- /dev/null +++ b/components/my-top-button.vue @@ -0,0 +1,34 @@ + + + + + + diff --git a/components/u-charts/u-charts.js b/components/u-charts/u-charts.js deleted file mode 100644 index 3b1b798..0000000 --- a/components/u-charts/u-charts.js +++ /dev/null @@ -1,5046 +0,0 @@ -/* - * uCharts v1.8.5.20190815 - * uni-app平台高性能跨全端图表,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360) - * Copyright (c) 2019 QIUN秋云 https://www.ucharts.cn All rights reserved. - * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) - * - * uCharts官方网站 - * https://www.uCharts.cn - * - * 开源地址: - * https://gitee.com/uCharts/uCharts - * - * uni-app插件市场地址: - * http://ext.dcloud.net.cn/plugin?id=271 - * - */ - -'use strict'; - -var config = { - yAxisWidth: 15, - yAxisSplit: 5, - xAxisHeight: 15, - xAxisLineHeight: 15, - legendHeight: 15, - yAxisTitleWidth: 15, - padding: [10, 10, 10, 10], - pixelRatio: 1, - rotate: false, - columePadding: 3, - fontSize: 13, - //dataPointShape: ['diamond', 'circle', 'triangle', 'rect'], - dataPointShape: ['circle', 'circle', 'circle', 'circle'], - colors: ['#1890ff', '#2fc25b', '#facc14', '#f04864', '#8543e0', '#90ed7d'], - pieChartLinePadding: 15, - pieChartTextPadding: 5, - xAxisTextPadding: 3, - titleColor: '#333333', - titleFontSize: 20, - subtitleColor: '#999999', - subtitleFontSize: 15, - toolTipPadding: 3, - toolTipBackground: '#000000', - toolTipOpacity: 0.7, - toolTipLineHeight: 20, - radarGridCount: 3, - radarLabelTextMargin: 15, - gaugeLabelTextMargin: 15 -}; - -let assign; -if (Object.assign) { - assign = Object.assign; -} else { - // 使用polyfill - assign = function(target, varArgs) { - if (target == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - var to = Object(target); - for (var index = 1; index < arguments.length; index++) { - var nextSource = arguments[index]; - if (nextSource != null) { - for (var nextKey in nextSource) { - if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { - to[nextKey] = nextSource[nextKey]; - } - } - } - } - return to; - } -} - -var util = { - toFixed: function toFixed(num, limit) { - limit = limit || 2; - if (this.isFloat(num)) { - num = num.toFixed(limit); - } - return num; - }, - isFloat: function isFloat(num) { - return num % 1 !== 0; - }, - approximatelyEqual: function approximatelyEqual(num1, num2) { - return Math.abs(num1 - num2) < 1e-10; - }, - isSameSign: function isSameSign(num1, num2) { - return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2; - }, - isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) { - return this.isSameSign(p1.x, p2.x); - }, - isCollision: function isCollision(obj1, obj2) { - obj1.end = {}; - obj1.end.x = obj1.start.x + obj1.width; - obj1.end.y = obj1.start.y - obj1.height; - obj2.end = {}; - obj2.end.x = obj2.start.x + obj2.width; - obj2.end.y = obj2.start.y - obj2.height; - var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y; - return !flag; - } -}; - -//兼容H5点击事件 -function getH5Offset(e) { - e.mp = { - changedTouches: [] - }; - e.mp.changedTouches.push({ - x: e.offsetX, - y: e.offsetY - }); - return e; -} - -// hex 转 rgba -function hexToRgb(hexValue, opc) { - var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; - var hex = hexValue.replace(rgx, function(m, r, g, b) { - return r + r + g + g + b + b; - }); - var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - var r = parseInt(rgb[1], 16); - var g = parseInt(rgb[2], 16); - var b = parseInt(rgb[3], 16); - return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')'; -} - -function findRange(num, type, limit) { - if (isNaN(num)) { - throw new Error('[uCharts] unvalid series data!'); - } - limit = limit || 10; - type = type ? type : 'upper'; - var multiple = 1; - while (limit < 1) { - limit *= 10; - multiple *= 10; - } - if (type === 'upper') { - num = Math.ceil(num * multiple); - } else { - num = Math.floor(num * multiple); - } - while (num % limit !== 0) { - if (type === 'upper') { - num++; - } else { - num--; - } - } - return num / multiple; -} - -function calCandleMA(dayArr, nameArr, colorArr, kdata) { - let seriesTemp = []; - for (let k = 0; k < dayArr.length; k++) { - let seriesItem = { - data: [], - name: nameArr[k], - color: colorArr[k] - }; - for (let i = 0, len = kdata.length; i < len; i++) { - if (i < dayArr[k]) { - seriesItem.data.push(null); - continue; - } - let sum = 0; - for (let j = 0; j < dayArr[k]; j++) { - sum += kdata[i - j][1]; - } - seriesItem.data.push(+(sum / dayArr[k]).toFixed(3)); - } - seriesTemp.push(seriesItem); - } - return seriesTemp; -} - -function calValidDistance(distance, chartData, config, opts) { - var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3]; - var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length-1); - var validDistance = distance; - if (distance >= 0) { - validDistance = 0; - } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) { - validDistance = dataChartAreaWidth - dataChartWidth; - } - return validDistance; -} - -function isInAngleRange(angle, startAngle, endAngle) { - function adjust(angle) { - while (angle < 0) { - angle += 2 * Math.PI; - } - while (angle > 2 * Math.PI) { - angle -= 2 * Math.PI; - } - return angle; - } - angle = adjust(angle); - startAngle = adjust(startAngle); - endAngle = adjust(endAngle); - if (startAngle > endAngle) { - endAngle += 2 * Math.PI; - if (angle < startAngle) { - angle += 2 * Math.PI; - } - } - return angle >= startAngle && angle <= endAngle; -} - -function calRotateTranslate(x, y, h) { - var xv = x; - var yv = h - y; - var transX = xv + (h - yv - xv) / Math.sqrt(2); - transX *= -1; - var transY = (h - yv) * (Math.sqrt(2) - 1) - (h - yv - xv) / Math.sqrt(2); - return { - transX: transX, - transY: transY - }; -} - -function createCurveControlPoints(points, i) { - - function isNotMiddlePoint(points, i) { - if (points[i - 1] && points[i + 1]) { - return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, - points[ - i + 1].y); - } else { - return false; - } - } - var a = 0.2; - var b = 0.2; - var pAx = null; - var pAy = null; - var pBx = null; - var pBy = null; - if (i < 1) { - pAx = points[0].x + (points[1].x - points[0].x) * a; - pAy = points[0].y + (points[1].y - points[0].y) * a; - } else { - pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a; - pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a; - } - - if (i > points.length - 3) { - var last = points.length - 1; - pBx = points[last].x - (points[last].x - points[last - 1].x) * b; - pBy = points[last].y - (points[last].y - points[last - 1].y) * b; - } else { - pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b; - pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b; - } - if (isNotMiddlePoint(points, i + 1)) { - pBy = points[i + 1].y; - } - if (isNotMiddlePoint(points, i)) { - pAy = points[i].y; - } - return { - ctrA: { - x: pAx, - y: pAy - }, - ctrB: { - x: pBx, - y: pBy - } - }; -} - -function convertCoordinateOrigin(x, y, center) { - return { - x: center.x + x, - y: center.y - y - }; -} - -function avoidCollision(obj, target) { - if (target) { - // is collision test - while (util.isCollision(obj, target)) { - if (obj.start.x > 0) { - obj.start.y--; - } else if (obj.start.x < 0) { - obj.start.y++; - } else { - if (obj.start.y > 0) { - obj.start.y++; - } else { - obj.start.y--; - } - } - } - } - return obj; -} - -function fillSeries(series, opts, config) { - var index = 0; - return series.map(function(item) { - if (!item.color) { - item.color = config.colors[index]; - index = (index + 1) % config.colors.length; - } - if (!item.type) { - item.type = opts.type; - } - if (typeof item.show == "undefined") { - item.show = true; - } - if (!item.type) { - item.type = opts.type; - } - if (!item.pointShape) { - item.pointShape = "circle"; - } - if (!item.legendShape) { - switch (item.type) { - case 'line': - item.legendShape = "line"; - break; - case 'column': - item.legendShape = "rect"; - break; - case 'area': - item.legendShape = "triangle"; - break; - default: - item.legendShape = "circle"; - } - } - return item; - }); -} - -function getDataRange(minData, maxData) { - var limit = 0; - var range = maxData - minData; - if (range >= 10000) { - limit = 1000; - } else if (range >= 1000) { - limit = 100; - } else if (range >= 100) { - limit = 10; - } else if (range >= 10) { - limit = 5; - } else if (range >= 1) { - limit = 1; - } else if (range >= 0.1) { - limit = 0.1; - } else if (range >= 0.01) { - limit = 0.01; - } else if (range >= 0.001) { - limit = 0.001; - } else if (range >= 0.0001) { - limit = 0.0001; - } else if (range >= 0.00001) { - limit = 0.00001; - } else { - limit = 0.000001; - } - return { - minRange: findRange(minData, 'lower', limit), - maxRange: findRange(maxData, 'upper', limit) - }; -} - -function measureText(text) { - var fontSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.fontSize; - text = String(text); - var text = text.split(''); - var width = 0; - for (let i = 0; i < text.length; i++) { - let item = text[i]; - if (/[a-zA-Z]/.test(item)) { - width += 7; - } else if (/[0-9]/.test(item)) { - width += 5.5; - } else if (/\./.test(item)) { - width += 2.7; - } else if (/-/.test(item)) { - width += 3.25; - } else if (/[\u4e00-\u9fa5]/.test(item)) { - width += 10; - } else if (/\(|\)/.test(item)) { - width += 3.73; - } else if (/\s/.test(item)) { - width += 2.5; - } else if (/%/.test(item)) { - width += 8; - } else { - width += 10; - } - } - return width * fontSize / 10; -} - -function dataCombine(series) { - return series.reduce(function(a, b) { - return (a.data ? a.data : a).concat(b.data); - }, []); -} - -function dataCombineStack(series, len) { - var sum = new Array(len); - for (var j = 0; j < sum.length; j++) { - sum[j] = 0; - } - for (var i = 0; i < series.length; i++) { - for (var j = 0; j < sum.length; j++) { - sum[j] += series[i].data[j]; - } - } - return series.reduce(function(a, b) { - return (a.data ? a.data : a).concat(b.data).concat(sum); - }, []); -} - -function getTouches(touches, opts, e) { - let x, y; - if (touches.clientX) { - if (opts.rotate) { - y = opts.height - touches.clientX * opts.pixelRatio; - x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pixelRatio / 2) * (opts.pixelRatio - 1)) * - opts.pixelRatio; - } else { - x = touches.clientX * opts.pixelRatio; - y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pixelRatio / 2) * (opts.pixelRatio - 1)) * - opts.pixelRatio; - } - } else { - if (opts.rotate) { - y = opts.height - touches.x * opts.pixelRatio; - x = touches.y * opts.pixelRatio; - } else { - x = touches.x * opts.pixelRatio; - y = touches.y * opts.pixelRatio; - } - } - return { - x: x, - y: y - } -} - -function getSeriesDataItem(series, index) { - var data = []; - for (let i = 0; i < series.length; i++) { - let item = series[i]; - if (item.data[index] !== null && typeof item.data[index] !== 'undefined' && item.show) { - let seriesItem = {}; - seriesItem.color = item.color; - seriesItem.type = item.type; - seriesItem.style = item.style; - seriesItem.pointShape = item.pointShape; - seriesItem.disableLegend = item.disableLegend; - seriesItem.name = item.name; - seriesItem.show = item.show; - seriesItem.data = item.format ? item.format(item.data[index]) : item.data[index]; - data.push(seriesItem); - } - } - return data; -} - -function getMaxTextListLength(list) { - var lengthList = list.map(function(item) { - return measureText(item); - }); - return Math.max.apply(null, lengthList); -} - -function getRadarCoordinateSeries(length) { - var eachAngle = 2 * Math.PI / length; - var CoordinateSeries = []; - for (var i = 0; i < length; i++) { - CoordinateSeries.push(eachAngle * i); - } - - return CoordinateSeries.map(function(item) { - return -1 * item + Math.PI / 2; - }); -} - -function getToolTipData(seriesData, calPoints, index, categories) { - var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; - - var textList = seriesData.map(function(item) { - return { - text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data, - color: item.color - }; - }); - var validCalPoints = []; - var offset = { - x: 0, - y: 0 - }; - for (let i = 0; i < calPoints.length; i++) { - let points = calPoints[i]; - if (typeof points[index] !== 'undefined' && points[index] !== null) { - validCalPoints.push(points[index]); - } - } - for (let i = 0; i < validCalPoints.length; i++) { - let item = validCalPoints[i]; - offset.x = Math.round(item.x); - offset.y += item.y; - } - offset.y /= validCalPoints.length; - return { - textList: textList, - offset: offset - }; -} - -function getMixToolTipData(seriesData, calPoints, index, categories) { - var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; - var textList = seriesData.map(function(item) { - return { - text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data, - color: item.color, - disableLegend: item.disableLegend ? true : false - }; - }); - textList = textList.filter(function(item) { - if (item.disableLegend !== true) { - return item; - } - }); - var validCalPoints = []; - var offset = { - x: 0, - y: 0 - }; - for (let i = 0; i < calPoints.length; i++) { - let points = calPoints[i]; - if (typeof points[index] !== 'undefined' && points[index] !== null) { - validCalPoints.push(points[index]); - } - } - for (let i = 0; i < validCalPoints.length; i++) { - let item = validCalPoints[i]; - offset.x = Math.round(item.x); - offset.y += item.y; - } - offset.y /= validCalPoints.length; - return { - textList: textList, - offset: offset - }; -} - -function getCandleToolTipData(series, seriesData, calPoints, index, categories, extra) { - var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {}; - let upColor = extra.color.upFill; - let downColor = extra.color.downFill; - //颜色顺序为开盘,收盘,最低,最高 - let color = [upColor, upColor, downColor, upColor]; - var textList = []; - let text0 = { - text: categories[index], - color: null - }; - textList.push(text0); - seriesData.map(function(item) { - if (index == 0 && item.data[1] - item.data[0] < 0) { - color[1] = downColor; - } else { - if (item.data[0] < series[index - 1][1]) { - color[0] = downColor; - } - if (item.data[1] < item.data[0]) { - color[1] = downColor; - } - if (item.data[2] > series[index - 1][1]) { - color[2] = upColor; - } - if (item.data[3] < series[index - 1][1]) { - color[3] = downColor; - } - } - let text1 = { - text: '开盘:' + item.data[0], - color: color[0] - }; - let text2 = { - text: '收盘:' + item.data[1], - color: color[1] - }; - let text3 = { - text: '最低:' + item.data[2], - color: color[2] - }; - let text4 = { - text: '最高:' + item.data[3], - color: color[3] - }; - textList.push(text1, text2, text3, text4); - }); - var validCalPoints = []; - var offset = { - x: 0, - y: 0 - }; - for (let i = 0; i < calPoints.length; i++) { - let points = calPoints[i]; - if (typeof points[index] !== 'undefined' && points[index] !== null) { - validCalPoints.push(points[index]); - } - } - offset.x = Math.round(validCalPoints[0][0].x); - return { - textList: textList, - offset: offset - }; -} - -function filterSeries(series) { - let tempSeries = []; - for (let i = 0; i < series.length; i++) { - if (series[i].show == true) { - tempSeries.push(series[i]) - } - } - return tempSeries; -} - -function findCurrentIndex(currentPoints, xAxisPoints, opts, config) { - var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; - var currentIndex = -1; - var spacing = 0; - if((opts.type=='line' || opts.type=='area') && opts.xAxis.boundaryGap=='justify'){ - spacing = opts.chartData.eachSpacing/2; - } - if (isInExactChartArea(currentPoints, opts, config)) { - xAxisPoints.forEach(function(item, index) { - if (currentPoints.x + offset + spacing > item) { - currentIndex = index; - } - }); - } - return currentIndex; -} - -function findLegendIndex(currentPoints, legendData, opts) { - let currentIndex = -1; - if (isInExactLegendArea(currentPoints, legendData.area)) { - let points = legendData.points; - let index = -1; - for (let i = 0, len = points.length; i < len; i++) { - let item = points[i]; - for (let j = 0; j < item.length; j++) { - index += 1; - let area = item[j]['area']; - if (currentPoints.x > area[0] && currentPoints.x < area[2] && currentPoints.y > area[1] && currentPoints.y < area[3]) { - currentIndex = index; - break; - } - } - } - return currentIndex; - } - return currentIndex; -} - -function isInExactLegendArea(currentPoints, area) { - return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && - currentPoints.y < area.end.y; -} - -function isInExactChartArea(currentPoints, opts, config) { - return currentPoints.x < opts.width - opts.area[1] + 10 && currentPoints.x > opts.area[3] -10 && currentPoints.y > opts.area[0] && currentPoints.y < opts.height - opts.area[2]; -} - -function findRadarChartCurrentIndex(currentPoints, radarData, count) { - var eachAngleArea = 2 * Math.PI / count; - var currentIndex = -1; - if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) { - var fixAngle = function fixAngle(angle) { - if (angle < 0) { - angle += 2 * Math.PI; - } - if (angle > 2 * Math.PI) { - angle -= 2 * Math.PI; - } - return angle; - }; - - var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x); - angle = -1 * angle; - if (angle < 0) { - angle += 2 * Math.PI; - } - - var angleList = radarData.angleList.map(function(item) { - item = fixAngle(-1 * item); - - return item; - }); - - angleList.forEach(function(item, index) { - var rangeStart = fixAngle(item - eachAngleArea / 2); - var rangeEnd = fixAngle(item + eachAngleArea / 2); - if (rangeEnd < rangeStart) { - rangeEnd += 2 * Math.PI; - } - if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= - rangeEnd) { - currentIndex = index; - } - }); - } - - return currentIndex; -} - -function findFunnelChartCurrentIndex(currentPoints, funnelData) { - var currentIndex = -1; - for (var i = 0, len = funnelData.series.length; i < len; i++) { - var item = funnelData.series[i]; - if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) { - currentIndex = i; - break; - } - } - return currentIndex; -} - -function findWordChartCurrentIndex(currentPoints, wordData) { - var currentIndex = -1; - for (var i = 0, len = wordData.length; i < len; i++) { - var item = wordData[i]; - if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) { - currentIndex = i; - break; - } - } - return currentIndex; -} - -function findMapChartCurrentIndex(currentPoints, opts) { - var currentIndex = -1; - var cData=opts.chartData.mapData; - var data=opts.series; - var tmp=pointToCoordinate(currentPoints.y, currentPoints.x,cData.bounds,cData.scale,cData.xoffset,cData.yoffset); - var poi=[tmp.x, tmp.y]; - for (var i = 0, len = data.length; i < len; i++) { - var item = data[i].geometry.coordinates; - if(isPoiWithinPoly(poi,item)){ - currentIndex = i; - break; - } - } - return currentIndex; -} - -function findPieChartCurrentIndex(currentPoints, pieData) { - var currentIndex = -1; - if (isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { - var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); - angle = -angle; - for (var i = 0, len = pieData.series.length; i < len; i++) { - var item = pieData.series[i]; - if (isInAngleRange(angle, item._start_, item._start_ + item._proportion_ * 2 * Math.PI)) { - currentIndex = i; - break; - } - } - } - - return currentIndex; -} - -function isInExactPieChartArea(currentPoints, center, radius) { - return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2); -} - -function splitPoints(points) { - var newPoints = []; - var items = []; - points.forEach(function(item, index) { - if (item !== null) { - items.push(item); - } else { - if (items.length) { - newPoints.push(items); - } - items = []; - } - }); - if (items.length) { - newPoints.push(items); - } - - return newPoints; -} - -function calLegendData(series, opts, config, chartData) { - let legendData = { - area: { - start: { - x: 0, - y: 0 - }, - end: { - x: 0, - y: 0 - }, - width: 0, - height: 0, - wholeWidth: 0, - wholeHeight: 0 - }, - points: [], - widthArr: [], - heightArr: [] - }; - if (opts.legend.show === false) { - chartData.legendData = legendData; - return legendData; - } - - let padding = opts.legend.padding; - let margin = opts.legend.margin; - let fontSize = opts.legend.fontSize; - let shapeWidth = 15 * opts.pixelRatio; - let shapeRight = 5 * opts.pixelRatio; - let lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize); - if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { - let legendList = []; - let widthCount = 0; - let widthCountArr = []; - let currentRow = []; - for (let i = 0; i < series.length; i++) { - let item = series[i]; - let itemWidth = shapeWidth + shapeRight + measureText(item.name || 'undefined', fontSize) + opts.legend.itemGap; - if (widthCount + itemWidth > opts.width - opts.padding[1] - opts.padding[3]) { - legendList.push(currentRow); - widthCountArr.push(widthCount - opts.legend.itemGap); - widthCount = itemWidth; - currentRow = [item]; - } else { - widthCount += itemWidth; - currentRow.push(item); - } - } - if (currentRow.length) { - legendList.push(currentRow); - widthCountArr.push(widthCount - opts.legend.itemGap); - legendData.widthArr = widthCountArr; - let legendWidth = Math.max.apply(null, widthCountArr); - switch (opts.legend.float) { - case 'left': - legendData.area.start.x = opts.padding[3]; - legendData.area.end.x = opts.padding[3] + 2 * padding; - break; - case 'right': - legendData.area.start.x = opts.width - opts.padding[1] - legendWidth - 2 * padding; - legendData.area.end.x = opts.width - opts.padding[1]; - break; - default: - legendData.area.start.x = (opts.width - legendWidth) / 2 - padding; - legendData.area.end.x = (opts.width + legendWidth) / 2 + padding; - } - legendData.area.width = legendWidth + 2 * padding; - legendData.area.wholeWidth = legendWidth + 2 * padding; - legendData.area.height = legendList.length * lineHeight + 2 * padding; - legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin; - legendData.points = legendList; - } - } else { - let len = series.length; - let maxHeight = opts.height - opts.padding[0] - opts.padding[2] - 2 * margin - 2 * padding; - let maxLength = Math.min(Math.floor(maxHeight / lineHeight), len); - legendData.area.height = maxLength * lineHeight + padding * 2; - legendData.area.wholeHeight = maxLength * lineHeight + padding * 2; - switch (opts.legend.float) { - case 'top': - legendData.area.start.y = opts.padding[0] + margin; - legendData.area.end.y = opts.padding[0] + margin + legendData.area.height; - break; - case 'bottom': - legendData.area.start.y = opts.height - opts.padding[2] - margin - legendData.area.height; - legendData.area.end.y = opts.height - opts.padding[2] - margin; - break; - default: - legendData.area.start.y = (opts.height - legendData.area.height) / 2; - legendData.area.end.y = (opts.height + legendData.area.height) / 2; - } - let lineNum = len % maxLength === 0 ? len / maxLength : Math.floor((len / maxLength) + 1); - let currentRow = []; - for (let i = 0; i < lineNum; i++) { - let temp = series.slice(i * maxLength, i * maxLength + maxLength); - currentRow.push(temp); - } - - legendData.points = currentRow; - - if (currentRow.length) { - for (let i = 0; i < currentRow.length; i++) { - let item = currentRow[i]; - let maxWidth = 0; - for (let j = 0; j < item.length; j++) { - let itemWidth = shapeWidth + shapeRight + measureText(item[j].name || 'undefined', fontSize) + opts.legend.itemGap; - if (itemWidth > maxWidth) { - maxWidth = itemWidth; - } - } - legendData.widthArr.push(maxWidth); - legendData.heightArr.push(item.length * lineHeight + padding * 2); - } - let legendWidth = 0 - for (let i = 0; i < legendData.widthArr.length; i++) { - legendWidth += legendData.widthArr[i]; - } - legendData.area.width = legendWidth - opts.legend.itemGap + 2 * padding; - legendData.area.wholeWidth = legendData.area.width + padding; - } - } - - switch (opts.legend.position) { - case 'top': - legendData.area.start.y = opts.padding[0] + margin; - legendData.area.end.y = opts.padding[0] + margin + legendData.area.height; - break; - case 'bottom': - legendData.area.start.y = opts.height - opts.padding[2] - legendData.area.height - margin; - legendData.area.end.y = opts.height - opts.padding[2] - margin; - break; - case 'left': - legendData.area.start.x = opts.padding[3]; - legendData.area.end.x = opts.padding[3] + legendData.area.width; - break; - case 'right': - legendData.area.start.x = opts.width - opts.padding[1] - legendData.area.width; - legendData.area.end.x = opts.width - opts.padding[1]; - break; - } - chartData.legendData = legendData; - return legendData; -} - -function calCategoriesData(categories, opts, config, eachSpacing) { - var result = { - angle: 0, - xAxisHeight: config.xAxisHeight - }; - var categoriesTextLenth = categories.map(function(item) { - return measureText(item); - }); - var maxTextLength = Math.max.apply(this, categoriesTextLenth); - - if (opts.xAxis.rotateLabel == true && maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) { - result.angle = 45 * Math.PI / 180; - result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle); - } - return result; -} - -function getRadarDataPoints(angleList, center, radius, series, opts) { - var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; - - var radarOption = opts.extra.radar || {}; - radarOption.max = radarOption.max || 0; - var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series))); - - var data = []; - for (let i = 0; i < series.length; i++) { - let each = series[i]; - let listItem = {}; - listItem.color = each.color; - listItem.data = []; - each.data.forEach(function(item, index) { - let tmp = {}; - tmp.angle = angleList[index]; - - tmp.proportion = item / maxData; - tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * - process * Math.sin(tmp.angle), center); - listItem.data.push(tmp); - }); - - data.push(listItem); - } - - return data; -} - -function getPieDataPoints(series, radius) { - var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; - - var count = 0; - var _start_ = 0; - for (let i = 0; i < series.length; i++) { - let item = series[i]; - item.data = item.data === null ? 0 : item.data; - count += item.data; - } - for (let i = 0; i < series.length; i++) { - let item = series[i]; - item.data = item.data === null ? 0 : item.data; - if (count === 0) { - item._proportion_ = 1 / series.length * process; - } else { - item._proportion_ = item.data / count * process; - } - item._radius_ = radius; - } - for (let i = 0; i < series.length; i++) { - let item = series[i]; - item._start_ = _start_; - _start_ += 2 * item._proportion_ * Math.PI; - } - - return series; -} - -function getFunnelDataPoints(series, radius) { - var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; - series = series.sort(function(a,b){return parseInt(b.data)-parseInt(a.data);}); - for (let i = 0; i < series.length; i++) { - series[i].radius = series[i].data/series[0].data*radius*process; - series[i]._proportion_ = series[i].data/series[0].data; - } - return series.reverse(); -} - -function getRoseDataPoints(series, type, minRadius, radius) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - var count = 0; - var _start_ = 0; - - var dataArr = []; - for (let i = 0; i < series.length; i++) { - let item = series[i]; - item.data = item.data === null ? 0 : item.data; - count += item.data; - dataArr.push(item.data); - } - - var minData = Math.min.apply(null, dataArr); - var maxData = Math.max.apply(null, dataArr); - var radiusLength = radius - minRadius; - - for (let i = 0; i < series.length; i++) { - let item = series[i]; - item.data = item.data === null ? 0 : item.data; - if (count === 0 || type == 'area') { - item._proportion_ = item.data / count * process; - item._rose_proportion_ = 1 / series.length * process; - } else { - item._proportion_ = item.data / count * process; - item._rose_proportion_ = item.data / count * process; - } - item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData)); - } - for (let i = 0; i < series.length; i++) { - let item = series[i]; - item._start_ = _start_; - _start_ += 2 * item._rose_proportion_ * Math.PI; - } - - return series; -} - -function getArcbarDataPoints(series, arcbarOption) { - var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; - if (process == 1) { - process = 0.999999; - } - for (let i = 0; i < series.length; i++) { - let item = series[i]; - item.data = item.data === null ? 0 : item.data; - let totalAngle; - if (arcbarOption.type == 'default') { - if (arcbarOption.endAngle < arcbarOption.startAngle) { - totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle; - } else{ - totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; - } - } else { - totalAngle = 2; - } - item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle; - if (item._proportion_ >= 2) { - item._proportion_ = item._proportion_ % 2; - } - } - return series; -} - -function getGaugeAxisPoints(categories, startAngle, endAngle) { - let totalAngle = startAngle - endAngle + 1; - let tempStartAngle = startAngle; - for (let i = 0; i < categories.length; i++) { - categories[i].value = categories[i].value === null ? 0 : categories[i].value; - categories[i]._startAngle_ = tempStartAngle; - categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle; - if (categories[i]._endAngle_ >= 2) { - categories[i]._endAngle_ = categories[i]._endAngle_ % 2; - } - tempStartAngle = categories[i]._endAngle_; - } - return categories; -} - -function getGaugeDataPoints(series, categories, gaugeOption) { - let process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; - for (let i = 0; i < series.length; i++) { - let item = series[i]; - item.data = item.data === null ? 0 : item.data; - if (gaugeOption.pointer.color == 'auto') { - for (let i = 0; i < categories.length; i++) { - if (item.data <= categories[i].value) { - item.color = categories[i].color; - break; - } - } - } else { - item.color = gaugeOption.pointer.color; - } - let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1; - item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle; - item._oldAngle_ = gaugeOption.oldAngle; - if (gaugeOption.oldAngle < gaugeOption.endAngle) { - item._oldAngle_ += 2; - } - if (item.data >= gaugeOption.oldData) { - item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle; - } else { - item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process; - } - if (item._proportion_ >= 2) { - item._proportion_ = item._proportion_ % 2; - } - } - return series; -} - -function getPieTextMaxLength(series) { - series = getPieDataPoints(series); - let maxLength = 0; - for (let i = 0; i < series.length; i++) { - let item = series[i]; - let text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%'; - maxLength = Math.max(maxLength, measureText(text)); - } - - return maxLength; -} - -function fixColumeData(points, eachSpacing, columnLen, index, config, opts) { - return points.map(function(item) { - if (item === null) { - return null; - } - item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / columnLen); - - if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { - item.width = Math.min(item.width, +opts.extra.column.width); - } - if (item.width <= 0) { - item.width = 1; - } - item.x += (index + 0.5 - columnLen / 2) * item.width; - return item; - }); -} - -function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) { - return points.map(function(item) { - if (item === null) { - return null; - } - item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2); - - if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { - item.width = Math.min(item.width, +opts.extra.column.width); - } - - if (index > 0) { - item.width -= 2 * border; - } - return item; - }); -} - -function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) { - - return points.map(function(item, indexn) { - - if (item === null) { - return null; - } - item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2); - - if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { - item.width = Math.min(item.width, +opts.extra.column.width); - } - return item; - }); -} - -function getXAxisPoints(categories, opts, config) { - var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth; - var spacingValid = opts.width - opts.area[1] - opts.area[3]; - var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length; - if((opts.type=='line' || opts.type=='area') && dataCount>1 && opts.xAxis.boundaryGap=='justify'){ - dataCount -=1; - } - var eachSpacing = spacingValid / dataCount; - - var xAxisPoints = []; - var startX = opts.area[3]; - var endX = opts.width - opts.area[1]; - categories.forEach(function(item, index) { - xAxisPoints.push(startX + index * eachSpacing); - }); - if(opts.xAxis.boundaryGap !=='justify'){ - if (opts.enableScroll === true) { - xAxisPoints.push(startX + categories.length * eachSpacing); - } else { - xAxisPoints.push(endX); - } - } - return { - xAxisPoints: xAxisPoints, - startX: startX, - endX: endX, - eachSpacing: eachSpacing - }; -} - -function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { - var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; - var points = []; - var validHeight = opts.height - opts.area[0] - opts.area[2]; - data.forEach(function(item, index) { - if (item === null) { - points.push(null); - } else { - var cPoints = []; - item.forEach(function(items, indexs) { - var point = {}; - point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); - var value = items.value || items; - var height = validHeight * (value - minRange) / (maxRange - minRange); - height *= process; - point.y = opts.height - Math.round(height) - opts.area[2]; - cPoints.push(point); - }); - points.push(cPoints); - } - }); - - return points; -} - -function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { - var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; - var boundaryGap='center'; - if (opts.type == 'line'||opts.type == 'area'){ - boundaryGap=opts.xAxis.boundaryGap; - } - var points = []; - var validHeight = opts.height - opts.area[0] - opts.area[2]; - data.forEach(function(item, index) { - if (item === null) { - points.push(null); - } else { - var point = {}; - point.color = item.color; - point.x = xAxisPoints[index]; - if(boundaryGap=='center'){ - point.x += Math.round(eachSpacing / 2); - } - var value = item; - if (typeof item === 'object' && item !== null) { - value = item.value - } - var height = validHeight * (value - minRange) / (maxRange - minRange); - height *= process; - point.y = opts.height - Math.round(height) - opts.area[2]; - points.push(point); - } - }); - - return points; -} - -function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) { - var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; - var points = []; - var validHeight = opts.height - opts.area[0] - opts.area[2]; - - data.forEach(function(item, index) { - if (item === null) { - points.push(null); - } else { - var point = {}; - point.color = item.color; - point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); - - if (seriesIndex > 0) { - var value = 0; - for (let i = 0; i <= seriesIndex; i++) { - value += stackSeries[i].data[index]; - } - var value0 = value - item; - var height = validHeight * (value - minRange) / (maxRange - minRange); - var height0 = validHeight * (value0 - minRange) / (maxRange - minRange); - } else { - var value = item; - var height = validHeight * (value - minRange) / (maxRange - minRange); - var height0 = 0; - } - var heightc = height0; - height *= process; - heightc *= process; - point.y = opts.height - Math.round(height) - opts.area[2]; - point.y0 = opts.height - Math.round(heightc) - opts.area[2]; - points.push(point); - } - }); - - return points; -} - -function getYAxisTextList(series, opts, config, stack) { - var data; - if (stack == 'stack') { - data = dataCombineStack(series, opts.categories.length); - } else { - data = dataCombine(series); - } - var sorted = []; - // remove null from data - data = data.filter(function(item) { - //return item !== null; - if (typeof item === 'object' && item !== null) { - if (Array.isArray(item)) { - return item !== null; - } else { - return item.value !== null; - } - } else { - return item !== null; - } - }); - data.map(function(item) { - if (typeof item === 'object') { - if (Array.isArray(item)) { - item.map(function(subitem) { - sorted.push(subitem); - }) - } else { - sorted.push(item.value); - } - } else { - sorted.push(item); - } - }) - var minData = 0; - var maxData = 0; - if (sorted.length > 0) { - minData = Math.min.apply(this, sorted); - maxData = Math.max.apply(this, sorted); - } - if (typeof opts.yAxis.min === 'number') { - minData = Math.min(opts.yAxis.min, minData); - } - if (typeof opts.yAxis.max === 'number') { - maxData = Math.max(opts.yAxis.max, maxData); - } - - if (minData === maxData) { - var rangeSpan = maxData || 10; - maxData += rangeSpan; - } - - var dataRange = getDataRange(minData, maxData); - var minRange = dataRange.minRange; - var maxRange = dataRange.maxRange; - - var range = []; - var eachRange = (maxRange - minRange) / config.yAxisSplit; - - for (var i = 0; i <= config.yAxisSplit; i++) { - range.push(minRange + eachRange * i); - } - return range.reverse(); -} - -function calYAxisData(series, opts, config) { - //堆叠图重算Y轴 - var columnstyle = assign({}, { - type: "" - }, opts.extra.column); - var ranges = getYAxisTextList(series, opts, config, columnstyle.type); - var yAxisWidth = config.yAxisWidth; - var yAxisFontSize = opts.yAxis.fontSize || config.fontSize; - var rangesFormat = ranges.map(function(item) { - item = util.toFixed(item, 6); - item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item; - yAxisWidth = Math.max(yAxisWidth, measureText(item, yAxisFontSize) + 5); - return item; - }); - if (opts.yAxis.disabled === true) { - yAxisWidth = 0; - } - - return { - rangesFormat: rangesFormat, - ranges: ranges, - yAxisWidth: yAxisWidth - }; -} - -function calTooltipYAxisData(point, series, opts, config, eachSpacing) { - var ranges = getYAxisTextList(series, opts, config); - var spacingValid = opts.height - opts.area[0] - opts.area[2]; - let maxVal = ranges[0]; - let minVal = ranges[ranges.length - 1]; - let minAxis = opts.padding[3]; - let maxAxis = opts.padding[1] + spacingValid; - let item = maxVal - (maxVal - minVal) * (point - minAxis) / (maxAxis - minAxis); - item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item; - return item; -} - -function calMarkLineData(minRange, maxRange, points, opts) { - let spacingValid = opts.height - opts.area[0] - opts.area[2]; - for (let i = 0; i < points.length; i++) { - let height = spacingValid * (points[i].value - minRange) / (maxRange - minRange); - points[i].y = opts.height - Math.round(height) - opts.area[2]; - } - return points; -} - -function contextRotate(context, opts) { - if (opts.rotateLock !== true) { - context.translate(opts.height, 0); - context.rotate(90 * Math.PI / 180); - } else if (opts._rotate_ !== true) { - context.translate(opts.height, 0); - context.rotate(90 * Math.PI / 180); - opts._rotate_ = true; - } -} - -function drawPointShape(points, color, shape, context, opts) { - context.beginPath(); - context.setStrokeStyle("#ffffff"); - context.setLineWidth(1 * opts.pixelRatio); - context.setFillStyle(color); - if (shape === 'diamond') { - points.forEach(function(item, index) { - if (item !== null) { - context.moveTo(item.x, item.y - 4.5); - context.lineTo(item.x - 4.5, item.y); - context.lineTo(item.x, item.y + 4.5); - context.lineTo(item.x + 4.5, item.y); - context.lineTo(item.x, item.y - 4.5); - } - }); - } else if (shape === 'circle') { - points.forEach(function(item, index) { - if (item !== null) { - context.moveTo(item.x + 3.5 * opts.pixelRatio, item.y); - context.arc(item.x, item.y, 4 * opts.pixelRatio, 0, 2 * Math.PI, false); - } - }); - } else if (shape === 'rect') { - points.forEach(function(item, index) { - if (item !== null) { - context.moveTo(item.x - 3.5, item.y - 3.5); - context.rect(item.x - 3.5, item.y - 3.5, 7, 7); - } - }); - } else if (shape === 'triangle') { - points.forEach(function(item, index) { - if (item !== null) { - context.moveTo(item.x, item.y - 4.5); - context.lineTo(item.x - 4.5, item.y + 4.5); - context.lineTo(item.x + 4.5, item.y + 4.5); - context.lineTo(item.x, item.y - 4.5); - } - }); - } - context.closePath(); - context.fill(); - context.stroke(); -} - -function drawRingTitle(opts, config, context, center) { - var titlefontSize = opts.title.fontSize || config.titleFontSize; - var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize; - var title = opts.title.name || ''; - var subtitle = opts.subtitle.name || ''; - var titleFontColor = opts.title.color || config.titleColor; - var subtitleFontColor = opts.subtitle.color || config.subtitleColor; - var titleHeight = title ? titlefontSize : 0; - var subtitleHeight = subtitle ? subtitlefontSize : 0; - var margin = 5; - - if (subtitle) { - var textWidth = measureText(subtitle, subtitlefontSize); - var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0); - var startY = center.y + subtitlefontSize / 2 + (opts.subtitle.offsetY || 0); - if (title) { - startY += (titleHeight + margin) / 2; - } - context.beginPath(); - context.setFontSize(subtitlefontSize); - context.setFillStyle(subtitleFontColor); - context.fillText(subtitle, startX, startY); - context.closePath(); - context.stroke(); - } - if (title) { - var _textWidth = measureText(title, titlefontSize); - var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0); - var _startY = center.y + titlefontSize / 2 + (opts.title.offsetY || 0); - if (subtitle) { - _startY -= (subtitleHeight + margin) / 2; - } - context.beginPath(); - context.setFontSize(titlefontSize); - context.setFillStyle(titleFontColor); - context.fillText(title, _startX, _startY); - context.closePath(); - context.stroke(); - } -} - -function drawPointText(points, series, config, context) { - // 绘制数据文案 - var data = series.data; - points.forEach(function(item, index) { - if (item !== null) { - //var formatVal = series.format ? series.format(data[index]) : data[index]; - context.beginPath(); - context.setFontSize(series.textSize || config.fontSize); - context.setFillStyle(series.textColor || '#666666'); - var value = data[index] - if (typeof data[index] === 'object' && data[index] !== null) { - value = data[index].value - } - var formatVal = series.format ? series.format(value) : value; - context.fillText(String(formatVal), item.x - measureText(formatVal, series.textSize || config.fontSize) / 2, item.y - - 2); - context.closePath(); - context.stroke(); - } - }); - -} - -function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) { - radius -= gaugeOption.width / 2 + config.gaugeLabelTextMargin; - - let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1; - let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; - let totalNumber = gaugeOption.endNumber - gaugeOption.startNumber; - let splitNumber = totalNumber / gaugeOption.splitLine.splitNumber; - let nowAngle = gaugeOption.startAngle; - let nowNumber = gaugeOption.startNumber; - for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { - var pos = { - x: radius * Math.cos(nowAngle * Math.PI), - y: radius * Math.sin(nowAngle * Math.PI) - }; - var labelText = gaugeOption.labelFormat ? gaugeOption.labelFormat(nowNumber) : nowNumber; - pos.x += centerPosition.x - measureText(labelText) / 2; - pos.y += centerPosition.y; - var startX = pos.x; - var startY = pos.y; - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(gaugeOption.labelColor || '#666666'); - context.fillText(labelText, startX, startY + config.fontSize / 2); - context.closePath(); - context.stroke(); - - nowAngle += splitAngle; - if (nowAngle >= 2) { - nowAngle = nowAngle % 2; - } - nowNumber += splitNumber; - } - -} - -function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) { - var radarOption = opts.extra.radar || {}; - radius += config.radarLabelTextMargin; - - angleList.forEach(function(angle, index) { - var pos = { - x: radius * Math.cos(angle), - y: radius * Math.sin(angle) - }; - var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition); - var startX = posRelativeCanvas.x; - var startY = posRelativeCanvas.y; - if (util.approximatelyEqual(pos.x, 0)) { - startX -= measureText(opts.categories[index] || '') / 2; - } else if (pos.x < 0) { - startX -= measureText(opts.categories[index] || ''); - } - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(radarOption.labelColor || '#666666'); - context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2); - context.closePath(); - context.stroke(); - }); - -} - -function drawPieText(series, opts, config, context, radius, center) { - var lineRadius = config.pieChartLinePadding; - var textObjectCollection = []; - var lastTextObject = null; - - var seriesConvert = series.map(function(item) { - var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_.toFixed(4) * 100) +'%'; - if(item._rose_proportion_) item._proportion_=item._rose_proportion_; - var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2); - var color = item.color; - var radius = item._radius_; - return { - arc: arc, - text: text, - color: color, - radius: radius, - textColor: item.textColor, - textSize: item.textSize, - }; - }); - for (let i = 0; i < seriesConvert.length; i++) { - let item = seriesConvert[i]; - // line end - let orginX1 = Math.cos(item.arc) * (item.radius + lineRadius); - let orginY1 = Math.sin(item.arc) * (item.radius + lineRadius); - - // line start - let orginX2 = Math.cos(item.arc) * item.radius; - let orginY2 = Math.sin(item.arc) * item.radius; - - // text start - let orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding; - let orginY3 = orginY1; - let textWidth = measureText(item.text); - let startY = orginY3; - - if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, { - x: orginX3 - })) { - if (orginX3 > 0) { - startY = Math.min(orginY3, lastTextObject.start.y); - } else if (orginX1 < 0) { - startY = Math.max(orginY3, lastTextObject.start.y); - } else { - if (orginY3 > 0) { - startY = Math.max(orginY3, lastTextObject.start.y); - } else { - startY = Math.min(orginY3, lastTextObject.start.y); - } - } - } - if (orginX3 < 0) { - orginX3 -= textWidth; - } - - let textObject = { - lineStart: { - x: orginX2, - y: orginY2 - }, - lineEnd: { - x: orginX1, - y: orginY1 - }, - start: { - x: orginX3, - y: startY - }, - width: textWidth, - height: config.fontSize, - text: item.text, - color: item.color, - textColor: item.textColor, - textSize: item.textSize - }; - lastTextObject = avoidCollision(textObject, lastTextObject); - textObjectCollection.push(lastTextObject); - } - - for (let i = 0; i < textObjectCollection.length; i++) { - let item = textObjectCollection[i]; - let lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center); - let lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center); - let textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center); - context.setLineWidth(1 * opts.pixelRatio); - context.setFontSize(config.fontSize); - context.beginPath(); - context.setStrokeStyle(item.color); - context.setFillStyle(item.color); - context.moveTo(lineStartPoistion.x, lineStartPoistion.y); - let curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x; - let textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5; - context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y); - context.moveTo(lineStartPoistion.x, lineStartPoistion.y); - context.stroke(); - context.closePath(); - context.beginPath(); - context.moveTo(textPosition.x + item.width, textPosition.y); - context.arc(curveStartX, textPosition.y, 2, 0, 2 * Math.PI); - context.closePath(); - context.fill(); - context.beginPath(); - context.setFontSize(item.textSize || config.fontSize); - context.setFillStyle(item.textColor || '#666666'); - context.fillText(item.text, textStartX, textPosition.y + 3); - context.closePath(); - context.stroke(); - context.closePath(); - } -} - -function drawToolTipSplitLine(offsetX, opts, config, context) { - var toolTipOption = opts.extra.tooltip || {}; - toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType; - toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength; - var startY = opts.area[0]; - var endY = opts.height - opts.area[2]; - - if (toolTipOption.gridType == 'dash') { - context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); - } - context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); - context.setLineWidth(1 * opts.pixelRatio); - context.beginPath(); - context.moveTo(offsetX, startY); - context.lineTo(offsetX, endY); - context.stroke(); - context.setLineDash([]); - - if (toolTipOption.xAxisLabel) { - let labelText = opts.categories[opts.tooltip.index]; - context.setFontSize(config.fontSize); - let textWidth = measureText(labelText, config.fontSize); - - let textX = offsetX - 0.5 * textWidth; - let textY = endY; - context.beginPath(); - context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); - context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); - context.setLineWidth(1 * opts.pixelRatio); - context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding); - context.closePath(); - context.stroke(); - context.fill(); - - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(toolTipOption.labelFontColor || config.fontColor); - context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize); - context.closePath(); - context.stroke(); - } -} - -function drawMarkLine(minRange, maxRange, opts, config, context) { - let markLineOption = assign({}, { - type: 'solid', - dashLength: 4, - data: [] - }, opts.extra.markLine); - let startX = opts.area[3]; - let endX = opts.width - opts.padding[1]; - let points = calMarkLineData(minRange, maxRange, markLineOption.data, opts); - - for (let i = 0; i < points.length; i++) { - let item = assign({}, { - lineColor: '#DE4A42', - showLabel: false, - labelFontColor: '#666666', - labelBgColor: '#DFE8FF', - labelBgOpacity: 0.8, - yAxisIndex: 0 - }, points[i]); - - if (markLineOption.type == 'dash') { - context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]); - } - context.setStrokeStyle(item.lineColor); - context.setLineWidth(1 * opts.pixelRatio); - context.beginPath(); - context.moveTo(startX, item.y); - context.lineTo(endX, item.y); - context.stroke(); - context.setLineDash([]); - if (item.showLabel) { - let labelText = opts.yAxis.format ? opts.yAxis.format(Number(item.value)) : item.value; - context.setFontSize(config.fontSize); - let textWidth = measureText(labelText, config.fontSize); - let bgStartX = opts.padding[3] + config.yAxisTitleWidth - config.toolTipPadding; - let bgEndX = Math.max(opts.area[3], textWidth + config.toolTipPadding * 2); - let bgWidth = bgEndX - bgStartX; - - let textX = bgStartX + (bgWidth - textWidth) / 2; - let textY = item.y; - context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity)); - context.setStrokeStyle(item.labelBgColor); - context.setLineWidth(1 * opts.pixelRatio); - context.beginPath(); - context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding); - context.closePath(); - context.stroke(); - context.fill(); - - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(item.labelFontColor); - context.fillText(String(labelText), textX, textY + 0.5 * config.fontSize); - context.stroke(); - } - } -} - -function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) { - var toolTipOption = assign({}, { - gridType: 'solid', - dashLength: 4 - }, opts.extra.tooltip); - - var startX = opts.area[3]; - var endX = opts.width - opts.padding[1]; - - if (toolTipOption.gridType == 'dash') { - context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); - } - context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); - context.setLineWidth(1 * opts.pixelRatio); - context.beginPath(); - context.moveTo(startX, opts.tooltip.offset.y); - context.lineTo(endX, opts.tooltip.offset.y); - context.stroke(); - context.setLineDash([]); - - if (toolTipOption.yAxisLabel) { - let labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing); - context.setFontSize(config.fontSize); - let textWidth = measureText(labelText, config.fontSize); - let bgStartX = opts.padding[3] + config.yAxisTitleWidth - config.toolTipPadding; - let bgEndX = Math.max(opts.area[3], textWidth + config.toolTipPadding * 2); - let bgWidth = bgEndX - bgStartX; - - let textX = bgStartX + (bgWidth - textWidth) / 2; - let textY = opts.tooltip.offset.y; - context.beginPath(); - context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); - context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); - context.setLineWidth(1 * opts.pixelRatio); - context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding); - context.closePath(); - context.stroke(); - context.fill(); - - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(toolTipOption.labelFontColor || config.fontColor); - context.fillText(labelText, textX, textY + 0.5 * config.fontSize); - context.closePath(); - context.stroke(); - } -} - -function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { - var toolTipOption = assign({}, { - activeBgColor: '#000000', - activeBgOpacity: 0.08 - }, opts.extra.tooltip); - var startY = opts.area[0]; - var endY = opts.height - opts.area[2]; - context.beginPath(); - context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity)); - context.rect(offsetX - eachSpacing / 2, startY, eachSpacing, endY - startY); - context.closePath(); - context.fill(); -} - -function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) { - var toolTipOption = assign({}, { - bgColor: '#000000', - bgOpacity: 0.7, - fontColor: '#FFFFFF' - }, opts.extra.tooltip); - var legendWidth = 4 * opts.pixelRatio; - var legendMarginRight = 5 * opts.pixelRatio; - var arrowWidth = 8 * opts.pixelRatio; - var isOverRightBorder = false; - if (opts.type == 'line' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') { - drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context); - } - - offset = assign({ - x: 0, - y: 0 - }, offset); - offset.y -= 8 * opts.pixelRatio; - var textWidth = textList.map(function(item) { - return measureText(item.text, config.fontSize); - }); - var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth); - var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight; - - // if beyond the right border - if (offset.x - Math.abs(opts._scrollDistance_) + arrowWidth + toolTipWidth > opts.width) { - isOverRightBorder = true; - } - if (toolTipHeight + offset.y > opts.height) { - offset.y = opts.height - toolTipHeight; - } - // draw background rect - context.beginPath(); - context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity)); - if (isOverRightBorder) { - context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio); - context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio); - context.lineTo(offset.x - arrowWidth, offset.y); - context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y); - context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y + toolTipHeight); - context.lineTo(offset.x - arrowWidth, offset.y + toolTipHeight); - context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio); - context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio); - } else { - context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio); - context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio); - context.lineTo(offset.x + arrowWidth, offset.y); - context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y); - context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y + toolTipHeight); - context.lineTo(offset.x + arrowWidth, offset.y + toolTipHeight); - context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio); - context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio); - } - - context.closePath(); - context.fill(); - - // draw legend - textList.forEach(function(item, index) { - if (item.color !== null) { - context.beginPath(); - context.setFillStyle(item.color); - var startX = offset.x + arrowWidth + 2 * config.toolTipPadding; - var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + - config.toolTipPadding + 1; - if (isOverRightBorder) { - startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding; - } - context.fillRect(startX, startY, legendWidth, config.fontSize); - context.closePath(); - } - }); - - // draw text list - - textList.forEach(function(item, index) { - var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight; - if (isOverRightBorder) { - startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight; - } - var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + - config.toolTipPadding; - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(toolTipOption.fontColor); - context.fillText(item.text, startX, startY + config.fontSize); - context.closePath(); - context.stroke(); - }); -} - -function drawYAxisTitle(title, opts, config, context) { - var startX = config.xAxisHeight + (opts.height - config.xAxisHeight - measureText(title)) / 2; - context.save(); - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(opts.yAxis.titleFontColor || '#333333'); - context.translate(0, opts.height); - context.rotate(-90 * Math.PI / 180); - context.fillText(title, startX, opts.padding[3] + 0.5 * config.fontSize); - context.closePath(); - context.stroke(); - context.restore(); -} - -function drawColumnDataPoints(series, opts, config, context) { - let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - let ranges = [].concat(opts.chartData.yAxisData.ranges); - let xAxisData = opts.chartData.xAxisData, - xAxisPoints = xAxisData.xAxisPoints, - eachSpacing = xAxisData.eachSpacing; - let columnOption = assign({}, { - type: 'group', - width: eachSpacing / 2, - meter: { - border: 4, - fillColor: '#FFFFFF' - } - }, opts.extra.column); - let minRange = ranges.pop(); - let maxRange = ranges.shift(); - let calPoints = []; - - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { - context.translate(opts._scrollDistance_, 0); - } - if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { - drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing); - } - - series.forEach(function(eachSeries, seriesIndex) { - var data = eachSeries.data; - switch (columnOption.type) { - case 'group': - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); - calPoints.push(tooltipPoints); - points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); - points.forEach(function(item, index) { - if (item !== null) { - context.beginPath(); - context.setStrokeStyle(item.color || eachSeries.color); - context.setLineWidth(1) - context.setFillStyle(item.color || eachSeries.color); - var startX = item.x - item.width / 2; - var height = opts.height - item.y - opts.area[2]; - context.moveTo(startX-1, item.y); - context.lineTo(startX+item.width-2,item.y); - context.lineTo(startX+item.width-2,opts.height - opts.area[2]); - context.lineTo(startX,opts.height - opts.area[2]); - context.lineTo(startX,item.y); - //context.rect(startX, item.y, item.width, height); - context.closePath(); - context.stroke(); - context.fill(); - } - }); - break; - case 'stack': - // 绘制堆叠数据图 - var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, - seriesIndex, - series, process); - calPoints.push(points); - points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series); - - points.forEach(function(item, index) { - if (item !== null) { - context.beginPath(); - context.setFillStyle(item.color || eachSeries.color); - var startX = item.x - item.width / 2 + 1; - var height = opts.height - item.y - opts.area[2]; - var height0 = opts.height - item.y0 - opts.area[2]; - if (seriesIndex > 0) { - height -= height0; - } - context.moveTo(startX, item.y); - context.fillRect(startX, item.y, item.width - 2, height); - context.closePath(); - context.fill(); - } - }); - break; - case 'meter': - // 绘制温度计数据图 - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - calPoints.push(points); - points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meter - .border); - if (seriesIndex == 0) { - points.forEach(function(item, index) { - if (item !== null) { - //画背景颜色 - context.beginPath(); - context.setFillStyle(columnOption.meter.fillColor); - var startX = item.x - item.width / 2; - var height = opts.height - item.y - opts.area[2]; - context.moveTo(startX, item.y); - context.fillRect(startX, item.y, item.width, height); - context.closePath(); - context.fill(); - //画边框线 - if (columnOption.meter.border > 0) { - context.beginPath(); - context.setStrokeStyle(eachSeries.color); - context.setLineWidth(columnOption.meter.border * opts.pixelRatio); - context.moveTo(startX + columnOption.meter.border * 0.5, item.y + height); - context.lineTo(startX + columnOption.meter.border * 0.5, item.y + columnOption.meter.border * 0.5); - context.lineTo(startX + item.width - columnOption.meter.border * 0.5, item.y + columnOption.meter.border * 0.5); - context.lineTo(startX + item.width - columnOption.meter.border * 0.5, item.y + height); - context.stroke(); - } - } - }); - } else { - points.forEach(function(item, index) { - if (item !== null) { - context.beginPath(); - context.setFillStyle(item.color || eachSeries.color); - var startX = item.x - item.width / 2; - var height = opts.height - item.y - opts.area[2]; - context.moveTo(startX, item.y); - context.fillRect(startX, item.y, item.width, height); - context.closePath(); - context.fill(); - } - }); - } - break; - } - }); - - if (opts.dataLabel !== false && process === 1) { - series.forEach(function(eachSeries, seriesIndex) { - var data = eachSeries.data; - switch (columnOption.type) { - case 'group': - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); - - drawPointText(points, eachSeries, config, context); - break; - case 'stack': - var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, - seriesIndex, - series, process); - drawPointText(points, eachSeries, config, context); - break; - case 'meter': - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - drawPointText(points, eachSeries, config, context); - break; - } - }); - } - - context.restore(); - - return { - xAxisPoints: xAxisPoints, - calPoints: calPoints, - eachSpacing: eachSpacing, - minRange: minRange, - maxRange: maxRange - }; -} - -function drawCandleDataPoints(series, seriesMA, opts, config, context) { - var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; - var candleOption = assign({}, { - color: {}, - average: {} - }, opts.extra.candle); - candleOption.color = assign({}, { - upLine: '#f04864', - upFill: '#f04864', - downLine: '#2fc25b', - downFill: '#2fc25b' - }, candleOption.color); - candleOption.average = assign({}, { - show: false, - name: [], - day: [], - color: config.colors - }, candleOption.average); - opts.extra.candle = candleOption; - - let ranges = [].concat(opts.chartData.yAxisData.ranges); - let xAxisData = opts.chartData.xAxisData, - xAxisPoints = xAxisData.xAxisPoints, - eachSpacing = xAxisData.eachSpacing; - - let minRange = ranges.pop(); - let maxRange = ranges.shift(); - let calPoints = []; - - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { - context.translate(opts._scrollDistance_, 0); - } - //画均线 - if (candleOption.average.show) { - seriesMA.forEach(function(eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - //calPoints.push(points); - var splitPointList = splitPoints(points); - - splitPointList.forEach(function(points, index) { - context.beginPath(); - context.setStrokeStyle(eachSeries.color); - context.setLineWidth(1); - if (points.length === 1) { - context.moveTo(points[0].x, points[0].y); - context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); - } else { - context.moveTo(points[0].x, points[0].y); - points.forEach(function(item, index) { - if (index > 0) { - var ctrlPoint = createCurveControlPoints(points, index - 1); - context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, - item.x, item - .y); - } - }); - context.moveTo(points[0].x, points[0].y); - } - context.closePath(); - context.stroke(); - }); - }); - } - //画K线 - series.forEach(function(eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - calPoints.push(points); - var splitPointList = splitPoints(points); - splitPointList = splitPointList[0]; - - splitPointList.forEach(function(points, index) { - context.beginPath(); - //如果上涨 - if (data[index][1] - data[index][0] > 0) { - context.setStrokeStyle(candleOption.color.upLine); - context.setFillStyle(candleOption.color.upFill); - context.setLineWidth(1 * opts.pixelRatio); - context.moveTo(points[3].x, points[3].y); //顶点 - context.lineTo(points[1].x, points[1].y); //收盘中间点 - context.lineTo(points[1].x - eachSpacing / 4, points[1].y); //收盘左侧点 - context.lineTo(points[0].x - eachSpacing / 4, points[0].y); //开盘左侧点 - context.lineTo(points[0].x, points[0].y); //开盘中间点 - context.lineTo(points[2].x, points[2].y); //底点 - context.lineTo(points[0].x, points[0].y); //开盘中间点 - context.lineTo(points[0].x + eachSpacing / 4, points[0].y); //开盘右侧点 - context.lineTo(points[1].x + eachSpacing / 4, points[1].y); //收盘右侧点 - context.lineTo(points[1].x, points[1].y); //收盘中间点 - context.moveTo(points[3].x, points[3].y); //顶点 - } else { - context.setStrokeStyle(candleOption.color.downLine); - context.setFillStyle(candleOption.color.downFill); - context.setLineWidth(1 * opts.pixelRatio); - context.moveTo(points[3].x, points[3].y); //顶点 - context.lineTo(points[0].x, points[0].y); //开盘中间点 - context.lineTo(points[0].x - eachSpacing / 4, points[0].y); //开盘左侧点 - context.lineTo(points[1].x - eachSpacing / 4, points[1].y); //收盘左侧点 - context.lineTo(points[1].x, points[1].y); //收盘中间点 - context.lineTo(points[2].x, points[2].y); //底点 - context.lineTo(points[1].x, points[1].y); //收盘中间点 - context.lineTo(points[1].x + eachSpacing / 4, points[1].y); //收盘右侧点 - context.lineTo(points[0].x + eachSpacing / 4, points[0].y); //开盘右侧点 - context.lineTo(points[0].x, points[0].y); //开盘中间点 - context.moveTo(points[3].x, points[3].y); //顶点 - } - context.closePath(); - context.fill(); - context.stroke(); - }); - }); - - context.restore(); - - return { - xAxisPoints: xAxisPoints, - calPoints: calPoints, - eachSpacing: eachSpacing, - minRange: minRange, - maxRange: maxRange - }; -} - -function drawAreaDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - var areaOption = assign({},{ - type: 'straight', - opacity: 0.2, - addLine: false, - width: 2 - },opts.extra.area); - - let ranges = [].concat(opts.chartData.yAxisData.ranges); - let xAxisData = opts.chartData.xAxisData, - xAxisPoints = xAxisData.xAxisPoints, - eachSpacing = xAxisData.eachSpacing; - - let minRange = ranges.pop(); - let maxRange = ranges.shift(); - let endY = opts.height - opts.area[2]; - let calPoints = []; - - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { - context.translate(opts._scrollDistance_, 0); - } - - series.forEach(function(eachSeries, seriesIndex) { - let data = eachSeries.data; - let points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - calPoints.push(points); - - let splitPointList = splitPoints(points); - - for (let i = 0; i < splitPointList.length; i++) { - let points = splitPointList[i]; - // 绘制区域数 - context.beginPath(); - context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity)); - context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity)); - context.setLineWidth(areaOption.width * opts.pixelRatio); - if (points.length > 1) { - let firstPoint = points[0]; - let lastPoint = points[points.length - 1]; - - context.moveTo(firstPoint.x, firstPoint.y); - if (areaOption.type === 'curve') { - points.forEach(function(item, index) { - if (index > 0) { - let ctrlPoint = createCurveControlPoints(points, index - 1); - context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x, item.y); - } - }); - } else { - points.forEach(function(item, index) { - if (index > 0) { - context.lineTo(item.x, item.y); - } - }); - } - - context.lineTo(lastPoint.x, endY); - context.lineTo(firstPoint.x, endY); - context.lineTo(firstPoint.x, firstPoint.y); - } else { - let item = points[0]; - context.moveTo(item.x - eachSpacing / 2, item.y); - context.lineTo(item.x + eachSpacing / 2, item.y); - context.lineTo(item.x + eachSpacing / 2, endY); - context.lineTo(item.x - eachSpacing / 2, endY); - context.moveTo(item.x - eachSpacing / 2, item.y); - } - context.closePath(); - context.fill(); - - //画连线 - if (areaOption.addLine) { - context.beginPath(); - context.setStrokeStyle(eachSeries.color); - context.setLineWidth(areaOption.width * opts.pixelRatio); - if (points.length === 1) { - context.moveTo(points[0].x, points[0].y); - context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); - } else { - context.moveTo(points[0].x, points[0].y); - if (areaOption.type === 'curve') { - points.forEach(function(item, index) { - if (index > 0) { - let ctrlPoint = createCurveControlPoints(points, index - 1); - context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x,item.y); - } - }); - } else { - points.forEach(function(item, index) { - if (index > 0) { - context.lineTo(item.x, item.y); - } - }); - } - context.moveTo(points[0].x, points[0].y); - } - context.closePath(); - context.stroke(); - } - } - - //画点 - if (opts.dataPointShape !== false) { - var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; - drawPointShape(points, eachSeries.color, shape, context, opts); - } - - }); - - if (opts.dataLabel !== false && process === 1) { - series.forEach(function(eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - drawPointText(points, eachSeries, config, context); - }); - } - - context.restore(); - - return { - xAxisPoints: xAxisPoints, - calPoints: calPoints, - eachSpacing: eachSpacing, - minRange: minRange, - maxRange: maxRange - }; -} - -function drawLineDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - var lineOption = opts.extra.line || { - type: 'straight', - width: 2 - }; - lineOption.type = lineOption.type ? lineOption.type : 'straight'; - lineOption.width = lineOption.width ? lineOption.width : 2; - - let ranges = [].concat(opts.chartData.yAxisData.ranges); - let xAxisData = opts.chartData.xAxisData, - xAxisPoints = xAxisData.xAxisPoints, - eachSpacing = xAxisData.eachSpacing; - - var minRange = ranges.pop(); - var maxRange = ranges.shift(); - var calPoints = []; - - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { - context.translate(opts._scrollDistance_, 0); - } - - series.forEach(function(eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - calPoints.push(points); - var splitPointList = splitPoints(points); - - splitPointList.forEach(function(points, index) { - context.beginPath(); - context.setStrokeStyle(eachSeries.color); - context.setLineWidth(lineOption.width * opts.pixelRatio); - if (points.length === 1) { - context.moveTo(points[0].x, points[0].y); - context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); - } else { - context.moveTo(points[0].x, points[0].y); - if (lineOption.type === 'curve') { - points.forEach(function(item, index) { - if (index > 0) { - var ctrlPoint = createCurveControlPoints(points, index - 1); - context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, - item.x, item - .y); - } - }); - } else { - points.forEach(function(item, index) { - if (index > 0) { - context.lineTo(item.x, item.y); - } - }); - } - context.moveTo(points[0].x, points[0].y); - } - context.closePath(); - context.stroke(); - }); - - if (opts.dataPointShape !== false) { - var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; - drawPointShape(points, eachSeries.color, shape, context, opts); - } - }); - - if (opts.dataLabel !== false && process === 1) { - series.forEach(function(eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - drawPointText(points, eachSeries, config, context); - }); - } - - context.restore(); - - return { - xAxisPoints: xAxisPoints, - calPoints: calPoints, - eachSpacing: eachSpacing, - minRange: minRange, - maxRange: maxRange - }; -} - -function drawMixDataPoints(series, opts, config, context) { - let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - let ranges = [].concat(opts.chartData.yAxisData.ranges); - let xAxisData = opts.chartData.xAxisData, - xAxisPoints = xAxisData.xAxisPoints, - eachSpacing = xAxisData.eachSpacing; - - let minRange = ranges.pop(); - let maxRange = ranges.shift(); - let endY = opts.height - opts.area[2]; - let calPoints = []; - - var columnIndex = 0; - var columnLength = 0; - series.forEach(function(eachSeries, seriesIndex) { - if (eachSeries.type == 'column') { - columnLength += 1; - } - }); - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { - context.translate(opts._scrollDistance_, 0); - } - - series.forEach(function(eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - calPoints.push(points); - - // 绘制柱状数据图 - if (eachSeries.type == 'column') { - points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); - points.forEach(function(item, index) { - if (item !== null) { - context.beginPath(); - context.setStrokeStyle(item.color || eachSeries.color); - context.setLineWidth(1) - context.setFillStyle(item.color || eachSeries.color); - var startX = item.x - item.width / 2; - var height = opts.height - item.y - opts.area[2]; - context.moveTo(startX, item.y); - context.moveTo(startX-1, item.y); - context.lineTo(startX+item.width-2,item.y); - context.lineTo(startX+item.width-2,opts.height - opts.area[2]); - context.lineTo(startX,opts.height - opts.area[2]); - context.lineTo(startX,item.y); - //context.rect(startX, item.y, item.width, height); - context.closePath(); - context.stroke(); - context.fill(); - context.closePath(); - context.fill(); - } - }); - columnIndex += 1; - } - - //绘制区域图数据 - - if (eachSeries.type == 'area') { - let splitPointList = splitPoints(points); - for (let i = 0; i < splitPointList.length; i++) { - let points = splitPointList[i]; - // 绘制区域数据 - context.beginPath(); - context.setStrokeStyle(eachSeries.color); - context.setFillStyle(hexToRgb(eachSeries.color, 0.2)); - context.setLineWidth(2 * opts.pixelRatio); - if (points.length > 1) { - var firstPoint = points[0]; - let lastPoint = points[points.length - 1]; - context.moveTo(firstPoint.x, firstPoint.y); - if (eachSeries.style === 'curve') { - points.forEach(function(item, index) { - if (index > 0) { - var ctrlPoint = createCurveControlPoints(points, index - 1); - context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); - } - }); - } else { - points.forEach(function(item, index) { - if (index > 0) { - context.lineTo(item.x, item.y); - } - }); - } - context.lineTo(lastPoint.x, endY); - context.lineTo(firstPoint.x, endY); - context.lineTo(firstPoint.x, firstPoint.y); - } else { - let item = points[0]; - context.moveTo(item.x - eachSpacing / 2, item.y); - context.lineTo(item.x + eachSpacing / 2, item.y); - context.lineTo(item.x + eachSpacing / 2, endY); - context.lineTo(item.x - eachSpacing / 2, endY); - context.moveTo(item.x - eachSpacing / 2, item.y); - } - context.closePath(); - context.fill(); - } - } - - // 绘制折线数据图 - if (eachSeries.type == 'line') { - var splitPointList = splitPoints(points); - splitPointList.forEach(function(points, index) { - context.beginPath(); - context.setStrokeStyle(eachSeries.color); - context.setLineWidth(2 * opts.pixelRatio); - if (points.length === 1) { - context.moveTo(points[0].x, points[0].y); - context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); - } else { - context.moveTo(points[0].x, points[0].y); - if (eachSeries.style == 'curve') { - points.forEach(function(item, index) { - if (index > 0) { - var ctrlPoint = createCurveControlPoints(points, index - 1); - context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, - item.x, - item.y); - } - }); - } else { - points.forEach(function(item, index) { - if (index > 0) { - context.lineTo(item.x, item.y); - } - }); - } - context.moveTo(points[0].x, points[0].y); - } - context.closePath(); - context.stroke(); - }); - } - - // 绘制点数据图 - if (eachSeries.type == 'point') { - points.forEach(function(pointsa, index) { - if (pointsa) { - context.beginPath(); - context.setFillStyle(eachSeries.color); - context.setStrokeStyle('#FFFFFF'); - context.setLineWidth(1 * opts.pixelRatio); - context.moveTo(pointsa.x + 3.5 * opts.pixelRatio, pointsa.y); - context.arc(pointsa.x, pointsa.y, 4 * opts.pixelRatio, 0, 2 * Math.PI); - context.closePath(); - context.fill(); - context.stroke(); - } - }); - } - - if (eachSeries.addPoint == true && eachSeries.type !== 'column') { - var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; - drawPointShape(points, eachSeries.color, shape, context, opts); - } - }); - if (opts.dataLabel !== false && process === 1) { - var columnIndex = 0; - series.forEach(function(eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - if (eachSeries.type !== 'column') { - drawPointText(points, eachSeries, config, context); - } else { - points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); - drawPointText(points, eachSeries, config, context); - columnIndex += 1; - } - - }); - } - - context.restore(); - - return { - xAxisPoints: xAxisPoints, - calPoints: calPoints, - eachSpacing: eachSpacing, - minRange: minRange, - maxRange: maxRange - }; -} - -function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) { - var toolTipOption = opts.extra.tooltip || {}; - if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'candle' || opts.type == 'mix')) { - drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) - } - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { - context.translate(opts._scrollDistance_, 0); - } - if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { - drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints); - } - context.restore(); - -} - -function drawXAxis(categories, opts, config, context) { - - let xAxisData = opts.chartData.xAxisData, - xAxisPoints = xAxisData.xAxisPoints, - startX = xAxisData.startX, - endX = xAxisData.endX, - eachSpacing = xAxisData.eachSpacing; - var boundaryGap='center'; - if (opts.type == 'line'||opts.type == 'area'){ - boundaryGap=opts.xAxis.boundaryGap; - } - var startY = opts.height - opts.area[2]; - var endY = opts.area[0]; - - //绘制滚动条 - if (opts.enableScroll && opts.xAxis.scrollShow) { - var scrollY = opts.height - opts.area[2] + config.xAxisHeight; - var scrollScreenWidth = endX - startX; - var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1); - var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth; - var scrollLeft = 0; - if (opts._scrollDistance_) { - scrollLeft = -opts._scrollDistance_ * (scrollScreenWidth) / scrollTotalWidth; - } - context.beginPath(); - context.setLineCap('round'); - context.setLineWidth(6 * opts.pixelRatio); - context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF"); - context.moveTo(startX, scrollY); - context.lineTo(endX, scrollY); - context.stroke(); - context.closePath(); - context.beginPath(); - context.setLineCap('round'); - context.setLineWidth(6 * opts.pixelRatio); - context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6"); - context.moveTo(startX + scrollLeft, scrollY); - context.lineTo(startX + scrollLeft + scrollWidth, scrollY); - context.stroke(); - context.closePath(); - context.setLineCap('butt'); - } - - context.save(); - - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { - context.translate(opts._scrollDistance_, 0); - } - - - if (opts.xAxis.disableGrid !== true) { - context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); - context.setLineCap('butt'); - context.setLineWidth(1 * opts.pixelRatio); - if (opts.xAxis.gridType == 'dash') { - context.setLineDash([opts.xAxis.dashLength, opts.xAxis.dashLength]); - } - if (opts.xAxis.type === 'calibration') { - xAxisPoints.forEach(function(item, index) { - if (index > 0) { - context.beginPath(); - context.moveTo(item - eachSpacing / 2, startY); - context.lineTo(item - eachSpacing / 2, startY + 4 * opts.pixelRatio); - context.closePath(); - context.stroke(); - } - }); - } else { - opts.xAxis.gridEval = opts.xAxis.gridEval || 1; - xAxisPoints.forEach(function(item, index) { - if (index % opts.xAxis.gridEval == 0) { - context.beginPath(); - context.moveTo(item, startY); - context.lineTo(item, endY); - context.stroke(); - } - }); - } - context.setLineDash([]); - } - - - //不绘制X轴 - if (opts.xAxis.disabled !== true) { - // 对X轴列表做抽稀处理 - let validWidth = opts.width - opts.padding[1] - opts.padding[3] - config.yAxisWidth - config.yAxisTitleWidth; - //默认全部显示X轴标签 - let maxXAxisListLength = categories.length; - //如果设置了X轴单屏数量 - if (opts.xAxis.labelCount) { - //如果设置X轴密度 - if (opts.xAxis.itemCount) { - maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount); - } else { - maxXAxisListLength = opts.xAxis.labelCount; - } - maxXAxisListLength -= 1; - } - - let ratio = Math.ceil(categories.length / maxXAxisListLength); - - let newCategories = []; - let cgLength = categories.length; - for (let i = 0; i < cgLength; i++) { - if (i % ratio !== 0) { - newCategories.push(""); - } else { - newCategories.push(categories[i]); - } - } - newCategories[cgLength - 1] = categories[cgLength - 1]; - - var xAxisFontSize = opts.xAxis.fontSize || config.fontSize; - if (config._xAxisTextAngle_ === 0) { - newCategories.forEach(function(item, index) { - var offset = - measureText(item, xAxisFontSize) / 2; - if(boundaryGap == 'center'){ - offset+=eachSpacing / 2; - } - context.beginPath(); - context.setFontSize(xAxisFontSize); - context.setFillStyle(opts.xAxis.fontColor || '#666666'); - context.fillText(item, xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - xAxisFontSize) / 2); - context.closePath(); - context.stroke(); - }); - - } else { - newCategories.forEach(function(item, index) { - context.save(); - context.beginPath(); - context.setFontSize(xAxisFontSize); - context.setFillStyle(opts.xAxis.fontColor || '#666666'); - var textWidth = measureText(item); - var offset = - textWidth; - if(boundaryGap == 'center'){ - offset+=eachSpacing / 2; - } - var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + xAxisFontSize / 2 + 5, opts.height), - transX = _calRotateTranslate.transX, - transY = _calRotateTranslate.transY; - - context.rotate(-1 * config._xAxisTextAngle_); - context.translate(transX, transY); - context.fillText(item, xAxisPoints[index] + offset, startY + xAxisFontSize + 5); - context.closePath(); - context.stroke(); - context.restore(); - }); - } - } - context.restore(); - -} - -function drawYAxisGrid(categories, opts, config, context) { - if (opts.yAxis.disableGrid === true) { - return; - } - let spacingValid = opts.height - opts.area[0] - opts.area[2]; - let eachSpacing = spacingValid / config.yAxisSplit; - let startX = opts.area[3]; - let xAxisPoints = opts.chartData.xAxisData.xAxisPoints, - xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing; - let TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1); - let endX = startX + TotalWidth; - - let points = []; - for (let i = 0; i < config.yAxisSplit + 1; i++) { - points.push(opts.height - opts.area[2] - eachSpacing * i); - } - - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { - context.translate(opts._scrollDistance_, 0); - } - - if (opts.yAxis.gridType == 'dash') { - context.setLineDash([opts.yAxis.dashLength, opts.yAxis.dashLength]); - } - context.setStrokeStyle(opts.yAxis.gridColor || "#cccccc"); - context.setLineWidth(1 * opts.pixelRatio); - points.forEach(function(item, index) { - context.beginPath(); - context.moveTo(startX, item); - context.lineTo(endX, item); - context.stroke(); - }); - context.setLineDash([]); - - context.restore(); -} - -function drawYAxis(series, opts, config, context) { - if (opts.yAxis.disabled === true) { - return; - } - let rangesFormat = opts.chartData.yAxisData.rangesFormat; - var spacingValid = opts.height - opts.area[0] - opts.area[2]; - var eachSpacing = Math.floor(spacingValid / config.yAxisSplit); - var startX = opts.area[3]; - var endX = opts.width - opts.area[1]; - var endY = opts.height - opts.area[2]; - var fillEndY = endY + config.xAxisHeight; - if (opts.xAxis.scrollShow) { - fillEndY -= 3 * opts.pixelRatio; - } - // set YAxis background - context.beginPath(); - context.setFillStyle(opts.background || '#ffffff'); - if (opts._scrollDistance_ < 0) { - context.fillRect(0, 0, startX, fillEndY); - } - if(opts.enableScroll == true){ - context.fillRect(endX, 0, opts.width, fillEndY); - } - context.closePath(); - context.stroke(); - - var points = []; - for (var i = 0; i <= config.yAxisSplit; i++) { - points.push(opts.area[0] + eachSpacing * i); - } - - var yAxisFontSize = opts.yAxis.fontSize || config.fontSize; - rangesFormat.forEach(function(item, index) { - var pos = points[index] ? points[index] : endY; - context.beginPath(); - context.setFontSize(yAxisFontSize); - context.setFillStyle(opts.yAxis.fontColor || '#666666'); - context.fillText(String(item), opts.area[3] - config.yAxisWidth, pos + yAxisFontSize / 2); - context.closePath(); - context.stroke(); - }); - - if (opts.yAxis.title) { - drawYAxisTitle(opts.yAxis.title, opts, config, context); - } -} - -function drawLegend(series, opts, config, context, chartData) { - if (opts.legend.show === false) { - return; - } - let legendData = chartData.legendData; - let legendList = legendData.points; - let legendArea = legendData.area; - let padding = opts.legend.padding; - let fontSize = opts.legend.fontSize; - let shapeWidth = 15 * opts.pixelRatio; - let shapeRight = 5 * opts.pixelRatio; - let itemGap = opts.legend.itemGap; - let lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize); - - //画背景及边框 - context.beginPath(); - context.setLineWidth(opts.legend.borderWidth); - context.setStrokeStyle(opts.legend.borderColor); - context.setFillStyle(opts.legend.backgroundColor); - context.moveTo(legendArea.start.x, legendArea.start.y); - context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height); - context.closePath(); - context.fill(); - context.stroke(); - - legendList.forEach(function(itemList, listIndex) { - let width = 0; - let height = 0; - width = legendData.widthArr[listIndex]; - height = legendData.heightArr[listIndex]; - let startX = 0; - let startY = 0; - if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { - startX = legendArea.start.x + (legendArea.width - width) / 2; - startY = legendArea.start.y + padding + listIndex * lineHeight; - } else { - if (listIndex == 0) { - width = 0; - } else { - width = legendData.widthArr[listIndex - 1]; - } - startX = legendArea.start.x + padding + width; - startY = legendArea.start.y + padding + (legendArea.height - height) / 2; - } - - context.setFontSize(config.fontSize); - for (let i = 0; i < itemList.length; i++) { - let item = itemList[i]; - item.area = [0, 0, 0, 0]; - item.area[0] = startX; - item.area[1] = startY; - item.area[3] = startY + lineHeight; - context.beginPath(); - context.setLineWidth(1 * opts.pixelRatio); - context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor); - context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor); - switch (item.legendShape) { - case 'line': - context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio); - context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio, 15 * opts.pixelRatio, 4 * opts.pixelRatio); - break; - case 'triangle': - context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); - context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio); - context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio); - context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); - break; - case 'diamond': - context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); - context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight); - context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio); - context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight); - context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); - break; - case 'circle': - context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight); - context.arc(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight, 5 * opts.pixelRatio, 0, 2 * Math.PI); - break; - case 'rect': - context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); - context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio); - break; - default: - context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); - context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio); - } - context.closePath(); - context.fill(); - context.stroke(); - - startX += shapeWidth + shapeRight; - let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2; - context.beginPath(); - context.setFontSize(fontSize); - context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor); - context.fillText(item.name, startX, startY + fontTrans); - context.closePath(); - context.stroke(); - if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { - startX += measureText(item.name, fontSize) + itemGap; - item.area[2] = startX; - } else { - item.area[2] = startX + measureText(item.name, fontSize) + itemGap;; - startX -= shapeWidth + shapeRight; - startY += lineHeight; - } - } - }); -} - -function drawPieDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - var pieOption = assign({}, { - activeOpacity: 0.5, - activeRadius: 10 * opts.pixelRatio, - offsetAngle: 0, - labelWidth: 15 * opts.pixelRatio, - ringWidth: 0, - border:false, - borderWidth:2, - borderColor:'#FFFFFF' - }, opts.extra.pie); - var centerPosition = { - x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, - y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 - }; - if (config.pieChartLinePadding == 0) { - config.pieChartLinePadding = pieOption.activeRadius; - } - - var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding); - - series = getPieDataPoints(series, radius, process); - - var activeRadius = pieOption.activeRadius; - - series = series.map(function(eachSeries) { - eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180; - return eachSeries; - }); - series.forEach(function(eachSeries, seriesIndex) { - if (opts.tooltip) { - if (opts.tooltip.index == seriesIndex) { - context.beginPath(); - context.setFillStyle(hexToRgb(eachSeries.color, opts.extra.pie.activeOpacity || 0.5)); - context.moveTo(centerPosition.x, centerPosition.y); - context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, - eachSeries._start_ + 2 * - eachSeries._proportion_ * Math.PI); - context.closePath(); - context.fill(); - } - } - context.beginPath(); - context.setLineWidth(pieOption.borderWidth * opts.pixelRatio); - context.lineJoin = "round"; - context.setStrokeStyle(pieOption.borderColor); - context.setFillStyle(eachSeries.color); - context.moveTo(centerPosition.x, centerPosition.y); - context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); - context.closePath(); - context.fill(); - if (pieOption.border == true) { - context.stroke(); - } - }); - - if (opts.type === 'ring') { - var innerPieWidth = radius * 0.6; - if (typeof opts.extra.pie.ringWidth === 'number' && opts.extra.pie.ringWidth > 0) { - innerPieWidth = Math.max(0, radius - opts.extra.pie.ringWidth); - } - context.beginPath(); - context.setFillStyle(opts.background || '#ffffff'); - context.moveTo(centerPosition.x, centerPosition.y); - context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI); - context.closePath(); - context.fill(); - } - - if (opts.dataLabel !== false && process === 1) { - var valid = false; - for (var i = 0, len = series.length; i < len; i++) { - if (series[i].data > 0) { - valid = true; - break; - } - } - - if (valid) { - drawPieText(series, opts, config, context, radius, centerPosition); - } - } - - if (process === 1 && opts.type === 'ring') { - drawRingTitle(opts, config, context, centerPosition); - } - - return { - center: centerPosition, - radius: radius, - series: series - }; -} - -function drawRoseDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - var roseOption = assign({}, { - type: 'area', - activeOpacity: 0.5, - activeRadius: 10 * opts.pixelRatio, - offsetAngle: 0, - labelWidth: 15 * opts.pixelRatio, - border:false, - borderWidth:2, - borderColor:'#FFFFFF' - }, opts.extra.rose); - if (config.pieChartLinePadding == 0) { - config.pieChartLinePadding = roseOption.activeRadius; - } - var centerPosition = { - x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, - y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 - }; - var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding); - var minRadius = roseOption.minRadius || radius * 0.5; - - series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process); - - var activeRadius = roseOption.activeRadius; - - series = series.map(function(eachSeries) { - eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180; - return eachSeries; - }); - - series.forEach(function(eachSeries, seriesIndex) { - if (opts.tooltip) { - if (opts.tooltip.index == seriesIndex) { - context.beginPath(); - context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5)); - context.moveTo(centerPosition.x, centerPosition.y); - context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, - eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI); - context.closePath(); - context.fill(); - } - } - context.beginPath(); - context.setLineWidth(roseOption.borderWidth * opts.pixelRatio); - context.lineJoin = "round"; - context.setStrokeStyle(roseOption.borderColor); - context.setFillStyle(eachSeries.color); - context.moveTo(centerPosition.x, centerPosition.y); - context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * - eachSeries._rose_proportion_ * Math.PI); - context.closePath(); - context.fill(); - if (roseOption.border == true) { - context.stroke(); - } - }); - - if (opts.dataLabel !== false && process === 1) { - var valid = false; - for (var i = 0, len = series.length; i < len; i++) { - if (series[i].data > 0) { - valid = true; - break; - } - } - - if (valid) { - drawPieText(series, opts, config, context, radius, centerPosition); - } - } - - return { - center: centerPosition, - radius: radius, - series: series - }; -} - -function drawArcbarDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - var arcbarOption = assign({}, { - startAngle: 0.75, - endAngle: 0.25, - type: 'default', - width: 12 * opts.pixelRatio - }, opts.extra.arcbar); - - series = getArcbarDataPoints(series, arcbarOption, process); - var centerPosition = { - x: opts.width / 2, - y: opts.height / 2 - }; - var radius = Math.min(centerPosition.x, centerPosition.y); - radius -= 5 * opts.pixelRatio; - radius -= arcbarOption.width / 2; - - //背景颜色 - context.setLineWidth(arcbarOption.width); - context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9'); - context.setLineCap('round'); - context.beginPath(); - if (arcbarOption.type == 'default') { - context.arc(centerPosition.x, centerPosition.y, radius, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * - Math.PI, false); - } else { - context.arc(centerPosition.x, centerPosition.y, radius, 0, 2 * Math.PI, false); - } - context.stroke(); - - for (let i = 0; i < series.length; i++) { - let eachSeries = series[i]; - context.setLineWidth(arcbarOption.width); - context.setStrokeStyle(eachSeries.color); - context.setLineCap('round'); - context.beginPath(); - context.arc(centerPosition.x, centerPosition.y, radius, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * - Math.PI, false); - context.stroke(); - } - - drawRingTitle(opts, config, context, centerPosition); - - return { - center: centerPosition, - radius: radius, - series: series - }; -} - -function drawGaugeDataPoints(categories, series, opts, config, context) { - var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; - var gaugeOption = assign({}, { - startAngle: 0.75, - endAngle: 0.25, - width: 15, - splitLine: { - fixRadius: 0, - splitNumber: 10, - width: 15, - color: '#FFFFFF', - childNumber: 5, - childWidth: 5 - }, - pointer: { - width: 15, - color: 'auto' - } - }, opts.extra.gauge); - - if (gaugeOption.oldAngle == undefined) { - gaugeOption.oldAngle = gaugeOption.startAngle; - } - if (gaugeOption.oldData == undefined) { - gaugeOption.oldData = 0; - } - categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle); - - var centerPosition = { - x: opts.width / 2, - y: opts.height / 2 - }; - var radius = Math.min(centerPosition.x, centerPosition.y); - radius -= 5 * opts.pixelRatio; - radius -= gaugeOption.width / 2; - var innerRadius = radius - gaugeOption.width; - - //画背景 - context.setLineWidth(gaugeOption.width); - context.setLineCap('butt'); - for (let i = 0; i < categories.length; i++) { - let eachCategories = categories[i]; - context.beginPath(); - context.setStrokeStyle(eachCategories.color); - context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * - Math.PI, false); - context.stroke(); - } - context.save(); - - //画刻度线 - let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1; - let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; - let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber; - let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius; - let endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width; - let childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth; - - context.translate(centerPosition.x, centerPosition.y); - context.rotate((gaugeOption.startAngle - 1) * Math.PI); - - for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { - context.beginPath(); - context.setStrokeStyle(gaugeOption.splitLine.color); - context.setLineWidth(2 * opts.pixelRatio); - context.moveTo(startX, 0); - context.lineTo(endX, 0); - context.stroke(); - context.rotate(splitAngle * Math.PI); - } - context.restore(); - - context.save(); - context.translate(centerPosition.x, centerPosition.y); - context.rotate((gaugeOption.startAngle - 1) * Math.PI); - - for (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) { - context.beginPath(); - context.setStrokeStyle(gaugeOption.splitLine.color); - context.setLineWidth(1 * opts.pixelRatio); - context.moveTo(startX, 0); - context.lineTo(childendX, 0); - context.stroke(); - context.rotate(childAngle * Math.PI); - } - context.restore(); - - //画指针 - series = getGaugeDataPoints(series, categories, gaugeOption, process); - - for (let i = 0; i < series.length; i++) { - let eachSeries = series[i]; - context.save(); - context.translate(centerPosition.x, centerPosition.y); - context.rotate((eachSeries._proportion_ - 1) * Math.PI); - context.beginPath(); - context.setFillStyle(eachSeries.color); - context.moveTo(gaugeOption.pointer.width, 0); - context.lineTo(0, -gaugeOption.pointer.width / 2); - context.lineTo(-innerRadius, 0); - context.lineTo(0, gaugeOption.pointer.width / 2); - context.lineTo(gaugeOption.pointer.width, 0); - context.closePath(); - context.fill(); - context.beginPath(); - context.setFillStyle('#FFFFFF'); - context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false); - context.fill(); - context.restore(); - } - - if (opts.dataLabel !== false) { - drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context); - } - - drawRingTitle(opts, config, context, centerPosition); - - if (process === 1 && opts.type === 'gauge') { - opts.extra.gauge.oldAngle = series[0]._proportion_; - opts.extra.gauge.oldData = series[0].data; - } - return { - center: centerPosition, - radius: radius, - innerRadius: innerRadius, - categories: categories, - totalAngle: totalAngle - }; -} - -function drawRadarDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - var radarOption = assign({},{ - gridColor: '#cccccc', - labelColor: '#666666', - opacity: 0.2 - },opts.extra.radar); - - var coordinateAngle = getRadarCoordinateSeries(opts.categories.length); - - var centerPosition = { - x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, - y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 - }; - - var radius = Math.min(centerPosition.x - (getMaxTextListLength(opts.categories) + config.radarLabelTextMargin), - centerPosition.y - config.radarLabelTextMargin); - //TODO逻辑不对 - radius -= opts.padding[1]; - - // draw grid - context.beginPath(); - context.setLineWidth(1 * opts.pixelRatio); - context.setStrokeStyle(radarOption.gridColor); - coordinateAngle.forEach(function(angle) { - var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition); - context.moveTo(centerPosition.x, centerPosition.y); - context.lineTo(pos.x, pos.y); - }); - context.stroke(); - context.closePath(); - // draw split line grid - - var _loop = function _loop(i) { - var startPos = {}; - context.beginPath(); - context.setLineWidth(1 * opts.pixelRatio); - context.setStrokeStyle(radarOption.gridColor); - coordinateAngle.forEach(function(angle, index) { - var pos = convertCoordinateOrigin(radius / config.radarGridCount * i * Math.cos(angle), radius / config.radarGridCount * - i * Math.sin(angle), centerPosition); - if (index === 0) { - startPos = pos; - context.moveTo(pos.x, pos.y); - } else { - context.lineTo(pos.x, pos.y); - } - }); - context.lineTo(startPos.x, startPos.y); - context.stroke(); - context.closePath(); - }; - - for (var i = 1; i <= config.radarGridCount; i++) { - _loop(i); - } - - var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process); - - radarDataPoints.forEach(function(eachSeries, seriesIndex) { - // 绘制区域数据 - context.beginPath(); - context.setFillStyle(hexToRgb(eachSeries.color, radarOption.opacity)); - eachSeries.data.forEach(function(item, index) { - if (index === 0) { - context.moveTo(item.position.x, item.position.y); - } else { - context.lineTo(item.position.x, item.position.y); - } - }); - context.closePath(); - context.fill(); - - if (opts.dataPointShape !== false) { - var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; - var points = eachSeries.data.map(function(item) { - return item.position; - }); - drawPointShape(points, eachSeries.color, shape, context, opts); - } - }); - // draw label text - drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context); - - return { - center: centerPosition, - radius: radius, - angleList: coordinateAngle - }; -} - -function normalInt(min, max, iter) { - iter = iter==0?1:iter; - var arr = []; - for (var i = 0; i < iter; i++) { - arr[i] = Math.random(); - }; - return Math.floor(arr.reduce(function(i,j){return i+j})/iter*(max-min))+min; -}; - -function collisionNew(area,points,width,height){ - var isIn=false; - for(let i=0;ipoints[i].area[2]||area[1]>points[i].area[3]||area[2]width || area[3]>height){ - isIn=true; - break; - }else{ - isIn=false; - } - }else{ - isIn=true; - break; - } - } - } - return isIn; -}; - -function getBoundingBox(data) { - var bounds = {}, coords; - bounds.xMin = 180; - bounds.xMax = 0; - bounds.yMin = 90; - bounds.yMax = 0 - for (var i = 0; i < data.length; i++) { - var coorda = data[i].geometry.coordinates - for (var k = 0; k < coorda.length; k++) { - coords = coorda[k]; - if (coords.length == 1) { - coords = coords[0] - } - for (var j = 0; j < coords.length; j++) { - var longitude = coords[j][0]; - var latitude = coords[j][1]; - var point = { - x: longitude, - y: latitude - } - bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x; - bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x; - bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y; - bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y; - } - } - } - return bounds; -} - -function coordinateToPoint(latitude, longitude,bounds,scale,xoffset,yoffset) { - return { - x: (longitude - bounds.xMin) * scale+xoffset, - y: (bounds.yMax - latitude) * scale+yoffset - }; -} - -function pointToCoordinate(pointY, pointX,bounds,scale,xoffset,yoffset) { - return { - x: (pointX-xoffset)/scale+bounds.xMin, - y: bounds.yMax - (pointY-yoffset)/scale - }; -} - -function isRayIntersectsSegment(poi,s_poi,e_poi){ - if (s_poi[1]==e_poi[1]){return false;} - if (s_poi[1]>poi[1] && e_poi[1]>poi[1]){return false;} - if (s_poi[1]poi[1]){return false;} - if (e_poi[1]==poi[1] && s_poi[1]>poi[1]){return false;} - if (s_poi[0]0.7) { - return true; - }else {return false}; - }; - for (let i = 0; i < points.length; i++) { - let text = points[i].name; - let tHeight = points[i].textSize; - let tWidth = measureText(text,tHeight); - let isSpin = Spin(); - let x,y,area,areav; - let breaknum=0; - while(true) { - breaknum++; - let isCollision; - if (isSpin) { - x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2; - y = normalInt(-opts.height/2, opts.height/2,5)+tHeight/2; - area=[y-5-tWidth+opts.width/2,(-x-5+opts.height/2),y+5+opts.width/2,(-x+tHeight+5+opts.height/2)]; - areav=[opts.width-(opts.width/2-opts.height/2)-(-x+tHeight+5+opts.height/2)-5,(opts.height/2-opts.width/2)+(y-5-tWidth+opts.width/2)-5,opts.width-(opts.width/2-opts.height/2)-(-x+tHeight+5+opts.height/2)+tHeight,(opts.height/2-opts.width/2)+(y-5-tWidth+opts.width/2)+tWidth+5]; - isCollision = collisionNew(areav,points,opts.height,opts.width); - }else{ - x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2; - y = normalInt(-opts.height/2, opts.height/2,5)+tHeight/2; - area=[x-5+opts.width/2,y-5-tHeight+opts.height/2,x+tWidth+5+opts.width/2,y+5+opts.height/2]; - isCollision = collisionNew(area,points,opts.width,opts.height); - } - if (!isCollision) break; - if (breaknum==1000){ - area=[-1000,-1000,-1000,-1000]; - break; - } - }; - if (isSpin) { - points[i].area=areav; - points[i].areav=area; - }else{ - points[i].area=area; - } - points[i].rotate=isSpin; - }; - break; - } - return points; -} - - -function drawWordCloudDataPoints(series, opts, config, context) { - let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - let wordOption = assign({},{ - type: 'normal', - autoColors: true - },opts.extra.word); - - context.beginPath(); - context.setFillStyle(opts.background||'#FFFFFF'); - context.rect(0,0,opts.width,opts.height); - context.fill(); - context.save(); - let points = opts.chartData.wordCloudData; - context.translate(opts.width/2,opts.height/2); - - for(let i=0;i0){ - if (opts.tooltip) { - if (opts.tooltip.index == i) { - context.strokeText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process); - }else{ - context.fillText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process); - } - }else{ - context.fillText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process); - } - } - }else{ - if(points[i].area[0]>0){ - if (opts.tooltip) { - if (opts.tooltip.index == i) { - context.strokeText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process); - }else{ - context.fillText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process); - } - }else{ - context.fillText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process); - } - - } - } - - context.stroke(); - context.restore(); - } - context.restore(); -} - -function drawFunnelDataPoints(series, opts, config, context) { - let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - let funnelOption = assign({},{ - activeWidth:10, - activeOpacity:0.3, - border:false, - borderWidth:2, - borderColor:'#FFFFFF', - fillOpacity:1, - labelAlign:'right' - },opts.extra.funnel); - let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/series.length; - let centerPosition = { - x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, - y: opts.height-opts.area[2] - }; - let activeWidth = funnelOption.activeWidth; - let radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth); - series = getFunnelDataPoints(series, radius, process); - context.save(); - context.translate(centerPosition.x,centerPosition.y); - for(let i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {}; - this.opts = assign({}, this.opts, data); - this.opts.updateData = true; - let scrollPosition = data.scrollPosition || 'current'; - switch (scrollPosition) { - case 'current': - this.opts._scrollDistance_ = this.scrollOption.currentOffset; - break; - case 'left': - this.opts._scrollDistance_ = 0; - this.scrollOption = { - currentOffset: 0, - startTouchX: 0, - distance: 0, - lastMoveTime: 0 - }; - break; - case 'right': - let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config), - yAxisWidth = _calYAxisData.yAxisWidth; - this.config.yAxisWidth = yAxisWidth; - let offsetLeft = 0; - let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), - xAxisPoints = _getXAxisPoints0.xAxisPoints, - startX = _getXAxisPoints0.startX, - endX = _getXAxisPoints0.endX, - eachSpacing = _getXAxisPoints0.eachSpacing; - let totalWidth = eachSpacing * (xAxisPoints.length - 1); - let screenWidth = endX - startX; - offsetLeft = screenWidth - totalWidth; - this.scrollOption = { - currentOffset: offsetLeft, - startTouchX: offsetLeft, - distance: 0, - lastMoveTime: 0 - }; - this.opts._scrollDistance_ = offsetLeft; - break; - } - drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); -}; - -Charts.prototype.zoom = function() { - var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount; - if (this.opts.enableScroll !== true) { - console.log('请启用滚动条后使用!') - return; - } - //当前屏幕中间点 - let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round( - this.opts.xAxis.itemCount / 2); - this.opts.animation = false; - this.opts.xAxis.itemCount = val.itemCount; - //重新计算x轴偏移距离 - let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config), - yAxisWidth = _calYAxisData.yAxisWidth; - this.config.yAxisWidth = yAxisWidth; - let offsetLeft = 0; - let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), - xAxisPoints = _getXAxisPoints0.xAxisPoints, - startX = _getXAxisPoints0.startX, - endX = _getXAxisPoints0.endX, - eachSpacing = _getXAxisPoints0.eachSpacing; - let centerLeft = eachSpacing * centerPoint; - let screenWidth = endX - startX; - let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1); - offsetLeft = screenWidth / 2 - centerLeft; - if (offsetLeft > 0) { - offsetLeft = 0; - } - if (offsetLeft < MaxLeft) { - offsetLeft = MaxLeft; - } - this.scrollOption = { - currentOffset: offsetLeft, - startTouchX: offsetLeft, - distance: 0, - lastMoveTime: 0 - }; - this.opts._scrollDistance_ = offsetLeft; - drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); -}; - -Charts.prototype.stopAnimation = function() { - this.animationInstance && this.animationInstance.stop(); -}; - -Charts.prototype.addEventListener = function(type, listener) { - this.event.addEventListener(type, listener); -}; - -Charts.prototype.getCurrentDataIndex = function(e) { - var touches = null; - if (e.changedTouches) { - touches = e.changedTouches[0]; - } else { - touches = e.mp.changedTouches[0]; - } - if (touches) { - let _touches$ = getTouches(touches, this.opts, e); - if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose') { - return findPieChartCurrentIndex({ - x: _touches$.x, - y: _touches$.y - }, this.opts.chartData.pieData); - } else if (this.opts.type === 'radar') { - return findRadarChartCurrentIndex({ - x: _touches$.x, - y: _touches$.y - }, this.opts.chartData.radarData, this.opts.categories.length); - } else if (this.opts.type === 'funnel') { - return findFunnelChartCurrentIndex({ - x: _touches$.x, - y: _touches$.y - }, this.opts.chartData.funnelData); - } else if (this.opts.type === 'map') { - return findMapChartCurrentIndex({ - x: _touches$.x, - y: _touches$.y - }, this.opts); - }else if (this.opts.type === 'word') { - return findWordChartCurrentIndex({ - x: _touches$.x, - y: _touches$.y - }, this.opts.chartData.wordCloudData); - } else { - return findCurrentIndex({ - x: _touches$.x, - y: _touches$.y - }, this.opts.chartData.xAxisPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); - } - } - return -1; -}; - -Charts.prototype.getLegendDataIndex = function(e) { - var touches = null; - if (e.changedTouches) { - touches = e.changedTouches[0]; - } else { - touches = e.mp.changedTouches[0]; - } - if (touches) { - let _touches$ = getTouches(touches, this.opts, e); - return findLegendIndex({ - x: _touches$.x, - y: _touches$.y - }, this.opts.chartData.legendData); - } - return -1; -}; - -Charts.prototype.touchLegend = function(e) { - var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var touches = null; - if (e.changedTouches) { - touches = e.changedTouches[0]; - } else { - touches = e.mp.changedTouches[0]; - } - if (touches) { - var _touches$ = getTouches(touches, this.opts, e); - var index = this.getLegendDataIndex(e); - if (index >= 0) { - this.opts.series[index].show = !this.opts.series[index].show; - this.opts.animation = option.animation ? true : false; - drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); - } - } - -}; - -Charts.prototype.showToolTip = function(e) { - var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var touches = null; - if (e.changedTouches) { - touches = e.changedTouches[0]; - } else { - touches = e.mp.changedTouches[0]; - } - if (!touches) { - console.log("touchError"); - } - var _touches$ = getTouches(touches, this.opts, e); - var currentOffset = this.scrollOption.currentOffset; - var opts = assign({}, this.opts, { - _scrollDistance_: currentOffset, - animation: false - }); - if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column') { - var index = this.getCurrentDataIndex(e); - if (index > -1) { - var seriesData = getSeriesDataItem(this.opts.series, index); - if (seriesData.length !== 0) { - var _getToolTipData = getToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories,option), - textList = _getToolTipData.textList, - offset = _getToolTipData.offset; - offset.y = _touches$.y; - opts.tooltip = { - textList: textList, - offset: offset, - option: option, - index: index - }; - } - } - drawCharts.call(this, opts.type, opts, this.config, this.context); - } - if (this.opts.type === 'mix') { - var index = this.getCurrentDataIndex(e); - if (index > -1) { - var currentOffset = this.scrollOption.currentOffset; - var opts = assign({}, this.opts, { - _scrollDistance_: currentOffset, - animation: false - }); - var seriesData = getSeriesDataItem(this.opts.series, index); - if (seriesData.length !== 0) { - var _getMixToolTipData = getMixToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories,option), - textList = _getMixToolTipData.textList, - offset = _getMixToolTipData.offset; - offset.y = _touches$.y; - opts.tooltip = { - textList: textList, - offset: offset, - option: option, - index: index - }; - } - } - drawCharts.call(this, opts.type, opts, this.config, this.context); - } - if (this.opts.type === 'candle') { - var index = this.getCurrentDataIndex(e); - if (index > -1) { - var currentOffset = this.scrollOption.currentOffset; - var opts = assign({}, this.opts, { - _scrollDistance_: currentOffset, - animation: false - }); - var seriesData = getSeriesDataItem(this.opts.series, index); - if (seriesData.length !== 0) { - var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts.chartData.calPoints, - index, this.opts.categories, this.opts.extra.candle, option), - textList = _getToolTipData.textList, - offset = _getToolTipData.offset; - offset.y = _touches$.y; - opts.tooltip = { - textList: textList, - offset: offset, - option: option, - index: index - }; - } - } - drawCharts.call(this, opts.type, opts, this.config, this.context); - } - if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose'||this.opts.type === 'funnel' ) { - var index = this.getCurrentDataIndex(e); - if (index > -1) { - var currentOffset = this.scrollOption.currentOffset; - var opts = assign({}, this.opts, { - _scrollDistance_: currentOffset, - animation: false - }); - var seriesData = this.opts._series_[index]; - var textList = [{ - text: option.format ? option.format(seriesData) : seriesData.name + ': ' + seriesData.data, - color: seriesData.color - }]; - var offset = { - x: _touches$.x, - y: _touches$.y - }; - opts.tooltip = { - textList: textList, - offset: offset, - option: option, - index: index - }; - } - drawCharts.call(this, opts.type, opts, this.config, this.context); - } - if (this.opts.type === 'map'||this.opts.type === 'word') { - var index = this.getCurrentDataIndex(e); - if (index > -1) { - var currentOffset = this.scrollOption.currentOffset; - var opts = assign({}, this.opts, { - _scrollDistance_: currentOffset, - animation: false - }); - var seriesData = this.opts._series_[index]; - var textList = [{ - text: option.format ? option.format(seriesData) : seriesData.properties.name , - color: seriesData.color - }]; - var offset = { - x: _touches$.x, - y: _touches$.y - }; - opts.tooltip = { - textList: textList, - offset: offset, - option: option, - index: index - }; - } - opts.updateData = false; - drawCharts.call(this, opts.type, opts, this.config, this.context); - } - if (this.opts.type === 'radar') { - var index = this.getCurrentDataIndex(e); - if (index > -1) { - var currentOffset = this.scrollOption.currentOffset; - var opts = assign({}, this.opts, { - _scrollDistance_: currentOffset, - animation: false - }); - var seriesData = getSeriesDataItem(this.opts.series, index); - if (seriesData.length !== 0) { - var textList = seriesData.map(function(item) { - return { - text: option.format ? option.format(item) : item.name + ': ' + item.data, - color: item.color - }; - }); - var offset = { - x: _touches$.x, - y: _touches$.y - }; - opts.tooltip = { - textList: textList, - offset: offset, - option: option, - index: index - }; - } - } - drawCharts.call(this, opts.type, opts, this.config, this.context); - } -}; - -Charts.prototype.translate = function(distance) { - this.scrollOption = { - currentOffset: distance, - startTouchX: distance, - distance: 0, - lastMoveTime: 0 - }; - let opts = assign({}, this.opts, { - _scrollDistance_: distance, - animation: false - }); - drawCharts.call(this, this.opts.type, opts, this.config, this.context); -}; - -Charts.prototype.scrollStart = function(e) { - var touches = null; - if (e.changedTouches) { - touches = e.changedTouches[0]; - } else { - touches = e.mp.changedTouches[0]; - } - var _touches$ = getTouches(touches, this.opts, e); - if (touches && this.opts.enableScroll === true) { - this.scrollOption.startTouchX = _touches$.x; - } -}; - -Charts.prototype.scroll = function(e) { - if (this.scrollOption.lastMoveTime === 0) { - this.scrollOption.lastMoveTime = Date.now(); - } - let Limit = this.opts.extra.touchMoveLimit || 20; - let currMoveTime = Date.now(); - let duration = currMoveTime - this.scrollOption.lastMoveTime; - if (duration < Math.floor(1000 / Limit)) return; - this.scrollOption.lastMoveTime = currMoveTime; - var touches = null; - if (e.changedTouches) { - touches = e.changedTouches[0]; - } else { - touches = e.mp.changedTouches[0]; - } - if (touches && this.opts.enableScroll === true) { - var _touches$ = getTouches(touches, this.opts, e); - var _distance; - _distance = _touches$.x - this.scrollOption.startTouchX; - var currentOffset = this.scrollOption.currentOffset; - var validDistance = calValidDistance(currentOffset + _distance, this.opts.chartData, this.config, this.opts); - this.scrollOption.distance = _distance = validDistance - currentOffset; - var opts = assign({}, this.opts, { - _scrollDistance_: currentOffset + _distance, - animation: false - }); - drawCharts.call(this, opts.type, opts, this.config, this.context); - return currentOffset + _distance; - } -}; - -Charts.prototype.scrollEnd = function(e) { - if (this.opts.enableScroll === true) { - var _scrollOption = this.scrollOption, - currentOffset = _scrollOption.currentOffset, - distance = _scrollOption.distance; - this.scrollOption.currentOffset = currentOffset + distance; - this.scrollOption.distance = 0; - } -}; -if (typeof module === "object" && typeof module.exports === "object") { - module.exports = Charts; - //export default Charts;//建议使用nodejs的module导出方式,如报错请使用export方式导出 -} diff --git a/components/wt-progress-circle/wt-progress-circle.vue b/components/wt-progress-circle/wt-progress-circle.vue new file mode 100644 index 0000000..5833861 --- /dev/null +++ b/components/wt-progress-circle/wt-progress-circle.vue @@ -0,0 +1,86 @@ + + + + diff --git a/manifest.json b/manifest.json index 83f4c70..25787bc 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { - "name" : "mini-test", + "name" : "艺体志愿宝小程序", "appid" : "__UNI__7850BDB", - "description" : "uni-app 框架示例,一套代码,同时发行到iOS、Android、H5、小程序等多个平台,请使用手机扫码快速体验 uni-app 的强大功能", + "description" : "艺体志愿宝小程序", "versionName" : "1.0.0", "versionCode" : "100", "transformPx" : false, @@ -96,10 +96,13 @@ "versionCode" : 100 }, "mp-weixin" : { - "appid" : "wxdaa0c852bdfa9d24", + "appid" : "wxb9cf28f42ffa35e5", "setting" : { - "urlCheck" : false + "urlCheck" : false, + "minified" : true, + "postcss" : false }, + "lazyCodeLoading" : "requiredComponents", //按需引入 "usingComponents" : true, "permission" : { "scope.userLocation" : { diff --git a/package.json b/package.json index b9c298a..59b4fde 100644 --- a/package.json +++ b/package.json @@ -9,20 +9,19 @@ }, "repository": "https://github.com/dcloudio/hello-uniapp.git", "keywords": [ - "hello-uniapp", - "uni-app", - "uni-ui", - "示例工程" - ], + "hello-uniapp", + "uni-app", + "uni-ui", + "示例工程" + ], "author": "", "license": "MIT", "bugs": { "url": "https://github.com/dcloudio/hello-uniapp/issues" }, "homepage": "https://github.com/dcloudio/hello-uniapp#readme", - "dependencies": {}, - "dcloudext": { - "sale": { + "dcloudext": { + "sale": { "regular": { "price": "0.00" }, @@ -38,8 +37,8 @@ "data": "无", "permissions": "无" }, - "npmurl": "", - "type": "uniapp-template-project" + "npmurl": "", + "type": "uniapp-template-project" }, "uni_modules": { "dependencies": [], @@ -81,15 +80,14 @@ "快应用": { "华为": "y", "联盟": "y" - }, - "Vue": { - "vue2": "y", - "vue3": "y" - } + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } } } }, - "uni-app": { "scripts": { "mp-dingtalk": { diff --git a/pages.json b/pages.json index 63df920..2c281e4 100644 --- a/pages.json +++ b/pages.json @@ -1,1510 +1,497 @@ { - "leftWindow": { - "path": "windows/left-window.vue", - "style": { - "width": "350px" - } - }, - "topWindow": { - "path": "windows/top-window.vue", - "style": { - "height": "60px" - } - }, - "pages": [ - // pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages - { - "path": "pages/zyb/home", - "style": { - "navigationBarTitleText": "首页", - "app-plus": { - "bounce": "vertical", - "titleNView": { - "buttons": [{ - "text": "\ue534", - "fontSrc": "/static/uni.ttf", - "fontSize": "22px", - "color": "#FFFFFF" - }] - } - } - } - }, - /*我的志愿*/ - { - "path": "pages/zyb/fillVolunteer/list", - "style": { - "navigationBarTitleText": "我的志愿", - "navigationBarBackgroundColor": "#ffffff", - "navigationBarTextStyle":"black", - "app-plus": { - "bounce": "vertical", - "titleNView": { - "buttons": [{ - "text": "\ue534", - "fontSrc": "/static/uni.ttf", - "fontSize": "22px", - "color": "#FFFFFF" - }] - } - } - } - }, - /*我的志愿-详情明细*/ - { - "path": "pages/zyb/fillVolunteer/detail", - "style": { - "navigationBarTitleText": "我的志愿", - "navigationBarBackgroundColor": "#ffffff", - "navigationBarTextStyle":"black", - "app-plus": { - "bounce": "vertical", - "titleNView": { - "buttons": [{ - "text": "\ue534", - "fontSrc": "/static/uni.ttf", - "fontSize": "22px", - "color": "#FFFFFF" - }] - } - } - } - }, - { - "path": "pages/zyb/user/center", - "style": { - "navigationBarTitleText": "个人中心", - "app-plus": { - "bounce": "vertical", - "titleNView": { - "buttons": [{ - "text": "\ue534", - "fontSrc": "/static/uni.ttf", - "fontSize": "22px", - "color": "#FFFFFF" - }] - } - } - } - }, - - { - "path": "pages/zyb/fillVolunteer/index", - "style": { - "navigationBarTitleText": "智能推荐", - "navigationBarBackgroundColor": "#ffffff", - "navigationBarTextStyle":"black", - "app-plus": { - "bounce": "vertical", - "titleNView": { - "buttons": [{ - "text": "\ue534", - "fontSrc": "/static/uni.ttf", - "fontSize": "22px", - "color": "#FFFFFF" - }] - } - } - } - }, - { - "path": "pages/zyb/score/edit", - "style": { - "navigationBarTitleText": "成绩管理", - "app-plus": { - "bounce": "vertical", - "titleNView": { - "buttons": [{ - "text": "\ue534", - "fontSrc": "/static/uni.ttf", - "fontSize": "22px", - "color": "#FFFFFF" - }] - } - } - } - }, - - - { - "path": "pages/tabBar/component/component", - "style": { - "navigationBarTitleText": "内置组件", - "app-plus": { - "bounce": "vertical", - "titleNView": { - "buttons": [{ - "text": "\ue534", - "fontSrc": "/static/uni.ttf", - "fontSize": "22px", - "color": "#FFFFFF" - }] - } - } - } - }, - { - "path": "pages/tabBar/API/API", - "style": { - "navigationBarTitleText": "接口", - "app-plus": { - "titleNView": { - "buttons": [{ - "text": "\ue534", - "fontSrc": "/static/uni.ttf", - "fontSize": "22px", - "color": "#FFFFFF" - }] - } - } - } - }, - { - "path": "pages/tabBar/template/template", - "style": { - "navigationBarTitleText": "模版", - "app-plus": { - "titleNView": { - "buttons": [{ - "text": "\ue534", - "fontSrc": "/static/uni.ttf", - "fontSize": "22px", - "color": "#FFFFFF" - }] - } - } - } - }, - { - "path": "pages/tabBar/extUI/extUI", - "style": { - "navigationBarTitleText": "扩展组件", - "app-plus": { - "titleNView": { - "buttons": [{ - "text": "\ue534", - "fontSrc": "/static/uni.ttf", - "fontSize": "22px", - "color": "#FFFFFF" - }] - } - } - } - }, - { - "path": "pages/component/view/view", - "style": { - "navigationBarTitleText": "view" - } - }, - { - "path": "pages/component/scroll-view/scroll-view", - "style": { - "navigationBarTitleText": "scroll-view" - } - }, - { - "path": "pages/component/swiper/swiper", - "style": { - "navigationBarTitleText": "swiper" - } - }, - // #ifndef MP-TOUTIAO - { - "path": "pages/component/cover-view/cover-view", - "style": { - "navigationBarTitleText": "cover-view" - } - }, - { - "path": "pages/component/movable-view/movable-view", - "style": { - "navigationBarTitleText": "movable-view" - } - }, - // #endif - { - "path": "pages/component/text/text", - "style": { - "navigationBarTitleText": "text" - } - }, - { - "path": "pages/component/rich-text/rich-text", - "style": { - "navigationBarTitleText": "rich-text" - } - }, - { - "path": "pages/component/progress/progress", - "style": { - "navigationBarTitleText": "progress" - } - }, - { - "path": "pages/component/button/button", - "style": { - "navigationBarTitleText": "button" - } - }, - { - "path": "pages/component/checkbox/checkbox", - "style": { - "navigationBarTitleText": "checkbox" - } - }, - { - "path": "pages/component/form/form", - "style": { - "navigationBarTitleText": "form" - } - }, - { - "path": "pages/component/input/input", - "style": { - "navigationBarTitleText": "input", - "app-plus": { - "softinputNavBar": "none" - } - } - }, - { - "path": "pages/component/label/label", - "style": { - "navigationBarTitleText": "label" - } - }, - { - "path": "pages/component/picker/picker", - "style": { - "navigationBarTitleText": "picker" - } - }, - { - "path": "pages/component/picker-view/picker-view", - "style": { - "navigationBarTitleText": "picker-view" - } - }, - { - "path": "pages/component/radio/radio", - "style": { - "navigationBarTitleText": "radio" - } - }, - { - "path": "pages/component/slider/slider", - "style": { - "navigationBarTitleText": "slider" - } - }, - { - "path": "pages/component/switch/switch", - "style": { - "navigationBarTitleText": "switch" - } - }, - { - "path": "pages/component/textarea/textarea", - "style": { - "navigationBarTitleText": "textarea" - } - }, - // #ifdef APP-PLUS || MP-WEIXIN || H5 || MP-BAIDU - { - "path": "pages/component/editor/editor", - "style": { - "navigationBarTitleText": "editor", - "app-plus": { - "softinputMode": "adjustResize" - } - // #ifdef MP-BAIDU - ,"usingComponents": { - "editor": "dynamicLib://editorLib/editor" - } - // #endif - } - }, - // #endif - { - "path": "pages/component/navigator/navigator", - "style": { - "navigationBarTitleText": "navigator" - } - }, - { - "path": "pages/component/navigator/navigate/navigate", - "style": { - "navigationBarTitleText": "navigatePage" - } - }, - { - "path": "pages/component/navigator/redirect/redirect", - "style": { - "navigationBarTitleText": "redirectPage" - } - }, - { - "path": "pages/component/image/image", - "style": { - "navigationBarTitleText": "image" - } - }, - { - "path": "pages/component/video/video", - "style": { - "navigationBarTitleText": "video" - } - }, - // #ifndef MP-ALIPAY || MP-TOUTIAO || VUE3 - // { - // "path": "pages/component/audio/audio", - // "style": { - // "navigationBarTitleText": "audio" - // } - // }, - // #endif - // #ifndef MP-TOUTIAO - { - "path": "pages/component/map/map", - "style": { - "navigationBarTitleText": "map" - } - }, - // #endif - { - "path": "pages/component/canvas/canvas", - "style": { - "navigationBarTitleText": "canvas" - } - }, - { - "path": "pages/component/web-view/web-view", - "style": { - "navigationBarTitleText": "web-view" - } - }, - // #ifdef APP-VUE || APP-NVUE - { - "path": "pages/component/ad/ad", - "style": { - "navigationBarTitleText": "AD" - } - }, - // #endif - // #ifdef APP-PLUS || H5 - { - "path": "pages/component/web-view-local/web-view-local", - "style": {} - }, - // #endif - { - "path": "platforms/app-plus/speech/speech", - "style": { - "navigationBarTitleText": "语音识别" - } - }, - { - "path": "platforms/app-plus/orientation/orientation", - "style": { - "navigationBarTitleText": "方向传感器" - } - }, - { - "path": "platforms/app-plus/proximity/proximity", - "style": { - "navigationBarTitleText": "距离传感器" - } - }, - { - "path": "platforms/app-plus/push/push", - "style": { - "navigationBarTitleText": "推送" - } - }, - { - "path": "platforms/app-plus/shake/shake", - "style": { - "navigationBarTitleText": "摇一摇" - } - }, - // #ifdef H5 || APP-PLUS - { - "path": "pages/about/about", - "style": { - "navigationBarTitleText": "关于" - } - }, - // #endif - { - "path": "platforms/app-plus/feedback/feedback", - "style": { - "navigationBarTitleText": "问题反馈" - } - } - // #ifdef H5 - , { - "path": "pages/error/404", - "style": { - "navigationBarTitleText": "Not Found" - } - } - // #endif - ,{ - "path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup", + "leftWindow": { + "path": "windows/left-window.vue", "style": { - "app-plus": { - "animationDuration": 200, - "animationType": "fade-in", - "background": "transparent", - "backgroundColorTop": "transparent", - "popGesture": "none", - "scrollIndicator": false, - "titleNView": false - }, - "disableScroll": true + "width": "350px" } -} -], - "subPackages": [{ - "root": "pages/API", - "pages": [{ - "path": "login/login", - "style": { - "navigationBarTitleText": "授权登录" - } - }, - // #ifdef APP-PLUS - { - "path": "subnvue/subnvue", - "style": { - "navigationBarTitleText": "原生子窗体", - "app-plus": { - "subNVues": [{ - "id": "drawer", - "path": "subnvue/subnvue/drawer", - "type": "popup", - "style": { - "width": "50%" - } - }, { - "id": "popup", - "path": "subnvue/subnvue/popup", - "type": "popup", - "style": { - "margin": "auto", - "width": "80%", - "height": "600rpx" - } - }, { - "id": "video_mask", - "path": "subnvue/subnvue/video-mask", - "style": { - "position": "absolute", - "bottom": "30px", - "left": "0", - "width": "230px", - "height": "110px", - "background": "transparent" - } - }] - } - } - }, - // #endif - { - "path": "get-user-info/get-user-info", - "style": { - "navigationBarTitleText": "获取用户信息" - } - }, - { - "path": "request-payment/request-payment", - "style": { - "navigationBarTitleText": "发起支付" - } - }, - { - "path": "share/share", - "style": { - "navigationBarTitleText": "分享" - } - }, - { - "path": "set-navigation-bar-title/set-navigation-bar-title", - "style": { - "navigationBarTitleText": "设置界面标题" - } - }, - { - "path": "show-loading/show-loading", - "style": { - "navigationBarTitleText": "加载提示框" - } - }, - { - "path": "navigator/navigator", - "style": { - "navigationBarTitleText": "页面跳转" - } - }, - { - "path": "navigator/new-page/new-vue-page-1", - "style": { - "navigationBarTitleText": "新VUE页面1" - } - }, - { - "path": "navigator/new-page/new-vue-page-2", - "style": { - "navigationBarTitleText": "新VUE页面2" - } - }, - // #ifndef VUE3 - { - "path": "navigator/new-page/new-nvue-page-1", - "style": { - "navigationBarTitleText": "新NVUE页面1" - } - }, - { - "path": "navigator/new-page/new-nvue-page-2", - "style": { - "navigationBarTitleText": "新NVUE页面2" - } - }, - // #endif - { - "path": "pull-down-refresh/pull-down-refresh", - "style": { - "navigationBarTitleText": "下拉刷新", - "enablePullDownRefresh": true - } - }, - { - "path": "animation/animation", - "style": { - "navigationBarTitleText": "创建动画" - } - }, - { - "path": "get-node-info/get-node-info", - "style": { - "navigationBarTitleText": "节点信息" - } - }, - { - "path": "intersection-observer/intersection-observer", - "style": { - "navigationBarTitleText": "节点布局相交状态" - } - }, - { - "path": "canvas/canvas", - "style": { - "navigationBarTitleText": "创建绘画" - } - }, - { - "path": "action-sheet/action-sheet", - "style": { - "navigationBarTitleText": "操作菜单" - } - }, - { - "path": "modal/modal", - "style": { - "navigationBarTitleText": "模态弹窗" - } - }, - { - "path": "toast/toast", - "style": { - "navigationBarTitleText": "消息提示框" - } - }, - { - "path": "get-network-type/get-network-type", - "style": { - "navigationBarTitleText": "获取设备网络状态" - } - }, - { - "path": "get-system-info/get-system-info", - "style": { - "navigationBarTitleText": "获取设备系统信息" - } - }, - { - "path": "add-phone-contact/add-phone-contact", - "style": { - "navigationBarTitleText": "添加手机联系人" - } - }, - { - "path": "on-accelerometer-change/on-accelerometer-change", - "style": { - "navigationBarTitleText": "监听加速度计数据" - } - }, - { - "path": "on-compass-change/on-compass-change", - "style": { - "navigationBarTitleText": "监听罗盘数据" - } - }, - { - "path": "make-phone-call/make-phone-call", - "style": { - "navigationBarTitleText": "打电话" - } - }, - { - "path": "scan-code/scan-code", - "style": { - "navigationBarTitleText": "扫码" - } - }, - { - "path": "clipboard/clipboard", - "style": { - "navigationBarTitleText": "剪贴板" - } - }, - { - "path": "request/request", - "style": { - "navigationBarTitleText": "网络请求" - } - }, - { - "path": "upload-file/upload-file", - "style": { - "navigationBarTitleText": "上传文件" - } - }, - { - "path": "download-file/download-file", - "style": { - "navigationBarTitleText": "下载文件" - } - }, - { - "path": "image/image", - "style": { - "navigationBarTitleText": "图片" - } - }, - { - "path": "voice/voice", - "style": { - "navigationBarTitleText": "录音" - } - }, - { - "path": "inner-audio/inner-audio", - "style": { - "navigationBarTitleText": "音频" - } - }, - { - "path": "background-audio/background-audio", - "style": { - "navigationBarTitleText": "背景音频" - } - }, - { - "path": "video/video", - "style": { - "navigationBarTitleText": "视频" - } - }, - { - "path": "file/file", - "style": { - "navigationBarTitleText": "文件" - } - }, - // #ifndef MP-QQ || MP-TOUTIAO - { - "path": "map/map", - "style": { - "navigationBarTitleText": "map" - } - }, - // #endif - // #ifdef APP-PLUS - { - "path": "map-search/map-search", - "style": { - "navigationBarTitleText": "map search" - } - }, - // #endif - { - "path": "get-location/get-location", - "style": { - "navigationBarTitleText": "获取位置" - } - }, - { - "path": "open-location/open-location", - "style": { - "navigationBarTitleText": "查看位置" - } - }, - // #ifndef MP-TOUTIAO - { - "path": "choose-location/choose-location", - "style": { - "navigationBarTitleText": "使用地图选择位置" - } - }, - // #endif - { - "path": "storage/storage", - "style": { - "navigationBarTitleText": "数据存储" - } - }, - { - "path": "sqlite/sqlite", - "style": { - "navigationBarTitleText": "SQLite" - } - }, - // #ifdef APP-PLUS || MP-WEIXIN - { - "path": "rewarded-video-ad/rewarded-video-ad", - "style": { - "navigationBarTitleText": "激励视频广告" - } - }, - // #endif - // #ifdef APP-PLUS - { - "path": "full-screen-video-ad/full-screen-video-ad", - "style": { - "navigationBarTitleText": "全屏视频广告" - } - }, - // #endif - // #ifndef H5 - { - "path": "brightness/brightness", - "style": { - "navigationBarTitleText": "屏幕亮度" - } - }, - // #endif - // #ifndef H5 || MP-ALIPAY - { - "path": "save-media/save-media", - "style": { - "navigationBarTitleText": "保存媒体到本地" - } - }, - // #endif - // #ifdef APP-PLUS || MP-WEIXIN || MP-QQ || MP-JD - { - "path": "bluetooth/bluetooth", - "style": { - "navigationBarTitleText": "蓝牙" - } - }, - { - "path": "soter/soter", - "style": { - "navigationBarTitleText": "生物认证" - } - }, - // #endif - // #ifdef APP-PLUS || MP-WEIXIN - { - "path": "ibeacon/ibeacon", - "style": { - "navigationBarTitleText": "iBeacon" - } - }, - // #endif - { - "path": "vibrate/vibrate", - "style": { - "navigationBarTitleText": "震动" - } - }, - // #ifndef MP-ALIPAY - { - "path": "websocket-socketTask/websocket-socketTask", - "style": { - "navigationBarTitleText": "websocket-socketTask" - } - }, - // #endif - { - "path": "websocket-global/websocket-global", - "style": { - "navigationBarTitleText": "websocket-global" - } - } - ] - }, - { - "root": "pages/extUI", - "pages": [{ - "path": "forms/forms", - "style": { - "navigationBarTitleText": "Form 表单" - } - }, - { - "path": "group/group", - "style": { - "navigationBarTitleText": "Group 分组" - } - }, - { - "path": "badge/badge", - "style": { - "navigationBarTitleText": "Badge 数字角标" - } - }, - { - "path": "breadcrumb/breadcrumb", - "style": { - "navigationBarTitleText": "Breadcrumb 面包屑" - } - }, - { - "path": "countdown/countdown", - "style": { - "navigationBarTitleText": "Countdown 倒计时" - } - }, - { - "path": "drawer/drawer", - "style": { - "navigationBarTitleText": "Drawer 抽屉" - } - }, - { - "path": "icons/icons", - "style": { - "navigationBarTitleText": "Icons 图标" - } - }, - { - "path": "load-more/load-more", - "style": { - "navigationBarTitleText": "LoadMore 加载更多" - } - }, - { - "path": "nav-bar/nav-bar", - "style": { - "navigationBarTitleText": "NavBar 导航栏", - "navigationStyle": "custom", - "enablePullDownRefresh": true, - "app-plus": { - "titleNView": false, - "bounce": "none", - "pullToRefresh": { - "style": "circle", - "offset": "70px" - } - } - } - }, - { - "path": "number-box/number-box", - "style": { - "navigationBarTitleText": "NumberBox 数字输入框" - } - }, - { - "path": "popup/popup", - "style": { - "navigationBarTitleText": "Popup 弹出层", - "app-plus": { - "softinputMode": "adjustResize" - } - } - }, - { - "path": "segmented-control/segmented-control", - "style": { - "navigationBarTitleText": "SegmentedControl 分段器" - } - }, - { - "path": "tag/tag", - "style": { - "navigationBarTitleText": "Tag 标签" - } - }, - { - "path": "list/list", - "style": { - "navigationBarTitleText": "List 列表" - } - }, - { - "path": "card/card", - "style": { - "navigationBarTitleText": "Card 卡片" - } - }, - { - "path": "collapse/collapse", - "style": { - "navigationBarTitleText": "Collapse 折叠面板" - } - }, - { - "path": "pagination/pagination", - "style": { - "navigationBarTitleText": "Pagination 分页器" - } - }, - { - "path": "swiper-dot/swiper-dot", - "style": { - "navigationBarTitleText": "SwiperDot 轮播图指示点", - "mp-baidu": { - "disableSwipeBack": true - } - } - }, - { - "path": "grid/grid", - "style": { - "navigationBarTitleText": "Grid 宫格" - } - }, - { - "path": "rate/rate", - "style": { - "navigationBarTitleText": "Rate 评分" - } - }, - { - "path": "steps/steps", - "style": { - "navigationBarTitleText": "Steps 步骤条" - } - }, - { - "path": "notice-bar/notice-bar", - "style": { - "navigationBarTitleText": "NoticeBar 通告栏" - } - }, - { - "path": "swipe-action/swipe-action", - "style": { - "navigationBarTitleText": "SwipeAction 滑动操作", - "app-plus": { - "bounce": "none" - } - } - }, - { - "path": "search-bar/search-bar", - "style": { - "navigationBarTitleText": "SearchBar 搜索栏" - } - }, - { - "path": "calendar/calendar", - "style": { - "navigationBarTitleText": "Calendar 日历" - } - }, - { - "path": "indexed-list/indexed-list", - "style": { - "navigationBarTitleText": "IndexedList 索引列表", - "mp-weixin": { - "disableScroll": true - }, - "app-plus": { - "bounce": "none" - }, - "mp-alipay": { - "allowsBounceVertical": "NO" - }, - "mp-baidu": { - "disableScroll": true - } - } - }, - { - "path": "fab/fab", - "style": { - "navigationBarTitleText": "Fab 悬浮按钮" - } - }, - { - "path": "fav/fav", - "style": { - "navigationBarTitleText": "Fav 收藏按钮" - } - }, - { - "path": "goods-nav/goods-nav", - "style": { - "navigationBarTitleText": "GoodsNav 商品导航" - } - }, - { - "path": "section/section", - "style": { - "navigationBarTitleText": "Section 标题栏" - } - }, - { - "path": "transition/transition", - "style": { - "navigationBarTitleText": "Transition 过渡动画" - } - }, - { - "path": "title/title", - "style": { - "navigationBarTitleText": "Title 章节标题" - } - }, - { - "path": "tooltip/tooltip", - "style": { - "navigationBarTitleText": "Tooltip 文字提示" - } - }, - { - "path": "link/link", - "style": { - "navigationBarTitleText": "Link 链接" - } - }, - { - "path": "combox/combox", - "style": { - "navigationBarTitleText": "Combox 组合框" - } - }, - { - "path": "list/chat", - "style": {} - }, - { - "path": "table/table", - "style": { - "navigationBarTitleText": "", - "enablePullDownRefresh": false - } - }, - { - "path": "dateformat/dateformat", - "style": { - "navigationBarTitleText": "Dateformat 日期格式化", - "enablePullDownRefresh": false - } - }, - { - "path": "data-checkbox/data-checkbox", - "style": { - "navigationBarTitleText": "DataCheckbox 单选复选框", - "enablePullDownRefresh": false - } - }, - { - "path": "easyinput/easyinput", - "style": { - "navigationBarTitleText": "Easyinput 增强输入框", - "enablePullDownRefresh": false - } - }, - { - "path": "data-picker/data-picker", - "style": { - "navigationBarTitleText": "DataPicker 级联选择", - "enablePullDownRefresh": false - } - }, - { - "path": "data-select/data-select", - "style": { - "navigationBarTitleText": "DataSelect 下拉框", - "enablePullDownRefresh": false - } - }, - { - "path": "datetime-picker/datetime-picker", - "style": { - "navigationBarTitleText": "DatetimePicker 日期时间", - "enablePullDownRefresh": false - } - }, - { - "path": "row/row", - "style": { - "navigationBarTitleText": "Layout 布局", - "enablePullDownRefresh": false - } - }, - { - "path": "file-picker/file-picker", - "style": { - "navigationBarTitleText": "FilePicker 文件选择上传", - "enablePullDownRefresh": false - } - }, - { - "path": "space/space", - "style": { - "navigationBarTitleText": "间距", - "enablePullDownRefresh": false - } - }, - { - "path": "font/font", - "style": { - "navigationBarTitleText": "字体", - "enablePullDownRefresh": false - } - }, - { - "path": "color/color", - "style": { - "navigationBarTitleText": "颜色", - "enablePullDownRefresh": false - } - }, - { - "path": "radius/radius", - "style": { - "navigationBarTitleText": "圆角", - "enablePullDownRefresh": false - } - }, - { - "path": "button/button", - "style": { - "navigationBarTitleText": "", - "enablePullDownRefresh": false - } - } - ] - }, - { - "root": "pages/template", - "pages": [ - // #ifndef VUE3 - { - "path": "ucharts/ucharts", - "style": { - "navigationBarTitleText": "uCharts 图表" - } - }, - // #endif - { - "path": "nav-default/nav-default", - "style": { - "navigationBarTitleText": "默认导航栏" - } - }, - { - "path": "component-communication/component-communication", - "style": { - "navigationBarTitleText": "组件通讯" - } - }, - // #ifdef APP-PLUS || H5 || MP-ALIPAY - { - "path": "nav-transparent/nav-transparent", - "style": { - "navigationBarTitleText": "透明渐变导航栏", - "transparentTitle": "auto" - } - }, - // #endif - // #ifdef APP-PLUS || H5 - { - "path": "nav-button/nav-button", - "style": { - "navigationBarTitleText": "导航栏带自定义按钮", - "app-plus": { - "titleNView": { - "buttons": [{ - "type": "share" - }, - { - "type": "favorite" - } - ] - } - } - } - }, - // #endif - // #ifdef APP-PLUS || H5 || MP-ALIPAY - { - "path": "nav-image/nav-image", - "style": { - "navigationBarBackgroundColor": "#FFFFFF", - "navigationBarTextStyle": "black", - "titleImage": "https://web-assets.dcloud.net.cn/unidoc/zh/logo1@2x.png" - } - }, - // #endif - // #ifdef APP-PLUS || H5 - { - "path": "nav-city-dropdown/nav-city-dropdown", - "style": { - "navigationBarTitleText": "导航栏带城市选择", - "app-plus": { - "titleNView": { - "buttons": [{ - "text": "北京市", - "fontSize": "14", - "select": true, - "width": "auto" - }] - } - } - } - }, - { - "path": "nav-dot/nav-dot", - "style": { - "navigationBarTitleText": "导航栏带红点和角标", - "app-plus": { - "titleNView": { - "buttons": [{ - "text": "消息", - "fontSize": "14", - "redDot": true - }, - { - "text": "关注", - "fontSize": "14", - "badgeText": "12" - } - ] - } - } - } - }, - { - "path": "nav-search-input/nav-search-input", - "style": { - "navigationBarTitleText": "导航栏带搜索框", - "app-plus": { - "titleNView": { - "type": "transparent", - "titleColor": "#fff", - "backgroundColor": "#007AFF", - "buttons": [{ - "fontSrc": "/static/uni.ttf", - "text": "\ue537", - "width": "40px", - "fontSize": "28px", - "color": "#fff", - "background": "rgba(0,0,0,0)" - }], - "searchInput": { - "backgroundColor": "#fff", - "borderRadius": "6px", - "placeholder": "请输入地址 如:大钟寺", - "disabled": true - } - } - } - } - }, - { - "path": "nav-search-input/detail/detail", - "style": { - "navigationBarTitleText": "搜索", - "app-plus": { - "titleNView": { - "titleColor": "#fff", - "backgroundColor": "#007AFF", - "buttons": [{ - "fontSrc": "/static/uni.ttf", - "text": "\ue537", - "width": "auto", - "fontSize": "28px", - "color": "#fff" - }], - "searchInput": { - "backgroundColor": "#fff", - "borderRadius": "6px", - "placeholder": "请输入地址 如:大钟寺", - "autoFocus": true - } - } - } - } - }, - // #endif - { - "path": "list2detail-list/list2detail-list", - "style": { - "navigationBarTitleText": "列表到详情示例", - "enablePullDownRefresh": true - } - }, - { - "path": "list2detail-detail/list2detail-detail", - "style": { - "navigationBarTitleText": "详情", - "app-plus": { - "titleNView": { - "type": "transparent", - "buttons": [{ - "type": "share" - }] - } - }, - "h5": { - "titleNView": { - "type": "transparent", - "buttons": [] - } - } - } - }, - { - "path": "tabbar/tabbar", - "style": { - "navigationBarTitleText": "可拖动顶部选项卡" - } - }, - { - "path": "tabbar/detail/detail", - "style": { - "navigationBarTitleText": "详情页面" - } - }, - // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-QQ - { - "path": "swiper-vertical/swiper-vertical", - "style": { - "navigationBarTitleText": "上下滑动切换视频", - "app-plus": { - "titleNView": false - } - } - }, - { - "path": "swiper-list/swiper-list", - "style": { - "navigationBarTitleText": "swiper-list" - } - }, - // #endif - // #ifdef APP-PLUS - { - "path": "swiper-list-nvue/swiper-list-nvue", - "style": { - "navigationBarTitleText": "swiper-list" - } - }, - // #endif - { - "path": "scheme/scheme", - "style": { - "navigationBarTitleText": "打开外部应用" - } - }, - // #ifdef APP-PLUS || MP-WEIXIN || MP-QQ || H5 - // #ifndef VUE3 - { - "path": "vant-button/vant-button", - "style": { - "navigationBarTitleText": "微信自定义组件示例", - "usingComponents": { - "van-button": "/wxcomponents/vant/button/index" - } - } - }, - // #endif - // #endif - { - "path": "global/global", - "style": { - "navigationBarTitleText": "GlobalData和vuex" - } - } - ] - } - ], - "globalStyle": { - "pageOrientation": "portrait", - "navigationBarTitleText": "Hello uniapp", - "navigationBarTextStyle": "white", - "navigationBarBackgroundColor": "#007AFF", - "backgroundColor": "#F8F8F8", - "backgroundColorTop": "#F4F5F6", - "backgroundColorBottom": "#F4F5F6", - "mp-360": { - "navigationStyle": "custom" - }, - "h5": { - "maxWidth": 1190, - "navigationBarTextStyle": "black", - "navigationBarBackgroundColor": "#F1F1F1" - } + }, + "topWindow": { + "path": "windows/top-window.vue", + "style": { + "height": "60px" + } + }, + "pages": [ + // pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/zyb/home", + "style": { + "navigationBarTitleText": "艺体志愿宝" + } + }, + { + "path": "pages/zyb/fillVolunteer/aiAuto", + "style": { + "navigationBarTitleText": "智能填报" + } + }, + /*查大学*/ + { + "path": "pages/zyb/school/list", + "style": { + "navigationBarTitleText": "院校列表", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black" + } + }, + /*成绩管理*/ + { + "path": "pages/zyb/score/edit", + "style": { + "navigationBarTitleText": "成绩管理" + } + }, + { + "path": "pages/zyb/testCultural/detail", + "style": { + "navigationBarTitleText": "算投档", + "enablePullDownRefresh": true + } + }, + //登录页 + { + "path": "pages/zyb/login", + "style": { + "navigationBarTitleText": "艺体志愿宝" + } + }, + /*我的志愿*/ + { + "path": "pages/zyb/fillVolunteer/my", + "style": { + "navigationBarTitleText": "我的志愿", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black" + } + }, + /*我的志愿-详情明细*/ + { + "path": "pages/zyb/fillVolunteer/detail", + "style": { + "navigationBarTitleText": "我的志愿", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + + /*查专业*/ + { + "path": "pages/zyb/major/list", + "style": { + "navigationBarTitleText": "查专业" + } + }, + /*专业详情*/ + { + "path": "pages/zyb/major/detail", + "style": { + "navigationBarTitleText": "专业详情", + "app-plus": { + "bounce": "none", + //vertical + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + + + /*个人中心*/ + { + "path": "pages/zyb/user/index", + "style": { + "navigationBarTitleText": "个人中心", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + /*个人资料*/ + { + "path": "pages/zyb/user/detail", + "style": { + "navigationBarTitleText": "个人资料", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + /*省控线*/ + { + "path": "pages/zyb/historyScoreControlLine/index", + "style": { + "navigationBarTitleText": "省控线", + "navigationBarBackgroundColor": "#ffffff" + } + }, + /*更新快报*/ + { + "path": "pages/zyb/other/updateLogs", + "style": { + "navigationBarTitleText": "更新快报", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + /*我的收藏*/ + { + "path": "pages/zyb/user/myCollect", + "style": { + "navigationBarTitleText": "我的收藏", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + /*常见问题*/ + { + "path": "pages/zyb/other/commonProblem", + "style": { + "navigationBarTitleText": "常见问题", + "app-plus": { + "bounce": "none", + //vertical + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + /*设置*/ + { + "path": "pages/zyb/settings", + "style": { + "navigationBarTitleText": "设置", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + /*使用说明*/ + { + "path": "pages/zyb/other/useHelp", + "style": { + "navigationBarTitleText": "使用说明", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + /*志愿卡说明*/ + { + "path": "pages/zyb/other/volunteerCardDesc", + "style": { + "navigationBarTitleText": "志愿卡说明", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + /*免责声明*/ + { + "path": "pages/zyb/other/disclaimer", + "style": { + "navigationBarTitleText": "免责声明", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + /*用户协议*/ + { + "path": "pages/zyb/other/userAgreement", + "style": { + "navigationBarTitleText": "用户协议", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + /*智能推荐*/ + { + "path": "pages/zyb/fillVolunteer/index", + "style": { + "navigationBarTitleText": "智能推荐", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "app-plus": { + "bounce": "none", + "titleNView": { + "buttons": [ + { + "text": "\ue534", + "fontSrc": "/static/uni.ttf", + "fontSize": "22px", + "color": "#FFFFFF" + } + ] + } + } + } + }, + { + "path": "pages/zyb/other/admissionsInformation", + "style": { + "navigationBarTitleText": "招生信息", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/zyb/other/yifenyiduan", + "style": { + "navigationBarTitleText": "一分一段", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/zyb/other/checkRanking", + "style": { + "navigationBarTitleText": "轻松查排名", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/zyb/testCultural/index", + "style": { + "navigationBarTitleText": "文化分测算", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/zyb/other/calculateInvestment", + "style": { + "navigationBarTitleText": "算投档", + "enablePullDownRefresh": true + } + }, + /*院校详情*/ + { + "path": "pages/zyb/school/detail", + "style": { + "navigationBarTitleText": "院校详情" + } }, - "tabBar": { - "color": "#7A7E83", - "selectedColor": "#007AFF", - "borderStyle": "black", - "backgroundColor": "#F8F8F8", - "list": [ - { - "pagePath": "pages/zyb/home", - "iconPath": "static/home.png", - "selectedIconPath": "static/home-active.png", - "text": "首页" - }, - { - "pagePath": "pages/zyb/fillVolunteer/list", - "iconPath": "static/icons/write-l.png", - "selectedIconPath": "static/icons/write-l-active.png", - "text": "填志愿" - }, - { - "pagePath": "pages/tabBar/component/component", - "iconPath": "static/component.png", - "selectedIconPath": "static/componentHL.png", - "text": "内置组件" - }, - { - "pagePath": "pages/tabBar/API/API", - "iconPath": "static/api.png", - "selectedIconPath": "static/apiHL.png", - "text": "接口" - }, { - "pagePath": "pages/tabBar/extUI/extUI", - "iconPath": "static/extui.png", - "selectedIconPath": "static/extuiHL.png", - "text": "扩展组件" - }/*, - { - "pagePath": "pages/tabBar/template/template", - "iconPath": "static/template.png", - "selectedIconPath": "static/templateHL.png", - "text": "模板" - }*/ - /*{ - "pagePath": "pages/zyb/user/center", - "iconPath": "static/home.png", - "selectedIconPath": "static/home-active.png", - "text": "个人中心" - }*/ - ] - } + { + "path": "pages/zyb/other/web-view", + "style": { + "navigationBarTitleText": "艺体志愿宝" + } + }, + { + "path": "pages/zyb/vip/index", + "style": { + "navigationBarTitleText": "开通VIP" + } + }, + { + "path": "pages/zyb/vip/checkoutCounter", + "style": { + "navigationBarTitleText": "收银台" + } + }, + { + "path": "pages/zyb/vip/cardamom", + "style": { + "navigationBarTitleText": "卡密激活" + } + }, + { + "path": "pages/zyb/npee/index", + "style": { + "navigationBarTitleText": "艺考考研" + } + }, + { + "path": "pages/error/serviceDown", + "style": { + "navigationBarTitleText": "维护中" + } + } + + ], + "subPackages": [ + ], + "globalStyle": { + "pageOrientation": "portrait", + "navigationBarTitleText": "Hello uniapp", + /*"navigationBarTextStyle": "white", + "navigationBarBackgroundColor": "#007AFF",*/ + "navigationBarTextStyle": "black", + "navigationBarBackgroundColor": "#ffffff", + "backgroundColor": "#F8F8F8", + "backgroundColorTop": "#F4F5F6", + "backgroundColorBottom": "#F4F5F6", + "mp-360": { + "navigationStyle": "custom" + }, + "h5": { + "maxWidth": 1190, + "navigationBarTextStyle": "black", + "navigationBarBackgroundColor": "#F1F1F1" + } + }, + "tabBar": { + "color": "#7A7E83", + "selectedColor": "#007AFF", + "borderStyle": "black", + "backgroundColor": "#F8F8F8", + "list": [ + { + "pagePath": "pages/zyb/home", + "iconPath": "static/icons/linear/index.png", + "selectedIconPath": "static/icons/linear/index-active.png", + "text": "首页" + }, + { + "pagePath": "pages/zyb/fillVolunteer/my", + "iconPath": "static/icons/linear/edit.png", + "selectedIconPath": "static/icons/linear/edit-active.png", + "text": "填志愿" + }, + { + "pagePath": "pages/zyb/user/index", + "iconPath": "static/icons/linear/user.png", + "selectedIconPath": "static/icons/linear/user-active.png", + "text": "个人中心" + } + ] + } } diff --git a/pages/component/text-show-hide/text-show-hide.vue b/pages/component/text-show-hide/text-show-hide.vue new file mode 100644 index 0000000..8ea5e28 --- /dev/null +++ b/pages/component/text-show-hide/text-show-hide.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/pages/error/serviceDown.vue b/pages/error/serviceDown.vue new file mode 100644 index 0000000..f9a2b9d --- /dev/null +++ b/pages/error/serviceDown.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/pages/template/ucharts/ucharts.vue b/pages/template/ucharts/ucharts.vue index db80d11..9054938 100644 --- a/pages/template/ucharts/ucharts.vue +++ b/pages/template/ucharts/ucharts.vue @@ -183,7 +183,7 @@ + + + + + diff --git a/pages/zyb/fillVolunteer/detail.vue b/pages/zyb/fillVolunteer/detail.vue index 56dbd63..69dca0a 100644 --- a/pages/zyb/fillVolunteer/detail.vue +++ b/pages/zyb/fillVolunteer/detail.vue @@ -2,6 +2,7 @@ import StaticConstant from "@/common/StaticConstant"; import ApiConstant from "@/common/ApiConstant"; import Request from '@/common/request' +import ImagesConstant from "@/common/ImagesConstant"; let request = new Request() // 缓存每页最多 @@ -10,6 +11,11 @@ const MAX_CACHE_DATA = 100; const MAX_CACHE_PAGE = 3; export default { name: "我的志愿明细", + computed: { + ImagesConstant() { + return ImagesConstant + } + }, data() { return { volunteerId: '',//志愿id @@ -19,17 +25,15 @@ export default { address: '', schoolName: '', paneName: '全部', - batch: '提前批', + batch: '', }, scoreInfo: {},//成绩信息 - tabIndex: 0, + tabIndex: 0,//导航栏选中的下标 scrollInto: "", newsList: [], cacheTab: [], - tabBars: [{name: '本科提前批', id: '提前批'}, {name: '本科A段', id: '本科A段'}, { - name: '本科B段', - id: '本科B段' - }, {name: '高职高专', id: '高职高专'}], + tabBars: [{name: '本科提前批', id: '提前批'}, {name: '本科A段', id: '本科A段'}, {name: '本科B段', id: '本科B段'}, {name: '高职高专', id: '高职高专'}], + tabBars1: [{name: '本科提前批', id: '提前批'}, {name: '本科A段', id: '本科A段'}, {name: '本科B段', id: '本科B段'}, {name: '高职高专', id: '高职高专'}], filledVolunteer: { volunteerEarlyAdmissionList: [],//本科提前批 volunteerUndergraduateAList: [],//本科A段 @@ -75,18 +79,20 @@ export default { //切换了 tabs console.log(e) let index = e.target.dataset.current || e.currentTarget.dataset.current; + //判断 是否重复切换 + if (index === this.tabIndex) { + return; + } this.selectForm.batch = this.tabBars[index].id //清除页数 this.switchTab(index); }, switchTab(index) { if (this.newsList[index].data.length === 0) { - //this.getList(index); } if (this.tabIndex === index) { return; } - // 缓存 tabId if (this.newsList[this.tabIndex].data.length > MAX_CACHE_DATA) { let isExist = this.cacheTab.indexOf(this.tabIndex); @@ -113,8 +119,6 @@ export default { /*获取已填报志愿数据*/ getFilledVolunteerList() { request.get(ApiConstant.Volunteer.artVolunteerDetail, {id: this.volunteerId}).then(res => { - console.log('返回值') - console.log(res) if (res.success) { let dataResult = res.result //有数据情况下 @@ -123,124 +127,159 @@ export default { this.volunteerId = dataResult.id this.volunteerName = dataResult.volunteerName this.scoreInfo = dataResult.userScoreInfo + if (this.scoreInfo.batch) { + this.selectForm.batch = this.scoreInfo.batch + //调整 当前成绩批次可以看到的导航栏 + if (this.scoreInfo.batch === '本科A段') { + this.tabBars = [{name: '本科提前批', id: '提前批'}, {name: '本科A段', id: '本科A段'}, { + name: '本科B段', + id: '本科B段' + }, {name: '高职高专', id: '高职高专'}] + } else if (this.scoreInfo.batch === '本科B段') { + this.tabBars = [{name: '本科B段', id: '本科B段'}, {name: '高职高专', id: '高职高专'}] + } else if (this.scoreInfo.batch === '本科') { + this.tabBars = [{name: '本科', id: '本科'}, {name: '高职高专', id: '高职高专'}] + } else { + this.tabBars = [{name: '高职高专', id: '高职高专'}] + } + + /*调整默认选中的导航栏*/ + if (this.scoreInfo.batch === '本科A段') { + this.selectForm.batch='提前批' + this.tabIndex = 0; + }else{ + for (let i = 0; i < this.tabBars.length; i++) { + //如果是本科A段,默认选 提前批 + if(this.tabBars[i].id === this.selectForm.batch){ + //选中 + this.tabIndex = i; + break; + } + } + } + } let key = '' let volunteer = {indexStr: 0} - //==================================提前批 start - let volunteerRecordEarlyAdmissionList = dataResult.volunteerRecordEarlyAdmissionList; - this.filledVolunteer.volunteerRecordEarlyAdmissionNum = volunteerRecordEarlyAdmissionList.length; - for (let i = 0; i < volunteerRecordEarlyAdmissionList.length; i++) { - key = volunteerRecordEarlyAdmissionList[i].majorCode + volunteerRecordEarlyAdmissionList[i].schoolCode - volunteer = volunteerRecordEarlyAdmissionList[i] - volunteerMap.set(key, volunteerRecordEarlyAdmissionList[i]) - } - let indexs = 1; - let volunteerRecordEarlyAdmissionList2 = []; - while (indexs <= 2) { - let record = { - actives: false, - indexs: indexs - } + if(true){ + //==================================提前批 start + let volunteerRecordEarlyAdmissionList = dataResult.volunteerRecordEarlyAdmissionList; + this.filledVolunteer.volunteerRecordEarlyAdmissionNum = volunteerRecordEarlyAdmissionList.length; for (let i = 0; i < volunteerRecordEarlyAdmissionList.length; i++) { - if (volunteerRecordEarlyAdmissionList[i].indexs === indexs) { - record = volunteerRecordEarlyAdmissionList[i] - record.actives = true - } + key = volunteerRecordEarlyAdmissionList[i].majorCode + volunteerRecordEarlyAdmissionList[i].schoolCode + volunteer = volunteerRecordEarlyAdmissionList[i] + volunteerMap.set(key, volunteerRecordEarlyAdmissionList[i]) } - volunteerRecordEarlyAdmissionList2.push(record) - indexs++; - } - this.filledVolunteer.volunteerEarlyAdmissionList = volunteerRecordEarlyAdmissionList2 - //==================================提前批 end - //==================================本科A段 start - let volunteerUndergraduateAList = dataResult.volunteerRecordUndergraduateAList; - this.filledVolunteer.volunteerUndergraduateANum = volunteerUndergraduateAList.length; - for (let i = 0; i < volunteerUndergraduateAList.length; i++) { - key = volunteerUndergraduateAList[i].majorCode + volunteerUndergraduateAList[i].schoolCode - volunteerMap.set(key, volunteerUndergraduateAList[i]) - } - indexs = 1; - let volunteerRecordUndergraduateAList2 = []; - while (indexs <= 12) { - let record = {actives: false, indexs: indexs} + let indexs = 1; + let volunteerRecordEarlyAdmissionList2 = []; + while (indexs <= 2) { + let record = { + actives: false, + indexs: indexs + } + for (let i = 0; i < volunteerRecordEarlyAdmissionList.length; i++) { + if (volunteerRecordEarlyAdmissionList[i].indexs === indexs) { + record = volunteerRecordEarlyAdmissionList[i] + record.actives = true + } + } + volunteerRecordEarlyAdmissionList2.push(record) + indexs++; + } + this.filledVolunteer.volunteerEarlyAdmissionList = volunteerRecordEarlyAdmissionList2 + //==================================提前批 end + //==================================本科A段 start + let volunteerUndergraduateAList = dataResult.volunteerRecordUndergraduateAList; + this.filledVolunteer.volunteerUndergraduateANum = volunteerUndergraduateAList.length; for (let i = 0; i < volunteerUndergraduateAList.length; i++) { - if (volunteerUndergraduateAList[i].indexs === indexs) { - record = volunteerUndergraduateAList[i] - record.actives = true - } + key = volunteerUndergraduateAList[i].majorCode + volunteerUndergraduateAList[i].schoolCode + volunteerMap.set(key, volunteerUndergraduateAList[i]) } - volunteerRecordUndergraduateAList2.push(record) - indexs++; - } - this.filledVolunteer.volunteerUndergraduateAList = volunteerRecordUndergraduateAList2 - //==================================本科A段 end - //==================================本科B段 start - let volunteerUndergraduateBList = dataResult.volunteerRecordUndergraduateBList; - this.filledVolunteer.volunteerUndergraduateBNum = volunteerUndergraduateBList.length; - for (let i = 0; i < volunteerUndergraduateBList.length; i++) { - key = volunteerUndergraduateBList[i].majorCode + volunteerUndergraduateBList[i].schoolCode - volunteerMap.set(key, volunteerUndergraduateBList[i]) - } - indexs = 1; - let volunteerUndergraduateBList2 = []; - while (indexs <= 12) { - let record = {actives: false, indexs: indexs} + indexs = 1; + let volunteerRecordUndergraduateAList2 = []; + while (indexs <= 12) { + let record = {actives: false, indexs: indexs} + for (let i = 0; i < volunteerUndergraduateAList.length; i++) { + if (volunteerUndergraduateAList[i].indexs === indexs) { + record = volunteerUndergraduateAList[i] + record.actives = true + } + } + volunteerRecordUndergraduateAList2.push(record) + indexs++; + } + this.filledVolunteer.volunteerUndergraduateAList = volunteerRecordUndergraduateAList2 + //==================================本科A段 end + //==================================本科B段 start + let volunteerUndergraduateBList = dataResult.volunteerRecordUndergraduateBList; + this.filledVolunteer.volunteerUndergraduateBNum = volunteerUndergraduateBList.length; for (let i = 0; i < volunteerUndergraduateBList.length; i++) { - if (volunteerUndergraduateBList[i].indexs === indexs) { - record = volunteerUndergraduateBList[i] - record.actives = true - } + key = volunteerUndergraduateBList[i].majorCode + volunteerUndergraduateBList[i].schoolCode + volunteerMap.set(key, volunteerUndergraduateBList[i]) } - volunteerUndergraduateBList2.push(record) - indexs++; - } - this.filledVolunteer.volunteerUndergraduateBList = volunteerUndergraduateBList2 - //==================================本科 start - let volunteerUndergraduateList = dataResult.volunteerRecordUndergraduateList; - this.filledVolunteer.volunteerUndergraduateNum = volunteerUndergraduateList.length; - for (let i = 0; i < volunteerUndergraduateList.length; i++) { - key = volunteerUndergraduateList[i].majorCode + volunteerUndergraduateList[i].schoolCode - volunteerMap.set(key, volunteerUndergraduateList[i]) - } - indexs = 1; - let volunteerUndergraduateList2 = []; - while (indexs <= 12) { - let record = {actives: false, indexs: indexs} + indexs = 1; + let volunteerUndergraduateBList2 = []; + while (indexs <= 12) { + let record = {actives: false, indexs: indexs} + for (let i = 0; i < volunteerUndergraduateBList.length; i++) { + if (volunteerUndergraduateBList[i].indexs === indexs) { + record = volunteerUndergraduateBList[i] + record.actives = true + } + } + volunteerUndergraduateBList2.push(record) + indexs++; + } + this.filledVolunteer.volunteerUndergraduateBList = volunteerUndergraduateBList2 + //==================================本科 start + let volunteerUndergraduateList = dataResult.volunteerRecordUndergraduateList; + this.filledVolunteer.volunteerUndergraduateNum = volunteerUndergraduateList.length; + console.log('//==================================本科 start') + console.log(volunteerUndergraduateList) for (let i = 0; i < volunteerUndergraduateList.length; i++) { - if (volunteerUndergraduateList[i].indexs === indexs) { - record = volunteerUndergraduateList[i] - record.actives = true + key = volunteerUndergraduateList[i].majorCode + volunteerUndergraduateList[i].schoolCode + volunteerMap.set(key, volunteerUndergraduateList[i]) + } + indexs = 1; + let volunteerUndergraduateList2 = []; + while (indexs <= 12) { + let record = {actives: false, indexs: indexs} + for (let i = 0; i < volunteerUndergraduateList.length; i++) { + if (volunteerUndergraduateList[i].indexs === indexs) { + record = volunteerUndergraduateList[i] + record.actives = true + } } + volunteerUndergraduateList2.push(record) + indexs++; } - volunteerUndergraduateList2.push(record) - indexs++; - } - this.filledVolunteer.volunteerUndergraduateList = volunteerUndergraduateList2 - //==================================本科 end - //==================================高职高专 start - let volunteerJuniorCollegeList = dataResult.volunteerRecordJuniorCollegeList; - this.filledVolunteer.volunteerJuniorCollegeNum = volunteerJuniorCollegeList.length; - for (let i = 0; i < volunteerJuniorCollegeList.length; i++) { - key = volunteerJuniorCollegeList[i].majorCode + volunteerJuniorCollegeList[i].schoolCode - volunteerMap.set(key, volunteerJuniorCollegeList[i]) - } - indexs = 1; - let volunteerJuniorCollegeList2 = []; - while (indexs <= 12) { - let record = { - actives: false, - indexs: indexs - } + this.filledVolunteer.volunteerUndergraduateList = volunteerUndergraduateList2 + //==================================本科 end + //==================================高职高专 start + let volunteerJuniorCollegeList = dataResult.volunteerRecordJuniorCollegeList; + this.filledVolunteer.volunteerJuniorCollegeNum = volunteerJuniorCollegeList.length; for (let i = 0; i < volunteerJuniorCollegeList.length; i++) { - if (volunteerJuniorCollegeList[i].indexs === indexs) { - record = volunteerJuniorCollegeList[i] - record.actives = true - } + key = volunteerJuniorCollegeList[i].majorCode + volunteerJuniorCollegeList[i].schoolCode + volunteerMap.set(key, volunteerJuniorCollegeList[i]) } - volunteerJuniorCollegeList2.push(record) - indexs++; + indexs = 1; + let volunteerJuniorCollegeList2 = []; + while (indexs <= 12) { + let record = { + actives: false, + indexs: indexs + } + for (let i = 0; i < volunteerJuniorCollegeList.length; i++) { + if (volunteerJuniorCollegeList[i].indexs === indexs) { + record = volunteerJuniorCollegeList[i] + record.actives = true + } + } + volunteerJuniorCollegeList2.push(record) + indexs++; + } + this.filledVolunteer.volunteerJuniorCollegeList = volunteerJuniorCollegeList2 + //==================================高职高专 end } - this.filledVolunteer.volunteerJuniorCollegeList = volunteerJuniorCollegeList2 - //==================================高职高专 end } else { this.filledVolunteer.volunteerEarlyAdmissionList = [] this.filledVolunteer.volunteerUndergraduateAList = [] @@ -323,9 +362,9 @@ export default { - 2024年 + 2023年 - 口冲  口稳  口保 + 冲  稳   @@ -337,7 +376,7 @@ export default { 表名:{{ volunteerName }} - 填报建议 + @@ -373,20 +412,20 @@ export default { this.selectForm.batch==='本科A段'?filledVolunteer.volunteerUndergraduateAList: this.selectForm.batch==='本科B段'?filledVolunteer.volunteerUndergraduateBList: this.selectForm.batch==='本科'?filledVolunteer.volunteerUndergraduateList:filledVolunteer.volunteerJuniorCollegeList" :key="item.indexs"> - + - + {{item.indexs}} - - [{{item.institutionCode}}] + + [{{item.schoolCode}}] {{item.schoolName}} - + {{item.province}}省 {{item.propertyName}} @@ -397,25 +436,25 @@ export default { - + {{item.enrollProbability}}% - + [{{item.enrollmentCode}}] {{item.majorName}}{{item.majorDetail}} - + 学费:{{item.studyCost}} 招生{{item.jhs}}人 - + 2023年录取最低分{{item.historyMajorEnrollMap['2023'].admissionLine}}分 2022年录取最低分{{item.historyMajorEnrollMap['2022'].admissionLine}}分 2021年录取最低分{{item.historyMajorEnrollMap['2021'].admissionLine}}分 - + 录取方式:{{item.rulesEnrollProbability}} @@ -426,20 +465,20 @@ export default { - + - + - + {{item.indexs}} - + 点击添加 diff --git a/pages/zyb/fillVolunteer/index.vue b/pages/zyb/fillVolunteer/index.vue index 7c935c6..0120bba 100644 --- a/pages/zyb/fillVolunteer/index.vue +++ b/pages/zyb/fillVolunteer/index.vue @@ -2,6 +2,8 @@ import StaticConstant from "@/common/StaticConstant"; import ApiConstant from "@/common/ApiConstant"; import Request from '@/common/request' +import ImagesConstant from "@/common/ImagesConstant"; +import {arrayIsNotEmpty} from "@/common/util"; let request = new Request() // 缓存每页最多 @@ -11,46 +13,45 @@ const MAX_CACHE_PAGE = 3; export default { name: "模拟填报", + computed: { + StaticConstant() { + return StaticConstant + }, + ImagesConstant() { + return ImagesConstant + } + }, data() { return { - volunteerId:'', - /*悬浮按钮*/ - fab:{ - horizontal:'left', - vertical: 'bottom', - direction: 'horizontal', - pattern:{ - color: '#7A7E83', - backgroundColor: '#fff', - selectedColor: '#007AFF', - buttonColor: '#007AFF', - iconColor: '#fff' - }, - content: [{ - iconPath: '/static/icons/arrow/angle-down.png', - selectedIconPath: '/static/icons/arrow/angle-down-active.png', - text: '回到顶部', - active: false - }] - }, /// - circle: {kcj: 0, jwt: 0, nlq: 0, kbd: 0,}, + num: {kcj: 0, jwt: 0, nlq: 0, kbd: 0,}, + circle: {kcj: 0, jwt: 0, nlq: 0, kbd: 0,},//百分比 modelVale: 0, - topBackShow: true,//显示回到顶部 + topFlag: false,//显示回到顶部 selectForm: { - address: '', + province:'', schoolName: '', paneName: '全部', batch: '提前批', + rulesEnrollProbability:'',//录取方式 + tagsList:[],//院校标签 + addressList:[],//地区 + schoolNatureList:[],//办学类型 + }, + userInfo: { + vipFlag: true }, scoreInfo: { - province: '河南',//省份 - cognitioPolyclinic: '理科',//科类 - professionalCategory: '美术类',//报考方向 - culturalScore: '475',//文化分 - professionalScore: '257',//统考分 + province: null,//省份 + cognitioPolyclinic: null,//科类 + professionalCategory: null,//报考方向 + culturalScore: null,//文化分 + professionalScore: null,//统考分 }, - cityData: [{text: "河南", value: "河南",}], + /*筛选项 参数 start*/ + defaultSelected: [], + menuList: StaticConstant.fillVolunteerMenuData, + /*筛选项 参数 end*/ tabIndex: 0, scrollInto: "", newsList: [], @@ -59,10 +60,10 @@ export default { name: '本科B段', id: '本科B段' }, {name: '高职高专', id: '高职高专'}], - recommendVolunteerList: StaticConstant.recommendVolunteerList,//推荐志愿列表 - page:{ + recommendVolunteerList: [],//推荐志愿列表 + page: { current: 1, - pageSize:5, + pageSize: 5, total: 0, },//分页结果 filledVolunteer: { @@ -76,17 +77,40 @@ export default { volunteerMap: new Map() },//已填志愿信息 years: StaticConstant.years, - nowYear: StaticConstant.year + // + status: 'more', + statusTypes: [ + { + value: 'more', + text: '加载前', + checked: true + }, { + value: 'loading', + text: '加载中', + checked: false + }, { + value: 'noMore', + text: '没有更多', + checked: false + } + ], + contentText: { + contentdown: '查看更多', + contentrefresh: '加载中', + contentnomore: '没有更多' + }, } }, - onShow(e){ + onShow(e) { + this.userInfo = uni.getStorageSync('userInfo') + this.clearData() this.getUserScore() }, onLoad(e) { - console.log(e) if (e.batch && e.volunteerId) { + //从我的志愿 点击跳转而来 this.selectForm.batch = e.batch; - this.volunteerId = e.volunteerId; + this.filledVolunteer.volunteerId = e.volunteerId; console.log(e) } setTimeout(() => { @@ -100,30 +124,65 @@ export default { }); }, 350) }, + onReachBottom() { + if (this.userInfo.vipFlag) { + this.loadMore() + } + }, methods: { - search(res) { - this.selectForm.schoolName = res.value + onConfirm(e) { + console.log('onConfirm') + if(e.type ==='filter'){ + if (e.children) { + for (let i = 0; i < e.children.length; i++) { + if (e.children[i].title === '录取方式') { + this.selectForm.rulesEnrollProbability =e.children[i].value + if (this.selectForm.rulesEnrollProbability === null) { + this.selectForm.rulesEnrollProbability = '' + } + }else if (e.children[i].title === '院校标签') { + this.selectForm.tagsList = e.children[i].value + if (this.selectForm.tagsList === null) { + this.selectForm.tagsList = [] + } + }else if (e.children[i].title === '办学类型') { + this.selectForm.schoolNatureList = e.children[i].value + if (this.selectForm.schoolNatureList === null) { + this.selectForm.schoolNatureList = [] + } + } else if (e.children[i].title === '地区') { + this.selectForm.addressList = e.children[i].value + } + } + } + } + console.log(e) + this.clearData() + this.getRecommendVolunteerList() + }, + onChange(e, index) { + console.log('onChange') + console.log(e, index) + }, + loadMore() { + if (this.status === 'noMore') { + return; + } + console.log('加载中') + this.page.current++; + this.getRecommendVolunteerList() + }, + search(res) { + this.recommendVolunteerList = [] + this.selectForm.paneName = '全部' + this.page.current = 1 this.getRecommendVolunteerList() - /*uni.showToast({ - title: '搜索:' + res.value, - icon: 'none' - })*/ }, goto(url) { uni.navigateTo({ url: url }) }, - onPageScroll(e) { - /*console.log(e.scrollTop) - if (e.scrollTop >= 200) { - // 显示 - this.topBackShow = true - } else { - // 隐藏 - this.topBackShow = false - }*/ - }, topBack() { uni.pageScrollTo({ scrollTop: 0, // 滚动到页面的目标位置 这个是滚动到顶部, 0 @@ -134,9 +193,13 @@ export default { //切换了 tabs console.log(e) let index = e.target.dataset.current || e.currentTarget.dataset.current; + //判断 是否重复切换 + if (index === this.tabIndex) { + return; + } this.selectForm.batch = this.tabBars[index].id //清除页数 - this.page.current = 1 + this.clearData() this.getRecommendVolunteerList() this.switchTab(index); }, @@ -153,7 +216,6 @@ export default { let isExist = this.cacheTab.indexOf(this.tabIndex); if (isExist < 0) { this.cacheTab.push(this.tabIndex); - //console.log("cache index:: " + this.tabIndex); } } @@ -180,31 +242,38 @@ export default { console.log('填报专业,', item.schoolName + ";" + item.enrollmentCode + ";" + item.majorCode + ";" + item.majorName) uni.showModal({ title: item.volunteerIndexs ? '移除志愿' : '确认志愿', - content: '[' + item.institutionCode + ']' + item.schoolName + '-' + item.batch + '-[' + item.enrollmentCode + ']' + item.majorName, + content: '[' + item.schoolCode + ']' + item.schoolName + '-' + item.batch + '-[' + item.enrollmentCode + ']' + item.majorName, confirmText: '确定', cancelText: '取消', success: function (res) { if (res.confirm) { request.post(ApiConstant.Volunteer.volunteerSave, { + volunteerId: that.filledVolunteer.volunteerId, schoolCode: item.schoolCode, - majorCode: item.majorCode + majorCode: item.majorCode, + enrollmentCode: item.enrollmentCode }).then(r => { - if (!r.success) { + if (r.success) { + console.log(r) + if (r.result) { + that.filledVolunteer.volunteerId = r.result + } + setTimeout(function () { + uni.showToast({title: '添加成功', icon: "none"}); + }, 500) + that.getUserScore() + } else { setTimeout(function () { uni.showToast({title: r.message, icon: "none"}); }, 500) } }).catch(err => { }).finally(() => { - /*this.msgType = 'warn' - this.messageText = `1111` - this.$refs.message.open()*/ - that.getFilledVolunteerList() + }); } } }); - }, /*获取其他专业*/ showOtherMajor(majorCode) { @@ -218,38 +287,212 @@ export default { }, /*获取用户分数*/ getUserScore() { - request.get(ApiConstant.Score.getScore, {}).then(res => { + request.get(ApiConstant.Volunteer.artVolunteerDetail, {id: this.filledVolunteer.volunteerId}).then(res => { if (res.success) { - this.scoreInfo = res.result - if (this.scoreInfo.batch) { - if (this.scoreInfo.batch === '本科A段') { - this.tabBars = [{name: '本科提前批', id: '提前批'}, {name: '本科A段', id: '本科A段'}, { - name: '本科B段', - id: '本科B段' - }, {name: '高职高专', id: '高职高专'}] - } else if (this.scoreInfo.batch === '本科B段') { - this.tabBars = [{name: '本科B段', id: '本科B段'}, {name: '高职高专', id: '高职高专'}] - } else if (this.scoreInfo.batch === '本科') { - this.tabBars = [{name: '本科', id: '本科'}, {name: '高职高专', id: '高职高专'}] - } else { - this.tabBars = [{name: '高职高专', id: '高职高专'}] + let dataResult = res.result + //有数据情况下 + const volunteerMap = new Map(); + if (dataResult != null) { + // 分数信息 + this.scoreInfo = res.result.userScoreInfo + //拆分子级专业类别 + if (this.scoreInfo) { } + + if (this.scoreInfo.batch) { + this.selectForm.batch = this.scoreInfo.batch + if (this.scoreInfo.batch === '本科A段') { + this.tabBars = [{name: '本科提前批', id: '提前批'}, {name: '本科A段', id: '本科A段'}, { + name: '本科B段', + id: '本科B段' + }, {name: '高职高专', id: '高职高专'}] + } else if (this.scoreInfo.batch === '本科B段') { + this.tabBars = [{name: '本科B段', id: '本科B段'}, {name: '高职高专', id: '高职高专'}] + } else if (this.scoreInfo.batch === '本科') { + this.tabBars = [{name: '本科', id: '本科'}, {name: '高职高专', id: '高职高专'}] + } else { + this.tabBars = [{name: '高职高专', id: '高职高专'}] + } + + /*调整默认选中的导航栏*/ + if (this.scoreInfo.batch === '本科A段') { + this.selectForm.batch = '提前批' + this.tabIndex = 0; + } else { + for (let i = 0; i < this.tabBars.length; i++) { + if (this.tabBars[i].id === this.selectForm.batch) { + //选中 + this.tabIndex = i; + break; + } + } + } + } + // 处理 已填志愿信息 + this.filledVolunteer.volunteerId = dataResult.id + this.filledVolunteer.volunteerName = dataResult.volunteerName + if (true) { + let key = '' + let volunteer = {indexStr: 0} + //==================================提前批 start + let volunteerRecordEarlyAdmissionList = dataResult.volunteerRecordEarlyAdmissionList; + for (let i = 0; i < volunteerRecordEarlyAdmissionList.length; i++) { + key = volunteerRecordEarlyAdmissionList[i].majorCode + volunteerRecordEarlyAdmissionList[i].schoolCode + volunteer = volunteerRecordEarlyAdmissionList[i] + volunteerMap.set(key, volunteerRecordEarlyAdmissionList[i]) + } + let indexs = 1; + let volunteerRecordEarlyAdmissionList2 = []; + while (indexs <= 2) { + let record = { + actives: false, + indexs: indexs + } + for (let i = 0; i < volunteerRecordEarlyAdmissionList.length; i++) { + if (volunteerRecordEarlyAdmissionList[i].indexs === indexs) { + record = volunteerRecordEarlyAdmissionList[i] + record.actives = true + } + } + volunteerRecordEarlyAdmissionList2.push(record) + indexs++; + } + this.filledVolunteer.volunteerEarlyAdmissionList = volunteerRecordEarlyAdmissionList2 + //==================================提前批 end + //==================================本科A段 start + let volunteerUndergraduateAList = dataResult.volunteerRecordUndergraduateAList; + for (let i = 0; i < volunteerUndergraduateAList.length; i++) { + key = volunteerUndergraduateAList[i].majorCode + volunteerUndergraduateAList[i].schoolCode + volunteerMap.set(key, volunteerUndergraduateAList[i]) + } + indexs = 1; + let volunteerRecordUndergraduateAList2 = []; + while (indexs <= 12) { + let record = {actives: false, indexs: indexs} + for (let i = 0; i < volunteerUndergraduateAList.length; i++) { + if (volunteerUndergraduateAList[i].indexs === indexs) { + record = volunteerUndergraduateAList[i] + record.actives = true + } + } + volunteerRecordUndergraduateAList2.push(record) + indexs++; + } + this.filledVolunteer.volunteerUndergraduateAList = volunteerRecordUndergraduateAList2 + //==================================本科A段 end + //==================================本科B段 start + let volunteerUndergraduateBList = dataResult.volunteerRecordUndergraduateBList; + for (let i = 0; i < volunteerUndergraduateBList.length; i++) { + key = volunteerUndergraduateBList[i].majorCode + volunteerUndergraduateBList[i].schoolCode + volunteerMap.set(key, volunteerUndergraduateBList[i]) + } + indexs = 1; + let volunteerUndergraduateBList2 = []; + while (indexs <= 12) { + let record = {actives: false, indexs: indexs} + for (let i = 0; i < volunteerUndergraduateBList.length; i++) { + if (volunteerUndergraduateBList[i].indexs === indexs) { + record = volunteerUndergraduateBList[i] + record.actives = true + } + } + volunteerUndergraduateBList2.push(record) + indexs++; + } + this.filledVolunteer.volunteerUndergraduateBList = volunteerUndergraduateBList2 + //==================================本科 start + let volunteerUndergraduateList = dataResult.volunteerRecordUndergraduateList; + for (let i = 0; i < volunteerUndergraduateList.length; i++) { + key = volunteerUndergraduateList[i].majorCode + volunteerUndergraduateList[i].schoolCode + volunteerMap.set(key, volunteerUndergraduateList[i]) + } + indexs = 1; + let volunteerUndergraduateList2 = []; + while (indexs <= 12) { + let record = {actives: false, indexs: indexs} + for (let i = 0; i < volunteerUndergraduateList.length; i++) { + if (volunteerUndergraduateList[i].indexs === indexs) { + record = volunteerUndergraduateList[i] + record.actives = true + } + } + volunteerUndergraduateList2.push(record) + indexs++; + } + this.filledVolunteer.volunteerUndergraduateList = volunteerUndergraduateList2 + //==================================本科 end + //==================================高职高专 start + let volunteerJuniorCollegeList = dataResult.volunteerRecordJuniorCollegeList; + for (let i = 0; i < volunteerJuniorCollegeList.length; i++) { + key = volunteerJuniorCollegeList[i].majorCode + volunteerJuniorCollegeList[i].schoolCode + volunteerMap.set(key, volunteerJuniorCollegeList[i]) + } + indexs = 1; + let volunteerJuniorCollegeList2 = []; + while (indexs <= 12) { + let record = { + actives: false, + indexs: indexs + } + for (let i = 0; i < volunteerJuniorCollegeList.length; i++) { + if (volunteerJuniorCollegeList[i].indexs === indexs) { + record = volunteerJuniorCollegeList[i] + record.actives = true + } + } + volunteerJuniorCollegeList2.push(record) + indexs++; + } + this.filledVolunteer.volunteerJuniorCollegeList = volunteerJuniorCollegeList2 + } + //==================================高职高专 end + } else { + this.filledVolunteer.volunteerEarlyAdmissionList = [] + this.filledVolunteer.volunteerUndergraduateAList = [] + this.filledVolunteer.volunteerUndergraduateBList = [] + this.filledVolunteer.volunteerJuniorCollegeList = [] + this.filledVolunteer.volunteerUndergraduateList = [] + this.filledVolunteer.volunteerList = [] } + this.filledVolunteer.volunteerMap = volunteerMap } }).catch(err => { }).finally(() => { - this.getFilledVolunteerList() + this.getRecommendVolunteerList() }); }, /*获取推荐志愿列表*/ getRecommendVolunteerList() { - request.get(ApiConstant.Major.recommendMajorPage, { + console.log(this.selectForm.batch) + this.status = 'loading' + let tagsStrs='' + if (this.selectForm.tagsList && this.selectForm.tagsList.length>0) { + tagsStrs = this.selectForm.tagsList.join(",") + } + + let schoolNatureStrs='' + if (this.selectForm.schoolNatureList && this.selectForm.schoolNatureList.length>0) { + schoolNatureStrs = this.selectForm.schoolNatureList.join(",") + } + //地区 + let province = '' + if (arrayIsNotEmpty(this.selectForm.addressList)) { + province = this.selectForm.addressList.join(",") + } + + let params = { schoolName: this.selectForm.schoolName,//学校名称 pageNum: this.page.current, pageSize: this.page.pageSize, paneName: this.selectForm.paneName, batch: this.selectForm.batch, - }).then(res => { + province: province, + rulesEnrollProbability :this.selectForm.rulesEnrollProbability, + tagsStrs:tagsStrs, + schoolNatureStrs:schoolNatureStrs, + scoreId: this.scoreInfo.id, + } + request.get(ApiConstant.Major.recommendMajorPage, params).then(res => { console.log('返回值') console.log(res) if (res.success) { @@ -259,6 +502,10 @@ export default { this.circle.jwt = this.toPercent(result.jwt, allNumber)//较稳妥 this.circle.nlq = this.toPercent(result.nan, allNumber)//难录取 this.circle.kbd = this.toPercent(result.kbd, allNumber)//可保底 + this.num.kcj = result.kcj//可冲击 + this.num.jwt = result.jwt//较稳妥 + this.num.nlq = result.nan//难录取 + this.num.kbd = result.kbd//可保底 let records = result.pageList.records //判断专业是否已经填报过 if (this.filledVolunteer.volunteerMap) { @@ -277,7 +524,14 @@ export default { } } } - this.recommendVolunteerList = records + + this.recommendVolunteerList = [...this.recommendVolunteerList, ...records] + if (result.pageList.current >= result.pageList.pages) { + this.status = 'noMore' + } else{ + this.status = 'more' + } + //修改分页参数 this.page.total = result.pageList.total this.page.current = result.pageList.current @@ -287,146 +541,6 @@ export default { }).finally(() => { }); }, - /*获取已填报志愿数据*/ - getFilledVolunteerList() { - request.get(ApiConstant.Volunteer.volunteerInfo, {}).then(res => { - console.log('返回值') - console.log(res) - if (res.success) { - let dataResult = res.result - //有数据情况下 - const volunteerMap = new Map(); - if (dataResult != null) { - this.filledVolunteer.volunteerId = dataResult.id - this.filledVolunteer.volunteerName = dataResult.volunteerName - let key = '' - let volunteer = {indexStr: 0} - //==================================提前批 start - let volunteerRecordEarlyAdmissionList = dataResult.volunteerRecordEarlyAdmissionList; - for (let i = 0; i < volunteerRecordEarlyAdmissionList.length; i++) { - key = volunteerRecordEarlyAdmissionList[i].majorCode + volunteerRecordEarlyAdmissionList[i].schoolCode - volunteer = volunteerRecordEarlyAdmissionList[i] - volunteerMap.set(key, volunteerRecordEarlyAdmissionList[i]) - } - let indexs = 1; - let volunteerRecordEarlyAdmissionList2 = []; - while (indexs <= 2) { - let record = { - actives: false, - indexs: indexs - } - for (let i = 0; i < volunteerRecordEarlyAdmissionList.length; i++) { - if (volunteerRecordEarlyAdmissionList[i].indexs === indexs) { - record = volunteerRecordEarlyAdmissionList[i] - record.actives = true - } - } - volunteerRecordEarlyAdmissionList2.push(record) - indexs++; - } - this.filledVolunteer.volunteerEarlyAdmissionList = volunteerRecordEarlyAdmissionList2 - //==================================提前批 end - //==================================本科A段 start - let volunteerUndergraduateAList = dataResult.volunteerRecordUndergraduateAList; - for (let i = 0; i < volunteerUndergraduateAList.length; i++) { - key = volunteerUndergraduateAList[i].majorCode + volunteerUndergraduateAList[i].schoolCode - volunteerMap.set(key, volunteerUndergraduateAList[i]) - } - indexs = 1; - let volunteerRecordUndergraduateAList2 = []; - while (indexs <= 12) { - let record = {actives: false, indexs: indexs} - for (let i = 0; i < volunteerUndergraduateAList.length; i++) { - if (volunteerUndergraduateAList[i].indexs === indexs) { - record = volunteerUndergraduateAList[i] - record.actives = true - } - } - volunteerRecordUndergraduateAList2.push(record) - indexs++; - } - this.filledVolunteer.volunteerUndergraduateAList = volunteerRecordUndergraduateAList2 - //==================================本科A段 end - //==================================本科B段 start - let volunteerUndergraduateBList = dataResult.volunteerRecordUndergraduateBList; - for (let i = 0; i < volunteerUndergraduateBList.length; i++) { - key = volunteerUndergraduateBList[i].majorCode + volunteerUndergraduateBList[i].schoolCode - volunteerMap.set(key, volunteerUndergraduateBList[i]) - } - indexs = 1; - let volunteerUndergraduateBList2 = []; - while (indexs <= 12) { - let record = {actives: false, indexs: indexs} - for (let i = 0; i < volunteerUndergraduateBList.length; i++) { - if (volunteerUndergraduateBList[i].indexs === indexs) { - record = volunteerUndergraduateBList[i] - record.actives = true - } - } - volunteerUndergraduateBList2.push(record) - indexs++; - } - this.filledVolunteer.volunteerUndergraduateBList = volunteerUndergraduateBList2 - //==================================本科 start - let volunteerUndergraduateList = dataResult.volunteerRecordUndergraduateList; - for (let i = 0; i < volunteerUndergraduateList.length; i++) { - key = volunteerUndergraduateList[i].majorCode + volunteerUndergraduateList[i].schoolCode - volunteerMap.set(key, volunteerUndergraduateList[i]) - } - indexs = 1; - let volunteerUndergraduateList2 = []; - while (indexs <= 12) { - let record = {actives: false, indexs: indexs} - for (let i = 0; i < volunteerUndergraduateList.length; i++) { - if (volunteerUndergraduateList[i].indexs === indexs) { - record = volunteerUndergraduateList[i] - record.actives = true - } - } - volunteerUndergraduateList2.push(record) - indexs++; - } - this.filledVolunteer.volunteerUndergraduateList = volunteerUndergraduateList2 - //==================================本科 end - //==================================高职高专 start - let volunteerJuniorCollegeList = dataResult.volunteerRecordJuniorCollegeList; - for (let i = 0; i < volunteerJuniorCollegeList.length; i++) { - key = volunteerJuniorCollegeList[i].majorCode + volunteerJuniorCollegeList[i].schoolCode - volunteerMap.set(key, volunteerJuniorCollegeList[i]) - } - indexs = 1; - let volunteerJuniorCollegeList2 = []; - while (indexs <= 12) { - let record = { - actives: false, - indexs: indexs - } - for (let i = 0; i < volunteerJuniorCollegeList.length; i++) { - if (volunteerJuniorCollegeList[i].indexs === indexs) { - record = volunteerJuniorCollegeList[i] - record.actives = true - } - } - volunteerJuniorCollegeList2.push(record) - indexs++; - } - this.filledVolunteer.volunteerJuniorCollegeList = volunteerJuniorCollegeList2 - //==================================高职高专 end - } else { - this.filledVolunteer.volunteerEarlyAdmissionList = [] - this.filledVolunteer.volunteerUndergraduateAList = [] - this.filledVolunteer.volunteerUndergraduateBList = [] - this.filledVolunteer.volunteerJuniorCollegeList = [] - this.filledVolunteer.volunteerUndergraduateList = [] - this.filledVolunteer.volunteerList = [] - } - this.filledVolunteer.volunteerMap = volunteerMap - } - }).catch(err => { - }).finally(() => { - this.getRecommendVolunteerList() - }); - }, /*计算百分比*/ toPercent(num, total) { return (Math.round(num / total * 10000) / 100.00);// 小数点后两位百分比 @@ -434,215 +548,280 @@ export default { /*悬浮按钮*/ trigger(e) { console.log(e) - /*this.fab.content[e.index].active = !e.item.active*/ if (e.item.text === '回到顶部') { this.topBack() } - /*uni.showModal({ - title: '提示', - content: `您${this.fab.content[e.index].active ? '选中了' : '取消了'}${e.item.text}`, - success: function(res) { - if (res.confirm) { - console.log('用户点击确定') - } else if (res.cancel) { - console.log('用户点击取消') - } - } - })*/ }, - fabClick() { - /*uni.showToast({ - title: '点击了悬浮按钮', - icon: 'none' - })*/ + clearInput() { + this.selectForm.schoolName = '' }, - /*分页跳转*/ - changePage(e) { + menuChange(e) { + console.log('↓↓↓↓触发change事件↓↓↓↓') console.log(e) - this.page.current = e.current + this.menuValue = e.value; + console.log(this.menuValue) + this.clearData() this.getRecommendVolunteerList() }, + switchPane(e) { + if (this.selectForm.paneName !== e) { + this.selectForm.paneName = e + } else { + this.selectForm.paneName = '全部' + } + this.clearData() + this.getRecommendVolunteerList() + }, + clearData() { + this.recommendVolunteerList = [] + this.page.current = 1 + }, + checkBao(e) { + if (e >= 93) { + return ImagesConstant.bao.kebaodi; + } else if (e < 92 && e >= 74) { + return ImagesConstant.bao.jiaowentuo; + } else if (e < 73 && e >= 60) { + return ImagesConstant.bao.kechongji; + } + return ImagesConstant.bao.nanluqu; + }, + checkColorText(e) { + if (e >= 93) { + return '#3e8e43'; + } else if (e < 92 && e >= 74) { + return '#4975fd'; + } else if (e < 73 && e >= 60) { + return '#F8880E'; + } + return '#c83428'; + }, + top() { //回到顶部 + uni.pageScrollTo({ + scrollTop: 0, + duration: 300 + }); + }, + }, + onPageScroll(e) { //根据距离顶部距离是否显示回到顶部按钮 + //当距离大于600时显示回到顶部按钮,//当距离小于600时隐藏回到顶部按钮 + this.topFlag = e.scrollTop > 600; } } diff --git a/pages/zyb/fillVolunteer/list.vue b/pages/zyb/fillVolunteer/list.vue deleted file mode 100644 index ed2fefc..0000000 --- a/pages/zyb/fillVolunteer/list.vue +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - diff --git a/pages/zyb/fillVolunteer/my.vue b/pages/zyb/fillVolunteer/my.vue new file mode 100644 index 0000000..b4e36a1 --- /dev/null +++ b/pages/zyb/fillVolunteer/my.vue @@ -0,0 +1,234 @@ + + + + + + diff --git a/pages/zyb/historyScoreControlLine/data.js b/pages/zyb/historyScoreControlLine/data.js new file mode 100644 index 0000000..08305d2 --- /dev/null +++ b/pages/zyb/historyScoreControlLine/data.js @@ -0,0 +1,82 @@ +export const menuData = [ + { + name: 'year', title: '年份', options: [ + {label: "2023", value: "2023"}, + {label: "2022", value: "2022"}, + {label: "2021", value: "2021"} + ] + }, + { + name: 'professionalCategory', title: '专业类别', options: [ + {label: "音乐类", value: "音乐类"}, + {label: "国际标准舞类", value: "国际标准舞类"}, + {label: "播音与主持类", value: "播音与主持类"}, + {label: "表演类", value: "表演类"}, + {label: "编导制作类", value: "编导制作类"}, + {label: "书法类", value: "书法类"}, + {label: "艺术舞蹈类", value: "艺术舞蹈类"}, + {label: "美术类", value: "美术类"}, + {label: "体育类", value: "体育类"}, + ] + }, + { + name: 'category', title: '文理分科', options: [ + {label: "文科", value: "文科"}, + {label: "理科", value: "理科"}, + ] + }, +] + +export const menuData1 = [ + { + name: 'city', title: '城市', treeSelect: true, popupHeight: null, options: [ + {label: "全部", value: null, children: [{label: '全部', value: null}]}, + { + label: "湖南省", value: "1", + children: [ + {label: "全部", value: 35}, + {label: "长沙市", tip: 10, value: "1_1"}, + {label: "岳阳市", tip: 20, value: "1_2"}, + {label: "永州市", tip: 22, value: "1_4"}, + {label: "衡阳市", tip: 22, value: "1_5"}, + {label: "益阳市", tip: 22, value: "1_6"}, + {label: "张家界", tip: 22, value: "1_7"}, + ], + }, + { + label: "广东省", value: "2", + children: [ + {label: "全部", value: null}, + {label: "广州市", value: "2_1"}, + {label: "惠州市", value: "2_2"}, + {label: "中山市", value: "2_3"}, + ], + }, + { + label: "浙江省", value: "3", + children: [ + {label: "全部", value: null}, + {label: "杭州市", value: "3_1"}, + {label: "宁波市", value: "3_2"}, + {label: "温州市", value: "3_3"}, + ], + }, + ] + }, + { + name: 'status', title: '状态', options: [ + {label: "全部状态", value: null}, + {label: "待付款", value: "1"}, + {label: "待发货", value: "2"}, + {label: "待收货", value: "3"}, + {label: "待评价", value: "4"} + ] + }, + { + name: 'sort', title: '排序', options: [ + {label: "默认排序", value: null}, + {label: "销量排序", value: "1"}, + {label: "好评排序", value: "2"}, + ] + } +] diff --git a/pages/zyb/historyScoreControlLine/index.vue b/pages/zyb/historyScoreControlLine/index.vue new file mode 100644 index 0000000..2fb9dc7 --- /dev/null +++ b/pages/zyb/historyScoreControlLine/index.vue @@ -0,0 +1,153 @@ + + + + + + diff --git a/pages/zyb/home.vue b/pages/zyb/home.vue index ca0ac99..0e0fa56 100644 --- a/pages/zyb/home.vue +++ b/pages/zyb/home.vue @@ -1,5 +1,10 @@ diff --git a/pages/zyb/login.vue b/pages/zyb/login.vue new file mode 100644 index 0000000..4711e15 --- /dev/null +++ b/pages/zyb/login.vue @@ -0,0 +1,233 @@ + + + + + + diff --git a/pages/zyb/major/detail.vue b/pages/zyb/major/detail.vue new file mode 100644 index 0000000..f3aeade --- /dev/null +++ b/pages/zyb/major/detail.vue @@ -0,0 +1,507 @@ + + + + diff --git a/pages/zyb/major/list-old-copy.vue b/pages/zyb/major/list-old-copy.vue new file mode 100644 index 0000000..25f6d8e --- /dev/null +++ b/pages/zyb/major/list-old-copy.vue @@ -0,0 +1,284 @@ + + + + + diff --git a/pages/zyb/major/list.vue b/pages/zyb/major/list.vue new file mode 100644 index 0000000..e3a1c76 --- /dev/null +++ b/pages/zyb/major/list.vue @@ -0,0 +1,195 @@ + + + + + diff --git a/pages/zyb/npee/index.vue b/pages/zyb/npee/index.vue new file mode 100644 index 0000000..26de064 --- /dev/null +++ b/pages/zyb/npee/index.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/pages/zyb/npee/readme.md b/pages/zyb/npee/readme.md new file mode 100644 index 0000000..7a989c4 --- /dev/null +++ b/pages/zyb/npee/readme.md @@ -0,0 +1 @@ +艺体考研 diff --git a/pages/zyb/other/admissionsInformation.uvue b/pages/zyb/other/admissionsInformation.uvue new file mode 100644 index 0000000..8340dfa --- /dev/null +++ b/pages/zyb/other/admissionsInformation.uvue @@ -0,0 +1,15 @@ + + + + + + + diff --git a/pages/zyb/other/admissionsInformation.vue b/pages/zyb/other/admissionsInformation.vue new file mode 100644 index 0000000..82f5b7a --- /dev/null +++ b/pages/zyb/other/admissionsInformation.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/pages/zyb/other/calculateInvestment.vue b/pages/zyb/other/calculateInvestment.vue new file mode 100644 index 0000000..54a572c --- /dev/null +++ b/pages/zyb/other/calculateInvestment.vue @@ -0,0 +1,426 @@ + + + + + + diff --git a/pages/zyb/other/checkRanking.vue b/pages/zyb/other/checkRanking.vue new file mode 100644 index 0000000..484fcf5 --- /dev/null +++ b/pages/zyb/other/checkRanking.vue @@ -0,0 +1,314 @@ + + + + + + + diff --git a/pages/zyb/other/commonProblem.vue b/pages/zyb/other/commonProblem.vue new file mode 100644 index 0000000..9c10a33 --- /dev/null +++ b/pages/zyb/other/commonProblem.vue @@ -0,0 +1,82 @@ + + + + + + diff --git a/pages/zyb/other/disclaimer.vue b/pages/zyb/other/disclaimer.vue new file mode 100644 index 0000000..84a7b18 --- /dev/null +++ b/pages/zyb/other/disclaimer.vue @@ -0,0 +1,30 @@ + + + + + + diff --git a/pages/zyb/other/progressbar.vue b/pages/zyb/other/progressbar.vue new file mode 100644 index 0000000..2304fff --- /dev/null +++ b/pages/zyb/other/progressbar.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/pages/zyb/other/updateLogs.vue b/pages/zyb/other/updateLogs.vue new file mode 100644 index 0000000..945a968 --- /dev/null +++ b/pages/zyb/other/updateLogs.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/pages/zyb/other/useHelp.vue b/pages/zyb/other/useHelp.vue new file mode 100644 index 0000000..3049432 --- /dev/null +++ b/pages/zyb/other/useHelp.vue @@ -0,0 +1,200 @@ + + + + + + diff --git a/pages/zyb/other/userAgreement.vue b/pages/zyb/other/userAgreement.vue new file mode 100644 index 0000000..56789d9 --- /dev/null +++ b/pages/zyb/other/userAgreement.vue @@ -0,0 +1,141 @@ + + + + + + diff --git a/pages/zyb/other/volunteerCardDesc.vue b/pages/zyb/other/volunteerCardDesc.vue new file mode 100644 index 0000000..f7006dd --- /dev/null +++ b/pages/zyb/other/volunteerCardDesc.vue @@ -0,0 +1,31 @@ + + + + + + diff --git a/pages/zyb/other/web-view.vue b/pages/zyb/other/web-view.vue new file mode 100644 index 0000000..1e86c6d --- /dev/null +++ b/pages/zyb/other/web-view.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/pages/zyb/other/yifenyiduan.vue b/pages/zyb/other/yifenyiduan.vue new file mode 100644 index 0000000..570ebc2 --- /dev/null +++ b/pages/zyb/other/yifenyiduan.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/pages/zyb/school/detail.vue b/pages/zyb/school/detail.vue new file mode 100644 index 0000000..ef2711c --- /dev/null +++ b/pages/zyb/school/detail.vue @@ -0,0 +1,584 @@ + + + + + diff --git a/pages/zyb/school/list.vue b/pages/zyb/school/list.vue new file mode 100644 index 0000000..8a39465 --- /dev/null +++ b/pages/zyb/school/list.vue @@ -0,0 +1,506 @@ + + + + + diff --git a/pages/zyb/score/edit.vue b/pages/zyb/score/edit.vue index 1714912..f641875 100644 --- a/pages/zyb/score/edit.vue +++ b/pages/zyb/score/edit.vue @@ -3,23 +3,38 @@ import graceChecker from "@/common/graceChecker"; import StaticConstant from "@/common/StaticConstant"; import ApiConstant from "@/common/ApiConstant"; import Request from '@/common/request' +import {arrayIsNotEmpty, stringIsNotEmpty} from "@/common/util"; + let request = new Request() export default { name: "socre-edit", + computed: { + StaticConstant() { + return StaticConstant + } + }, data() { return { + saveScoreInfo: {}, scoreInfo: { + id: '', province: '河南',//省份 cognitioPolyclinic: '理科',//科类 - professionalCategory: '美术类',//报考方向 + professionalCategory: '',//报考方向 culturalScore: '',//文化分 professionalScore: '',//统考分 - chineseScore:'', - englishScore:'' + chineseScore: '', + englishScore: '' }, - provinceArray:[{name:"河南"}],// - cognitioPolyclinicArray:StaticConstant.categoryList, - professionalCategoryArray:StaticConstant.professionalCategoryList + provinceArray: [{name: "河南"}],// + cognitioPolyclinicArray: StaticConstant.categoryList,//文理分科 + //=========================================================== + professionalCategoryArray: StaticConstant.professionalCategoryList,//专业类别大类array + professionalCategoryVisible: false,//专业类别 是否显示 + professionalCategoryIndex: null, + pCategoryChildrenList: [],//子级选择 + professionalCategoryScoreMax: '',//选择的专业最高分 + contentHeight: 600 } }, onShow() { @@ -31,78 +46,205 @@ export default { request.get(ApiConstant.Score.getScore, {}).then(res => { if (res.success) { this.scoreInfo = res.result + //设置 报考方向 选择 + let professionalCategory = this.scoreInfo.professionalCategory + for (let i = 0; i < this.professionalCategoryArray.length; i++) { + if (this.professionalCategoryArray[i].value === professionalCategory) { + this.professionalCategoryScoreMax = this.professionalCategoryArray[i].scoreMax + this.professionalCategoryIndex = i + } + } + let professionalCategoryChildren = this.scoreInfo.professionalCategoryChildren + if (professionalCategoryChildren !== undefined && professionalCategoryChildren !== '') { + this.pCategoryChildrenList = professionalCategoryChildren.split(',') + } } }).catch(err => { }).finally(() => { }); }, //保存用户的分数信息 - saveScore(){ + saveScore() { + //调整参数 + this.saveScoreInfo = {...this.scoreInfo} + if (arrayIsNotEmpty(this.pCategoryChildrenList)) { + this.saveScoreInfo.professionalCategoryChildren = this.pCategoryChildrenList.join(",") + } else { + this.saveScoreInfo.professionalCategoryChildren = '' + } + this.saveScoreInfo.professionalCategory = this.professionalCategoryArray[this.professionalCategoryIndex].value + //== request.post(ApiConstant.Score.scoreSave, { - ...this.scoreInfo + ...this.saveScoreInfo }).then(res => { if (res.success) { - setTimeout(function () { - uni.showToast({title: '保存成功', icon: "none"}); - uni.navigateBack({ - delta: 1, - complete: () => { - uni.startPullDownRefresh() - } - }); - }, 500) + uni.setStorageSync('scoreInfo', this.saveScoreInfo) + uni.removeStorageSync('fillVolunteer')//清除可报志愿数量 + this.getRecommendMajorCount() } }).catch(err => { }).finally(() => { }); }, + getRecommendMajorCount() { + request.get(ApiConstant.Major.recommendMajorCount, {}).then(res => { + if (res.success) { + let result = res.result + //将数据存入 缓存 + let fillVolunteer = { + all: result.allNumber, + kcj: result.kcj, + jwt: result.jwt, + nlq: result.nan, + kbd: result.kbd + } + uni.setStorageSync('fillVolunteer', fillVolunteer) + } + }).catch(err => { + }).finally(() => { + setTimeout(function () { + uni.showToast({title: '保存成功', icon: "none"}); + //回到首页 + uni.switchTab({ + url: '/pages/zyb/home' + }); + }, 500) + }); + }, //选择考区 - bindPicker_provinceChange: function(e) { + bindPicker_provinceChange: function (e) { console.log('考区picker发送选择改变,携带值为:' + e) this.scoreInfo.province = this.provinceArray[e.detail.value].name }, //选择科目 - bindPicker_cognitioPolyclinicChange: function(e) { + bindPicker_cognitioPolyclinicChange: function (e) { console.log('科目picker发送选择改变,携带值为:' + e.detail.value) this.scoreInfo.cognitioPolyclinic = this.cognitioPolyclinicArray[e.detail.value].name }, //选择报考方向 - bindPicker_professionalCategoryChange:function (e){ + bindPicker_professionalCategoryChange: function (e) { console.log('报考方向picker发送选择改变,携带值为:' + e.detail.value) this.scoreInfo.professionalCategory = this.professionalCategoryArray[e.detail.value].value }, formSubmit: function (e) { let that = this console.log('form发生了submit事件,携带数据为:' + JSON.stringify(e.detail.value)) - //定义表单规则 - var rule = [ - {name: "culturalScore", checkType: "between", checkRule: "0,750", errorMsg: "文化分0~750之间"}, - {name: "professionalScore", checkType: "between", checkRule: "0,450", errorMsg: "统考分0~450之间"}, - /*{name: "culturalScore", checkType: "string", checkRule: "1,3", errorMsg: "姓名应为1-3个字符"}, - {name: "gender", checkType: "in", checkRule: "男,女", errorMsg: "请选择性别"}, - {name: "loves", checkType: "notnull", checkRule: "", errorMsg: "请选择爱好"}*/ - ]; - //进行表单检查 - var formData = e.detail.value; - var checkRes = graceChecker.check(formData, rule); - if (checkRes) { - uni.showModal({ - title:'确认高考成绩', - content: '文化分:'+this.scoreInfo.culturalScore+'\r统考分:'+this.scoreInfo.professionalScore, - confirmText: '确定', - cancelText: '取消', - success:function (res){ - if (res.confirm) { - that.saveScore() - } + //判断 输入分数 + // 子级专业类别 + if (arrayIsNotEmpty(this.pCategoryChildrenList)) { + for (let i = 0; i < this.pCategoryChildrenList.length; i++) { + let name = this.pCategoryChildrenList[i] + //获取字节专业的属性,判断参数是否合格 + let key = this.checkChildrenNameToKey(name) + let value = this.scoreInfo[key] + + if (value === undefined || value === '') { + uni.showToast({title: '请输入' + name, icon: "none"}); + return } - }); + let score = parseInt(value) + if (typeof (score) !== 'number') { + uni.showToast({title: name + '输入参数有误', icon: "none"}); + return + } + if (parseInt(score) > this.professionalCategoryScoreMax) { + uni.showToast({title: name + '请输入0~' + this.professionalCategoryScoreMax + "之间", icon: "none"}); + return + } + this.scoreInfo[key] = score + } } else { - uni.showToast({title: graceChecker.error, icon: "none"}); + this.scoreInfo.yybysy = 0 + this.scoreInfo.yybyqy = 0 + this.scoreInfo.yyjy = 0 + this.scoreInfo.fzby = 0 + this.scoreInfo.xjysdy = 0 + this.scoreInfo.xjysby = 0 } + //判断统考成绩 + let professionalScore = parseInt(this.scoreInfo.professionalScore) + console.log('professionalScore:' + professionalScore) + if (isNaN(professionalScore) || professionalScore < 0 || professionalScore > this.professionalCategoryScoreMax) { + if (this.professionalCategoryArray[this.professionalCategoryIndex].label === '音乐类') { + uni.showToast({title: '请输入主项成绩', icon: "none"}); + } else { + uni.showToast({title: '统考成绩请输入0~' + this.professionalCategoryScoreMax + '之间', icon: "none"}); + } + return; + } + //文化成绩 + let culturalScore = parseInt(this.scoreInfo.culturalScore) + if (isNaN(professionalScore) || culturalScore < 0 || culturalScore > 750) { + uni.showToast({title: '文化分请输入0~750之间', icon: "none"}); + return; + } + this.scoreInfo.professionalScore = parseInt(this.scoreInfo.professionalScore) + this.scoreInfo.culturalScore = culturalScore + uni.showModal({ + title: '确认高考成绩', + content: '文化成绩:' + this.scoreInfo.culturalScore + " " + (this.scoreInfo.professionalScore ? (this.pCategoryChildrenList && this.pCategoryChildrenList.length > 0 ? '主项成绩:' : '统考成绩:') + this.scoreInfo.professionalScore : ""), + confirmText: '确定', + cancelText: '取消', + success: function (res) { + if (res.confirm) { + that.saveScore() + } + } + }); }, formReset: function (e) { console.log('清空数据') + }, + onProfessionalCategory() { + this.professionalCategoryVisible = true; + }, + onProfessionalCategoryClose() { + //如果 当前选择的包括方向 有子级 + if (this.professionalCategoryIndex && this.professionalCategoryArray[this.professionalCategoryIndex].children) { + if (this.pCategoryChildrenList.length === 0) { + //没有选择子级,提示选择 + uni.showToast({title: '请选择类别', icon: "none"}); + return + } + } + console.log('关闭') + this.professionalCategoryVisible = false + }, + onProfessionalCategoryOpen() { + console.log('打开') + }, + onProfessionalCategoryBottom() { + console.log('触底'); + }, + /*选择 大类*/ + clickprofessionalCategoryItem(e, index) { + console.log(e) + this.professionalCategoryIndex = index + this.professionalCategoryScoreMax = this.professionalCategoryArray[this.professionalCategoryIndex].scoreMax + if (!e.children) { + this.professionalCategoryVisible = false + } + this.pCategoryChildrenList = [] + }, + /*选择 子类*/ + professionalCategoryChildrenChange(e) { + console.log(e) + this.pCategoryChildrenList = e.detail.value + }, + checkChildrenNameToKey(e) { + if (e === '音乐表演声乐') { + return 'yybysy'; + } else if (e === '音乐表演器乐') { + return 'yybyqy'; + } else if (e === '音乐教育') { + return 'yyjy'; + } else if (e === '服装表演') { + return 'fzby'; + } else if (e === '戏剧影视导演') { + return 'xjysdy'; + } else if (e === '戏剧影视表演') { + return 'xjysby'; + } } } } @@ -110,7 +252,7 @@ export default { diff --git a/pages/zyb/settings.vue b/pages/zyb/settings.vue new file mode 100644 index 0000000..fa285cf --- /dev/null +++ b/pages/zyb/settings.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/pages/zyb/testCultural/detail.vue b/pages/zyb/testCultural/detail.vue new file mode 100644 index 0000000..21516e5 --- /dev/null +++ b/pages/zyb/testCultural/detail.vue @@ -0,0 +1,528 @@ + + + + + + diff --git a/pages/zyb/testCultural/index.vue b/pages/zyb/testCultural/index.vue new file mode 100644 index 0000000..32acc34 --- /dev/null +++ b/pages/zyb/testCultural/index.vue @@ -0,0 +1,278 @@ + + + + + + + + diff --git a/pages/zyb/user/center.vue b/pages/zyb/user/center.vue deleted file mode 100644 index 7915a9b..0000000 --- a/pages/zyb/user/center.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/pages/zyb/user/detail.vue b/pages/zyb/user/detail.vue new file mode 100644 index 0000000..e1c157d --- /dev/null +++ b/pages/zyb/user/detail.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/pages/zyb/user/index.vue b/pages/zyb/user/index.vue new file mode 100644 index 0000000..1a884a4 --- /dev/null +++ b/pages/zyb/user/index.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/pages/zyb/user/myCollect.vue b/pages/zyb/user/myCollect.vue new file mode 100644 index 0000000..c22b91d --- /dev/null +++ b/pages/zyb/user/myCollect.vue @@ -0,0 +1,223 @@ + + + + diff --git a/pages/zyb/vip/cardamom.vue b/pages/zyb/vip/cardamom.vue new file mode 100644 index 0000000..9583302 --- /dev/null +++ b/pages/zyb/vip/cardamom.vue @@ -0,0 +1,165 @@ + + + + + + diff --git a/pages/zyb/vip/checkoutCounter.vue b/pages/zyb/vip/checkoutCounter.vue new file mode 100644 index 0000000..3799e69 --- /dev/null +++ b/pages/zyb/vip/checkoutCounter.vue @@ -0,0 +1,173 @@ + + + + + + diff --git a/pages/zyb/vip/index.vue b/pages/zyb/vip/index.vue new file mode 100644 index 0000000..974484a --- /dev/null +++ b/pages/zyb/vip/index.vue @@ -0,0 +1,266 @@ + + + + + + diff --git a/static/60x60.png b/static/60x60.png deleted file mode 100644 index 6984932f14d5ca24334c51e2b8a9b057ea7f2cf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 774 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1SGf4^HT*2(s|s5sunH?68zii+qySb@l5MLL z;TxdfoL`ixV5(=LXP{)qrJ$f-QP|K%!RuMVYBUn?dH=8QOqVqKHB5vC#)v zj^r4KPr;%@cJc-w6w7F|NqN3 zY~E2cFoJDrbw@eOcKs&TucyYt+amFw4? zc5W8?xh;3~Dz0d;=U?~v{_Tv;f|Nr y?u%Uqr-&)!sV=>naWuh;TVVU7OL<$8J}_T%Xug-R*sKGTVm)2`T-G@yGywp8yCuB< diff --git a/static/api.png b/static/api.png deleted file mode 100644 index 58f93e13a4eabd82f830e125521d315f8332cbe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1449 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 Y2Ux)ywvB@R=Kufz07*qoM6N<$f?2Mgb^rhX diff --git a/static/apiIndex.png b/static/apiIndex.png deleted file mode 100644 index 890dba5c5fe2d44e16dcc24b940473570b30894c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1927 zcmai#`9Bj30LC4KDIv5pK62!E9rYnsy{yI@6GDzM?-WAK-PmlbW@8w=uDN-O+>Ll+ zna1mNAEQHZd$n?IzxNxXd}1CZpN|P9ZpK_N0U= zQ3mpVWo;hX4d<_hwU1=QDR}+8ywlN}*9x)&eco6;F+Y6hTltaH5(@3_YH{(*4OG|_ z-FaHFu?0AJX}i=U;tQB|hB@l9j}?y)Aox6RB=<>ipbPHQEMkyo6#a__$a@#$b#&VfG zVcJuXm;|8Frh#aTV=Qqs%n##q2*t>|P>nOk$dQ&=5dT#;B3d^Qhrm%Arrol*HralG z7aaWhJ=g)ICfAwO>A@ALZAJkluJ3fe`4lV0xKbMZprLX$V-5VWl`D!1Hd7&RFgQhf z(6V^#gBSOh)+5QaCM2S;Rzn9GIuQH)Y8H3?+t6TQ9Mv?me_Q_{ z%*{e0Y?xuz!Zy6Czt_WKYgq9?znPiF6TE|#X8LB}-FG(AQjz+YiN#*3EXyr`H+t&s zoA2b5Q)%*R($SgeVay&&bM+{D%Zs?V&fDAG^N3AhQJ;l`(`Q)E39Gp|fDL)H@Xz=6 z3nFuCS!uE~1m5;e5=>uDjm`v6!tb?2e0n>Gj0qIqf%v@Do_@5LNhckwq66N$6Zn;~GZ%W&X&kAp-B%$$*azfDX4eb* z`d>AF^cuo$IlaFyolR9z-!zE8QU-nr6t@L?)aiD|;Q&)x(0V|*j5#CuUbdY=jY&jt z<{rzj_3Z0>!o7xgcj`cdVVrwcg6bI1whAfSAi=6c_QqGv4}yT_g* zOTXte^o?Fi)1?QCa)iDWcJ|RAR}9(5w75U93PKP*B-Q2Sk|FPle#lb)tXe;qU#W%NHuCZ4FVypg!gKi+r8VqkB`S2uQK` z*hV{BZ$)7IEp%KSo@4>t{R_D1QNg;#TwC(PYBWkH$>0tOQI|g`qEe6}^yZ`*NmH|7 zG4I0a>D+Ob7(1>lVHETcJsp;SzJ@-PbVQx()lDTc3?zL9Big0z=CpO3FvmY~xvFjW ytf?Ae@_BdC>rW}z#h@O0`~NlAf08>4v+@EMfolJl@2-tdeIgiE72V3$+1a&#<;nGqB*6-wd0Dfno2^$& z7L}LYx}4kkKI1~4j2xSM#i^{e>mxFDC0DcwoaERsZFdmo&xZb=|e; zVChPF@z}uo`_jyFigEMR=cKgdY*81V{;5gJlXF9MvNaZ^cipGtGKCwGwYFdLih#FiI|b%1`}h zcD?9wzL;(MG`RGl!=KdO=X$Ia3G&T>{3@pZ$E>nWT~vAlEaktaqI1klarbacw7TzPB-Tm@A?1# z=DKt1Tm@&jBni*W72Dq8$U1XQ@j1)qcYd?AM-~6vdS%zgB|W!|l9z8;VdkK15fZWZ z0_Xa#{=&Tl?+&}Myixw!c0&2Cz{(%uYaLfyIpx20a+b;i&8Hu}PrN-Tsf8gx{xaWd zSEda)?3G(j%z6CKKWpOGAAJoS5gg_&aw+l?Pq*dmh)8I56YfnYkc%|gRM+fjvg@w| z$E(g+E=n8A7O8TmM)@~hDG@eQ_vn5n5wpR0%`A=`87W~$m7>*=T~gqVW%D$JmT%Wy00-NUV`g= zPWq+lU_K79dVw=Ll(hEL%sa^y|HiF3Bqng#c7b&Xt+%gdOo& V%D;5ZBtB5oc)I$ztaD0e0stIlwo?EA diff --git a/static/c3.png b/static/c3.png deleted file mode 100644 index 216202ad01c5d093a15c247cf791bf66759cf54d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^DImqEwn3#C`6axcex~Gd{NX4zUH%{jrQQ%<>_`I#L<;VZ} zZHv8>O^d80dDUJWN}qZ5sw(5+2E$_#$vr=hznV9v_(!hA^s)ehHzYuO_$GPFaj>L^Z^8*-5pGM3JjCnSB#oUXR4yIck*z;L5euG4hrQnMaF=Mr^If6ezqfPO{rmaH zG`Recv6gZBZ^h$ro*MqgZ`L;0*JWSQ?4MdEEc#Ycl^2Ku*&||7ybYSKxgR(e zUi8LbW#8LW_O;o`+{cdv9h)e%;+1X1dv+zh{}-wmlY4-{_IaWH_ctMZlX+XXL2>Bm L>gTe~DWM4f<{`=m diff --git a/static/c4.png b/static/c4.png deleted file mode 100644 index fb8b4770c323cc87544a502c4efcd9792ec6047a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^DIm!v{Zmph6H*@EOQ`c;Jj35m?s8tsB!ig_bOsad3NWyNKsO#%u4s6f}!WF<$1wue~HTU+T}QZ;Gq4 z+^p*LR=oRR<2>VYrDayznw7JEgn9(s4mmKdKH{5e^24HIn&xXKq`oqWXf4s;nPY6> zl5RSUO)+g!*Qq{!;a&O8LAO2%J{IadS>Y&oFLd#-`B8Zi;r0eCLdRUCfQpstnaz}|9;&C$edE%qT=zMqcbI`S>(i_Uwsp-Jh?$Zac<}T=h6;^ V(bfHGPg+0`|eiw2lA( diff --git a/static/c5.png b/static/c5.png deleted file mode 100644 index 310bfb123ba811240a23883c589557cced22af97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^DImMU#{OfDLKp{`iu-m;URIy-X0%w>4GPR z_aE3Db+En7Vpp-?y{8>c_3j;K1E(wImUzhRpIo-4)yng0f9$<4bN?NcJ+$)R>Cmd5 zPnT-Q*3a3qRzbM)VHC^C!+&Q!2$x98T^XQ1{a2U4m97Z?l}kQ1avTGN#j9nTb Uw;LB#rGg^I)78&qol`;+04O}Qp#T5? diff --git a/static/c6.png b/static/c6.png deleted file mode 100644 index c3c45d8814b2657a1c603b1a44c8207da134cb40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmeAS@N?(olHy`uVBq!ia0vp^DImqbxJT^6j8j=}L4 z`U~zp;jZGGq_3%#*Y{@jiL-*|KAoCX9M=6tMV3p`Xx_9LpK6YHtIv61@a%(@?tX{a zixmsYle>5975wq9?fBo`FZ<0Z_ST1U_$og>`Bwh@oq)-Q*IY8`n6H2IUEezHG>gnR z4m?JSR+TGA8lKK}%#OUITJo;LRm!DE@lpDwn1HB=DfxjiElxjmC-aCcb$n6qV?vwH z70D$Ac9y-Kb4tS6k2yc|sk#5)HGj$%vfgZBIOdhE(svqtDm`(*VzL-mu^Hy19AKPf2Xw<}^wvyk3;W5tc1>eFM@ s<<*_%cP|y0-yh@^lK=|O<{9 diff --git a/static/c7.png b/static/c7.png deleted file mode 100644 index a1e73908c282c8ce053a037a9b0d0ff2bcdb5f28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^DIm6ZD L`njxgN@xNA8ryiD diff --git a/static/c8.png b/static/c8.png deleted file mode 100644 index c32633c0b399d119fe940b19fb48ee0efd986ca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 587 zcmeAS@N?(olHy`uVBq!ia0vp^DImtDWKw)GSgG z<{?!7vyg^n3M^01LJZ}7srr_TW_zQ?t87k(~wwf+9)vT z%KQIoiZ6ORmsqxitIvdcU#@t4EXP6v-^(UI#Jk~jfg$H7CzX--mMU=ckjl- zO_N=n{=9#BNIpzt0(^6iu(G%&IbVv*qm>1hi!XSEd0U$OB}=(W(sDW)~2<6brG`eb|Eywk@UH2a9_S~2ou;@L{mE;Re4S!9(w0H>~IdYlxQPbf~&0B26{}evs0SCD6 b<@sM36JAtSn%f$@0;LB}S3j3^P6r-DwW=|@#WR(W@( zZdqJkeNu(zZcxH)-rk0j)>6#pwJ%5 z({0I4*ENL;Hg>s)Wo2yHMQWq+YVK10K1LEVCnUj62Kls6uex~DF( zmCs;?h^>{Qb=Fc@o?qGaU(P$0_Dg@wVQpV1_%AL~YBQ@%pW7wIWu-GZ7%RRBC{J)$ zYTez|@_3zqf=Wi}%JdkW31MA*>f4V5YcgIo@dcs(Z~1ke=Y_pcHP{M@c~4hAmvv4F FO#nHb*8Bhf diff --git a/static/compass.png b/static/compass.png deleted file mode 100644 index fba87a58d7a06d366936d72a69abc0ea0bb8ca32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24706 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 U&xaG>PX&%xnL#gNOg$q1504qP#sB~S diff --git a/static/component.png b/static/component.png deleted file mode 100644 index fbb116d59b9cbabc51476ce2ac48eb1fd15297da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1146 zcmV-=1cm#FP)j7-VM8Kg`UcvX?~lM_ADVqd!AaNJ)r-kc_gzKPq}b zVbY5pqCGH6il{6|GctlM})hS_Iv_Bv~Rvma}(8G;}P zf*=TjAP9mW2!bF8f*=TjAP9n>JY8iw&YriR&N$j-FdoDVEXJHVoiCg}w^YCV>I|YE zI0rZ4U|h48W7)yJCgO!z`>nkeMGy965ntYGQS@M65^)^H7VT~^5=)Vf!d2L^w*u)& ze~CB=Gclxsk6gr8THJdOuEVJnp4T>=7O@Mn@h%?6qb2mxzP#0G3MUTlg2Z z;+CRamV7F|j%|C;w-Lk5Squl_F)YIV72?`K9U>0LtGFYx^)?F1vL~rcUo637{F2#j z$7`CSyfjrs94Dm_Q!?9U()zcuqHj0~Clu{%(nu`JJ5pSqX12-r5XV>WTS>$z_yEUd zwq?@Bvaw1~85d>k)zX?+g>R*N^M%Ydw(vc*w+`)4MZ~9YNYUOdB6+^x{j%QsT9}Ine930i{DhmaUFT$ z-?$cc;=jT+6wgbGcbN*xc#JCATcl%SS-LP6FG}kyDb6{#8h=&rjrvY3+i@>0#vg^P z3-hFOVpt#j`l9D=DcybD*n*+bXq&J3W&VljSg5%>SEBB-^DCH$^_gwDU8hki>Nus0 z!Fy6V(_n*?$1X4FvsXG%#raa&aNf*pjRk#T8~sOVR;0H}N6I~ALh-zlGusNOvQws# zv|Bn=PyAil7#3x=5xBpNzSA`0`UF3ec>aA-9@tx%boDSw?+#M2S#JYn?3Qt9x2oRsA5j=@rr-Jq<9v!r!zJ-#mKqiy;_MAC;@ z-}0_>%xmoAKTC;w8MaDgu6|*l{qCGk<>i`r=YVD)iP&Z5(pQ}YhmJCkL_DT=F~I&N z(u#p3;wCAV`v(shKz|bnf*=TjAP9mW2!bF8f*=TjAP9mW2!c-XKY!e{-pBT+t^fc4 M07*qoM6N<$f@?xEoB#j- diff --git a/static/componentHL.png b/static/componentHL.png deleted file mode 100644 index 31f83a029feca7066cbf6139a9524fcbf508582c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1142 zcmV-+1d02JP)!|by-d!04E*^jl?3_%bC zK@bE%5ClOG1VIo4K@bE%5ClO`o<`}Ob9-wHqhp5RLCnHJ%&XP={Bm;aRcjF4=L}qn z{c*)^j%6!*nuzCS?YDMY6n)r}MSOX;MbU>nNyG^lU$lF~NGwG@3Rhs$?h2$YyGq0< zn2li-eB>g&(&pa%a1~Ch@Vt)cwulYP#k+VMkCyZ^5~pU@?L=IJC$I{)sglZdKsQAk zhG%e3_MAgX`Z@>u6z#9DuFd^pi}wcZ#>_bVI}`Sd9}h+X_s==Oz3N!Sw99lhkGnPQvocHnE87loB!Qkh(>@ z8q08SW_tu@VPi?3C*#1P{To(x*l#1I;o;0Sx`^+ZlCktlT_O&_16VAbZ{c6uh#QJ_ zS@Nm;I=1XY-)0QgXEE%H$FKl*54>7%g&@W1F;BG@k?gA8Lw%L z^3qflae|aaOv`MaN$cP8ioW4698(}{yKC*6%n7p0Y$r4%EvBJ?{VyctX+00_hl0< z#hp^zq|(}xWgS)#u_tRcq#e1Ig}PvbR6lG|mx!b|N89!!Q+o5OBH|_ZF}uDFZ{wf} zK69pO?eyPCYi%8j!W&Z7(BvmvT-IR~5m!kI_3F%a8a~2t75p~IcjYBD_=97mjpWSC z_OVo`=rsS_j;g!!_c$F-XSQ*8UmB@pX<$ZnUB^_uP>SpD%=Vo0#c!zMxQ;yWZ(NC6 z@n2yZj_0MtyG#XTBE}T$P13QkEDhX_7o~NU6z4o#j=w7SMtvuiUfhfG@ke26;0`IB z7%@PIB#aQ=7K)CgZ^W*D$>2uk#c95R6Ota%(hIb?3Ae_?T~KO z6MvUBh6R~z6z=b!?+mTDKEV$qo`0W|2R2!Vv+-*QUv24TWqY$!l$foxrhU;tzdEM! zn&Q1j%3tRc@pOecPZ$HSSUUV4B_+8#VyKj4Hz_OP9BJKKi?2)i=$Kt0BI(1dZF^Tb z<~4WnpQXgT44b7g*DhhO{qCGk<)vDA=b&aViP*4h>8s9yLsuD0A|6q^7-WAFX~$p^ zaf6i0{ey=LqQ8j*K@bE%5ClOG1VIo4K@bE%5ClOG1VK0XA1Vv9-W9e~bN~PV07*qo IM6N<$f_Zi-wg3PC diff --git a/static/componentIndex.png b/static/componentIndex.png deleted file mode 100644 index 8ad05344e6d46bb04894e1e6590b5ded1c81c1e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1705 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 diff --git a/static/extuiHL.png b/static/extuiHL.png deleted file mode 100644 index 612b4999bc5bf8a9f880a5cbfeeaa1b0b19de2ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5089 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 B{r&&| diff --git a/static/extuiIndex.png b/static/extuiIndex.png deleted file mode 100644 index dd4d9637723a7eeaeb2d0c86f0605863a4d4f52a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5951 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 BrX>IX diff --git a/static/home-active.png b/static/home-active.png deleted file mode 100644 index ccba9509ff41be7db210463ccb0d98e622873ed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 577 zcmeAS@N?(olHy`uVBq!ia0vp^5NHG=%xjQkeJ16rJ$axar6XFV_ z8S4K7kyibGmE8X_h5x0}{)?A@*iyxxq>BG5=Koj7`mb30U9tGTe93>=(jT&UKNSoA zE0p|KDEcK|@LRs;g~H$R#eZare#jO6Q7HT)SM*1&;Fo;iFL|IEAX)fVzUa3? z5m50@pa@6`NEZH505cQ{e}c3Zf)vPsNQf372^560LF$3BAR7yRgAE5UKx~jWL>WXq z$Plnbh=O06@_jgf-t;aB@(X5QVqs(Fg}I4ec|GrI}aQ@bn5i^3s)z%4l`|$>;OTymE+4(<^`)lG%+u<>A2nV-%f%$rBFb#y z+uWQFVe06v~7$w@I@6oJIWKqAl)%}lBhK*mU z(k7-b!Onn>4yIh}^DKCpxE%j0t-Gw=CD2t-IDv5q&%1D0V_%W5pYMV0XYh3Ob6Mw< G&;$Upi3VQ) diff --git a/static/home.png b/static/home.png deleted file mode 100644 index 569c7d087e0b1c2b7bab1abe7b4f4943c5527555..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmeAS@N?(olHy`uVBq!ia0vp^5NHG=%xjQkeJ16rJ$hj2Y6XFV_ z>+9dRA5zkW2*w zpbU_PaDgOH4G>^5AZj485E8BiSrC~G)Pl?fvLPZ6yU?UgUAW!|^p$H#kY6wZ6AKF) zJ0}-6pNP1GyrQy>nYo3fm4~NaSVT;0R(4KNLsM`6wCM{M?>unu(5chsFI>5HdtwaLBz z|5YcRS>Yj;XR~^C^}UpP%1>NR*@<;FT;klZo%w$0hT`R4rH&drd;3^z=@IGn zzwfXu`^B@0GphFcSM6+18!z9sx|ZiJ7Px(TuDShRCr$PTTN(ORTTctn;)h%8pVa^PQ@SWLQ8@(b6-;D%~TgbL6LSL!9{hI zlu~OWU9?z1LDE)RHKQ(cBZBC{g`g&O-kUg+o1siyL|iCHQBgtAC=wxY<{i113AfWU zVP-NjZ^(Tx4BU6`x##=tIrrz>^9bAgp>2*I>k{A;i+3^e%|Rz8918ul7>#~=ad7aT zW_7)SfV7ll00Yem>~uS3{)vbtT_N6RrtixLNK5%4fPKvf>UJ9<8qFn>?>DN)8UdM7 z=^pm|Z&n3-$%L0jWYEWraeX65v;>PJVbe->9%| z)K5#vs$T~3o)Au>Iv4_Kj2R0sE@0*WGYOhiz$}AiA7C~@W+!O2!saYs4nw_k8g!)e z2uOkGq?=5>u#_OC&Bf3SQOk`Qvaip!GI}fFQ;LGEzRwz{>!3wK~G} z?N#K6mzN*QJIMlL+0_pkr=fS)W%tu_?o@tbj-Y39ZjhVYab2(~mht2i4$qz6I z5+*~$q{x^YA(JE(*etP3sq`Q-3zgOB3Gr^D2bPWM2Rcn|&+P22k!bWNGmmK?J^}M- z*S5dh3L=6^06E3tVX~~F0B*So&{qMRafSG~6(Ryhz-ml?0>B;(*uP*N2hj+CM{DH_ zTq2@VZZi31vm^wD0O!JmU8q!^A>gSxFy~w$4%f=md;sPtX1+tKHv{G~%>*>MPC&}@ z`m9)N9L#FeZ`4Njyj87^=Z1&BTW@sJQYuoE8>~IdoVCK?bGdkY-8NT|)4k)cGe5td zn2!L6uK{QNm59b&AwJ&BtcMmBZip@|O@jGpt?n;ObUL=UnEh;IWO*|gU9kYCP>54F zd=Si|mnq16!nN%eH&eR)eX3YYSeEq)fTZ?r7Jzb}4T_?@0M10j~qNPIIMqh$!nOlV5e!1so|45O5H{ZcUM|+4qlmLqngo z0$gvqw_NV`S5}SzP`}#qJDAT#h_cf{{Gr!xy9K1@=F((YW6b=x*0B%ZSyza&TLrvc zPFl+Q0UQVLh&I2J2*|p&{a&rCZ3Kj3u^+io83Xen01-{Wx5A;&FN7ZUJH#Age3jrWHg#Wj%cWY~u=Mzolh4{P^!1X@tV)5FTWlb<}LM#6p zz*NmuwlpA82knM)+T2oi8zmxrdOuc`F)O^|X8=AA9)2`b_0 zhFJag$|rM5*S%8iu2if2&FXAEo(`&scS^7S0I-(cZZ|Ngvj6}907*qoM6N<$f|~;> A+W-In literal 0 HcmV?d00001 diff --git a/static/icons/arrow/angle-down-active.png b/static/icons/arrow/angle-down-active.png deleted file mode 100644 index 98033db8df4b59fa6bb60ce7534df755f79bfa37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5104 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 LNkvXXu0mjf`o}O2 diff --git a/static/icons/button.png b/static/icons/button.png deleted file mode 100644 index 461fe674f686ce167bd7111914099cc74ee4bcf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3465 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 diff --git a/static/icons/calendar.png b/static/icons/calendar.png deleted file mode 100644 index e8beb9cb3eb736cdf8e9aa5f0e2bef86f79943f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 735 zcmV<50wDc~P)Px%nMp)JRA@u(SUqSIK@|SpBKSkJNh2CN6|@ip!Nx|kP{VGcjbe6N^IK^JMr&;$w5Z@)bRK#X`fC! zwjIQi0G_38cvPC#3fDFfCkbW%tY*&6DX(%_+K`h3X8=qv^PKXcmC`(&M7{&)%a})> zc+n+kL-t+&ELn7gfjQ-dogs1{8QZyxvugmY`>RpHS^yRUGsO5ICBi@-5!Nu6iD^2g z?w9!*pQ;W=FC{faqh;R<-VtMyq~KCwnDAZ=g_|WcWkeD`BajFySyYOtyQSR7lHf(n zIZ42hVmdIX8;W`qftrY9V4ebzUSf;^5Eh)!LWIFexsjto`R1BV96SW!kVYc(NV($+ z3+VjpIJi%QBZf#Tl^c76VI29VNi?HXBv-4^vTt5kRa^0MATOV5_*OlB@oOWtCm!uz z4)o_?f6@HZq&qR&h;`f%I|;55a5|R=@K(9u)<(=pg8C7EN3LiY-$;)|C%Q)@_OBDs z$rg@&NZoMbVsnZAnn2rfvCOwqFB<6@k-;R`VlnT|YmO}Xm=1+c8?nJS*lU4v4}b)I zk$ROkT_aMox5~ylzDLS7T9jvq6e(o>>_rN-h?~(W60YfD^*D9IgGKmu<4){90MTKM z$9SG4&~p&$yCL$z+rX~+6O#@ip8({ZsoGV)Apdjfh8rYni0JnAVM~`aj+B;8Q)16J@*CvzS3;jx R)Up5o002ovPDHLkV1n(fO~U{H diff --git a/static/icons/card.png b/static/icons/card.png deleted file mode 100644 index 8426e99a013b9ce4a3ed731850deffc45cf76fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmV;e0aE^nP)Px$XGugsRA@u(SW8O8KoEV^eh}Pv7QKVG5Znsh#F$J^V!X+KTfv2R2j?tq1ksr; zaU@HJO3@Xxsa}SzSM@##=_VAis1P1-B7eQcd&vc?`ao2*>V>LwE$RGp2!Z@0wCNr&vEp>%~OU zynn%u6VoilGR&$IX)`&IwqH%;#xVOjG?h5MV~DU+om~4uQ;FvjZ%l1p9FY$&KQPf- zF69RtVm<`X1%UnUXQqx2_>P*JDmRG%kK5axLDv%y!9CLF6~&lxli?Tx!rp>`OLHQd z;hA4Sc+X7)i~|rI4Y;P!%0B!SKqsyD_UGb(gPjD%Ig7URel Xn2DP+Oc^+{00000NkvXXu0mjfsJXe{ diff --git a/static/icons/collapse.png b/static/icons/collapse.png deleted file mode 100644 index 87da4bbab1b550f1ab810fe2d3dbdf220673e310..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 802 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 A2><{9 diff --git a/static/icons/countdown.png b/static/icons/countdown.png deleted file mode 100644 index aa4bf1076134c0f157d067d730b4921179485b8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1527 zcmVPx)u}MThRA@u(nO$rYRTRhn=k8Kk8X_(12Ott+3|R2RM2#tdc6U(|5gyf$XrgE$ z#+eop6-B!!D87{L5Wt8UjZt~Vkci!BO9Rnp;uFQ7F$hg{zXWF;b%h)mHA{J&Bwuq)msSZ)Sr`V?*G zRb)9S89TakU)ag7Qba;VEOFx@Mwgz9YToMW0unT0BLu2(5}OJ;gD;wzZ-$e$QbdA= z)la~kwipxEr#N%KNq92$D(PB70w3oz=yX)`EOgRS0tp#b4}g_f5azc{-S@7O@MP=( z!`dQ%f{(*d&D-Rprv?&Ai@JtdG}$IxmL z;+vcpC)1e`e^2Y83r^zY*qe5qoaJ`a4g$y@a9SPJJO`b$lt7xoC#&7{wL<{z$f5wc zsd)`2@pA0J$dFDXI`V%0%A6ba_k`kTwg*Hn6yY-%_dEZoVqBMp`n0T`k^T6-Q2E0v*;0K`;v&1*Q+9x+k9jPP0+k#cKJU3w6`e zsbd7p%S*>one@uu)_K1;ySn;_rd?;2xLMj8;>kz*&!oF**^v#i&a3K{6cJmr*@&+c z;7$Uj<(=BoS#&k7LN;d3_bwiIzWIwuXjm;R&{Hh!=>nz3}TB1Bi6G-_!NN1 zJ4;9sTVrQuxA%o9rLusf;l3(gy{A9T`bwDL(2eepfP?KbV_DY>$+R#A1yT!h4GUDu|*m`h|jF9k!=KexhO?c*OOrI z?!-m0_2_G!e^e(;G_C@YORa%M;i{TAwV01H=oo+_%1N=ZQfvI{my=RbICdf4 z-WOh~`1<84e_ebN5x0$AqZv{Xp6}AUpOp$zGRW8uqMbStnKfP7+#idb+usRK{p|bQ zEbg*@Pm??yKX>-$v7iBC@Ie8WedF}yK8SRQC5K8aeM$luTcR-Y8IrCQ(bhSmB}(Hb z@tM{CVha&o0J!eTou%{4a$h1LwiUmng2vefLdGspW@llT29hHq_Z`{1aB51FV8q%@ zgj`uYLDAUU5nn8b4-(<-Yo!JQze{=P@$Q!SCko?&k-=sn*LOg!x&~-(RP!j6@Fjf^ z$CmM6Y>(>REro>y+WY5|yZQ$LXPXpG4>JZhBOdD7IA>rK#;~>%@J3;yQb0rR^)BPD zyjY=sIGrrMSWz%ynM7!I0w}gKqubOyL4er)-M(1Oa8LiW(6K2cDoSU>zUsQ_Yloi)=RG>oCA1;kgSKorJiSgz~V{iAaOM!ZFUcjoPX52urUm7Ay%$oS?%mA|L8 zZnXIjG_3sqmXrfRj1y7a`($D6^7l{GRoB+o&4+AzHY4TQ?iRmeA594)RMZXva44#I zA1i0ks&hhybqGMA<-y-IBYz-#rHDB>$ zn}d@ExzR1tY3yDri1%ed7z3v6b$k;lMdW5SvB8{*>ORN6Gn7C=hGjR%9L1c%U!I*( zQO)D%TL~l(iG>B>^&9>l33G}GJ50^j=Clb)AWkB;g1rKAD@37q4V8#gA~HogP)V&R d+SsyX{{yZcOHqaA#n%7;002ovPDHLkV1j*S)|vnS diff --git a/static/icons/cuti/delete-active.png b/static/icons/cuti/delete-active.png deleted file mode 100644 index fd5b99dd89071584dcd29ed01c1e0466b482c36e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 551 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zA9}hthE&A8 zjoR&Z*g;^9agBqJmsX1oi%E%sR>sNrfTxODFF0#g1jvcj3q}PgzQ|xuVh6GYh*a zPxsn9FMPg9*!q|aK|afvu2lK&KJbWxO;mHCe4$uyLKy$;*XDi|j3+!BPPuMSKf#;N zIGrI(W#j)Nd)(wLraYM;_cPh^PEF5bhO2c2xeOCIJUMqBi%zh~{Q2ASqlm)Fq(U2Q zke!kbE}6L=wctItXkQPv{#J%da}Tu6VR>Bief9T-pDbJJ5>#C_cX3AVd!@YUz(?;u zhA@Wc24jWQjOr&(E1rmMxW3?(R(Ru1_5#62Y9~Tx#5I7S!=}yYqR#pbK)4|4d1yiv zBMNL>^R31+4k*<4XYT>shFs5`X#&OK+y2P<#_bh|g4; zueTj!Q?khb3fkth@&3OkIlqk|zOO)F&Y?w%6(>n#U*MemFEZ(le#0)-eV=uC=S^Sx z^-)pJf5m&3gnl#E^C#r^T&c}pw|8lwTNcw2N40(#5e5FM-6d+;3q0bL`SsQ`*o5d` enz?j+gTJ@sZO697n!do8XYh3Ob6Mw<&;$U!-{D{Y diff --git a/static/icons/cuti/delete.png b/static/icons/cuti/delete.png deleted file mode 100644 index ad1bcf904b39ff53174e04beeefb62c8bd2cc7c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 551 zcmV+?0@(eDP)Px$;Ymb6RCr$PTDwleKoGpWA~ih~Ei`l>Drh0n+5QB6f%Jqv`~sighZJZ@g`lH> zmWrM_#VxW3QWPo5dDoUL-K3t`ThHz7?nogM`Hv$1eggqe0g)?!ClGl7pb2*V1e|l1 z*4jr&rFrkKs;YXDa6>tr3gDbOTYdaqXhIvfpOpwNLjF#gNPr|s&UZ#O##n0~nE4WRZU%dyc2T0SDLlW%@Qxt{j5>@2YNQ3}g-EK%+Q~;g; zdVs2rsmN%8f5r$?Af#J&g~1fS6u=ZvHF6ahQvg!{V-R})79nhcScTyQy4v$Y;=&8S z3&0Dg)_D~fUI1PIUI1PIUI1PIULbBSkY(8`GoOU)?QLU-=q=ClQ%zj;B9vv>jG1pV zNl3Xwbf4$>M9QyuY5|;cht}E;O%hVB_x`A=s!u7u6#?oXNs`Px%Wl2OqRCr$P+53tUF%-w~-{~79^9+3>EiQ_pD61948;YW^UQxWEm}F5DMOndp zqE5zF=nDuQ*+oI6JI%~wnxvEd+fFCn&zy8%N*MTy2HuYhkSAc^0(lDzd;s!~VBP|G z3k+N!Z-IdiK)ws)EwD~oKpHy%)QDJ3>7A`a68r6=5v^g!;Zg^mFIG ztL}u5Jb+O4C=tFKF!DQEr{mqa--BcU3N<^}zq7^Z&q-}B0eHE}_{IQI+vfnT>@SkAb8i*;UZ!S%`RN0BNcnFmEheWCsMPs%s#A8Y*NNy! z$arUfy$?!{2twN%1UwEM-w41Lg3$IR0gqycZw$~Cq0sgg0}o?~Zw1g6q0r@R2HlS- zzBNEo1Zk=}V7?byd?x@`g#Bp7R*dnT0h|zO$^k5WZeM?R_jkQK7GHXcT)fWU@m?n2 zPg_HTDB`^WG}sQ&#Cr#DK!_^77l0as=;C_=Sbz{^e6Ik1Az;~G)ZK4p?Z3gxZLt06 z!ylOe!e4{1E65WN)<68&^8|#y24Po_Cm^hU__OB;2!9R2t{_i9SpV>6{{_dh{Xv|k R!b<=E002ovPDHLkV1ntHEA{{Y diff --git a/static/icons/cuti/done.png b/static/icons/cuti/done.png deleted file mode 100644 index 6aecccf917c3e074ea3b355d2e081c623b8c0091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmV;A0&x9_P)Px%Nl8RORCr$PnOln#F%X4M{lhvz2Ny+AlodtshN38}>#iu?P!vT`6lDeXq38ek zP|~8XEIZTbPI{6|XI^_Usqd>(9mohK{*j6EqY9`An7DyD0uv8FeF@ePs3S0O19b!@ z9)NlZ)Dc*x5m42ch#YI0X6DPaHVGhk0>ICI;QPK3)%!3*ziRNaL#R-*@rRUvll?}B7pZ}!DlVNId{p- z-i-;LtpJjj0lXa>K1%_rdPPLutO7ne0VJ;ic)cq4K>|qbnAz|7eE!h)(!u9@s(MXC zUabiAp+h97>TMBuniAeyK>J0K(Ik+(1K>$&_+A2HNl?|hBJwx~ z_}&6SB{=8qnb~eG@Ph;lm7uEkMdVRV@Ph^PmEfFvU}oF7!3PQOmGE~Hk*yrzg9Z3V zSOVTY>b$q_SRed2%C&gc5xJns5r3g|Ho*}z8^;2|L^_)!Ebk&qqy zXabIqkR|-60uD$(*I(4ZXIa1xL^%cn_D{aF3P|39#0As@ByK?R?P~&(w;*u=H35km pkbL`^faEPmTtH1g;szw&{tsxG6;R5^Px$1s{z>A@CG6nYp$2Kvv(B$y}LaXVb5{%GCF`W zeskNf2p;jH1EAxv2%hny0(i%}5G-75|7&1goJM&B$nggdFtH*w!NKu?5u#2&u=s!o z(EudIN81FY#zz5=9M29QJ)RXnLp&RRmUtEbP4U42w8aMn&=?;KKx=#u0L}4(0kp>t z0!SgA43J7Z2_U6-Z-CU|y#P{-M+2l9j{-fZ%w30O9ex01D#y0F=b@04RzN51=eQEP%pz6ae>|*x2hk-vr0LK<@Kr s0B&LF>*ooOeuucPFHZosu=MqR0mbM?P*v~iNB{r;07*qoM6N<$g5uroO8@`> diff --git a/static/icons/cuti/edit.png b/static/icons/cuti/edit.png deleted file mode 100644 index 29664e86289dc267508daa9f6290f9a0da446c4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535 zcmV+y0_gpTP)Px$(Md!>RCr$P*g;N(Fc5&@_U*iiCf>mlKo`2ycnnuQckaD`i5pEAj^G_U5HBo9 z40*gxhZ#Ck`t}t5kD-s?-Ohi0=l!k%)Ct(RKz#&uJ^*zSH2DaG5FVX#&))kh=iFD< zbsyA8HV4qQ?W_0xI1By(fCmbKDS(Ceshfmg1|SkoMlb<@j3*(e2S|)hMous69bFz!<#(;ROKRFTtq<7{|Wv`?voWPDJRVuz{Zat*#Tnl(_Oe+|rwQju!{e9xn=D zAzlo?O1ubwrFeD#Yw@fA7UNL>(r;q9*N?sl=DtAb^H%_AVeRYJ3DACrq_3||fV8mo Z^-nNamr&g9i6Q_1002ovPDHLkV1hG2;o1NI diff --git a/static/icons/cuti/file-download-active.png b/static/icons/cuti/file-download-active.png deleted file mode 100644 index 03e68f374d1a551814748d2e2a4a17a141c6cbde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)Px$a!Eu%RCr$PnB5J+Fbss<4WK(@4;TW5sKhi#9Rh}+dt`^g21SuT>H|U~@t?@` zxs82a&W_WL8h^UR^%DTV0gV$t2{dj1G(qta=*PI!xNIJRXpW+bC*c492cQJd1JDF3 z2;daJF^D-pbXE~v9D@)hL5#w<3*a*JkC&l-j0YmRR1A0$pC0ESTyqyLJ_emZC=#Dw z6$5yk@gAH|EWR3m0|-^(SpXP9s20x#zyJb^cvb+45ZJ`C15kj#DqaMDAOv>tVgLjn zh=>;jzz9K1yf^>`2%_Ru08~H_7q14O0D_8mRR9?f)WoX;_yK~dcoP6$AgGHs1MmTY ziFi{0D+pBbCntT+@l^c~;Yh%G4FIs-0qgj1fb|Yo$1ifgc8s@Px$Vo5|nRCr$Pm`e`AFbqW9o52n01soC{yT)ZA;+muD;+t>)fCEqh=mBVg3IaF2Ih diff --git a/static/icons/cuti/keyboard-arrow-right-active.png b/static/icons/cuti/keyboard-arrow-right-active.png new file mode 100644 index 0000000000000000000000000000000000000000..4e94e049db19d7b470d6e5bb1dfe9eec487686e7 GIT binary patch literal 653 zcmV;80&@L{P)Px%M@d9MRCr$PnlVcpK@`XTZ?O<8^yWaY5G*_b1_CLB6oC|ig^(g3L9hs<2p*&m zQV14N3n7J&LU%MpAVok}KTpJC?las+aAaoBAlx0C#k}`mXX}MGzu)}dySd#ZH2k85 z^CJt$323;1+yV^`Kpuj*1#$~C+(2%Dh6f=33gi~xY5{ZQ)&_f>TdsQ3)?rCNfX6*5 z5N-zD&dIck>ucSW6qMGX?z1;m+f(cADvOoEY?AR-{ngwkz-ViM*hC5Q=#GvT7Q z6=wp`oRkDn0rg;X@2O70tb_z{0mGT_A)XV6X1FD&5HOqx+rybKeocvv&3Xjb{x#rt zCOiZ9hXNl{JWx>~pk2DZp0LXeUq7A@zKrev0sJQkcyR%ybiYCPECnwrz}WsTz<-g1 z7ZcF7&U&CL4KE^~Rl0K`eANKYF2Gp#6TrR}cvbLJz;k<&`~EC|+qkxRIRV;sgnK#uB~29 nfVLgsUQbQ{w{dOt8lQj%p}NFDRY?)`00000NkvXXu0mjfK_eR- literal 0 HcmV?d00001 diff --git a/static/icons/cuti/keyboard-arrow-right-white.png b/static/icons/cuti/keyboard-arrow-right-white.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc64666e24220309d287c5adb7a19acd8b0a95a GIT binary patch literal 566 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zKX|%0hE&A8 zy>-ytB~XOz!~080Q7+vXg1SmwKw^>WmJYFrApS*=@GLP91r!qe`u)oO&rb`JQsR~! zwSE40Ze-uXd+*El8-Gr_CsOh!&}yDM=LFstI~@8Pj&o1QZ?a^vWRev>A^4(#@l&vZ z`+;m0k8{(5_U*YQT_!u7&Ez5D9_Ak!OJn$VTlQZMWq-lFKcTV8izAegt>wREh-6C^ zLw(D1rxk1$mZ ziASUznGOh)@hr^s57nDJmEj)4o2@1fgb(EP%7>^hcw-ctXdT7hAj^PU%L&)xJ`3LiAcl}ywaPmHf(Zki| z58C(gJ8JEbZm7MVKkLFBx#_?99li?wc<)oS-;Qz5(W}=^v#prh@x5*n(-msQ6hOJDjfb~Z7fzSsDjMp0$v&OLdi4`zgL?7^d zki@vXVKwU=wj@m+ouC66pC_|F%PLsLwmhp~5!>;sf+cM2Sp^H&erIi1&bHgj;QNY? z(|=yFyw2H_Fg5e^^jzonlj{#i88H6mw|buUh~c>Pr`U^4Y|aSW-5 zdwbK+TP9F|{lm=NB8=Pzl_ofC5MW^i(qLA~{XN2hIxO6d8w7M(L{2Uh0I@v;Jrp@^ z-KmxMTv(R!KvrfGxB90vwr{bOZw%l6uQuLYy_-Y!f5P$4&Wswe7YZAVm}K)CiiC8O z1KbuoW=dtTy2tQTE5OYmn`PCiDB1qw|F^z68|A)~S*2$E_3D&o%P(epslIkJQ)aqs zf{+};H5CD4ep|&9)(Y9WO^fFVY+~Hf`n_!euR{|bTl3dl>*N^|mS)bgEpZBKXxVV^ zOc7Jew~h(24o=4<_H!^X=u|ofFnVyr3m;mf&SJ{I>FaWz!NKa`W^tC#hL#VuiZ!1a z7Vs%7bmo}dp)q$uLT>`o1c7ZrhxVv8Nj9{sTa^_pAW(RY>!65&;+rqOYj^tp$Y@O9 zo1iywirz%|ErKx&DlKwqv;AxyL&pn7hHugH7;UbX?w$U)v5T8QX%~9~^V<(W z=Vcl?{xKd{=vqA&XiY=$Ee`7?iBajqzB z5IDrEG_R6#J(qyf4!0x4{tvGLjpt&}+tV7(sIbVJ;m1S6nlc8ZN!JtX_qLtq6L9*` z+HshzA?N!y-5YD;)Ax(!ITQ%nRkQotSS}FL8qPeysYzk|@!~&AYqM|r%g?W6xwqM( z_r4edZ|ZqdFZPOivb|fU@?8k{7PGjd;rZQ*5z#NPNPU+5z|=X#B;fVyD>cB>#Ng@b K=d#Wzp$Pyp@BxAV literal 0 HcmV?d00001 diff --git a/static/icons/cuti/图片库地址.txt b/static/icons/cuti/图片库地址.txt new file mode 100644 index 0000000..d0aea0d --- /dev/null +++ b/static/icons/cuti/图片库地址.txt @@ -0,0 +1 @@ +https://www.iconfont.cn/collections/detail?cid=26 \ No newline at end of file diff --git a/static/icons/data-checkbox.png b/static/icons/data-checkbox.png deleted file mode 100644 index 748bdcbe36faff874f06ebf45f135d6e166e5ec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 zcmV-m2cP(fP)Px+8c9S!RA@u(S!qmER}}v448u4qf}n_kidtn5qpeW`TCLWtwi=fPtGF|*tuT!E3U}Yr+FfL|(N_Hf5wKBaIY+rqZe(SVrO!)B6*mcn?ta1%z;b zv<9FCNCgNU;f6H8d=@| zzFTb+yBQPMJbiM+Dk-`Wh%lm~hFbtSz1!Cxu_O6m-MDMx?i?JuSOUgyQ=g>mD#e;h zB5}z#qlsWW&A}GW2}7HfYALubWq8DQ9nD96aTP|t6KIFa&zZzuj3S0$wML~aj^yLa z3zthGI+~FLkc5yRPbAIm=n7BL^9r+o)mtCboFAP-o8ens2Rq$_)px`RfPp3HX#{lz z?2<@aV#WbN$nYV3{V}Nl%Bu8<1u3SgDuPdA+M-97`f|pH6(}Tv_}2!S}_y*ibQxj+Vjr6hCdaFFs18T9*NLDWId7{9QpE zKP42AoxL3zJ$$|hzwOJbdB#VWX``x3@$9uyr0skJt5B;N+1U%9PY8k9Q{gnwoIEc> z#!#+L(mIY{9c|Y{5)Jo2Si6~Hg3!GY7&mG80F%!q6z` z({e#^6&9?>s`lM#?UlMX^0M1RC}oQKFx&yq{{6QDFn&lYSD51Sf6_~#-;pD3`skj{ z_m(5DKMp^}-jjv=FicOS;oYSebX}|fW+Yr+pj0S+(5Myoer`wjde`s!j*OL>ENCuK z)}~)(vS8t=J192`U;>$?PYz$(U_@eQx{oiEHwh3N-Ltv)cGy@eb;l!|xmwEK;BP4( zn!2T=^sXHPUSL#GM!5bAnh~o6+06gejSEI}4|(Mxh4`6kB}n}&jivGGXPG2e#{>6{%D^Uk;8eBBSXAuORpy z23Qn-TZ|hUY&VL?FB48{wmmQeu&VCyNLNj{W9Z3yoT}7lcId--CMl z zng90nR$@eS00#8(b2g-Q3S}d?_L}5FIs4 z1jM^vv5oP)6Vb^F;b9tt2JyRJ6+Bf0l~oMIWmU+|Gs9pkM@H6D+g{)#j0|jU8jaX3 zBLVe9-6F!#s&C^pvl#?gxAFX9fe^CNiihjg)4~7mZM=P0`1g?;{Ry!;_&$OPFjRjZ zVeG7+RPIen=z9K@`aa@LIW(lM+ojcz&bWisM8uuwHHL0eMj9ik?qD`$#GU9hhVE;V ak^cbcP=`^xbzQaq0000Px%21!IgRA@u(S+Pn3K@fd&F`|f-Hll)woxPn(8Y?@&bUFQi)Dlm`2pVk!!CEAy zQ?RxS*!UA(0+ymx3X6Cn8;FJ|cYC+Dkc)fe?wh%J@6F9F31LVc8WJ8bL$VmHE|^`Jn8+BSECE@) z=Sbx0q6KO=*_)4jrOW`l*jZydfv6p=RR5@oy|5~iSNhV}pKQO@EHd+@SRWl5nJVY! z-(_B?3uB1<8%La)yH0GaskYLIy>K9tLtAU@RU4;7D9IGzhlzb^h5gvOL>OQKLQXWY z08VK+NBW7Bs&3ID>P#)>^z`ZW+*>cE$B~bUof!|~jMgj4FCsVYmIb;M>mE3NW@qmb zNo4oxb#f%#Y5O`^n1t)OxGLxkHPIu643 z?rZ&lE=(Z;o0yY5h}h5&2_hQze&kDI+=Zy-GelGsj62>q61SqN`HUl~3dS989En>| a)qG$3mMlVfP~6f00000Px&DM>^@RA@u(m`i9AQ51&%Gig#3L{KUSwVAXC1y??HKCoIhqHR(kphEFc-MbO2 zwz)~Q1vlMmwNOy8VkfQQ#%jgKO4OB55R-{52o^;U)F#b6GOd-g=2`NX49WV=Ip;h7 zz5mTU1dII0A{?lIm`%xwA{9jn)Pc&@Do|rr95yROfY`Iw#BAwa0~(1$;>k#`jHPsz`TZtY5=^7Bic@J`zFOk z&y3i4S46R)zNJeI2ZjC^KyzLI{tq(l7V3eq9^ED52o(gx=oT2i7}!RHbztrX$wzqs zV&x!+&N1T~0dGNAWvE^#kR>&j-C@^6`0P9Z(`6#mfYHyylU2a;!@@P04@Dk`aN``X zhnN~cFqD}A@g*a+N4S!@Sz_L-Tx;p=9val_2(d}1z%MN5hOjLb`D@;J` z-}5!KmO}MSqG>K2jOi57M951}?lRMB0uu;3NRqcT;JjC6Ao>decCnQ0fDNSZ5HntS z{Oazq0U7Pmx3Udy0R9q%T4xmQK;#pE4HU=r)*kg;Di~93t)S3v0yqg!z%86Uqi9X& z0Rp-J47!DS%Jd+^7e3TDs_jPim3S2DkzVz)QS|*zeWT3*-EiXQY^=`Pw|OQRjA;~E zv|MJs;Qg(F}w878L9!SW^fFE*CSj(Q{L=a zw|<%w3}m|W=I=*|4o^V6VNMXSV7XGt^ThILG9V^ppQ0#NQ(1Azx7KpY^$Ln60~r?V zNN2?*2hn`tK_WVlXt^mZHjNdR6eN}9rUFT4#U%w93q-caIeADzPPYXbZe?@WN4oXn z3b2eNgOg zavIPTySQBPRX}p-Rx#FA6e&iRbIDOrB$sX#W36Qr`2+R;pivlgpN;?k002ovPDHLk FV1n7zjbQ)) diff --git a/static/icons/datetime-picker.png b/static/icons/datetime-picker.png deleted file mode 100644 index 24753fd1e5160041f5506fffdd5c38e85d838d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1779 zcmVPx*tw}^dRA@u(SZiz)RTTct-EFHtF^KKVDiFdCqhex2RH*F?D1yf-yG4fM`?%L92FWQTZXLLGhI+(%l6?d?ad!4+ND`cD4k<%Oc(GJ!ZDM?X)cI zEN(Z3bpFjfXU_S)^SJlSC7dP?ohCdmK;-|H$$^XvWTc-WFi=|Vz;0O8bY2k`eFC5i zpxZS=*_x|+d>lt#aATlcr^}~E6C@&d_gzQBC=BGhz&t9APwpp%}}q%O2o1sC&FS!Mxf>@Lm5$UA{$q<4Dp>Q?|{G< zW)^M$M3@55W$CpTGryS)AORCVq^D&^n0aMSJtiC|f_U#LL)n=NNl&E}4mOV@@->1m zCKuzUtjjpgkay|kx$k?m;fY8j6kiMQZC;J$N$;RY`bJgOmL2h8&l8bw$UaKIV3)xp zfL7Og34r4Cdrw)X8Z#FYk)!Jjd6I#@GeWm4vnH9QPBN9x^F|~RvbobC_-C0Yo;vxS z;d?S`kvuf}_BC9*zcs!B!0aw^bgOPEp32KpM%+Y%q&bx}O1(Qu;h_Bz3CvBcF}~JJ zbwai%Mnds<053_)nlwWl<<^S?kCZ|D-O`mpx>+-ob^VeNVwzQDDsQ=sH(K^|LHMAf zVrZdeC{JZ`zS)Xho+NS(%OYkD>Smy}r(VReH-k_C&_NtOc9C}P=vcvsIF1^vmMRE7 zN1s)`j)*!-@dTj3z2iXQ{6TGd-Wz}K_(V_nriOi`Nk88rk{qq7QFeJDk?y&^Ro$hP zEhBwf=zoozdjvp?hz@6i#y~U6wmG^vaz{3KIM`f45I2z!<0MOkKoW!|Ft(8Jy<1gX z_S>maJ{2Op`eNqwx*52!TMsqFCkh`g1(0=g=_n1768wQ=eq^#4_%l~Rc_#wE(hRjG z1Eet+n@55c5#aL%jt&9xZp{dM>`lKz>lBF4CI+%MAt(2i6qPKVFmrgS^deULNf0k| z17aWv#`i?{orwI*d@+CvdSFSA#4S}d>PKG5;}J|)@J~AoaFSHpL|bO zRG-uA1{iIKU&2Bz0ns$q`r$T7mrn7xbM*_6PnPW{88Wo=7XYKvz}i`2re34IaWn1k!=7{L>O32k{2a>?T4;ik0yHqB74EOr#Y7vGv+%D*_+|06@P?@pYLjTnyDMg>b}4@@@{{dsa@^F%_5r}uS8NO zZ+aIw#E^4^q|Tiw!R`M{u08KZLdOqPI;zgS)bLbPfulagwUws2wKp>1kX=i_>lt6n z*s7cAL@xpGL?mk2HWQTI4br=sq1>L)iLA0`gHxa~&oL?G6JCHn*+l>c56@ zqIe-dP6=f&B?!KWRYuu&c_R`D#+E?PyuJ*!wkL*PH+$rPPBKJkV}sl{D5u*oLd!7kEe_{L*U@j(jXD;JlW{a;7@fUaJ}2>nlLwTH|0XY(aniSuEyQ^U%k+DX7X(R9Sm}QgU11^I`sphCV;;Z zL~AQ&DIfQC1Jj%Tf)V*ILGbeJ01+=yDx}UpMhY2iFTMsc;w4Ij)EUS~A*1cZ*T30? V%28uzHN5};002ovPDHLkV1hX0Q40V7 diff --git a/static/icons/drawer.png b/static/icons/drawer.png deleted file mode 100644 index 73a98023a7ecd54715176e64204c1760fd16611f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmV;f0#W^mP)Px%Xh}ptRA@u(STSo9K^T4C-sKX(&FvmU)GlCUDcFc8(Z<43tTG#xE$u`L#Uh;| zcs5#CoJ)3sA>dCCjOi`>4Hilw+=e>|Y;;Bz6oSN^$>ip8-p#b%_r00--ZwKlOBjE5St@jnSQ6G4R?Cr{EW0C#9s}@=XEH17k(3Xb zQS?$(u0V>H^A7}Ev9wSX>}J5&RaKG}5!vbZd82X5lTxXS zYQn?B1yL_3ino*`Wk*yFEg~wAQHW0-k$#$<7M?e2qW(`Iw!%2h4^u1Cbf#ac&H7Qa zrBkQnNY43F0QUgn7i9sWC|F!v*I86I%NP+o2hb8iJZmj2-B;D=64?bXqXMgpOZh&C zqH9$--`Cd87JGZIi0I~@JOYX)W7Dd+b%~Tp-d2HC#if*Y!ze0MK5%q7k4eflh=RWp z0>+fJbs6EAxeODI8OjP8Tf@*sx$0Ql(OBX z!?1ZOj=!o-zA~(nWApRjIDZET z;9-lg7b>?WYqP7=7=^fVWE5Q3zXs=sbHtJYuC*))YYgigF_z9!p>xENu*R^z0J1^P UGsAVEr2qf`07*qoM6N<$f=h!t5C8xG diff --git a/static/icons/easyinput.png b/static/icons/easyinput.png deleted file mode 100644 index 569ea58079e845a756c57fa2af704d8d12810e28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmV;?0WSWDP)Px$i%CR5RA@u(n6Xa7Fc5~%MS>1gMM8oH0J0zkb|#Yn33eoSi9P^Bo`!+FFi^tG z3=<7IOdvH91Vj!cQcx9w>zr&0tjp9YzO(=TyGtAk@Z=Jn=l~Y-*GMuECSu6}E-g#O zlG8E~ign|2ToB##ZB{G-9B#Y?E&`UlR9wbNi-jl(4*T3lNE)cRQi(_0ko5$+L7Jz{ce!nPx((Md!>RA@u(m{Dv~Wf+Fv_q1$~t=oVI8kr#hgR%{;WjMGoB;utY#v7x?p#;LZ zo-u|bOOP?vu0x2(j2dr@h$h|$33vmz;kB$qiI5P%7%)P&b^%6vUem?Jwyd1fvvx70 z=l1*l_xqmj{m%NCru4 zl<{!7!(AuvNzsfc&(#^^1jS71rs=A8OD~2 zeqXc@Ek__r!q?{2rF?rxwga+%nG5M)+FVXZ>W_Kid$0TJ?>LdO1!?FVT~CibBC*Vg zU@>zfTv3W!qn)*<>~w8GnnJMzfGRto62`|z0(I4P`nDh|`(hgngC7!l!cMH%ae;qA z+!`@!zO&P|1xX7m?Y>=CUCsRf-XUPviOw`Gzyk0|BB5PZyXVK8=s5zJ5^C)Ido{hr zAizc^;_h-3QPOISbS^w!$ohgnCWQwzr*UjFKxz-bd4&{vc&_e9+#9K>4WX6y3)L+g z6}Li;L3+;Vv91>Wm0PGOH2ONAFn~oanz#wj zKN6_@GIwphdiiSDf&_=P$Pju!yaC|bJ4u-DujRE&!G`eY0!n=l-gI*BO5d+Qd@iyh z>aV?(srA8G)z9-H2;db6Usyz!*-YCHGFy=TVWlr}|4myM7tm8NhW_m@@m^*V&xYbH z9;5~dJdq-W;*Z zDGO~KFYx;;ce+)kz0|R*QQy?i}Ah3oV zGX_Zu1kY)e;lUvQYjXt!oG^$T{?)vk8C!8+Y{eWSb(G{fNoVd`o-LPl)?CWW37^+; zOE^ei!!(VawNlt_w(x=-L^^KkNTx_|Sepq12`tGH7w(DZR{}ledX8ttnu24`kC-(- zW$Bz!6|2!jp&dkJW=z0!0jAl^V@?33atZ>ObmwPP8FB0e;GeFE^yhB-8h)LxiT)wI z3QoSv^|`|U5Vm~SXFiub3@1PZgG`A&Y+H~xGjSi=JJ)h#D!=!vnkwetkc4$kx2F>T z*N)_h2ZyzR!~lh-bGAs5z!58ngN7G71iZ(b14G1b657mWo+za0>2h5=k}0U`j5F|BuxKm{^7Rik~xwq z92!;&gu^6OO~oW!0I@C5%&Z^6V!;&Ek<6x!AD8Fa5^RCc24bN8I*xAI#8j~w&($dz zNU0jmr&|V@?TOpfD?4I0q1ld?9hvQk+tn*OVmG1Lj+Y&o?TOpf`v;;-n?iW5(*Xbg N002ovPDHLkV1ga&WIq4^ diff --git a/static/icons/fav.png b/static/icons/fav.png deleted file mode 100644 index a51153c9b7763baad278ab6d1cfaf9b4a6a7d8c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1480 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 diff --git a/static/icons/grid.png b/static/icons/grid.png deleted file mode 100644 index e50cb7f9e6ed089d521a8f2916dff38f3fa072e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 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 literal 0 HcmV?d00001 diff --git a/static/icons/linear/index-active.png b/static/icons/linear/index-active.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6744bfb137c1cc3889514926185a7d7e2f516d GIT binary patch literal 730 zcmV<00ww*4P)Px%lu1NER9Hvtmdk4sQ543%Gomx8=pWF9AO-yg6y1oA+_WINPy|76p>8TOlZ`~J z53J&g79ZG2tl+|hF0_anp|qLN>Po6>U5GT|#=VP7(l|#lGqHKhB$<#9#NJhMbME$A@8uIb-XQ9~-0gU>h z--s!dP0O#^foKaLt`^3K_+}*`I~cVx%A;xlp%)H=`Q^$S-7pRLQY(n203w;+#17pj z;EGXRP^&zLmR%GvrHH30i` zdq@J!f!VKW{=kltv@+{IMiH;X##MU@5$*su;Fc}01c^to50tN!n7;r*vqu1W0q{n5 z<3x+uDS1aH!u4x}UVIOBcDY6{elg+b8$+4(4E9G{%bz09V*twl)&ewc8uHby0BD6P z0FM))$c%Li=bU8>xDQ#)5ePkh5{%OTZR-U9z@Gr=b@j#?ico0wTL61{1Aqn7Q1({4 z8X3SVEOxJE{V0`?TbPdJ8fw5l0-y^3Ld`FNXnPOX&Op^t6mXy z#{nOpUPy$@mtjR$k6;yG)q(%Y0l<0Jc;~77R3q#f0$lUddh4a#9lQh0`(QXg({*k1 z0@a=XA=RP{HzZnVV&N;9>4}w=Pc&^t-RS>Oal16>@JFev6;^8f$< M07*qoM6N<$g2et!N&o-= literal 0 HcmV?d00001 diff --git a/static/icons/linear/index.png b/static/icons/linear/index.png new file mode 100644 index 0000000000000000000000000000000000000000..95e52f598f822e1cba5e15145106bc77c5d98f74 GIT binary patch literal 692 zcmV;l0!#ggP)Px%Zb?KzR9HvtmOG0SK@i9PHM@$DAK(H(4)hBsnuwZsAiCS-x(I@Snw$ui$f@T8 zPw|C^k4yyv0}XVUsa_BcBOj5R#u|v+iix?IE?qK5?=kzF*=3hg*okIpx~hKt@9M55 ztnou@oFD%$fH7tt5zWO420?H;48zxhs5y`V%sdO=PBNjYUa;2Q>KCFffI^`#5d^^k z5gql3z5}QOnDpNj=iHfUwfZ9~NM?XyvA917f_nhA`ryw*Hjb0^ZC=2N@cklNLPSTsdUge_Xxm5tK@03GR9mZqRW2VPXIF_Qt9N^ z5rCPm1GwlNegil!BKOl0cUY3=05*90f{2`LjnM>PjF}{&ct1C)`U4ToL{apypX80P z%)AA_T>uASo2oA7a=EE648N|{Q{$yrEKUVM@DjjAZ(9T0E{tLh-e-_yqxP*^_;bK2R0PwD@e-p(=b=PgEs!d0& z_uuWCQTCHCtqXQL2U7ep0mN-GzW4Wf+5$D2ST83cdKyL1@t(~nZRW%NpXpjY?4Px(AW1|)R9HvtR$FWoWfcC-Y>Vp+Ii0TNDwk*-ZED0>l7>73!-&} zJLc8CsjaVy%Q){`j1c{H&AF=<{rPg+*%G!wfMU7JK-?dw^^N3B^;%T1ou>kfZ>T$K zVP|g{R+`4o6~fO%ujcgR+DQWDZydh*O#J*IfEN(+^PZ_~ttX(7dpYBD5#t+x|BA;( zwPVZgJQHTPcx3zVZG_lCFtWa>b~HjB6`Qafmw|RcxZ{+r9;gtIu(D4u(JnB5=bPFy zQAr!YDOUCe5G`S%r*nF8M}+|8-(unQzM-vdgg7czv7C({tO`2I*VT6`1%w6lJ%ByF zp%z;wDs?oRY&$;%?ahSloUVRbA)wWEI|X<@7{`56y&)Q9V<_2jP7q-(30~x-w0#u< z=GcG8F^v1gmv4B6`cY%_wb2RNd7Xg|1Js3C@x(q(pz0tBUM4cmkIZ-&;G;~UJE!0L>r4d5_RzfqX#l_iBJB2b z^^tPENuxMnWfuyf0RlP!j50}GIlaANen%CQu-(TQ{562t3=B%lJ)Wr@swp72yuNR! zwK*?s1F*PI6HL!}W-@q=d=%SR3Se{5V9$6Q-D5AP!SB4{OuY}J(~>-|>nj4DEn2Md z4fWF~3gnFQ8Zin*Ou%;UM6w5I64h+$u4Ibst^>HYV9flUZ)$JX5~0}HwEz_c8G}F1 z8QM#=@O1?Q#^nyN;sWZZr*FAK#Y?VI7Wo3Vg^K(U+`LD&+K@eYo~ zR^*nq{~bKFeDZsX6u+=J+#?EMPkDxF)pK6NMuCNxM8;jh%wGmU2}X9lxp@U9#wo_= z2hoE7PO%VrF4a-^(L_0sQczCRVmtRspgw>*K(wEkDQH;+TnVguhPF3~;}WJ}0fn0A zJ8~=K#U=oEhZ*60LLz-SlXF@E!gLJX2$nW6n81?mo5|ruzI;XzC>aN9oVfNlmDa2O sT)=c3UTQP#6kHDH4Y%Rta$3&w5BcVWFo~9qq5uE@07*qoM6N<$g4>G*LI3~& literal 0 HcmV?d00001 diff --git a/static/icons/linear/quest.png b/static/icons/linear/quest.png new file mode 100644 index 0000000000000000000000000000000000000000..2e996474d7b061fb83b28f4b0d01c89e9ddf55b8 GIT binary patch literal 638 zcmV-^0)hRBP)Px%I7vi7R9Hvtm%nQiK@`WoZ#FhoNlX+4;f%W{BBay$QYM0hf*=+OBHRs^Qm_#t z_#c?fB?#IC5mE{YHg{H%B83);Y;vR$)ZAXw!sd3L%$^(KUChqpCYQ!-_s#o$=FPkx zLpb1%det9%6cje6z1m*=bODUauH|D9Edq32*C_!n8q&L@YroyD3qb8iIH(#sBg}*) z?}6#Me*!R2Yf5ioH;2QO;64~LTQ+-uumV7Y8Z!zBh#`a(0417;r_nHgum+&c|F0v_ zgs=*rf?x_^9l#V~UjR%XtO3L=yy;9?F+exKd^1T70l!i7%AGcL05q$QBgDmT#nUgf zDxppx8k%35LLA@8(kE~Zpj<1Cul*>Wd2S6LOE~>MG#69}D8vyaIvZC{NAMp&I|6>- z6G1}YTv+rz^yLnywmxupaAo7x=+BXb_2Y>J?}C_Gr#4Gx*OOtyUp)zdrvN_-OWqSRfXc_5;6qg; zEmZsa%y1@~a_qfYaisF;0<%~K=wT?`dqx1-k{O0aAJ>n4y*>6N%U{or(=36k{|656 Y8^8CAFii5?q5uE@07*qoM6N<$f`4WdSpWb4 literal 0 HcmV?d00001 diff --git a/static/icons/linear/settings.png b/static/icons/linear/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..b937180bd181c8f2829b188cd5f686218ce1d676 GIT binary patch literal 945 zcmV;i15W&jP)Px&Ye_^wR9HvNS4(V6VHEz(KRWeHX6_Ul1iiPRT}bMYh=kf9*s(x7Hr2U>-XphjJ7zj}MyHxw|7zy{&wtMM zpT~F3CAhrEW&0=^fbZyApBVY8-U+z*W5n^~j%mqa9#u2|Nz=KI0Yg=a(pi+S@1$NM zJh0bf(n%*oFX74>)@G5{+=}U}9 zritD8V%(P_0*64DpJ6DigP1nNL-K`85IG)@H2nqu3+YWmRhC)8Wm;@@xB2tk*DW*S zgNg09Q?CN0qGak9Reom42Q>W>18bP@JkilJAK|K=emz+L{1IIxLWF^C5~v>N=D`?u zl95v3c?w_@m>P_bd?W|J#Ksq6evTP!#dQjZ_Zq>9gZT`WHMP$%nL}XIF!&dN?=X3q z6T$N9`R)WFZ5x^BEC?SXD-g^kb zZD#r;z{~sZ2_fcwsVleKon8U0Ey|!e+hB8CRaQFYfVC-U`gQeYjGS3?lcboY|b^)l=uqOqf2gE5JiH^oC0=Z2Grq-fh7 zFdYE!zNE9OGKYxzvOf~r3F1Zo-ytw(IH{OTJSU)(8KFc-(VTf8-0JmD^gbd+H3667 zs=)_ zio_-};RL|G;TXvZHMjqFD0Onb>tngy_1ya~u>iRKX_mJ#hImj^5)RQu!E3((=SB)Y T57C#W00000NkvXXu0mjf7Z$en literal 0 HcmV?d00001 diff --git a/static/icons/linear/user-active.png b/static/icons/linear/user-active.png new file mode 100644 index 0000000000000000000000000000000000000000..af85a90ee0e5bf59ac9e9eb053944372961c5935 GIT binary patch literal 825 zcmV-91IGM`P)Px%^GQTOR9HvtmP=?8Q51&%Gnuv%m4afiH5-LWQ9%VaqEz~bhAv!oA&Mv{Hg?hq z>e{+i!8T)4QBXwPWa*+rrw=TO8$kt?qM)1DN=2clnYNRAWYVOjY0{Y{BSA2`N$&a2 zm;au}5X$_aGUvy?2hh}!*i<1?5JX#t5xoHOyE&61qXXVgD{*y24z!#}9G4{0 z0IV*MEU+Bu+j_3+v2?%8X&_*(9_Op&fwVdS>$M9|~8DIe~Bl z&~%R1%QMC}K8l-tBLKf@Tn2ESKyPHK+&dVi z>3qU%A+9!g_8Eh>1Gu7V$^~}-LPiXXg8;g8O$je2>Q{{rfIbi&>0u?{4uG1N1Zaat zU`woD`LLX5;EYk9l<*$lFS_Qfbrrxgd9z)cS#2uI^wC{_^c4ufC+u1*-Kw`;zJmE8 z1Td;=O0!K3i~wkIwFt}JhSopM9z;yI#Sk|uWN)e<=gdSsK{`c@lYeCpWh^i2D9%8n ztGo-KW`K9ie@`y~9x+Ysv+I)F`f)S~bA#I3*)vs}sFNUXw0;vXKi5opC!$eG+Vy== z04=J~<^dgJ!Zxs|1E?l{BAxrwMo}n8!#$oCM-TQe0V88Mn?Dzh-^R!p9PPEZ~!f8X4FJ zpgN;LL=PoT<>}Zpn#hJ-1n_5_0tEWbKrg`0bxn!cS($%58v%g!5YWxwwdsOgw9Xd* zT7y4!kVk%%I>d-11$sv!%6Kt}b7Pu=MuSH}HweL$eA3)G6j}2+)jyfTel_s`pu=Fk zuV42bbt7@EhQBj$4@5@*^y`|^nFC;?XL#W^o>HN*u6SXmWI6C3Amc!(MmvgMdIbkm zql1Bnqwo?B5fFT=DFcg&utd$G!;4x*MQ6(sSayKlZbVry;hmlL00000NkvXXu0mjf De2r{R literal 0 HcmV?d00001 diff --git a/static/icons/linear/user.png b/static/icons/linear/user.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ac684a1a254afbffbdee51663fe21b1b60fbf2 GIT binary patch literal 810 zcmV+_1J(SAP)Px%=lvTOeS-wl4vrSJVo*%fCoycu0{cj16W~M z*4lJB{jrj0DwS#vg5U#yuS%(v4Fw>%rdpcmG!>CgjRu%H0+NTTrI=1t5xLpuBPayn zW2MxtN^W&scNoCVh6Z8N(@^iYxDWxjLGrq7+fxDQ`+mEK90hRXuN0z!%bQw?iy(BA z_X5zduzC9XO8~<<|Ep!m-1w=f63$(eN~O#&3|pfpTBZLPhVjKT&9QVk9ahWxx&R!< ziHXQT5m`^N6~OW`hQ5i&7|FLJZ+o7XuLe}s1KKD6Z8!y>YDFt!Xq;pkK)xKz9{|Z@ zQt$8@$?k$E$q5m8N^(R*MoEsEra9{S{-~Z~+jd(RhHWC!Mp8dJNp2UB#RUx!83J%D zlgW$~!_ERIYNvY6Pm%*9pJ%gKT?yws5{X2Yh-?*+J^)L!z}$8|0}zkLH=3sTN>37z z!5|0*a=Dzo11xyN5H7HqYIfa|(< z0PH7u#q+!qa{;Dmc%>W9LZOO|c&4Wmd*DAnp^Yxo)3vNGc?8D+4A!!`0dsnkQdegM oVFN_#lBla0)n%#7qNW4<2D^xFFj=GAm;e9(07*qoM6N<$f`f8xoB#j- literal 0 HcmV?d00001 diff --git a/static/icons/linear/图片库地址.txt b/static/icons/linear/图片库地址.txt new file mode 100644 index 0000000..09b0635 --- /dev/null +++ b/static/icons/linear/图片库地址.txt @@ -0,0 +1 @@ +https://www.iconfont.cn/collections/detail?spm=a313x.collections_index.i1.d9df05512.6a6c3a81XBC0tf&cid=47880 \ No newline at end of file diff --git a/static/icons/link.png b/static/icons/link.png deleted file mode 100644 index de0f33ff66f431a1ca89a2c6cebc8a16fe8962b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1670 zcmV;126_33P)Px*KuJVFRA@u(m}zWORTRhn=MC-5n<-lnO$hEHYWx5Z)C4~OB8y-qQR92Mi#>dNz|Aamw+WuTkX7A?=i2n(>Lw3 z@6FgDhV*@$d+t5wch3Kwcis@LkcX}i4vc{O-zqs$k&%j&C<7zXDkiaNI6e;!t`Us; z09*$~IfyS1a2hNfM67F1uy#UcF=tNT%(GeBGjP{~0W z!ul$bu#Etx?ZB9tFa7pw?HkWdN!Z;}QV_L8Un961!Z9EqhG2k+@~j!gM9sk}XN}#; zlnf*g)oU5pZiZk+iiqD4;BAg^?lbrTB7H|3p(rJFEahdyAzQF1~&~J2Pa2UX?z3U8ar!M)1U@ciTfMEymwCR|N;zckA7<`dMYFWrP<}0fp%wKGQ{Fb$pGVk+8_4^4pV*2fepjVz+ zGLS$dp@76*07lu51gl*0LHWmu{t!Ju(VukY_(WBmlQst#h{X1SXhmPMz`L3v*Odgs zA5HiOya(W{c11?IGgR&TuD`>45DcUMX{F|MhRybBB))_RtpH0|kPI!X5(PjQ1EoNnRz0w*4HmC0kU(?S3^*hsSW`cz zP9m{Lt;(I9)M#q9K>7dyCOO%MU?9Vc$3u#|&2ExyR)k57CQdN;F4MuCf=4Y3DP_lV zE^8hL0;L4gYE5zG+=&fM9k)2k%8j|IZ=C6Ys0%6b&O#t;fdr!Q`2d@`2I)j%o}Eez z24Of>BYGVZwweM?3xS72K6y`}5cWVK`c@FKeVmy$Xo`E2*;zw#*K~47N6m5?3c}c1 zAC2GaAe;fS$7sh4t_^wJO~pXi0`W)VX9;|Jck3kTipkDvURgk0W`}`D>{XEQVU&H+ zEJ>@hrMYtIA7p)NeCjC1f=oJdG*s=$4vNLVSYGx(R5ya|)$!*+uRN!}qlSpSMj~T| z>VEPcN4HzRpd`| zq!;d*Ns{y-0TY<{%kvk`&fBtfM$U}&Um$EsEA~5qdcOyb1-YI3=Ybhi2@E8_cvMs5_ll8AA$x2|tM5Q2e>Cv~ zAQ}lYerQL0k_4|+eV)^W1XQeTfgn9@0=qAc;R?@6Vk`l88W>kYq7)1M1%zXgp!Zdu z>yw_|aCx4hKrT;cg?SkPDJ);5w;riT>2q9|hmndDmao!Vk5r`eIWEk@KW(>~QIBle Q?f?J)07*qoM6N<$f?y%{;s5{u diff --git a/static/icons/list.png b/static/icons/list.png deleted file mode 100644 index 688602e1ed83f3ddba48780b89792901a739b3c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 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 LNkvXXu0mjff{RYP diff --git a/static/icons/rate.png b/static/icons/rate.png deleted file mode 100644 index 2c582066c773ea4db173fa4080ae7a8fe04ba5b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1624 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 LNkvXXu0mjfR%=4r diff --git a/static/icons/section.png b/static/icons/section.png deleted file mode 100644 index 69dffeb24394c15c7194f95b44c6513b55824bc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 zcmV+&0^Px$*GWV{RA@u(SWPbjQ4~FQW-2O3h}p8RU|$vzJ3oW?*!UNUO8f{bgrDFySZH@P zmR(s?5J5y==Sq{732EPZGrd!pyzZKN?#DUj-sz--oO~!JJm84@Hz%DV&JiI6+-eC4 zo4BlVB(ZctiAIiW9yShy`Wux!-w(C@t%)!w0HR5g2^jR@0q;62Gm0QC{@}b90;}$K z86re;U~KD#>%^-BzS3bCSOaMF8%H=L=DH)&OS$-saBds{O#@ibtxG%3K-~l1>aYwf z0yH1PT@(0GbhUItNyGWr+bzYhIRTZgg0q$8Tx3TF@1ejMq+2$2@y^>ugA4d?VfSTHWMv|^oJ5O<8%!dj@ zS1ZkcNpnSxJ?SuM@*I&g>J2N`=%sO3!`bw8L~PW`0_z;fLS>sC&Ji26vcNh=vQXKk fhjYY6tt_x#k4EP+t9}^b00000NkvXXu0mjfJNoE! diff --git a/static/icons/segmented-control.png b/static/icons/segmented-control.png deleted file mode 100644 index 5cbe60d5b501be75dda272d037dfbb37e93fdc76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 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 Rqb~pe002ovPDHLkV1gDcJX!z% diff --git a/static/icons/swipe-action.png b/static/icons/swipe-action.png deleted file mode 100644 index 204b7f9e0f457fe3427b8a44f4c8243d43942f52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1660 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 diff --git a/static/icons/tag.png b/static/icons/tag.png deleted file mode 100644 index fe8f27deca9bff54b086de49e12b7ea0954a5290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 569 zcmV-90>=G`P)Px$^GQTORA@u(SiMREK@k3CFE;8$Meq$oh}dXrDOd=>Tp*QL_y*PzI1p*^vlpz{Kn=>=9(Py>E8s`{CFf!arH`Pk2Cx44aeUh&bX& z0g09;VV$=XN1UbeR49%#E0r9Apv*)o1WW_Yw*&_80Om8a+q+?@bmL;0lOqkSmkBrp zFzRyXA2n|btY)L=Jn6npM4DP(09Z_Vm?i!)jG`q=>^IDfNVVDqkxF`)6`t9I#bRKE z?E<+G(YljsZ!3(V#C;_$=ycx{B6cQ+9dX%8I{23`o*3Y6lOF$V;U+n6$JMDCEu6vBM|`tuD_ug{~^ zssWfCL?%5V1D?9fe9~5GW2#Vi>Tde6R+|irIU=I9zGTvT>b_`w!M%qM#xU>gUtPs< z9GhOv#&N8+7Zzegv;*MRyPtr|@wA2yea1o0ig|OaSga3ckOW%DV0=j<_o4t4z&Aq`hW-3GX00000NkvXX Hu0mjfcm@7N diff --git a/static/icons/title.png b/static/icons/title.png deleted file mode 100644 index 298336c3eebfd9b3c0ff7e73587cbbb83e0b3542..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-#^NA%Cx&(BWL^T-jF;UDi702GLLE zly7E|o#j!UbBvTb)Q#e-Cy_l8*j<+W2yp@AH6Pl zySwa}^yQME;Chw4B{3ZgH#YMtHRShyKXKZlu|GZYsoW&ZJ#B#<<8ok{Vlv* u?U0^CsJe3C$xXYI4ylQUsw-h*ma|`$Ja61D?#B!aJ_b)$KbLh*2~7ZDNtLSr diff --git a/static/icons/transition.png b/static/icons/transition.png deleted file mode 100644 index 4824802749eb429bfea4bee918cbf6232fbaad28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1415 zcmV;21$g?2P)Px)K}keGRA@u(SX+z}WfcC-wA}?}T9u0z3?w9)$R#l<;yxIWgiEIt_Ce%93723{ z0%)QF+fH>WI8zoLNJLSh0dK@af^u=E-GwMBiGT@8f(CssXb@3^u-oZEciaD%0^M}U zt~0Ycn;6pnvHv;W`M&f0o&U@bZjePchz?YR{NJ3cI#P9HkUCI3T7%Tse#2HB>38b} zDY5EEZ;iE@<1--9W&*}Ccu$coEx#$e>B1nH&;!;pN3xkU6D9V4$KV=(&I7oW!H1M1 zHB%{>6oW0sGa*(weh{Fk056tD{ju?(16U{oZwf_?7b?jmlaN+DqDT1dw}?arc4%psEM z!I%a@4Zx@JoV|BMWOMuV1ln6-_eete9$+7c4uE-ofPAgB;dR~4xh36Oykj9&b8Imr zS_WV;K-cp43=w^bd{;`Y-*BccLfK~Ragy)`fZNM41pEOOpD`D7CA#tKK*cx`l1;~x z1Zpf5WAI4=@0J914~?Xb5`mqN;AB#|RM$1RC`1@UVPZ@Hkq_Y0%zS?^k~-%Er>_`i zLd^ID5CwcfOdl3a9T`Z$a&B8DIo!{kO$>S(;MIz1Y#a!#Ga>2tMFMroLjt2|TCy;Z zf|a=!&4!tN^0g52IyqvzQrff9T8hBIa-0z2%V2c>VxI7$I;Bz|G7wD;Rn0 z3nyg%E5=I4HvqJX8Sexm`qFZ&Woj=GvD|&<0EZRTXtAs3$dRj^YM2R<%+ef{=dK4v zL^hnZ1Mh3!$|S;IZU*CLxfqyCvy&bD#j1D;I)}(+;x7}^S^^HA%KkES;=G-m&af{HimJ!l6wkG;9?iu->E8G{7%?7olWQ02T1dO8&6WsziLh1<>sKyG zr|Z(*#JFOBe?DSU2;U9 z>n7JO*0m6;IsPOh+5y3b+Aa#mXFWBBA|MKvB91R;qf41Sk@<+7@8X*0Dt zpTx_+G!MX#(pxT2dPjjDKxr;(Wft2Nt9CDjBGlpU`cr_v4XVZ?*9rNn53>6eRiE#< zkh~e2&_#6O+Lw|nfN|G~93$elvefypa=Au90P_J_1j3}N``iXl{>s-C!7GAM<4rqq zZuVUttrB?FjISi3Mi6`u*ds~UQXcxQFW#1Jc+gM21uQTN;98RCy^V+USCh%o`SWh| zONe*ny+f)B@vfKNAXOdlrjOpCR2}iIm);;%9r31*-l0?-@vfKNAXOdlrjOpC{0lOz7p-n;++002ovPDHLkV1g_Dn8*MC diff --git a/static/icons/write-l-active.png b/static/icons/write-l-active.png deleted file mode 100644 index 408ddb6ea66f45ec9a440ae41a9c1cfbdeef86a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 602 zcmV-g0;TPx%6iGxuRCr$Pn%!}OFbsf2MqmeCnt8$uZI)=dMA{kBdD0hlV1&|xUT7hJW%)xfm47l{1pK9#3)-Wmbe7?!|$Mm4i01WM=`NbEI9?V$0}Q*T$%G%*g@Ss zS6@AIP+pKM00Vy;bdrRXQdvX<_`s7SZ1f520x0la5*$qutAG%AlmtYF$R;2L{E!qs znkV>%%iR)*fdAb}m|gQqFvTh$1)fEKB>3zCq`_wuAQ3*B0IBd<1aQKa=jO21YX3Eg z30DDbcmTM#Rs5wNhQIO*px`xqhRtvmrc*xxoY zQp1ak09Oe9ml87aV|OTR3Sb4qfL9v6o6U!#(R+4SX=Lu zR|jAXM1a>D0g>Q!3Wx|VLI5`6Q{Bg&15$xu-)jQ6djaf7rMk}|z#?FJ$jjA@CfgKE z72>Y<+7z%UU{hdn(9?2&_NW=Pl2F+7x1tN2+aWk1~KRpydxm! o-xNNa?I5&NHzq*p$mII2A1s@?U;axD3jhEB07*qoM6N<$g5M1LIRF3v diff --git a/static/icons/write-l.png b/static/icons/write-l.png deleted file mode 100644 index 0de27a1620dcdadccf239e1ec1ba93dd2e6a5337..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550 zcmV+>0@?kEP)Px$;7LS5RCr$PncZ>2FbIIjI_*5^I!)I}=4sbykDQ%LTvl3*=B8@?&QQa~^KHvqgdqYRrB z_X$=4IPlo!{IvVyxcDc5B4B2rEag1TJi`Ah#3OaVwEznII_n$>>=c+00X^^>3A^V6 z4=KQb?~zbFBv}g>fu~4lo)9esNWi0nHvqU6mdGYNHntMr0^Ul18+Z!=uHa`2a0fqA zfJ^vU0xaS2?67y#zAvNNtAI5;E|1lntfl}D@OzW|I7w;=@B(ilz!DyTw^w@8Q(!xQ z?RlPZkukEpbteF?vDV8BZFrXv&~u+KGV`lkcM(7pAORmX0;J$W3Xp^kCqNoLlmHEQ zmjWnDU-J`IM6qOo3X$XwmQjEnx?oJHr&dIz4axMk6rZ~4OCazHIbzZHsp%N70xngA352?9kx zih&}3FWtS|98Km&Jpx;TbtoUgrfJm@e355vXYmwTI6 zE-dfiYWc;e0mrQE?oUS zHIYTZGWctDslfBiIh+#v|K0ud{h0l_+N|`sD|hdo{pH)Q9rr`u&b`Aw@6C*9KT5K4 qpXV03glr6bVkox6Fwgka!8(Rnd!j@B{Qh$Z6w{urelF{r5}E+RT?@Ye diff --git a/static/image.png b/static/image.png deleted file mode 100644 index 008a677cfcab867c2fc39586c19b8cf1b0eb9d95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZG!3-pyc<>wmQjEnx?oJHr&dIz4a&`sygt!7} zAgHge4-E}1EG$e)N{Wt-PD@M6%*+Im>FMb}GBq_7&H!>#Qc~bt2m?q0)c~b{03w2) z0agey7Q!HjgzK_zR+tQQx@}32UoZnB6B{QlAHSf6zN3q)w_j9Ta(YHaW`0R&S$RcM zb5H+-iF21MU%P(K$#WMk-G1`o<*V19zkL1n{nzim|NcGTaSsI=wB6IiF+}5h?WLP# zjEMrS4=)Qk3Ow!?P;6dUI@`(oP~HFQMS_Pm?RsEIaCix)v;) zuxojXjr)oU-Nm6gVq)hklhuBusan(7KKut>2`P*7edDavZ2prFE#e@~u2 zLw<5E9FdRw_ryzE0f167L4JsWLXDy%`&QTA{5TIIlR+=*`mq#RGSR}cPxIm_&SqqI ze8B-Nb3x=t_JX1ZPi@;tlU@J4EN1HwlvMxHM71)L``c4i#mw$*?w>nz5^H>U+ev!+ zLF#Kkf$NfHK8W??rl57inE0BR4>b4s&qR6a<8^hDI_B>fOztO)-DsI81eU0(;h5YJ zpBbr@A)|9LU;Qj!0A>HoFB|33>vXwy;` z`;RxyU1>uMu!f8=Jxu`*H>LX@!z`5TesJ)qgv%ku&i5AnaoHz~xQd$sE7~N0_%<5P zZ$^r!uZF%}JOIsKuZ%y}kVIvNXms-IQ}X@e=M3_jdL|!Y)o?HDzx_wQY*)Kn2{*Fz4=mU~Z8Zif1bL>9AV(DZqCH+i9xMTG80Wo*4#MVi#|^b z5J4B(v{Y#5e(^$YYZ(CDYxC98S@|4jrHRNjd_nPbG{}apqU2r!!oyUFsk99Q>;O9@L z#L{KB7ecyN?Ty0#9pNq;0@Q1PuL)$>A50#X1uwhIv`9E-C+mNtQ41{Kvn<%|BnZ zK=W{=v14nv2N_2g2pE=qXJVWrW$WvE$=)Z;$ybQBGkz_;LF7+Gy$Jmn;9>9myqV|U zUy&qeelRjREaIgiLOqRwh)`iF}#iU$`jzwv!xG;S^r05LeP~jU7*;H3ZY)RN1?WUVQf`*|)#W6DrVaoEtU8FhkbJGM46` zpbiU(in50~2d=|7?QqZYy&z7XXx&Na#Jkv0A^unc^LCunDKwxrbAcyk@BhjXw~Cu1 z7&hQ4k&7qK&nCmGSc_6Btx#)CEZ_Mo_iY!KC-yZ8lC+63*yz_H-wG`>E+h3c(7^EH z#2*XHMCD5S+R$ILXP>PyVX!%Gk_vhA({*xKT*jNtWbB~QM){4!Fa7mydD=()K@}`5fk`>*8p3F-ly&0M5sh9L38Kt2s-^ADcbC3Yjhv0QC9husi} zHl?ZfGoi5ihy-G2;22;fAy5BciLWTSy$D(`32PniuZO+NJ*F#RhYSu1+N%_~w_fz8 z+pfJ8vkW*E6=^pNY!_b<*Elw6QVo~%E=gibRm3P@==2Eq z;_}(pN&w( zjv#RtH#agcznJ9g!$8AjD@x^Kjn2TTZ&xj#{XA~+>h6*$0<7UQ=3%@w{PWH6;rsem znRW&qV;tL=YBu|qnE-j~lXOqFP6QS8Z{oEN1;OxDaAq5Y?dU(tKtl67RPA_YDvd5J zK&bh19;c+^0?{1W?kjB9TnpC#w%)RKpKL6d6faZ%a!x4C-1G`VW0TlY;M`eXuzp#+ z1Ms)-#IL7$CZ{bgv^xW2!CepM3|rAhB-v)4Cn=%7E;B{Mr(8t;#R(qNMak?|Y2#)S zlu53lk7ekl^De*Q<+1fz7|5$ph>Fi=(+o9i1{Q+9uk={QP+V3rkSlPk4S_m7d1kuX z4#+|*!j|#Rdh1oEId}I@g3{#>!DJyP{{j&*kIv_OB(|OTwGtgI^fuqnj*IF?f)l!V z+myUDe-0MG`LKz>U}gUsy@yu(W98;qjmhr`3a{*@X7&L)bD{~p`DJ$MZO!MscAi(! zqs(uXXLy+1yWB~TUvT}KklL9%cAo};QXy%lF`uZ=HT4u@4AQXM-_=Fyu(E$u2zSVD z_et9W^##fomwwUUrK>wse72GzLN_}2-GM9WVOWdN>uBv17hfpp51 zUxhG+{n;->X8UB3o{qnR#bXBFf7d$8nf)*nuR9w+Jr@gJEwB=PQa zs@}ue<8{ov|E1A{BXE%~LTvDVTyK+}@%Km<{Ul+dPwA)gcmQ`4+V3BXqoZai%SLk5 zl>B-uJbMboU44Ag;u5|V&cF{{#~OufHR&E>)hIuaJ4GXWI5On7RzL7!m})9HfsE6P zom0X-b)B&bKDu^(c>k2#QR=V+!!Psi{Qig0V;*RmXIm_V8Igl7y{e0As5Mm%@h9K)%TeB+J|^~kLl{*QE|Yd6t5xGw zolv!mZPq?#tKWkI6TI;S(n-mkCA0q__{?~yi;tR+IEF(%>tYi7`ve$$u9 znXbU`b9TD!wEC5(IjcA4a`!tU!9lhy*rN?^+Gpab@&B|7G%}K zN1#a!J~RE}Xn_TLy1Z-kLo`=@v0iQS zPwnvUEk2!%ryepijk#JZ9^2YvDx(AQ@QC>r#q^XCpL*3BqPELoRFLS&`^FLJeO>4BW`l@OEmTMmw(-X1=T>3 zb}?%8k}sSco40E0nVS(&?;SKwVX^I_sW@0D?x(~FW}PJMoDn!q=(_mI zVul67?~VCwHa(|I)2q2sx}8TgyXwz3NN}y!e~yAeCSGy*{X@5hWj3KPUx3ekheZYk zkJFMZa?~X}d*96TLFz;ujTiIdIGH9hjWJ{YUMZdX$bNLYS~ z8md zv$G1qp5eFFDE`v~XD1tW{F)LXWtQoMm6Tt)Bh|I+Qsx#~b>Zz&%yjQMelW6!^0CnE z9rT>v9l4gCp>GhP9yyX2f+we+*w+8O0l6+{=IvSotg=qb2Mo$W)h~a6KK4?ItBK&J zP^kVI{>dT?6`9SYwVIZ^HEL)mhE?Nltu!(`OJ7)|aaqxO+fYJbFYL0iD~a&akAeAo zX|i)$px(IH?N2@m)j*+}c!@k6iKM#-{EZM_lDjwDzOuO%y}a>hXT(`;p+OBIx20qF zUMP_i183yUd3s4p>Z~9!R6>D=L3$E zAgK}lI};0heDh9{1o$m~>nh3LHoeH~9(~LdWuo8F2{miCiij4fdAgH?PbQ5}xwaJ%!Q^Hq1b-VV zK(U(u)@uO{yItjWqAj#l8%Xm%*ThO8SESv|Wa~w~dqwF`37sodebkMOnOuOojIA7u z{z$_hy2^=0*6Q=s*zM0elao7Y>UHX!fu}s4%N1WJhjOX3PX1wb0qUE(VXs9eiQ$=w zL53(B?bMfm?2zR}48=URG}uh+#SsW{u>ILHK~&t{>&!q-=}?zEoPc zRlSVi1e#J@Y#&rPG_A80eXWeb?R@1kmQwSc>u;zSlR{mAtjuRGEF7w-J-w*)dyqJn z6&r|$L%2OAZ;htcc@8%HCK)^m*ksP<<|&C`vmzRTl)|``m>Dmk*ektkb$<2^H!_&r zmSj5|1bwNtmn1($CZ)lmPe7Y#NhR>I2OID1dcP!S*Ogw>;-(e*;Y5Ji=wr!UVk^@2ono$k>3?f(xrpIKd zcjRTFhVV}czo7O{K(LY4U zA(SNXnh}37C(S#wMoJ0aYVTbVlq!KLADMI?cJg!msCrWaNovaw$F<%&7n1BF=!LBFF;(?@bGd0zV1`RgND?o26)KgcXO2`nTZ-rs>qKQp6Zy6D{d-2vF5 zwdPxN4^Y^wyBmqu4Ur45!RKh>T+NvO_%ke1mf`|BbyIEeIQc!XD@P8|PO5)`^OsMJ zF`-UUN||S=wpx7XP6At`hp zxuTym2!DQ?4D1Mdb{5Hwk~(;gwta>Mc+scNYgG7$12D;RHF#%f88GDfLXYUF&+cvn zm(GZN4vID_$dstAOOh;vd0wzh^72B=`Qxkh6uF@CWZaehzX%wUKtyS>H>c;P+Xh@= zl@GYmKN>;pwcmb#D5clshIO)3SANyx^M~)E*?<~BF5hcFpfQExM@hoQ4Q(1(lk&*0 zTlbF>^)8Q!L1s(|@N0AY>@>Y6P2?hXr0MG~o@rHt$(g0?EF*@}VVA;Tl|D*aruAw3J<8kCV_wvF@%r_gS zqG*pHN<&?f4~qE)BQmiauPK8=eSCZjSY9UM!+I6KLUJg?ux^)F_&5jbkv4qtIn6UN zHa7gUI)@flqg}Z%Am{TVIz7QohNw?+YI&0`>qQFu=KE^j?M%+7#|0uiPABsj&Lgl5c_TSg^$}3=h(Ng7eBsguRAkrQ`J;d zK$-h*^;re)H`68j*j=h_H)9=yw;|J)M*YQ%grDf? zz&a~-2$9pfDgof=FA_c~$Bmhphv(r5By+kx`u$c(=o)Boc>qHpgXsRB=u}?#B*8mh z%z(n)mp6k7aqu&L=4rM5b|Ifc*HGKB_r~oyo^Fj4x*DI7-Zqw>L-qj2*Y)$KH-J;o z??1WMtG4d{3d90T7m=AzGPIM0FcSa{yL%N0&1glgl5)CjN9_zTo$r{<$}Qwvwrz4W zZ4SzFwMOm;99BfY7Z!F|9I1YAOt<_fudC~}xf2ebB*!%J%Vp_{Tdmg4vSe@?+~dOO zKscD}hp`gXobSG@C^|df}F(0RY2Avslg0u>5>ao8?X2pG)}MU z7ms5^PS3CSPJa`#9;eK;Rk=T)H8wU>e@)g@5!loJfOlBzBXDL&Z>sqcp_|Q$ zc2bG8T&Q1_HFC#fj69=pferCf;Y_cZ%&kq}_ddI}KVRsjZSQ?o8QM@B>}(KZgll;J z(OB5dziWyZ<<)-Bii7JsDH8%!7{p~o8b89A!Ueq0jWa^DG<;@}pN@7#_H{`^ziOFkKu);9cRt4V*?MTA@{SKdgFg6x0TPc!9VwRm6NmzB9Jb4M-44WZ#?3NrQ$3rcdL$<%h-9dSO^%p){6#6 zWsfZZ#|9C2+7*;NYieW=xG(%fl2M z;4%hkl(9W~>r*a->L{2?$YYaL-3P7dZ#aq^iSgl?x3{i zQ>E$EeaX;RiF4}XIep192&!BVn!^F|)Sji9vK$P)!1-n8%fG1Gpg(983R+9meo$a^ zc?3SAxnq)q1{cx(o*GO()dAgOp+MgeT)|mcZ9aeov-98FQW6?6bPor)BGu8wiMrlu`P@-g zZG5OMX`Uo$Saf7H9y^M&!Sd-E68Dk4JZ;ToSxOT&@MWpXNBczmSRQU*E3fTj*gRR! zm(cd}KPiYgvU`ut)dCj~tVs2vxv`{BoYavO6wkuNiq>gN^us;tJf6wu*KXHqQ7)U5 zBybR@BSQ|MS~8f3AEG_*an?|ZaKLLEfTR9C^Y%9isxml?Kw87?>NS)|tIlc9#rdo< zy8TWG38-dr<7rF!sPh_{v(_JG9R7edbo~*Sp=&V(ief&JWdvLMc-gR=+KW0Tk# zz44@aQrqh?%p=%5%~`cJ-4IBEEkaiP-e0QkxO&#y>B72mrBD{(j>25480SLzwj^NZ z(vQPUFMzZTp3r;5>jbQ^C|x>GY<)AlprVoOIzyO7{Z>8iDQUS-9_pP3v#UkId#4FLk`UCHz@1X7xGKQt@fmMv1_H-ZJPTNZ zrK!E>KxUIXH5~jUV}i!{k@pPOTA;O;xUeL4h`sml;O882rii!7;L0@Xul{r8?8XOK zcI2i!ed(LHYb)(|EQv0rEqc|ROaScHdt~|E`c6cI|T77*Bl0KT_DJo7 zKlx0WE8?1fJl5rn!;NhT*|DtaqwThI6q)((6x#_durB&e3pL|v1k;5fQ;Ex^{ds;fE{Vlxq{PW*h z00s2sJ2QoYd$g_r>-2A0?q(Q7ySl3gOuY~sSORfMD~A+@{EFh}l<4J5a^Tf#BG1KM z(>U+E?Han@@f{O>2DBDZ1r_~W#K#bp=dCIQSu=#Rd7UzJdk}q5%GTTs3S3b}Mv@D+ z=Ny%=vxH+Eb8ojSYaa6=VB_07b|`;lSB~p!%RAAhB~K6bT@oGq@5L3T%wh^IRtfKK zDP=h?Cs4((>Vx%m_p+oT&_ZvH>r)#9Ua&fBhlB|j7*N!5CJ2!D-+&3dB2pGU!d6O) z&soam2w=bCz=J5s;19FbC6>u)?}?PbY~LKP@Hx86ewXwro|fWy@?pW4ZpPcaM+OLW zLsQMyRsM_us0c_6B^M`l+_(lsNC1 zdieBXweC6l-f$nW?

K44~QNbQ4rpj{;`&St{1;9nD-#*zwKzoqaJq%Z_4&L*`k( zMJh%BR|9G~AL&A*j}67mB{$b#>IK^JeCmu}94czm1@inA;>6a?h5?8w*)}3-NRF_? zN4cPH1dhq+I-s>g=A6hSp|x(qfx4xW*|HK~^EXr`#XmQ3@6FQVsY&$~uCldES<&tx ze0k_*Qc1zicxBOz>ORvVN6Lw8o;9;};PAzjtJV`JliHW*E3GHBkeO*e)(3DN)c;Bh z`H}Ns4k+Jk5uw}VaDVxFo)RWRwDY!0=T}uq=|r;KzF+$ZaG8yy)qO4zgc0^- zBe?Wsv54PT;8;sh%Dj3qr$!!`DA!@j+m-Xm#oW`&T<*y_>cO9Ka}5=xDS{Ul;}h7jykLIlO7d5$@aMR}7_%lB(Zh5MxI&H~CHN8O zXsv_eK)RXhJK;#>4xfPCn}bf!+CH5&Q{$)EURh22vOkpUM5Uh zOgF@vrJH+*ojl>bh&1Qs{3$D{2HkOMyL!sE7FcWOofV^ws&$QHk{U@0RK}6qtm5n;f+fU?cjb0w-iC_vG3u zdr(YhaMkv;$RR3PD2?B<_PEr+x6GFv&k5S)&)=z1b44H-e{Btl_7JUY?`C zIfI>pR|&rEb-u}95{bgSg(qL|V7Gyy`3^u%9= zwEVu>6IW4G<4oxLJHtS~Zg0*%cc83;J7(B z5E>Bq{e-nEiO=uDTlP7&#t)SI3q;Q_LtBr_S;@SQfQ65sR$M(vON5y#}c z-PwC370ZWNe{A)JLX&WL{4y7V3H#zZ!U#D6B| zl)>!yO|a=WWDiub#tuq|fAU9`ql*wl&0$V$X8qnaM9Yrq9Bm zl7|mEJqjyxD`~EGuURX`U0cbMnsZ*JP?A90L&)zP8>9iVIO}61pAnv@Y8tOF2#V!p0vK z$;jYle@qu%guQA`@k5d>s=!bD0`f^EMGIsmH;pviA&+ud<>l)uFCIJ?tAxDVj$UA* zs5~|t&}E{q{G)WSfBZ=*+>RL5ycM~fF+d(r#Y=ip|L&Dvp;!yCbI0jod0>s@03)*y z|HtlOMu@!?){UIll_1~y8rcYz1wA9awCH#YovKVg3KoZy0>GUwnm!5eY_~pVQ2VR~ zHf6Oz=xo=ex>ANx3d)SPU;7wPb*s%P)#EH*(J(a|GXFC2@KYuXv8GmVTvjhL_z}z7 zth6O*f%w{!Hs~06L zheoW(x^V7gaww$K;3nU{W7*LY`F50aoxLY7FhPJ{-wy_IuuHNSUu^Wp-~M0)w8GHI^kv3YIwjl7yp%VO}!Phv+YGnqBe-24$7>r zPe+OW!r%-H>UXziqBp=5ubxLSvb0(Q0|gxMLyI;HRr<4PCaV&7OF}?bhraw51){2W zs&5Wj)x_@ocL|OIfg%r1HCYp6d12s3?}_Z~1EzuxoJ)B^o<$c$zte@_XRaQZUMMi5{rFZKPnmWCW?GWww;cJ`)HfoDbKk$Jw{gG( zSAK{AXy;sIaBxd4cOW_Mbq?fDJ$jXV6%87(Mq#lwv};7RL{ERdR_E-cl2X=+t8>b!N2x8*Y%+p&Y# zPB1vt;*;FHd`WcTt)3kz6`LSB;2l2ZMZXd7Hm^8%za$|4uuE-P{c&Myj3)HOJTo{RKfl#mV(HEXe=Yvd=?UpUdNGV4Jy|Hz>9+Y zaG?MER`R;hZ!c-p9DarR+E%K|mv1}UP#G1x)Ti2rvNH~&98AWnubMOOzfHv1$>@OQ z1OtVlCMu~X?6SY)YlNF$+p;L998H180I(l@TL*+q1xQX?tX59VTOr5o*bS@-<40p48! z_c*F1q&}Z;-+MVD*f=&rS?am8@loB7tuXr#x&F&8Ri&*r&yPx=-~GY3`#*!HME%tC zL#`L>Cf67=wY=|fD~v_t9}R9{thVx)fegn!PKm~@cFM8{wI`sECkei}IG_&UTYhx9}%ji1}L+BgA4)*JzhM;bk^5E=KiR2@2+b7pl@2dJL(N(G# zfz>ERce(Cz4=h8lhKo2;knX40Qj4-s3-Zg+!Bgy%P^~Phg<3bM9(OGL3*ozHH!Lq! z#!F98iXKAjkx)bk9g4rDZ4ot-Sl&MEJToT?aVjvL<|)$t)S32LTKY*CvWsfMukkEAp-H zjGm0-V!1=THP32Y1>b1BbH;L>rI`~%(v+f&Q}+>#`xB;<1~bS@shlfGXhBx;3m=ro z0X?sh#+i$c=Oq^dHVXSZ5*p($QJ*9%@4)JBD~H&32d8@i3zOx)3ARHQ@h(J(cD~-2 zNgW2rAP$?>+9gwjxy6i)oxbS%V-%63!6lQ@h$tF}c3B&2Ad>j6@w=HS0Sjh;*i;gh zyV!Fr!B4vMA$j`KJ_3@^x7rN7X|HR?iw6#NDfObvFn#Bl7?$QkJDd{Lld|Sy%0?84 z9J?F~HHtcLET>;0+lRh_YOei`Swl9fx+!0gdj@b#e@@jz{Vd8hh-(FGIW5+q*m8d& z{i6_B$(u|5sXI?hSWQZ>%R|bK&c0UN#q79N;vfW@Gyp!#fUdGFoS^Qm^}s29gmwI8 z!97?FYUA*(tjj?aLncEYL*??w{uA@GU>2UHPI!*X_`Pm(CT-e}aVC9ccc{z3_ThQf zR|cZ*V4!jHEKrv)dlFCcmzAjY*A63KDSIZOoVpaIeO8rnt#ZU8C*mXSy%s7s?FuIMNi5R=z|IH`yrn4IC5XWivm(VX z&FRYhCQ4_C#{=!KiuRUEU_dU*_wtZS(;~0wT(J>(uaoSH_fRHGcfEL$!J69<5q z!>u))U#n6wG_lW&Cc*+akI`xi1~L&q|~^VEg-J^`mHf1-V=(W+2bhs3@i!BC*CdjAk&o7yG;0t)rw#zI5Ros z9p^<2Qh1z_H}L_U-D{nsgmi{adixAy{rY3C&`pHrAX`=+)X10+7~ z86xrw_5zqq+P3Ehx9`QgXo=HtKd_OJ^`w9<;U^na%^Gvd= zuqd>2+Joqw!L$#u0^&;~V(9~J|27&HV zo}~H`!;pQc-(%Ti7|4Dr*)~5(H9vX|P*|wYsf3wb7n}ny#*U_r>8>@G(mG|Dx)SsP zChr{zmj7Px$=Ui6dYHm=pq5kKJ!KIUn*4EHL5`Ma5lpq0>G(}fu85M4b?h?KDTc*- zY>2WUCcW4yZb2bBhvg(Ps{JrAb0TtBWnN|0BQjSkJ6$F^SJb?8YN}3vZVh~Dx3fZc zTEh2MM6*XtC(t1XqTgW=$9>V93XT&m7l*t|%Ta2%Eyma4QJ=(^Z-gie>hUey9_xS!9Xu6f@a@Ob0=X-pyApcoW$S1ifna==A4lsk|OW#uLH zD<(R$PPdf>m~A(8%c#;|H{pSI71(fbB8~W%Rl9~9hoN`=Jc%{FMz#(AP`SDCpmoI6 z;L#__EN$Mo{)ot$k;2x1Vwr*->7Bi33J{SQ$@$XxKImvO{$XMi8v{9}A?o*N=^^6h zE1@%`-+hsqpMf})G~x)PRSDPoV|_0Y)Dp0DmXh`z&>G4qFze0lij}SpVQ*<;u*_x| zFAVQYpAZSpwR{`Y)FR(eoeIs~{`R;4yNk2#au7>;&^jxLCbLz%)^USmaU*09ve%AJ z(U?n}!r6txlP60lu6gI*s!-Qelur`_$__5RhD7x>ez&~`mL=IIrS%*%^oTP# zphT{tPt%$#m!Y@eZz_L3nnPCL(-aM)=EE2k$}JaF#Gx51YN8otKOt)bfd^f{F0b{?>9Mq3D*hJOsBf&+Nt`|K^UY1x4f~yU>T$*gh7ucU301 zZ$pGXU>nHRwVUU?x0VX>JsAwyXa{Blvs;=r4-Lz769Vlf8-{+bNK!KB7-qX>rFye= zf(tO6nm$=OBEW8U{c03XbTqZJD#L`R$S;q+5XW5l^UWS*hJY5A7%?ymB$E zkk)B?C_+E@PlzA&mtkZ(@#gngs%n8Hs?IN*orK?rICyYxE~$C!rjVF&f7!CoUDF}% zPCd&|+&9!LQG9T)Bt~q!BCGzNW4ITiYD|Q=m0F!U#3|m7b*Wsq7&U)EDd6zj*wiUv zmubXNs;s^snvH^lqPT>1$(ypQU_SB_mIV~o2{9hqVyAK1srl?qnB&AzO3kgJs?mgR z0e&C}y-cU>Q5#H?Uq1}i>dJAxLYxWah2zE0Y_~4(xl#b9r%%!6=RfG#PM71tW+H<@ z>^5POsB@4x@Z)9hd}6t^l1}PnbD8J7mom05spF!%zg>0vI?Qq@b^5wJwHUe8(8~O?Mi`fjUL(%G7l>h(6bMCETD|eM@0rXh*wUM)xa6*; zbmt4y=x6p>D!buD0HRGg%Or>R^PsKyEMPT34Owg6O;#nZk-Z%eiO?%URD zs=;mWfO^=Pf&=`$@zt|RAnOT~*ue|25afaXO z=Lt^dJG&2CbS1@aw{`3xRj|U{riqwiGN{MwiJdqYW<6H|EuY%(`Jt*@XKyC}nrn81 zz)rGp!H z>%6U&YjVpF<>V*TIK{n5)AKnx5GUF%$+MFM%I}R6l3n4D=8Fa%?~2ZJwwCwQv8%*w z#RccaGWg1J)JfP^9u{d~L``G_Ut}a__-2DW47NYeurBuUJTqD|FZ) z^`)f?pVm>Z+!L<9%vujfHNfGm{*!(fXH<(B)>i-lSB0>~CI-*zZOr2XiZ=H>xwgJ+ zi?CwT5P%5ad zquR?1;?rI_y1*}_%!B`f?GN}z^g$BDD&+;vZZgP^hhM|&on}R%uW6Z=Q*s^gv2pj& zF6GsaB;%nYLel#g`U}@moosv=r2x?V+sDgHIhF~ezvn-;lPW5;A6;V}hcHG*|8xv~ zEW9d6K{RTEk{CCAmrM`nI88|j9jMqyVVCSrh4*shn0`i%n~JDgatdSb zjT`X2cf+z2r4RK(jXZgoX*Eu6+~uoQN_%h;0Zg(B(G||NTI6~WN9hh%!Zw8BWRm+l zf<5K|Iq)8?$XcBM-2fsQp~Az<*JeT;ZI%=#uv!>td?mR@m5Y-HKu#7CjhhuKtWUgO1HJikeqz^F_aZIzl&l{rmG1{1u5>{pR@YNT)KWW{N@nWKIu96Q5XB_tLg!`$dCK+94=o&9Jm--bN-jYB7H z{yh1NLh+K__XV&UTD0Aglh>P*_H!;!>fofzG4QcWuWi^H*{0DFCMV-H0i@-lJm}JY2l*Q; z|7z+@Q6D~2`7je{d_74BpLxFEnG3^BOQ`rQw5DQB1f1e z3t4dJ=}o1k^OfEjzs%+|j@2~s2vjvw-5it0c6Q=mFK?XEWYi?mau*(Fy_b~-aj|#? zD}rpLt^6_)C@9|0d!_V|5cFJ+D8~uB3MTaxodD%^`TVsEOLM$TPJ5c?pMeCwNX{rR zKL?D6eUaCW`jq-!_V^JS!C{WvsbP^y}1Xx)R_wbeT^1xNR5DJnBcaRez6eQ zpnByLPeX9M1C<2Bc5)wrQsZ41F#bD6f^Qn5wSlpr$FTP4eE+%vs@g6pmkCjC@u-ZU znRC+WFJ|wpQi?d&L2?)I%pR&&cApA3MXLLRkLH1UGG+NBobzn?H~$sI{CBu~?Ddld z%A%-G>4D3)4vzn+Eau;bMoMk)L_bHIL2_r1bzO{aw{iW{>v0Me?!E$pW0#fU#11Y{GxEf>($ko^$@frTv zc}!$QD*Qix=#Ke!B!f=|DS+;x$f2Ayok;aHFAcdQ|D%-f!TosH->O3sxjUsESMw^K zgJdK$RvIaj5F)>`q-vHwzV3{_zZn$&BJ=x0eAPyU)UNYo5W7YHGX;^Uj2ZzlD;{jl zrTlrwv%C!du!b32Yu4@g0}pN`8#JW6%>)!9J6iN-YfxXYH^}%97RDQApWIfs5M@x) zn=|p!+I8RVcnA4t7AE}{79?OaPNRWk75~-(Y{vgBu;-3oVJMJAh=p!bIa>6B z?u)|cpe1yes~rN-op+gm$pp#DaV*+ku`GIGfu)0nIGMI9YdAKIu=wz&q; zoD5_wqjjS~wm=eJlzz>4IsNX?$a_^8n+pe?suuzTQ~*)!pEt%fHO*{9Pg4H`k%a zEY7z9GzM$RkLU{99f>SKxWBUZc&y>~{o{+f@nFfJ&&4XK?EaSa^Zu1Ha#E8Ni}Sw_ z`6y~pR4*eF^ZAhD3#~f%#}@em5rOC1Sw#JpPX(% zFy8i~*0k8D!LYcqd`S|j8!uFqLe!j4$?)PA_#5|%1gxV2QtA0Rcr;H7kMr9GR3sPgMa~WkDQ9M}3+J~jOmi`rsuJ5R& zd0n`+dUc+QjwwumQxYD}9qpII;GHQQIE$T@0qZ)wsojG@Om(}>M-rD1YKr3k?vps* zG;^;Np9cRyy(@H}z81|zd@!=PoA?=<_kZT5EK%!~sM#PI?F(irpan;Z_^-wlrp3XP zRqpN?FZ=Am?3$8YMv0~>J%P+QV!paYwc6TYHIf~!MO9&)x0r1|h>wJvZkKs0s-`4{ zA=MmYA*MCY zp1-Hj<@Cw?uX{(F)0CiI(JXRV`$==0ffW0}XT+@5R z2uy=QZL5Y!XG!X7QdNpRv{0@M7hf+y2DkBd-<^jAR-0hM_DyQ&>37Ygf%sXnIu9d? zEezh*5TV408i@nwGKPVudDgk%(~41InP#V?YyJr%osU#uZXevu5rug#B_F*-$$DPl z!dSP=&GxpKfaVGPNe`pKGhWF^iMvI_lH|WHMvdBb9t*cc4pFHEs_t7p^OM3Glu}ePLN$^xhTI$>XvQ#%+ zH^@vY6L1Jx0={%V3IJ%kc=4ghAqaDr9^S*l6`7j}@ zddd(lR$y)g`%qlbx*V{*_OKI%d>mh<))9V$*U_xu9qoK~PiCmMbjF~%KaO%TigKZO zUnDn8iA(Z$3L$fvpr7yDe-{Pya!%h?{Flf@9@NDw24c0E7AgJ;#ofyPbM70%~+C3r-E+ zb1yKECkmGJpqXBSGYM6$e`NY)OBDN?Z?gD371a{OU>D$v*%ap8go5aFXRFNS0wzw@ zJQvTRfyJ26^3nEs9|;I6&L7)tF1WNs&L=P553-FS@(i8lv-1-csiO;i{vFX&p-3w% z^PdcXK3Ua+<=AEXd*WMIcfOyYeo-^tzsK^$hrr7={FQQF6X*mE@9M8D$$f*z|fl@r5jIx+&a z+@5b?gv~C`n|+`GGycSF>Tt(d_uZulu@6crYwGKt1nd8@arJ{sfcD4myq;L?EK*@$ zud&{G-;Vr$dm*oTmETTp70(4*hZyC&<%V*D>^PIJyyZ zabGxqo-hBhD=*ylrn8PdcB9Go3OCkEs!iU%<*NotK$l2#Mu|V-LUTzw+!}p^&y7{h zd5K!mYg9w3ZUG@tHJjiZmiL*FuJ|&A-Z&gfUPd0~Q%Q{%;C+n3G#zcK67w1huppmT zK*vpiu?MnT9^K_HG;A3cCFL= z(1<<=`7}m~9xnaRywv>n#u@AfWi*5&>z4;$Obm!sIRSdMI&7nb_I1#YN~ZnDXPZw!v6_==^-(kQGY#YYT(QksA>UKkO=^WT;9zt!=Zmw@y0a_F!$w)UhtEWlOnF+mf-Zda^NpLw7zfYUa5z%BVs(PBk4+u+n4T zqh1#C%PD}gjkoFNlQD47^`pH>|G^jS=Jq#zYtBj_x*x%R{`kJ}3zn_lp=DA}W|opJ zz^U5FZG^j>r`R|B`gfzT44c$Uw8^SF7=|JO#$Y5 zj^Qca=|(J@qFET*G3jPhzFr?VfH2oAt8nKJ|Li1TE=v%NK=^#ls&65j$Y+Uk9(Q#b zEyulRKW{b(0Rh)DZhZTgKt}%QoUgQ`OWTXMcRoFZ1?add(U_W-Ya=HvPLtVr~l9++(^@$B$pd9?9XF9U|K zAO2vQd!NSWC``#mI|+kb4l&(VKyK94iXr;+c=uiA@nJmQZ#8f0pT+4ku~J;+{HIFT z19rx}T^csT4N{)(bbsP zkORC(l=XDN!dlTnB+aPaP<*9*w$MV74WB1Hd&M59?|>=RYa3DUg0XM2U9lU;e_;th z(kWxq^J<~^QW6AC*%))^8Dm8J9nXd6XZ<%h2P^X>@n)}Doe@c{|914Rn-|3d(t%HJ zCT)yxvV9VuYR)K&%>fslPhN{SzPlcogEfLX+*FclBQESqon$KkXY9@Cv^h5u)%g|f z(-orMTg%^tw(-!_)^A|9zs4psCZhmb;%Y(e5Nm61RTHjXKL;ObjyBoJA%B98EMvfP zt>kTbqqXg2=&XD{-yJ=o1oeO6ew~hmV{)uIZ=|Q&iIpU=KT+{IgUuIiDlivF=*crM z_#?0y^t&h9x=fT{o*-(o^-WeZ?$L9;0ihON!k|9dZ$ z(z0zx`EZAwIo{B{``-DG3c1}~=y(^P#Z}q63~22ejnE|F7Jg_l-hTr29gePt_3s;S z+vRtNZf%P;V(jqBCT(ATIz_>T5HZ)CpVaqhtFw2MvPGzq#yJWHF6?xe6>TI|j@Axh zLqJnM_H^}qPZ)%j06PI-a)8ZWo(is}In^jdcq5brQ!pempR7$K`#Rl(+|_<*n&oo% z2U$%Aq_mqH{QvI5GU@d`0!XoK;>J7V+Hki4U;RT7|4?q-4pk8fU9Fmg^p;m&hhMT+X6=S27F%XL;-C}0Z*r;tit>Q;^D~akD#%AP$ zGACj;z0iv`I$Z~Ps$c5*6hhA*gr@7red1zcL7BU@=Bh6JF?&gYa>$l z94})O#Sd!n)=kn#r@r$X?Jomr$~qzfUq1e(lpS&;-o=3iw@GT7Ip zAzW&()`ZG*r+nkKfXB}pRf>CO<1MnSqXg__0-3M(t3FbVH&dD=+t=k2+3eGu2iCYZ z_Mdj-^wCc%I_{)=bWoblL2Ok9WD-kb*J(vM7gr~m_AB$G+CFdd4Jdq14isvillqrd z_g@i1Z0cfFf6KE?r*i}GwEwbK!|mU+q5l4(^IXkw562_5GmgX-_Q;4tO*?!D-DV=Z!S^JsKD5wc?wNIw_@2}z+OwhB zX$3xS7p6GtF8lNtkBYe5w>%wQM|(ogqbYuTQ(ywV4xqh3m~bV5w#r(Bg5oI#Qe1m*-tG6cSqZ#sC1s)yc0>GC+Qs)^y=uFG z%$G)zE#>Ddf5s;!8p)ej_UPA*5pN6Af7q@Nu;bI;4lMw^zO8AMApfWj%-}TP?n24G zzgo5Z?SfoS2Y%tDo-q`;lWU7a1=bRKuFF#sPJCTLrp!9G4ad<*Mw&(FuBUXf2y?|2q~E!fG))AR~) z%Zu3q!kLMlty=u_A|orZpz=&X`I0U-1LFAv9rYvrz^WwA+hJjAexCD7v+Efd{dSZ2 zA%&X90h#xyqN^vHdV;fjB1r_NmWmJe1U%0Nn3&pK47cOO{%+ynoydYu7*SADB{Y`F z|1M#F&Q(Vl+9GUjJ4GUYNoN0GT3o`9XS#fit@2W`Ep?bxWtMY<@*Sjw_E{aI)gKt8 z316Q1RGDKtog;7IbY{$Z|M20%LTPedeCQ<)lem|TxoY_!Mxnm1gB^JnUjZQ_J5|Jc zX43qpXzye+ydE(4z@WEw>8>E;fwL`cd$~h)>-T~cYe8(h!&cU8%4YOD`X!pXu2yft z?N$zkf3qN_$CUJ-ne&`hv*#pta`S!f#kZq8HyNZZB*uE6w9nh%0gKn7_J68Kuhebn zBw-I@#esP|-NT(U6nSjev9M6u4F(%&>J&rd@`Kkl69?yfzMu5ZZh|8iV5&(h#*2C+ z^m&~RdV2b82Vq~8Nbt0b;b)E$QA*m>k2ukdEut3wq%erMSa9Jjz44&>MAFk|vt?0@V?M$FwYeDzXo^NcERYvTs8^&~`O9pDu-8Pei9w0IA^T%Fp~>e$3j6ibO(>NG+iL2sI8n{m$T}xz zdN8VQujEEh_IgjgAKdZ3;&3X8L8-!gAM3?Nfl+pP+VR|9#CAAx+gqE>G!B*|wCw<4 z-z^uzSPJ8CApj^21fA|97|?1DI>WfW$~8Tulv)9ACMD-R)Qz62>silWW zKzZur3HqKrXug}$JEDJ<_fw1d8x&SPbdAp`fq*OKTYJ|gOywD#2wq^AF{l0! zSiaQ-2s88Y`f^e}{C-iGXd6(51(kY; z3ma5#%T+aYvl#F(`!j_5y@d$ZEAy*hyT*izfWg!2Fogk8@}#3|a~twj=domTpWVV{ z!r?U@5hR}PYco+cMX*|o>1V%k&AF{8fHj)E?5`HTJekCl5$KGPlbeqm#cnMQM2! zV>HBx?%9BW*Q`Ck6KLx58hK@n7>(ZLR?v+hg;>`L|6lA=WCgg#uhp}xtR0Py>etGL z9j68{+Mf2bkF4Q|wQvBeQ*l(HaMrpu#TSql)#JK? zz-vjwiPauRhRa~|yh{WO%3uIyG1+#xVnbfILddhx297|J-PA7sR1MJHQv2M9KW~Sv z>U}}y&;QPm$M$<>Ht2BE`Zx`IjHX@Oft7Esf`j?RNaeN4%=VgFxQFH1cvjq0UZ!O1 zMJRi^JSr&;qH+5%za*CcD$c&w|`F7Eg+$551k5|g&f4|AYN-%J$_T5@*kb6#j zlYmvgMPIG2PxM>t{IR~71Z zAO4nxJ2V+Mp!%v9dNELSI>U68AvsWPbNylETzzp#9cdJ|q?B3G!GNEkEdL!A`=MN$ zJPW@N`Zog;qZ#ZT;ZyC1f_LXeO8w`v!MGCq#QY5+Io3wH^iH$sCRvMPrEGg#ns-M5 z%XO?y?yn6_4MbkUYoVnDPk{7V#L!g0E3eqV5vtbs|MG>g1cLb}kUAh>HYAoAO0A=U zT%nJ(gjh71#2W4get<3SzUU`aH}-nfb+_nDXOVX#4TN7WXDRs?7S-{DU3z4**5WTA z93u^i%Z1+}z9nQGoa83OGKO9UaF5$*F>m>K2tLSxQbPmDlrXn4G~R}&qhSXOU@I%g zKD(_fSrEJRfXqw)R>DklF|&j>yYD@B7;{qF^b(8HKGT42KA~jECGN-xDt-Pts=gQN zetH@g8|~w?jEGKwFP}v0-4P`&j>e54>eF@JiC*4coKla1dUR-a&y_@Q)f`aQlvD7z zgQ(UJ_X^5Ud}(ndBs7#ai#zkk`}%BXw?nBo4d+YCzWyR2V|@7?0W#{G8(5h@`6)7B zDonK!lt=5|=$zT4|Jz(dV^>ArF*%%>+La$%I>{B zxYEy16Sd?Ej;T~JJ%!VxPVC`E#1z(QSv8mUy1L%ZAnpM3M&b-r6pRWTj8DLjD;$Vj zS!h$pPOG4vZ$=I>G+nUTPTefYegTS$2!_2eVbcjet%i{iYH*GP^b7pJ4A=Ib3z z2w`69HoAco?vpP$YA{h`!b<aqnj&sIpM#{u|Ja zm>utS#N$qpW|U4_JE~m@cPwzwk#raOZsFxs$%!OPA}Rmt6m_fP#s@s%|905`jxa=3 zDJ*cok4_5Z(O%9OXFtFF9+@oN#J&vwN?uXe4F+$&gUEBo8P-jU{l`nOk@2T?O%2#bTVsDRPU_Mnro5?;Qe>4=N9bqlsTMs)UIkub)x?EnsE(T2 zW~8{9?eJse=gP%((KIoo7q+DM#ZhsYUY;@rQ|ppSF&)>hSOD1v5yZFkc26$eV~^Pi ztDJxNSNDt6>E}(_wnOiiHjVjtpPSK_L19PcisiK;5vAnF| zM7Zw}@Da9fcp^~XI$p}1(QFfCrLJYDJ0JC~oE!)vRPiL&_H**a6vl_Wg0?77j zLtO98eX5`R2vIQ; zjOIq-v}M~8Tv#-s2iF0iS9FP1qCy$SX;o`z71?X`hI|ik37|^7x*}3gz`#?-d0kbTlX@~VG!Po@ zPSINxeox4i()AoY?|GucY&6Aj*_*-x7aF0bLU|uf4o>Ac_Hyt-xcHv}bG;B|Rzza1 zT1Vru&+sGVnnb-8B2s^FPfD3wDx_4b(Q$yN`1qo;1)k(6ntDFNiud37Va6bIaBPw?oJgS?Ncx_}HJ2slr!DRGKes|DPlkI3<2} z{oOr+R%?#*ymDHO2t1C!+7a_U*4&!s7KNFLm79rNP_X4x-ZLZD;;uA(x7 zM1uL z5={nRDckE65SsUsf?oQ#r)NJ;-6pE`#x7)vP|KbGmN(hQSBQLIZePs7NK^#3h zBC6I&s=JgR;)lBvo0ERyWa#_)9K0qRFw-FIaT=0vq9e7mZM3Y@u0ykgSmgzjL1 z7oi27kHZ>F0GhA75`+r~3(7Q9@*zQ|uTVTKkHg?a?h;P@vzL^s2P}Sqx!HRcf5y8g=8#!Cx z6?PN{LI&e!)>RbGLzuag|GSYs z;Aozob8lv9#=oI!k1EKuo$7!n2R`~{vMU~OofD#uWZ!1&Z7q5f@YV)sQgaB`Fqr$K z_8PzKVlkB-?k(tZ+$`M|-Z_RqWhqI1b=**)jtR3;;@D6SM` zj-kYFH#M$wIAz8K2uu4VuzD(TTd9MNmPLQHUdlS)?$zi>6e>VXO)z%efyh{4`bW?o z#+_6Ci?M#5SDR<~NM{DD8_~18V?uq9d>(4n$C`Ij99K#o6(9M+p?$IXos$3BpLRY< z0kWg){d_8H!wBv?p9}ZFvXY(1u?i>1a34qi(gt&|R<3r7;A{5SPugW3|J#lRO%Y}?MZR6h zDBZY&QV(*4m(Sqv7hYC>aGhF9K71Ng6LPkTT$ihOEYyA{nOD*NfQzzKs08i)A2kBYC+K*s;6eJE5dDf z83bK%CvqN@>~B3372tqnfJAk$)sM?=xH5o8s?PRDYpH@3Iu#O(g~Fj`FY3F@WB{;}=F1rZJ0 z0Sfp{$1AQAX_=8g;AVaIck;hLVR}`w2LD_#9}+Fd6>H$E@o& zw3X$1YahM{bA>V3%BhH>`48Oa-=3n`rio!{6g2xNMK<|=wY4Pl22bjD)yVs_ptRq9 z!xyfPUdciS#VNux9W!j^$VR%Gf68?ee+b4Bid<_WVs-iK`z_}sWY=?dR&(+pYgdrP z0O7}>A?VGc+Z%`i(M5aFzv0X2H;&xRM|wJ<|{VG$z_TxO$^z<2Z44yX1t{sU9+ zX$CBBZASdKXa}7yUhmzhv);}MUy%ncYuP8N2>1I?jJI=YhPKWGE3_pc!Y@hj({=eFxvdQQvS$krz@TWvozt@31%gqY2W$%BIQT_V$>$qi&XuCjd zt!q1GWons+I~HBV-*BK;+Squb@(=M7pFpc1ySBIE8wffPxV_+C<<{Kd$YHHVTy6N{ z5id90CfA0UMk!UOf6P_=xC2cz43yP04AjlYPbmmntZTp?p=hV*T~QH3$E|O6YQx3l z>n*aD#F-l_6}6*S#D0I5&e7|V{leHkAO+X<9U&D`87pVq~Z}_RA<5pNmE0sHo4zOxCFK=xLV|JY`p<-KV25M!`oE-<^7` z?TJkPK&_4^4%ce!Ov#6>aJG&AZ^4cTX>7`xxB;gxMe@SpER^fPCx9oOR;<;|X3Vz? z)oYQ5t!n2}k%L>%>&b4p7UW6<2MKF5d^}>;)CA&O^zKpE$kMDC&erGSQ;*})ttQd+)mi_Afj%v8Q{|Vlq)HeErWe z8*MBQ_6=SP?YoZ3qyQ%x5 zJF2XwjDX$rLNwM$5b{;;o&nqm10$(~4oVoK`yPLNzrG%6!SHdk_0~p$fRqPtD%YM% zPyi{g5-n#&osb4j}1Cs1eEUxX0|On#vGW{u)O^0@xY^GY{enUPy9|Z;#sft z&dEDNc$PH|3ED45@m9fHc3a;;>4X}B?;yt;Yz5!&XNM)FT) zKLaF4bdN!sTKn#f8Xb%7qF%Rt5;T_MvJ&2^O6l-`Fb)9>SWDgk?;Mk-jU9mOFnFWdy3?R znm8njk+$)RX3Ryw^}>%Is?@DCal+mGCmeKx;WjKA6Yzfvr3_9YUhZ1IES!sHJ!g9u z_e*XV#H+~~Z`@psvO8VWA4Pg|-fGf)3#16sLpqA0;_S()uFaT0vNS$nS0OLxXLOH# zpJ#~n6uZ_S%Y0t}7i9kP!Cn_uJ^DUwrI&RFnZ}6`IAsKHRnr zt`r~YdkS(WLiS0kKc-I;Sq+nBW#S*28BN55%-&6W7fpqrX~DvS$1pq4_FMuq(~4v89eS zLY&~(n@G^rWnuQ+;Vk?W1NUfNcor29_Z@u!gvn?8O%5TB5;@0ouMUlOHD6>*Q3ap3 zuAR{{C!VRxLPWn-7?KN#63cSkTULBbeo&*>&#BB{8cZ_Ly1By%S_=|cDaO%m>4*(J zEmUU2%ujMtn&MsNP<>(gH0Au#RC6G@?ybGgvEHnE(zBV)+Bd~tEw1a1m@>GRO(3f# z%yle&T zWHx6{pjjnVpZYwFiRQHpPiMD>I_bNI;NHW1^s|ntydN~{^mY^d&$5V)4g!cNc!7X2 zt|mp^N60xI|Er_I8Bje=03lE0ezo$aF~n?52Z=Cc(oKC`(A^icyvt*`K*8C5{EqKR z4InW(ROn$|zP7-zT(_0|eQAVa zd4ZL`hQ;N1xi$yUq5XMsxkIQkD|_p&AIHhpv3_74~0n98)KY@m=$Jj zaF5425nfAHx*6gR{A8*^yXu>p*iLI}sO~qsMUGi$kQGhBbI#(V>Aom-rgwNCVOR@8 z5awv|OD)kx$Muv-i(gVCst9z?;bVPj0;?=DT&kZdvdG=Mf#!=>vD;4F#%dV)#2*`Q z4mmguY%{_*@gI=eJtIwx^p$?Mt{7$Hh(rl49#1ZU1O)sA!#bZ;nMyMO^s8^BC7IHb z?`E6&0T43sfKeU|hYTu3p%MTjT!hx5#7&i(I5%CiQ_&1Cq4;zXsZGn8vAZ-MTNVY> zS}6)R6@s^W8(Rze$lg=A3;kA!Y?{c3PXS&wt79!LYCJ2a;NKH_TllC5^tC<>F!7~p z$Y76(r&sm*V7M|#RORSZOHE>)mKv!CTfGP%0ndEo(4U2<*F|QV2qrN=4HI#LlSD-H z8v>5ukYR>)2Ce8P-OHe21Xs7tIoPv$!iTN;M-D^Q#XFq3dMTf=_g`}TgoPpK7!Yz$ zYbS5N-$UQ@5Sm)kFY~F+I?kTi#*|tc9d|@6J9_^*EAl2Gp;(uN)br+;~Aa*R0s3mW*uX^eA; z>F1HaJ&`nG#WXC|L{A081dF{ z2=e8lh9HMv2oNRN;#%6m>MTv%6DhvuX04{9eMhzN`Vc#V8SX;ch08~At|eYtav^rC zF##6TzIr|jrzl|#Lk_n5Xe;7}g|x%8Sv*m>^edQmUejxTmpN`{-EWj`>Z$MMEpuc3 zX)$ZxP$_GP$G5shpC;N9W9xYP3a7!^iCA9vL%z6H=%PERF9YJ*)2;5&8CC51>)xZ^ z{GfZ8{mIYR;2fRRhPKE>19pP1m|!Jc?ZP!>VXm?K1q3iZ{j6GJk~8#vn^v#y37PJ! z4|$M{SjaSPMSI{5b4r9uxBt}8`9`JVq5arOb32r%N~p}ivqI}xQQ~1 z1ddiP1mRR#bdmj@de-jJz1aB+)^9dP28!DT+KU%j$)aMDmu}a_ts3)PBrl3Hjd)9l z;mnaP%?I^M;`cQmZO$hj!aRJlUwF^zVO`f}ZC;+RFF1jS+o#tNJEf;wEbfp%Q?aF& zIJW~cG$YI%&neQ`?2;QLmW|ahLWmEEiM0cVQ ztN_t%)@ofB!9TmLsxBuJ?{7m6^0F5%b{3j8dzqQ7?S@B0`1Jd)Z{kc&yMKd{#&e&F ze2~w3s+k}K@-ec{YI=g_qDG+e=2qk!>lnX%*;7X}h`_`bJH7MR4L-z4uaOaQuo5T{ zNTu{w;ek#D0ppoQV>RhaTN(?7g;*;?GU(?F)qpX>)DP8(3skCa&OJYSyh{{zQJXQ2 z;XMZrU6IU5HqnjEZZ)!37wwr;iV|+eK3VXRqaBbGVwYFRgc_o`RnQKW6upsIW&eH@ zw^GoUKxP(dKoRzR-=QN{mwnIbqT?ZOeu?T-6aQOdjuEz}h0*kROMh6J=yIzBW9&o} zmbsOsj@^+p6&8(FfVl%U7Vj0BZb{2-BJh*;we3D|X{whq~t~54EKyr05j=RsB zsxRKHbo(kkI%p&%#*(9??c&5)sm9C$v-%lDmh7|P=T}yGeVeY^XoUSSIEZK`Rr6a~ z=k&kKSmoDjQ%Y@}OC6D~QUJk5yUS8%Q;Y(q^~?S#q>tCp_o`&QrWK5KJ4DtrFUTO< zz#ca}0$Aq$Ci)!y;5>W%09hAUyGU~J`Dz^yZTRlaWdF6G?1UjLcG&XO6uTKwXS}YS zFWREp4jM_^84MIeDjn#HaUd^?T9Knl+GgOJd%mDmXd!3^Q;(nJgi za0v4y{2AZAVp*HeK`TU2!xJVyC;lD6W}k^^j!6Me5xglZ!qYFw&K8g9j&iq8FnOzy z3sFwjaSW-5G<&yHo-H6EjOz3!nG~2@EObt~I&$IKQ6gNSu2i@IJH z_ZgGTSTUPOM+PaWrvoUO@5J2*inPF~Zp{F{m9o9kJ4a7r{3b|xhGfp*Dh8PKWfi{J z<8PS44@HEXu2z9M+1 zqP>U2)L|&z(@Kvai7N-UkrKk=62-XLk)rR~dB>c0R|-XU!!5rXfx%$U!XJ8AzvGJv zE3{5aSq=BMyXog<5HeU1UjqWImwk1%q8a~*VHYj1*YhbjbGy|CH#$T_Y^`hEIF6nu z2)zlk{q4(p{2lcAt?lOLXO-1X563AH0mHsiUvn!p4gXSre02a+S7>K-y|9X>npH|{ zswxoUm~tRy@wn&tDY2eb_<8I^-)6Gv+d%2mN}{8q5U9a$*XABy%{WrbRx?EA{+h#Yix>L;-qL{D213i z7X(^`2UW{}8&GX-hQ%JP61BM{1f#b6PV!dn&wic?f7@Mq|F~5R4B0mVF@!@0k3&YO$_xONt7o!9_cVLq3P1ysuJysI{oCx6CGdVd_jlIO_zSp2|WZ+b>34Fp+Co zlj#&UKBg^ps*c!E=e7Za*Jb)VIi-OO`~_|AWfsz@j;l6D1cN%ufDN@hU=zuQ*(N$Z z54CT3?3>^=wbh2jxD8z{Oc3A?{bqV`gQ~HdwGgXB&_PjD=pAP9PT7jS$guLeee(Y-K`X_jgI z^Z=2_oLn{eGI&Lv*Z#S>{&BtKf#nLhRsj^nx%yI z>TtnXMuzKJguHRql@@QW;9;*g+LtY>Hbh*7TWfx_JS%_Nj`*PtSX-=IR_?=tTh^L; zTjN4(%#XDA*#sy=%>$iW6tuw^Vo*HqR&S)AI80pj+>T~T60ETH=Y%t|nu$HcdzLR|0pqD;)@sEc~koy^&@o1riI) zK)x|Dop&Hkg5QXly3U7Xr4%rfBpnxJhf{eX?FY;+qe)BV*LPwH`z8w_;p6 zb(Vi8vIh(l!kuLSEO^ z3W)h2_+vK&$5cR8ZR;m2P}K#IG~MAX8GhNHksIdD>Bd@BMQhqKvMXec1ts_`aY9US z_9i=}z=axNK@@w1W5^z|^PyY=KPA3SoQbu4#V?m^p|SJi{8*WaFoke+!Ilo;`R}R> zhn^$>ZsyG$D+=vTr0SU=F2ioSVd9P6G}z@^WvmnFENpSYXK#jdgmx4^9UCn2M_$is z_vg?fx0|wgofRMRzBy)!nu0i=(IL23hHCXo+j?f{PSXkD-ae#9a08ajP{6A|c^|0x zkl=frb?9+vQ2QC-VVUaRvjDz@Zeb3}BroS;h*~F~*-2&S=XCrM^86kSadVt?8NFBN z$}_@!_HjY=^}Y+O91|`BI9sp7eQ6H1Y^J zn|aO98pJg0Pl>E(0IUD==3>Wz{YLjTE5M99;Jw@tXD?sk=d<|_{1}=E#Ic2&s9;d+ z1Il3wFv!0kXHazAjZqGUKut6_b#)|aM*QMenkhMw7g{5H9GMjAcg%@*Z2O|9TS!w8 z<@sA?*;orN^#3C>GC*9-VaAEJ-uJ8ap1lu|gTZ!VTWi(@`!kRhrQM85=5q;5;Zz z&A1D8U_sE0i)+kg@%u@w7c71qLY?Wrb(u06Msw@FyLzN1Ae}91z$kw-D$6$}HDcPL=tO9yi7Xt1(rL11wsX%1(PbL0kCQ zJIE>&yXezT$D)!xT%Q(QgU0ioLRx=c1phT4@Y>+`rn??q7=7dh+A|hW zb$QPN%|qY5Wf(;p&9_vY{7EUMR>rnC4`H4bHt7Dyy@JGyG~en7K()~EgFVJv>a{Qa z=1ZX0)Q)hEJ5;uYRIS1w_tcEO;L0Q*vWtGx6E^LPaAq}D!PyI?-5M5yxr~K*IYdb7 zpa~QS2uCSK@F;^mR_=6_+Fv#Ze>$#*4#icE@qUv!@i0+R9aK%zj;IZ@uQXX6`~=N_31}C&%;K|tgc!M84Z`blcM%@lp{{_ zC{P*n)CU33@;iA}^C61WkHql&aFIf@zVjv9?kwo$@vh>b!myt3^y!RldM2N~$8v2q zWW{)L)4!tmhIKlEZOZj~Y2?X(Q(m;~q^;}O2ltTCDP_b$$+l_!#xBDd!Kw$ZM~^{; z^J0JqvX%WoMs3(@P45ihciVs7ny&A}h&gKtaVe>@0w)60*m=9(+~|t)>s63Qq6+&e zDOVQjtLyeSS=TBp=eQ%w#fZ{LW#&^-dvGOv>NL?yA{j8|pOQ1ce3L>#8HKNYi{S z^L9-p&A4NA7LqpaOELw33-kWpY^>m}Xki3lL%bz;Hax;0g&;^1hnNlczXKHiqEd)12)YSTwgt*FO9w9H_TX%k?XW z`7#te3BxKM6prxc^LrxeSyDXXj|^&ZvLAj351OVI5Tg>l3s#8|6^~N}g4NyxgRlj^ z35-%VXO4%R8Nz6OKy3}?m;^Sk!26vN4{fj{ZzP?G)z^|%O_JwO_&>FKH>Q1su?pX3 zLN9Ebzl#!-)?c)CR>=hUy}pf1DasEI)j##eF$=GCh?URw||#%!*%Y%6@?N zraxG(jZF4VS+S0o?p|CHWnGG!UVOS-zn;Y?s;a1Gt{Q!D0w4mH5==Kjbnz1IF{aiv z;0!wpLzq#|?0{)mHo*=#^h$z@00WKQdL=+#S=BIMR%oYIY5RfiQT_bQJgYzD%k6L+ z&sv4@$L$^96Ac)Ar*C^9K^FF60o0Qf`s8%h?f=-5X%w#Vp#^B7(`ibu9?)Mrr8=Ri zHnFh2$wfp*4?6Koat+>Jl|{!VvuH)8aNgMFNsfs8e?yCoTAXwwxE6sObMU{J;5Tv zR{|)vtE;_Xo&2xrfG7m^BtcIIg4f*!yGFC9a$Bj%TxVYVpkE3k`MKa#bqKZ{6n$~k zH>5fY$77u-?Qi+6U2Qe+t}DU8{~ukaY!i=Fbqkoe36HCix+1Qh60_D2 zUl`A}B*E$gSe+!M&f8y5@AWi+?X~7b-v0Rb<4#OGo2W2PAS#%yTcINOpWF$^I$-go z>(^{z=bTG6M-mXtl`6VOyH)0f)99XCZjijcGmH%wMD%02afS!CXJ+2uIn?8jlET1B;5L#>*k zmewZ0db2vd_n%+K7yhAnXCU7GH{S3TJm-18I9oGMi1lN&6n}Yt4LifUNK+3g#l?fy z;PsVHPFl5lVi}U|Q_-<}8~SQJsI@FZq11*#QbMgdj%sBHX2^Ua?x<(p$Kq;FsB(s%^DE^l{Ogq((8jqRel&qYWNpmUtVwn4*8t}Q3<5^x&8Qt zSNWjLvJuiP8Z<@F9otD9a5Im*4vlRmWD%a(j#x=GpbX_1G>2^_4a5v~5H^=j2I>Pz zqkY*X4g8e)FI-^^1hCdQ2r*ITMo%30n%R9)2kCH3Ln$yE;7ZEyM9PdGS)0`%sHUkw zy<$Tpkif=Q9y>ciMN`TB-)x)>Xe85_)y5A@wjJwKq-;-WU|-L8V+Z2E%g@>hd`GrVN#c_=4R-*rjKmZNRi9$8|zjXI2cKk3{CLY4J}>mAB< zHk7YC^M`x6Svp9m{`%bO%P7}7HhS8SOzC>@j7)_)EQ9USOZLzpWePp(F9CV z)s?SZK6eNB6cbh8b9Ys7^}|3?l&NSM?@I%;pVpn=^;=8W)}2{$<_hht#RL~^Yr~Va zlu??^OuhiOPa6zs*YlAVcG=s02RrV#t!Y6&_kv%-^IrUl!>%MvYk2=({4ws`dFPD# zu3WVm@4MnkluFH04jy*J$LJ2c)IRV~4L9^RTy&wmMbvQD1N(5&qdV~VEmvSqbtQ`H zo`H156R~RLro%cacB*#o`U%?lu0#3Y_t9IL4Df&awR7=z|FwPEGM{(xM!fTlXJgCS z_B>DfVMRXQIFCRcfjLKjw?h746Q~L2_7~LiNkUsxq7+#PkQ3}>hat%7Gi67y z3@ZVOg+itb2Jg24c=%B@H8jAtfp^$OHVOH+rNRn`1k!|~SfQ8VEl;;B3X?q3Aq$GY zKUS~>(3(ND-T{zBM=1mYoX1uSw#`y7HdtSzbo2N<77=+$S4_3Z?ulN5b<=S>-RAeZ$>0Ph_f zhg1Va>!>*}TE`&qOg7Af!~I(e3A&O3mL&;R6%wpS608T%OPfty<<2Zb0(D-Be!T8G z*CJ4sbS(8*)+a%*pgzv}qEh^`tm6?s4bd85t3U0?Jm-RV0=yvKQ*wG&N7tgmcCd;C z*w;RKf|5O5$m}z*1&3v5K&h-c7USS^rxAwAyaw2QdshX2zazy^3FbMaemd)K_G+Vk*3_^WsQKB|?O(;2?$_x=!1ea5rqRmbtN)3t|E{N1kRN)bhb zAMF{y&Id>F(yj;b-X~VDX7f`PBqiq9_z3#$`5L+&`3kyAyfXsd*!3h_`n9vMto@B|`ZqmGcPHV^C20374%!M-%~t0e%e_sAOPn zupj*Erf3ElGS9i-H9TeKKMl+Z{%8L0kg0_Kwt=SMj{`(yArVMg{o!*#l4cfl?{P>? zC@W3mb(Z2Ug-zk z3L^zwSVVxPhnew^nr;xSw2HFvgwN_v2$VoRN{dLqXBiw+>Tt|sWg19!02242*HcGk zv9JNEVW29{#RyW+PD=G$otB}Xq&vX7y6(Q{0Omo-W?Tikgj7vB#n0%==6-(e9g78} zwP5@uz)O{HFBH&~Bv@;zd;uGh#FY8oXqx**fLHCZ&(yD#XwoCWe&eP>wsUF2*Z<}7_}Z5~ zH{+(8wrs^^fBAlNwzp34RL`Z3V|^Qj^=)@ovB#Nt%Cc)@2tU|e0}hPf*Vc^Sil5)Q z;D^-TzYi04{2f+Tc3@BE#i*?N6@30b_u&1X-GTmr>GQhh_Lv1f6?uVq1WxP-RH=H$ zfF3L^&2kSLK+Dz=K$rXWPh>!DpdTQTKT$2k;NcDMYM>IzFz+|vFr-ftSWC5~5-)fq zkh5GW^72`0!X$Z`>w>Ag}Idq86RQb_b4VAR!&{>sS*Iq#o3LD0J10>1Euo+Y{Y&NYSO;WTD!yn=zj5!AxKix2#t%dqp# zpENDv?SJ|=SikY4!zn(yRx1^}=TH6syLU~_LEc!{Z@ukLaQd0&qPw#VZEZ_49$;Pv zG>@I`9!c@8dz-85EvVpgeKph$jx8#*+jp>5#UnSq55<-qq#IslN76r1#ovD69{kh4 zK42n7ymWPxa;1G9=R4mekHBLl0#s^8E3TqbLFfB;MoFCgrsU?mhWqqafZ?E? zQ#GfWE^CYwae2+DzDr!=Hl|JokmG)|$HbEq$-nLZlEJ!w&zcq5#{ zQw^iRqAWwoe4M&Zp9|9X_?eE<(_o{HGS^# zuiL<1X50ZVLSK873teE&15)S6pgZ{3mAhR}7}PPLa<6m2V;=>x(YTUsc9=B9SRKlx zUT430W^2)mu0cIlya>VLwVEmNgnD)iCTR6Y)6gj@n7xLod`F>x<%J?P8ORs0E-7H0 zJz4OJO}=({+Ou=%ZHa+eRvG0)=lU3)1=KnU;jF{H>T^(+^35^?^|A=*nu)>Q_xF;s zc1*R!s1p#Uft13YrIk!^)x8t=r~6V�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

-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 CAadmZ diff --git a/static/image/uniui-logo.png b/static/image/uniui-logo.png deleted file mode 100644 index 5a3f0a8a27a9ce6b1b85a77bd965ca9f6c750952..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3294 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 hAF3io)-m8?jtkk&o^nZ0I2pa$Z diff --git a/static/location.png b/static/location.png deleted file mode 100644 index c195e0aee80c2b9d34d8e57fa2131bace094eb26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4980 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 diff --git a/static/nav.png b/static/nav.png deleted file mode 100644 index 57b420b81514f354f39d4cc496633905f89220ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15782 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 diff --git a/static/pause.png b/static/pause.png deleted file mode 100644 index 9acb73de0bb4bd2232f1caa4aa10fa092b8f87c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3760 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 KMNUMnLSTYGxfN3Y diff --git a/static/plus.png b/static/plus.png deleted file mode 100644 index 73ddfe38b3506689a58960ac244a04b871f90074..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1252 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

d0sn9=}W}ClfgA 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 CjGH?E diff --git a/static/star-active.png b/static/star-active.png deleted file mode 100644 index 9ca15ab8f9500fae086a5ff68f5304b098983136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 zcmeAS@N?(olHy`uVBq!ia0vp^5NHG=%xjQkeJ16rJ$nFpD32_Aq zGBEsSsQ=Fp3MSM3Yt{c($^Ea8@L!?+zf9qOskHy%CI3aUK!QqX@07~_D-`^f%lsf$ z0TKa9DdvAsDE%T^_Fp>pzjWDu$-Hlh#sB3BzRTwRmo5DPG(jfshhqK@`GWt7MgQfB zf5{g9k}vqJQ21M}@P}OSANj&R@&!NTi~q=&4no#gl0W1QNg@_aZ8NcL^ zYg_H!0wbiQB*-tAfsu)sg_Vt+gM*Wcn}?5|UqDb$R7_k#N=8ObUP)P5MO9r>-`K>` z!#5-(}qzzyI+0%hzw;zW?~~^XIQ$zyJQb`Xg^X zFsVp+x;TbNNah}7w`O8wV0+NN$mn$6iF10|%Ckk3s#Eg4!dfg!f7R`%e!=&&_TysH zf~#%y63P<`j&y|N^?kYAE28#rp@Fr=j0tC)*%Owtd!E^7ZM$H1&rHSB+aucd>=R&D ze3^FQd1-`hrNeb=Rr&PKQ65*;B~KJuD6DufHGkb@r-^}guRN~VeVi}-(nOWBM`J_g zURZrheiiGys|?4S^|C*7r**oEP7rxtsLb9qr}W+Q2i=L2HwX9>uV&!vjcHAq$UC95 zfT=5So3ojpwur7wb58G9hEs0KwHU7yv2N^K z_3qQ#9dh@19z9mh|FxNMuI+*A8&RXc%>5p%155A KelF{r5}E+jsH;~1 diff --git a/static/star.png b/static/star.png deleted file mode 100644 index 40eb23243b303909926e0cf1c1928881edb8c543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmeAS@N?(olHy`uVBq!ia0vp^5NHG=%xjQkeJ16rJ$c_*232_Aq z0zrL!eQ0Q?gM&j_S{jg%o12@EkWg4y2;|1b#%5(@0Y!jppkQWZW@2JuMn*E(KQ%R0bCW zvXM=IvmpwABoM#_v6_!22vH0XgtLK$z%4>%ps_KzKoKBdJd%0?7``PXL4Lsuj7-cd ztZeKYoLt;IeEb4}qGI9_QZjP#O3Es#>YDn-CYBz)AyLsWvFRDvIR(X~Rn-lRO|5Mm zon75M{ZppTm^FLOyoF2FuG_G6+pgWmPMkS+{=$_TH}Bqm@bJ;&r%#_hfAQ+|yZ7%u zeE#zF+xH(ofByRY_n)n-x&bh%#XMacLnI_~4|bX{F*2}Ta1ZR#jGkoct);ptSaFlf zMB7C!UZzre|Jy%XA~~h{W3t-ZvIp|hf>s7>S`gWxZP#|;h}OQDypk8Y+!B8=>L1QX zSiOg%!7g;8qvDOZ-V-bOx+k196z~5r_nY2AIY(g~Fz?pUcndo!G~) XX|DBzE+ab^P!{lX^>bP0l+XkK70*?y diff --git a/static/stop.png b/static/stop.png deleted file mode 100644 index 9e65f3e8cf2c9e7f2a4707d1d0c51b0214daadf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2539 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 diff --git a/static/template.png b/static/template.png deleted file mode 100644 index 409ec9b92b041d306115335da13dfdc0f4ac257a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^fgsGm1|(PYdzmpXFi!DwaSW-L^Y+$8FPT6I_m9Gc znmWx*Qw25%<$RIVS?i;(WY?^nwNR**HC}P!mJg~yOFfnMH7;!xi&}HYtnp0E|HATX zpPN@s%YR=mL%aGetLG#Y5c*|5e-@vN%zV4@LS<#P14r%Stl7Wqj`?%^WZ+{pN7W)G};y{=Sj%joF-?Oz)gu=QDNZwrdN{Z-{UG8TeT@&9A|J;n#2tmlA7s3Bv;& zjBY#zNezO`JrW5=8cwypEwolEPl{Z}^WE~%wH^5ndT(1U$QNYi`Cohe>D7q)N`5NJ zY*1}4qK_0m*!g(%#(l1HJZkMW$}pKP{JtyACqAT>ZJ+ov_qAJR>}0NMzgEA7CtT?q zqrG;wKlgt%wk?%H(R1~e&-91c%Am})rSrzun_Dl-7nU7VH(XGZv@`XG^XV4W1oba* z@7D=^)Ze*wyH~&RuDM`W0@cGE?(p>RH?0E6UH$8I)AljGUifu?NSn6c^oG5s9=WEk kzkXxqTvce${r$wmV(mNesoTV-z-VIdboFyt=akR{0L&M`%K!iX diff --git a/static/templateHL.png b/static/templateHL.png deleted file mode 100644 index 4018448570ec27da1d0ab57496f094ffe028eab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^fgsGm1|(PYdzmpXFi!GxaSW-L^Y+$8ujoXH_K)hW zvR2c?=5RGlp5Xd^;o{)Cu1B&Bl=y;X-D}!@!OE&a*iTRIk!;DE1 zQ(ITC?87r_n>qfUW;UpJP6DC5XBK=saxvx7!P+xYjQi(R=JLpt?fP}z@v)lxt{wf~ z(^eY%=D)#v_qch&{)cBQKbUX%XSU&1*$$zPj6Z^B%>TOc=o!rd*{J$vCztKT4T8)) z5(!5bl-VQ<4|FiP@vNx1F>kwYk@~c+rwZmP*UkUVYg1^={zdmu$IJcickPjS9et!V z1+Kof+k#C^Hoo_(?jxsHpF5vQ?BLmZowfMaqAbZ9nrF`6$}ucvk7>QOe?3pQQXNZO zxLCdRpV<-@o_Xe!?yEUnBZRPgf$x!Z=hxl+*Rh$|u9I=9@M+!4@=#2R`TAztbQ#C=+#^CAd=d#Wzp$P!7P{$Sk diff --git a/static/templateIndex.png b/static/templateIndex.png deleted file mode 100644 index 7c986eac6c46321f252bbb8ceef0d298c2e3ba5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmeAS@N?(olHy`uVBq!ia0vp^l_1Q)1|(&F^?5QdFsXXFIEGZrd3#sCTeMK5{o`@h zZmy<-i#qfjT+X;P9~9s4LRw(sZ*~)nuBN-aV!NM;t>#FZd~`wN5d|?v-p!diUT{4> zbLQ^*&yBaI8QWLPD3)wH-K63<2?f2(=L_N8RsH|r`&E&yVF#w#{(CF^An9@BzuS-5 zzn{956Uuw3NYe7a!DBbqHZiMja;&2FYXc+zs+`kv*T6R+>i`OPpj<~n1K%z;wd z3eG)qe+$I+*xZ=;n_(_Q^aMx>O4Rtt#W4Gwt?ih&JhZvTX2-chb@P1^Q?8dXynpg_ zA7i}wo_m20T&@==uiwsmXXb~haLKqyTMA;?U+kGYpRr%+dB5z;4^h%fjXyoS+n@Gq z7hgc7`hC4Qp${M5VUOrKbt0Aj{i>(C(48OfbIzY71!1lH2fBCiZ)BM|F<Md_u?lCU9UH@&~fp729*n|>upoqNn{~tr1fSTNv`Zhse Px?%8i^>bP0l+XkKX}lNP diff --git a/static/trash.png b/static/trash.png deleted file mode 100644 index 83d68f3afb8e886dd6ec79597dcdab3b58f05cc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2656 zcmV-m3ZM0fP)Px<8c9S!RCodHolR&JR}{xzLPZfHQl*B9*@z7;{Ro1c-MCMo zUAENFx^q*}LIoGrY&5khex((^h~iSLxQSS-Xb~);D6#+l^UgT$Wj^1`+>e)Y;AH0A zxpU9C|KFQ?=gs8JYpFDWy?ps{8oIF%-Wl+>u-+EpD5^XT@%t#d8Sq;zEiF&++G%TX zF?#@AguK_lSHqXWJK(MGB5fRvjlr+M&%w_E_zf(bGA957=p3lJ2~Mc=cDM<cpn{1n`EV;_3WsAyqSh|v$f;5yZi{Mn~|(~=t-qS5)~ z==>h|GSecI9RDiX--)67O386Tn{N#*EwK<_--Pc)h)eKhhf5{d$4l%p`_2NLrtJtu z=NM}Td=NfcXD2O+^$@uXz<S^xv?e01g@yhlf;9EfoqIc^2yJ7wou`VbAc z>(PnpaDn@pCbhV(w0T`x!dhv7k^CF*ACU7fe6kM7amc92Fg2o9aTW7yD`kjA!t;>S zVR(0*9+z+HqSPr^CxiltY8^Kl;_7kWdZ&>sPoFZyb>%&U>OzmX`jMl%0%N43jG8a;rnp68smT8E_JBT+9hT)m^ z%aoB+j#GfQ7&l_5J{DIgxGgm(z~wN(yFzkO6;x3FI#0S512X63L`yY911{ePyq_y@ z6D2LZ0vQ}sOcH~o0*qF6zNAPX`{w8SAA?-c$Y(O+;mdK2Z;T7g6LI~c0} zjf5qobAaaem`7zqPiuR=T>nD!skE z`5V*I!UupHdedY`jtqUP2h0ba7%>iO&0>c8Qp3=ngK=ojfxv&m zr`RI&;NW0QDgy%pHLp#*ur)8G$8#*-##~%|#8dDH=5wg5folq06T~G$vaDJV@EWgB zmd-2SvlPJ2vkdJ(Env*Q{3rJI(5h1Cq5|!Tss8{^pSX*?k(@&ns5142XaO9mk<*2% znY{;iiPK$?q!j+>ju}8_H$r+XHx-oKyckD3SixeYmQe1JXdp238znixg4U~ z^u?1%niXgx;2D~ON;rKA%#b5kpV%fMRgYj9qD@GzC#C?_qqDInRlvrgOW^Vq;2iw8 z{4f&1kOGedup#9&g%!Y>gfqT8?#(OmDT~TWC+QGUizFl5VmBV`R%Yn0D>eLjE?9 z0#&9S;B(E;vEUc4gX>9s3)T&;C+%nX_9|2Fw~o$Qo@}c08h!9dqx+>w%3P%?)9Mk7 zvHAw`xMwaGiCnM(_Y~8bZ!|Q;QCzT4t~Teh^yXl8#4mKUSCY4{fX^}r_y{)h0Uly* zD?o;1Sv4Op#%w;7<%BAig}VxzP%NuG@Byp-9B{W^l6e@zdceb|^hl&~RspgjL*Hru zi=mJSoh56`bP-* zNy`cqI8Ao-QiL7Btn*!cMR{$#0-?-80pp!8g6>>2-KCi`XPQnSF}@`^UR2B`Sod*di(y+7dmxit3bR6%L!ksTm`6cUn6jtRzrZfBLecDVe3Q*e(O6!IKGz^&05co0{ z{Gr@T^8)u3OH_cGZdMv6R*tHW3osi+0>`n~1{cT_q!^=?+myDsT5RYfD=Z>Ty!uf- z1fL$ZUCL4`z+st3E)SgCRv2Jr0>~?{_zf;syC_I@;|Ue#Tuyz3SfPNK5g_w-5KqG8 zBNPQmZ~Q34vt^#V7G}BU;QCBdg1iXA&&gux6rfi8oLeYdhAtd18%3i0K)w?GBV4Xs zLxc#UHq?k$s4`!~h-kB>xbPvmrggl)ki8y@U*Iw?*NVgWmNyP~eZMp-9WXNoWX{J2 z;XQmUR^k2Jt$>^AmR}ydN*SW-6H*;nh4Rngllk%{`%Vpbv%Yk=h*QyW1T&ClIGXuC zUc2DzsP_0?9-5b&Yxlvw0$BbFlr}RaFhDOyFZaNgY3r?-KvxlVC&2PQR41PSbU*w8 zyxEL>;?+GdDgZHh;isB_GW*bL3sqx7bd&%PrwiLSKW~B0imGQ>Ilo!YFV6EH(ICN)bOh_nTEIc20DBHzZ-TE;-X7ep zas3`*@flR~BY^rqW9)`PIRUu7X8_I{8XoK=Snq%r{h59oZH~dO!Oy|Z0%+maiqUSV z<|N>HMF4yn$`-;q13nk)ZSWat$#pvIalrpm>;GVRGvK!X^eJ9DZT|x%SCxd`YHp(d O0000nV;hxajKN@*7|h6;Xpt>j)`TpD(yK_e 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 diff --git a/uni.scss b/uni.scss index aa8c548..b3da141 100644 --- a/uni.scss +++ b/uni.scss @@ -19,7 +19,6 @@ $uni-color-primary: #007aff; $uni-color-success: #4cd964; $uni-color-warning: #f0ad4e; $uni-color-error: #dd524d; - /* 文字基本颜色 */ $uni-text-color:#333;//基本色 $uni-text-color-inverse:#fff;//反色 diff --git a/uni_modules/HM-filterDropdown_1.0.1/changelog.md b/uni_modules/HM-filterDropdown_1.0.1/changelog.md new file mode 100644 index 0000000..76c3c03 --- /dev/null +++ b/uni_modules/HM-filterDropdown_1.0.1/changelog.md @@ -0,0 +1,7 @@ +## 1.0.1(2022-08-19) +修复一些bug +## 1.0.0(2021-07-21) +* 发布uni_modules版本,请下载uni_modules版本,非uni_modules版本停止更新 +* 修复 子组件修改父组件数据问题,注意,数据非双向绑定 +* 优化 点击遮罩层等未选择菜单关闭菜单情况不触发confirm回调 +* 新增 三列形式的菜单 详细请下载示例查看data.js diff --git a/uni_modules/HM-filterDropdown_1.0.1/components/HM-filterDropdown/HM-filterDropdown.vue b/uni_modules/HM-filterDropdown_1.0.1/components/HM-filterDropdown/HM-filterDropdown.vue new file mode 100644 index 0000000..ae862a0 --- /dev/null +++ b/uni_modules/HM-filterDropdown_1.0.1/components/HM-filterDropdown/HM-filterDropdown.vue @@ -0,0 +1,896 @@ + + + diff --git a/uni_modules/HM-filterDropdown_1.0.1/package.json b/uni_modules/HM-filterDropdown_1.0.1/package.json new file mode 100644 index 0000000..c6b7f3f --- /dev/null +++ b/uni_modules/HM-filterDropdown_1.0.1/package.json @@ -0,0 +1,82 @@ +{ + "id": "HM-filterDropdown", + "displayName": "下拉式筛选菜单", + "version": "1.0.1", + "description": "商城,团购常用的下拉式筛选菜单,最多支持3级子菜单,支持多选/单选筛选", + "keywords": [ + "", + "筛选", + "下拉菜单", + "filter", + "多选", + "单选" +], + "repository": "", + "engines": { + "HBuilderX": "^3.5.0" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "u", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "n", + "IE": "n", + "Edge": "n", + "Firefox": "n", + "Safari": "n" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/HM-filterDropdown_1.0.1/readme.md b/uni_modules/HM-filterDropdown_1.0.1/readme.md new file mode 100644 index 0000000..0e31af2 --- /dev/null +++ b/uni_modules/HM-filterDropdown_1.0.1/readme.md @@ -0,0 +1,36 @@ +> 组件兼容APP-VUE、H5、MP-WEIXIN,其他端未做兼容测试,不支持。 +> 遇到问题或有建议可以[加入QQ群(147157269)](https://shang.qq.com/wpa/qunwpa?idkey=0d4297636dde21703e0e6eb69b9fdde90725625ea7fca51ba0d440837eac9d92)反馈 +> 如果觉得组件不错,给五星鼓励鼓励咯! + + + +安卓扫码下载体验 + +##使用说明 +在页面中使用组件 +``` + +``` +###传入数据格式等更多的说明请下载示例查看,有数据对照注释更容易明白。 + + +##属性说明 + +|属性名 |类型 |说明 | +|-- |-- |-- | +|filterData|Object |必选,菜单数据,数据格式请下载示例查看 | +|defaultSelected|Array |可选,默认选中子菜单数据,需要传入跟``@confirm``输出的index相同的结构数据,如不确定可以先传入数据看下输出的结果 | +|updateMenuName|Boolean |可选,选择子菜单是否自动修改对应的顶部菜单文字,可取值:``true``/``false``,默认值:``true`` | +|menuTop|Number |可选,菜单到顶部距离,单位rpx,一般用于页面有自己写的标题栏或搜索栏时,默认值:0 | +|@confirm|EventHandle |用户选择完毕/收起菜单,触发confirm事件,event= {value,index} | + +###传入数据格式等更多的说明请下载示例查看,有数据对照注释更容易明白。 + + +####偷偷的打广告 +定制模板,开发uniapp、H5+APP、wap2app、PHP,付费咨询指导,有需要加QQ。 + +
+
QQ:565766672 (刮刮卡)
+
+ diff --git a/uni_modules/cc-defineStep/changelog.md b/uni_modules/cc-defineStep/changelog.md new file mode 100644 index 0000000..ba7e813 --- /dev/null +++ b/uni_modules/cc-defineStep/changelog.md @@ -0,0 +1,6 @@ +## 1.0.2(2024-01-07) +组件优化 +## 1.0.1(2023-07-09) +组件优化 +## 1.0.0(2023-07-09) +组件初始化 diff --git a/uni_modules/cc-defineStep/components/cc-defineStep/cc-defineStep.vue b/uni_modules/cc-defineStep/components/cc-defineStep/cc-defineStep.vue new file mode 100644 index 0000000..21c7172 --- /dev/null +++ b/uni_modules/cc-defineStep/components/cc-defineStep/cc-defineStep.vue @@ -0,0 +1,144 @@ + + + + + + + \ No newline at end of file diff --git a/uni_modules/cc-defineStep/package.json b/uni_modules/cc-defineStep/package.json new file mode 100644 index 0000000..3a0793a --- /dev/null +++ b/uni_modules/cc-defineStep/package.json @@ -0,0 +1,86 @@ +{ + "id": "cc-defineStep", + "displayName": "自定义精美steps步骤条进度条插件 物流信息跟踪展示组件 流程审批跟进组件", + "version": "1.0.2", + "description": "自定义精美steps步骤条进度条插件 物流信息跟踪展示组件 流程审批跟进组件", + "keywords": [ + "步骤条", + "时间轴", + "", + "物流信息", + "物流", + "跟踪" +], + "repository": "", + "engines": { + "HBuilderX": "^3.8.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/cc-defineStep/readme.md b/uni_modules/cc-defineStep/readme.md new file mode 100644 index 0000000..5883875 --- /dev/null +++ b/uni_modules/cc-defineStep/readme.md @@ -0,0 +1,170 @@ +# cc-defineStep + +### 我的技术微信公众号 + +查看更多前端组件和框架信息,请关注我的技术微信公众号【前端组件开发】 + +![图片](https://i.postimg.cc/RZ0sjnYP/front-End-Component.jpg) + +#### 使用方法 +```使用方法 + + + + + colors:"#fa436a", + //模拟后台返回的数据 + stepData: [ + { + name: '提交申请', + time: '2023-06-09 20:01:49', + isNow: 0, + type: 1, + desc: '不想要了' + }, + { + name: '等待审核', + time: '2023-06-09 20:01:49', + isNow: 0, + type: 1, + desc: '您的服务单已申请成功,待售后审核中' + }, + { + name: '审核意见', + time: '2023-06-09 20:13:49', + isNow: 0, + type: 1, + desc: '您的售后单已收到,会在24小时与您联系。' + }, + { + name: '审核上门取件', + time: '2023-06-09 20:13:49', + isNow: 0, + type: 1, + desc: '您的服务单已预约时间2023-06-10(周日) 15:00-20:00' + }, + { + name: '取件成功', + time: '2023-06-10 18:54:55', + isNow: 0, + type: 1, + desc: '您的商品已取件成功' + }, + { + name: '商家售后已收到', + time: '2023-06-12 09:01:49', + isNow: 0, + type: 1, + desc: '您的服务单商品已收到' + }, + { + name: '返修换新订单生产', + time: '2023-06-12 13:19:49', + isNow: 0, + type: 1, + desc: '您的服务订单已生成新的订单' + }, + { + name: '返修换新完成', + time: '2023-06-13 12:12:49', + isNow: 1, + type: 1, + desc: '您的服务单已完成,如有疑问请反馈,谢谢~,欢迎再次光临' + }, + ] + + + +``` + +#### HTML代码实现部分 +```html + + + + + + + + +``` \ No newline at end of file diff --git a/uni_modules/le-dropdown/changelog.md b/uni_modules/le-dropdown/changelog.md new file mode 100644 index 0000000..59d70a8 --- /dev/null +++ b/uni_modules/le-dropdown/changelog.md @@ -0,0 +1,13 @@ +## 1.0.4(2023-06-04) +1.更新层级点击不了问题; +2.增加吸顶属性配置; +3.cell类型选中建议增加对号图标; +4.完善文档; +## 1.0.3(2023-04-15) +更新选项增加箭头交互 +## 1.0.2(2023-04-14) +更新示例 +## 1.0.1(2023-04-09) +更新版本标签 +## 1.0.0(2023-04-09) +第一个版本 diff --git a/uni_modules/le-dropdown/components/le-dropdown/components/le-picker.vue b/uni_modules/le-dropdown/components/le-dropdown/components/le-picker.vue new file mode 100644 index 0000000..2c5105f --- /dev/null +++ b/uni_modules/le-dropdown/components/le-dropdown/components/le-picker.vue @@ -0,0 +1,112 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/le-dropdown/components/le-dropdown/le-dropdown.vue b/uni_modules/le-dropdown/components/le-dropdown/le-dropdown.vue new file mode 100644 index 0000000..32bed13 --- /dev/null +++ b/uni_modules/le-dropdown/components/le-dropdown/le-dropdown.vue @@ -0,0 +1,605 @@ + + + + + diff --git a/uni_modules/le-dropdown/components/le-dropdown/utils/cloneDeep.js b/uni_modules/le-dropdown/components/le-dropdown/utils/cloneDeep.js new file mode 100644 index 0000000..215fc46 --- /dev/null +++ b/uni_modules/le-dropdown/components/le-dropdown/utils/cloneDeep.js @@ -0,0 +1,17 @@ +function deepClone(obj) { + let result = typeof obj.splice === "function" ? [] : {}; + if (obj && typeof obj === 'object') { + for (let key in obj) { + if (obj[key] && typeof obj[key] === 'object') { + result[key] = deepClone(obj[key]);//如果对象的属性值为object的时候,递归调用deepClone,即在吧某个值对象复制一份到新的对象的对应值中。 + } else { + result[key] = obj[key];//如果对象的属性值不为object的时候,直接复制参数对象的每一个键值到新的对象对应的键值对中。 + } + + } + return result; + } + return obj; +} + +export default deepClone \ No newline at end of file diff --git a/uni_modules/le-dropdown/components/le-dropdown/utils/hexToRgb.js b/uni_modules/le-dropdown/components/le-dropdown/utils/hexToRgb.js new file mode 100644 index 0000000..ff3be76 --- /dev/null +++ b/uni_modules/le-dropdown/components/le-dropdown/utils/hexToRgb.js @@ -0,0 +1,23 @@ +export default function(hexStr){ + //十六进制颜色值的正则表达式 + let reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; + let sColor = hexStr.toLowerCase(); + if (sColor && reg.test(sColor)) { + if (sColor.length === 4) { + let sColorNew = "#"; + for (let i = 1; i < 4; i += 1) { + sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); + } + sColor = sColorNew; + } + //处理六位的颜色值f + let sColorChange = []; + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`)); + } + let rgbText = sColorChange.join(",") + return rgbText; + } else { + return sColor; + } +} diff --git a/uni_modules/le-dropdown/package.json b/uni_modules/le-dropdown/package.json new file mode 100644 index 0000000..0d5f863 --- /dev/null +++ b/uni_modules/le-dropdown/package.json @@ -0,0 +1,81 @@ +{ + "id": "le-dropdown", + "displayName": "le-dropdown(多功能下拉筛选菜单+主题色)", + "version": "1.0.4", + "description": "下拉筛选、多级级联、排序、点击菜单组件;兼容小程序、H5、app;可以更换主题色。", + "keywords": [ + "le-dropdown", + "dropdown", + "筛选", + "菜单", + "下拉" +], + "repository": "https://gitee.com/le-ui/le-dropdown", + "engines": { + "HBuilderX": "^3.6.18" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "n", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "n", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "u", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/le-dropdown/readme.md b/uni_modules/le-dropdown/readme.md new file mode 100644 index 0000000..c0e13a3 --- /dev/null +++ b/uni_modules/le-dropdown/readme.md @@ -0,0 +1,72 @@ +# le-dropdown + +### 使用方式 + +```javascript + +``` +### 组件的属性说明如下: + +| 属性 | 类型 | 默认值 | 必填 | 说明 | +| ---------------- | ------- | ------- | ---- | ------------------------------ | +| v-model:menuList | Array | [] | 是 | 设置整个菜单筛选的配置数居 | +| themeColor | String | #3185FF | 否 | 整个组件的主题颜色 | +| duration | Number | 300 | 否 | 动画的执行时间 | +| isCeiling | Boolean | false | 否 | 是否自动吸顶(采用sticky规则) | + +#### menuList参数说明: + +| 属性 | 类型 | 必填 | 说明 | +| -------------- | --------------------- | ---- | ---------------------------------------------------------- | +| title | String | 是 | 菜单名称 | +| type | String | 是 | 菜单筛选展示的类型:cell\|picker\|sort\|click\|filter | +| value | Number\|String\|Array | 是 | 菜单对应的值 | +| options | Array | 否 | 菜单配置的组件参数数据,**见下**: | +| children | Array | 否 | 菜单配置的组件参数数据(当前只用在filter类型),**见下**: | +| componentProps | Object | 否 | 菜单对应type的组件参数(当前只用在picker类型),**见下**: | + +##### options参数说明: + +| 属性 | 类型 | 必填 | 说明 | +| -------- | -------------- | ---- | ------------------------------- | +| label | String | 是 | 属性名,显示在页面上 | +| value | Number\|String | 是 | 属性值,保存在父级的value属性上 | +| children | options[] | 否 | 子层级(当前只在picker上使用) | + +##### **children参数(filter)说明:** + +| 属性 | 类型 | 必填 | 说明 | +| ------- | -------------- | ---- | ------------------------------------------- | +| title | String | 是 | 菜单名称 | +| type | String | 是 | 菜单筛选展示的类型:radio\|slider\|checkbox | +| value | Number\|String | 是 | 菜单对应的值 | +| options | Array | 是 | 菜单配置的组件参数数据,**见上**: | + +###### children下type参数说明: + +- radio:单选 +- checkbox:多选 +- slider:进度(存在componentProps与type同级参数,对象里的值为uniapp原生的slider里的参数) + +##### componentProps参数(picker)说明: + +| 属性 | 类型 | 默认值 | 必填 | 说明 | +| ---------- | ------ | ------------------------------------------------------ | ---- | --------------------------------------- | +| colNum | Number | 1 | 否 | 级联的列数 | +| options | Array | - | 是 | 菜单配置的组件参数数据,**见上**: | +| fieldNames | Object | { label: `label`, value: `value`, options: `options` } | 否 | 自定义节点 label、value、options 的字段 | + +### 事件 + +| 事件名称 | 回调参数 | 说明 | +| --------- | -------------------- | ------------------------------------------------------------ | +| onConfirm | (data) => void | 确定事件回调,data为当前确认选中的菜单数据 | +| onChange | (data,index) => void | 改变事件,data为当前操作菜单数据,index为当前操作菜单第index个索引发生变化 | + diff --git a/uni_modules/lsl-protocol-popup/changelog.md b/uni_modules/lsl-protocol-popup/changelog.md new file mode 100644 index 0000000..6645476 --- /dev/null +++ b/uni_modules/lsl-protocol-popup/changelog.md @@ -0,0 +1,35 @@ +## 1.0.12(2023-09-11) +新增 授权时 获取手机号,`具体 移步查看 参数说明` +## 1.0.11(2023-09-11) +新增字段如下: |open_type|String| 'agreePrivacyAuthorization' | 基础库3.0.0 不支持多个 自定义 Button open-type 有效值 多个进行竖线隔开 open-type="getPhoneNumber|agreePrivacyAuthorization" | |is_force_phone|Boolean| false |是否强制授权手机号 open_type 参数中需存在 getPhoneNumber 才会生效 |show_toast_phone|String| |是否强制授权手机号 点击拒绝时提醒内容,不填则不提醒 | +## 1.0.10(2023-09-11) +新增字段如下: + |open_type|String| 'agreePrivacyAuthorization' | 基础库3.0.0 不支持多个 自定义 Button open-type 有效值 多个进行竖线隔开 ```open-type="getPhoneNumber|agreePrivacyAuthorization"``` + | |is_force_phone|Boolean| false |是否强制授权手机号 open_type 参数中需存在 getPhoneNumber 才会生效 +|show_toast_phone|String| |是否强制授权手机号 点击拒绝时提醒内容,不填则不提醒 | +## 1.0.9(2023-09-11) +添加新 特性: + +新增字段如下: +|open_type|String| 'agreePrivacyAuthorization' | `基础库3.0.0 不支持多个` 自定义 Button open-type 有效值 多个进行竖线隔开 open-type="getPhoneNumber|agreePrivacyAuthorization" | +|is_force_phone|Boolean| false |是否强制授权手机号 open_type 参数中需存在 getPhoneNumber 才会生效 | +|show_toast_phone|String| |是否强制授权手机号 点击拒绝时提醒内容,不填则不提醒 | +## 1.0.8(2023-09-11) +文档完善 +## 1.0.7(2023-09-11) +文档 更新 +## 1.0.6(2023-09-09) +1. 点击同意的时候 显示 uni.showTabBar(); +## 1.0.5(2023-09-09) +更新 +## 1.0.4(2023-09-09) +添加协议中间的分隔符号,完善协议 +## 1.0.3(2023-09-09) +添加协议中间的分隔符号 +## 1.0.2(2023-09-09) +协议完善 +## 1.0.1(2023-09-09) +完善文档 +## 1.0.0(2023-09-09) +1. 支持自定义弹窗内容,弹出方式,触发条件,主题颜色 +2. 支持多个自定义协议 和 协议多种模式,[ 文档链接,小程序页面地址 ] diff --git a/uni_modules/lsl-protocol-popup/components/lsl-protocol-popup/lsl-protocol-popup.vue b/uni_modules/lsl-protocol-popup/components/lsl-protocol-popup/lsl-protocol-popup.vue new file mode 100644 index 0000000..2f2a4ba --- /dev/null +++ b/uni_modules/lsl-protocol-popup/components/lsl-protocol-popup/lsl-protocol-popup.vue @@ -0,0 +1,463 @@ + + + + diff --git a/uni_modules/lsl-protocol-popup/package.json b/uni_modules/lsl-protocol-popup/package.json new file mode 100644 index 0000000..7d7945d --- /dev/null +++ b/uni_modules/lsl-protocol-popup/package.json @@ -0,0 +1,84 @@ +{ + "id": "lsl-protocol-popup", + "displayName": "弹窗协议,隐私弹窗,隐私协议,用户协议,授权弹窗", + "version": "1.0.12", + "description": "支持自定义多种多个添加协议列表,支持自定义弹窗内容,弹出方式,触发条件,主题颜色,已添加2023年9月15日起,微信要求小程序开发者同步用户同意的规则后才能调用隐私接口", + "keywords": [ + "lsl-protocol-popup", + "弹窗协议", + "隐私弹窗", + "用户协议", + "授权弹窗" +], + "repository": "", +"engines": { + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + } + } + } + } +} diff --git a/uni_modules/lsl-protocol-popup/readme.md b/uni_modules/lsl-protocol-popup/readme.md new file mode 100644 index 0000000..f616fdb --- /dev/null +++ b/uni_modules/lsl-protocol-popup/readme.md @@ -0,0 +1,99 @@ +# lsl-protocol-popup + +> 目前自测微信小程序. 其他平台可自行测试 + +## 介绍 + +1. 支持 居中弹出,底部弹出 +2. 支持自定义触发条件 +3. 支持自定义主题色 +4. 弹窗时可使用配置参数隐藏tabar,避免弹窗出现时可以跳转页面,关闭弹窗自动展示tabbar +5. 自动获取隐私协议名称 +6. 支持自行添加 其他协议,通过数组传入other +7. 底部弹出时自动设配安全距离 +8. 不依赖第三方弹窗组件 +9. 需要在在 微信 配置项 中 添加 "__usePrivacyCheck__" : true + +## 为什么需要隐私协议 + +###为规范开发者的用户个人信息处理行为,保障用户的合法权益,自2023年9月15日起,对于涉及处理用户个人信息的小程序开发者,微信要求,仅当开发者主动向平台同步用户已阅读并同意了小程序的隐私保护指引等信息处理规则后,方可调用微信提供的隐私接口。 + +## 使用方法 + +导入 `uni_modules` 后直接使用即可 + +### 组件内已处理相关逻辑,开发者仅需要在小程序后台填写所用户隐私保护指引,然后说明引入组件即可 + +
+ +- **使用方法 (功能很全,认真看完 参数说明 配置项)** + +```html + +``` + +## 参数说明 + +|参数|类型|默认值|描述| +|--|--|--|--| +|top_img|String| |顶部图标| +|top_img_style|String| |顶部图标 自定义样式| +|position|String|center|可选 `bottom`,从底部弹出| +|bd_radius|String|18rpx|弹窗圆角| +|color|String|#0396FF|主颜色: 协议名和同意按钮的背景色| +|bgcolor|String|#ffffff|弹窗背景色| +|onNeed|Boolean|true|使用到隐私相关api时触发弹窗,设置为false时初始化弹窗将判断是否需要隐私授权,需要则直接弹出| +|hideTabBar|Boolean|false|是否需要隐藏tabbar,在首页等tabbar页面使用改弹窗时建议改为true| +|title|String|#ffffff|用户隐私保护提示| +|title_style|String| |自定义样式| +|predesc|String|使用前请仔细阅读|协议名称`前`的内容| +|subdesc|String|当您点击同意后,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力。如您拒绝,将无法使用该服务。|协议名称`后`的内容| +|privacyContractNameCustom|String|''|自定义协议名称,不传则由小程序自动获取| +|agree_btn_text|String|同意并继续|同意按钮文案| +|agree_btn_back_color|String|#333333|同意按钮背景色| +|refuse_tbn_text|String||拒绝按钮文案| +|refuse_pop_close|Boolean|true|点击拒绝是否 关闭协议| +|refuse_tbn_exit|Boolean|true|点击拒绝是否 退出小程序| +|symbol|String| 和 |协议中间的分割符号| +|open_type|String| 'agreePrivacyAuthorization' | `基础库3.0.0 不支持多个` 自定义 Button open-type 有效值 多个进行竖线隔开 ``` open-type="getPhoneNumber|agreePrivacyAuthorization" ``` | +|is_force_phone|Boolean| false |是否强制授权手机号 open_type 参数中需存在 getPhoneNumber 才会生效 | +|show_toast_phone|String| |是否强制授权手机号 点击拒绝时提醒内容,不填则不提醒 | +|other|Array| |其他协议列表 数据格式如下| + +other 数据格式如下: + +```javascript +[ + { + { + tit:'《用户协议》', + type:'doc', // doc自行下载打开文档 page跳转页面 + content:'https://cdn.baidu.com/14_dbd7dcc9.docx', // 文档地址/页面跳转地址 + }, + { + tit:'《用户协议》', + type:'page', // doc自行下载打开文档 page跳转页面 + content:'/page/xieyi', // 文档地址/页面跳转地址 + }, + } +] +``` + +
+ +#### `predesc` 和 `subdesc` 的自定义内容,需要主动换行时在内容中添加实体字符 ` ` 即可 + +**事件组件回调说名** + +|参数|描述| +|--|--| +|@agree_call|同意协议| +|@disagree_call|点击拒绝,可以自行处理退出小程序等操作| +|@other_call|点击其他协议回调| +|@get_phone_number|获取授权手机号信息| + diff --git a/uni_modules/px-popup-bottom_1.0.4/components/px-popup-bottom/px-popup-bottom.vue b/uni_modules/px-popup-bottom_1.0.4/components/px-popup-bottom/px-popup-bottom.vue new file mode 100644 index 0000000..e2d0fb5 --- /dev/null +++ b/uni_modules/px-popup-bottom_1.0.4/components/px-popup-bottom/px-popup-bottom.vue @@ -0,0 +1,317 @@ + + + + + diff --git a/uni_modules/px-popup-bottom_1.0.4/package.json b/uni_modules/px-popup-bottom_1.0.4/package.json new file mode 100644 index 0000000..4a6ee2a --- /dev/null +++ b/uni_modules/px-popup-bottom_1.0.4/package.json @@ -0,0 +1,16 @@ +{ + "id": "px-popup-bottom", + "name": "popupBottom 底部弹窗", + "version": "1.0.4", + "description": "底部弹窗组件,带过渡动画,scrollview滚动不穿透,弹窗自动高度,超过最大高度自动滚动条,触底监听", + "keywords": [ + "popup", + "弹窗" + ], + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ] + } +} \ No newline at end of file diff --git a/uni_modules/qiun-data-charts_2.5.0/changelog.md b/uni_modules/qiun-data-charts_2.5.0/changelog.md new file mode 100644 index 0000000..4d470a4 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/changelog.md @@ -0,0 +1,320 @@ +## 2.5.0-20230101(2023-01-01) +- 秋云图表组件 修改条件编译顺序,确保uniapp的cli方式的项目依赖不完整时可以正常显示 +- 秋云图表组件 恢复props属性directory的使用,以修复vue3项目中,开启echarts后,echarts目录识别错误的bug +- uCharts.js 修复区域图、混合图只有一个数据时图表显示不正确的bug +- uCharts.js 修复折线图、区域图中时间轴类别图表tooltip指示点显示不正确的bug +- uCharts.js 修复x轴使用labelCount时,并且boundaryGap = 'justify' 并且关闭Y轴显示的时候,最后一个坐标值不显示的bug +- uCharts.js 修复折线图只有一组数据时 ios16 渲染颜色不正确的bug +- uCharts.js 修复玫瑰图半径显示不正确的bug +- uCharts.js 柱状图、山峰图增加正负图功能,y轴网格如果需要显示0轴则由 min max 及 splitNumber 确定,后续版本优化自动显示0轴 +- uCharts.js 柱状图column增加 opts.extra.column.labelPosition,数据标签位置,有效值为 outside外部, insideTop内顶部, center内中间, bottom内底部 +- uCharts.js 雷达图radar增加 opts.extra.radar.labelShow,否显示各项标识文案是,默认true +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.boxPadding,提示窗边框填充距离,默认3px +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.fontSize,提示窗字体大小配置,默认13px +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.lineHeight,提示窗文字行高,默认20px +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.legendShow,是否显示左侧图例,默认true +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.legendShape,图例形状,图例标识样式,有效值为 auto自动跟随图例, diamond◆, circle●, triangle▲, square■, rect▬, line- +- uCharts.js 标记线markLine增加 opts.extra.markLine.labelFontSize,字体大小配置,默认13px +- uCharts.js 标记线markLine增加 opts.extra.markLine.labelPadding,标签边框内填充距离,默认6px +- uCharts.js 折线图line增加 opts.extra.line.linearType,渐变色类型,可选值 none关闭渐变色,custom 自定义渐变色。使用自定义渐变色时请赋值serie.linearColor作为颜色值 +- uCharts.js 折线图line增加 serie.linearColor,渐变色数组,格式为2维数组[起始位置,颜色值],例如[[0,'#0EE2F8'],[0.3,'#2BDCA8'],[0.6,'#1890FF'],[1,'#9A60B4']] +- uCharts.js 折线图line增加 opts.extra.line.onShadow,是否开启折线阴影,开启后请赋值serie.setShadow阴影设置 +- uCharts.js 折线图line增加 serie.setShadow,阴影配置,格式为4位数组:[offsetX,offsetY,blur,color] +- uCharts.js 折线图line增加 opts.extra.line.animation,动画效果方向,可选值为vertical 垂直动画效果,horizontal 水平动画效果 +- uCharts.js X轴xAxis增加 opts.xAxis.lineHeight,X轴字体行高,默认20px +- uCharts.js X轴xAxis增加 opts.xAxis.marginTop,X轴文字距离轴线的距离,默认0px +- uCharts.js X轴xAxis增加 opts.xAxis.title,当前X轴标题 +- uCharts.js X轴xAxis增加 opts.xAxis.titleFontSize,标题字体大小,默认13px +- uCharts.js X轴xAxis增加 opts.xAxis.titleOffsetY,标题纵向偏移距离,负数为向上偏移,正数向下偏移 +- uCharts.js X轴xAxis增加 opts.xAxis.titleOffsetX,标题横向偏移距离,负数为向左偏移,正数向右偏移 +- uCharts.js X轴xAxis增加 opts.xAxis.titleFontColor,标题字体颜色,默认#666666 + +## 报错TypeError: Cannot read properties of undefined (reading 'length') +- 如果是uni-modules版本组件,请先登录HBuilderX账号; +- 在HBuilderX中的manifest.json,点击重新获取uniapp的appid,或者删除appid重新粘贴,重新运行; +- 如果是cli项目请使用码云上的非uniCloud版本组件; +- 或者添加uniCloud的依赖; +- 或者使用原生uCharts; +## 2.4.5-20221130(2022-11-30) +- uCharts.js 优化tooltip当文字很多变为左侧显示时,如果画布仍显显示不下,提示框错位置变为以左侧0位置起画 +- uCharts.js 折线图修复特殊情况下只有单点数据,并改变线宽后点变为圆形的bug +- uCharts.js 修复Y轴disabled启用后无效并报错的bug +- uCharts.js 修复仪表盘起始结束角度特殊情况下显示不正确的bug +- uCharts.js 雷达图新增参数 opts.extra.radar.radius , 自定义雷达图半径 +- uCharts.js 折线图、区域图增加tooltip指示点,opts.extra.line.activeType/opts.extra.area.activeType,可选值"none"不启用激活指示点,"hollow"空心点模式,"solid"实心点模式 +## 2.4.4-20221102(2022-11-02) +- 秋云图表组件 修复使用echarts时reload、reshow无法调用重新渲染的bug,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/40) +- 秋云图表组件 修复使用echarts时,初始化时宽高不正确的bug,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/42) +- 秋云图表组件 修复uniapp的h5使用history模式时,无法加载echarts的bug +- 秋云图表组件 小程序端@complete、@scrollLeft、@scrollRight、@getTouchStart、@getTouchMove、@getTouchEnd事件增加opts参数传出,方便一些特殊需求的交互获取数据。 + +- uCharts.js 修复calTooltipYAxisData方法内formatter格式化方法未与y轴方法同步的问题,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/43) +- uCharts.js 地图新增参数opts.series[i].fillOpacity,以透明度方式来设置颜色过度效果,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/38) +- uCharts.js 地图新增参数opts.extra.map.active,是否启用点击激活变色 +- uCharts.js 地图新增参数opts.extra.map.activeTextColor,是否启用点击激活变色 +- uCharts.js 地图新增渲染完成事件renderComplete +- uCharts.js 漏斗图修复当部分数据相同时tooltip提示窗点击错误的bug +- uCharts.js 漏斗图新增参数series.data[i].centerText 居中标签文案 +- uCharts.js 漏斗图新增参数series.data[i].centerTextSize 居中标签文案字体大小,默认opts.fontSize +- uCharts.js 漏斗图新增参数series.data[i].centerTextColor 居中标签文案字体颜色,默认#FFFFFF +- uCharts.js 漏斗图新增参数opts.extra.funnel.minSize 最小值的最小宽度,默认0 +- uCharts.js 进度条新增参数opts.extra.arcbar.direction,动画方向,可选值为cw顺时针、ccw逆时针 +- uCharts.js 混合图新增参数opts.extra.mix.line.width,折线的宽度,默认2 +- uCharts.js 修复tooltip开启horizentalLine水平横线标注时,图表显示错位的bug +- uCharts.js 优化tooltip当文字很多变为左侧显示时,如果画布仍显显示不下,提示框错位置变为以左侧0位置起画 +- uCharts.js 修复开启滚动条后X轴文字超出绘图区域后的隐藏逻辑 +- uCharts.js 柱状图、条状图修复堆叠模式不能通过{value,color}赋值单个柱子颜色的问题 +- uCharts.js 气泡图修复不识别series.textSize和series.textColor的bug + +## 报错TypeError: Cannot read properties of undefined (reading 'length') +1. 如果是uni-modules版本组件,请先登录HBuilderX账号; +2. 在HBuilderX中的manifest.json,点击重新获取uniapp的appid,或者删除appid重新粘贴,重新运行; +3. 如果是cli项目请使用码云上的非uniCloud版本组件; +4. 或者添加uniCloud的依赖; +5. 或者使用原生uCharts; +## 2.4.3-20220505(2022-05-05) +- 秋云图表组件 修复开启canvas2d后将series赋值为空数组显示加载图标时,再次赋值后画布闪动的bug +- 秋云图表组件 修复升级hbx最新版后ECharts的highlight方法报错的bug +- uCharts.js 雷达图新增参数opts.extra.radar.gridEval,数据点位网格抽希,默认1 +- uCharts.js 雷达图新增参数opts.extra.radar.axisLabel, 是否显示刻度点值,默认false +- uCharts.js 雷达图新增参数opts.extra.radar.axisLabelTofix,刻度点值小数位数,默认0 +- uCharts.js 雷达图新增参数opts.extra.radar.labelPointShow,是否显示末端刻度圆点,默认false +- uCharts.js 雷达图新增参数opts.extra.radar.labelPointRadius,刻度圆点的半径,默认3 +- uCharts.js 雷达图新增参数opts.extra.radar.labelPointColor,刻度圆点的颜色,默认#cccccc +- uCharts.js 雷达图新增参数opts.extra.radar.linearType,渐变色类型,可选值"none"关闭渐变,"custom"开启渐变 +- uCharts.js 雷达图新增参数opts.extra.radar.customColor,自定义渐变颜色,数组类型对应series的数组长度以匹配不同series颜色的不同配色方案,例如["#FA7D8D", "#EB88E2"] +- uCharts.js 雷达图优化支持series.textColor、series.textSize属性 +- uCharts.js 柱状图中温度计式图标,优化支持全圆角类型,修复边框有缝隙的bug,详见官网【演示】中的温度计图表 +- uCharts.js 柱状图新增参数opts.extra.column.activeWidth,当前点击柱状图的背景宽度,默认一个单元格单位 +- uCharts.js 混合图增加opts.extra.mix.area.gradient 区域图是否开启渐变色 +- uCharts.js 混合图增加opts.extra.mix.area.opacity 区域图透明度,默认0.2 +- uCharts.js 饼图、圆环图、玫瑰图、漏斗图,增加opts.series[0].data[i].labelText,自定义标签文字,避免formatter格式化的繁琐,详见官网【演示】中的饼图 +- uCharts.js 饼图、圆环图、玫瑰图、漏斗图,增加opts.series[0].data[i].labelShow,自定义是否显示某一个指示标签,避免因饼图类别太多导致标签重复或者居多导致图形变形的问题,详见官网【演示】中的饼图 +- uCharts.js 增加opts.series[i].legendText/opts.series[0].data[i].legendText(与series.name同级)自定义图例显示文字的方法 +- uCharts.js 优化X轴、Y轴formatter格式化方法增加形参,统一为fromatter:function(value,index,opts){} +- uCharts.js 修复横屏模式下无法使用双指缩放方法的bug +- uCharts.js 修复当只有一条数据或者多条数据值相等的时候Y轴自动计算的最大值错误的bug +- 【官网模板】增加外部自定义图例与图表交互的例子,[点击跳转](https://www.ucharts.cn/v2/#/layout/info?id=2) + +## 注意:非unimodules 版本如因更新 hbx 至 3.4.7 导致报错如下,请到码云更新非 unimodules 版本组件,[点击跳转](https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6) +> Error in callback for immediate watcher "uchartsOpts": "SyntaxError: Unexpected token u in JSON at position 0" +## 2.4.2-20220421(2022-04-21) +- 秋云图表组件 修复HBX升级3.4.6.20220420版本后echarts报错的问题 +## 2.4.2-20220420(2022-04-20) +## 重要!此版本uCharts新增了很多功能,修复了诸多已知问题 +- 秋云图表组件 新增onzoom开启双指缩放功能(仅uCharts),前提需要直角坐标系类图表类型,并且ontouch为true、opts.enableScroll为true,详见实例项目K线图 +- 秋云图表组件 新增optsWatch是否监听opts变化,关闭optsWatch后,动态修改opts不会触发图表重绘 +- 秋云图表组件 修复开启canvas2d功能后,动态更新数据后画布闪动的bug +- 秋云图表组件 去除directory属性,改为自动获取echarts.min.js路径(升级不受影响) +- 秋云图表组件 增加getImage()方法及@getImage事件,通过ref调用getImage()方法获,触发@getImage事件获取当前画布的base64图片文件流。 +- 秋云图表组件 支付宝、字节跳动、飞书、快手小程序支持开启canvas2d同层渲染设置。 +- 秋云图表组件 新增加【非uniCloud】版本组件,避免有些不需要uniCloud的使用组件发布至小程序需要提交隐私声明问题,请到码云[【非uniCloud版本】](https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6),或npm[【非uniCloud版本】](https://www.npmjs.com/package/@qiun/uni-ucharts)下载使用。 +- uCharts.js 新增dobuleZoom双指缩放功能 +- uCharts.js 新增山峰图type="mount",数据格式为饼图类格式,不需要传入categories,具体详见新版官网在线演示 +- uCharts.js 修复折线图当数据中存在null时tooltip报错的bug +- uCharts.js 修复饼图类当画布比较小时自动计算的半径是负数报错的bug +- uCharts.js 统一各图表类型的series.formatter格式化方法的形参为(val, index, series, opts),方便格式化时有更多参数可用 +- uCharts.js 标记线功能增加labelText自定义显示文字,增加labelAlign标签显示位置(左侧或右侧),增加标签显示位置微调labelOffsetX、labelOffsetY +- uCharts.js 修复条状图当数值很小时开启圆角后样式错误的bug +- uCharts.js 修复X轴开启disabled后,X轴仍占用空间的bug +- uCharts.js 修复X轴开启滚动条并且开启rotateLabel后,X轴文字与滚动条重叠的bug +- uCharts.js 增加X轴rotateAngle文字旋转自定义角度,取值范围(-90至90) +- uCharts.js 修复地图文字标签层级显示不正确的bug +- uCharts.js 修复饼图、圆环图、玫瑰图当数据全部为0的时候不显示数据标签的bug +- uCharts.js 修复当opts.padding上边距为0时,Y轴顶部刻度标签位置不正确的bug + +## 另外我们还开发了各大原生小程序组件,已发布至码云和npm +[https://gitee.com/uCharts/uCharts](https://gitee.com/uCharts/uCharts) +[https://www.npmjs.com/~qiun](https://www.npmjs.com/~qiun) + +## 对于原生uCharts文档我们已上线新版官方网站,详情点击下面链接进入官网 +[https://www.uCharts.cn/v2/](https://www.ucharts.cn/v2/) +## 2.3.7-20220122(2022-01-22) +## 重要!使用vue3编译,请使用cli模式并升级至最新依赖,HbuilderX编译需要使用3.3.8以上版本 +- uCharts.js 修复uni-app平台组件模式使用vue3编译到小程序报错的bug。 +## 2.3.7-20220118(2022-01-18) +## 注意,使用vue3的前提是需要3.3.8.20220114-alpha版本的HBuilder! +## 2.3.67-20220118(2022-01-18) +- 秋云图表组件 组件初步支持vue3,全端编译会有些问题,具体详见下面修改: +1. 小程序端运行时,在uni_modules文件夹的qiun-data-charts.js中搜索 new uni_modules_qiunDataCharts_js_sdk_uCharts_uCharts.uCharts,将.uCharts去掉。 +2. 小程序端发行时,在uni_modules文件夹的qiun-data-charts.js中搜索 new e.uCharts,将.uCharts去掉,变为 new e。 +3. 如果觉得上述步骤比较麻烦,如果您的项目只编译到小程序端,可以修改u-charts.js最后一行导出方式,将 export default uCharts;变更为 export default { uCharts: uCharts }; 这样变更后,H5和App端的renderjs会有问题,请开发者自行选择。(此问题非组件问题,请等待DC官方修复Vue3的小程序端) +## 2.3.6-20220111(2022-01-11) +- 秋云图表组件 修改组件 props 属性中的 background 默认值为 rgba(0,0,0,0) +## 2.3.6-20211201(2021-12-01) +- uCharts.js 修复bar条状图开启圆角模式时,值很小时圆角渲染错误的bug +## 2.3.5-20211014(2021-10-15) +- uCharts.js 增加vue3的编译支持(仅原生uCharts,qiun-data-charts组件后续会支持,请关注更新) +## 2.3.4-20211012(2021-10-12) +- 秋云图表组件 修复 mac os x 系统 mouseover 事件丢失的 bug +## 2.3.3-20210706(2021-07-06) +- uCharts.js 增加雷达图开启数据点值(opts.dataLabel)的显示 +## 2.3.2-20210627(2021-06-27) +- 秋云图表组件 修复tooltipCustom个别情况下传值不正确报错TypeError: Cannot read property 'name' of undefined的bug +## 2.3.1-20210616(2021-06-16) +- uCharts.js 修复圆角柱状图使用4角圆角时,当数值过大时不正确的bug +## 2.3.0-20210612(2021-06-12) +- uCharts.js 【重要】uCharts增加nvue兼容,可在nvue项目中使用gcanvas组件渲染uCharts,[详见码云uCharts-demo-nvue](https://gitee.com/uCharts/uCharts) +- 秋云图表组件 增加tapLegend属性,是否开启图例点击交互事件 +- 秋云图表组件 getIndex事件中增加返回uCharts实例中的opts参数,以便在页面中调用参数 +- 示例项目 pages/other/other.vue增加app端自定义tooltip的方法,详见showOptsTooltip方法 +## 2.2.1-20210603(2021-06-03) +- uCharts.js 修复饼图、圆环图、玫瑰图,当起始角度不为0时,tooltip位置不准确的bug +- uCharts.js 增加温度计式柱状图开启顶部半圆形的配置 +## 2.2.0-20210529(2021-05-29) +- uCharts.js 增加条状图type="bar" +- 示例项目 pages/ucharts/ucharts.vue增加条状图的demo +## 2.1.7-20210524(2021-05-24) +- uCharts.js 修复大数据量模式下曲线图不平滑的bug +## 2.1.6-20210523(2021-05-23) +- 秋云图表组件 修复小程序端开启滚动条更新数据后滚动条位置不符合预期的bug +## 2.1.5-2021051702(2021-05-17) +- uCharts.js 修复自定义Y轴min和max值为0时不能正确显示的bug +## 2.1.5-20210517(2021-05-17) +- uCharts.js 修复Y轴自定义min和max时,未按指定的最大值最小值显示坐标轴刻度的bug +## 2.1.4-20210516(2021-05-16) +- 秋云图表组件 优化onWindowResize防抖方法 +- 秋云图表组件 修复APP端uCharts更新数据时,清空series显示loading图标后再显示图表,图表抖动的bug +- uCharts.js 修复开启canvas2d后,x轴、y轴、series自定义字体大小未按比例缩放的bug +- 示例项目 修复format-e.vue拼写错误导致app端使用uCharts渲染图表 +## 2.1.3-20210513(2021-05-13) +- 秋云图表组件 修改uCharts变更chartData数据为updateData方法,支持带滚动条的数据动态打点 +- 秋云图表组件 增加onWindowResize防抖方法 fix by ど誓言,如尘般染指流年づ +- 秋云图表组件 H5或者APP变更chartData数据显示loading图表时,原数据闪现的bug +- 秋云图表组件 props增加errorReload禁用错误点击重新加载的方法 +- uCharts.js 增加tooltip显示category(x轴对应点位)标题的功能,opts.extra.tooltip.showCategory,默认为false +- uCharts.js 修复mix混合图只有柱状图时,tooltip的分割线显示位置不正确的bug +- uCharts.js 修复开启滚动条,图表在拖动中动态打点,滚动条位置不正确的bug +- uCharts.js 修复饼图类数据格式为echarts数据格式,series为空数组报错的bug +- 示例项目 修改uCharts.js更新到v2.1.2版本后,@getIndex方法获取索引值变更为e.currentIndex.index +- 示例项目 pages/updata/updata.vue增加滚动条拖动更新(数据动态打点)的demo +- 示例项目 pages/other/other.vue增加errorReload禁用错误点击重新加载的demo +## 2.1.2-20210509(2021-05-09) +秋云图表组件 修复APP端初始化时就传入chartData或lacaldata不显示图表的bug +## 2.1.1-20210509(2021-05-09) +- 秋云图表组件 变更ECharts的eopts配置在renderjs内执行,支持在config-echarts.js配置文件内写function配置。 +- 秋云图表组件 修复APP端报错Prop being mutated: "onmouse"错误的bug。 +- 秋云图表组件 修复APP端报错Error: Not Found:Page[6][-1,27] at view.umd.min.js:1的bug。 +## 2.1.0-20210507(2021-05-07) +- 秋云图表组件 修复初始化时就有数据或者数据更新的时候loading加载动画闪动的bug +- uCharts.js 修复x轴format方法categories为字符串类型时返回NaN的bug +- uCharts.js 修复series.textColor、legend.fontColor未执行全局默认颜色的bug +## 2.1.0-20210506(2021-05-06) +- 秋云图表组件 修复极个别情况下报错item.properties undefined的bug +- 秋云图表组件 修复极个别情况下关闭加载动画reshow不起作用,无法显示图表的bug +- 示例项目 pages/ucharts/ucharts.vue 增加时间轴折线图(type="tline")、时间轴区域图(type="tarea")、散点图(type="scatter")、气泡图demo(type="bubble")、倒三角形漏斗图(opts.extra.funnel.type="triangle")、金字塔形漏斗图(opts.extra.funnel.type="pyramid") +- 示例项目 pages/format-u/format-u.vue 增加X轴format格式化示例 +- uCharts.js 升级至v2.1.0版本 +- uCharts.js 修复 玫瑰图面积模式点击tooltip位置不正确的bug +- uCharts.js 修复 玫瑰图点击图例,只剩一个类别显示空白的bug +- uCharts.js 修复 饼图类图点击图例,其他图表tooltip位置某些情况下不准的bug +- uCharts.js 修复 x轴为矢量轴(时间轴)情况下,点击tooltip位置不正确的bug +- uCharts.js 修复 词云图获取点击索引偶尔不准的bug +- uCharts.js 增加 直角坐标系图表X轴format格式化方法(原生uCharts.js用法请使用formatter) +- uCharts.js 增加 漏斗图扩展配置,倒三角形(opts.extra.funnel.type="triangle"),金字塔形(opts.extra.funnel.type="pyramid") +- uCharts.js 增加 散点图(opts.type="scatter")、气泡图(opts.type="bubble") +- 后期计划 完善散点图、气泡图,增加markPoints标记点,增加横向条状图。 +## 2.0.0-20210502(2021-05-02) +- uCharts.js 修复词云图获取点击索引不正确的bug +## 2.0.0-20210501(2021-05-01) +- 秋云图表组件 修复QQ小程序、百度小程序在关闭动画效果情况下,v-for循环使用图表,显示不正确的bug +## 2.0.0-20210426(2021-04-26) +- 秋云图表组件 修复QQ小程序不支持canvas2d的bug +- 秋云图表组件 修复钉钉小程序某些情况点击坐标计算错误的bug +- uCharts.js 增加 extra.column.categoryGap 参数,柱状图类每个category点位(X轴点)柱子组之间的间距 +- uCharts.js 增加 yAxis.data[i].titleOffsetY 参数,标题纵向偏移距离,负数为向上偏移,正数向下偏移 +- uCharts.js 增加 yAxis.data[i].titleOffsetX 参数,标题横向偏移距离,负数为向左偏移,正数向右偏移 +- uCharts.js 增加 extra.gauge.labelOffset 参数,仪表盘标签文字径向便宜距离,默认13px +## 2.0.0-20210422-2(2021-04-22) +秋云图表组件 修复 formatterAssign 未判断 args[key] == null 的情况导致栈溢出的 bug +## 2.0.0-20210422(2021-04-22) +- 秋云图表组件 修复H5、APP、支付宝小程序、微信小程序canvas2d模式下横屏模式的bug +## 2.0.0-20210421(2021-04-21) +- uCharts.js 修复多行图例的情况下,图例在上方或者下方时,图例float为左侧或者右侧时,第二行及以后的图例对齐方式不正确的bug +## 2.0.0-20210420(2021-04-20) +- 秋云图表组件 修复微信小程序开启canvas2d模式后,windows版微信小程序不支持canvas2d模式的bug +- 秋云图表组件 修改非uni_modules版本为v2.0版本qiun-data-charts组件 +## 2.0.0-20210419(2021-04-19) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 修复混合图中柱状图单独设置颜色不生效的bug +- uCharts.js 修复多Y轴单独设置fontSize时,开启canvas2d后,未对应放大字体的bug +## 2.0.0-20210418(2021-04-18) +- 秋云图表组件 增加directory配置,修复H5端history模式下如果发布到二级目录无法正确加载echarts.min.js的bug +## 2.0.0-20210416(2021-04-16) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复APP端某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员 +- 示例项目 修复APP端v-for循环某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员 +- uCharts.js 修复非直角坐标系tooltip提示窗右侧超出未变换方向显示的bug +## 2.0.0-20210415(2021-04-15) +- 秋云图表组件 修复H5端发布到二级目录下echarts无法加载的bug +- 秋云图表组件 修复某些情况下echarts.off('finished')移除监听事件报错的bug +## 2.0.0-20210414(2021-04-14) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复H5端在cli项目下ECharts引用地址错误的bug +- 示例项目 增加ECharts的formatter用法的示例(详见示例项目format-e.vue) +- uCharts.js 增加圆环图中心背景色的配置extra.ring.centerColor +- uCharts.js 修复微信小程序安卓端柱状图开启透明色后显示不正确的bug +## 2.0.0-20210413(2021-04-13) +- 秋云图表组件 修复百度小程序多个图表真机未能正确获取根元素dom尺寸的bug +- 秋云图表组件 修复百度小程序横屏模式方向不正确的bug +- 秋云图表组件 修改ontouch时,@getTouchStart@getTouchMove@getTouchEnd的触发条件 +- uCharts.js 修复饼图类数据格式series属性不生效的bug +- uCharts.js 增加时序区域图 详见示例项目中ucharts.vue +## 2.0.0-20210412-2(2021-04-12) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX。如仍不好用,请重启电脑,此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复uCharts在APP端横屏模式下不能正确渲染的bug +- 示例项目 增加ECharts柱状图渐变色、圆角柱状图、横向柱状图(条状图)的示例 +## 2.0.0-20210412(2021-04-12) +- 秋云图表组件 修复created中判断echarts导致APP端无法识别,改回mounted中判断echarts初始化 +- uCharts.js 修复2d模式下series.textOffset未乘像素比的bug +## 2.0.0-20210411(2021-04-11) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册组件,请重启HBuilderX,并清空小程序开发者工具缓存。 +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 折线图区域图增加connectNulls断点续连的功能,详见示例项目中ucharts.vue +- 秋云图表组件 变更初始化方法为created,变更type2d默认值为true,优化2d模式下组件初始化后dom获取不到的bug +- 秋云图表组件 修复左右布局时,右侧图表点击坐标错误的bug,修复tooltip柱状图自定义颜色显示object的bug +## 2.0.0-20210410(2021-04-10) +- 修复左右布局时,右侧图表点击坐标错误的bug,修复柱状图自定义颜色tooltip显示object的bug +- 增加标记线及柱状图自定义颜色的demo +## 2.0.0-20210409(2021-04-08) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn) +## 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 修复钉钉小程序百度小程序measureText不准确的bug,修复2d模式下饼图类activeRadius为按比例放大的bug +- 修复组件在支付宝小程序端点击位置不准确的bug +## 2.0.0-20210408(2021-04-07) +- 修复组件在支付宝小程序端不能显示的bug(目前支付宝小程不能点击交互,后续修复) +- uCharts.js 修复高分屏下柱状图类,圆弧进度条 自定义宽度不能按比例放大的bug +## 2.0.0-20210407(2021-04-06) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn) +## 增加 通过tofix和unit快速格式化y轴的demo add by `howcode` +## 增加 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +## 2.0.0-20210406(2021-04-05) +# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页 +## 2.0.0(2021-04-05) +# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页 diff --git a/uni_modules/qiun-data-charts_2.5.0/components/qiun-data-charts/qiun-data-charts.vue b/uni_modules/qiun-data-charts_2.5.0/components/qiun-data-charts/qiun-data-charts.vue new file mode 100644 index 0000000..ab95369 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/components/qiun-data-charts/qiun-data-charts.vue @@ -0,0 +1,1618 @@ + + + + + + + + + + diff --git a/uni_modules/qiun-data-charts_2.5.0/components/qiun-error/qiun-error.vue b/uni_modules/qiun-data-charts_2.5.0/components/qiun-error/qiun-error.vue new file mode 100644 index 0000000..b15b19f --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/components/qiun-error/qiun-error.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading1.vue b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading1.vue new file mode 100644 index 0000000..b701394 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading1.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading2.vue b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading2.vue new file mode 100644 index 0000000..7541b31 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading2.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading3.vue b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading3.vue new file mode 100644 index 0000000..8e14db3 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading3.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading4.vue b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading4.vue new file mode 100644 index 0000000..77c55b7 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading4.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading5.vue b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading5.vue new file mode 100644 index 0000000..cb93a55 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/loading5.vue @@ -0,0 +1,229 @@ + + + + diff --git a/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/qiun-loading.vue b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/qiun-loading.vue new file mode 100644 index 0000000..7789060 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/components/qiun-loading/qiun-loading.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/config-echarts.js b/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/config-echarts.js new file mode 100644 index 0000000..7b8168f --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/config-echarts.js @@ -0,0 +1,422 @@ +/* + * uCharts® + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 + * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts®官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +// 通用配置项 + +// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性 +const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; + +const cfe = { + //demotype为自定义图表类型 + "type": ["pie", "ring", "rose", "funnel", "line", "column", "area", "radar", "gauge","candle","demotype"], + //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型例如最后的"demotype" + "categories": ["line", "column", "area", "radar", "gauge", "candle","demotype"], + //instance为实例变量承载属性,option为eopts承载属性,不要删除 + "instance": {}, + "option": {}, + //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换 + "formatter":{ + "tooltipDemo1":function(res){ + let result = '' + for (let i in res) { + if (i == 0) { + result += res[i].axisValueLabel + '年销售额' + } + let value = '--' + if (res[i].data !== null) { + value = res[i].data + } + // #ifdef H5 + result += '\n' + res[i].seriesName + ':' + value + ' 万元' + // #endif + + // #ifdef APP-PLUS + result += '
' + res[i].marker + res[i].seriesName + ':' + value + ' 万元' + // #endif + } + return result; + }, + legendFormat:function(name){ + return "自定义图例+"+name; + }, + yAxisFormatDemo:function (value, index) { + return value + '元'; + }, + seriesFormatDemo:function(res){ + return res.name + '年' + res.value + '元'; + } + }, + //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在eopts参数,会将demotype与eopts中option合并后渲染图表。 + "demotype":{ + "color": color, + //在这里填写echarts的option即可 + + }, + //下面是自定义配置,请添加项目所需的通用配置 + "column": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'bar', + "data": [], + "barwidth": 20, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "line": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'line', + "data": [], + "barwidth": 20, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "area": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'line', + "data": [], + "areaStyle": {}, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "pie": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "grid": { + "top": 40, + "bottom": 30, + "right": 15, + "left": 15 + }, + "legend": { + "bottom": 'left', + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": '50%', + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "ring": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "grid": { + "top": 40, + "bottom": 30, + "right": 15, + "left": 15 + }, + "legend": { + "bottom": 'left', + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": ['40%', '70%'], + "avoidLabelOverlap": false, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + "labelLine": { + "show": true + }, + }, + }, + "rose": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "legend": { + "top": 'bottom' + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": "55%", + "center": ['50%', '50%'], + "roseType": 'area', + }, + }, + "funnel": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item', + "formatter": "{b} : {c}%" + }, + "legend": { + "top": 'bottom' + }, + "seriesTemplate": { + "name": '', + "type": 'funnel', + "left": '10%', + "top": 60, + "bottom": 60, + "width": '80%', + "min": 0, + "max": 100, + "minSize": '0%', + "maxSize": '100%', + "sort": 'descending', + "gap": 2, + "label": { + "show": true, + "position": 'inside' + }, + "labelLine": { + "length": 10, + "lineStyle": { + "width": 1, + "type": 'solid' + } + }, + "itemStyle": { + "bordercolor": '#fff', + "borderwidth": 1 + }, + "emphasis": { + "label": { + "fontSize": 20 + } + }, + "data": [], + }, + }, + "gauge": { + "color": color, + "tooltip": { + "formatter": '{a}
{b} : {c}%' + }, + "seriesTemplate": { + "name": '业务指标', + "type": 'gauge', + "detail": {"formatter": '{value}%'}, + "data": [{"value": 50, "name": '完成率'}] + }, + }, + "candle": { + "xAxis": { + "data": [] + }, + "yAxis": {}, + "color": color, + "title": { + "text": '' + }, + "dataZoom": [{ + "type": 'inside', + "xAxisIndex": [0, 1], + "start": 10, + "end": 100 + }, + { + "show": true, + "xAxisIndex": [0, 1], + "type": 'slider', + "bottom": 10, + "start": 10, + "end": 100 + } + ], + "seriesTemplate": { + "name": '', + "type": 'k', + "data": [], + }, + } +} + +export default cfe; \ No newline at end of file diff --git a/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/config-ucharts.js b/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/config-ucharts.js new file mode 100644 index 0000000..17b28b3 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/config-ucharts.js @@ -0,0 +1,606 @@ +/* + * uCharts® + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 + * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts®官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性 +const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; + +//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改 +const formatDateTime = (timeStamp, returnType)=>{ + var date = new Date(); + date.setTime(timeStamp * 1000); + var y = date.getFullYear(); + var m = date.getMonth() + 1; + m = m < 10 ? ('0' + m) : m; + var d = date.getDate(); + d = d < 10 ? ('0' + d) : d; + var h = date.getHours(); + h = h < 10 ? ('0' + h) : h; + var minute = date.getMinutes(); + var second = date.getSeconds(); + minute = minute < 10 ? ('0' + minute) : minute; + second = second < 10 ? ('0' + second) : second; + if(returnType == 'full'){return y + '-' + m + '-' + d + ' '+ h +':' + minute + ':' + second;} + if(returnType == 'y-m-d'){return y + '-' + m + '-' + d;} + if(returnType == 'h:m'){return h +':' + minute;} + if(returnType == 'h:m:s'){return h +':' + minute +':' + second;} + return [y, m, d, h, minute, second]; +} + +const cfu = { + //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可 + "type":["pie","ring","rose","word","funnel","map","arcbar","line","column","mount","bar","area","radar","gauge","candle","mix","tline","tarea","scatter","bubble","demotype"], + "range":["饼状图","圆环图","玫瑰图","词云图","漏斗图","地图","圆弧进度条","折线图","柱状图","山峰图","条状图","区域图","雷达图","仪表盘","K线图","混合图","时间轴折线","时间轴区域","散点图","气泡图","自定义类型"], + //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype" + //自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories + "categories":["line","column","mount","bar","area","radar","gauge","candle","mix","demotype"], + //instance为实例变量承载属性,不要删除 + "instance":{}, + //option为opts及eopts承载属性,不要删除 + "option":{}, + //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换 + "formatter":{ + "yAxisDemo1":function(val, index, opts){return val+'元'}, + "yAxisDemo2":function(val, index, opts){return val.toFixed(2)}, + "xAxisDemo1":function(val, index, opts){return val+'年';}, + "xAxisDemo2":function(val, index, opts){return formatDateTime(val,'h:m')}, + "seriesDemo1":function(val, index, series, opts){return val+'元'}, + "tooltipDemo1":function(item, category, index, opts){ + if(index==0){ + return '随便用'+item.data+'年' + }else{ + return '其他我没改'+item.data+'天' + } + }, + "pieDemo":function(val, index, series, opts){ + if(index !== undefined){ + return series[index].name+':'+series[index].data+'元' + } + }, + }, + //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。 + "demotype":{ + //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置 + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "line": { + "type": "curve", + "width": 2 + }, + } + }, + //下面是自定义配置,请添加项目所需的通用配置 + "pie":{ + "type": "pie", + "color": color, + "padding": [5,5,5,5], + "extra": { + "pie": { + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": true, + "borderWidth": 3, + "borderColor": "#FFFFFF" + }, + } + }, + "ring":{ + "type": "ring", + "color": color, + "padding": [5,5,5,5], + "rotate": false, + "dataLabel": true, + "legend": { + "show": true, + "position": "right", + "lineHeight": 25, + }, + "title": { + "name": "收益率", + "fontSize": 15, + "color": "#666666" + }, + "subtitle": { + "name": "70%", + "fontSize": 25, + "color": "#7cb5ec" + }, + "extra": { + "ring": { + "ringWidth":30, + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": true, + "borderWidth": 3, + "borderColor": "#FFFFFF" + }, + }, + }, + "rose":{ + "type": "rose", + "color": color, + "padding": [5,5,5,5], + "legend": { + "show": true, + "position": "left", + "lineHeight": 25, + }, + "extra": { + "rose": { + "type": "area", + "minRadius": 50, + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": false, + "borderWidth": 2, + "borderColor": "#FFFFFF" + }, + } + }, + "word":{ + "type": "word", + "color": color, + "extra": { + "word": { + "type": "normal", + "autoColors": false + } + } + }, + "funnel":{ + "type": "funnel", + "color": color, + "padding": [15,15,0,15], + "extra": { + "funnel": { + "activeOpacity": 0.3, + "activeWidth": 10, + "border": true, + "borderWidth": 2, + "borderColor": "#FFFFFF", + "fillOpacity": 1, + "labelAlign": "right" + }, + } + }, + "map":{ + "type": "map", + "color": color, + "padding": [0,0,0,0], + "dataLabel": true, + "extra": { + "map": { + "border": true, + "borderWidth": 1, + "borderColor": "#666666", + "fillOpacity": 0.6, + "activeBorderColor": "#F04864", + "activeFillColor": "#FACC14", + "activeFillOpacity": 1 + }, + } + }, + "arcbar":{ + "type": "arcbar", + "color": color, + "title": { + "name": "百分比", + "fontSize": 25, + "color": "#00FF00" + }, + "subtitle": { + "name": "默认标题", + "fontSize": 15, + "color": "#666666" + }, + "extra": { + "arcbar": { + "type": "default", + "width": 12, + "backgroundColor": "#E9E9E9", + "startAngle": 0.75, + "endAngle": 0.25, + "gap": 2 + } + } + }, + "line":{ + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "line": { + "type": "straight", + "width": 2, + "activeType": "hollow" + }, + } + }, + "tline":{ + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": false, + "boundaryGap":"justify", + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + "data":[ + { + "min":0, + "max":80 + } + ] + }, + "legend": { + }, + "extra": { + "line": { + "type": "curve", + "width": 2, + "activeType": "hollow" + }, + } + }, + "tarea":{ + "type": "area", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + "boundaryGap":"justify", + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + "data":[ + { + "min":0, + "max":80 + } + ] + }, + "legend": { + }, + "extra": { + "area": { + "type": "curve", + "opacity": 0.2, + "addLine": true, + "width": 2, + "gradient": true, + "activeType": "hollow" + }, + } + }, + "column":{ + "type": "column", + "color": color, + "padding": [15,15,0,5], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "data":[{"min":0}] + }, + "legend": { + }, + "extra": { + "column": { + "type": "group", + "width": 30, + "activeBgColor": "#000000", + "activeBgOpacity": 0.08 + }, + } + }, + "mount":{ + "type": "mount", + "color": color, + "padding": [15,15,0,5], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "data":[{"min":0}] + }, + "legend": { + }, + "extra": { + "mount": { + "type": "mount", + "widthRatio": 1.5, + }, + } + }, + "bar":{ + "type": "bar", + "color": color, + "padding": [15,30,0,5], + "xAxis": { + "boundaryGap":"justify", + "disableGrid":false, + "min":0, + "axisLine":false + }, + "yAxis": { + }, + "legend": { + }, + "extra": { + "bar": { + "type": "group", + "width": 30, + "meterBorde": 1, + "meterFillColor": "#FFFFFF", + "activeBgColor": "#000000", + "activeBgOpacity": 0.08 + }, + } + }, + "area":{ + "type": "area", + "color": color, + "padding": [15,15,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "area": { + "type": "straight", + "opacity": 0.2, + "addLine": true, + "width": 2, + "gradient": false, + "activeType": "hollow" + }, + } + }, + "radar":{ + "type": "radar", + "color": color, + "padding": [5,5,5,5], + "dataLabel": false, + "legend": { + "show": true, + "position": "right", + "lineHeight": 25, + }, + "extra": { + "radar": { + "gridType": "radar", + "gridColor": "#CCCCCC", + "gridCount": 3, + "opacity": 0.2, + "max": 200, + "labelShow": true + }, + } + }, + "gauge":{ + "type": "gauge", + "color": color, + "title": { + "name": "66Km/H", + "fontSize": 25, + "color": "#2fc25b", + "offsetY": 50 + }, + "subtitle": { + "name": "实时速度", + "fontSize": 15, + "color": "#1890ff", + "offsetY": -50 + }, + "extra": { + "gauge": { + "type": "default", + "width": 30, + "labelColor": "#666666", + "startAngle": 0.75, + "endAngle": 0.25, + "startNumber": 0, + "endNumber": 100, + "labelFormat": "", + "splitLine": { + "fixRadius": 0, + "splitNumber": 10, + "width": 30, + "color": "#FFFFFF", + "childNumber": 5, + "childWidth": 12 + }, + "pointer": { + "width": 24, + "color": "auto" + } + } + } + }, + "candle":{ + "type": "candle", + "color": color, + "padding": [15,15,0,15], + "enableScroll": true, + "enableMarkLine": true, + "dataLabel": false, + "xAxis": { + "labelCount": 4, + "itemCount": 40, + "disableGrid": true, + "gridColor": "#CCCCCC", + "gridType": "solid", + "dashLength": 4, + "scrollShow": true, + "scrollAlign": "left", + "scrollColor": "#A6A6A6", + "scrollBackgroundColor": "#EFEBEF" + }, + "yAxis": { + }, + "legend": { + }, + "extra": { + "candle": { + "color": { + "upLine": "#f04864", + "upFill": "#f04864", + "downLine": "#2fc25b", + "downFill": "#2fc25b" + }, + "average": { + "show": true, + "name": ["MA5","MA10","MA30"], + "day": [5,10,20], + "color": ["#1890ff","#2fc25b","#facc14"] + } + }, + "markLine": { + "type": "dash", + "dashLength": 5, + "data": [ + { + "value": 2150, + "lineColor": "#f04864", + "showLabel": true + }, + { + "value": 2350, + "lineColor": "#f04864", + "showLabel": true + } + ] + } + } + }, + "mix":{ + "type": "mix", + "color": color, + "padding": [15,15,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "disabled": false, + "disableGrid": false, + "splitNumber": 5, + "gridType": "dash", + "dashLength": 4, + "gridColor": "#CCCCCC", + "padding": 10, + "showTitle": true, + "data": [] + }, + "legend": { + }, + "extra": { + "mix": { + "column": { + "width": 20 + } + }, + } + }, + "scatter":{ + "type": "scatter", + "color":color, + "padding":[15,15,0,15], + "dataLabel":false, + "xAxis": { + "disableGrid": false, + "gridType":"dash", + "splitNumber":5, + "boundaryGap":"justify", + "min":0 + }, + "yAxis": { + "disableGrid": false, + "gridType":"dash", + }, + "legend": { + }, + "extra": { + "scatter": { + }, + } + }, + "bubble":{ + "type": "bubble", + "color":color, + "padding":[15,15,0,15], + "xAxis": { + "disableGrid": false, + "gridType":"dash", + "splitNumber":5, + "boundaryGap":"justify", + "min":0, + "max":250 + }, + "yAxis": { + "disableGrid": false, + "gridType":"dash", + "data":[{ + "min":0, + "max":150 + }] + }, + "legend": { + }, + "extra": { + "bubble": { + "border":2, + "opacity": 0.5, + }, + } + } +} + +export default cfu; \ No newline at end of file diff --git a/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/readme.md b/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/readme.md new file mode 100644 index 0000000..d307ba3 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/readme.md @@ -0,0 +1,5 @@ +# uCharts JSSDK说明 +1、如不使用uCharts组件,可直接引用u-charts.js,打包编译后会`自动压缩`,压缩后体积约为`120kb`。 +2、如果120kb的体积仍需压缩,请手到uCharts官网通过在线定制选择您需要的图表。 +3、config-ucharts.js为uCharts组件的用户配置文件,升级前请`自行备份config-ucharts.js`文件,以免被强制覆盖。 +4、config-echarts.js为ECharts组件的用户配置文件,升级前请`自行备份config-echarts.js`文件,以免被强制覆盖。 \ No newline at end of file diff --git a/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/u-charts.js b/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/u-charts.js new file mode 100644 index 0000000..f78bde5 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/u-charts.js @@ -0,0 +1,7706 @@ +/* + * uCharts (R) + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台 + * Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts (R) 官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +'use strict'; + +var config = { + version: 'v2.5.0-20230101', + yAxisWidth: 15, + xAxisHeight: 22, + padding: [10, 10, 10, 10], + rotate: false, + fontSize: 13, + fontColor: '#666666', + dataPointShape: ['circle', 'circle', 'circle', 'circle'], + color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'], + linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'], + pieChartLinePadding: 15, + pieChartTextPadding: 5, + titleFontSize: 20, + subtitleFontSize: 15, + radarLabelTextMargin: 13, +}; + +var assign = function(target, ...varArgs) { + if (target == null) { + throw new TypeError('[uCharts] Cannot convert undefined or null to object'); + } + if (!varArgs || varArgs.length <= 0) { + return target; + } + // 深度合并对象 + function deepAssign(obj1, obj2) { + for (let key in obj2) { + obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ? + deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key]; + } + return obj1; + } + varArgs.forEach(val => { + target = deepAssign(target, val); + }); + return target; +}; + +var util = { + toFixed: function toFixed(num, limit) { + limit = limit || 2; + if (this.isFloat(num)) { + num = num.toFixed(limit); + } + return num; + }, + isFloat: function isFloat(num) { + return num % 1 !== 0; + }, + approximatelyEqual: function approximatelyEqual(num1, num2) { + return Math.abs(num1 - num2) < 1e-10; + }, + isSameSign: function isSameSign(num1, num2) { + return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2; + }, + isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) { + return this.isSameSign(p1.x, p2.x); + }, + isCollision: function isCollision(obj1, obj2) { + obj1.end = {}; + obj1.end.x = obj1.start.x + obj1.width; + obj1.end.y = obj1.start.y - obj1.height; + obj2.end = {}; + obj2.end.x = obj2.start.x + obj2.width; + obj2.end.y = obj2.start.y - obj2.height; + var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y; + return !flag; + } +}; + +//兼容H5点击事件 +function getH5Offset(e) { + e.mp = { + changedTouches: [] + }; + e.mp.changedTouches.push({ + x: e.offsetX, + y: e.offsetY + }); + return e; +} + +// hex 转 rgba +function hexToRgb(hexValue, opc) { + var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + var hex = hexValue.replace(rgx, function(m, r, g, b) { + return r + r + g + g + b + b; + }); + var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + var r = parseInt(rgb[1], 16); + var g = parseInt(rgb[2], 16); + var b = parseInt(rgb[3], 16); + return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')'; +} + +function findRange(num, type, limit) { + if (isNaN(num)) { + throw new Error('[uCharts] series数据需为Number格式'); + } + limit = limit || 10; + type = type ? type : 'upper'; + var multiple = 1; + while (limit < 1) { + limit *= 10; + multiple *= 10; + } + if (type === 'upper') { + num = Math.ceil(num * multiple); + } else { + num = Math.floor(num * multiple); + } + while (num % limit !== 0) { + if (type === 'upper') { + if (num == num + 1) { //修复数据值过大num++无效的bug by 向日葵 @xrk_jy + break; + } + num++; + } else { + num--; + } + } + return num / multiple; +} + +function calCandleMA(dayArr, nameArr, colorArr, kdata) { + let seriesTemp = []; + for (let k = 0; k < dayArr.length; k++) { + let seriesItem = { + data: [], + name: nameArr[k], + color: colorArr[k] + }; + for (let i = 0, len = kdata.length; i < len; i++) { + if (i < dayArr[k]) { + seriesItem.data.push(null); + continue; + } + let sum = 0; + for (let j = 0; j < dayArr[k]; j++) { + sum += kdata[i - j][1]; + } + seriesItem.data.push(+(sum / dayArr[k]).toFixed(3)); + } + seriesTemp.push(seriesItem); + } + return seriesTemp; +} + +function calValidDistance(self, distance, chartData, config, opts) { + var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3]; + var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1); + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + dataChartWidth += (opts.extra.mount.widthRatio - 1)*chartData.eachSpacing; + } + var validDistance = distance; + if (distance >= 0) { + validDistance = 0; + self.uevent.trigger('scrollLeft'); + self.scrollOption.position = 'left' + opts.xAxis.scrollPosition = 'left'; + } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) { + validDistance = dataChartAreaWidth - dataChartWidth; + self.uevent.trigger('scrollRight'); + self.scrollOption.position = 'right' + opts.xAxis.scrollPosition = 'right'; + } else { + self.scrollOption.position = distance + opts.xAxis.scrollPosition = distance; + } + return validDistance; +} + +function isInAngleRange(angle, startAngle, endAngle) { + function adjust(angle) { + while (angle < 0) { + angle += 2 * Math.PI; + } + while (angle > 2 * Math.PI) { + angle -= 2 * Math.PI; + } + return angle; + } + angle = adjust(angle); + startAngle = adjust(startAngle); + endAngle = adjust(endAngle); + if (startAngle > endAngle) { + endAngle += 2 * Math.PI; + if (angle < startAngle) { + angle += 2 * Math.PI; + } + } + return angle >= startAngle && angle <= endAngle; +} + +function createCurveControlPoints(points, i) { + function isNotMiddlePoint(points, i) { + if (points[i - 1] && points[i + 1]) { + return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, + points[i + 1].y); + } else { + return false; + } + } + function isNotMiddlePointX(points, i) { + if (points[i - 1] && points[i + 1]) { + return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x, + points[i + 1].x); + } else { + return false; + } + } + var a = 0.2; + var b = 0.2; + var pAx = null; + var pAy = null; + var pBx = null; + var pBy = null; + if (i < 1) { + pAx = points[0].x + (points[1].x - points[0].x) * a; + pAy = points[0].y + (points[1].y - points[0].y) * a; + } else { + pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a; + pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a; + } + + if (i > points.length - 3) { + var last = points.length - 1; + pBx = points[last].x - (points[last].x - points[last - 1].x) * b; + pBy = points[last].y - (points[last].y - points[last - 1].y) * b; + } else { + pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b; + pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b; + } + if (isNotMiddlePoint(points, i + 1)) { + pBy = points[i + 1].y; + } + if (isNotMiddlePoint(points, i)) { + pAy = points[i].y; + } + if (isNotMiddlePointX(points, i + 1)) { + pBx = points[i + 1].x; + } + if (isNotMiddlePointX(points, i)) { + pAx = points[i].x; + } + if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) { + pAy = points[i].y; + } + if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) { + pBy = points[i + 1].y; + } + if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) { + pAx = points[i].x; + } + if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) { + pBx = points[i + 1].x; + } + return { + ctrA: { + x: pAx, + y: pAy + }, + ctrB: { + x: pBx, + y: pBy + } + }; +} + + +function convertCoordinateOrigin(x, y, center) { + return { + x: center.x + x, + y: center.y - y + }; +} + +function avoidCollision(obj, target) { + if (target) { + // is collision test + while (util.isCollision(obj, target)) { + if (obj.start.x > 0) { + obj.start.y--; + } else if (obj.start.x < 0) { + obj.start.y++; + } else { + if (obj.start.y > 0) { + obj.start.y++; + } else { + obj.start.y--; + } + } + } + } + return obj; +} + +function fixPieSeries(series, opts, config){ + let pieSeriesArr = []; + if(series.length>0 && series[0].data.constructor.toString().indexOf('Array') > -1){ + opts._pieSeries_ = series; + let oldseries = series[0].data; + for (var i = 0; i < oldseries.length; i++) { + oldseries[i].formatter = series[0].formatter; + oldseries[i].data = oldseries[i].value; + pieSeriesArr.push(oldseries[i]); + } + opts.series = pieSeriesArr; + }else{ + pieSeriesArr = series; + } + return pieSeriesArr; +} + +function fillSeries(series, opts, config) { + var index = 0; + for (var i = 0; i < series.length; i++) { + let item = series[i]; + if (!item.color) { + item.color = config.color[index]; + index = (index + 1) % config.color.length; + } + if (!item.linearIndex) { + item.linearIndex = i; + } + if (!item.index) { + item.index = 0; + } + if (!item.type) { + item.type = opts.type; + } + if (typeof item.show == "undefined") { + item.show = true; + } + if (!item.type) { + item.type = opts.type; + } + if (!item.pointShape) { + item.pointShape = "circle"; + } + if (!item.legendShape) { + switch (item.type) { + case 'line': + item.legendShape = "line"; + break; + case 'column': + case 'bar': + item.legendShape = "rect"; + break; + case 'area': + case 'mount': + item.legendShape = "triangle"; + break; + default: + item.legendShape = "circle"; + } + } + } + return series; +} + +function fillCustomColor(linearType, customColor, series, config) { + var newcolor = customColor || []; + if (linearType == 'custom' && newcolor.length == 0 ) { + newcolor = config.linearColor; + } + if (linearType == 'custom' && newcolor.length < series.length) { + let chazhi = series.length - newcolor.length; + for (var i = 0; i < chazhi; i++) { + newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]); + } + } + return newcolor; +} + +function getDataRange(minData, maxData) { + var limit = 0; + var range = maxData - minData; + if (range >= 10000) { + limit = 1000; + } else if (range >= 1000) { + limit = 100; + } else if (range >= 100) { + limit = 10; + } else if (range >= 10) { + limit = 5; + } else if (range >= 1) { + limit = 1; + } else if (range >= 0.1) { + limit = 0.1; + } else if (range >= 0.01) { + limit = 0.01; + } else if (range >= 0.001) { + limit = 0.001; + } else if (range >= 0.0001) { + limit = 0.0001; + } else if (range >= 0.00001) { + limit = 0.00001; + } else { + limit = 0.000001; + } + return { + minRange: findRange(minData, 'lower', limit), + maxRange: findRange(maxData, 'upper', limit) + }; +} + +function measureText(text, fontSize, context) { + var width = 0; + text = String(text); + // #ifdef MP-ALIPAY || MP-BAIDU || APP-NVUE + context = false; + // #endif + if (context !== false && context !== undefined && context.setFontSize && context.measureText) { + context.setFontSize(fontSize); + return context.measureText(text).width; + } else { + var text = text.split(''); + for (let i = 0; i < text.length; i++) { + let item = text[i]; + if (/[a-zA-Z]/.test(item)) { + width += 7; + } else if (/[0-9]/.test(item)) { + width += 5.5; + } else if (/\./.test(item)) { + width += 2.7; + } else if (/-/.test(item)) { + width += 3.25; + } else if (/:/.test(item)) { + width += 2.5; + } else if (/[\u4e00-\u9fa5]/.test(item)) { + width += 10; + } else if (/\(|\)/.test(item)) { + width += 3.73; + } else if (/\s/.test(item)) { + width += 2.5; + } else if (/%/.test(item)) { + width += 8; + } else { + width += 10; + } + } + return width * fontSize / 10; + } +} + +function dataCombine(series) { + return series.reduce(function(a, b) { + return (a.data ? a.data : a).concat(b.data); + }, []); +} + +function dataCombineStack(series, len) { + var sum = new Array(len); + for (var j = 0; j < sum.length; j++) { + sum[j] = 0; + } + for (var i = 0; i < series.length; i++) { + for (var j = 0; j < sum.length; j++) { + sum[j] += series[i].data[j]; + } + } + return series.reduce(function(a, b) { + return (a.data ? a.data : a).concat(b.data).concat(sum); + }, []); +} + +function getTouches(touches, opts, e) { + let x, y; + if (touches.clientX) { + if (opts.rotate) { + y = opts.height - touches.clientX * opts.pix; + x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix; + } else { + x = touches.clientX * opts.pix; + y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix; + } + } else { + if (opts.rotate) { + y = opts.height - touches.x * opts.pix; + x = touches.y * opts.pix; + } else { + x = touches.x * opts.pix; + y = touches.y * opts.pix; + } + } + return { + x: x, + y: y + } +} + +function getSeriesDataItem(series, index, group) { + var data = []; + var newSeries = []; + var indexIsArr = index.constructor.toString().indexOf('Array') > -1; + if(indexIsArr){ + let tempSeries = filterSeries(series); + for (var i = 0; i < group.length; i++) { + newSeries.push(tempSeries[group[i]]); + } + }else{ + newSeries = series; + }; + for (let i = 0; i < newSeries.length; i++) { + let item = newSeries[i]; + let tmpindex = -1; + if(indexIsArr){ + tmpindex = index[i]; + }else{ + tmpindex = index; + } + if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) { + let seriesItem = {}; + seriesItem.color = item.color; + seriesItem.type = item.type; + seriesItem.style = item.style; + seriesItem.pointShape = item.pointShape; + seriesItem.disableLegend = item.disableLegend; + seriesItem.legendShape = item.legendShape; + seriesItem.name = item.name; + seriesItem.show = item.show; + seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex]; + data.push(seriesItem); + } + } + return data; +} + +function getMaxTextListLength(list, fontSize, context) { + var lengthList = list.map(function(item) { + return measureText(item, fontSize, context); + }); + return Math.max.apply(null, lengthList); +} + +function getRadarCoordinateSeries(length) { + var eachAngle = 2 * Math.PI / length; + var CoordinateSeries = []; + for (var i = 0; i < length; i++) { + CoordinateSeries.push(eachAngle * i); + } + return CoordinateSeries.map(function(item) { + return -1 * item + Math.PI / 2; + }); +} + +function getToolTipData(seriesData, opts, index, group, categories) { + var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {}; + var calPoints = opts.chartData.calPoints?opts.chartData.calPoints:[]; + let points = {}; + if(group.length > 0){ + let filterPoints = []; + for (let i = 0; i < group.length; i++) { + filterPoints.push(calPoints[group[i]]) + } + points = filterPoints[0][index[0]]; + }else{ + for (let i = 0; i < calPoints.length; i++) { + if(calPoints[i][index]){ + points = calPoints[i][index]; + break; + } + } + }; + var textList = seriesData.map(function(item) { + let titleText = null; + if (opts.categories && opts.categories.length>0) { + titleText = categories[index]; + }; + return { + text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data, + color: item.color, + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + }); + var offset = { + x: Math.round(points.x), + y: Math.round(points.y) + }; + return { + textList: textList, + offset: offset + }; +} + +function getMixToolTipData(seriesData, opts, index, categories) { + var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2; + var textList = seriesData.map(function(item) { + return { + text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data, + color: item.color, + disableLegend: item.disableLegend ? true : false, + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + }); + textList = textList.filter(function(item) { + if (item.disableLegend !== true) { + return item; + } + }); + var offset = { + x: Math.round(points), + y: 0 + }; + return { + textList: textList, + offset: offset + }; +} + +function getCandleToolTipData(series, seriesData, opts, index, categories, extra) { + var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {}; + var calPoints = opts.chartData.calPoints; + let upColor = extra.color.upFill; + let downColor = extra.color.downFill; + //颜色顺序为开盘,收盘,最低,最高 + let color = [upColor, upColor, downColor, upColor]; + var textList = []; + seriesData.map(function(item) { + if (index == 0) { + if (item.data[1] - item.data[0] < 0) { + color[1] = downColor; + } else { + color[1] = upColor; + } + } else { + if (item.data[0] < series[index - 1][1]) { + color[0] = downColor; + } + if (item.data[1] < item.data[0]) { + color[1] = downColor; + } + if (item.data[2] > series[index - 1][1]) { + color[2] = upColor; + } + if (item.data[3] < series[index - 1][1]) { + color[3] = downColor; + } + } + let text1 = { + text: '开盘:' + item.data[0], + color: color[0], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + let text2 = { + text: '收盘:' + item.data[1], + color: color[1], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + let text3 = { + text: '最低:' + item.data[2], + color: color[2], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + let text4 = { + text: '最高:' + item.data[3], + color: color[3], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + textList.push(text1, text2, text3, text4); + }); + var validCalPoints = []; + var offset = { + x: 0, + y: 0 + }; + for (let i = 0; i < calPoints.length; i++) { + let points = calPoints[i]; + if (typeof points[index] !== 'undefined' && points[index] !== null) { + validCalPoints.push(points[index]); + } + } + offset.x = Math.round(validCalPoints[0][0].x); + return { + textList: textList, + offset: offset + }; +} + +function filterSeries(series) { + let tempSeries = []; + for (let i = 0; i < series.length; i++) { + if (series[i].show == true) { + tempSeries.push(series[i]) + } + } + return tempSeries; +} + +function findCurrentIndex(currentPoints, calPoints, opts, config) { + var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var current={ index:-1, group:[] }; + var spacing = opts.chartData.eachSpacing / 2; + let xAxisPoints = []; + if (calPoints && calPoints.length > 0) { + if (!opts.categories) { + spacing = 0; + }else{ + for (let i = 1; i < opts.chartData.xAxisPoints.length; i++) { + xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing); + } + if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') { + xAxisPoints = opts.chartData.xAxisPoints; + } + } + if (isInExactChartArea(currentPoints, opts, config)) { + if (!opts.categories) { + let timePoints = Array(calPoints.length); + for (let i = 0; i < calPoints.length; i++) { + timePoints[i] = Array(calPoints[i].length) + for (let j = 0; j < calPoints[i].length; j++) { + timePoints[i][j] = (Math.abs(calPoints[i][j].x - currentPoints.x)); + } + }; + let pointValue = Array(timePoints.length); + let pointIndex = Array(timePoints.length); + for (let i = 0; i < timePoints.length; i++) { + pointValue[i] = Math.min.apply(null, timePoints[i]); + pointIndex[i] = timePoints[i].indexOf(pointValue[i]); + } + let minValue = Math.min.apply(null, pointValue); + current.index = []; + for (let i = 0; i < pointValue.length; i++) { + if(pointValue[i] == minValue){ + current.group.push(i); + current.index.push(pointIndex[i]); + } + }; + }else{ + xAxisPoints.forEach(function(item, index) { + if (currentPoints.x + offset + spacing > item) { + current.index = index; + } + }); + } + } + } + return current; +} + +function findBarChartCurrentIndex(currentPoints, calPoints, opts, config) { + var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var current={ index:-1, group:[] }; + var spacing = opts.chartData.eachSpacing / 2; + let yAxisPoints = opts.chartData.yAxisPoints; + if (calPoints && calPoints.length > 0) { + if (isInExactChartArea(currentPoints, opts, config)) { + yAxisPoints.forEach(function(item, index) { + if (currentPoints.y + offset + spacing > item) { + current.index = index; + } + }); + } + } + return current; +} + +function findLegendIndex(currentPoints, legendData, opts) { + let currentIndex = -1; + let gap = 0; + if (isInExactLegendArea(currentPoints, legendData.area)) { + let points = legendData.points; + let index = -1; + for (let i = 0, len = points.length; i < len; i++) { + let item = points[i]; + for (let j = 0; j < item.length; j++) { + index += 1; + let area = item[j]['area']; + if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) { + currentIndex = index; + break; + } + } + } + return currentIndex; + } + return currentIndex; +} + +function isInExactLegendArea(currentPoints, area) { + return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y; +} + +function isInExactChartArea(currentPoints, opts, config) { + return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2]; +} + +function findRadarChartCurrentIndex(currentPoints, radarData, count) { + var eachAngleArea = 2 * Math.PI / count; + var currentIndex = -1; + if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) { + var fixAngle = function fixAngle(angle) { + if (angle < 0) { + angle += 2 * Math.PI; + } + if (angle > 2 * Math.PI) { + angle -= 2 * Math.PI; + } + return angle; + }; + var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x); + angle = -1 * angle; + if (angle < 0) { + angle += 2 * Math.PI; + } + var angleList = radarData.angleList.map(function(item) { + item = fixAngle(-1 * item); + return item; + }); + angleList.forEach(function(item, index) { + var rangeStart = fixAngle(item - eachAngleArea / 2); + var rangeEnd = fixAngle(item + eachAngleArea / 2); + if (rangeEnd < rangeStart) { + rangeEnd += 2 * Math.PI; + } + if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) { + currentIndex = index; + } + }); + } + return currentIndex; +} + +function findFunnelChartCurrentIndex(currentPoints, funnelData) { + var currentIndex = -1; + for (var i = 0, len = funnelData.series.length; i < len; i++) { + var item = funnelData.series[i]; + if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findWordChartCurrentIndex(currentPoints, wordData) { + var currentIndex = -1; + for (var i = 0, len = wordData.length; i < len; i++) { + var item = wordData[i]; + if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findMapChartCurrentIndex(currentPoints, opts) { + var currentIndex = -1; + var cData = opts.chartData.mapData; + var data = opts.series; + var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset); + var poi = [tmp.x, tmp.y]; + for (var i = 0, len = data.length; i < len; i++) { + var item = data[i].geometry.coordinates; + if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findRoseChartCurrentIndex(currentPoints, pieData, opts) { + var currentIndex = -1; + var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius); + if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { + var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); + angle = -angle; + if(opts.extra.rose && opts.extra.rose.offsetAngle){ + angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180; + } + for (var i = 0, len = series.length; i < len; i++) { + if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) { + currentIndex = i; + break; + } + } + } + return currentIndex; +} + +function findPieChartCurrentIndex(currentPoints, pieData, opts) { + var currentIndex = -1; + var series = getPieDataPoints(pieData.series); + if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { + var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); + angle = -angle; + if(opts.extra.pie && opts.extra.pie.offsetAngle){ + angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180; + } + if(opts.extra.ring && opts.extra.ring.offsetAngle){ + angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180; + } + for (var i = 0, len = series.length; i < len; i++) { + if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) { + currentIndex = i; + break; + } + } + } + return currentIndex; +} + +function isInExactPieChartArea(currentPoints, center, radius) { + return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2); +} + + +function splitPoints(points,eachSeries) { + var newPoints = []; + var items = []; + points.forEach(function(item, index) { + if(eachSeries.connectNulls){ + if (item !== null) { + items.push(item); + } + }else{ + if (item !== null) { + items.push(item); + } else { + if (items.length) { + newPoints.push(items); + } + items = []; + } + } + + }); + if (items.length) { + newPoints.push(items); + } + return newPoints; +} + + +function calLegendData(series, opts, config, chartData, context) { + let legendData = { + area: { + start: { + x: 0, + y: 0 + }, + end: { + x: 0, + y: 0 + }, + width: 0, + height: 0, + wholeWidth: 0, + wholeHeight: 0 + }, + points: [], + widthArr: [], + heightArr: [] + }; + if (opts.legend.show === false) { + chartData.legendData = legendData; + return legendData; + } + let padding = opts.legend.padding * opts.pix; + let margin = opts.legend.margin * opts.pix; + let fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize; + let shapeWidth = 15 * opts.pix; + let shapeRight = 5 * opts.pix; + let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize); + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + let legendList = []; + let widthCount = 0; + let widthCountArr = []; + let currentRow = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + const legendText = item.legendText ? item.legendText : item.name; + let itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix; + if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) { + legendList.push(currentRow); + widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix); + widthCount = itemWidth; + currentRow = [item]; + } else { + widthCount += itemWidth; + currentRow.push(item); + } + } + if (currentRow.length) { + legendList.push(currentRow); + widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix); + legendData.widthArr = widthCountArr; + let legendWidth = Math.max.apply(null, widthCountArr); + switch (opts.legend.float) { + case 'left': + legendData.area.start.x = opts.area[3]; + legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding; + break; + case 'right': + legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding; + legendData.area.end.x = opts.width - opts.area[1]; + break; + default: + legendData.area.start.x = (opts.width - legendWidth) / 2 - padding; + legendData.area.end.x = (opts.width + legendWidth) / 2 + padding; + } + legendData.area.width = legendWidth + 2 * padding; + legendData.area.wholeWidth = legendWidth + 2 * padding; + legendData.area.height = legendList.length * lineHeight + 2 * padding; + legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin; + legendData.points = legendList; + } + } else { + let len = series.length; + let maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding; + let maxLength = Math.min(Math.floor(maxHeight / lineHeight), len); + legendData.area.height = maxLength * lineHeight + padding * 2; + legendData.area.wholeHeight = maxLength * lineHeight + padding * 2; + switch (opts.legend.float) { + case 'top': + legendData.area.start.y = opts.area[0] + margin; + legendData.area.end.y = opts.area[0] + margin + legendData.area.height; + break; + case 'bottom': + legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height; + legendData.area.end.y = opts.height - opts.area[2] - margin; + break; + default: + legendData.area.start.y = (opts.height - legendData.area.height) / 2; + legendData.area.end.y = (opts.height + legendData.area.height) / 2; + } + let lineNum = len % maxLength === 0 ? len / maxLength : Math.floor((len / maxLength) + 1); + let currentRow = []; + for (let i = 0; i < lineNum; i++) { + let temp = series.slice(i * maxLength, i * maxLength + maxLength); + currentRow.push(temp); + } + legendData.points = currentRow; + if (currentRow.length) { + for (let i = 0; i < currentRow.length; i++) { + let item = currentRow[i]; + let maxWidth = 0; + for (let j = 0; j < item.length; j++) { + let itemWidth = shapeWidth + shapeRight + measureText(item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix; + if (itemWidth > maxWidth) { + maxWidth = itemWidth; + } + } + legendData.widthArr.push(maxWidth); + legendData.heightArr.push(item.length * lineHeight + padding * 2); + } + let legendWidth = 0 + for (let i = 0; i < legendData.widthArr.length; i++) { + legendWidth += legendData.widthArr[i]; + } + legendData.area.width = legendWidth - opts.legend.itemGap * opts.pix + 2 * padding; + legendData.area.wholeWidth = legendData.area.width + padding; + } + } + switch (opts.legend.position) { + case 'top': + legendData.area.start.y = opts.area[0] + margin; + legendData.area.end.y = opts.area[0] + margin + legendData.area.height; + break; + case 'bottom': + legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin; + legendData.area.end.y = opts.height - opts.area[2] - margin; + break; + case 'left': + legendData.area.start.x = opts.area[3]; + legendData.area.end.x = opts.area[3] + legendData.area.width; + break; + case 'right': + legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width; + legendData.area.end.x = opts.width - opts.area[1]; + break; + } + chartData.legendData = legendData; + return legendData; +} + +function calCategoriesData(categories, opts, config, eachSpacing, context) { + var result = { + angle: 0, + xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix + }; + var fontSize = opts.xAxis.fontSize * opts.pix; + var categoriesTextLenth = categories.map(function(item,index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item,index,opts) : item; + return measureText(String(xitem), fontSize, context); + }); + var maxTextLength = Math.max.apply(this, categoriesTextLenth); + if (opts.xAxis.rotateLabel == true) { + result.angle = opts.xAxis.rotateAngle * Math.PI / 180; + let tempHeight = opts.xAxis.marginTop * opts.pix * 2 + Math.abs(maxTextLength * Math.sin(result.angle)) + tempHeight = tempHeight < fontSize + opts.xAxis.marginTop * opts.pix * 2 ? tempHeight + opts.xAxis.marginTop * opts.pix * 2 : tempHeight; + result.xAxisHeight = tempHeight; + } + if (opts.enableScroll && opts.xAxis.scrollShow) { + result.xAxisHeight += 6 * opts.pix; + } + if (opts.xAxis.disabled){ + result.xAxisHeight = 0; + } + return result; +} + +function getXAxisTextList(series, opts, config, stack) { + var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1; + var data; + if (stack == 'stack') { + data = dataCombineStack(series, opts.categories.length); + } else { + data = dataCombine(series); + } + var sorted = []; + // remove null from data + data = data.filter(function(item) { + //return item !== null; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + return item !== null; + } else { + return item.value !== null; + } + } else { + return item !== null; + } + }); + data.map(function(item) { + if (typeof item === 'object') { + if (item.constructor.toString().indexOf('Array') > -1) { + if (opts.type == 'candle') { + item.map(function(subitem) { + sorted.push(subitem); + }) + } else { + sorted.push(item[0]); + } + } else { + sorted.push(item.value); + } + } else { + sorted.push(item); + } + }) + + var minData = 0; + var maxData = 0; + if (sorted.length > 0) { + minData = Math.min.apply(this, sorted); + maxData = Math.max.apply(this, sorted); + } + //为了兼容v1.9.0之前的项目 + if (index > -1) { + if (typeof opts.xAxis.data[index].min === 'number') { + minData = Math.min(opts.xAxis.data[index].min, minData); + } + if (typeof opts.xAxis.data[index].max === 'number') { + maxData = Math.max(opts.xAxis.data[index].max, maxData); + } + } else { + if (typeof opts.xAxis.min === 'number') { + minData = Math.min(opts.xAxis.min, minData); + } + if (typeof opts.xAxis.max === 'number') { + maxData = Math.max(opts.xAxis.max, maxData); + } + } + if (minData === maxData) { + var rangeSpan = maxData || 10; + maxData += rangeSpan; + } + //var dataRange = getDataRange(minData, maxData); + var minRange = minData; + var maxRange = maxData; + var range = []; + var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber; + for (var i = 0; i <= opts.xAxis.splitNumber; i++) { + range.push(minRange + eachRange * i); + } + return range; +} + +function calXAxisData(series, opts, config, context) { + //堆叠图重算Y轴 + var columnstyle = assign({}, { + type: "" + }, opts.extra.bar); + var result = { + angle: 0, + xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix + }; + result.ranges = getXAxisTextList(series, opts, config, columnstyle.type); + result.rangesFormat = result.ranges.map(function(item) { + //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2); + item = util.toFixed(item, 2); + return item; + }); + var xAxisScaleValues = result.ranges.map(function(item) { + // 如果刻度值是浮点数,则保留两位小数 + item = util.toFixed(item, 2); + // 若有自定义格式则调用自定义的格式化函数 + //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item; + return item; + }); + result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config)); + // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\结束点以及总长 + var eachSpacing = result.eachSpacing; + var textLength = xAxisScaleValues.map(function(item) { + return measureText(item, opts.xAxis.fontSize * opts.pix, context); + }); + if (opts.xAxis.disabled === true) { + result.xAxisHeight = 0; + } + return result; +} + +function getRadarDataPoints(angleList, center, radius, series, opts) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var radarOption = opts.extra.radar || {}; + radarOption.max = radarOption.max || 0; + var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series))); + var data = []; + for (let i = 0; i < series.length; i++) { + let each = series[i]; + let listItem = {}; + listItem.color = each.color; + listItem.legendShape = each.legendShape; + listItem.pointShape = each.pointShape; + listItem.data = []; + each.data.forEach(function(item, index) { + let tmp = {}; + tmp.angle = angleList[index]; + tmp.proportion = item / maxData; + tmp.value = item; + tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center); + listItem.data.push(tmp); + }); + data.push(listItem); + } + return data; +} + +function getPieDataPoints(series, radius) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + var count = 0; + var _start_ = 0; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + count += item.data; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (count === 0) { + item._proportion_ = 1 / series.length * process; + } else { + item._proportion_ = item.data / count * process; + } + item._radius_ = radius; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item._start_ = _start_; + _start_ += 2 * item._proportion_ * Math.PI; + } + return series; +} + +function getFunnelDataPoints(series, radius, option, eachSpacing) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + for (let i = 0; i < series.length; i++) { + if(option.type == 'funnel'){ + series[i].radius = series[i].data / series[0].data * radius * process; + }else{ + series[i].radius = (eachSpacing * (series.length - i)) / (eachSpacing * series.length) * radius * process; + } + series[i]._proportion_ = series[i].data / series[0].data; + } + // if(option.type !== 'pyramid'){ + // series.reverse(); + // } + return series; +} + +function getRoseDataPoints(series, type, minRadius, radius) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var count = 0; + var _start_ = 0; + var dataArr = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + count += item.data; + dataArr.push(item.data); + } + var minData = Math.min.apply(null, dataArr); + var maxData = Math.max.apply(null, dataArr); + var radiusLength = radius - minRadius; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (count === 0) { + item._proportion_ = 1 / series.length * process; + item._rose_proportion_ = 1 / series.length * process; + } else { + item._proportion_ = item.data / count * process; + if(type == 'area'){ + item._rose_proportion_ = 1 / series.length * process; + }else{ + item._rose_proportion_ = item.data / count * process; + } + } + item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData)) || radius; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item._start_ = _start_; + _start_ += 2 * item._rose_proportion_ * Math.PI; + } + return series; +} + +function getArcbarDataPoints(series, arcbarOption) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + if (process == 1) { + process = 0.999999; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + let totalAngle; + if (arcbarOption.type == 'circle') { + totalAngle = 2; + } else { + if(arcbarOption.direction == 'ccw'){ + if (arcbarOption.startAngle < arcbarOption.endAngle) { + totalAngle = 2 + arcbarOption.startAngle - arcbarOption.endAngle; + } else { + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + }else{ + if (arcbarOption.endAngle < arcbarOption.startAngle) { + totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle; + } else { + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + } + } + item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle; + if(arcbarOption.direction == 'ccw'){ + item._proportion_ = arcbarOption.startAngle - totalAngle * item.data * process ; + } + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getGaugeArcbarDataPoints(series, arcbarOption) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + if (process == 1) { + process = 0.999999; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + let totalAngle; + if (arcbarOption.type == 'circle') { + totalAngle = 2; + } else { + if (arcbarOption.endAngle < arcbarOption.startAngle) { + totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle; + } else { + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + } + item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle; + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getGaugeAxisPoints(categories, startAngle, endAngle) { + let totalAngle; + if (endAngle < startAngle) { + totalAngle = 2 + endAngle - startAngle; + } else { + totalAngle = startAngle - endAngle; + } + let tempStartAngle = startAngle; + for (let i = 0; i < categories.length; i++) { + categories[i].value = categories[i].value === null ? 0 : categories[i].value; + categories[i]._startAngle_ = tempStartAngle; + categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle; + if (categories[i]._endAngle_ >= 2) { + categories[i]._endAngle_ = categories[i]._endAngle_ % 2; + } + tempStartAngle = categories[i]._endAngle_; + } + return categories; +} + +function getGaugeDataPoints(series, categories, gaugeOption) { + let process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (gaugeOption.pointer.color == 'auto') { + for (let i = 0; i < categories.length; i++) { + if (item.data <= categories[i].value) { + item.color = categories[i].color; + break; + } + } + } else { + item.color = gaugeOption.pointer.color; + } + let totalAngle; + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle; + item._oldAngle_ = gaugeOption.oldAngle; + if (gaugeOption.oldAngle < gaugeOption.endAngle) { + item._oldAngle_ += 2; + } + if (item.data >= gaugeOption.oldData) { + item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle; + } else { + item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process; + } + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getPieTextMaxLength(series, config, context, opts) { + series = getPieDataPoints(series); + let maxLength = 0; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%'; + maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context)); + } + return maxLength; +} + +function fixColumeData(points, eachSpacing, columnLen, index, config, opts) { + return points.map(function(item) { + if (item === null) { + return null; + } + var seriesGap = 0; + var categoryGap = 0; + if (opts.type == 'mix') { + seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0; + categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0; + } else { + seriesGap = opts.extra.column.seriesGap * opts.pix || 0; + categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + } + seriesGap = Math.min(seriesGap, eachSpacing / columnLen) + categoryGap = Math.min(categoryGap, eachSpacing / columnLen) + item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen); + if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix); + } + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap); + return item; + }); +} + +function fixBarData(points, eachSpacing, columnLen, index, config, opts) { + return points.map(function(item) { + if (item === null) { + return null; + } + var seriesGap = 0; + var categoryGap = 0; + seriesGap = opts.extra.bar.seriesGap * opts.pix || 0; + categoryGap = opts.extra.bar.categoryGap * opts.pix || 0; + seriesGap = Math.min(seriesGap, eachSpacing / columnLen) + categoryGap = Math.min(categoryGap, eachSpacing / columnLen) + item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen); + if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) { + item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap); + return item; + }); +} + +function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) { + var categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + return points.map(function(item) { + if (item === null) { + return null; + } + item.width = eachSpacing - 2 * categoryGap; + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (index > 0) { + item.width -= border; + } + return item; + }); +} + +function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) { + var categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + return points.map(function(item, indexn) { + if (item === null) { + return null; + } + item.width = Math.ceil(eachSpacing - 2 * categoryGap); + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + return item; + }); +} + +function fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) { + var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0; + return points.map(function(item, indexn) { + if (item === null) { + return null; + } + item.width = Math.ceil(eachSpacing - 2 * categoryGap); + if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) { + item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + return item; + }); +} + +function getXAxisPoints(categories, opts, config) { + var spacingValid = opts.width - opts.area[1] - opts.area[3]; + var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length; + if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') { + dataCount -= 1; + } + var widthRatio = 0; + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + widthRatio = opts.extra.mount.widthRatio - 1; + dataCount += widthRatio; + } + var eachSpacing = spacingValid / dataCount; + var xAxisPoints = []; + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + categories.forEach(function(item, index) { + xAxisPoints.push(startX + widthRatio / 2 * eachSpacing + index * eachSpacing); + }); + if (opts.xAxis.boundaryGap !== 'justify') { + if (opts.enableScroll === true) { + xAxisPoints.push(startX + widthRatio * eachSpacing + categories.length * eachSpacing); + } else { + xAxisPoints.push(endX); + } + } + return { + xAxisPoints: xAxisPoints, + startX: startX, + endX: endX, + eachSpacing: eachSpacing + }; +} + +function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var cPoints = []; + item.forEach(function(items, indexs) { + var point = {}; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + var value = items.value || items; + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + cPoints.push(point); + }); + points.push(cPoints); + } + }); + return points; +} + +function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var boundaryGap = 'center'; + if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' ) { + boundaryGap = opts.xAxis.boundaryGap; + } + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + let xranges, xminRange, xmaxRange; + xranges = [].concat(opts.chartData.xAxisData.ranges); + xminRange = xranges.shift(); + xmaxRange = xranges.pop(); + value = item[1]; + point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange); + if(opts.type == 'bubble'){ + point.r = item[2]; + point.t = item[3]; + } + } else { + value = item.value; + } + } + if (boundaryGap == 'center') { + point.x += eachSpacing / 2; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - height - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process){ + var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; + var boundaryGap = opts.xAxis.boundaryGap; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + if(lineOption.animation == 'vertical'){ + point.x = xAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + let xranges, xminRange, xmaxRange; + xranges = [].concat(opts.chartData.xAxisData.ranges); + xminRange = xranges.shift(); + xmaxRange = xranges.pop(); + value = item[1]; + point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange); + } else { + value = item.value; + } + } + if (boundaryGap == 'center') { + point.x += eachSpacing / 2; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - height - opts.area[2]; + points.push(point); + }else{ + point.x = xAxisPoints[0] + eachSpacing * index * process; + var value = item; + if (boundaryGap == 'center') { + point.x += eachSpacing / 2; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + point.y = opts.height - height - opts.area[2]; + points.push(point); + } + } + }); + return points; +} + +function getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process){ + var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + let xranges, xminRange, xmaxRange; + xranges = [].concat(opts.chartData.xAxisData.ranges); + xminRange = xranges.shift(); + xmaxRange = xranges.pop(); + value = item[1]; + point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange); + } else { + value = item.value; + } + } + point.x += eachSpacing / 2; + var height = validHeight * (value * process - minRange) / (maxRange - minRange); + point.y = opts.height - height - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints) { + var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + var mountWidth = eachSpacing * mountOption.widthRatio; + series.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + point.x += eachSpacing / 2; + var value = item.data; + var height = validHeight * (value * process - minRange) / (maxRange - minRange); + point.y = opts.height - height - opts.area[2]; + point.value = value; + point.width = mountWidth; + points.push(point); + } + }); + return points; +} + +function getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.y = yAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value; + } + var height = validWidth * (value - minRange) / (maxRange - minRange); + height *= process; + point.height = height; + point.value = value; + point.x = height + opts.area[3]; + points.push(point); + } + }); + return points; +} + +function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) { + var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + + if (seriesIndex > 0) { + var value = 0; + for (let i = 0; i <= seriesIndex; i++) { + value += stackSeries[i].data[index]; + } + var value0 = value - item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = validHeight * (value0 - minRange) / (maxRange - minRange); + } else { + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = 0; + } + var heightc = height0; + height *= process; + heightc *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + point.y0 = opts.height - Math.round(heightc) - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) { + var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; + var points = []; + var validHeight = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.y = yAxisPoints[index]; + if (seriesIndex > 0) { + var value = 0; + for (let i = 0; i <= seriesIndex; i++) { + value += stackSeries[i].data[index]; + } + var value0 = value - item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = validHeight * (value0 - minRange) / (maxRange - minRange); + } else { + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = 0; + } + var heightc = height0; + height *= process; + heightc *= process; + point.height = height - heightc; + point.x = opts.area[3] + height; + point.x0 = opts.area[3] + heightc; + points.push(point); + } + }); + return points; +} + +function getYAxisTextList(series, opts, config, stack, yData) { + var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1; + var data; + if (stack == 'stack') { + data = dataCombineStack(series, opts.categories.length); + } else { + data = dataCombine(series); + } + var sorted = []; + // remove null from data + data = data.filter(function(item) { + //return item !== null; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + return item !== null; + } else { + return item.value !== null; + } + } else { + return item !== null; + } + }); + data.map(function(item) { + if (typeof item === 'object') { + if (item.constructor.toString().indexOf('Array') > -1) { + if (opts.type == 'candle') { + item.map(function(subitem) { + sorted.push(subitem); + }) + } else { + sorted.push(item[1]); + } + } else { + sorted.push(item.value); + } + } else { + sorted.push(item); + } + }) + var minData = yData.min || 0; + var maxData = yData.max || 0; + if (sorted.length > 0) { + minData = Math.min.apply(this, sorted); + maxData = Math.max.apply(this, sorted); + } + if (minData === maxData) { + if(maxData == 0){ + maxData = 10; + }else{ + minData = 0; + } + } + var dataRange = getDataRange(minData, maxData); + var minRange = (yData.min === undefined || yData.min === null) ? dataRange.minRange : yData.min; + var maxRange = (yData.max === undefined || yData.max === null) ? dataRange.maxRange : yData.max; + var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber; + var range = []; + for (var i = 0; i <= opts.yAxis.splitNumber; i++) { + range.push(minRange + eachRange * i); + } + return range.reverse(); +} + +function calYAxisData(series, opts, config, context) { + //堆叠图重算Y轴 + var columnstyle = assign({}, { + type: "" + }, opts.extra.column); + //如果是多Y轴,重新计算 + var YLength = opts.yAxis.data.length; + var newSeries = new Array(YLength); + if (YLength > 0) { + for (let i = 0; i < YLength; i++) { + newSeries[i] = []; + for (let j = 0; j < series.length; j++) { + if (series[j].index == i) { + newSeries[i].push(series[j]); + } + } + } + var rangesArr = new Array(YLength); + var rangesFormatArr = new Array(YLength); + var yAxisWidthArr = new Array(YLength); + + for (let i = 0; i < YLength; i++) { + let yData = opts.yAxis.data[i]; + //如果总开关不显示,强制每个Y轴为不显示 + if (opts.yAxis.disabled == true) { + yData.disabled = true; + } + if(yData.type === 'categories'){ + if(!yData.formatter){ + yData.formatter = (val,index,opts) => {return val + (yData.unit || '')}; + } + yData.categories = yData.categories || opts.categories; + rangesArr[i] = yData.categories; + }else{ + if(!yData.formatter){ + yData.formatter = (val,index,opts) => {return util.toFixed(val, yData.tofix || 0) + (yData.unit || '')}; + } + rangesArr[i] = getYAxisTextList(newSeries[i], opts, config, columnstyle.type, yData, i); + } + let yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize; + yAxisWidthArr[i] = { + position: yData.position ? yData.position : 'left', + width: 0 + }; + rangesFormatArr[i] = rangesArr[i].map(function(items,index) { + items = yData.formatter(items,index,opts); + yAxisWidthArr[i].width = Math.max(yAxisWidthArr[i].width, measureText(items, yAxisFontSizes, context) + 5); + return items; + }); + let calibration = yData.calibration ? 4 * opts.pix : 0; + yAxisWidthArr[i].width += calibration + 3 * opts.pix; + if (yData.disabled === true) { + yAxisWidthArr[i].width = 0; + } + } + } else { + var rangesArr = new Array(1); + var rangesFormatArr = new Array(1); + var yAxisWidthArr = new Array(1); + if(opts.type === 'bar'){ + rangesArr[0] = opts.categories; + if(!opts.yAxis.formatter){ + opts.yAxis.formatter = (val,index,opts) => {return val + (opts.yAxis.unit || '')} + } + }else{ + if(!opts.yAxis.formatter){ + opts.yAxis.formatter = (val,index,opts) => {return val.toFixed(opts.yAxis.tofix ) + (opts.yAxis.unit || '')} + } + rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {}); + } + yAxisWidthArr[0] = { + position: 'left', + width: 0 + }; + var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize; + rangesFormatArr[0] = rangesArr[0].map(function(item,index) { + item = opts.yAxis.formatter(item,index,opts); + yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5); + return item; + }); + yAxisWidthArr[0].width += 3 * opts.pix; + if (opts.yAxis.disabled === true) { + yAxisWidthArr[0] = { + position: 'left', + width: 0 + }; + opts.yAxis.data[0] = { + disabled: true + }; + } else { + opts.yAxis.data[0] = { + disabled: false, + position: 'left', + max: opts.yAxis.max, + min: opts.yAxis.min, + formatter: opts.yAxis.formatter + }; + if(opts.type === 'bar'){ + opts.yAxis.data[0].categories = opts.categories; + opts.yAxis.data[0].type = 'categories'; + } + } + } + return { + rangesFormat: rangesFormatArr, + ranges: rangesArr, + yAxisWidth: yAxisWidthArr + }; +} + +function calTooltipYAxisData(point, series, opts, config, eachSpacing) { + let ranges = [].concat(opts.chartData.yAxisData.ranges); + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let minAxis = opts.area[0]; + let items = []; + for (let i = 0; i < ranges.length; i++) { + let maxVal = Math.max.apply(this, ranges[i]); + let minVal = Math.min.apply(this, ranges[i]); + let item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid; + item = opts.yAxis.data && opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item, i, opts) : item.toFixed(0); + items.push(String(item)) + } + return items; +} + +function calMarkLineData(points, opts) { + let minRange, maxRange; + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + for (let i = 0; i < points.length; i++) { + points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0; + let range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]); + minRange = range.pop(); + maxRange = range.shift(); + let height = spacingValid * (points[i].value - minRange) / (maxRange - minRange); + points[i].y = opts.height - Math.round(height) - opts.area[2]; + } + return points; +} + +function contextRotate(context, opts) { + if (opts.rotateLock !== true) { + context.translate(opts.height, 0); + context.rotate(90 * Math.PI / 180); + } else if (opts._rotate_ !== true) { + context.translate(opts.height, 0); + context.rotate(90 * Math.PI / 180); + opts._rotate_ = true; + } +} + +function drawPointShape(points, color, shape, context, opts) { + context.beginPath(); + if (opts.dataPointShapeType == 'hollow') { + context.setStrokeStyle(color); + context.setFillStyle(opts.background); + context.setLineWidth(2 * opts.pix); + } else { + context.setStrokeStyle("#ffffff"); + context.setFillStyle(color); + context.setLineWidth(1 * opts.pix); + } + if (shape === 'diamond') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'none') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); +} + +function drawActivePoint(points, color, shape, context, opts, option, seriesIndex) { + if(!opts.tooltip){ + return + } + if(opts.tooltip.group.length>0 && opts.tooltip.group.includes(seriesIndex) == false){ + return + } + var pointIndex = typeof opts.tooltip.index === 'number' ? opts.tooltip.index : opts.tooltip.index[opts.tooltip.group.indexOf(seriesIndex)]; + context.beginPath(); + if (option.activeType == 'hollow') { + context.setStrokeStyle(color); + context.setFillStyle(opts.background); + context.setLineWidth(2 * opts.pix); + } else { + context.setStrokeStyle("#ffffff"); + context.setFillStyle(color); + context.setLineWidth(1 * opts.pix); + } + if (shape === 'diamond') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index ) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index) { + context.moveTo(item.x + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'none') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); +} + +function drawRingTitle(opts, config, context, center) { + var titlefontSize = opts.title.fontSize || config.titleFontSize; + var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize; + var title = opts.title.name || ''; + var subtitle = opts.subtitle.name || ''; + var titleFontColor = opts.title.color || opts.fontColor; + var subtitleFontColor = opts.subtitle.color || opts.fontColor; + var titleHeight = title ? titlefontSize : 0; + var subtitleHeight = subtitle ? subtitlefontSize : 0; + var margin = 5; + if (subtitle) { + var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context); + var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX|| 0) * opts.pix ; + var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix; + if (title) { + startY += (titleHeight * opts.pix + margin) / 2; + } + context.beginPath(); + context.setFontSize(subtitlefontSize * opts.pix); + context.setFillStyle(subtitleFontColor); + context.fillText(subtitle, startX, startY); + context.closePath(); + context.stroke(); + } + if (title) { + var _textWidth = measureText(title, titlefontSize * opts.pix, context); + var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0); + var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix; + if (subtitle) { + _startY -= (subtitleHeight * opts.pix + margin) / 2; + } + context.beginPath(); + context.setFontSize(titlefontSize * opts.pix); + context.setFillStyle(titleFontColor); + context.fillText(title, _startX, _startY); + context.closePath(); + context.stroke(); + } +} + +function drawPointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + if (data[index].constructor.toString().indexOf('Array')>-1) { + value = data[index][1]; + } else { + value = data[index].value + } + } + var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value; + context.setTextAlign('center'); + context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + } + }); +} + +function drawColumePointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + var Position = opts.extra.column.labelPosition; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + if (data[index].constructor.toString().indexOf('Array')>-1) { + value = data[index][1]; + } else { + value = data[index].value + } + } + var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value; + context.setTextAlign('center'); + var startY = item.y - 4 * opts.pix + textOffset * opts.pix; + if(item.y > series.zeroPoints){ + startY = item.y + textOffset * opts.pix + fontSize; + } + if(Position == 'insideTop'){ + startY = item.y + fontSize + textOffset * opts.pix; + if(item.y > series.zeroPoints){ + startY = item.y - textOffset * opts.pix - 4 * opts.pix; + } + } + if(Position == 'center'){ + startY = item.y + textOffset * opts.pix + (opts.height - opts.area[2] - item.y + fontSize)/2; + if(series.zeroPoints < opts.height - opts.area[2]){ + startY = item.y + textOffset * opts.pix + (series.zeroPoints - item.y + fontSize)/2; + } + if(item.y > series.zeroPoints){ + startY = item.y - textOffset * opts.pix - (item.y - series.zeroPoints - fontSize)/2; + } + if(opts.extra.column.type == 'stack'){ + startY = item.y + textOffset * opts.pix + (item.y0 - item.y + fontSize)/2; + } + } + if(Position == 'bottom'){ + startY = opts.height - opts.area[2] + textOffset * opts.pix - 4 * opts.pix; + if(series.zeroPoints < opts.height - opts.area[2]){ + startY = series.zeroPoints + textOffset * opts.pix - 4 * opts.pix; + } + if(item.y > series.zeroPoints){ + startY = series.zeroPoints - textOffset * opts.pix + fontSize + 2 * opts.pix; + } + if(opts.extra.column.type == 'stack'){ + startY = item.y0 + textOffset * opts.pix - 4 * opts.pix; + } + } + context.fillText(String(formatVal), item.x, startY); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + } + }); +} + +function drawMountPointText(points, series, config, context, opts, zeroPoints) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + var Position = opts.extra.mount.labelPosition; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series[index].textColor || opts.fontColor); + var value = item.value + var formatVal = series[index].formatter ? series[index].formatter(value,index,series,opts) : value; + context.setTextAlign('center'); + var startY = item.y - 4 * opts.pix + textOffset * opts.pix; + if(item.y > zeroPoints){ + startY = item.y + textOffset * opts.pix + fontSize; + } + context.fillText(String(formatVal), item.x, startY); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + } + }); +} + +function drawBarPointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + value = data[index].value ; + } + var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value; + context.setTextAlign('left'); + context.fillText(String(formatVal), item.x + 4 * opts.pix , item.y + fontSize / 2 - 3 ); + context.closePath(); + context.stroke(); + } + }); +} + +function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) { + radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix; + radius = radius < 10 ? 10 : radius; + let totalAngle; + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let totalNumber = gaugeOption.endNumber - gaugeOption.startNumber; + let splitNumber = totalNumber / gaugeOption.splitLine.splitNumber; + let nowAngle = gaugeOption.startAngle; + let nowNumber = gaugeOption.startNumber; + for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { + var pos = { + x: radius * Math.cos(nowAngle * Math.PI), + y: radius * Math.sin(nowAngle * Math.PI) + }; + var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber,i,opts) : nowNumber; + pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2; + pos.y += centerPosition.y; + var startX = pos.x; + var startY = pos.y; + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(gaugeOption.labelColor || opts.fontColor); + context.fillText(labelText, startX, startY + config.fontSize / 2); + context.closePath(); + context.stroke(); + nowAngle += splitAngle; + if (nowAngle >= 2) { + nowAngle = nowAngle % 2; + } + nowNumber += splitNumber; + } +} + +function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) { + var radarOption = opts.extra.radar || {}; + angleList.forEach(function(angle, index) { + if(radarOption.labelPointShow === true && opts.categories[index] !== ''){ + var posPoint = { + x: radius * Math.cos(angle), + y: radius * Math.sin(angle) + }; + var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition); + context.setFillStyle(radarOption.labelPointColor); + context.beginPath(); + context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false); + context.closePath(); + context.fill(); + } + if(radarOption.labelShow === true){ + var pos = { + x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle), + y: (radius + config.radarLabelTextMargin * opts.pix) * Math.sin(angle) + }; + var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition); + var startX = posRelativeCanvas.x; + var startY = posRelativeCanvas.y; + if (util.approximatelyEqual(pos.x, 0)) { + startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2; + } else if (pos.x < 0) { + startX -= measureText(opts.categories[index] || '', config.fontSize, context); + } + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(radarOption.labelColor || opts.fontColor); + context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2); + context.closePath(); + context.stroke(); + } + }); + +} + +function drawPieText(series, opts, config, context, radius, center) { + var lineRadius = config.pieChartLinePadding; + var textObjectCollection = []; + var lastTextObject = null; + var seriesConvert = series.map(function(item,index) { + var text = item.formatter ? item.formatter(item,index,series,opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%'; + text = item.labelText ? item.labelText : text; + var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2); + if (item._rose_proportion_) { + arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2); + } + var color = item.color; + var radius = item._radius_; + return { + arc: arc, + text: text, + color: color, + radius: radius, + textColor: item.textColor, + textSize: item.textSize, + labelShow: item.labelShow + }; + }); + for (let i = 0; i < seriesConvert.length; i++) { + let item = seriesConvert[i]; + // line end + let orginX1 = Math.cos(item.arc) * (item.radius + lineRadius); + let orginY1 = Math.sin(item.arc) * (item.radius + lineRadius); + // line start + let orginX2 = Math.cos(item.arc) * item.radius; + let orginY2 = Math.sin(item.arc) * item.radius; + // text start + let orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding; + let orginY3 = orginY1; + let textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context); + let startY = orginY3; + if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, { + x: orginX3 + })) { + if (orginX3 > 0) { + startY = Math.min(orginY3, lastTextObject.start.y); + } else if (orginX1 < 0) { + startY = Math.max(orginY3, lastTextObject.start.y); + } else { + if (orginY3 > 0) { + startY = Math.max(orginY3, lastTextObject.start.y); + } else { + startY = Math.min(orginY3, lastTextObject.start.y); + } + } + } + if (orginX3 < 0) { + orginX3 -= textWidth; + } + let textObject = { + lineStart: { + x: orginX2, + y: orginY2 + }, + lineEnd: { + x: orginX1, + y: orginY1 + }, + start: { + x: orginX3, + y: startY + }, + width: textWidth, + height: config.fontSize, + text: item.text, + color: item.color, + textColor: item.textColor, + textSize: item.textSize + }; + lastTextObject = avoidCollision(textObject, lastTextObject); + textObjectCollection.push(lastTextObject); + } + for (let i = 0; i < textObjectCollection.length; i++) { + if(seriesConvert[i].labelShow === false){ + continue; + } + let item = textObjectCollection[i]; + let lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center); + let lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center); + let textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center); + context.setLineWidth(1 * opts.pix); + context.setFontSize(item.textSize * opts.pix || config.fontSize); + context.beginPath(); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + let curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x; + let textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5; + context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(textPosition.x + item.width, textPosition.y); + context.arc(curveStartX, textPosition.y, 2 * opts.pix, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(item.textSize * opts.pix || config.fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(item.text, textStartX, textPosition.y + 3); + context.closePath(); + context.stroke(); + context.closePath(); + } +} + +function drawToolTipSplitLine(offsetX, opts, config, context) { + var toolTipOption = opts.extra.tooltip || {}; + toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType; + toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength; + var startY = opts.area[0]; + var endY = opts.height - opts.area[2]; + if (toolTipOption.gridType == 'dash') { + context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); + } + context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(offsetX, startY); + context.lineTo(offsetX, endY); + context.stroke(); + context.setLineDash([]); + if (toolTipOption.xAxisLabel) { + let labelText = opts.categories[opts.tooltip.index]; + context.setFontSize(config.fontSize); + let textWidth = measureText(labelText, config.fontSize, context); + let textX = offsetX - 0.5 * textWidth; + let textY = endY + 2 * opts.pix; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); + context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); + context.setLineWidth(1 * opts.pix); + context.rect(textX - toolTipOption.boxPadding * opts.pix, textY, textWidth + 2 * toolTipOption.boxPadding * opts.pix, config.fontSize + 2 * toolTipOption.boxPadding * opts.pix); + context.closePath(); + context.stroke(); + context.fill(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor); + context.fillText(String(labelText), textX, textY + toolTipOption.boxPadding * opts.pix + config.fontSize); + context.closePath(); + context.stroke(); + } +} + +function drawMarkLine(opts, config, context) { + let markLineOption = assign({}, { + type: 'solid', + dashLength: 4, + data: [] + }, opts.extra.markLine); + let startX = opts.area[3]; + let endX = opts.width - opts.area[1]; + let points = calMarkLineData(markLineOption.data, opts); + for (let i = 0; i < points.length; i++) { + let item = assign({}, { + lineColor: '#DE4A42', + showLabel: false, + labelFontSize: 13, + labelPadding: 6, + labelFontColor: '#666666', + labelBgColor: '#DFE8FF', + labelBgOpacity: 0.8, + labelAlign: 'left', + labelOffsetX: 0, + labelOffsetY: 0, + }, points[i]); + if (markLineOption.type == 'dash') { + context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]); + } + context.setStrokeStyle(item.lineColor); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(startX, item.y); + context.lineTo(endX, item.y); + context.stroke(); + context.setLineDash([]); + if (item.showLabel) { + let fontSize = item.labelFontSize * opts.pix; + let labelText = item.labelText ? item.labelText : item.value; + context.setFontSize(fontSize); + let textWidth = measureText(labelText, fontSize, context); + let bgWidth = textWidth + item.labelPadding * opts.pix * 2; + let bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1]; + bgStartX += item.labelOffsetX; + let bgStartY = item.y - 0.5 * fontSize - item.labelPadding * opts.pix; + bgStartY += item.labelOffsetY; + let textX = bgStartX + item.labelPadding * opts.pix; + let textY = item.y; + context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity)); + context.setStrokeStyle(item.labelBgColor); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.rect(bgStartX, bgStartY, bgWidth, fontSize + 2 * item.labelPadding * opts.pix); + context.closePath(); + context.stroke(); + context.fill(); + context.setFontSize(fontSize); + context.setTextAlign('left'); + context.setFillStyle(item.labelFontColor); + context.fillText(String(labelText), textX, bgStartY + fontSize + item.labelPadding * opts.pix/2); + context.stroke(); + context.setTextAlign('left'); + } + } +} + +function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) { + var toolTipOption = assign({}, { + gridType: 'solid', + dashLength: 4 + }, opts.extra.tooltip); + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + if (toolTipOption.gridType == 'dash') { + context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); + } + context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(startX, opts.tooltip.offset.y); + context.lineTo(endX, opts.tooltip.offset.y); + context.stroke(); + context.setLineDash([]); + if (toolTipOption.yAxisLabel) { + let boxPadding = toolTipOption.boxPadding * opts.pix; + let labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing); + let widthArr = opts.chartData.yAxisData.yAxisWidth; + let tStartLeft = opts.area[3]; + let tStartRight = opts.width - opts.area[1]; + for (let i = 0; i < labelText.length; i++) { + context.setFontSize(toolTipOption.fontSize * opts.pix); + let textWidth = measureText(labelText[i], toolTipOption.fontSize * opts.pix, context); + let bgStartX, bgEndX, bgWidth; + if (widthArr[i].position == 'left') { + bgStartX = tStartLeft - (textWidth + boxPadding * 2) - 2 * opts.pix; + bgEndX = Math.max(bgStartX, bgStartX + textWidth + boxPadding * 2); + } else { + bgStartX = tStartRight + 2 * opts.pix; + bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + boxPadding * 2); + } + bgWidth = bgEndX - bgStartX; + let textX = bgStartX + (bgWidth - textWidth) / 2; + let textY = opts.tooltip.offset.y; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); + context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); + context.setLineWidth(1 * opts.pix); + context.rect(bgStartX, textY - 0.5 * config.fontSize - boxPadding, bgWidth, config.fontSize + 2 * boxPadding); + context.closePath(); + context.stroke(); + context.fill(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor); + context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize); + context.closePath(); + context.stroke(); + if (widthArr[i].position == 'left') { + tStartLeft -= (widthArr[i].width + opts.yAxis.padding * opts.pix); + } else { + tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix; + } + } + } +} + +function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { + var toolTipOption = assign({}, { + activeBgColor: '#000000', + activeBgOpacity: 0.08, + activeWidth: eachSpacing + }, opts.extra.column); + toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth; + var startY = opts.area[0]; + var endY = opts.height - opts.area[2]; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity)); + context.rect(offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY); + context.closePath(); + context.fill(); + context.setFillStyle("#FFFFFF"); +} + +function drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { + var toolTipOption = assign({}, { + activeBgColor: '#000000', + activeBgOpacity: 0.08 + }, opts.extra.bar); + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity)); + context.rect( startX ,offsetX - eachSpacing / 2 , endX - startX,eachSpacing); + context.closePath(); + context.fill(); + context.setFillStyle("#FFFFFF"); +} + + +function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) { + var toolTipOption = assign({}, { + showBox: true, + showArrow: true, + showCategory: false, + bgColor: '#000000', + bgOpacity: 0.7, + borderColor: '#000000', + borderWidth: 0, + borderRadius: 0, + borderOpacity: 0.7, + boxPadding: 3, + fontColor: '#FFFFFF', + fontSize: 13, + lineHeight: 20, + legendShow: true, + legendShape: 'auto', + splitLine: true, + }, opts.extra.tooltip); + if(toolTipOption.showCategory==true && opts.categories){ + textList.unshift({text:opts.categories[opts.tooltip.index],color:null}) + } + var fontSize = toolTipOption.fontSize * opts.pix; + var lineHeight = toolTipOption.lineHeight * opts.pix; + var boxPadding = toolTipOption.boxPadding * opts.pix; + var legendWidth = fontSize; + var legendMarginRight = 5 * opts.pix; + if(toolTipOption.legendShow == false){ + legendWidth = 0; + legendMarginRight = 0; + } + var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0; + var isOverRightBorder = false; + if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') { + if (toolTipOption.splitLine == true) { + drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context); + } + } + offset = assign({ + x: 0, + y: 0 + }, offset); + offset.y -= 8 * opts.pix; + var textWidth = textList.map(function(item) { + return measureText(item.text, fontSize, context); + }); + var toolTipWidth = legendWidth + legendMarginRight + 4 * boxPadding + Math.max.apply(null, textWidth); + var toolTipHeight = 2 * boxPadding + textList.length * lineHeight; + if (toolTipOption.showBox == false) { + return + } + // if beyond the right border + if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) { + isOverRightBorder = true; + } + if (toolTipHeight + offset.y > opts.height) { + offset.y = opts.height - toolTipHeight; + } + // draw background rect + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.bgColor, toolTipOption.bgOpacity)); + context.setLineWidth(toolTipOption.borderWidth * opts.pix); + context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity)); + var radius = toolTipOption.borderRadius; + if (isOverRightBorder) { + // 增加左侧仍然超出的判断 + if(toolTipWidth + arrowWidth > opts.width){ + offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width) + } + if(toolTipWidth > offset.x){ + offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width) + } + if (toolTipOption.showArrow) { + context.moveTo(offset.x, offset.y + 10 * opts.pix); + context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix); + } + context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false); + context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius, + Math.PI / 2, Math.PI, false); + context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false); + context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false); + if (toolTipOption.showArrow) { + context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix); + context.lineTo(offset.x, offset.y + 10 * opts.pix); + } + } else { + if (toolTipOption.showArrow) { + context.moveTo(offset.x, offset.y + 10 * opts.pix); + context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix); + } + context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false); + context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0, + false); + context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0, + Math.PI / 2, false); + context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false); + if (toolTipOption.showArrow) { + context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix); + context.lineTo(offset.x, offset.y + 10 * opts.pix); + } + } + context.closePath(); + context.fill(); + if (toolTipOption.borderWidth > 0) { + context.stroke(); + } + // draw legend + if(toolTipOption.legendShow){ + textList.forEach(function(item, index) { + if (item.color !== null) { + context.beginPath(); + context.setFillStyle(item.color); + var startX = offset.x + arrowWidth + 2 * boxPadding; + var startY = offset.y + (lineHeight - fontSize) / 2 + lineHeight * index + boxPadding + 1; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding; + } + switch (item.legendShape) { + case 'line': + context.moveTo(startX, startY + 0.5 * legendWidth - 2 * opts.pix); + context.fillRect(startX, startY + 0.5 * legendWidth - 2 * opts.pix, legendWidth, 4 * opts.pix); + break; + case 'triangle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + break; + case 'diamond': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + break; + case 'circle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth); + context.arc(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth, 5 * opts.pix, 0, 2 * Math.PI); + break; + case 'rect': + context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + break; + case 'square': + context.moveTo(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + context.fillRect(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix); + break; + default: + context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + } + context.closePath(); + context.fill(); + } + }); + } + + // draw text list + textList.forEach(function(item, index) { + var startX = offset.x + arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight; + } + var startY = offset.y + lineHeight * index + (lineHeight - fontSize)/2 - 1 + boxPadding + fontSize; + context.beginPath(); + context.setFontSize(fontSize); + context.setTextBaseline('normal'); + context.setFillStyle(toolTipOption.fontColor); + context.fillText(item.text, startX, startY); + context.closePath(); + context.stroke(); + }); +} + +function drawColumnDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let columnOption = assign({}, { + type: 'group', + width: eachSpacing / 2, + meterBorder: 4, + meterFillColor: '#FFFFFF', + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + labelPosition: 'outside' + }, opts.extra.column); + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + } + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing); + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + + // 计算0轴坐标 + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange); + let zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2]; + eachSeries.zeroPoints = zeroPoints; + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process); + var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(tooltipPoints); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + //fix issues/I27B1N yyoinge & Joeshu + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const top = item.y > zeroPoints ? zeroPoints : item.y; + const width = item.width; + const height = Math.abs(zeroPoints - item.y); + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + if(item.y > zeroPoints){ + columnOption.barBorderRadius = [0, 0,width / 2, width / 2]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.lineTo(startX, zeroPoints); + context.lineTo(startX, item.y); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + //context.stroke(); + context.fill(); + } + }; + break; + case 'stack': + // 绘制堆叠数据图 + var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(points); + points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + context.beginPath(); + var fillColor = item.color || eachSeries.color; + var startX = item.x - item.width / 2 + 1; + var height = opts.height - item.y - opts.area[2]; + var height0 = opts.height - item.y0 - opts.area[2]; + if (seriesIndex > 0) { + height -= height0; + } + context.setFillStyle(fillColor); + context.moveTo(startX, item.y); + context.fillRect(startX, item.y, item.width, height); + context.closePath(); + context.fill(); + } + }; + break; + case 'meter': + // 绘制温度计数据图 + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + //画背景颜色 + context.beginPath(); + if (seriesIndex == 0 && columnOption.meterBorder > 0) { + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(columnOption.meterBorder * opts.pix); + } + if(seriesIndex == 0){ + context.setFillStyle(columnOption.meterFillColor); + }else{ + context.setFillStyle(item.color || eachSeries.color); + } + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const top = item.y; + const width = item.width; + const height = zeroPoints - item.y; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + context.fill(); + }else{ + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.lineTo(startX, zeroPoints); + context.lineTo(startX, item.y); + context.fill(); + } + if (seriesIndex == 0 && columnOption.meterBorder > 0) { + context.closePath(); + context.stroke(); + } + } + } + break; + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + drawColumePointText(points, eachSeries, config, context, opts); + break; + case 'stack': + var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + drawColumePointText(points, eachSeries, config, context, opts); + break; + case 'meter': + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawColumePointText(points, eachSeries, config, context, opts); + break; + } + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawMountDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let mountOption = assign({}, { + type: 'mount', + widthRatio: 1, + borderWidth: 1, + barBorderCircle: false, + barBorderRadius: [], + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.mount); + mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio; + mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio; + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + } + mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config); + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[0]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + + // 计算0轴坐标 + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange); + let zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2]; + + var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process); + switch (mountOption.type) { + case 'bar': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4) || mountOption.barBorderCircle === true) { + const left = startX; + const top = item.y > zeroPoints ? zeroPoints : item.y; + const width = item.width; + const height = Math.abs(zeroPoints - item.y); + if (mountOption.barBorderCircle) { + mountOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + if(item.y > zeroPoints){ + mountOption.barBorderRadius = [0, 0,width / 2, width / 2]; + } + let [r0, r1, r2, r3] = mountOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.lineTo(startX, zeroPoints); + context.lineTo(startX, item.y); + } + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.closePath(); + context.stroke(); + } + context.fill(); + } + }; + break; + case 'triangle': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + context.moveTo(startX, zeroPoints); + context.lineTo(item.x, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.stroke(); + } + context.fill(); + } + }; + break; + case 'mount': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + context.moveTo(startX, zeroPoints); + context.bezierCurveTo(item.x - item.width/4, zeroPoints, item.x - item.width/4, item.y, item.x, item.y); + context.bezierCurveTo(item.x + item.width/4, item.y, item.x + item.width/4, zeroPoints, startX + item.width, zeroPoints); + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.stroke(); + } + context.fill(); + } + }; + break; + case 'sharp': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + context.moveTo(startX, zeroPoints); + context.quadraticCurveTo(item.x - 0, zeroPoints - height/4, item.x, item.y); + context.quadraticCurveTo(item.x + 0, zeroPoints - height/4, startX + item.width, zeroPoints) + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.stroke(); + } + context.fill(); + } + }; + break; + } + + if (opts.dataLabel !== false && process === 1) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[0]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process); + drawMountPointText(points, series, config, context, opts, zeroPoints); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: points, + eachSpacing: eachSpacing + }; +} + +function drawBarDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let yAxisPoints = []; + let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/opts.categories.length; + for (let i = 0; i < opts.categories.length; i++) { + yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i); + } + let columnOption = assign({}, { + type: 'group', + width: eachSpacing / 2, + meterBorder: 4, + meterFillColor: '#FFFFFF', + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.bar); + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = yAxisPoints.length + 2; + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing); + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.xAxisData.ranges); + maxRange = ranges.pop(); + minRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process); + var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(tooltipPoints); + points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + //fix issues/I27B1N yyoinge & Joeshu + if (item !== null && i > leftNum && i < rightNum) { + //var startX = item.x - item.width / 2; + var startX = opts.area[3]; + var startY = item.y - item.width / 2; + var height = item.height; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, item.x, item.y); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const width = item.width; + const top = item.y - item.width / 2; + const height = item.height; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + + context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2); + context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0); + context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2); + context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, startY); + context.lineTo(item.x, startY); + context.lineTo(item.x, startY + item.width); + context.lineTo(startX, startY + item.width); + context.lineTo(startX, startY); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + //context.stroke(); + context.fill(); + } + }; + break; + case 'stack': + // 绘制堆叠数据图 + var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(points); + points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + context.beginPath(); + var fillColor = item.color || eachSeries.color; + var startX = item.x0; + context.setFillStyle(fillColor); + context.moveTo(startX, item.y - item.width/2); + context.fillRect(startX, item.y - item.width/2, item.height , item.width); + context.closePath(); + context.fill(); + } + }; + break; + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.xAxisData.ranges); + maxRange = ranges.pop(); + minRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process); + points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts); + drawBarPointText(points, eachSeries, config, context, opts); + break; + case 'stack': + var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + drawBarPointText(points, eachSeries, config, context, opts); + break; + } + }); + } + return { + yAxisPoints: yAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawCandleDataPoints(series, seriesMA, opts, config, context) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var candleOption = assign({}, { + color: {}, + average: {} + }, opts.extra.candle); + candleOption.color = assign({}, { + upLine: '#f04864', + upFill: '#f04864', + downLine: '#2fc25b', + downFill: '#2fc25b' + }, candleOption.color); + candleOption.average = assign({}, { + show: false, + name: [], + day: [], + color: config.color + }, candleOption.average); + opts.extra.candle = candleOption; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + //画均线 + if (candleOption.average.show || seriesMA) { //Merge pull request !12 from 邱贵翔 + seriesMA.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + var splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(1); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, + item.y); + } + } + context.moveTo(points[0].x, points[0].y); + } + context.closePath(); + context.stroke(); + } + }); + } + //画K线 + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + var splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList[0].length; i++) { + if (i > leftNum && i < rightNum) { + let item = splitPointList[0][i]; + context.beginPath(); + //如果上涨 + if (data[i][1] - data[i][0] > 0) { + context.setStrokeStyle(candleOption.color.upLine); + context.setFillStyle(candleOption.color.upFill); + context.setLineWidth(1 * opts.pix); + context.moveTo(item[3].x, item[3].y); //顶点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点 + context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[2].x, item[2].y); //底点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点 + context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.moveTo(item[3].x, item[3].y); //顶点 + } else { + context.setStrokeStyle(candleOption.color.downLine); + context.setFillStyle(candleOption.color.downFill); + context.setLineWidth(1 * opts.pix); + context.moveTo(item[3].x, item[3].y); //顶点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点 + context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[2].x, item[2].y); //底点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点 + context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.moveTo(item[3].x, item[3].y); //顶点 + } + context.closePath(); + context.fill(); + context.stroke(); + } + } + }); + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawAreaDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var areaOption = assign({}, { + type: 'straight', + opacity: 0.2, + addLine: false, + width: 2, + gradient: false, + activeType: 'none' + }, opts.extra.area); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let endY = opts.height - opts.area[2]; + let calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + let data = eachSeries.data; + let points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + let splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + // 绘制区域数 + context.beginPath(); + context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + if (areaOption.gradient) { + let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]); + gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + } else { + context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + } + context.setLineWidth(areaOption.width * opts.pix); + if (points.length > 1) { + let firstPoint = points[0]; + let lastPoint = points[points.length - 1]; + context.moveTo(firstPoint.x, firstPoint.y); + let startPoint = 0; + if (areaOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + let ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (areaOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (areaOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + let item = points[0]; + context.moveTo(item.x - eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, endY); + // context.lineTo(item.x - eachSpacing / 2, endY); + // context.moveTo(item.x - eachSpacing / 2, item.y); + } + context.closePath(); + context.fill(); + //画连线 + if (areaOption.addLine) { + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(areaOption.width * opts.pix); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + if (areaOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + let ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (areaOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (areaOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.moveTo(points[0].x, points[0].y); + } + context.stroke(); + context.setLineDash([]); + } + } + //画点 + if (opts.dataPointShape !== false) { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, areaOption,seriesIndex); + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawScatterDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var scatterOption = assign({}, { + type: 'circle' + }, opts.extra.scatter); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setFillStyle(eachSeries.color); + context.setLineWidth(1 * opts.pix); + var shape = eachSeries.pointShape; + if (shape === 'diamond') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'triangle') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); + }); + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawBubbleDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var bubbleOption = assign({}, { + opacity: 1, + border:2 + }, opts.extra.bubble); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(bubbleOption.border * opts.pix); + context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity)); + points.forEach(function(item, index) { + context.moveTo(item.x + item.r, item.y); + context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false); + }); + context.closePath(); + context.fill(); + context.stroke(); + + if (opts.dataLabel !== false && process === 1) { + points.forEach(function(item, index) { + context.beginPath(); + var fontSize = eachSeries.textSize * opts.pix || config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(eachSeries.textColor || "#FFFFFF"); + context.setTextAlign('center'); + context.fillText(String(item.t), item.x, item.y + fontSize/2); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + }); + } + }); + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawLineDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var lineOption = assign({}, { + type: 'straight', + width: 2, + activeType: 'none', + linearType: 'none', + onShadow: false, + animation: 'vertical', + }, opts.extra.line); + lineOption.width *= opts.pix; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + // 这段很神奇的代码用于解决ios16的setStrokeStyle失效的bug + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.moveTo(-10000, -10000); + context.lineTo(-10001, -10001); + context.stroke(); + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process); + calPoints.push(points); + var splitPointList = splitPoints(points,eachSeries); + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + var strokeColor = eachSeries.color; + if (lineOption.linearType !== 'none' && eachSeries.linearColor && eachSeries.linearColor.length > 0) { + var grd = context.createLinearGradient(opts.chartData.xAxisData.startX, opts.height/2, opts.chartData.xAxisData.endX, opts.height/2); + for (var i = 0; i < eachSeries.linearColor.length; i++) { + grd.addColorStop(eachSeries.linearColor[i][0], hexToRgb(eachSeries.linearColor[i][1], 1)); + } + strokeColor = grd + } + context.setStrokeStyle(strokeColor); + if (lineOption.onShadow == true && eachSeries.setShadow && eachSeries.setShadow.length > 0) { + context.setShadow(eachSeries.setShadow[0], eachSeries.setShadow[1], eachSeries.setShadow[2], eachSeries.setShadow[3]); + }else{ + context.setShadow(0, 0, 0, 'rgba(0,0,0,0)'); + } + context.setLineWidth(lineOption.width); + splitPointList.forEach(function(points, index) { + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + if (lineOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (lineOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (lineOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.moveTo(points[0].x, points[0].y); + } + }); + context.stroke(); + context.setLineDash([]); + if (opts.dataPointShape !== false) { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, lineOption); + }); + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawMixDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let columnOption = assign({}, { + width: eachSpacing / 2, + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.mix.column); + let areaOption = assign({}, { + opacity: 0.2, + gradient: false + }, opts.extra.mix.area); + let lineOption = assign({}, { + width: 2 + }, opts.extra.mix.line); + let endY = opts.height - opts.area[2]; + let calPoints = []; + var columnIndex = 0; + var columnLength = 0; + series.forEach(function(eachSeries, seriesIndex) { + if (eachSeries.type == 'column') { + columnLength += 1; + } + }); + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + // 绘制柱状数据图 + if (eachSeries.type == 'column') { + points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle) { + const left = startX; + const top = item.y; + const width = item.width; + const height = opts.height - opts.area[2] - item.y; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, opts.height - opts.area[2]); + context.lineTo(startX, opts.height - opts.area[2]); + context.lineTo(startX, item.y); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + context.fill(); + } + } + columnIndex += 1; + } + //绘制区域图数据 + if (eachSeries.type == 'area') { + let splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + // 绘制区域数据 + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + if (areaOption.gradient) { + let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]); + gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + } else { + context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + } + context.setLineWidth(2 * opts.pix); + if (points.length > 1) { + var firstPoint = points[0]; + let lastPoint = points[points.length - 1]; + context.moveTo(firstPoint.x, firstPoint.y); + let startPoint = 0; + if (eachSeries.style === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } else { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + let item = points[0]; + context.moveTo(item.x - eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, endY); + // context.lineTo(item.x - eachSpacing / 2, endY); + // context.moveTo(item.x - eachSpacing / 2, item.y); + } + context.closePath(); + context.fill(); + } + } + // 绘制折线数据图 + if (eachSeries.type == 'line') { + var splitPointList = splitPoints(points,eachSeries); + splitPointList.forEach(function(points, index) { + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(lineOption.width * opts.pix); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + if (eachSeries.style == 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, + item.x, item.y); + } + } + } else { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + } + } + context.moveTo(points[0].x, points[0].y); + } + context.stroke(); + context.setLineDash([]); + }); + } + // 绘制点数据图 + if (eachSeries.type == 'point') { + eachSeries.addPoint = true; + } + if (eachSeries.addPoint == true && eachSeries.type !== 'column') { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + }); + if (opts.dataLabel !== false && process === 1) { + var columnIndex = 0; + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + if (eachSeries.type !== 'column') { + drawPointText(points, eachSeries, config, context, opts); + } else { + points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); + drawPointText(points, eachSeries, config, context, opts); + columnIndex += 1; + } + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing, + } +} + + +function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) { + var toolTipOption = opts.extra.tooltip || {}; + if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'mount' || opts.type == 'candle' || opts.type == 'mix')) { + drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints); + } + context.restore(); + +} + +function drawXAxis(categories, opts, config, context) { + + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + startX = xAxisData.startX, + endX = xAxisData.endX, + eachSpacing = xAxisData.eachSpacing; + var boundaryGap = 'center'; + if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area'|| opts.type == 'scatter' || opts.type == 'bubble') { + boundaryGap = opts.xAxis.boundaryGap; + } + var startY = opts.height - opts.area[2]; + var endY = opts.area[0]; + + //绘制滚动条 + if (opts.enableScroll && opts.xAxis.scrollShow) { + var scrollY = opts.height - opts.area[2] + config.xAxisHeight; + var scrollScreenWidth = endX - startX; + var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1); + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + scrollTotalWidth += (opts.extra.mount.widthRatio - 1)*eachSpacing; + } + var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth; + var scrollLeft = 0; + if (opts._scrollDistance_) { + scrollLeft = -opts._scrollDistance_ * (scrollScreenWidth) / scrollTotalWidth; + } + context.beginPath(); + context.setLineCap('round'); + context.setLineWidth(6 * opts.pix); + context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF"); + context.moveTo(startX, scrollY); + context.lineTo(endX, scrollY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.setLineCap('round'); + context.setLineWidth(6 * opts.pix); + context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6"); + context.moveTo(startX + scrollLeft, scrollY); + context.lineTo(startX + scrollLeft + scrollWidth, scrollY); + context.stroke(); + context.closePath(); + context.setLineCap('butt'); + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + //绘制X轴刻度线 + if (opts.xAxis.calibration === true) { + context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); + context.setLineCap('butt'); + context.setLineWidth(1 * opts.pix); + xAxisPoints.forEach(function(item, index) { + if (index > 0) { + context.beginPath(); + context.moveTo(item - eachSpacing / 2, startY); + context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix); + context.closePath(); + context.stroke(); + } + }); + } + //绘制X轴网格 + if (opts.xAxis.disableGrid !== true) { + context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); + context.setLineCap('butt'); + context.setLineWidth(1 * opts.pix); + if (opts.xAxis.gridType == 'dash') { + context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]); + } + opts.xAxis.gridEval = opts.xAxis.gridEval || 1; + xAxisPoints.forEach(function(item, index) { + if (index % opts.xAxis.gridEval == 0) { + context.beginPath(); + context.moveTo(item, startY); + context.lineTo(item, endY); + context.stroke(); + } + }); + context.setLineDash([]); + } + //绘制X轴文案 + if (opts.xAxis.disabled !== true) { + // 对X轴列表做抽稀处理 + //默认全部显示X轴标签 + let maxXAxisListLength = categories.length; + //如果设置了X轴单屏数量 + if (opts.xAxis.labelCount) { + //如果设置X轴密度 + if (opts.xAxis.itemCount) { + maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount); + } else { + maxXAxisListLength = opts.xAxis.labelCount; + } + maxXAxisListLength -= 1; + } + + let ratio = Math.ceil(categories.length / maxXAxisListLength); + + let newCategories = []; + let cgLength = categories.length; + for (let i = 0; i < cgLength; i++) { + if (i % ratio !== 0) { + newCategories.push(""); + } else { + newCategories.push(categories[i]); + } + } + newCategories[cgLength - 1] = categories[cgLength - 1]; + var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize; + if (config._xAxisTextAngle_ === 0) { + newCategories.forEach(function(item, index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item,index,opts) : item; + var offset = -measureText(String(xitem), xAxisFontSize, context) / 2; + if (boundaryGap == 'center') { + offset += eachSpacing / 2; + } + var scrollHeight = 0; + if (opts.xAxis.scrollShow) { + scrollHeight = 6 * opts.pix; + } + // 如果在主视图区域内 + var _scrollDistance_ = opts._scrollDistance_ || 0; + var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index]; + if((truePoints - Math.abs(_scrollDistance_)) >= (opts.area[3] - 1) && (truePoints - Math.abs(_scrollDistance_)) <= (opts.width - opts.area[1] + 1)){ + context.beginPath(); + context.setFontSize(xAxisFontSize); + context.setFillStyle(opts.xAxis.fontColor || opts.fontColor); + context.fillText(String(xitem), xAxisPoints[index] + offset, startY + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.fontSize) * opts.pix / 2 + opts.xAxis.fontSize * opts.pix); + context.closePath(); + context.stroke(); + } + }); + } else { + newCategories.forEach(function(item, index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item; + // 如果在主视图区域内 + var _scrollDistance_ = opts._scrollDistance_ || 0; + var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index]; + if((truePoints - Math.abs(_scrollDistance_)) >= (opts.area[3] - 1) && (truePoints - Math.abs(_scrollDistance_)) <= (opts.width - opts.area[1] + 1)){ + context.save(); + context.beginPath(); + context.setFontSize(xAxisFontSize); + context.setFillStyle(opts.xAxis.fontColor || opts.fontColor); + var textWidth = measureText(String(xitem), xAxisFontSize, context); + var offsetX = xAxisPoints[index]; + if (boundaryGap == 'center') { + offsetX = xAxisPoints[index] + eachSpacing / 2; + } + var scrollHeight = 0; + if (opts.xAxis.scrollShow) { + scrollHeight = 6 * opts.pix; + } + var offsetY = startY + opts.xAxis.marginTop * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_)); + if(opts.xAxis.rotateAngle < 0){ + offsetX -= xAxisFontSize / 2; + textWidth = 0; + }else{ + offsetX += xAxisFontSize / 2; + textWidth = -textWidth; + } + context.translate(offsetX, offsetY); + context.rotate(-1 * config._xAxisTextAngle_); + context.fillText(String(xitem), textWidth , 0 ); + context.closePath(); + context.stroke(); + context.restore(); + } + }); + } + } + context.restore(); + + //画X轴标题 + if (opts.xAxis.title) { + context.beginPath(); + context.setFontSize(opts.xAxis.titleFontSize * opts.pix); + context.setFillStyle(opts.xAxis.titleFontColor); + context.fillText(String(opts.xAxis.title), opts.width - opts.area[1] + opts.xAxis.titleOffsetX * opts.pix,opts.height - opts.area[2] + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.titleFontSize) * opts.pix / 2 + (opts.xAxis.titleFontSize + opts.xAxis.titleOffsetY) * opts.pix); + context.closePath(); + context.stroke(); + } + + //绘制X轴轴线 + if (opts.xAxis.axisLine) { + context.beginPath(); + context.setStrokeStyle(opts.xAxis.axisLineColor); + context.setLineWidth(1 * opts.pix); + context.moveTo(startX, opts.height - opts.area[2]); + context.lineTo(endX, opts.height - opts.area[2]); + context.stroke(); + } +} + +function drawYAxisGrid(categories, opts, config, context) { + if (opts.yAxis.disableGrid === true) { + return; + } + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let eachSpacing = spacingValid / opts.yAxis.splitNumber; + let startX = opts.area[3]; + let xAxisPoints = opts.chartData.xAxisData.xAxisPoints, + xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing; + let TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1); + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1 ){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + TotalWidth += (opts.extra.mount.widthRatio - 1) * xAxiseachSpacing; + } + let endX = startX + TotalWidth; + let points = []; + let startY = 1 + if (opts.xAxis.axisLine === false) { + startY = 0 + } + for (let i = startY; i < opts.yAxis.splitNumber + 1; i++) { + points.push(opts.height - opts.area[2] - eachSpacing * i); + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + if (opts.yAxis.gridType == 'dash') { + context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]); + } + context.setStrokeStyle(opts.yAxis.gridColor); + context.setLineWidth(1 * opts.pix); + points.forEach(function(item, index) { + context.beginPath(); + context.moveTo(startX, item); + context.lineTo(endX, item); + context.stroke(); + }); + context.setLineDash([]); + context.restore(); +} + +function drawYAxis(series, opts, config, context) { + if (opts.yAxis.disabled === true) { + return; + } + var spacingValid = opts.height - opts.area[0] - opts.area[2]; + var eachSpacing = spacingValid / opts.yAxis.splitNumber; + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + var endY = opts.height - opts.area[2]; + // set YAxis background + context.beginPath(); + context.setFillStyle(opts.background); + if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') { + context.fillRect(0, 0, startX, endY + 2 * opts.pix); + } + if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') { + context.fillRect(endX, 0, opts.width, endY + 2 * opts.pix); + } + context.closePath(); + context.stroke(); + + let tStartLeft = opts.area[3]; + let tStartRight = opts.width - opts.area[1]; + let tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2; + if (opts.yAxis.data) { + for (let i = 0; i < opts.yAxis.data.length; i++) { + let yData = opts.yAxis.data[i]; + var points = []; + if(yData.type === 'categories'){ + for (let i = 0; i <= yData.categories.length; i++) { + points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * i); + } + }else{ + for (let i = 0; i <= opts.yAxis.splitNumber; i++) { + points.push(opts.area[0] + eachSpacing * i); + } + } + if (yData.disabled !== true) { + let rangesFormat = opts.chartData.yAxisData.rangesFormat[i]; + let yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize; + let yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i]; + let textAlign = yData.textAlign || "right"; + //画Y轴刻度及文案 + rangesFormat.forEach(function(item, index) { + var pos = points[index]; + context.beginPath(); + context.setFontSize(yAxisFontSize); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(yData.axisLineColor || '#cccccc'); + context.setFillStyle(yData.fontColor || opts.fontColor); + let tmpstrat = 0; + let gapwidth = 4 * opts.pix; + if (yAxisWidth.position == 'left') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartLeft, pos); + context.lineTo(tStartLeft - 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + //画文字 + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartLeft - yAxisWidth.width + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartLeft - gapwidth + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartLeft - yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + + } else if (yAxisWidth.position == 'right') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartRight, pos); + context.lineTo(tStartRight + 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartRight + gapwidth + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartRight + yAxisWidth.width + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartRight + yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + } else if (yAxisWidth.position == 'center') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartCenter, pos); + context.lineTo(tStartCenter - 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + //画文字 + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartCenter - yAxisWidth.width + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartCenter - gapwidth + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartCenter - yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + } + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + }); + //画Y轴轴线 + if (yData.axisLine !== false) { + context.beginPath(); + context.setStrokeStyle(yData.axisLineColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + if (yAxisWidth.position == 'left') { + context.moveTo(tStartLeft, opts.height - opts.area[2]); + context.lineTo(tStartLeft, opts.area[0]); + } else if (yAxisWidth.position == 'right') { + context.moveTo(tStartRight, opts.height - opts.area[2]); + context.lineTo(tStartRight, opts.area[0]); + } else if (yAxisWidth.position == 'center') { + context.moveTo(tStartCenter, opts.height - opts.area[2]); + context.lineTo(tStartCenter, opts.area[0]); + } + context.stroke(); + } + //画Y轴标题 + if (opts.yAxis.showTitle) { + let titleFontSize = yData.titleFontSize * opts.pix || config.fontSize; + let title = yData.title; + context.beginPath(); + context.setFontSize(titleFontSize); + context.setFillStyle(yData.titleFontColor || opts.fontColor); + if (yAxisWidth.position == 'left') { + context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } else if (yAxisWidth.position == 'right') { + context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } else if (yAxisWidth.position == 'center') { + context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } + context.closePath(); + context.stroke(); + } + if (yAxisWidth.position == 'left') { + tStartLeft -= (yAxisWidth.width + opts.yAxis.padding * opts.pix); + } else { + tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix; + } + } + } + } + +} + +function drawLegend(series, opts, config, context, chartData) { + if (opts.legend.show === false) { + return; + } + let legendData = chartData.legendData; + let legendList = legendData.points; + let legendArea = legendData.area; + let padding = opts.legend.padding * opts.pix; + let fontSize = opts.legend.fontSize * opts.pix; + let shapeWidth = 15 * opts.pix; + let shapeRight = 5 * opts.pix; + let itemGap = opts.legend.itemGap * opts.pix; + let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize); + //画背景及边框 + context.beginPath(); + context.setLineWidth(opts.legend.borderWidth * opts.pix); + context.setStrokeStyle(opts.legend.borderColor); + context.setFillStyle(opts.legend.backgroundColor); + context.moveTo(legendArea.start.x, legendArea.start.y); + context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height); + context.closePath(); + context.fill(); + context.stroke(); + legendList.forEach(function(itemList, listIndex) { + let width = 0; + let height = 0; + width = legendData.widthArr[listIndex]; + height = legendData.heightArr[listIndex]; + let startX = 0; + let startY = 0; + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + switch (opts.legend.float) { + case 'left': + startX = legendArea.start.x + padding; + break; + case 'right': + startX = legendArea.start.x + legendArea.width - width; + break; + default: + startX = legendArea.start.x + (legendArea.width - width) / 2; + } + startY = legendArea.start.y + padding + listIndex * lineHeight; + } else { + if (listIndex == 0) { + width = 0; + } else { + width = legendData.widthArr[listIndex - 1]; + } + startX = legendArea.start.x + padding + width; + startY = legendArea.start.y + padding + (legendArea.height - height) / 2; + } + context.setFontSize(config.fontSize); + for (let i = 0; i < itemList.length; i++) { + let item = itemList[i]; + item.area = [0, 0, 0, 0]; + item.area[0] = startX; + item.area[1] = startY; + item.area[3] = startY + lineHeight; + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor); + context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor); + switch (item.legendShape) { + case 'line': + context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix); + break; + case 'triangle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + break; + case 'diamond': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + break; + case 'circle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight); + context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI); + break; + case 'rect': + context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + break; + case 'square': + context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix); + break; + case 'none': + break; + default: + context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + } + context.closePath(); + context.fill(); + context.stroke(); + startX += shapeWidth + shapeRight; + let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2; + const legendText = item.legendText ? item.legendText : item.name; + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor); + context.fillText(legendText, startX, startY + fontTrans); + context.closePath(); + context.stroke(); + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + startX += measureText(legendText, fontSize, context) + itemGap; + item.area[2] = startX; + } else { + item.area[2] = startX + measureText(legendText, fontSize, context) + itemGap;; + startX -= shapeWidth + shapeRight; + startY += lineHeight; + } + } + }); +} + +function drawPieDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var pieOption = assign({}, { + activeOpacity: 0.5, + activeRadius: 10, + offsetAngle: 0, + labelWidth: 15, + ringWidth: 30, + customRadius: 0, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + centerColor: '#FFFFFF', + linearType: 'none', + customColor: [], + }, opts.type == "pie" ? opts.extra.pie : opts.extra.ring); + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + if (config.pieChartLinePadding == 0) { + config.pieChartLinePadding = pieOption.activeRadius * opts.pix; + } + + var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding); + radius = radius < 10 ? 10 : radius; + if (pieOption.customRadius > 0) { + radius = pieOption.customRadius * opts.pix; + } + series = getPieDataPoints(series, radius, process); + var activeRadius = pieOption.activeRadius * opts.pix; + pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config); + series = series.map(function(eachSeries) { + eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180; + return eachSeries; + }); + series.forEach(function(eachSeries, seriesIndex) { + if (opts.tooltip) { + if (opts.tooltip.index == seriesIndex) { + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5)); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + } + } + context.beginPath(); + context.setLineWidth(pieOption.borderWidth * opts.pix); + context.lineJoin = "round"; + context.setStrokeStyle(pieOption.borderColor); + var fillcolor = eachSeries.color; + if (pieOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_) + } + grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(1, hexToRgb(eachSeries.color, 1)) + fillcolor = grd + } + context.setFillStyle(fillcolor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (pieOption.border == true) { + context.stroke(); + } + }); + if (opts.type === 'ring') { + var innerPieWidth = radius * 0.6; + if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) { + innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix); + } + context.beginPath(); + context.setFillStyle(pieOption.centerColor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + } + if (opts.dataLabel !== false && process === 1) { + drawPieText(series, opts, config, context, radius, centerPosition); + } + if (process === 1 && opts.type === 'ring') { + drawRingTitle(opts, config, context, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawRoseDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var roseOption = assign({}, { + type: 'area', + activeOpacity: 0.5, + activeRadius: 10, + offsetAngle: 0, + labelWidth: 15, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + linearType: 'none', + customColor: [], + }, opts.extra.rose); + if (config.pieChartLinePadding == 0) { + config.pieChartLinePadding = roseOption.activeRadius * opts.pix; + } + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding); + radius = radius < 10 ? 10 : radius; + var minRadius = roseOption.minRadius || radius * 0.5; + if(radius < minRadius){ + radius = minRadius + 10; + } + series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process); + var activeRadius = roseOption.activeRadius * opts.pix; + roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config); + series = series.map(function(eachSeries) { + eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180; + return eachSeries; + }); + series.forEach(function(eachSeries, seriesIndex) { + if (opts.tooltip) { + if (opts.tooltip.index == seriesIndex) { + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5)); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI); + context.closePath(); + context.fill(); + } + } + context.beginPath(); + context.setLineWidth(roseOption.borderWidth * opts.pix); + context.lineJoin = "round"; + context.setStrokeStyle(roseOption.borderColor); + var fillcolor = eachSeries.color; + if (roseOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_) + } + grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(1, hexToRgb(eachSeries.color, 1)) + fillcolor = grd + } + context.setFillStyle(fillcolor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (roseOption.border == true) { + context.stroke(); + } + }); + + if (opts.dataLabel !== false && process === 1) { + drawPieText(series, opts, config, context, radius, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawArcbarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var arcbarOption = assign({}, { + startAngle: 0.75, + endAngle: 0.25, + type: 'default', + direction: 'cw', + lineCap: 'round', + width: 12 , + gap: 2 , + linearType: 'none', + customColor: [], + }, opts.extra.arcbar); + series = getArcbarDataPoints(series, arcbarOption, process); + var centerPosition; + if (arcbarOption.centerX || arcbarOption.centerY) { + centerPosition = { + x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2, + y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2 + }; + } else { + centerPosition = { + x: opts.width / 2, + y: opts.height / 2 + }; + } + var radius; + if (arcbarOption.radius) { + radius = arcbarOption.radius; + } else { + radius = Math.min(centerPosition.x, centerPosition.y); + radius -= 5 * opts.pix; + radius -= arcbarOption.width / 2; + } + radius = radius < 10 ? 10 : radius; + arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config); + + for (let i = 0; i < series.length; i++) { + let eachSeries = series[i]; + //背景颜色 + context.setLineWidth(arcbarOption.width * opts.pix); + context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9'); + context.setLineCap(arcbarOption.lineCap); + context.beginPath(); + if (arcbarOption.type == 'default') { + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, arcbarOption.direction == 'ccw'); + } else { + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, arcbarOption.direction == 'ccw'); + } + context.stroke(); + //进度条 + var fillColor = eachSeries.color + if(arcbarOption.linearType == 'custom'){ + var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y); + grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(0, hexToRgb(eachSeries.color, 1)) + fillColor = grd; + } + context.setLineWidth(arcbarOption.width * opts.pix); + context.setStrokeStyle(fillColor); + context.setLineCap(arcbarOption.lineCap); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, arcbarOption.direction == 'ccw'); + context.stroke(); + } + drawRingTitle(opts, config, context, centerPosition); + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawGaugeDataPoints(categories, series, opts, config, context) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var gaugeOption = assign({}, { + type: 'default', + startAngle: 0.75, + endAngle: 0.25, + width: 15, + labelOffset:13, + splitLine: { + fixRadius: 0, + splitNumber: 10, + width: 15, + color: '#FFFFFF', + childNumber: 5, + childWidth: 5 + }, + pointer: { + width: 15, + color: 'auto' + } + }, opts.extra.gauge); + if (gaugeOption.oldAngle == undefined) { + gaugeOption.oldAngle = gaugeOption.startAngle; + } + if (gaugeOption.oldData == undefined) { + gaugeOption.oldData = 0; + } + categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle); + var centerPosition = { + x: opts.width / 2, + y: opts.height / 2 + }; + var radius = Math.min(centerPosition.x, centerPosition.y); + radius -= 5 * opts.pix; + radius -= gaugeOption.width / 2; + radius = radius < 10 ? 10 : radius; + var innerRadius = radius - gaugeOption.width; + var totalAngle = 0; + //判断仪表盘的样式:default百度样式,progress新样式 + if (gaugeOption.type == 'progress') { + //## 第一步画中心圆形背景和进度条背景 + //中心圆形背景 + var pieRadius = radius - gaugeOption.width * 3; + context.beginPath(); + let gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius); + //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径) + gradient.addColorStop('0', hexToRgb(series[0].color, 0.3)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false); + context.fill(); + //画进度条背景 + context.setLineWidth(gaugeOption.width); + context.setStrokeStyle(hexToRgb(series[0].color, 0.3)); + context.setLineCap('round'); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false); + context.stroke(); + //## 第二步画刻度线 + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber; + let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius; + let endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + let len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; + let proc = series[0].data * process; + for (let i = 0; i < len; i++) { + context.beginPath(); + //刻度线随进度变色 + if (proc > (i / len)) { + context.setStrokeStyle(hexToRgb(series[0].color, 1)); + } else { + context.setStrokeStyle(hexToRgb(series[0].color, 0.3)); + } + context.setLineWidth(3 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(endX, 0); + context.stroke(); + context.rotate(childAngle * Math.PI); + } + context.restore(); + //## 第三步画进度条 + series = getGaugeArcbarDataPoints(series, gaugeOption, process); + context.setLineWidth(gaugeOption.width); + context.setStrokeStyle(series[0].color); + context.setLineCap('round'); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false); + context.stroke(); + //## 第四步画指针 + let pointerRadius = radius - gaugeOption.width * 2.5; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((series[0]._proportion_ - 1) * Math.PI); + context.beginPath(); + context.setLineWidth(gaugeOption.width / 3); + let gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6); + gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0)); + gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1)); + gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0)); + context.setStrokeStyle(gradient3); + context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false); + context.stroke(); + context.beginPath(); + context.setLineWidth(1); + context.setStrokeStyle(series[0].color); + context.setFillStyle(series[0].color); + context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4); + context.stroke(); + context.fill(); + context.restore(); + //default百度样式 + } else { + //画背景 + context.setLineWidth(gaugeOption.width); + context.setLineCap('butt'); + for (let i = 0; i < categories.length; i++) { + let eachCategories = categories[i]; + context.beginPath(); + context.setStrokeStyle(eachCategories.color); + context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false); + context.stroke(); + } + context.save(); + //画刻度线 + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber; + let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius; + let endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width; + let childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth; + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { + context.beginPath(); + context.setStrokeStyle(gaugeOption.splitLine.color); + context.setLineWidth(2 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(endX, 0); + context.stroke(); + context.rotate(splitAngle * Math.PI); + } + context.restore(); + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + for (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) { + context.beginPath(); + context.setStrokeStyle(gaugeOption.splitLine.color); + context.setLineWidth(1 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(childendX, 0); + context.stroke(); + context.rotate(childAngle * Math.PI); + } + context.restore(); + //画指针 + series = getGaugeDataPoints(series, categories, gaugeOption, process); + for (let i = 0; i < series.length; i++) { + let eachSeries = series[i]; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((eachSeries._proportion_ - 1) * Math.PI); + context.beginPath(); + context.setFillStyle(eachSeries.color); + context.moveTo(gaugeOption.pointer.width, 0); + context.lineTo(0, -gaugeOption.pointer.width / 2); + context.lineTo(-innerRadius, 0); + context.lineTo(0, gaugeOption.pointer.width / 2); + context.lineTo(gaugeOption.pointer.width, 0); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFillStyle('#FFFFFF'); + context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false); + context.fill(); + context.restore(); + } + if (opts.dataLabel !== false) { + drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context); + } + } + //画仪表盘标题,副标题 + drawRingTitle(opts, config, context, centerPosition); + if (process === 1 && opts.type === 'gauge') { + opts.extra.gauge.oldAngle = series[0]._proportion_; + opts.extra.gauge.oldData = series[0].data; + } + return { + center: centerPosition, + radius: radius, + innerRadius: innerRadius, + categories: categories, + totalAngle: totalAngle + }; +} + +function drawRadarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var radarOption = assign({}, { + gridColor: '#cccccc', + gridType: 'radar', + gridEval:1, + axisLabel:false, + axisLabelTofix:0, + labelShow:true, + labelColor:'#666666', + labelPointShow:false, + labelPointRadius:3, + labelPointColor:'#cccccc', + opacity: 0.2, + gridCount: 3, + border:false, + borderWidth:2, + linearType: 'none', + customColor: [], + }, opts.extra.radar); + var coordinateAngle = getRadarCoordinateSeries(opts.categories.length); + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + var xr = (opts.width - opts.area[1] - opts.area[3]) / 2 + var yr = (opts.height - opts.area[0] - opts.area[2]) / 2 + var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin); + radius -= config.radarLabelTextMargin * opts.pix; + radius = radius < 10 ? 10 : radius; + radius = radarOption.radius ? radarOption.radius : radius; + // 画分割线 + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(radarOption.gridColor); + coordinateAngle.forEach(function(angle,index) { + var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition); + context.moveTo(centerPosition.x, centerPosition.y); + if (index % radarOption.gridEval == 0) { + context.lineTo(pos.x, pos.y); + } + }); + context.stroke(); + context.closePath(); + + // 画背景网格 + var _loop = function _loop(i) { + var startPos = {}; + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(radarOption.gridColor); + if (radarOption.gridType == 'radar') { + coordinateAngle.forEach(function(angle, index) { + var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / + radarOption.gridCount * i * Math.sin(angle), centerPosition); + if (index === 0) { + startPos = pos; + context.moveTo(pos.x, pos.y); + } else { + context.lineTo(pos.x, pos.y); + } + }); + context.lineTo(startPos.x, startPos.y); + } else { + var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition); + context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false); + } + context.stroke(); + context.closePath(); + }; + for (var i = 1; i <= radarOption.gridCount; i++) { + _loop(i); + } + radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config); + var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process); + radarDataPoints.forEach(function(eachSeries, seriesIndex) { + // 绘制区域数据 + context.beginPath(); + context.setLineWidth(radarOption.borderWidth * opts.pix); + context.setStrokeStyle(eachSeries.color); + + var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity); + if (radarOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, radius) + } + grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity)) + grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity)) + fillcolor = grd + } + + context.setFillStyle(fillcolor); + eachSeries.data.forEach(function(item, index) { + if (index === 0) { + context.moveTo(item.position.x, item.position.y); + } else { + context.lineTo(item.position.x, item.position.y); + } + }); + context.closePath(); + context.fill(); + if(radarOption.border === true){ + context.stroke(); + } + context.closePath(); + if (opts.dataPointShape !== false) { + var points = eachSeries.data.map(function(item) { + return item.position; + }); + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + }); + // 画刻度值 + if(radarOption.axisLabel === true){ + const maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series))); + const stepLength = radius / radarOption.gridCount; + const fontSize = opts.fontSize * opts.pix; + context.setFontSize(fontSize); + context.setFillStyle(opts.fontColor); + context.setTextAlign('left'); + for (var i = 0; i < radarOption.gridCount + 1; i++) { + let label = i * maxData / radarOption.gridCount; + label = label.toFixed(radarOption.axisLabelTofix); + context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2); + } + } + + // draw label text + drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context); + + // draw dataLabel + if (opts.dataLabel !== false && process === 1) { + radarDataPoints.forEach(function(eachSeries, seriesIndex) { + context.beginPath(); + var fontSize = eachSeries.textSize * opts.pix || config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(eachSeries.textColor || opts.fontColor); + eachSeries.data.forEach(function(item, index) { + //如果是中心点垂直的上下点位 + if(Math.abs(item.position.x - centerPosition.x)<2){ + //如果在上面 + if(item.position.y < centerPosition.y){ + context.setTextAlign('center'); + context.fillText(item.value, item.position.x, item.position.y - 4); + }else{ + context.setTextAlign('center'); + context.fillText(item.value, item.position.x, item.position.y + fontSize + 2); + } + }else{ + //如果在左侧 + if(item.position.x < centerPosition.x){ + context.setTextAlign('right'); + context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2); + }else{ + context.setTextAlign('left'); + context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2); + } + } + }); + context.closePath(); + context.stroke(); + }); + context.setTextAlign('left'); + } + + return { + center: centerPosition, + radius: radius, + angleList: coordinateAngle + }; +} + +// 经纬度转墨卡托 +function lonlat2mercator(longitude, latitude) { + var mercator = Array(2); + var x = longitude * 20037508.34 / 180; + var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180); + y = y * 20037508.34 / 180; + mercator[0] = x; + mercator[1] = y; + return mercator; +} + +// 墨卡托转经纬度 +function mercator2lonlat(longitude, latitude) { + var lonlat = Array(2) + var x = longitude / 20037508.34 * 180; + var y = latitude / 20037508.34 * 180; + y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2); + lonlat[0] = x; + lonlat[1] = y; + return lonlat; +} + +function getBoundingBox(data) { + var bounds = {},coords; + bounds.xMin = 180; + bounds.xMax = 0; + bounds.yMin = 90; + bounds.yMax = 0 + for (var i = 0; i < data.length; i++) { + var coorda = data[i].geometry.coordinates + for (var k = 0; k < coorda.length; k++) { + coords = coorda[k]; + if (coords.length == 1) { + coords = coords[0] + } + for (var j = 0; j < coords.length; j++) { + var longitude = coords[j][0]; + var latitude = coords[j][1]; + var point = { + x: longitude, + y: latitude + } + bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x; + bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x; + bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y; + bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y; + } + } + } + return bounds; +} + +function coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) { + return { + x: (longitude - bounds.xMin) * scale + xoffset, + y: (bounds.yMax - latitude) * scale + yoffset + }; +} + +function pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) { + return { + x: (pointX - xoffset) / scale + bounds.xMin, + y: bounds.yMax - (pointY - yoffset) / scale + }; +} + +function isRayIntersectsSegment(poi, s_poi, e_poi) { + if (s_poi[1] == e_poi[1]) { + return false; + } + if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) { + return false; + } + if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) { + return false; + } + if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) { + return false; + } + if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) { + return false; + } + if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) { + return false; + } + let xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]); + if (xseg < poi[0]) { + return false; + } else { + return true; + } +} + +function isPoiWithinPoly(poi, poly, mercator) { + let sinsc = 0; + for (let i = 0; i < poly.length; i++) { + let epoly = poly[i][0]; + if (poly.length == 1) { + epoly = poly[i][0] + } + for (let j = 0; j < epoly.length - 1; j++) { + let s_poi = epoly[j]; + let e_poi = epoly[j + 1]; + if (mercator) { + s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]); + e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]); + } + if (isRayIntersectsSegment(poi, s_poi, e_poi)) { + sinsc += 1; + } + } + } + if (sinsc % 2 == 1) { + return true; + } else { + return false; + } +} + +function drawMapDataPoints(series, opts, config, context) { + var mapOption = assign({}, { + border: true, + mercator: false, + borderWidth: 1, + active:true, + borderColor: '#666666', + fillOpacity: 0.6, + activeBorderColor: '#f04864', + activeFillColor: '#facc14', + activeFillOpacity: 1 + }, opts.extra.map); + var coords, point; + var data = series; + var bounds = getBoundingBox(data); + if (mapOption.mercator) { + var max = lonlat2mercator(bounds.xMax, bounds.yMax) + var min = lonlat2mercator(bounds.xMin, bounds.yMin) + bounds.xMax = max[0] + bounds.yMax = max[1] + bounds.xMin = min[0] + bounds.yMin = min[1] + } + var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin); + var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin); + var scale = xScale < yScale ? xScale : yScale; + var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale; + var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale; + for (var i = 0; i < data.length; i++) { + context.beginPath(); + context.setLineWidth(mapOption.borderWidth * opts.pix); + context.setStrokeStyle(mapOption.borderColor); + context.setFillStyle(hexToRgb(series[i].color, series[i].fillOpacity||mapOption.fillOpacity)); + if (mapOption.active == true && opts.tooltip) { + if (opts.tooltip.index == i) { + context.setStrokeStyle(mapOption.activeBorderColor); + context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity)); + } + } + var coorda = data[i].geometry.coordinates + for (var k = 0; k < coorda.length; k++) { + coords = coorda[k]; + if (coords.length == 1) { + coords = coords[0] + } + for (var j = 0; j < coords.length; j++) { + var gaosi = Array(2); + if (mapOption.mercator) { + gaosi = lonlat2mercator(coords[j][0], coords[j][1]) + } else { + gaosi = coords[j] + } + point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset) + if (j === 0) { + context.beginPath(); + context.moveTo(point.x, point.y); + } else { + context.lineTo(point.x, point.y); + } + } + context.fill(); + if (mapOption.border == true) { + context.stroke(); + } + } + } + if (opts.dataLabel == true) { + for (var i = 0; i < data.length; i++) { + var centerPoint = data[i].properties.centroid; + if (centerPoint) { + if (mapOption.mercator) { + centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]) + } + point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset); + let fontSize = data[i].textSize * opts.pix || config.fontSize; + let fontColor = data[i].textColor || opts.fontColor; + if(mapOption.active && mapOption.activeTextColor && opts.tooltip && opts.tooltip.index == i){ + fontColor = mapOption.activeTextColor; + } + let text = data[i].properties.name; + context.beginPath(); + context.setFontSize(fontSize) + context.setFillStyle(fontColor) + context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2); + context.closePath(); + context.stroke(); + } + } + } + opts.chartData.mapData = { + bounds: bounds, + scale: scale, + xoffset: xoffset, + yoffset: yoffset, + mercator: mapOption.mercator + } + drawToolTipBridge(opts, config, context, 1); + context.draw(); +} + +function normalInt(min, max, iter) { + iter = iter == 0 ? 1 : iter; + var arr = []; + for (var i = 0; i < iter; i++) { + arr[i] = Math.random(); + }; + return Math.floor(arr.reduce(function(i, j) { + return i + j + }) / iter * (max - min)) + min; +}; + +function collisionNew(area, points, width, height) { + var isIn = false; + for (let i = 0; i < points.length; i++) { + if (points[i].area) { + if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) { + if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) { + isIn = true; + break; + } else { + isIn = false; + } + } else { + isIn = true; + break; + } + } + } + return isIn; +}; + +function getWordCloudPoint(opts, type, context) { + let points = opts.series; + switch (type) { + case 'normal': + for (let i = 0; i < points.length; i++) { + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + let x, y; + let area; + let breaknum = 0; + while (true) { + breaknum++; + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + + opts.height / 2 + ]; + let isCollision = collisionNew(area, points, opts.width, opts.height); + if (!isCollision) break; + if (breaknum == 1000) { + area = [-100, -100, -100, -100]; + break; + } + }; + points[i].area = area; + } + break; + case 'vertical': + function Spin() { + //获取均匀随机值,是否旋转,旋转的概率为(1-0.5) + if (Math.random() > 0.7) { + return true; + } else { + return false + }; + }; + for (let i = 0; i < points.length; i++) { + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + let isSpin = Spin(); + let x, y, area, areav; + let breaknum = 0; + while (true) { + breaknum++; + let isCollision; + if (isSpin) { + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [y - 5 - tWidth + opts.width / 2, (-x - 5 + opts.height / 2), y + 5 + opts.width / 2, (-x + tHeight + 5 + opts.height / 2)]; + areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-x + tHeight + 5 + opts.height / 2) - 5, (opts.height / 2 - opts.width / 2) + (y - 5 - tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-x + tHeight + 5 + opts.height / 2) + tHeight, (opts.height / 2 - opts.width / 2) + (y - 5 - tWidth + opts.width / 2) + tWidth + 5]; + isCollision = collisionNew(areav, points, opts.height, opts.width); + } else { + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2]; + isCollision = collisionNew(area, points, opts.width, opts.height); + } + if (!isCollision) break; + if (breaknum == 1000) { + area = [-1000, -1000, -1000, -1000]; + break; + } + }; + if (isSpin) { + points[i].area = areav; + points[i].areav = area; + } else { + points[i].area = area; + } + points[i].rotate = isSpin; + }; + break; + } + return points; +} + +function drawWordCloudDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let wordOption = assign({}, { + type: 'normal', + autoColors: true + }, opts.extra.word); + if (!opts.chartData.wordCloudData) { + opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context); + } + context.beginPath(); + context.setFillStyle(opts.background); + context.rect(0, 0, opts.width, opts.height); + context.fill(); + context.save(); + let points = opts.chartData.wordCloudData; + context.translate(opts.width / 2, opts.height / 2); + for (let i = 0; i < points.length; i++) { + context.save(); + if (points[i].rotate) { + context.rotate(90 * Math.PI / 180); + } + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + context.beginPath(); + context.setStrokeStyle(points[i].color); + context.setFillStyle(points[i].color); + context.setFontSize(tHeight); + if (points[i].rotate) { + if (points[i].areav[0] > 0) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process); + } else { + context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process); + } + } else { + context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process); + } + } + } else { + if (points[i].area[0] > 0) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process); + } else { + context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process); + } + } else { + context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process); + } + } + } + context.stroke(); + context.restore(); + } + context.restore(); +} + +function drawFunnelDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let funnelOption = assign({}, { + type:'funnel', + activeWidth: 10, + activeOpacity: 0.3, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + fillOpacity: 1, + minSize: 0, + labelAlign: 'right', + linearType: 'none', + customColor: [], + }, opts.extra.funnel); + let eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length; + let centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.height - opts.area[2] + }; + let activeWidth = funnelOption.activeWidth * opts.pix; + let radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth); + let seriesNew = getFunnelDataPoints(series, radius, funnelOption, eachSpacing, process); + context.save(); + context.translate(centerPosition.x, centerPosition.y); + funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config); + if(funnelOption.type == 'pyramid'){ + for (let i = 0; i < seriesNew.length; i++) { + if (i == seriesNew.length -1) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(-activeWidth, -eachSpacing); + context.lineTo(-seriesNew[i].radius - activeWidth, 0); + context.lineTo(seriesNew[i].radius + activeWidth, 0); + context.lineTo(activeWidth, -eachSpacing); + context.lineTo(-activeWidth, -eachSpacing); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, -eachSpacing); + context.lineTo(-seriesNew[i].radius, 0); + context.lineTo(seriesNew[i].radius, 0); + context.lineTo(0, -eachSpacing); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } else { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i].radius - activeWidth, 0); + context.lineTo(-seriesNew[i + 1].radius - activeWidth, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius + activeWidth, -eachSpacing); + context.lineTo(seriesNew[i].radius + activeWidth, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i].radius, 0); + context.lineTo(-seriesNew[i + 1].radius, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius, -eachSpacing); + context.lineTo(seriesNew[i].radius, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } + context.translate(0, -eachSpacing) + } + }else{ + context.translate(0, - (seriesNew.length - 1) * eachSpacing); + for (let i = 0; i < seriesNew.length; i++) { + if (i == seriesNew.length - 1) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(-activeWidth - funnelOption.minSize/2, 0); + context.lineTo(-seriesNew[i].radius - activeWidth, -eachSpacing); + context.lineTo(seriesNew[i].radius + activeWidth, -eachSpacing); + context.lineTo(activeWidth + funnelOption.minSize/2, 0); + context.lineTo(-activeWidth - funnelOption.minSize/2, 0); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing, centerPosition.x + seriesNew[i].radius, centerPosition.y ]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-funnelOption.minSize/2, 0); + context.lineTo(-seriesNew[i].radius, -eachSpacing); + context.lineTo(seriesNew[i].radius, -eachSpacing); + context.lineTo(funnelOption.minSize/2, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } else { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i + 1].radius - activeWidth, 0); + context.lineTo(-seriesNew[i].radius - activeWidth, -eachSpacing); + context.lineTo(seriesNew[i].radius + activeWidth, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius + activeWidth, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (seriesNew.length - i), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * (seriesNew.length - i - 1)]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i + 1].radius, 0); + context.lineTo(-seriesNew[i].radius, -eachSpacing); + context.lineTo(seriesNew[i].radius, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } + context.translate(0, eachSpacing) + } + } + + context.restore(); + if (opts.dataLabel !== false && process === 1) { + drawFunnelText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition); + } + if (process === 1) { + drawFunnelCenterText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: seriesNew + }; +} + +function drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) { + for (let i = 0; i < series.length; i++) { + let item = series[i]; + if(item.labelShow === false){ + continue; + } + let startX, endX, startY, fontSize; + let text = item.formatter ? item.formatter(item,i,series,opts) : util.toFixed(item._proportion_ * 100) + '%'; + text = item.labelText ? item.labelText : text; + if (labelAlign == 'right') { + if (i == series.length -1) { + startX = (item.funnelArea[2] + centerPosition.x) / 2; + } else { + startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2; + } + endX = startX + activeWidth * 2; + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix; + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.beginPath(); + context.moveTo(startX, startY); + context.lineTo(endX, startY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(endX, startY); + context.arc(endX, startY, 2 * opts.pix, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(text, endX + 5, startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } + if (labelAlign == 'left') { + if (i == series.length -1) { + startX = (item.funnelArea[0] + centerPosition.x) / 2; + } else { + startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2; + } + endX = startX - activeWidth * 2; + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix; + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.beginPath(); + context.moveTo(startX, startY); + context.lineTo(endX, startY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(endX, startY); + context.arc(endX, startY, 2, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } + } +} + +function drawFunnelCenterText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) { + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let startY, fontSize; + if (item.centerText) { + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.centerTextSize * opts.pix || opts.fontSize * opts.pix; + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.centerTextColor || "#FFFFFF"); + context.fillText(item.centerText, centerPosition.x - measureText(item.centerText, fontSize, context) / 2, startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } + } +} + + +function drawCanvas(opts, context) { + context.save(); + context.translate(0, 0.5); + context.restore(); + context.draw(); +} + +var Timing = { + easeIn: function easeIn(pos) { + return Math.pow(pos, 3); + }, + easeOut: function easeOut(pos) { + return Math.pow(pos - 1, 3) + 1; + }, + easeInOut: function easeInOut(pos) { + if ((pos /= 0.5) < 1) { + return 0.5 * Math.pow(pos, 3); + } else { + return 0.5 * (Math.pow(pos - 2, 3) + 2); + } + }, + linear: function linear(pos) { + return pos; + } +}; + +function Animation(opts) { + this.isStop = false; + opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration; + opts.timing = opts.timing || 'easeInOut'; + var delay = 17; + function createAnimationFrame() { + if (typeof setTimeout !== 'undefined') { + return function(step, delay) { + setTimeout(function() { + var timeStamp = +new Date(); + step(timeStamp); + }, delay); + }; + } else if (typeof requestAnimationFrame !== 'undefined') { + return requestAnimationFrame; + } else { + return function(step) { + step(null); + }; + } + }; + var animationFrame = createAnimationFrame(); + var startTimeStamp = null; + var _step = function step(timestamp) { + if (timestamp === null || this.isStop === true) { + opts.onProcess && opts.onProcess(1); + opts.onAnimationFinish && opts.onAnimationFinish(); + return; + } + if (startTimeStamp === null) { + startTimeStamp = timestamp; + } + if (timestamp - startTimeStamp < opts.duration) { + var process = (timestamp - startTimeStamp) / opts.duration; + var timingFunction = Timing[opts.timing]; + process = timingFunction(process); + opts.onProcess && opts.onProcess(process); + animationFrame(_step, delay); + } else { + opts.onProcess && opts.onProcess(1); + opts.onAnimationFinish && opts.onAnimationFinish(); + } + }; + _step = _step.bind(this); + animationFrame(_step, delay); +} + +Animation.prototype.stop = function() { + this.isStop = true; +}; + +function drawCharts(type, opts, config, context) { + var _this = this; + var series = opts.series; + //兼容ECharts饼图类数据格式 + if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') { + series = fixPieSeries(series, opts, config); + } + var categories = opts.categories; + if (type === 'mount') { + categories = []; + for (let j = 0; j < series.length; j++) { + if(series[j].show !== false) categories.push(series[j].name) + } + opts.categories = categories; + } + series = fillSeries(series, opts, config); + var duration = opts.animation ? opts.duration : 0; + _this.animationInstance && _this.animationInstance.stop(); + var seriesMA = null; + if (type == 'candle') { + let average = assign({}, opts.extra.candle.average); + if (average.show) { + seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data); + seriesMA = fillSeries(seriesMA, opts, config); + opts.seriesMA = seriesMA; + } else if (opts.seriesMA) { + seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config); + } else { + seriesMA = series; + } + } else { + seriesMA = series; + } + /* 过滤掉show=false的series */ + opts._series_ = series = filterSeries(series); + //重新计算图表区域 + opts.area = new Array(4); + //复位绘图区域 + for (let j = 0; j < 4; j++) { + opts.area[j] = opts.padding[j] * opts.pix; + } + //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域 + var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context), + legendHeight = _calLegendData.area.wholeHeight, + legendWidth = _calLegendData.area.wholeWidth; + + switch (opts.legend.position) { + case 'top': + opts.area[0] += legendHeight; + break; + case 'bottom': + opts.area[2] += legendHeight; + break; + case 'left': + opts.area[3] += legendWidth; + break; + case 'right': + opts.area[1] += legendWidth; + break; + } + + let _calYAxisData = {}, + yAxisWidth = 0; + if (opts.type === 'line' || opts.type === 'column'|| opts.type === 'mount' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') { + _calYAxisData = calYAxisData(series, opts, config, context); + yAxisWidth = _calYAxisData.yAxisWidth; + //如果显示Y轴标题 + if (opts.yAxis.showTitle) { + let maxTitleHeight = 0; + for (let i = 0; i < opts.yAxis.data.length; i++) { + maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize) + } + opts.area[0] += maxTitleHeight; + } + let rightIndex = 0, + leftIndex = 0; + //计算主绘图区域左右位置 + for (let i = 0; i < yAxisWidth.length; i++) { + if (yAxisWidth[i].position == 'left') { + if (leftIndex > 0) { + opts.area[3] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix; + } else { + opts.area[3] += yAxisWidth[i].width; + } + leftIndex += 1; + } else if (yAxisWidth[i].position == 'right') { + if (rightIndex > 0) { + opts.area[1] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix; + } else { + opts.area[1] += yAxisWidth[i].width; + } + rightIndex += 1; + } + } + } else { + config.yAxisWidth = yAxisWidth; + } + opts.chartData.yAxisData = _calYAxisData; + + if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') { + opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config); + let _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context), + xAxisHeight = _calCategoriesData.xAxisHeight, + angle = _calCategoriesData.angle; + config.xAxisHeight = xAxisHeight; + config._xAxisTextAngle_ = angle; + opts.area[2] += xAxisHeight; + opts.chartData.categoriesData = _calCategoriesData; + } else { + if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') { + opts.chartData.xAxisData = calXAxisData(series, opts, config, context); + categories = opts.chartData.xAxisData.rangesFormat; + let _calCategoriesData = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context), + xAxisHeight = _calCategoriesData.xAxisHeight, + angle = _calCategoriesData.angle; + config.xAxisHeight = xAxisHeight; + config._xAxisTextAngle_ = angle; + opts.area[2] += xAxisHeight; + opts.chartData.categoriesData = _calCategoriesData; + } else { + opts.chartData.xAxisData = { + xAxisPoints: [] + }; + } + } + + //计算右对齐偏移距离 + if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) { + let offsetLeft = 0, + xAxisPoints = opts.chartData.xAxisData.xAxisPoints, + startX = opts.chartData.xAxisData.startX, + endX = opts.chartData.xAxisData.endX, + eachSpacing = opts.chartData.xAxisData.eachSpacing; + let totalWidth = eachSpacing * (xAxisPoints.length - 1); + let screenWidth = endX - startX; + offsetLeft = screenWidth - totalWidth; + _this.scrollOption.currentOffset = offsetLeft; + _this.scrollOption.startTouchX = offsetLeft; + _this.scrollOption.distance = 0; + _this.scrollOption.lastMoveTime = 0; + opts._scrollDistance_ = offsetLeft; + } + + if (type === 'pie' || type === 'ring' || type === 'rose') { + config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts); + } + + switch (type) { + case 'word': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawWordCloudDataPoints(series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'map': + context.clearRect(0, 0, opts.width, opts.height); + drawMapDataPoints(series, opts, config, context); + setTimeout(()=>{ + this.uevent.trigger('renderComplete'); + },50) + break; + case 'funnel': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'line': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process), + xAxisPoints = _drawLineDataPoints.xAxisPoints, + calPoints = _drawLineDataPoints.calPoints, + eachSpacing = _drawLineDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'scatter': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process), + xAxisPoints = _drawScatterDataPoints.xAxisPoints, + calPoints = _drawScatterDataPoints.calPoints, + eachSpacing = _drawScatterDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'bubble': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process), + xAxisPoints = _drawBubbleDataPoints.xAxisPoints, + calPoints = _drawBubbleDataPoints.calPoints, + eachSpacing = _drawBubbleDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'mix': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process), + xAxisPoints = _drawMixDataPoints.xAxisPoints, + calPoints = _drawMixDataPoints.calPoints, + eachSpacing = _drawMixDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'column': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process), + xAxisPoints = _drawColumnDataPoints.xAxisPoints, + calPoints = _drawColumnDataPoints.calPoints, + eachSpacing = _drawColumnDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'mount': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process), + xAxisPoints = _drawMountDataPoints.xAxisPoints, + calPoints = _drawMountDataPoints.calPoints, + eachSpacing = _drawMountDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'bar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawXAxis(categories, opts, config, context); + var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process), + yAxisPoints = _drawBarDataPoints.yAxisPoints, + calPoints = _drawBarDataPoints.calPoints, + eachSpacing = _drawBarDataPoints.eachSpacing; + opts.chartData.yAxisPoints = yAxisPoints; + opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'area': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process), + xAxisPoints = _drawAreaDataPoints.xAxisPoints, + calPoints = _drawAreaDataPoints.calPoints, + eachSpacing = _drawAreaDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'ring': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'pie': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'rose': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'radar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'arcbar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'gauge': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'candle': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process), + xAxisPoints = _drawCandleDataPoints.xAxisPoints, + calPoints = _drawCandleDataPoints.calPoints, + eachSpacing = _drawCandleDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + if (seriesMA) { + drawLegend(seriesMA, opts, config, context, opts.chartData); + } else { + drawLegend(opts.series, opts, config, context, opts.chartData); + } + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + } +} + +function uChartsEvent() { + this.events = {}; +} + +uChartsEvent.prototype.addEventListener = function(type, listener) { + this.events[type] = this.events[type] || []; + this.events[type].push(listener); +}; + +uChartsEvent.prototype.delEventListener = function(type) { + this.events[type] = []; +}; + +uChartsEvent.prototype.trigger = function() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + var type = args[0]; + var params = args.slice(1); + if (!!this.events[type]) { + this.events[type].forEach(function(listener) { + try { + listener.apply(null, params); + } catch (e) { + //console.log('[uCharts] '+e); + } + }); + } +}; + +var uCharts = function uCharts(opts) { + opts.pix = opts.pixelRatio ? opts.pixelRatio : 1; + opts.fontSize = opts.fontSize ? opts.fontSize : 13; + opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor; + if (opts.background == "" || opts.background == "none") { + opts.background = "#FFFFFF" + } + opts.title = assign({}, opts.title); + opts.subtitle = assign({}, opts.subtitle); + opts.duration = opts.duration ? opts.duration : 1000; + opts.yAxis = assign({}, { + data: [], + showTitle: false, + disabled: false, + disableGrid: false, + gridSet: 'number', + splitNumber: 5, + gridType: 'solid', + dashLength: 4 * opts.pix, + gridColor: '#cccccc', + padding: 10, + fontColor: '#666666' + }, opts.yAxis); + opts.xAxis = assign({}, { + rotateLabel: false, + rotateAngle:45, + disabled: false, + disableGrid: false, + splitNumber: 5, + calibration:false, + fontColor: '#666666', + fontSize: 13, + lineHeight: 20, + marginTop: 0, + gridType: 'solid', + dashLength: 4, + scrollAlign: 'left', + boundaryGap: 'center', + axisLine: true, + axisLineColor: '#cccccc', + titleFontSize: 13, + titleOffsetY: 0, + titleOffsetX: 0, + titleFontColor: '#666666' + }, opts.xAxis); + opts.xAxis.scrollPosition = opts.xAxis.scrollAlign; + opts.legend = assign({}, { + show: true, + position: 'bottom', + float: 'center', + backgroundColor: 'rgba(0,0,0,0)', + borderColor: 'rgba(0,0,0,0)', + borderWidth: 0, + padding: 5, + margin: 5, + itemGap: 10, + fontSize: opts.fontSize, + lineHeight: opts.fontSize, + fontColor: opts.fontColor, + formatter: {}, + hiddenColor: '#CECECE' + }, opts.legend); + opts.extra = assign({ + tooltip:{ + legendShape: 'auto' + } + }, opts.extra); + opts.rotate = opts.rotate ? true : false; + opts.animation = opts.animation ? true : false; + opts.rotate = opts.rotate ? true : false; + opts.canvas2d = opts.canvas2d ? true : false; + + let config$$1 = assign({}, config); + config$$1.color = opts.color ? opts.color : config$$1.color; + if (opts.type == 'pie') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + if (opts.type == 'ring') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + if (opts.type == 'rose') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix; + + //屏幕旋转 + config$$1.rotate = opts.rotate; + if (opts.rotate) { + let tempWidth = opts.width; + let tempHeight = opts.height; + opts.width = tempHeight; + opts.height = tempWidth; + } + + //适配高分屏 + opts.padding = opts.padding ? opts.padding : config$$1.padding; + config$$1.yAxisWidth = config.yAxisWidth * opts.pix; + config$$1.fontSize = opts.fontSize * opts.pix; + config$$1.titleFontSize = config.titleFontSize * opts.pix; + config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix; + if(!opts.context){ + throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!'); + } + this.context = opts.context; + if (!this.context.setTextAlign) { + this.context.setStrokeStyle = function(e) { + return this.strokeStyle = e; + } + this.context.setLineWidth = function(e) { + return this.lineWidth = e; + } + this.context.setLineCap = function(e) { + return this.lineCap = e; + } + this.context.setFontSize = function(e) { + return this.font = e + "px sans-serif"; + } + this.context.setFillStyle = function(e) { + return this.fillStyle = e; + } + this.context.setTextAlign = function(e) { + return this.textAlign = e; + } + this.context.setTextBaseline = function(e) { + return this.textBaseline = e; + } + this.context.setShadow = function(offsetX,offsetY,blur,color) { + this.shadowColor = color; + this.shadowOffsetX = offsetX; + this.shadowOffsetY = offsetY; + this.shadowBlur = blur; + } + this.context.draw = function() {} + } + //兼容NVUEsetLineDash + if(!this.context.setLineDash){ + this.context.setLineDash = function(e) {} + } + opts.chartData = {}; + this.uevent = new uChartsEvent(); + this.scrollOption = { + currentOffset: 0, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + this.opts = opts; + this.config = config$$1; + drawCharts.call(this, opts.type, opts, config$$1, this.context); +}; + +uCharts.prototype.updateData = function() { + let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + this.opts = assign({}, this.opts, data); + this.opts.updateData = true; + let scrollPosition = data.scrollPosition || 'current'; + switch (scrollPosition) { + case 'current': + this.opts._scrollDistance_ = this.scrollOption.currentOffset; + break; + case 'left': + this.opts._scrollDistance_ = 0; + this.scrollOption = { + currentOffset: 0, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + break; + case 'right': + let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context), yAxisWidth = _calYAxisData.yAxisWidth; + this.config.yAxisWidth = yAxisWidth; + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let totalWidth = eachSpacing * (xAxisPoints.length - 1); + let screenWidth = endX - startX; + offsetLeft = screenWidth - totalWidth; + this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: offsetLeft, + distance: 0, + lastMoveTime: 0 + }; + this.opts._scrollDistance_ = offsetLeft; + break; + } + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +uCharts.prototype.zoom = function() { + var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount; + if (this.opts.enableScroll !== true) { + console.log('[uCharts] 请启用滚动条后使用') + return; + } + //当前屏幕中间点 + let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2); + this.opts.animation = false; + this.opts.xAxis.itemCount = val.itemCount; + //重新计算x轴偏移距离 + let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context), + yAxisWidth = _calYAxisData.yAxisWidth; + this.config.yAxisWidth = yAxisWidth; + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), + xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let centerLeft = eachSpacing * centerPoint; + let screenWidth = endX - startX; + let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1); + offsetLeft = screenWidth / 2 - centerLeft; + if (offsetLeft > 0) { + offsetLeft = 0; + } + if (offsetLeft < MaxLeft) { + offsetLeft = MaxLeft; + } + this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts); + this.opts._scrollDistance_ = offsetLeft; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +uCharts.prototype.dobuleZoom = function(e) { + if (this.opts.enableScroll !== true) { + console.log('[uCharts] 请启用滚动条后使用') + return; + } + const tcs = e.changedTouches; + if (tcs.length < 2) { + return; + } + for (var i = 0; i < tcs.length; i++) { + tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX; + tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY; + } + const ntcs = [getTouches(tcs[0], this.opts, e),getTouches(tcs[1], this.opts, e)]; + const xlength = Math.abs(ntcs[0].x - ntcs[1].x); + // 记录初始的两指之间的数据 + if(!this.scrollOption.moveCount){ + let cts0 = {changedTouches:[{x:tcs[0].x,y:this.opts.area[0] / this.opts.pix + 2}]}; + let cts1 = {changedTouches:[{x:tcs[1].x,y:this.opts.area[0] / this.opts.pix + 2}]}; + if(this.opts.rotate){ + cts0 = {changedTouches:[{x:this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,y:tcs[0].y}]}; + cts1 = {changedTouches:[{x:this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,y:tcs[1].y}]}; + } + const moveCurrent1 = this.getCurrentDataIndex(cts0).index; + const moveCurrent2 = this.getCurrentDataIndex(cts1).index; + const moveCount = Math.abs(moveCurrent1 - moveCurrent2); + this.scrollOption.moveCount = moveCount; + this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2); + this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2); + return; + } + + let currentEachSpacing = xlength / this.scrollOption.moveCount; + let itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing; + itemCount = itemCount <= 2 ? 2 : itemCount; + itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount; + this.opts.animation = false; + this.opts.xAxis.itemCount = itemCount; + // 重新计算滚动条偏移距离 + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), + xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let currentLeft = eachSpacing * this.scrollOption.moveCurrent1; + let screenWidth = endX - startX; + let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1); + offsetLeft = -currentLeft+Math.min(ntcs[0].x,ntcs[1].x)-this.opts.area[3]-eachSpacing; + if (offsetLeft > 0) { + offsetLeft = 0; + } + if (offsetLeft < MaxLeft) { + offsetLeft = MaxLeft; + } + this.scrollOption.currentOffset= offsetLeft; + this.scrollOption.startTouchX= 0; + this.scrollOption.distance=0; + calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts); + this.opts._scrollDistance_ = offsetLeft; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +} + +uCharts.prototype.stopAnimation = function() { + this.animationInstance && this.animationInstance.stop(); +}; + +uCharts.prototype.addEventListener = function(type, listener) { + this.uevent.addEventListener(type, listener); +}; + +uCharts.prototype.delEventListener = function(type) { + this.uevent.delEventListener(type); +}; + +uCharts.prototype.getCurrentDataIndex = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + let _touches$ = getTouches(touches, this.opts, e); + if (this.opts.type === 'pie' || this.opts.type === 'ring') { + return findPieChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.pieData, this.opts); + } else if (this.opts.type === 'rose') { + return findRoseChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.pieData, this.opts); + } else if (this.opts.type === 'radar') { + return findRadarChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.radarData, this.opts.categories.length); + } else if (this.opts.type === 'funnel') { + return findFunnelChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.funnelData); + } else if (this.opts.type === 'map') { + return findMapChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts); + } else if (this.opts.type === 'word') { + return findWordChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.wordCloudData); + } else if (this.opts.type === 'bar') { + return findBarChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); + } else { + return findCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); + } + } + return -1; +}; + +uCharts.prototype.getLegendDataIndex = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + let _touches$ = getTouches(touches, this.opts, e); + return findLegendIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.legendData); + } + return -1; +}; + +uCharts.prototype.touchLegend = function(e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + var _touches$ = getTouches(touches, this.opts, e); + var index = this.getLegendDataIndex(e); + if (index >= 0) { + if (this.opts.type == 'candle') { + this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show; + } else { + this.opts.series[index].show = !this.opts.series[index].show; + } + this.opts.animation = option.animation ? true : false; + this.opts._scrollDistance_ = this.scrollOption.currentOffset; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); + } + } + +}; + +uCharts.prototype.showToolTip = function(e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (!touches) { + console.log("[uCharts] 未获取到event坐标信息"); + } + var _touches$ = getTouches(touches, this.opts, e); + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1 || index.length>0) { + var seriesData = getSeriesDataItem(this.opts.series, index, current.group); + if (seriesData.length !== 0) { + var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList !== undefined ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index, + group: current.group + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'mount') { + var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, opts._series_[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: opts.chartData.calPoints[index].x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'bar') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1 || index.length>0) { + var seriesData = getSeriesDataItem(this.opts.series, index, current.group); + if (seriesData.length !== 0) { + var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.x = _touches$.x; + opts.tooltip = { + textList: option.textList !== undefined ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'mix') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option), + textList = _getMixToolTipData.textList, + offset = _getMixToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'candle') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, opts._series_[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'map') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, this.opts.series[index]); + seriesData.name = seriesData.properties.name + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + opts.updateData = false; + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'word') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, this.opts.series[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + opts.updateData = false; + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'radar') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var textList = seriesData.map((item) => { + return { + text: option.formatter ? option.formatter(item, this.opts.categories[index], index, this.opts) : item.name + ': ' + item.data, + color: item.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : this.opts.extra.tooltip.legendShape + }; + }); + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } +}; + +uCharts.prototype.translate = function(distance) { + this.scrollOption = { + currentOffset: distance, + startTouchX: distance, + distance: 0, + lastMoveTime: 0 + }; + let opts = assign({}, this.opts, { + _scrollDistance_: distance, + animation: false + }); + drawCharts.call(this, this.opts.type, opts, this.config, this.context); +}; + +uCharts.prototype.scrollStart = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + var _touches$ = getTouches(touches, this.opts, e); + if (touches && this.opts.enableScroll === true) { + this.scrollOption.startTouchX = _touches$.x; + } +}; + +uCharts.prototype.scroll = function(e) { + if (this.scrollOption.lastMoveTime === 0) { + this.scrollOption.lastMoveTime = Date.now(); + } + let Limit = this.opts.touchMoveLimit || 60; + let currMoveTime = Date.now(); + let duration = currMoveTime - this.scrollOption.lastMoveTime; + if (duration < Math.floor(1000 / Limit)) return; + if (this.scrollOption.startTouchX == 0) return; + this.scrollOption.lastMoveTime = currMoveTime; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches && this.opts.enableScroll === true) { + var _touches$ = getTouches(touches, this.opts, e); + var _distance; + _distance = _touches$.x - this.scrollOption.startTouchX; + var currentOffset = this.scrollOption.currentOffset; + var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts); + this.scrollOption.distance = _distance = validDistance - currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset + _distance, + animation: false + }); + this.opts = opts; + drawCharts.call(this, opts.type, opts, this.config, this.context); + return currentOffset + _distance; + } +}; + +uCharts.prototype.scrollEnd = function(e) { + if (this.opts.enableScroll === true) { + var _scrollOption = this.scrollOption, + currentOffset = _scrollOption.currentOffset, + distance = _scrollOption.distance; + this.scrollOption.currentOffset = currentOffset + distance; + this.scrollOption.distance = 0; + this.scrollOption.moveCount = 0; + } +}; + +export default uCharts; \ No newline at end of file diff --git a/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/u-charts.min.js b/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/u-charts.min.js new file mode 100644 index 0000000..0902ecd --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/js_sdk/u-charts/u-charts.min.js @@ -0,0 +1,18 @@ +/* + * uCharts (R) + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台 + * Copyright (C) 2021 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts (R) 官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ +"use strict";var config={version:"v2.5.0-20230101",yAxisWidth:15,xAxisHeight:22,padding:[10,10,10,10],rotate:false,fontSize:13,fontColor:"#666666",dataPointShape:["circle","circle","circle","circle"],color:["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"],linearColor:["#0EE2F8","#2BDCA8","#FA7D8D","#EB88E2","#2AE3A0","#0EE2F8","#EB88E2","#6773E3","#F78A85"],pieChartLinePadding:15,pieChartTextPadding:5,titleFontSize:20,subtitleFontSize:15,radarLabelTextMargin:13};var assign=function(e,...t){if(e==null){throw new TypeError("[uCharts] Cannot convert undefined or null to object")}if(!t||t.length<=0){return e}function i(e,a){for(let t in a){e[t]=e[t]&&e[t].toString()==="[object Object]"?i(e[t],a[t]):e[t]=a[t]}return e}t.forEach(t=>{e=i(e,t)});return e};var util={toFixed:function t(e,a){a=a||2;if(this.isFloat(e)){e=e.toFixed(a)}return e},isFloat:function t(e){return e%1!==0},approximatelyEqual:function t(e,a){return Math.abs(e-a)<1e-10},isSameSign:function t(e,a){return Math.abs(e)===e&&Math.abs(a)===a||Math.abs(e)!==e&&Math.abs(a)!==a},isSameXCoordinateArea:function t(e,a){return this.isSameSign(e.x,a.x)},isCollision:function t(e,a){e.end={};e.end.x=e.start.x+e.width;e.end.y=e.start.y-e.height;a.end={};a.end.x=a.start.x+a.width;a.end.y=a.start.y-a.height;var i=a.start.x>e.end.x||a.end.xe.start.y||a.start.y1){if(r.extra.mount.widthRatio>2)r.extra.mount.widthRatio=2;n+=(r.extra.mount.widthRatio-1)*a.eachSpacing}var l=e;if(e>=0){l=0;t.uevent.trigger("scrollLeft");t.scrollOption.position="left";r.xAxis.scrollPosition="left"}else if(Math.abs(e)>=n-o){l=o-n;t.uevent.trigger("scrollRight");t.scrollOption.position="right";r.xAxis.scrollPosition="right"}else{t.scrollOption.position=e;r.xAxis.scrollPosition=e}return l}function isInAngleRange(t,e,a){function i(t){while(t<0){t+=2*Math.PI}while(t>2*Math.PI){t-=2*Math.PI}return t}t=i(t);e=i(e);a=i(a);if(e>a){a+=2*Math.PI;if(t=e&&t<=a}function createCurveControlPoints(t,e){function a(t,e){if(t[e-1]&&t[e+1]){return t[e].y>=Math.max(t[e-1].y,t[e+1].y)||t[e].y<=Math.min(t[e-1].y,t[e+1].y)}else{return false}}function c(t,e){if(t[e-1]&&t[e+1]){return t[e].x>=Math.max(t[e-1].x,t[e+1].x)||t[e].x<=Math.min(t[e-1].x,t[e+1].x)}else{return false}}var i=.2;var r=.2;var o=null;var n=null;var l=null;var s=null;if(e<1){o=t[0].x+(t[1].x-t[0].x)*i;n=t[0].y+(t[1].y-t[0].y)*i}else{o=t[e].x+(t[e+1].x-t[e-1].x)*i;n=t[e].y+(t[e+1].y-t[e-1].y)*i}if(e>t.length-3){var h=t.length-1;l=t[h].x-(t[h].x-t[h-1].x)*r;s=t[h].y-(t[h].y-t[h-1].y)*r}else{l=t[e+1].x-(t[e+2].x-t[e].x)*r;s=t[e+1].y-(t[e+2].y-t[e].y)*r}if(a(t,e+1)){s=t[e+1].y}if(a(t,e)){n=t[e].y}if(c(t,e+1)){l=t[e+1].x}if(c(t,e)){o=t[e].x}if(n>=Math.max(t[e].y,t[e+1].y)||n<=Math.min(t[e].y,t[e+1].y)){n=t[e].y}if(s>=Math.max(t[e].y,t[e+1].y)||s<=Math.min(t[e].y,t[e+1].y)){s=t[e+1].y}if(o>=Math.max(t[e].x,t[e+1].x)||o<=Math.min(t[e].x,t[e+1].x)){o=t[e].x}if(l>=Math.max(t[e].x,t[e+1].x)||l<=Math.min(t[e].x,t[e+1].x)){l=t[e+1].x}return{ctrA:{x:o,y:n},ctrB:{x:l,y:s}}}function convertCoordinateOrigin(t,e,a){return{x:a.x+t,y:a.y-e}}function avoidCollision(t,e){if(e){while(util.isCollision(t,e)){if(t.start.x>0){t.start.y--}else if(t.start.x<0){t.start.y++}else{if(t.start.y>0){t.start.y++}else{t.start.y--}}}}return t}function fixPieSeries(e,a,t){let i=[];if(e.length>0&&e[0].data.constructor.toString().indexOf("Array")>-1){a._pieSeries_=e;let t=e[0].data;for(var r=0;r=1e4){a=1e3}else if(i>=1e3){a=100}else if(i>=100){a=10}else if(i>=10){a=5}else if(i>=1){a=1}else if(i>=.1){a=.1}else if(i>=.01){a=.01}else if(i>=.001){a=.001}else if(i>=1e-4){a=1e-4}else if(i>=1e-5){a=1e-5}else{a=1e-6}return{minRange:findRange(t,"lower",a),maxRange:findRange(e,"upper",a)}}function measureText(a,t,e){var i=0;a=String(a);e=false;if(e!==false&&e!==undefined&&e.setFontSize&&e.measureText){e.setFontSize(t);return e.measureText(a).width}else{var a=a.split("");for(let e=0;e-1;if(n){let t=filterSeries(e);for(var l=0;l5&&arguments[5]!==undefined?arguments[5]:{};var l=a.chartData.calPoints?a.chartData.calPoints:[];let s={};if(r.length>0){let e=[];for(let t=0;t0){e=o[i]}return{text:n.formatter?n.formatter(t,e,i,a):t.name+": "+t.data,color:t.color,legendShape:a.extra.tooltip.legendShape=="auto"?t.legendShape:a.extra.tooltip.legendShape}});var h={x:Math.round(s.x),y:Math.round(s.y)};return{textList:e,offset:h}}function getMixToolTipData(t,e,a,i){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var o=e.chartData.xAxisPoints[a]+e.chartData.eachSpacing/2;var n=t.map(function(t){return{text:r.formatter?r.formatter(t,i[a],a,e):t.name+": "+t.data,color:t.color,disableLegend:t.disableLegend?true:false,legendShape:e.extra.tooltip.legendShape=="auto"?t.legendShape:e.extra.tooltip.legendShape}});n=n.filter(function(t){if(t.disableLegend!==true){return t}});var l={x:Math.round(o),y:0};return{textList:n,offset:l}}function getCandleToolTipData(o,e,n,l,i,t){var r=arguments.length>6&&arguments[6]!==undefined?arguments[6]:{};var a=n.chartData.calPoints;let s=t.color.upFill;let h=t.color.downFill;let c=[s,s,h,s];var d=[];e.map(function(t){if(l==0){if(t.data[1]-t.data[0]<0){c[1]=h}else{c[1]=s}}else{if(t.data[0]o[l-1][1]){c[2]=s}if(t.data[3]4&&arguments[4]!==undefined?arguments[4]:0;var l={index:-1,group:[]};var i=e.chartData.eachSpacing/2;let r=[];if(n&&n.length>0){if(!e.categories){i=0}else{for(let t=1;tt){l.index=e}})}}}return l}function findBarChartCurrentIndex(a,t,e,i){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:0;var o={index:-1,group:[]};var n=e.chartData.eachSpacing/2;let l=e.chartData.yAxisPoints;if(t&&t.length>0){if(isInExactChartArea(a,e,i)){l.forEach(function(t,e){if(a.y+r+n>t){o.index=e}})}}return o}function findLegendIndex(o,t,e){let n=-1;let l=0;if(isInExactLegendArea(o,t.area)){let i=t.points;let r=-1;for(let t=0,e=i.length;tt[0]-l&&o.xt[1]-l&&o.ye.start.x&&t.xe.start.y&&t.y=e.area[3]-10&&t.y>=e.area[0]&&t.y<=e.height-e.area[2]}function findRadarChartCurrentIndex(t,e,a){var r=2*Math.PI/a;var o=-1;if(isInExactPieChartArea(t,e.center,e.radius)){var n=function t(e){if(e<0){e+=2*Math.PI}if(e>2*Math.PI){e-=2*Math.PI}return e};var l=Math.atan2(e.center.y-t.y,t.x-e.center.x);l=-1*l;if(l<0){l+=2*Math.PI}var i=e.angleList.map(function(t){t=n(-1*t);return t});i.forEach(function(t,e){var a=n(t-r/2);var i=n(t+r/2);if(i=a&&l<=i||l+2*Math.PI>=a&&l+2*Math.PI<=i){o=e}})}return o}function findFunnelChartCurrentIndex(t,e){var a=-1;for(var i=0,r=e.series.length;io.funnelArea[0]&&t.xo.funnelArea[1]&&t.yo.area[0]&&t.xo.area[1]&&t.ys.width-s.area[1]-s.area[3]){i.push(n);o.push(r-s.legend.itemGap*s.pix);r=e;n=[t]}else{r+=e;n.push(t)}}if(n.length){i.push(n);o.push(r-s.legend.itemGap*s.pix);c.widthArr=o;let t=Math.max.apply(null,o);switch(s.legend.float){case"left":c.area.start.x=s.area[3];c.area.end.x=s.area[3]+t+2*d;break;case"right":c.area.start.x=s.width-s.area[1]-t-2*d;c.area.end.x=s.width-s.area[1];break;default:c.area.start.x=(s.width-t)/2-d;c.area.end.x=(s.width+t)/2+d}c.area.width=t+2*d;c.area.wholeWidth=t+2*d;c.area.height=i.length*u+2*d;c.area.wholeHeight=i.length*u+2*d+2*x;c.points=i}}else{let t=l.length;let e=s.height-s.area[0]-s.area[2]-2*x-2*d;let a=Math.min(Math.floor(e/u),t);c.area.height=a*u+d*2;c.area.wholeHeight=a*u+d*2;switch(s.legend.float){case"top":c.area.start.y=s.area[0]+x;c.area.end.y=s.area[0]+x+c.area.height;break;case"bottom":c.area.start.y=s.height-s.area[2]-x-c.area.height;c.area.end.y=s.height-s.area[2]-x;break;default:c.area.start.y=(s.height-c.area.height)/2;c.area.end.y=(s.height+c.area.height)/2}let i=t%a===0?t/a:Math.floor(t/a+1);let r=[];for(let e=0;ei){i=t}}c.widthArr.push(i);c.heightArr.push(a.length*u+d*2)}let e=0;for(let t=0;t4&&arguments[4]!==undefined?arguments[4]:-1;var i;if(c=="stack"){i=dataCombineStack(t,e.categories.length)}else{i=dataCombine(t)}var r=[];i=i.filter(function(t){if(typeof t==="object"&&t!==null){if(t.constructor.toString().indexOf("Array")>-1){return t!==null}else{return t.value!==null}}else{return t!==null}});i.map(function(t){if(typeof t==="object"){if(t.constructor.toString().indexOf("Array")>-1){if(e.type=="candle"){t.map(function(t){r.push(t)})}else{r.push(t[0])}}else{r.push(t.value)}}else{r.push(t)}});var o=0;var n=0;if(r.length>0){o=Math.min.apply(this,r);n=Math.max.apply(this,r)}if(a>-1){if(typeof e.xAxis.data[a].min==="number"){o=Math.min(e.xAxis.data[a].min,o)}if(typeof e.xAxis.data[a].max==="number"){n=Math.max(e.xAxis.data[a].max,n)}}else{if(typeof e.xAxis.min==="number"){o=Math.min(e.xAxis.min,o)}if(typeof e.xAxis.max==="number"){n=Math.max(e.xAxis.max,n)}}if(o===n){var d=n||10;n+=d}var l=o;var x=n;var f=[];var p=(x-l)/e.xAxis.splitNumber;for(var s=0;s<=e.xAxis.splitNumber;s++){f.push(l+p*s)}return f}function calXAxisData(t,e,a,i){var r=assign({},{type:""},e.extra.bar);var o={angle:0,xAxisHeight:e.xAxis.lineHeight*e.pix+e.xAxis.marginTop*e.pix};o.ranges=getXAxisTextList(t,e,a,r.type);o.rangesFormat=o.ranges.map(function(t){t=util.toFixed(t,2);return t});var n=o.ranges.map(function(t){t=util.toFixed(t,2);return t});o=Object.assign(o,getXAxisPoints(n,e,a));var l=o.eachSpacing;var s=n.map(function(t){return measureText(t,e.xAxis.fontSize*e.pix,i)});if(e.xAxis.disabled===true){o.xAxisHeight=0}return o}function getRadarDataPoints(r,o,n,a,t){var l=arguments.length>5&&arguments[5]!==undefined?arguments[5]:1;var e=t.extra.radar||{};e.max=e.max||0;var s=Math.max(e.max,Math.max.apply(null,dataCombine(a)));var h=[];for(let e=0;e2&&arguments[2]!==undefined?arguments[2]:1;var o=0;var n=0;for(let e=0;e4&&arguments[4]!==undefined?arguments[4]:1;for(let t=0;t4&&arguments[4]!==undefined?arguments[4]:1;var l=0;var s=0;var h=[];for(let e=0;e2&&arguments[2]!==undefined?arguments[2]:1;if(o==1){o=.999999}for(let a=0;a=2){t._proportion_=t._proportion_%2}}return i}function getGaugeArcbarDataPoints(i,r){var o=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1;if(o==1){o=.999999}for(let a=0;a=2){t._proportion_=t._proportion_%2}}return i}function getGaugeAxisPoints(e,a,t){let i;if(t=2){e[t]._endAngle_=e[t]._endAngle_%2}r=e[t]._endAngle_}return e}function getGaugeDataPoints(i,r,o){let n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:1;for(let a=0;a=o.oldData){e._proportion_=(e._endAngle_-e._oldAngle_)*n+o.oldAngle}else{e._proportion_=e._oldAngle_-(e._oldAngle_-e._endAngle_)*n}if(e._proportion_>=2){e._proportion_=e._proportion_%2}}return i}function getPieTextMaxLength(i,r,o,n){i=getPieDataPoints(i);let l=0;for(let a=0;a0){t.width=Math.min(t.width,+n.extra.mix.column.width*n.pix)}if(n.extra.column&&n.extra.column.width&&+n.extra.column.width>0){t.width=Math.min(t.width,+n.extra.column.width*n.pix)}if(t.width<=0){t.width=1}t.x+=(o+.5-r/2)*(t.width+e);return t})}function fixBarData(t,i,r,o,e,n){return t.map(function(t){if(t===null){return null}var e=0;var a=0;e=n.extra.bar.seriesGap*n.pix||0;a=n.extra.bar.categoryGap*n.pix||0;e=Math.min(e,i/r);a=Math.min(a,i/r);t.width=Math.ceil((i-2*a-e*(r-1))/r);if(n.extra.bar&&n.extra.bar.width&&+n.extra.bar.width>0){t.width=Math.min(t.width,+n.extra.bar.width*n.pix)}if(t.width<=0){t.width=1}t.y+=(o+.5-r/2)*(t.width+e);return t})}function fixColumeMeterData(t,e,a,i,r,o,n){var l=o.extra.column.categoryGap*o.pix||0;return t.map(function(t){if(t===null){return null}t.width=e-2*l;if(o.extra.column&&o.extra.column.width&&+o.extra.column.width>0){t.width=Math.min(t.width,+o.extra.column.width*o.pix)}if(i>0){t.width-=n}return t})}function fixColumeStackData(t,a,e,i,r,o,n){var l=o.extra.column.categoryGap*o.pix||0;return t.map(function(t,e){if(t===null){return null}t.width=Math.ceil(a-2*l);if(o.extra.column&&o.extra.column.width&&+o.extra.column.width>0){t.width=Math.min(t.width,+o.extra.column.width*o.pix)}if(t.width<=0){t.width=1}return t})}function fixBarStackData(t,a,e,i,r,o,n){var l=o.extra.bar.categoryGap*o.pix||0;return t.map(function(t,e){if(t===null){return null}t.width=Math.ceil(a-2*l);if(o.extra.bar&&o.extra.bar.width&&+o.extra.bar.width>0){t.width=Math.min(t.width,+o.extra.bar.width*o.pix)}if(t.width<=0){t.width=1}return t})}function getXAxisPoints(t,e,h){var a=e.width-e.area[1]-e.area[3];var i=e.enableScroll?Math.min(e.xAxis.itemCount,t.length):t.length;if((e.type=="line"||e.type=="area"||e.type=="scatter"||e.type=="bubble"||e.type=="bar")&&i>1&&e.xAxis.boundaryGap=="justify"){i-=1}var r=0;if(e.type=="mount"&&e.extra&&e.extra.mount&&e.extra.mount.widthRatio&&e.extra.mount.widthRatio>1){if(e.extra.mount.widthRatio>2)e.extra.mount.widthRatio=2;r=e.extra.mount.widthRatio-1;i+=r}var o=a/i;var n=[];var l=e.area[3];var s=e.width-e.area[1];t.forEach(function(t,e){n.push(l+r/2*o+e*o)});if(e.xAxis.boundaryGap!=="justify"){if(e.enableScroll===true){n.push(l+r*o+t.length*o)}else{n.push(s)}}return{xAxisPoints:n,startX:l,endX:s,eachSpacing:o}}function getCandleDataPoints(t,l,s,h,c,d,a){var x=arguments.length>7&&arguments[7]!==undefined?arguments[7]:1;var e=[];var f=d.height-d.area[0]-d.area[2];t.forEach(function(t,o){if(t===null){e.push(null)}else{var n=[];t.forEach(function(t,e){var a={};a.x=h[o]+Math.round(c/2);var i=t.value||t;var r=f*(i-l)/(s-l);r*=x;a.y=d.height-Math.round(r)-d.area[2];n.push(a)});e.push(n)}});return e}function getDataPoints(t,a,n,l,s,h,e){var c=arguments.length>7&&arguments[7]!==undefined?arguments[7]:1;var d="center";if(h.type=="line"||h.type=="area"||h.type=="scatter"||h.type=="bubble"){d=h.xAxis.boundaryGap}var x=[];var f=h.height-h.area[0]-h.area[2];var p=h.width-h.area[1]-h.area[3];t.forEach(function(i,t){if(i===null){x.push(null)}else{var r={};r.color=i.color;r.x=l[t];var o=i;if(typeof i==="object"&&i!==null){if(i.constructor.toString().indexOf("Array")>-1){let t,e,a;t=[].concat(h.chartData.xAxisData.ranges);e=t.shift();a=t.pop();o=i[1];r.x=h.area[3]+p*(i[0]-e)/(a-e);if(h.type=="bubble"){r.r=i[2];r.t=i[3]}}else{o=i.value}}if(d=="center"){r.x+=s/2}var e=f*(o-a)/(n-a);e*=c;r.y=h.height-e-h.area[2];x.push(r)}});return x}function getLineDataPoints(t,a,n,l,s,h,e,p,c){var c=arguments.length>8&&arguments[8]!==undefined?arguments[8]:1;var d=h.xAxis.boundaryGap;var x=[];var f=h.height-h.area[0]-h.area[2];var u=h.width-h.area[1]-h.area[3];t.forEach(function(i,t){if(i===null){x.push(null)}else{var r={};r.color=i.color;if(p.animation=="vertical"){r.x=l[t];var o=i;if(typeof i==="object"&&i!==null){if(i.constructor.toString().indexOf("Array")>-1){let t,e,a;t=[].concat(h.chartData.xAxisData.ranges);e=t.shift();a=t.pop();o=i[1];r.x=h.area[3]+u*(i[0]-e)/(a-e)}else{o=i.value}}if(d=="center"){r.x+=s/2}var e=f*(o-a)/(n-a);e*=c;r.y=h.height-e-h.area[2];x.push(r)}else{r.x=l[0]+s*t*c;var o=i;if(d=="center"){r.x+=s/2}var e=f*(o-a)/(n-a);r.y=h.height-e-h.area[2];x.push(r)}}});return x}function getColumnDataPoints(t,a,n,l,s,h,e,i,c){var c=arguments.length>8&&arguments[8]!==undefined?arguments[8]:1;var d=[];var x=h.height-h.area[0]-h.area[2];var f=h.width-h.area[1]-h.area[3];t.forEach(function(i,t){if(i===null){d.push(null)}else{var r={};r.color=i.color;r.x=l[t];var o=i;if(typeof i==="object"&&i!==null){if(i.constructor.toString().indexOf("Array")>-1){let t,e,a;t=[].concat(h.chartData.xAxisData.ranges);e=t.shift();a=t.pop();o=i[1];r.x=h.area[3]+f*(i[0]-e)/(a-e)}else{o=i.value}}r.x+=s/2;var e=x*(o*c-a)/(n-a);r.y=h.height-e-h.area[2];d.push(r)}});return d}function getMountDataPoints(t,o,n,l,s,h,e,a){var c=arguments.length>8&&arguments[8]!==undefined?arguments[8]:1;var d=[];var x=h.height-h.area[0]-h.area[2];var i=h.width-h.area[1]-h.area[3];var f=s*e.widthRatio;t.forEach(function(t,e){if(t===null){d.push(null)}else{var a={};a.color=t.color;a.x=l[e];a.x+=s/2;var i=t.data;var r=x*(i*c-o)/(n-o);a.y=h.height-r-h.area[2];a.value=i;a.width=f;d.push(a)}});return d}function getBarDataPoints(t,o,n,l,e,s,a){var h=arguments.length>7&&arguments[7]!==undefined?arguments[7]:1;var c=[];var i=s.height-s.area[0]-s.area[2];var d=s.width-s.area[1]-s.area[3];t.forEach(function(t,e){if(t===null){c.push(null)}else{var a={};a.color=t.color;a.y=l[e];var i=t;if(typeof t==="object"&&t!==null){i=t.value}var r=d*(i-o)/(n-o);r*=h;a.height=r;a.value=i;a.x=r+s.area[3];c.push(a)}});return c}function getStackDataPoints(t,s,h,c,g,d,e,x,y){var f=arguments.length>9&&arguments[9]!==undefined?arguments[9]:1;var p=[];var u=d.height-d.area[0]-d.area[2];t.forEach(function(t,e){if(t===null){p.push(null)}else{var a={};a.color=t.color;a.x=c[e]+Math.round(g/2);if(x>0){var i=0;for(let t=0;t<=x;t++){i+=y[t].data[e]}var r=i-t;var o=u*(i-s)/(h-s);var n=u*(r-s)/(h-s)}else{var i=t;if(typeof t==="object"&&t!==null){i=t.value}var o=u*(i-s)/(h-s);var n=0}var l=n;o*=f;l*=f;a.y=d.height-Math.round(o)-d.area[2];a.y0=d.height-Math.round(l)-d.area[2];p.push(a)}});return p}function getBarStackDataPoints(t,s,h,c,e,d,a,x,g){var f=arguments.length>9&&arguments[9]!==undefined?arguments[9]:1;var p=[];var u=d.width-d.area[1]-d.area[3];t.forEach(function(t,e){if(t===null){p.push(null)}else{var a={};a.color=t.color;a.y=c[e];if(x>0){var i=0;for(let t=0;t<=x;t++){i+=g[t].data[e]}var r=i-t;var o=u*(i-s)/(h-s);var n=u*(r-s)/(h-s)}else{var i=t;if(typeof t==="object"&&t!==null){i=t.value}var o=u*(i-s)/(h-s);var n=0}var l=n;o*=f;l*=f;a.height=o-l;a.x=d.area[3]+o;a.x0=d.area[3]+l;p.push(a)}});return p}function getYAxisTextList(t,e,h,c,a){var d=arguments.length>5&&arguments[5]!==undefined?arguments[5]:-1;var i;if(c=="stack"){i=dataCombineStack(t,e.categories.length)}else{i=dataCombine(t)}var r=[];i=i.filter(function(t){if(typeof t==="object"&&t!==null){if(t.constructor.toString().indexOf("Array")>-1){return t!==null}else{return t.value!==null}}else{return t!==null}});i.map(function(t){if(typeof t==="object"){if(t.constructor.toString().indexOf("Array")>-1){if(e.type=="candle"){t.map(function(t){r.push(t)})}else{r.push(t[1])}}else{r.push(t.value)}}else{r.push(t)}});var o=a.min||0;var n=a.max||0;if(r.length>0){o=Math.min.apply(this,r);n=Math.max.apply(this,r)}if(o===n){if(n==0){n=10}else{o=0}}var l=getDataRange(o,n);var x=a.min===undefined||a.min===null?l.minRange:a.min;var f=a.max===undefined||a.max===null?l.maxRange:a.max;var p=(f-x)/e.yAxis.splitNumber;var u=[];for(var s=0;s<=e.yAxis.splitNumber;s++){u.push(x+p*s)}return u.reverse()}function calYAxisData(a,o,e,n){var l=assign({},{type:""},o.extra.column);var t=o.yAxis.data.length;var s=new Array(t);if(t>0){for(let e=0;e{return t+(i.unit||"")}}i.categories=i.categories||o.categories;h[r]=i.categories}else{if(!i.formatter){i.formatter=(t,e,a)=>{return util.toFixed(t,i.tofix||0)+(i.unit||"")}}h[r]=getYAxisTextList(s[r],o,e,l.type,i,r)}let a=i.fontSize*o.pix||e.fontSize;d[r]={position:i.position?i.position:"left",width:0};c[r]=h[r].map(function(t,e){t=i.formatter(t,e,o);d[r].width=Math.max(d[r].width,measureText(t,a,n)+5);return t});let t=i.calibration?4*o.pix:0;d[r].width+=t+3*o.pix;if(i.disabled===true){d[r].width=0}}}else{var h=new Array(1);var c=new Array(1);var d=new Array(1);if(o.type==="bar"){h[0]=o.categories;if(!o.yAxis.formatter){o.yAxis.formatter=(t,e,a)=>{return t+(a.yAxis.unit||"")}}}else{if(!o.yAxis.formatter){o.yAxis.formatter=(t,e,a)=>{return t.toFixed(a.yAxis.tofix)+(a.yAxis.unit||"")}}h[0]=getYAxisTextList(a,o,e,l.type,{})}d[0]={position:"left",width:0};var i=o.yAxis.fontSize*o.pix||e.fontSize;c[0]=h[0].map(function(t,e){t=o.yAxis.formatter(t,e,o);d[0].width=Math.max(d[0].width,measureText(t,i,n)+5);return t});d[0].width+=3*o.pix;if(o.yAxis.disabled===true){d[0]={position:"left",width:0};o.yAxis.data[0]={disabled:true}}else{o.yAxis.data[0]={disabled:false,position:"left",max:o.yAxis.max,min:o.yAxis.min,formatter:o.yAxis.formatter};if(o.type==="bar"){o.yAxis.data[0].categories=o.categories;o.yAxis.data[0].type="categories"}}}return{rangesFormat:c,ranges:h,yAxisWidth:d}}function calTooltipYAxisData(r,t,o,e,a){let n=[].concat(o.chartData.yAxisData.ranges);let l=o.height-o.area[0]-o.area[2];let s=o.area[0];let h=[];for(let i=0;i0&&r.tooltip.group.includes(n)==false){return}var l=typeof r.tooltip.index==="number"?r.tooltip.index:r.tooltip.index[r.tooltip.group.indexOf(n)];i.beginPath();if(o.activeType=="hollow"){i.setStrokeStyle(e);i.setFillStyle(r.background);i.setLineWidth(2*r.pix)}else{i.setStrokeStyle("#ffffff");i.setFillStyle(e);i.setLineWidth(1*r.pix)}if(a==="diamond"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x,t.y-4.5);i.lineTo(t.x-4.5,t.y);i.lineTo(t.x,t.y+4.5);i.lineTo(t.x+4.5,t.y);i.lineTo(t.x,t.y-4.5)}})}else if(a==="circle"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x+2.5*r.pix,t.y);i.arc(t.x,t.y,3*r.pix,0,2*Math.PI,false)}})}else if(a==="square"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x-3.5,t.y-3.5);i.rect(t.x-3.5,t.y-3.5,7,7)}})}else if(a==="triangle"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x,t.y-4.5);i.lineTo(t.x-4.5,t.y+4.5);i.lineTo(t.x+4.5,t.y+4.5);i.lineTo(t.x,t.y-4.5)}})}else if(a==="none"){return}i.closePath();i.fill();i.stroke()}function drawRingTitle(t,e,a,i){var r=t.title.fontSize||e.titleFontSize;var o=t.subtitle.fontSize||e.subtitleFontSize;var n=t.title.name||"";var l=t.subtitle.name||"";var c=t.title.color||t.fontColor;var d=t.subtitle.color||t.fontColor;var x=n?r:0;var f=l?o:0;var s=5;if(l){var p=measureText(l,o*t.pix,a);var u=i.x-p/2+(t.subtitle.offsetX||0)*t.pix;var h=i.y+o*t.pix/2+(t.subtitle.offsetY||0)*t.pix;if(n){h+=(x*t.pix+s)/2}a.beginPath();a.setFontSize(o*t.pix);a.setFillStyle(d);a.fillText(l,u,h);a.closePath();a.stroke()}if(n){var g=measureText(n,r*t.pix,a);var y=i.x-g/2+(t.title.offsetX||0);var v=i.y+r*t.pix/2+(t.title.offsetY||0)*t.pix;if(l){v-=(f*t.pix+s)/2}a.beginPath();a.setFontSize(r*t.pix);a.setFillStyle(c);a.fillText(n,y,v);a.closePath();a.stroke()}}function drawPointText(t,o,n,l,s){var h=o.data;var c=o.textOffset?o.textOffset:0;t.forEach(function(t,e){if(t!==null){l.beginPath();var a=o.textSize?o.textSize*s.pix:n.fontSize;l.setFontSize(a);l.setFillStyle(o.textColor||s.fontColor);var i=h[e];if(typeof h[e]==="object"&&h[e]!==null){if(h[e].constructor.toString().indexOf("Array")>-1){i=h[e][1]}else{i=h[e].value}}var r=o.formatter?o.formatter(i,e,o,s):i;l.setTextAlign("center");l.fillText(String(r),t.x,t.y-4+c*s.pix);l.closePath();l.stroke();l.setTextAlign("left")}})}function drawColumePointText(t,n,l,s,h){var c=n.data;var d=n.textOffset?n.textOffset:0;var x=h.extra.column.labelPosition;t.forEach(function(t,e){if(t!==null){s.beginPath();var a=n.textSize?n.textSize*h.pix:l.fontSize;s.setFontSize(a);s.setFillStyle(n.textColor||h.fontColor);var i=c[e];if(typeof c[e]==="object"&&c[e]!==null){if(c[e].constructor.toString().indexOf("Array")>-1){i=c[e][1]}else{i=c[e].value}}var r=n.formatter?n.formatter(i,e,n,h):i;s.setTextAlign("center");var o=t.y-4*h.pix+d*h.pix;if(t.y>n.zeroPoints){o=t.y+d*h.pix+a}if(x=="insideTop"){o=t.y+a+d*h.pix;if(t.y>n.zeroPoints){o=t.y-d*h.pix-4*h.pix}}if(x=="center"){o=t.y+d*h.pix+(h.height-h.area[2]-t.y+a)/2;if(n.zeroPointsn.zeroPoints){o=t.y-d*h.pix-(t.y-n.zeroPoints-a)/2}if(h.extra.column.type=="stack"){o=t.y+d*h.pix+(t.y0-t.y+a)/2}}if(x=="bottom"){o=h.height-h.area[2]+d*h.pix-4*h.pix;if(n.zeroPointsn.zeroPoints){o=n.zeroPoints-d*h.pix+a+2*h.pix}if(h.extra.column.type=="stack"){o=t.y0+d*h.pix-4*h.pix}}s.fillText(String(r),t.x,o);s.closePath();s.stroke();s.setTextAlign("left")}})}function drawMountPointText(t,n,l,s,h,c){var e=n.data;var d=n.textOffset?n.textOffset:0;var a=h.extra.mount.labelPosition;t.forEach(function(t,e){if(t!==null){s.beginPath();var a=n[e].textSize?n[e].textSize*h.pix:l.fontSize;s.setFontSize(a);s.setFillStyle(n[e].textColor||h.fontColor);var i=t.value;var r=n[e].formatter?n[e].formatter(i,e,n,h):i;s.setTextAlign("center");var o=t.y-4*h.pix+d*h.pix;if(t.y>c){o=t.y+d*h.pix+a}s.fillText(String(r),t.x,o);s.closePath();s.stroke();s.setTextAlign("left")}})}function drawBarPointText(t,o,n,l,s){var h=o.data;var e=o.textOffset?o.textOffset:0;t.forEach(function(t,e){if(t!==null){l.beginPath();var a=o.textSize?o.textSize*s.pix:n.fontSize;l.setFontSize(a);l.setFillStyle(o.textColor||s.fontColor);var i=h[e];if(typeof h[e]==="object"&&h[e]!==null){i=h[e].value}var r=o.formatter?o.formatter(i,e,o,s):i;l.setTextAlign("left");l.fillText(String(r),t.x+4*s.pix,t.y+a/2-3);l.closePath();l.stroke()}})}function drawGaugeLabel(e,a,i,r,o,n){a-=e.width/2+e.labelOffset*r.pix;a=a<10?10:a;let t;if(e.endAngle=2){l=l%2}s+=x}}function drawRadarLabel(t,s,h,c,d,x){var f=c.extra.radar||{};t.forEach(function(t,e){if(f.labelPointShow===true&&c.categories[e]!==""){var a={x:s*Math.cos(t),y:s*Math.sin(t)};var i=convertCoordinateOrigin(a.x,a.y,h);x.setFillStyle(f.labelPointColor);x.beginPath();x.arc(i.x,i.y,f.labelPointRadius*c.pix,0,2*Math.PI,false);x.closePath();x.fill()}if(f.labelShow===true){var r={x:(s+d.radarLabelTextMargin*c.pix)*Math.cos(t),y:(s+d.radarLabelTextMargin*c.pix)*Math.sin(t)};var o=convertCoordinateOrigin(r.x,r.y,h);var n=o.x;var l=o.y;if(util.approximatelyEqual(r.x,0)){n-=measureText(c.categories[e]||"",d.fontSize,x)/2}else if(r.x<0){n-=measureText(c.categories[e]||"",d.fontSize,x)}x.beginPath();x.setFontSize(d.fontSize);x.setFillStyle(f.labelColor||c.fontColor);x.fillText(c.categories[e]||"",n,l+d.fontSize/2);x.closePath();x.stroke()}})}function drawPieText(n,d,x,f,t,l){var p=x.pieChartLinePadding;var u=[];var g=null;var y=n.map(function(t,e){var a=t.formatter?t.formatter(t,e,n,d):util.toFixed(t._proportion_.toFixed(4)*100)+"%";a=t.labelText?t.labelText:a;var i=2*Math.PI-(t._start_+2*Math.PI*t._proportion_/2);if(t._rose_proportion_){i=2*Math.PI-(t._start_+2*Math.PI*t._rose_proportion_/2)}var r=t.color;var o=t._radius_;return{arc:i,text:a,color:r,radius:o,textColor:t.textColor,textSize:t.textSize,labelShow:t.labelShow}});for(let c=0;c=0?e+x.pieChartTextPadding:e-x.pieChartTextPadding;let n=a;let l=measureText(t.text,t.textSize*d.pix||x.fontSize,f);let s=n;if(g&&util.isSameXCoordinateArea(g.start,{x:o})){if(o>0){s=Math.min(n,g.start.y)}else if(e<0){s=Math.max(n,g.start.y)}else{if(n>0){s=Math.max(n,g.start.y)}else{s=Math.min(n,g.start.y)}}}if(o<0){o-=l}let h={lineStart:{x:i,y:r},lineEnd:{x:e,y:a},start:{x:o,y:s},width:l,height:x.fontSize,text:t.text,color:t.color,textColor:t.textColor,textSize:t.textSize};g=avoidCollision(h,g);u.push(g)}for(let n=0;nr?r:o.activeWidth;var n=e.area[0];var l=e.height-e.area[2];i.beginPath();i.setFillStyle(hexToRgb(o.activeBgColor,o.activeBgOpacity));i.rect(t-o.activeWidth/2,n,o.activeWidth,l-n);i.closePath();i.fill();i.setFillStyle("#FFFFFF")}function drawBarToolTipSplitArea(t,e,a,i,r){var o=assign({},{activeBgColor:"#000000",activeBgOpacity:.08},e.extra.bar);var n=e.area[3];var l=e.width-e.area[1];i.beginPath();i.setFillStyle(hexToRgb(o.activeBgColor,o.activeBgOpacity));i.rect(n,t-r/2,l-n,r);i.closePath();i.fill();i.setFillStyle("#FFFFFF")}function drawToolTip(e,r,o,a,n,i,f){var l=assign({},{showBox:true,showArrow:true,showCategory:false,bgColor:"#000000",bgOpacity:.7,borderColor:"#000000",borderWidth:0,borderRadius:0,borderOpacity:.7,boxPadding:3,fontColor:"#FFFFFF",fontSize:13,lineHeight:20,legendShow:true,legendShape:"auto",splitLine:true},o.extra.tooltip);if(l.showCategory==true&&o.categories){e.unshift({text:o.categories[o.tooltip.index],color:null})}var s=l.fontSize*o.pix;var p=l.lineHeight*o.pix;var h=l.boxPadding*o.pix;var c=s;var u=5*o.pix;if(l.legendShow==false){c=0;u=0}var d=l.showArrow?8*o.pix:0;var g=false;if(o.type=="line"||o.type=="mount"||o.type=="area"||o.type=="candle"||o.type=="mix"){if(l.splitLine==true){drawToolTipSplitLine(o.tooltip.offset.x,o,a,n)}}r=assign({x:0,y:0},r);r.y-=8*o.pix;var y=e.map(function(t){return measureText(t.text,s,n)});var x=c+u+4*h+Math.max.apply(null,y);var v=2*h+e.length*p;if(l.showBox==false){return}if(r.x-Math.abs(o._scrollDistance_||0)+d+x>o.width){g=true}if(v+r.y>o.height){r.y=o.height-v}n.beginPath();n.setFillStyle(hexToRgb(l.bgColor,l.bgOpacity));n.setLineWidth(l.borderWidth*o.pix);n.setStrokeStyle(hexToRgb(l.borderColor,l.borderOpacity));var t=l.borderRadius;if(g){if(x+d>o.width){r.x=o.width+Math.abs(o._scrollDistance_||0)+d+(x-o.width)}if(x>r.x){r.x=o.width+Math.abs(o._scrollDistance_||0)+d+(x-o.width)}if(l.showArrow){n.moveTo(r.x,r.y+10*o.pix);n.lineTo(r.x-d,r.y+10*o.pix+5*o.pix)}n.arc(r.x-d-t,r.y+v-t,t,0,Math.PI/2,false);n.arc(r.x-d-Math.round(x)+t,r.y+v-t,t,Math.PI/2,Math.PI,false);n.arc(r.x-d-Math.round(x)+t,r.y+t,t,-Math.PI,-Math.PI/2,false);n.arc(r.x-d-t,r.y+t,t,-Math.PI/2,0,false);if(l.showArrow){n.lineTo(r.x-d,r.y+10*o.pix-5*o.pix);n.lineTo(r.x,r.y+10*o.pix)}}else{if(l.showArrow){n.moveTo(r.x,r.y+10*o.pix);n.lineTo(r.x+d,r.y+10*o.pix-5*o.pix)}n.arc(r.x+d+t,r.y+t,t,-Math.PI,-Math.PI/2,false);n.arc(r.x+d+Math.round(x)-t,r.y+t,t,-Math.PI/2,0,false);n.arc(r.x+d+Math.round(x)-t,r.y+v-t,t,0,Math.PI/2,false);n.arc(r.x+d+t,r.y+v-t,t,Math.PI/2,Math.PI,false);if(l.showArrow){n.lineTo(r.x+d,r.y+10*o.pix+5*o.pix);n.lineTo(r.x,r.y+10*o.pix)}}n.closePath();n.fill();if(l.borderWidth>0){n.stroke()}if(l.legendShow){e.forEach(function(t,e){if(t.color!==null){n.beginPath();n.setFillStyle(t.color);var a=r.x+d+2*h;var i=r.y+(p-s)/2+p*e+h+1;if(g){a=r.x-x-d+2*h}switch(t.legendShape){case"line":n.moveTo(a,i+.5*c-2*o.pix);n.fillRect(a,i+.5*c-2*o.pix,c,4*o.pix);break;case"triangle":n.moveTo(a+7.5*o.pix,i+.5*c-5*o.pix);n.lineTo(a+2.5*o.pix,i+.5*c+5*o.pix);n.lineTo(a+12.5*o.pix,i+.5*c+5*o.pix);n.lineTo(a+7.5*o.pix,i+.5*c-5*o.pix);break;case"diamond":n.moveTo(a+7.5*o.pix,i+.5*c-5*o.pix);n.lineTo(a+2.5*o.pix,i+.5*c);n.lineTo(a+7.5*o.pix,i+.5*c+5*o.pix);n.lineTo(a+12.5*o.pix,i+.5*c);n.lineTo(a+7.5*o.pix,i+.5*c-5*o.pix);break;case"circle":n.moveTo(a+7.5*o.pix,i+.5*c);n.arc(a+7.5*o.pix,i+.5*c,5*o.pix,0,2*Math.PI);break;case"rect":n.moveTo(a,i+.5*c-5*o.pix);n.fillRect(a,i+.5*c-5*o.pix,15*o.pix,10*o.pix);break;case"square":n.moveTo(a+2*o.pix,i+.5*c-5*o.pix);n.fillRect(a+2*o.pix,i+.5*c-5*o.pix,10*o.pix,10*o.pix);break;default:n.moveTo(a,i+.5*c-5*o.pix);n.fillRect(a,i+.5*c-5*o.pix,15*o.pix,10*o.pix)}n.closePath();n.fill()}})}e.forEach(function(t,e){var a=r.x+d+2*h+c+u;if(g){a=r.x-x-d+2*h+c+u}var i=r.y+p*e+(p-s)/2-1+h+s;n.beginPath();n.setFontSize(s);n.setTextBaseline("normal");n.setFillStyle(l.fontColor);n.fillText(t.text,a,i);n.closePath();n.stroke()})}function drawColumnDataPoints(T,b,S,w){let A=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let t=b.chartData.xAxisData,P=t.xAxisPoints,C=t.eachSpacing;let D=assign({},{type:"group",width:C/2,meterBorder:4,meterFillColor:"#FFFFFF",barBorderCircle:false,barBorderRadius:[],seriesGap:2,linearType:"none",linearOpacity:1,customColor:[],colorStop:0,labelPosition:"outside"},b.extra.column);let M=[];w.save();let L=-2;let F=P.length+2;if(b._scrollDistance_&&b._scrollDistance_!==0&&b.enableScroll===true){w.translate(b._scrollDistance_,0);L=Math.floor(-b._scrollDistance_/C)-2;F=L+b.xAxis.itemCount+4}if(b.tooltip&&b.tooltip.textList&&b.tooltip.textList.length&&A===1){drawToolTipSplitArea(b.tooltip.offset.x,b,S,w,C)}D.customColor=fillCustomColor(D.linearType,D.customColor,T,S);T.forEach(function(a,i){let e,t,o;e=[].concat(b.chartData.yAxisData.ranges[a.index]);t=e.pop();o=e.shift();let x=b.height-b.area[0]-b.area[2];let f=x*(0-t)/(o-t);let n=b.height-Math.round(f)-b.area[2];a.zeroPoints=n;var p=a.data;switch(D.type){case"group":var r=getColumnDataPoints(p,t,o,P,C,b,S,n,A);var u=getStackDataPoints(p,t,o,P,C,b,S,i,T,A);M.push(u);r=fixColumeData(r,C,T.length,i,S,b);for(let t=0;tL&&tn?n:o.y;const d=o.width;const s=Math.abs(n-o.y);if(D.barBorderCircle){D.barBorderRadius=[d/2,d/2,0,0]}if(o.y>n){D.barBorderRadius=[0,0,d/2,d/2]}let[t,e,a,i]=D.barBorderRadius;let r=Math.min(d/2,s/2);t=t>r?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;w.arc(h+t,c+t,t,-Math.PI,-Math.PI/2);w.arc(h+d-e,c+e,e,-Math.PI/2,0);w.arc(h+d-a,c+s-a,a,0,Math.PI/2);w.arc(h+i,c+s-i,i,Math.PI/2,Math.PI)}else{w.moveTo(l,o.y);w.lineTo(l+o.width,o.y);w.lineTo(l+o.width,n);w.lineTo(l,n);w.lineTo(l,o.y);w.setLineWidth(1);w.setStrokeStyle(y)}w.setFillStyle(g);w.closePath();w.fill()}};break;case"stack":var r=getStackDataPoints(p,t,o,P,C,b,S,i,T,A);M.push(r);r=fixColumeStackData(r,C,T.length,i,S,b,T);for(let e=0;eL&&e0){s-=m}w.setFillStyle(g);w.moveTo(l,t.y);w.fillRect(l,t.y,t.width,s);w.closePath();w.fill()}};break;case"meter":var r=getDataPoints(p,t,o,P,C,b,S,A);M.push(r);r=fixColumeMeterData(r,C,T.length,i,S,b,D.meterBorder);for(let t=0;tL&&t0){w.setStrokeStyle(a.color);w.setLineWidth(D.meterBorder*b.pix)}if(i==0){w.setFillStyle(D.meterFillColor)}else{w.setFillStyle(o.color||a.color)}var l=o.x-o.width/2;var s=b.height-o.y-b.area[2];if(D.barBorderRadius&&D.barBorderRadius.length===4||D.barBorderCircle===true){const h=l;const c=o.y;const d=o.width;const s=n-o.y;if(D.barBorderCircle){D.barBorderRadius=[d/2,d/2,0,0]}let[t,e,a,i]=D.barBorderRadius;let r=Math.min(d/2,s/2);t=t>r?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;w.arc(h+t,c+t,t,-Math.PI,-Math.PI/2);w.arc(h+d-e,c+e,e,-Math.PI/2,0);w.arc(h+d-a,c+s-a,a,0,Math.PI/2);w.arc(h+i,c+s-i,i,Math.PI/2,Math.PI);w.fill()}else{w.moveTo(l,o.y);w.lineTo(l+o.width,o.y);w.lineTo(l+o.width,n);w.lineTo(l,n);w.lineTo(l,o.y);w.fill()}if(i==0&&D.meterBorder>0){w.closePath();w.stroke()}}}break}});if(b.dataLabel!==false&&A===1){T.forEach(function(t,e){let a,i,r;a=[].concat(b.chartData.yAxisData.ranges[t.index]);i=a.pop();r=a.shift();var o=t.data;switch(D.type){case"group":var n=getColumnDataPoints(o,i,r,P,C,b,S,A);n=fixColumeData(n,C,T.length,e,S,b);drawColumePointText(n,t,S,w,b);break;case"stack":var n=getStackDataPoints(o,i,r,P,C,b,S,e,T,A);drawColumePointText(n,t,S,w,b);break;case"meter":var n=getDataPoints(o,i,r,P,C,b,S,A);drawColumePointText(n,t,S,w,b);break}})}w.restore();return{xAxisPoints:P,calPoints:M,eachSpacing:C}}function drawMountDataPoints(i,r,o,n){let f=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let t=r.chartData.xAxisData,p=t.xAxisPoints,l=t.eachSpacing;let s=assign({},{type:"mount",widthRatio:1,borderWidth:1,barBorderCircle:false,barBorderRadius:[],linearType:"none",linearOpacity:1,customColor:[],colorStop:0},r.extra.mount);s.widthRatio=s.widthRatio<=0?0:s.widthRatio;s.widthRatio=s.widthRatio>=2?2:s.widthRatio;let e=[];n.save();let u=-2;let g=p.length+2;if(r._scrollDistance_&&r._scrollDistance_!==0&&r.enableScroll===true){n.translate(r._scrollDistance_,0);u=Math.floor(-r._scrollDistance_/l)-2;g=u+r.xAxis.itemCount+4}s.customColor=fillCustomColor(s.linearType,s.customColor,i,o);let y,v,m;y=[].concat(r.chartData.yAxisData.ranges[0]);v=y.pop();m=y.shift();let T=r.height-r.area[0]-r.area[2];let b=T*(0-v)/(m-v);let h=r.height-Math.round(b)-r.area[2];var c=getMountDataPoints(i,v,m,p,l,r,s,h,f);switch(s.type){case"bar":for(let t=0;tu&&th?h:o.y;const C=o.width;const S=Math.abs(h-o.y);if(s.barBorderCircle){s.barBorderRadius=[C/2,C/2,0,0]}if(o.y>h){s.barBorderRadius=[0,0,C/2,C/2]}let[t,e,a,i]=s.barBorderRadius;let r=Math.min(C/2,S/2);t=t>r?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;n.arc(A+t,P+t,t,-Math.PI,-Math.PI/2);n.arc(A+C-e,P+e,e,-Math.PI/2,0);n.arc(A+C-a,P+S-a,a,0,Math.PI/2);n.arc(A+i,P+S-i,i,Math.PI/2,Math.PI)}else{n.moveTo(d,o.y);n.lineTo(d+o.width,o.y);n.lineTo(d+o.width,h);n.lineTo(d,h);n.lineTo(d,o.y)}n.setStrokeStyle(w);n.setFillStyle(a);if(s.borderWidth>0){n.setLineWidth(s.borderWidth*r.pix);n.closePath();n.stroke()}n.fill()}};break;case"triangle":for(let e=0;eu&&e0){n.setLineWidth(s.borderWidth*r.pix);n.stroke()}n.fill()}};break;case"mount":for(let e=0;eu&&e0){n.setLineWidth(s.borderWidth*r.pix);n.stroke()}n.fill()}};break;case"sharp":for(let e=0;eu&&e0){n.setLineWidth(s.borderWidth*r.pix);n.stroke()}n.fill()}};break}if(r.dataLabel!==false&&f===1){let t,e,a;t=[].concat(r.chartData.yAxisData.ranges[0]);e=t.pop();a=t.shift();var c=getMountDataPoints(i,e,a,p,l,r,s,h,f);drawMountPointText(c,i,o,n,r,h)}n.restore();return{xAxisPoints:p,calPoints:c,eachSpacing:l}}function drawBarDataPoints(y,v,m,T){let b=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let S=[];let w=(v.height-v.area[0]-v.area[2])/v.categories.length;for(let t=0;tC&&tr?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;T.arc(g+i,c+i,i,-Math.PI,-Math.PI/2);T.arc(o.x-t,c+t,t,-Math.PI/2,0);T.arc(o.x-e,c+h-e,e,0,Math.PI/2);T.arc(g+a,c+h-a,a,Math.PI/2,Math.PI)}else{T.moveTo(n,r);T.lineTo(o.x,r);T.lineTo(o.x,r+o.width);T.lineTo(n,r+o.width);T.lineTo(n,r);T.setLineWidth(1);T.setStrokeStyle(u)}T.setFillStyle(l);T.closePath();T.fill()}};break;case"stack":var i=getBarStackDataPoints(x,e,d,S,w,v,m,t,y,b);P.push(i);i=fixBarStackData(i,w,y.length,t,m,v,y);for(let e=0;eC&&e5&&arguments[5]!==undefined?arguments[5]:1;var s=assign({},{color:{},average:{}},h.extra.candle);s.color=assign({},{upLine:"#f04864",upFill:"#f04864",downLine:"#2fc25b",downFill:"#2fc25b"},s.color);s.average=assign({},{show:false,name:[],day:[],color:c.color},s.average);h.extra.candle=s;let a=h.chartData.xAxisData,x=a.xAxisPoints,f=a.eachSpacing;let y=[];d.save();let p=-2;let v=x.length+2;let u=0;let m=h.width+f;if(h._scrollDistance_&&h._scrollDistance_!==0&&h.enableScroll===true){d.translate(h._scrollDistance_,0);p=Math.floor(-h._scrollDistance_/f)-2;v=p+h.xAxis.itemCount+4;u=-h._scrollDistance_-f*2+h.area[3];m=u+(h.xAxis.itemCount+4)*f}if(s.average.show||t){t.forEach(function(e,t){let a,i,r;a=[].concat(h.chartData.yAxisData.ranges[e.index]);i=a.pop();r=a.shift();var o=e.data;var n=getDataPoints(o,i,r,x,f,h,c,g);var l=splitPoints(n,e);for(let t=0;tu){d.moveTo(t.x,t.y);a=1}if(e>0&&t.x>u&&t.xp&&e0){d.setStrokeStyle(s.color.upLine);d.setFillStyle(s.color.upFill);d.setLineWidth(1*h.pix);d.moveTo(t[3].x,t[3].y);d.lineTo(t[1].x,t[1].y);d.lineTo(t[1].x-f/4,t[1].y);d.lineTo(t[0].x-f/4,t[0].y);d.lineTo(t[0].x,t[0].y);d.lineTo(t[2].x,t[2].y);d.lineTo(t[0].x,t[0].y);d.lineTo(t[0].x+f/4,t[0].y);d.lineTo(t[1].x+f/4,t[1].y);d.lineTo(t[1].x,t[1].y);d.moveTo(t[3].x,t[3].y)}else{d.setStrokeStyle(s.color.downLine);d.setFillStyle(s.color.downFill);d.setLineWidth(1*h.pix);d.moveTo(t[3].x,t[3].y);d.lineTo(t[0].x,t[0].y);d.lineTo(t[0].x-f/4,t[0].y);d.lineTo(t[1].x-f/4,t[1].y);d.lineTo(t[1].x,t[1].y);d.lineTo(t[2].x,t[2].y);d.lineTo(t[1].x,t[1].y);d.lineTo(t[1].x+f/4,t[1].y);d.lineTo(t[0].x+f/4,t[0].y);d.lineTo(t[0].x,t[0].y);d.moveTo(t[3].x,t[3].y)}d.closePath();d.fill();d.stroke()}}});d.restore();return{xAxisPoints:x,calPoints:y,eachSpacing:f}}function drawAreaDataPoints(t,s,h,c){var d=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var x=assign({},{type:"straight",opacity:.2,addLine:false,width:2,gradient:false,activeType:"none"},s.extra.area);let e=s.chartData.xAxisData,f=e.xAxisPoints,p=e.eachSpacing;let y=s.height-s.area[2];let v=[];c.save();let u=0;let g=s.width+p;if(s._scrollDistance_&&s._scrollDistance_!==0&&s.enableScroll===true){c.translate(s._scrollDistance_,0);u=-s._scrollDistance_-p*2+s.area[3];g=u+(s.xAxis.itemCount+4)*p}t.forEach(function(e,t){let a,i,r;a=[].concat(s.chartData.yAxisData.ranges[e.index]);i=a.pop();r=a.shift();let o=e.data;let n=getDataPoints(o,i,r,f,p,s,h,d);v.push(n);let l=splitPoints(n,e);for(let t=0;t1){let t=r[0];let e=r[r.length-1];c.moveTo(t.x,t.y);let i=0;if(x.type==="curve"){for(let a=0;au){c.moveTo(e.x,e.y);i=1}if(a>0&&e.x>u&&e.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.xu){c.moveTo(e.x,e.y);i=1}if(a>0&&e.x>u&&e.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.x4&&arguments[4]!==undefined?arguments[4]:1;var i=assign({},{type:"circle"},s.extra.scatter);let e=s.chartData.xAxisData,x=e.xAxisPoints,f=e.eachSpacing;var r=[];c.save();let a=0;let o=s.width+f;if(s._scrollDistance_&&s._scrollDistance_!==0&&s.enableScroll===true){c.translate(s._scrollDistance_,0);a=-s._scrollDistance_-f*2+s.area[3];o=a+(s.xAxis.itemCount+4)*f}t.forEach(function(t,e){let a,i,r;a=[].concat(s.chartData.yAxisData.ranges[t.index]);i=a.pop();r=a.shift();var o=t.data;var n=getDataPoints(o,i,r,x,f,s,h,d);c.beginPath();c.setStrokeStyle(t.color);c.setFillStyle(t.color);c.setLineWidth(1*s.pix);var l=t.pointShape;if(l==="diamond"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x,t.y-4.5);c.lineTo(t.x-4.5,t.y);c.lineTo(t.x,t.y+4.5);c.lineTo(t.x+4.5,t.y);c.lineTo(t.x,t.y-4.5)}})}else if(l==="circle"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x+2.5*s.pix,t.y);c.arc(t.x,t.y,3*s.pix,0,2*Math.PI,false)}})}else if(l==="square"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x-3.5,t.y-3.5);c.rect(t.x-3.5,t.y-3.5,7,7)}})}else if(l==="triangle"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x,t.y-4.5);c.lineTo(t.x-4.5,t.y+4.5);c.lineTo(t.x+4.5,t.y+4.5);c.lineTo(t.x,t.y-4.5)}})}else if(l==="triangle"){return}c.closePath();c.fill();c.stroke()});if(s.dataLabel!==false&&d===1){t.forEach(function(t,e){let a,i,r;a=[].concat(s.chartData.yAxisData.ranges[t.index]);i=a.pop();r=a.shift();var o=t.data;var n=getDataPoints(o,i,r,x,f,s,h,d);drawPointText(n,t,h,c,s)})}c.restore();return{xAxisPoints:x,calPoints:r,eachSpacing:f}}function drawBubbleDataPoints(a,l,s,h){var c=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var d=assign({},{opacity:1,border:2},l.extra.bubble);let t=l.chartData.xAxisData,x=t.xAxisPoints,f=t.eachSpacing;var i=[];h.save();let e=0;let r=l.width+f;if(l._scrollDistance_&&l._scrollDistance_!==0&&l.enableScroll===true){h.translate(l._scrollDistance_,0);e=-l._scrollDistance_-f*2+l.area[3];r=e+(l.xAxis.itemCount+4)*f}a.forEach(function(i,t){let e,a,r;e=[].concat(l.chartData.yAxisData.ranges[i.index]);a=e.pop();r=e.shift();var o=i.data;var n=getDataPoints(o,a,r,x,f,l,s,c);h.beginPath();h.setStrokeStyle(i.color);h.setLineWidth(d.border*l.pix);h.setFillStyle(hexToRgb(i.color,d.opacity));n.forEach(function(t,e){h.moveTo(t.x+t.r,t.y);h.arc(t.x,t.y,t.r*l.pix,0,2*Math.PI,false)});h.closePath();h.fill();h.stroke();if(l.dataLabel!==false&&c===1){n.forEach(function(t,e){h.beginPath();var a=i.textSize*l.pix||s.fontSize;h.setFontSize(a);h.setFillStyle(i.textColor||"#FFFFFF");h.setTextAlign("center");h.fillText(String(t.t),t.x,t.y+a/2);h.closePath();h.stroke();h.setTextAlign("left")})}});h.restore();return{xAxisPoints:x,calPoints:i,eachSpacing:f}}function drawLineDataPoints(t,d,x,f){var p=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var u=assign({},{type:"straight",width:2,activeType:"none",linearType:"none",onShadow:false,animation:"vertical"},d.extra.line);u.width*=d.pix;let e=d.chartData.xAxisData,g=e.xAxisPoints,y=e.eachSpacing;var T=[];f.save();let v=0;let m=d.width+y;if(d._scrollDistance_&&d._scrollDistance_!==0&&d.enableScroll===true){f.translate(d._scrollDistance_,0);v=-d._scrollDistance_-y*2+d.area[3];m=v+(d.xAxis.itemCount+4)*y}t.forEach(function(e,c){f.beginPath();f.setStrokeStyle(e.color);f.moveTo(-1e4,-1e4);f.lineTo(-10001,-10001);f.stroke();let t,a,i;t=[].concat(d.chartData.yAxisData.ranges[e.index]);a=t.pop();i=t.shift();var r=e.data;var o=getLineDataPoints(r,a,i,g,y,d,x,u,p);T.push(o);var n=splitPoints(o,e);if(e.lineType=="dash"){let t=e.dashLength?e.dashLength:8;t*=d.pix;f.setLineDash([t,t])}f.beginPath();var l=e.color;if(u.linearType!=="none"&&e.linearColor&&e.linearColor.length>0){var s=f.createLinearGradient(d.chartData.xAxisData.startX,d.height/2,d.chartData.xAxisData.endX,d.height/2);for(var h=0;h0){f.setShadow(e.setShadow[0],e.setShadow[1],e.setShadow[2],e.setShadow[3])}else{f.setShadow(0,0,0,"rgba(0,0,0,0)")}f.setLineWidth(u.width);n.forEach(function(i,t){if(i.length===1){f.moveTo(i[0].x,i[0].y)}else{f.moveTo(i[0].x,i[0].y);let a=0;if(u.type==="curve"){for(let e=0;ev){f.moveTo(t.x,t.y);a=1}if(e>0&&t.x>v&&t.xv){f.moveTo(t.x,t.y);a=1}if(e>0&&t.x>v&&t.xv){f.moveTo(t.x,t.y);a=1}if(e>0&&t.x>v&&t.x4&&arguments[4]!==undefined?arguments[4]:1;let e=v.chartData.xAxisData,b=e.xAxisPoints,S=e.eachSpacing;let w=assign({},{width:S/2,barBorderCircle:false,barBorderRadius:[],seriesGap:2,linearType:"none",linearOpacity:1,customColor:[],colorStop:0},v.extra.mix.column);let A=assign({},{opacity:.2,gradient:false},v.extra.mix.area);let M=assign({},{width:2},v.extra.mix.line);let L=v.height-v.area[2];let F=[];var _=0;var k=0;t.forEach(function(t,e){if(t.type=="column"){k+=1}});T.save();let R=-2;let I=b.length+2;let P=0;let C=v.width+S;if(v._scrollDistance_&&v._scrollDistance_!==0&&v.enableScroll===true){T.translate(v._scrollDistance_,0);R=Math.floor(-v._scrollDistance_/S)-2;I=R+v.xAxis.itemCount+4;P=-v._scrollDistance_-S*2+v.area[3];C=P+(v.xAxis.itemCount+4)*S}w.customColor=fillCustomColor(w.linearType,w.customColor,t,m);t.forEach(function(n,t){let o,x,f;o=[].concat(v.chartData.yAxisData.ranges[n.index]);x=o.pop();f=o.shift();var p=n.data;var a=getDataPoints(p,x,f,b,S,v,m,D);F.push(a);if(n.type=="column"){a=fixColumeData(a,S,k,_,m,v);for(let t=0;tR&&tr?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;T.arc(h+t,c+t,t,-Math.PI,-Math.PI/2);T.arc(h+d-e,c+e,e,-Math.PI/2,0);T.arc(h+d-a,c+s-a,a,0,Math.PI/2);T.arc(h+i,c+s-i,i,Math.PI/2,Math.PI)}else{T.moveTo(l,o.y);T.lineTo(l+o.width,o.y);T.lineTo(l+o.width,v.height-v.area[2]);T.lineTo(l,v.height-v.area[2]);T.lineTo(l,o.y);T.setLineWidth(1);T.setStrokeStyle(u)}T.setFillStyle(e);T.closePath();T.fill()}}_+=1}if(n.type=="area"){let e=splitPoints(a,n);for(let t=0;t1){var r=i[0];let t=i[i.length-1];T.moveTo(r.x,r.y);let a=0;if(n.style==="curve"){for(let e=0;eP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.xP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.xP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.xP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.x1){if(h.extra.mount.widthRatio>2)h.extra.mount.widthRatio=2;l+=(h.extra.mount.widthRatio-1)*f}var s=n*n/l;var y=0;if(h._scrollDistance_){y=-h._scrollDistance_*n/l}d.beginPath();d.setLineCap("round");d.setLineWidth(6*h.pix);d.setStrokeStyle(h.xAxis.scrollBackgroundColor||"#EFEBEF");d.moveTo(t,o);d.lineTo(a,o);d.stroke();d.closePath();d.beginPath();d.setLineCap("round");d.setLineWidth(6*h.pix);d.setStrokeStyle(h.xAxis.scrollColor||"#A6A6A6");d.moveTo(t+y,o);d.lineTo(t+y+s,o);d.stroke();d.closePath();d.setLineCap("butt")}d.save();if(h._scrollDistance_&&h._scrollDistance_!==0){d.translate(h._scrollDistance_,0)}if(h.xAxis.calibration===true){d.setStrokeStyle(h.xAxis.gridColor||"#cccccc");d.setLineCap("butt");d.setLineWidth(1*h.pix);x.forEach(function(t,e){if(e>0){d.beginPath();d.moveTo(t-f/2,u);d.lineTo(t-f/2,u+3*h.pix);d.closePath();d.stroke()}})}if(h.xAxis.disableGrid!==true){d.setStrokeStyle(h.xAxis.gridColor||"#cccccc");d.setLineCap("butt");d.setLineWidth(1*h.pix);if(h.xAxis.gridType=="dash"){d.setLineDash([h.xAxis.dashLength*h.pix,h.xAxis.dashLength*h.pix])}h.xAxis.gridEval=h.xAxis.gridEval||1;x.forEach(function(t,e){if(e%h.xAxis.gridEval==0){d.beginPath();d.moveTo(t,u);d.lineTo(t,i);d.stroke()}});d.setLineDash([])}if(h.xAxis.disabled!==true){let t=r.length;if(h.xAxis.labelCount){if(h.xAxis.itemCount){t=Math.ceil(r.length/h.xAxis.itemCount*h.xAxis.labelCount)}else{t=h.xAxis.labelCount}t-=1}let e=Math.ceil(r.length/t);let a=[];let i=r.length;for(let t=0;t=h.area[3]-1&&n-Math.abs(o)<=h.width-h.area[1]+1){d.beginPath();d.setFontSize(g);d.setFillStyle(h.xAxis.fontColor||h.fontColor);d.fillText(String(a),x[e]+i,u+h.xAxis.marginTop*h.pix+(h.xAxis.lineHeight-h.xAxis.fontSize)*h.pix/2+h.xAxis.fontSize*h.pix);d.closePath();d.stroke()}})}else{a.forEach(function(t,e){var a=h.xAxis.formatter?h.xAxis.formatter(t):t;var i=h._scrollDistance_||0;var r=p=="center"?x[e]+f/2:x[e];if(r-Math.abs(i)>=h.area[3]-1&&r-Math.abs(i)<=h.width-h.area[1]+1){d.save();d.beginPath();d.setFontSize(g);d.setFillStyle(h.xAxis.fontColor||h.fontColor);var o=measureText(String(a),g,d);var n=x[e];if(p=="center"){n=x[e]+f/2}var l=0;if(h.xAxis.scrollShow){l=6*h.pix}var s=u+h.xAxis.marginTop*h.pix+g-g*Math.abs(Math.sin(c._xAxisTextAngle_));if(h.xAxis.rotateAngle<0){n-=g/2;o=0}else{n+=g/2;o=-o}d.translate(n,s);d.rotate(-1*c._xAxisTextAngle_);d.fillText(String(a),o,0);d.closePath();d.stroke();d.restore()}})}}d.restore();if(h.xAxis.title){d.beginPath();d.setFontSize(h.xAxis.titleFontSize*h.pix);d.setFillStyle(h.xAxis.titleFontColor);d.fillText(String(h.xAxis.title),h.width-h.area[1]+h.xAxis.titleOffsetX*h.pix,h.height-h.area[2]+h.xAxis.marginTop*h.pix+(h.xAxis.lineHeight-h.xAxis.titleFontSize)*h.pix/2+(h.xAxis.titleFontSize+h.xAxis.titleOffsetY)*h.pix);d.closePath();d.stroke()}if(h.xAxis.axisLine){d.beginPath();d.setStrokeStyle(h.xAxis.axisLineColor);d.setLineWidth(1*h.pix);d.moveTo(t,h.height-h.area[2]);d.lineTo(a,h.height-h.area[2]);d.stroke()}}function drawYAxisGrid(c,e,d,a){if(e.yAxis.disableGrid===true){return}let t=e.height-e.area[0]-e.area[2];let i=t/e.yAxis.splitNumber;let r=e.area[3];let o=e.chartData.xAxisData.xAxisPoints,n=e.chartData.xAxisData.eachSpacing;let l=n*(o.length-1);if(e.type=="mount"&&e.extra&&e.extra.mount&&e.extra.mount.widthRatio&&e.extra.mount.widthRatio>1){if(e.extra.mount.widthRatio>2)e.extra.mount.widthRatio=2;l+=(e.extra.mount.widthRatio-1)*n}let x=r+l;let s=[];let h=1;if(e.xAxis.axisLine===false){h=0}for(let t=h;t4&&arguments[4]!==undefined?arguments[4]:1;var n=assign({},{activeOpacity:.5,activeRadius:10,offsetAngle:0,labelWidth:15,ringWidth:30,customRadius:0,border:false,borderWidth:2,borderColor:"#FFFFFF",centerColor:"#FFFFFF",linearType:"none",customColor:[]},r.type=="pie"?r.extra.pie:r.extra.ring);var l={x:r.area[3]+(r.width-r.area[1]-r.area[3])/2,y:r.area[0]+(r.height-r.area[0]-r.area[2])/2};if(e.pieChartLinePadding==0){e.pieChartLinePadding=n.activeRadius*r.pix}var i=Math.min((r.width-r.area[1]-r.area[3])/2-e.pieChartLinePadding-e.pieChartTextPadding-e._pieTextMaxLength_,(r.height-r.area[0]-r.area[2])/2-e.pieChartLinePadding-e.pieChartTextPadding);i=i<10?10:i;if(n.customRadius>0){i=n.customRadius*r.pix}t=getPieDataPoints(t,i,a);var h=n.activeRadius*r.pix;n.customColor=fillCustomColor(n.linearType,n.customColor,t,e);t=t.map(function(t){t._start_+=n.offsetAngle*Math.PI/180;return t});t.forEach(function(t,e){if(r.tooltip){if(r.tooltip.index==e){o.beginPath();o.setFillStyle(hexToRgb(t.color,n.activeOpacity||.5));o.moveTo(l.x,l.y);o.arc(l.x,l.y,t._radius_+h,t._start_,t._start_+2*t._proportion_*Math.PI);o.closePath();o.fill()}}o.beginPath();o.setLineWidth(n.borderWidth*r.pix);o.lineJoin="round";o.setStrokeStyle(n.borderColor);var a=t.color;if(n.linearType=="custom"){var i;if(o.createCircularGradient){i=o.createCircularGradient(l.x,l.y,t._radius_)}else{i=o.createRadialGradient(l.x,l.y,0,l.x,l.y,t._radius_)}i.addColorStop(0,hexToRgb(n.customColor[t.linearIndex],1));i.addColorStop(1,hexToRgb(t.color,1));a=i}o.setFillStyle(a);o.moveTo(l.x,l.y);o.arc(l.x,l.y,t._radius_,t._start_,t._start_+2*t._proportion_*Math.PI);o.closePath();o.fill();if(n.border==true){o.stroke()}});if(r.type==="ring"){var s=i*.6;if(typeof n.ringWidth==="number"&&n.ringWidth>0){s=Math.max(0,i-n.ringWidth*r.pix)}o.beginPath();o.setFillStyle(n.centerColor);o.moveTo(l.x,l.y);o.arc(l.x,l.y,s,0,2*Math.PI);o.closePath();o.fill()}if(r.dataLabel!==false&&a===1){drawPieText(t,r,e,o,i,l)}if(a===1&&r.type==="ring"){drawRingTitle(r,e,o,l)}return{center:l,radius:i,series:t}}function drawRoseDataPoints(t,r,e,o){var a=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var n=assign({},{type:"area",activeOpacity:.5,activeRadius:10,offsetAngle:0,labelWidth:15,border:false,borderWidth:2,borderColor:"#FFFFFF",linearType:"none",customColor:[]},r.extra.rose);if(e.pieChartLinePadding==0){e.pieChartLinePadding=n.activeRadius*r.pix}var l={x:r.area[3]+(r.width-r.area[1]-r.area[3])/2,y:r.area[0]+(r.height-r.area[0]-r.area[2])/2};var i=Math.min((r.width-r.area[1]-r.area[3])/2-e.pieChartLinePadding-e.pieChartTextPadding-e._pieTextMaxLength_,(r.height-r.area[0]-r.area[2])/2-e.pieChartLinePadding-e.pieChartTextPadding);i=i<10?10:i;var s=n.minRadius||i*.5;if(i4&&arguments[4]!==undefined?arguments[4]:1;var o=assign({},{startAngle:.75,endAngle:.25,type:"default",direction:"cw",lineCap:"round",width:12,gap:2,linearType:"none",customColor:[]},i.extra.arcbar);a=getArcbarDataPoints(a,o,e);var n;if(o.centerX||o.centerY){n={x:o.centerX?o.centerX:i.width/2,y:o.centerY?o.centerY:i.height/2}}else{n={x:i.width/2,y:i.height/2}}var l;if(o.radius){l=o.radius}else{l=Math.min(n.x,n.y);l-=5*i.pix;l-=o.width/2}l=l<10?10:l;o.customColor=fillCustomColor(o.linearType,o.customColor,a,t);for(let e=0;e5&&arguments[5]!==undefined?arguments[5]:1;var f=assign({},{type:"default",startAngle:.75,endAngle:.25,width:15,labelOffset:13,splitLine:{fixRadius:0,splitNumber:10,width:15,color:"#FFFFFF",childNumber:5,childWidth:5},pointer:{width:15,color:"auto"}},c.extra.gauge);if(f.oldAngle==undefined){f.oldAngle=f.startAngle}if(f.oldData==undefined){f.oldData=0}n=getGaugeAxisPoints(n,f.startAngle,f.endAngle);var p={x:c.width/2,y:c.height/2};var u=Math.min(p.x,p.y);u-=5*c.pix;u-=f.width/2;u=u<10?10:u;var g=u-f.width;var y=0;if(f.type=="progress"){var v=u-f.width*3;d.beginPath();let t=d.createLinearGradient(p.x,p.y-v,p.x,p.y+v);t.addColorStop("0",hexToRgb(h[0].color,.3));t.addColorStop("1.0",hexToRgb("#FFFFFF",.1));d.setFillStyle(t);d.arc(p.x,p.y,v,0,2*Math.PI,false);d.fill();d.setLineWidth(f.width);d.setStrokeStyle(hexToRgb(h[0].color,.3));d.setLineCap("round");d.beginPath();d.arc(p.x,p.y,g,f.startAngle*Math.PI,f.endAngle*Math.PI,false);d.stroke();if(f.endAnglet/o){d.setStrokeStyle(hexToRgb(h[0].color,1))}else{d.setStrokeStyle(hexToRgb(h[0].color,.3))}d.setLineWidth(3*c.pix);d.moveTo(i,0);d.lineTo(r,0);d.stroke();d.rotate(a*Math.PI)}d.restore();h=getGaugeArcbarDataPoints(h,f,x);d.setLineWidth(f.width);d.setStrokeStyle(h[0].color);d.setLineCap("round");d.beginPath();d.arc(p.x,p.y,g,f.startAngle*Math.PI,h[0]._proportion_*Math.PI,false);d.stroke();let l=u-f.width*2.5;d.save();d.translate(p.x,p.y);d.rotate((h[0]._proportion_-1)*Math.PI);d.beginPath();d.setLineWidth(f.width/3);let s=d.createLinearGradient(0,-l*.6,0,l*.6);s.addColorStop("0",hexToRgb("#FFFFFF",0));s.addColorStop("0.5",hexToRgb(h[0].color,1));s.addColorStop("1.0",hexToRgb("#FFFFFF",0));d.setStrokeStyle(s);d.arc(0,0,l,.85*Math.PI,1.15*Math.PI,false);d.stroke();d.beginPath();d.setLineWidth(1);d.setStrokeStyle(h[0].color);d.setFillStyle(h[0].color);d.moveTo(-l-f.width/3/2,-4);d.lineTo(-l-f.width/3/2-4,0);d.lineTo(-l-f.width/3/2,4);d.lineTo(-l-f.width/3/2,-4);d.stroke();d.fill();d.restore()}else{d.setLineWidth(f.width);d.setLineCap("butt");for(let e=0;e4&&arguments[4]!==undefined?arguments[4]:1;var s=assign({},{gridColor:"#cccccc",gridType:"radar",gridEval:1,axisLabel:false,axisLabelTofix:0,labelShow:true,labelColor:"#666666",labelPointShow:false,labelPointRadius:3,labelPointColor:"#cccccc",opacity:.2,gridCount:3,border:false,borderWidth:2,linearType:"none",customColor:[]},n.extra.radar);var a=getRadarCoordinateSeries(n.categories.length);var h={x:n.area[3]+(n.width-n.area[1]-n.area[3])/2,y:n.area[0]+(n.height-n.area[0]-n.area[2])/2};var r=(n.width-n.area[1]-n.area[3])/2;var d=(n.height-n.area[0]-n.area[2])/2;var c=Math.min(r-(getMaxTextListLength(n.categories,i.fontSize,l)+i.radarLabelTextMargin),d-i.radarLabelTextMargin);c-=i.radarLabelTextMargin*n.pix;c=c<10?10:c;c=s.radius?s.radius:c;l.beginPath();l.setLineWidth(1*n.pix);l.setStrokeStyle(s.gridColor);a.forEach(function(t,e){var a=convertCoordinateOrigin(c*Math.cos(t),c*Math.sin(t),h);l.moveTo(h.x,h.y);if(e%s.gridEval==0){l.lineTo(a.x,a.y)}});l.stroke();l.closePath();var x=function t(i){var r={};l.beginPath();l.setLineWidth(1*n.pix);l.setStrokeStyle(s.gridColor);if(s.gridType=="radar"){a.forEach(function(t,e){var a=convertCoordinateOrigin(c/s.gridCount*i*Math.cos(t),c/s.gridCount*i*Math.sin(t),h);if(e===0){r=a;l.moveTo(a.x,a.y)}else{l.lineTo(a.x,a.y)}});l.lineTo(r.x,r.y)}else{var e=convertCoordinateOrigin(c/s.gridCount*i*Math.cos(1.5),c/s.gridCount*i*Math.sin(1.5),h);l.arc(h.x,h.y,h.y-e.y,0,2*Math.PI,false)}l.stroke();l.closePath()};for(var e=1;e<=s.gridCount;e++){x(e)}s.customColor=fillCustomColor(s.linearType,s.customColor,o,i);var f=getRadarDataPoints(a,h,c,o,n,t);f.forEach(function(t,e){l.beginPath();l.setLineWidth(s.borderWidth*n.pix);l.setStrokeStyle(t.color);var a=hexToRgb(t.color,s.opacity);if(s.linearType=="custom"){var i;if(l.createCircularGradient){i=l.createCircularGradient(h.x,h.y,c)}else{i=l.createRadialGradient(h.x,h.y,0,h.x,h.y,c)}i.addColorStop(0,hexToRgb(s.customColor[o[e].linearIndex],s.opacity));i.addColorStop(1,hexToRgb(t.color,s.opacity));a=i}l.setFillStyle(a);t.data.forEach(function(t,e){if(e===0){l.moveTo(t.position.x,t.position.y)}else{l.lineTo(t.position.x,t.position.y)}});l.closePath();l.fill();if(s.border===true){l.stroke()}l.closePath();if(n.dataPointShape!==false){var r=t.data.map(function(t){return t.position});drawPointShape(r,t.color,t.pointShape,l,n)}});if(s.axisLabel===true){const p=Math.max(s.max,Math.max.apply(null,dataCombine(o)));const u=c/s.gridCount;const g=n.fontSize*n.pix;l.setFontSize(g);l.setFillStyle(n.fontColor);l.setTextAlign("left");for(var e=0;eh.x?e.xMax:h.x;e.yMin=e.yMinh.y?e.yMax:h.y}}}return e}function coordinateToPoint(t,e,a,i,r,o){return{x:(e-a.xMin)*i+r,y:(a.yMax-t)*i+o}}function pointToCoordinate(t,e,a,i,r,o){return{x:(e-r)/i+a.xMin,y:a.yMax-(t-o)/i}}function isRayIntersectsSegment(t,e,a){if(e[1]==a[1]){return false}if(e[1]>t[1]&&a[1]>t[1]){return false}if(e[1]t[1]){return false}if(a[1]==t[1]&&e[1]>t[1]){return false}if(e[0]a[t].area[2]||e[1]>a[t].area[3]||e[2]i||e[3]>r){o=true;break}else{o=false}}else{o=true;break}}}return o}function getWordCloudPoint(c,t,d){let x=c.series;switch(t){case"normal":for(let l=0;l.7){return true}else{return false}};for(let h=0;h4&&arguments[4]!==undefined?arguments[4]:1;let a=assign({},{type:"normal",autoColors:true},r.extra.word);if(!r.chartData.wordCloudData){r.chartData.wordCloudData=getWordCloudPoint(r,a.type,o)}o.beginPath();o.setFillStyle(r.background);o.rect(0,0,r.width,r.height);o.fill();o.save();let l=r.chartData.wordCloudData;o.translate(r.width/2,r.height/2);for(let i=0;i0){if(r.tooltip){if(r.tooltip.index==i){o.strokeText(t,(l[i].areav[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].areav[1]+5+e-r.height/2)*n)}else{o.fillText(t,(l[i].areav[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].areav[1]+5+e-r.height/2)*n)}}else{o.fillText(t,(l[i].areav[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].areav[1]+5+e-r.height/2)*n)}}}else{if(l[i].area[0]>0){if(r.tooltip){if(r.tooltip.index==i){o.strokeText(t,(l[i].area[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].area[1]+5+e-r.height/2)*n)}else{o.fillText(t,(l[i].area[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].area[1]+5+e-r.height/2)*n)}}else{o.fillText(t,(l[i].area[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].area[1]+5+e-r.height/2)*n)}}}o.stroke();o.restore()}o.restore()}function drawFunnelDataPoints(t,e,c,a){let d=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let i=assign({},{type:"funnel",activeWidth:10,activeOpacity:.3,border:false,borderWidth:2,borderColor:"#FFFFFF",fillOpacity:1,minSize:0,labelAlign:"right",linearType:"none",customColor:[]},e.extra.funnel);let r=(e.height-e.area[0]-e.area[2])/t.length;let o={x:e.area[3]+(e.width-e.area[1]-e.area[3])/2,y:e.height-e.area[2]};let n=i.activeWidth*e.pix;let x=Math.min((e.width-e.area[1]-e.area[3])/2-n,(e.height-e.area[0]-e.area[2])/2-n);let l=getFunnelDataPoints(t,x,i,r,d);a.save();a.translate(o.x,o.y);i.customColor=fillCustomColor(i.linearType,i.customColor,t,c);if(i.type=="pyramid"){for(let t=0;t0){l.area[3]+=i[t].width+l.yAxis.padding*l.pix}else{l.area[3]+=i[t].width}a+=1}else if(i[t].position=="right"){if(e>0){l.area[1]+=i[t].width+l.yAxis.padding*l.pix}else{l.area[1]+=i[t].width}e+=1}}}else{n.yAxisWidth=i}l.chartData.yAxisData=f;if(l.categories&&l.categories.length&&l.type!=="radar"&&l.type!=="gauge"&&l.type!=="bar"){l.chartData.xAxisData=getXAxisPoints(l.categories,l,n);let t=calCategoriesData(l.categories,l,n,l.chartData.xAxisData.eachSpacing,s),e=t.xAxisHeight,a=t.angle;n.xAxisHeight=e;n._xAxisTextAngle_=a;l.area[2]+=e;l.chartData.categoriesData=t}else{if(l.type==="line"||l.type==="area"||l.type==="scatter"||l.type==="bubble"||l.type==="bar"){l.chartData.xAxisData=calXAxisData(c,l,n,s);d=l.chartData.xAxisData.rangesFormat;let t=calCategoriesData(d,l,n,l.chartData.xAxisData.eachSpacing,s),e=t.xAxisHeight,a=t.angle;n.xAxisHeight=e;n._xAxisTextAngle_=a;l.area[2]+=e;l.chartData.categoriesData=t}else{l.chartData.xAxisData={xAxisPoints:[]}}}if(l.enableScroll&&l.xAxis.scrollAlign=="right"&&l._scrollDistance_===undefined){let t=0,e=l.chartData.xAxisData.xAxisPoints,a=l.chartData.xAxisData.startX,i=l.chartData.xAxisData.endX,r=l.chartData.xAxisData.eachSpacing;let o=r*(e.length-1);let n=i-a;t=n-o;h.scrollOption.currentOffset=t;h.scrollOption.startTouchX=t;h.scrollOption.distance=0;h.scrollOption.lastMoveTime=0;l._scrollDistance_=t}if(t==="pie"||t==="ring"||t==="rose"){n._pieTextMaxLength_=l.dataLabel===false?0:getPieTextMaxLength(x,n,s,l)}switch(t){case"word":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function(t){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawWordCloudDataPoints(c,l,n,s,t);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"map":s.clearRect(0,0,l.width,l.height);drawMapDataPoints(c,l,n,s);setTimeout(()=>{this.uevent.trigger("renderComplete")},50);break;case"funnel":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function(t){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.funnelData=drawFunnelDataPoints(c,l,n,s,t);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,t);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"line":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawLineDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"scatter":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawScatterDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"bubble":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawBubbleDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"mix":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawMixDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"column":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawColumnDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"mount":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawMountDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"bar":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawXAxis(d,l,n,s);var a=drawBarDataPoints(c,l,n,s,e),i=a.yAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.yAxisPoints=i;l.chartData.xAxisPoints=l.chartData.xAxisData.xAxisPoints;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"area":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawAreaDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"ring":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.pieData=drawPieDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"pie":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.pieData=drawPieDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"rose":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.pieData=drawRoseDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"radar":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.radarData=drawRadarDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"arcbar":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.arcbarData=drawArcbarDataPoints(c,l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"gauge":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.gaugeData=drawGaugeDataPoints(d,c,l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"candle":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawCandleDataPoints(c,x,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}if(x){drawLegend(x,l,n,s,l.chartData)}else{drawLegend(l.series,l,n,s,l.chartData)}drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break}}function uChartsEvent(){this.events={}}uChartsEvent.prototype.addEventListener=function(t,e){this.events[t]=this.events[t]||[];this.events[t].push(e)};uChartsEvent.prototype.delEventListener=function(t){this.events[t]=[]};uChartsEvent.prototype.trigger=function(){for(var t=arguments.length,e=Array(t),a=0;a0&&arguments[0]!==undefined?arguments[0]:{};this.opts=assign({},this.opts,t);this.opts.updateData=true;let c=t.scrollPosition||"current";switch(c){case"current":this.opts._scrollDistance_=this.scrollOption.currentOffset;break;case"left":this.opts._scrollDistance_=0;this.scrollOption={currentOffset:0,startTouchX:0,distance:0,lastMoveTime:0};break;case"right":let t=calYAxisData(this.opts.series,this.opts,this.config,this.context),e=t.yAxisWidth;this.config.yAxisWidth=e;let a=0;let i=getXAxisPoints(this.opts.categories,this.opts,this.config),r=i.xAxisPoints,o=i.startX,n=i.endX,l=i.eachSpacing;let s=l*(r.length-1);let h=n-o;a=h-s;this.scrollOption={currentOffset:a,startTouchX:a,distance:0,lastMoveTime:0};this.opts._scrollDistance_=a;break}drawCharts.call(this,this.opts.type,this.opts,this.config,this.context)};uCharts.prototype.zoom=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.opts.xAxis.itemCount;if(this.opts.enableScroll!==true){console.log("[uCharts] 请启用滚动条后使用");return}let e=Math.round(Math.abs(this.scrollOption.currentOffset)/this.opts.chartData.eachSpacing)+Math.round(this.opts.xAxis.itemCount/2);this.opts.animation=false;this.opts.xAxis.itemCount=t.itemCount;let a=calYAxisData(this.opts.series,this.opts,this.config,this.context),i=a.yAxisWidth;this.config.yAxisWidth=i;let r=0;let o=getXAxisPoints(this.opts.categories,this.opts,this.config),h=o.xAxisPoints,c=o.startX,d=o.endX,n=o.eachSpacing;let x=n*e;let l=d-c;let s=l-n*(h.length-1);r=l/2-x;if(r>0){r=0}if(r=this.opts.categories.length?this.opts.categories.length:r;this.opts.animation=false;this.opts.xAxis.itemCount=r;let o=0;let n=getXAxisPoints(this.opts.categories,this.opts,this.config),x=n.xAxisPoints,f=n.startX,p=n.endX,l=n.eachSpacing;let u=l*this.scrollOption.moveCurrent1;let g=p-f;let y=g-l*(x.length-1);o=-u+Math.min(i[0].x,i[1].x)-this.opts.area[3]-l;if(o>0){o=0}if(o1&&arguments[1]!==undefined?arguments[1]:{};var a=null;if(t.changedTouches){a=t.changedTouches[0]}else{a=t.mp.changedTouches[0]}if(a){var i=getTouches(a,this.opts,t);var r=this.getLegendDataIndex(t);if(r>=0){if(this.opts.type=="candle"){this.opts.seriesMA[r].show=!this.opts.seriesMA[r].show}else{this.opts.series[r].show=!this.opts.series[r].show}this.opts.animation=e.animation?true:false;this.opts._scrollDistance_=this.scrollOption.currentOffset;drawCharts.call(this,this.opts.type,this.opts,this.config,this.context)}}};uCharts.prototype.showToolTip=function(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var c=null;if(t.changedTouches){c=t.changedTouches[0]}else{c=t.mp.changedTouches[0]}if(!c){console.log("[uCharts] 未获取到event坐标信息")}var a=getTouches(c,this.opts,t);var d=this.scrollOption.currentOffset;var i=assign({},this.opts,{_scrollDistance_:d,animation:false});if(this.opts.type==="line"||this.opts.type==="area"||this.opts.type==="column"||this.opts.type==="scatter"||this.opts.type==="bubble"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1||o.length>0){var n=getSeriesDataItem(this.opts.series,o,r.group);if(n.length!==0){var l=getToolTipData(n,this.opts,o,r.group,this.opts.categories,e),s=l.textList,h=l.offset;h.y=a.y;i.tooltip={textList:e.textList!==undefined?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o,group:r.group}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="mount"){var o=e.index==undefined?this.getCurrentDataIndex(t).index:e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},i._series_[o]);var s=[{text:e.formatter?e.formatter(n,undefined,o,i):n.name+": "+n.data,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:i.chartData.calPoints[o].x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="bar"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1||o.length>0){var n=getSeriesDataItem(this.opts.series,o,r.group);if(n.length!==0){var l=getToolTipData(n,this.opts,o,r.group,this.opts.categories,e),s=l.textList,h=l.offset;h.x=a.x;i.tooltip={textList:e.textList!==undefined?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="mix"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1){var d=this.scrollOption.currentOffset;var i=assign({},this.opts,{_scrollDistance_:d,animation:false});var n=getSeriesDataItem(this.opts.series,o);if(n.length!==0){var x=getMixToolTipData(n,this.opts,o,this.opts.categories,e),s=x.textList,h=x.offset;h.y=a.y;i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="candle"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1){var d=this.scrollOption.currentOffset;var i=assign({},this.opts,{_scrollDistance_:d,animation:false});var n=getSeriesDataItem(this.opts.series,o);if(n.length!==0){var l=getCandleToolTipData(this.opts.series[0].data,n,this.opts,o,this.opts.categories,this.opts.extra.candle,e),s=l.textList,h=l.offset;h.y=a.y;i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="pie"||this.opts.type==="ring"||this.opts.type==="rose"||this.opts.type==="funnel"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},i._series_[o]);var s=[{text:e.formatter?e.formatter(n,undefined,o,i):n.name+": "+n.data,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="map"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},this.opts.series[o]);n.name=n.properties.name;var s=[{text:e.formatter?e.formatter(n,undefined,o,this.opts):n.name,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}i.updateData=false;drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="word"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},this.opts.series[o]);var s=[{text:e.formatter?e.formatter(n,undefined,o,this.opts):n.name,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}i.updateData=false;drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="radar"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=getSeriesDataItem(this.opts.series,o);if(n.length!==0){var s=n.map(t=>{return{text:e.formatter?e.formatter(t,this.opts.categories[o],o,this.opts):t.name+": "+t.data,color:t.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?t.legendShape:this.opts.extra.tooltip.legendShape}});var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}};uCharts.prototype.translate=function(t){this.scrollOption={currentOffset:t,startTouchX:t,distance:0,lastMoveTime:0};let e=assign({},this.opts,{_scrollDistance_:t,animation:false});drawCharts.call(this,this.opts.type,e,this.config,this.context)};uCharts.prototype.scrollStart=function(t){var e=null;if(t.changedTouches){e=t.changedTouches[0]}else{e=t.mp.changedTouches[0]}var a=getTouches(e,this.opts,t);if(e&&this.opts.enableScroll===true){this.scrollOption.startTouchX=a.x}};uCharts.prototype.scroll=function(t){if(this.scrollOption.lastMoveTime===0){this.scrollOption.lastMoveTime=Date.now()}let e=this.opts.touchMoveLimit||60;let a=Date.now();let i=a-this.scrollOption.lastMoveTime;if(i=0){var o="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];o&&st(t,o,e,i)}else st(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var a=e.button;return null==e.which&&void 0!==a&&gw.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function ht(t,e,i){pw?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function ct(t,e,i){pw?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}function dt(t){return 2===t.which||3===t.which}function ft(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function pt(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function gt(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:mt}}function mt(t){mw(this.event)}function vt(){}function yt(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,o=t;o;){if(o.clipPath&&!o.clipPath.contain(e,i))return!1;o.silent&&(n=!0),o=o.parent}return!n||xw}return!1}function xt(){var t=new bw(6);return _t(t),t}function _t(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function wt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function bt(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t}function St(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t}function Mt(t,e,i){var n=e[0],o=e[2],a=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+r*u,t[1]=-n*u+r*h,t[2]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*a+u*l,t[5]=h*l-u*a,t}function It(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t}function Tt(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}function At(t){var e=xt();return wt(e,t),e}function Dt(t){return t>Iw||t<-Iw}function Ct(t){this._target=t.target,this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null!=t.loop&&t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}function Lt(t){return(t=Math.round(t))<0?0:t>255?255:t}function kt(t){return(t=Math.round(t))<0?0:t>360?360:t}function Pt(t){return t<0?0:t>1?1:t}function Nt(t){return Lt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function Ot(t){return Pt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function Et(t,e,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function Rt(t,e,i){return t+(e-t)*i}function zt(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function Bt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Vt(t,e){Vw&&Bt(Vw,e),Vw=Bw.put(t,Vw||e.slice())}function Gt(t,e){if(t){e=e||[];var i=Bw.get(t);if(i)return Bt(e,i);var n=(t+="").replace(/ /g,"").toLowerCase();if(n in zw)return Bt(e,zw[n]),Vt(t,e),e;if("#"!==n.charAt(0)){var o=n.indexOf("("),a=n.indexOf(")");if(-1!==o&&a+1===n.length){var r=n.substr(0,o),s=n.substr(o+1,a-(o+1)).split(","),l=1;switch(r){case"rgba":if(4!==s.length)return void zt(e,0,0,0,1);l=Ot(s.pop());case"rgb":return 3!==s.length?void zt(e,0,0,0,1):(zt(e,Nt(s[0]),Nt(s[1]),Nt(s[2]),l),Vt(t,e),e);case"hsla":return 4!==s.length?void zt(e,0,0,0,1):(s[3]=Ot(s[3]),Ft(s,e),Vt(t,e),e);case"hsl":return 3!==s.length?void zt(e,0,0,0,1):(Ft(s,e),Vt(t,e),e);default:return}}zt(e,0,0,0,1)}else{if(4===n.length)return(u=parseInt(n.substr(1),16))>=0&&u<=4095?(zt(e,(3840&u)>>4|(3840&u)>>8,240&u|(240&u)>>4,15&u|(15&u)<<4,1),Vt(t,e),e):void zt(e,0,0,0,1);if(7===n.length){var u=parseInt(n.substr(1),16);return u>=0&&u<=16777215?(zt(e,(16711680&u)>>16,(65280&u)>>8,255&u,1),Vt(t,e),e):void zt(e,0,0,0,1)}}}}function Ft(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Ot(t[1]),o=Ot(t[2]),a=o<=.5?o*(n+1):o+n-o*n,r=2*o-a;return e=e||[],zt(e,Lt(255*Et(r,a,i+1/3)),Lt(255*Et(r,a,i)),Lt(255*Et(r,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Wt(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:a===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function Ht(t,e){var i=Gt(t);if(i){for(var n=0;n<3;n++)i[n]=e<0?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,i[n]>255?i[n]=255:t[n]<0&&(i[n]=0);return qt(i,4===i.length?"rgba":"rgb")}}function Zt(t){var e=Gt(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ut(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[];var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=e[o],s=e[a],l=n-o;return i[0]=Lt(Rt(r[0],s[0],l)),i[1]=Lt(Rt(r[1],s[1],l)),i[2]=Lt(Rt(r[2],s[2],l)),i[3]=Pt(Rt(r[3],s[3],l)),i}}function Xt(t,e,i){if(e&&e.length&&t>=0&&t<=1){var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=Gt(e[o]),s=Gt(e[a]),l=n-o,u=qt([Lt(Rt(r[0],s[0],l)),Lt(Rt(r[1],s[1],l)),Lt(Rt(r[2],s[2],l)),Pt(Rt(r[3],s[3],l))],"rgba");return i?{color:u,leftIndex:o,rightIndex:a,value:n}:u}}function jt(t,e,i,n){if(t=Gt(t))return t=Wt(t),null!=e&&(t[0]=kt(e)),null!=i&&(t[1]=Ot(i)),null!=n&&(t[2]=Ot(n)),qt(Ft(t),"rgba")}function Yt(t,e){if((t=Gt(t))&&null!=e)return t[3]=Pt(e),qt(t,"rgba")}function qt(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}function Kt(t,e){return t[e]}function $t(t,e,i){t[e]=i}function Jt(t,e,i){return(e-t)*i+t}function Qt(t,e,i){return i>.5?e:t}function te(t,e,i,n,o){var a=t.length;if(1===o)for(s=0;so)t.length=o;else for(r=n;r=0&&!(m[i]<=e);i--);i=Math.min(i,u-2)}else{for(i=L;ie);i++);i=Math.min(i-1,u-2)}L=i,k=e;var n=m[i+1]-m[i];if(0!==n)if(I=(e-m[i])/n,l)if(A=v[i],T=v[0===i?i:i-1],D=v[i>u-2?u-1:i+1],C=v[i>u-3?u-1:i+2],d)ne(T,A,D,C,I,I*I,I*I*I,r(t,o),g);else{if(f)a=ne(T,A,D,C,I,I*I,I*I*I,P,1),a=re(P);else{if(p)return Qt(A,D,I);a=oe(T,A,D,C,I,I*I,I*I*I)}s(t,o,a)}else if(d)te(v[i],v[i+1],I,r(t,o),g);else{var a;if(f)te(v[i],v[i+1],I,P,1),a=re(P);else{if(p)return Qt(v[i],v[i+1],I);a=Jt(v[i],v[i+1],I)}s(t,o,a)}},ondestroy:i});return e&&"spline"!==e&&(N.easing=e),N}}}function ue(t,e,i,n,o,a,r,s){_(n)?(a=o,o=n,n=0):x(o)?(a=o,o="linear",n=0):x(n)?(a=n,n=0):x(i)?(a=i,i=500):i||(i=500),t.stopAnimation(),he(t,"",t,e,i,n,s);var l=t.animators.slice(),u=l.length;u||a&&a();for(var h=0;h0&&t.animate(e,!1).when(null==o?500:o,s).delay(a||0)}function ce(t,e,i,n){if(e){var o={};o[e]={},o[e][i]=n,t.attr(o)}else t.attr(i,n)}function de(t,e,i,n){i<0&&(t+=i,i=-i),n<0&&(e+=n,n=-n),this.x=t,this.y=e,this.width=i,this.height=n}function fe(t){for(var e=0;t>=eb;)e|=1&t,t>>=1;return t+e}function pe(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o=0;)o++;return o-e}function ge(t,e,i){for(i--;e>>1])<0?l=a:s=a+1;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=r}}function ve(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])>0){for(s=n-o;l0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}else{for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r>>1);a(t,e[i+h])>0?r=h+1:l=h}return l}function ye(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l=0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}for(r++;r>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function xe(t,e){function i(i){var s=a[i],u=r[i],h=a[i+1],c=r[i+1];r[i]=u+c,i===l-3&&(a[i+1]=a[i+2],r[i+1]=r[i+2]),l--;var d=ye(t[h],t,s,u,0,e);s+=d,0!==(u-=d)&&0!==(c=ve(t[s+u-1],t,h,c,c-1,e))&&(u<=c?n(s,u,h,c):o(s,u,h,c))}function n(i,n,o,a){var r=0;for(r=0;r=ib||f>=ib);if(p)break;g<0&&(g=0),g+=2}if((s=g)<1&&(s=1),1===n){for(r=0;r=0;r--)t[f+r]=t[d+r];if(0===n){v=!0;break}}if(t[c--]=u[h--],1==--a){v=!0;break}if(0!=(m=a-ve(t[l],u,0,a,a-1,e))){for(a-=m,f=(c-=m)+1,d=(h-=m)+1,r=0;r=ib||m>=ib);if(v)break;p<0&&(p=0),p+=2}if((s=p)<1&&(s=1),1===a){for(f=(c-=n)+1,d=(l-=n)+1,r=n-1;r>=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else{if(0===a)throw new Error;for(d=c-(a-1),r=0;r=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else for(d=c-(a-1),r=0;r1;){var t=l-2;if(t>=1&&r[t-1]<=r[t]+r[t+1]||t>=2&&r[t-2]<=r[t]+r[t-1])r[t-1]r[t+1])break;i(t)}},this.forceMergeRuns=function(){for(;l>1;){var t=l-2;t>0&&r[t-1]s&&(l=s),me(t,i,i+l,i+a,e),a=l}r.pushRun(i,a),r.mergeRuns(),o-=a,i+=a}while(0!==o);r.forceMergeRuns()}}function we(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function be(t,e,i){var n=null==e.x?0:e.x,o=null==e.x2?1:e.x2,a=null==e.y?0:e.y,r=null==e.y2?0:e.y2;return e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y),n=isNaN(n)?0:n,o=isNaN(o)?1:o,a=isNaN(a)?0:a,r=isNaN(r)?0:r,t.createLinearGradient(n,a,o,r)}function Se(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(r=r*n+i.x,s=s*o+i.y,l*=a),t.createRadialGradient(r,s,0,r,s,l)}function Me(){return!1}function Ie(t,e,i){var n=iw(),o=e.getWidth(),a=e.getHeight(),r=n.style;return r&&(r.position="absolute",r.left=0,r.top=0,r.width=o+"px",r.height=a+"px",n.setAttribute("data-zr-dom-id",t)),n.width=o*i,n.height=a*i,n}function Te(t){if("string"==typeof t){var e=mb.get(t);return e&&e.image}return t}function Ae(t,e,i,n,o){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!i)return e;var a=mb.get(t),r={hostEl:i,cb:n,cbPayload:o};return a?!Ce(e=a.image)&&a.pending.push(r):((e=new Image).onload=e.onerror=De,mb.put(t,e.__cachedImgObj={image:e,pending:[r]}),e.src=e.__zrImageSrc=t),e}return t}return e}function De(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;exb&&(yb=0,vb={}),yb++,vb[i]=o,o}function ke(t,e,i,n,o,a,r,s){return r?Ne(t,e,i,n,o,a,r,s):Pe(t,e,i,n,o,a,s)}function Pe(t,e,i,n,o,a,r){var s=He(t,e,o,a,r),l=Le(t,e);o&&(l+=o[1]+o[3]);var u=s.outerHeight,h=new de(Oe(0,l,i),Ee(0,u,n),l,u);return h.lineHeight=s.lineHeight,h}function Ne(t,e,i,n,o,a,r,s){var l=Ze(t,{rich:r,truncate:s,font:e,textAlign:i,textPadding:o,textLineHeight:a}),u=l.outerWidth,h=l.outerHeight;return new de(Oe(0,u,i),Ee(0,h,n),u,h)}function Oe(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function Ee(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function Re(t,e,i){var n=e.x,o=e.y,a=e.height,r=e.width,s=a/2,l="left",u="top";switch(t){case"left":n-=i,o+=s,l="right",u="middle";break;case"right":n+=i+r,o+=s,u="middle";break;case"top":n+=r/2,o-=i,l="center",u="bottom";break;case"bottom":n+=r/2,o+=a+i,l="center";break;case"inside":n+=r/2,o+=s,l="center",u="middle";break;case"insideLeft":n+=i,o+=s,u="middle";break;case"insideRight":n+=r-i,o+=s,l="right",u="middle";break;case"insideTop":n+=r/2,o+=i,l="center";break;case"insideBottom":n+=r/2,o+=a-i,l="center",u="bottom";break;case"insideTopLeft":n+=i,o+=i;break;case"insideTopRight":n+=r-i,o+=i,l="right";break;case"insideBottomLeft":n+=i,o+=a-i,u="bottom";break;case"insideBottomRight":n+=r-i,o+=a-i,l="right",u="bottom"}return{x:n,y:o,textAlign:l,textVerticalAlign:u}}function ze(t,e,i,n,o){if(!e)return"";var a=(t+"").split("\n");o=Be(e,i,n,o);for(var r=0,s=a.length;r=r;l++)s-=r;var u=Le(i,e);return u>s&&(i="",u=0),s=t-u,n.ellipsis=i,n.ellipsisWidth=u,n.contentWidth=s,n.containerWidth=t,n}function Ve(t,e){var i=e.containerWidth,n=e.font,o=e.contentWidth;if(!i)return"";var a=Le(t,n);if(a<=i)return t;for(var r=0;;r++){if(a<=o||r>=e.maxIterations){t+=e.ellipsis;break}var s=0===r?Ge(t,o,e.ascCharWidth,e.cnCharWidth):a>0?Math.floor(t.length*o/a):0;a=Le(t=t.substr(0,s),n)}return""===t&&(t=e.placeholder),t}function Ge(t,e,i,n){for(var o=0,a=0,r=t.length;au)t="",r=[];else if(null!=h)for(var c=Be(h-(i?i[1]+i[3]:0),e,o.ellipsis,{minChar:o.minChar,placeholder:o.placeholder}),d=0,f=r.length;do&&Ue(i,t.substring(o,a)),Ue(i,n[2],n[1]),o=_b.lastIndex}of)return{lines:[],width:0,height:0};k.textWidth=Le(k.text,_);var b=y.textWidth,S=null==b||"auto"===b;if("string"==typeof b&&"%"===b.charAt(b.length-1))k.percentWidth=b,u.push(k),b=0;else{if(S){b=k.textWidth;var M=y.textBackgroundColor,I=M&&M.image;I&&Ce(I=Te(I))&&(b=Math.max(b,I.width*w/I.height))}var T=x?x[1]+x[3]:0;b+=T;var C=null!=d?d-m:null;null!=C&&Cl&&(i*=l/(c=i+n),n*=l/c),o+a>l&&(o*=l/(c=o+a),a*=l/c),n+o>u&&(n*=u/(c=n+o),o*=u/c),i+a>u&&(i*=u/(c=i+a),a*=u/c),t.moveTo(r+i,s),t.lineTo(r+l-n,s),0!==n&&t.arc(r+l-n,s+n,n,-Math.PI/2,0),t.lineTo(r+l,s+u-o),0!==o&&t.arc(r+l-o,s+u-o,o,0,Math.PI/2),t.lineTo(r+a,s+u),0!==a&&t.arc(r+a,s+u-a,a,Math.PI/2,Math.PI),t.lineTo(r,s+i),0!==i&&t.arc(r+i,s+i,i,Math.PI,1.5*Math.PI)}function Ye(t){return qe(t),d(t.rich,qe),t}function qe(t){if(t){t.font=Xe(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Mb[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||Ib[i]?i:"top",t.textPadding&&(t.textPadding=L(t.textPadding))}}function Ke(t,e,i,n,o,a){n.rich?Je(t,e,i,n,o,a):$e(t,e,i,n,o,a)}function $e(t,e,i,n,o,a){var r,s=ii(n),l=!1,u=e.__attrCachedBy===rb.PLAIN_TEXT;a!==sb?(a&&(r=a.style,l=!s&&u&&r),e.__attrCachedBy=s?rb.NONE:rb.PLAIN_TEXT):u&&(e.__attrCachedBy=rb.NONE);var h=n.font||Sb;l&&h===(r.font||Sb)||(e.font=h);var c=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,c=t.__computedFont=e.font);var d=n.textPadding,f=n.textLineHeight,p=t.__textCotentBlock;p&&!t.__dirtyText||(p=t.__textCotentBlock=He(i,c,d,f,n.truncate));var g=p.outerHeight,m=p.lines,v=p.lineHeight,y=ai(g,n,o),x=y.baseX,_=y.baseY,w=y.textAlign||"left",b=y.textVerticalAlign;ti(e,n,o,x,_);var S=Ee(_,g,b),M=x,I=S;if(s||d){var T=Le(i,c);d&&(T+=d[1]+d[3]);var A=Oe(x,T,w);s&&ni(t,e,n,A,S,T,g),d&&(M=hi(x,w,d),I+=d[0])}e.textAlign=w,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(B=0;B=0&&"right"===(_=b[C]).textAlign;)ei(t,e,_,n,M,v,D,"right"),I-=_.width,D-=_.width,C--;for(A+=(a-(A-m)-(y-D)-I)/2;T<=C;)ei(t,e,_=b[T],n,M,v,A+_.width/2,"center"),A+=_.width,T++;v+=M}}function ti(t,e,i,n,o){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,o=i.height/2+i.y):a&&(n=a[0]+i.x,o=a[1]+i.y),t.translate(n,o),t.rotate(-e.textRotation),t.translate(-n,-o)}}function ei(t,e,i,n,o,a,r,s){var l=n.rich[i.styleName]||{};l.text=i.text;var u=i.textVerticalAlign,h=a+o/2;"top"===u?h=a+i.height/2:"bottom"===u&&(h=a+o-i.height/2),!i.isLineHolder&&ii(l)&&ni(t,e,l,"right"===s?r-i.width:"center"===s?r-i.width/2:r,h-i.height/2,i.width,i.height);var c=i.textPadding;c&&(r=hi(r,s,c),h-=i.height/2-c[2]-i.textHeight/2),ri(e,"shadowBlur",D(l.textShadowBlur,n.textShadowBlur,0)),ri(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),ri(e,"shadowOffsetX",D(l.textShadowOffsetX,n.textShadowOffsetX,0)),ri(e,"shadowOffsetY",D(l.textShadowOffsetY,n.textShadowOffsetY,0)),ri(e,"textAlign",s),ri(e,"textBaseline","middle"),ri(e,"font",i.font||Sb);var d=si(l.textStroke||n.textStroke,p),f=li(l.textFill||n.textFill),p=A(l.textStrokeWidth,n.textStrokeWidth);d&&(ri(e,"lineWidth",p),ri(e,"strokeStyle",d),e.strokeText(i.text,r,h)),f&&(ri(e,"fillStyle",f),e.fillText(i.text,r,h))}function ii(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function ni(t,e,i,n,o,a,r){var s=i.textBackgroundColor,l=i.textBorderWidth,u=i.textBorderColor,h=_(s);if(ri(e,"shadowBlur",i.textBoxShadowBlur||0),ri(e,"shadowColor",i.textBoxShadowColor||"transparent"),ri(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),ri(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=i.textBorderRadius;c?je(e,{x:n,y:o,width:a,height:r,r:c}):e.rect(n,o,a,r),e.closePath()}if(h)if(ri(e,"fillStyle",s),null!=i.fillOpacity){f=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=f}else e.fill();else if(w(s)){var d=s.image;(d=Ae(d,null,t,oi,s))&&Ce(d)&&e.drawImage(d,n,o,a,r)}if(l&&u)if(ri(e,"lineWidth",l),ri(e,"strokeStyle",u),null!=i.strokeOpacity){var f=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=f}else e.stroke()}function oi(t,e){e.image=t}function ai(t,e,i){var n=e.x||0,o=e.y||0,a=e.textAlign,r=e.textVerticalAlign;if(i){var s=e.textPosition;if(s instanceof Array)n=i.x+ui(s[0],i.width),o=i.y+ui(s[1],i.height);else{var l=Re(s,i,e.textDistance);n=l.x,o=l.y,a=a||l.textAlign,r=r||l.textVerticalAlign}var u=e.textOffset;u&&(n+=u[0],o+=u[1])}return{baseX:n,baseY:o,textAlign:a,textVerticalAlign:r}}function ri(t,e,i){return t[e]=ab(t,e,i),t[e]}function si(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function li(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function ui(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function hi(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function ci(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function di(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new ub(t.style,this),this._rect=null,this.__clipPaths=[]}function fi(t){di.call(this,t)}function pi(t){return parseInt(t,10)}function gi(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function mi(t,e,i){return Cb.copy(t.getBoundingRect()),t.transform&&Cb.applyTransform(t.transform),Lb.width=e,Lb.height=i,!Cb.intersect(Lb)}function vi(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i=i.length&&i.push({option:t})}}),i}function Ni(t){var e=R();Zb(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),Zb(t,function(t,i){var n=t.option;k(!n||null==n.id||!e.get(n.id)||e.get(n.id)===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&e.set(n.id,t),!t.keyInfo&&(t.keyInfo={})}),Zb(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(Ub(o)){if(a.name=null!=o.name?o.name+"":n?n.name:jb+i,n)a.id=n.id;else if(null!=o.id)a.id=o.id+"";else{var r=0;do{a.id="\0"+a.name+"\0"+r++}while(e.get(a.id))}e.set(a.id,t)}})}function Oi(t){var e=t.name;return!(!e||!e.indexOf(jb))}function Ei(t){return Ub(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Ri(t,e){function i(t,e,i){for(var n=0,o=t.length;n-rS&&trS||t<-rS}function tn(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function en(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function nn(t,e,i,n,o,a){var r=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),u=t-o,h=s*s-3*r*l,c=s*l-9*r*u,d=l*l-3*s*u,f=0;if(Ji(h)&&Ji(c))Ji(s)?a[0]=0:(M=-l/s)>=0&&M<=1&&(a[f++]=M);else{var p=c*c-4*h*d;if(Ji(p)){var g=c/h,m=-g/2;(M=-s/r+g)>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m)}else if(p>0){var v=aS(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);(M=(-s-((y=y<0?-oS(-y,uS):oS(y,uS))+(x=x<0?-oS(-x,uS):oS(x,uS))))/(3*r))>=0&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*aS(h*h*h)),w=Math.acos(_)/3,b=aS(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),m=(-s+b*(S+lS*Math.sin(w)))/(3*r),I=(-s+b*(S-lS*Math.sin(w)))/(3*r);M>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m),I>=0&&I<=1&&(a[f++]=I)}}return f}function on(t,e,i,n,o){var a=6*i-12*e+6*t,r=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if(Ji(r))Qi(a)&&(c=-s/a)>=0&&c<=1&&(o[l++]=c);else{var u=a*a-4*r*s;if(Ji(u))o[0]=-a/(2*r);else if(u>0){var h=aS(u),c=(-a+h)/(2*r),d=(-a-h)/(2*r);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function an(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,h=(l-s)*o+s,c=(h-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=c,a[4]=c,a[5]=h,a[6]=l,a[7]=n}function rn(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;hS[0]=l,hS[1]=u;for(var y=0;y<1;y+=.05)cS[0]=tn(t,i,o,r,y),cS[1]=tn(e,n,a,s,y),(p=hw(hS,cS))=0&&p=0&&c<=1&&(o[l++]=c);else{var u=r*r-4*a*s;if(Ji(u))(c=-r/(2*a))>=0&&c<=1&&(o[l++]=c);else if(u>0){var h=aS(u),c=(-r+h)/(2*a),d=(-r-h)/(2*a);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function hn(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function cn(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}function dn(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;hS[0]=r,hS[1]=s;for(var d=0;d<1;d+=.05)cS[0]=sn(t,i,o,d),cS[1]=sn(e,n,a,d),(m=hw(hS,cS))=0&&m1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(yS[0]=mS(o)*i+t,yS[1]=gS(o)*n+e,xS[0]=mS(a)*i+t,xS[1]=gS(a)*n+e,u(s,yS,xS),h(l,yS,xS),(o%=vS)<0&&(o+=vS),(a%=vS)<0&&(a+=vS),o>a&&!r?a+=vS:oo&&(_S[0]=mS(f)*i+t,_S[1]=gS(f)*n+e,u(s,_S,s),h(l,_S,l))}function yn(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0,u=t;if(r>e+s&&r>n+s||rt+s&&a>i+s||ae+c&&h>n+c&&h>a+c&&h>s+c||ht+c&&u>i+c&&u>o+c&&u>r+c||ue+u&&l>n+u&&l>a+u||lt+u&&s>i+u&&s>o+u||si||h+uo&&(o+=zS);var d=Math.atan2(l,s);return d<0&&(d+=zS),d>=n&&d<=o||d+zS>=n&&d+zS<=o}function Sn(t,e,i,n,o,a){if(a>e&&a>n||ao?r:0}function Mn(t,e){return Math.abs(t-e)e&&u>n&&u>a&&u>s||u1&&In(),c=tn(e,n,a,s,WS[0]),p>1&&(d=tn(e,n,a,s,WS[1]))),2===p?me&&s>n&&s>a||s=0&&u<=1){for(var h=0,c=sn(e,n,a,u),d=0;di||s<-i)return 0;u=Math.sqrt(i*i-s*s);FS[0]=-u,FS[1]=u;var l=Math.abs(n-o);if(l<1e-4)return 0;if(l%VS<1e-4){n=0,o=VS;p=a?1:-1;return r>=FS[0]+t&&r<=FS[1]+t?p:0}if(a){var u=n;n=wn(o),o=wn(u)}else n=wn(n),o=wn(o);n>o&&(o+=VS);for(var h=0,c=0;c<2;c++){var d=FS[c];if(d+t>r){var f=Math.atan2(s,d),p=a?1:-1;f<0&&(f=VS+f),(f>=n&&f<=o||f+VS>=n&&f+VS<=o)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function Cn(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h1&&(i||(a+=Sn(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case BS.M:r=l=t[h++],s=u=t[h++];break;case BS.L:if(i){if(yn(r,s,t[h],t[h+1],e,n,o))return!0}else a+=Sn(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.C:if(i){if(xn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=Tn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.Q:if(i){if(_n(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=An(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.A:var d=t[h++],f=t[h++],p=t[h++],g=t[h++],m=t[h++],v=t[h++];h+=1;var y=1-t[h++],x=Math.cos(m)*p+d,_=Math.sin(m)*g+f;h>1?a+=Sn(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(bn(d,f,g,m,m+v,y,e,w,o))return!0}else a+=Dn(d,f,g,m,m+v,y,w,o);r=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case BS.R:l=r=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(i){if(yn(l,u,x,u,e,n,o)||yn(x,u,x,_,e,n,o)||yn(x,_,l,_,e,n,o)||yn(l,_,l,u,e,n,o))return!0}else a+=Sn(x,u,x,_,n,o),a+=Sn(l,_,l,u,n,o);break;case BS.Z:if(i){if(yn(r,s,l,u,e,n,o))return!0}else a+=Sn(r,s,l,u,n,o);r=l,s=u}}return i||Mn(s,u)||(a+=Sn(r,s,l,u,n,o)||0),0!==a}function Ln(t,e,i){return Cn(t,0,!1,e,i)}function kn(t,e,i,n){return Cn(t,e,!0,i,n)}function Pn(t){di.call(this,t),this.path=null}function Nn(t,e,i,n,o,a,r,s,l,u,h){var c=l*(tM/180),d=QS(c)*(t-i)/2+JS(c)*(e-n)/2,f=-1*JS(c)*(t-i)/2+QS(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);p>1&&(r*=$S(p),s*=$S(p));var g=(o===a?-1:1)*$S((r*r*(s*s)-r*r*(f*f)-s*s*(d*d))/(r*r*(f*f)+s*s*(d*d)))||0,m=g*r*f/s,v=g*-s*d/r,y=(t+i)/2+QS(c)*m-JS(c)*v,x=(e+n)/2+JS(c)*m+QS(c)*v,_=nM([1,0],[(d-m)/r,(f-v)/s]),w=[(d-m)/r,(f-v)/s],b=[(-1*d-m)/r,(-1*f-v)/s],S=nM(w,b);iM(w,b)<=-1&&(S=tM),iM(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*tM),1===a&&S<0&&(S+=2*tM),h.addData(u,y,x,r,s,_,S,c,a)}function On(t){if(!t)return new ES;for(var e,i=0,n=0,o=i,a=n,r=new ES,s=ES.CMD,l=t.match(oM),u=0;u=2){if(o&&"spline"!==o){var a=fM(n,o,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var r=n.length,s=0;s<(i?r:r-1);s++){var l=a[2*s],u=a[2*s+1],h=n[(s+1)%r];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===o&&(n=dM(n,i)),t.moveTo(n[0][0],n[0][1]);for(var s=1,c=n.length;s=0)?(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))):null!=a&&(i={textFill:null},t.textFill=a),i&&(t.insideRollback=i)}}function bo(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function So(t,e){var i=e||e.getModel("textStyle");return P([t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" "))}function Mo(t,e,i,n,o,a){if("function"==typeof o&&(a=o,o=null),n&&n.isAnimationEnabled()){var r=t?"Update":"",s=n.getShallow("animationDuration"+r),l=n.getShallow("animationEasing"+r),u=n.getShallow("animationDelay"+r);"function"==typeof u&&(u=u(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof s&&(s=s(o)),s>0?e.animateTo(i,s,u||0,l,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function Io(t,e,i,n,o){Mo(!0,t,e,i,n,o)}function To(t,e,i,n,o){Mo(!1,t,e,i,n,o)}function Ao(t,e){for(var i=_t([]);t&&t!==e;)bt(i,t.getLocalTransform(),i),t=t.parent;return i}function Do(t,e,i){return e&&!c(e)&&(e=Tw.getLocalTransform(e)),i&&(e=Tt([],e)),Q([],t,e)}function Co(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=Do(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Lo(t,e,i,n){function o(t){var e={position:F(t.position),rotation:t.rotation};return t.shape&&(e.shape=a({},t.shape)),e}if(t&&e){var r=function(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=r[t.anid];if(e){var n=o(t);t.attr(o(e)),Io(t,n,i,t.dataIndex)}}})}}function ko(t,e){return f(t,function(t){var i=t[0];i=LM(i,e.x),i=kM(i,e.x+e.width);var n=t[1];return n=LM(n,e.y),n=kM(n,e.y+e.height),[i,n]})}function Po(t,e,i){var n=(e=a({rectHover:!0},e)).style={strokeNoScale:!0};if(i=i||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(n.image=t.slice(8),r(n,i),new fi(e)):Xn(t.replace("path://",""),e,i,"center")}function No(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function Oo(t,e,i){for(var n=0;n0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]}function Vo(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?zo(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Go(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Fo(t){return t.sort(function(t,e){return t-e}),t}function Wo(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Ho(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var o=e.indexOf(".");return o<0?0:e.length-1-o}function Zo(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20}function Uo(t,e,i){if(!t[e])return 0;var n=p(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var o=Math.pow(10,i),a=f(t,function(t){return(isNaN(t)?0:t)/n*o*100}),r=100*o,s=f(a,function(t){return Math.floor(t)}),l=p(s,function(t,e){return t+e},0),u=f(a,function(t,e){return t-s[e]});lh&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/o}function Xo(t){var e=2*Math.PI;return(t%e+e)%e}function jo(t){return t>-UM&&t=-20?+t.toFixed(n<0?-n:0):t}function Jo(t){function e(t,i,n){return t.interval[n]=0}function ta(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function ea(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}function ia(t){return null==t?"":(t+"").replace(KM,function(t,e){return $M[e]})}function na(t,e,i){y(e)||(e=[e]);var n=e.length;if(!n)return"";for(var o=e[0].$vars||[],a=0;a':'':{renderMode:o,content:"{marker"+a+"|} ",style:{color:i}}:""}function ra(t,e){return t+="","0000".substr(0,e-t.length)+t}function sa(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Yo(e),o=i?"UTC":"",a=n["get"+o+"FullYear"](),r=n["get"+o+"Month"]()+1,s=n["get"+o+"Date"](),l=n["get"+o+"Hours"](),u=n["get"+o+"Minutes"](),h=n["get"+o+"Seconds"](),c=n["get"+o+"Milliseconds"]();return t=t.replace("MM",ra(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",ra(s,2)).replace("d",s).replace("hh",ra(l,2)).replace("h",l).replace("mm",ra(u,2)).replace("m",u).replace("ss",ra(h,2)).replace("s",h).replace("SSS",ra(c,3))}function la(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function ua(t,e,i,n,o){var a=0,r=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);(h=a+m)>n||l.newline?(a=0,h=m,r+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(c=r+v)>o||l.newline?(a+=s+i,r=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=r,"horizontal"===t?a=h+i:r=c+i)})}function ha(t,e,i){var n=e.width,o=e.height,a=Vo(t.x,n),r=Vo(t.y,o),s=Vo(t.x2,n),l=Vo(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=o),i=qM(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}function ca(t,e,i){i=qM(i||0);var n=e.width,o=e.height,a=Vo(t.left,n),r=Vo(t.top,o),s=Vo(t.right,n),l=Vo(t.bottom,o),u=Vo(t.width,n),h=Vo(t.height,o),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-a),isNaN(h)&&(h=o-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(f>n/o?u=.8*n:h=.8*o),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(a)&&(a=n-s-u-d),isNaN(r)&&(r=o-l-h-c),t.left||t.right){case"center":a=n/2-u/2-i[3];break;case"right":a=n-u-d}switch(t.top||t.bottom){case"middle":case"center":r=o/2-h/2-i[0];break;case"bottom":r=o-h-c}a=a||0,r=r||0,isNaN(u)&&(u=n-d-a-(s||0)),isNaN(h)&&(h=o-c-r-(l||0));var p=new de(a+i[3],r+i[0],u,h);return p.margin=i,p}function da(t,e,i,n,o){var a=!o||!o.hv||o.hv[0],s=!o||!o.hv||o.hv[1],l=o&&o.boundingMode||"all";if(a||s){var u;if("raw"===l)u="group"===t.type?new de(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(u=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(u=u.clone()).applyTransform(h)}e=ca(r({width:u.width,height:u.height},e),i,n);var c=t.position,d=a?e.x-u.x:0,f=s?e.y-u.y:0;t.attr("position","raw"===l?[d,f]:[c[0]+d,c[1]+f])}}function fa(t,e){return null!=t[oI[e][0]]||null!=t[oI[e][1]]&&null!=t[oI[e][2]]}function pa(t,e,i){function n(i,n){var r={},l=0,u={},h=0;if(iI(i,function(e){u[e]=t[e]}),iI(i,function(t){o(e,t)&&(r[t]=u[t]=e[t]),a(r,t)&&l++,a(u,t)&&h++}),s[n])return a(e,i[1])?u[i[2]]=null:a(e,i[2])&&(u[i[1]]=null),u;if(2!==h&&l){if(l>=2)return r;for(var c=0;ce)return t[n];return t[i-1]}function ya(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:R(),categoryAxisMap:R()},n=fI[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}function xa(t){return"category"===t.get("type")}function _a(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===vI?{}:[]),this.sourceFormat=t.sourceFormat||yI,this.seriesLayoutBy=t.seriesLayoutBy||_I,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&R(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function wa(t){var e=t.option.source,i=yI;if(S(e))i=xI;else if(y(e)){0===e.length&&(i=gI);for(var n=0,o=e.length;n=e:"max"===i?t<=e:t===e}function Xa(t,e){return t.join(",")===e.join(",")}function ja(t,e){AI(e=e||{},function(e,i){if(null!=e){var n=t[i];if(lI.hasClass(i)){e=Di(e);var o=Pi(n=Di(n),e);t[i]=CI(o,function(t){return t.option&&t.exist?LI(t.exist,t.option,!0):t.exist||t.option})}else t[i]=LI(n,e,!0)}})}function Ya(t){var e=t&&t.itemStyle;if(e)for(var i=0,o=OI.length;i=0;p--){var g=t[p];if(s||(d=g.data.rawIndexOf(g.stackedByDimension,c)),d>=0){var m=g.data.getByRawIndex(g.stackResultDimension,d);if(h>=0&&m>0||h<=0&&m<0){h+=m,f=m;break}}}return n[0]=h,n[1]=f,n});r.hostModel.setData(l),e.data=l})}function rr(t,e){_a.isInstance(t)||(t=_a.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===xI&&(this._offset=0,this._dimSize=e,this._data=i),a(this,GI[n===gI?n+"_"+t.seriesLayoutBy:n])}function sr(){return this._data.length}function lr(t){return this._data[t]}function ur(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Mr(t,e){d(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,v(Ir,e))})}function Ir(t){var e=Tr(t);e&&e.setOutputEnd(this.count())}function Tr(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var o=n.agentStubMap;o&&(n=o.get(t.uid))}return n}}function Ar(){this.group=new tb,this.uid=Ro("viewChart"),this.renderTask=gr({plan:Lr,reset:kr}),this.renderTask.context={view:this}}function Dr(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i=0?n():c=setTimeout(n,-a),u=o};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){l=t},d}function Nr(t,e,i,n){var o=t[e];if(o){var a=o[iT]||o,r=o[oT];if(o[nT]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=Pr(a,i,"debounce"===n))[iT]=a,o[oT]=n,o[nT]=i}return o}}function Or(t,e){var i=t[e];i&&i[iT]&&(t[e]=i[iT])}function Er(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;var i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=R()}function Rr(t,e,i,n,o){function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}o=o||{};var r;d(e,function(e,s){if(!o.visualType||o.visualType===e.visualType){var l=t._stageTaskMap.get(e.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,d=h.agentStubMap;d.each(function(t){a(o,t)&&(t.dirty(),c=!0)}),c&&h.dirty(),hT(h,n);var f=t.getPerformArgs(h,o.block);d.each(function(t){t.perform(f)}),r|=h.perform(f)}else u&&u.each(function(s,l){a(o,s)&&s.dirty();var u=t.getPerformArgs(s,o.block);u.skip=!e.performRawSeries&&i.isSeriesFiltered(s.context.model),hT(s,n),r|=s.perform(u)})}}),t.unfinished|=r}function zr(t,e,i,n,o){function a(i){var a=i.uid,s=r.get(a)||r.set(a,gr({plan:Hr,reset:Zr,count:Xr}));s.context={model:i,ecModel:n,api:o,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},jr(t,i,s)}var r=i.seriesTaskMap||(i.seriesTaskMap=R()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(a):s?n.eachRawSeriesByType(s,a):l&&l(n,o).each(a);var u=t._pipelineMap;r.each(function(t,e){u.get(e)||(t.dispose(),r.removeKey(e))})}function Br(t,e,i,n,o){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,gr({reset:Gr,onDirty:Wr})),r.dirty()),n.context={model:e,overallProgress:h,modifyOutputEnd:c},n.agent=r,n.__block=h,jr(t,e,n)}var r=i.overallTask=i.overallTask||gr({reset:Vr});r.context={ecModel:n,api:o,overallReset:e.overallReset,scheduler:t};var s=r.agentStubMap=r.agentStubMap||R(),l=e.seriesType,u=e.getTargetSeries,h=!0,c=e.modifyOutputEnd;l?n.eachRawSeriesByType(l,a):u?u(n,o).each(a):(h=!1,d(n.getSeries(),a));var f=t._pipelineMap;s.each(function(t,e){f.get(e)||(t.dispose(),r.dirty(),s.removeKey(e))})}function Vr(t){t.overallReset(t.ecModel,t.api,t.payload)}function Gr(t,e){return t.overallProgress&&Fr}function Fr(){this.agent.dirty(),this.getDownstream().dirty()}function Wr(){this.agent&&this.agent.dirty()}function Hr(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Zr(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Di(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?f(e,function(t,e){return Ur(e)}):cT}function Ur(t){return function(e,i){var n=i.data,o=i.resetDefines[t];if(o&&o.dataEach)for(var a=e.start;a0?parseInt(n,10)/100:n?parseFloat(n):0;var o=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,o)}i=i.nextSibling}}function Qr(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),r(e.__inheritedStyle,t.__inheritedStyle))}function ts(t){for(var e=P(t).split(_T),i=[],n=0;n0;a-=2){var r=o[a],s=o[a-1];switch(n=n||xt(),s){case"translate":r=P(r).split(_T),St(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=P(r).split(_T),It(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=P(r).split(_T),Mt(n,n,parseFloat(r[0]));break;case"skew":r=P(r).split(_T),console.warn("Skew transform is not supported yet");break;case"matrix":r=P(r).split(_T);n[0]=parseFloat(r[0]),n[1]=parseFloat(r[1]),n[2]=parseFloat(r[2]),n[3]=parseFloat(r[3]),n[4]=parseFloat(r[4]),n[5]=parseFloat(r[5])}}e.setLocalTransform(n)}}function os(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};TT.lastIndex=0;for(var o;null!=(o=TT.exec(e));)n[o[1]]=o[2];for(var a in ST)ST.hasOwnProperty(a)&&null!=n[a]&&(i[ST[a]]=n[a]);return i}function as(t,e,i){var n=e/t.width,o=i/t.height,a=Math.min(n,o);return{scale:[a,a],position:[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2]}}function rs(t,e){return(new $r).parse(t,e)}function ss(t){return function(e,i,n){e=e&&e.toLowerCase(),fw.prototype[t].call(this,e,i,n)}}function ls(){fw.call(this)}function us(t,e,n){function o(t,e){return t.__prio-e.__prio}n=n||{},"string"==typeof e&&(e=JT[e]),this.id,this.group,this._dom=t;var a=this._zr=Ii(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=Pr(m(a.flush,a),17),(e=i(e))&&BI(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Fa;var r=this._api=As(this);_e($T,o),_e(YT,o),this._scheduler=new Er(this,r,YT,$T),fw.call(this,this._ecEventProcessor=new Ds),this._messageCenter=new ls,this._initEvents(),this.resize=m(this.resize,this),this._pendingActions=[],a.animation.on("frame",this._onframe,this),vs(a,this),N(this)}function hs(t,e,i){var n,o=this._model,a=this._coordSysMgr.getCoordinateSystems();e=Vi(o,e);for(var r=0;re.get("hoverLayerThreshold")&&!U_.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function Is(t,e){var i=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==i&&t.setStyle("blend",i),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",i)})})}function Ts(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function As(t){var e=t._coordSysMgr;return a(new Ga(t),{getCoordinateSystems:m(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function Ds(){this.eventInfo}function Cs(t){function e(t,e){for(var n=0;n65535?dA:pA}function Js(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Qs(t,e){d(gA.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,d(mA,function(n){t[n]=i(e[n])}),t._calculationInfo=a(e._calculationInfo)}function tl(t,e,i,n,o){var a=cA[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length=0?this._indices[t]:-1}function al(t,e){var i=t._idList[e];return null==i&&(i=il(t,t._idDimIdx,e)),null==i&&(i=hA+e),i}function rl(t){return y(t)||(t=[t]),t}function sl(t,e){var i=t.dimensions,n=new vA(f(i,t.getDimensionInfo,t),t.hostModel);Qs(n,t);for(var o=n._storage={},a=t._storage,r=0;r=0?(o[s]=ll(a[s]),n._rawExtent[s]=ul(),n._extent[s]=null):o[s]=a[s])}return n}function ll(t){for(var e=new Array(t.length),i=0;in&&(r=o.interval=n);var s=o.intervalPrecision=Ml(r);return Tl(o.niceTickExtent=[MA(Math.ceil(t[0]/r)*r,s),MA(Math.floor(t[1]/r)*r,s)],t),o}function Ml(t){return Ho(t)+2}function Il(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Tl(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Il(t,0,e),Il(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Al(t,e,i,n){var o=[];if(!t)return o;e[0]1e4)return[];return e[1]>(o.length?o[o.length-1]:i[1])&&o.push(e[1]),o}function Dl(t){return t.get("stack")||AA+t.seriesIndex}function Cl(t){return t.dim+t.index}function Ll(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),o=0;o=0?"p":"n",b=m;p&&(o[r][_]||(o[r][_]={p:m,n:m}),b=o[r][_][w]);var S,M,I,T;if(g)S=b,M=(A=i.dataToPoint([x,_]))[1]+l,I=A[0]-m,T=u,Math.abs(I)a[1]?(n=a[1],o=a[0]):(n=a[0],o=a[1]);var r=e.toGlobalCoord(e.dataToCoord(0));return ro&&(r=o),r}function Vl(t,e){return VA(t,BA(e))}function Gl(t,e){var i,n,o,a=t.type,r=e.getMin(),s=e.getMax(),l=null!=r,u=null!=s,h=t.getExtent();"ordinal"===a?i=e.getCategories().length:(y(n=e.get("boundaryGap"))||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=Vo(n[0],1),n[1]=Vo(n[1],1),o=h[1]-h[0]||Math.abs(h[0])),null==r&&(r="ordinal"===a?i?0:NaN:h[0]-n[0]*o),null==s&&(s="ordinal"===a?i?i-1:NaN:h[1]+n[1]*o),"dataMin"===r?r=h[0]:"function"==typeof r&&(r=r({min:h[0],max:h[1]})),"dataMax"===s?s=h[1]:"function"==typeof s&&(s=s({min:h[0],max:h[1]})),(null==r||!isFinite(r))&&(r=NaN),(null==s||!isFinite(s))&&(s=NaN),t.setBlank(I(r)||I(s)||"ordinal"===a&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(r>0&&s>0&&!l&&(r=0),r<0&&s<0&&!u&&(s=0));var c=e.ecModel;if(c&&"time"===a){var f,p=kl("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=Pl(p),m=Fl(r,s,e,g);r=m.min,s=m.max}}return[r,s]}function Fl(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Ol(n,i.axis);if(void 0===r)return{min:t,max:e};var s=1/0;d(r,function(t){s=Math.min(t.offset,s)});var l=-1/0;d(r,function(t){l=Math.max(t.offset+t.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/a)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}function Wl(t,e){var i=Gl(t,e),n=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var r=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:o,minInterval:"interval"===r||"time"===r?e.get("minInterval"):null,maxInterval:"interval"===r||"time"===r?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)}function Hl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new SA(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new TA;default:return(xl.getClass(e)||TA).create(t)}}function Zl(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function Ul(t){var e=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof e?e=function(e){return function(i){return i=t.scale.getLabel(i),e.replace("{value}",null!=i?i:"")}}(e):"function"==typeof e?function(n,o){return null!=i&&(o=n-i),e(Xl(t,n),o)}:function(e){return t.scale.getLabel(e)}}function Xl(t,e){return"category"===t.type?t.scale.getLabel(e):e}function jl(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,o,a="category"===t.type,r=i.getExtent();o=a?i.count():(n=i.getTicks()).length;var s,l=t.getLabelModel(),u=Ul(t),h=1;o>40&&(h=Math.ceil(o/40));for(var c=0;c>1^-(1&s),l=l>>1^-(1&l),o=s+=o,a=l+=a,n.push([s/i,l/i])}return n}function ou(t){return"category"===t.type?ru(t):uu(t)}function au(t,e){return"category"===t.type?lu(t,e):{ticks:t.scale.getTicks()}}function ru(t){var e=t.getLabelModel(),i=su(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function su(t,e){var i=hu(t,"labels"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;return a=x(n)?vu(t,n):mu(t,r="auto"===n?fu(t):n),du(i,n,{labels:a,labelCategoryInterval:r})}function lu(t,e){var i=hu(t,"ticks"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;if(e.get("show")&&!t.scale.isBlank()||(a=[]),x(n))a=vu(t,n,!0);else if("auto"===n){var s=su(t,t.getLabelModel());r=s.labelCategoryInterval,a=f(s.labels,function(t){return t.tickValue})}else a=mu(t,r=n,!0);return du(i,n,{ticks:a,tickCategoryInterval:r})}function uu(t){var e=t.scale.getTicks(),i=Ul(t);return{labels:f(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function hu(t,e){return nD(t)[e]||(nD(t)[e]=[])}function cu(t,e){for(var i=0;i40&&(s=Math.max(1,Math.floor(r/40)));for(var l=a[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(n)),c=Math.abs(u*Math.sin(n)),d=0,f=0;l<=a[1];l+=s){var p=0,g=0,m=ke(i(l),e.font,"center","top");p=1.3*m.width,g=1.3*m.height,d=Math.max(d,p,7),f=Math.max(f,g,7)}var v=d/h,y=f/c;isNaN(v)&&(v=1/0),isNaN(y)&&(y=1/0);var x=Math.max(0,Math.floor(Math.min(v,y))),_=nD(t.model),w=_.lastAutoInterval,b=_.lastTickCount;return null!=w&&null!=b&&Math.abs(w-x)<=1&&Math.abs(b-r)<=1&&w>x?x=w:(_.lastTickCount=r,_.lastAutoInterval=x),x}function gu(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function mu(t,e,i){function n(t){l.push(i?t:{formattedLabel:o(t),rawLabel:a.getLabel(t),tickValue:t})}var o=Ul(t),a=t.scale,r=a.getExtent(),s=t.getLabelModel(),l=[],u=Math.max((e||0)+1,1),h=r[0],c=a.count();0!==h&&u>1&&c/u>2&&(h=Math.round(Math.ceil(h/u)*u));var d=Kl(t),f=s.get("showMinLabel")||d,p=s.get("showMaxLabel")||d;f&&h!==r[0]&&n(r[0]);for(var g=h;g<=r[1];g+=u)n(g);return p&&g!==r[1]&&n(r[1]),l}function vu(t,e,i){var n=t.scale,o=Ul(t),a=[];return d(n.getTicks(),function(t){var r=n.getLabel(t);e(t,r)&&a.push(i?t:{formattedLabel:o(t),rawLabel:r,tickValue:t})}),a}function yu(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}function xu(t,e,i,n,o){function a(t,e){return h?t>e:t0&&(t.coord-=u/(2*(e+1)))}),s={coord:e[r-1].coord+u},e.push(s)}var h=l[0]>l[1];a(e[0].coord,l[0])&&(o?e[0].coord=l[0]:e.shift()),o&&a(l[0],e[0].coord)&&e.unshift({coord:l[0]}),a(l[1],s.coord)&&(o?s.coord=l[1]:e.pop()),o&&a(s.coord,l[1])&&e.push({coord:l[1]})}}function _u(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return fr(t,e,i[0]);if(n){for(var o=[],a=0;a0?i=n[0]:n[1]<0&&(i=n[1]),i}function Ou(t,e,i,n){var o=NaN;t.stacked&&(o=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(o)&&(o=t.valueStart);var a=t.baseDataOffset,r=[];return r[a]=i.get(t.baseDim,n),r[1-a]=o,e.dataToPoint(r)}function Eu(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}function Ru(t){return isNaN(t[0])||isNaN(t[1])}function zu(t,e,i,n,o,a,r,s,l,u,h){return"none"!==u&&u?Bu.apply(this,arguments):Vu.apply(this,arguments)}function Bu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]);else if(l>0){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;_D(bD,g),bD[m]=g[m]+v,_D(SD,p),SD[m]=p[m]-v,t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Vu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),_D(bD,p);else if(l>0){var g=d+a,m=e[g];if(h)for(;m&&Ru(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||Ru(m))_D(SD,p);else{Ru(m)&&!h&&(m=p),U(wD,m,y);var x,_;if("x"===u||"y"===u){var w="x"===u?0:1;x=Math.abs(p[w]-y[w]),_=Math.abs(p[w]-m[w])}else x=uw(p,y),_=uw(p,m);xD(SD,p,wD,-l*(1-(v=_/(_+x))))}vD(bD,bD,s),yD(bD,bD,r),vD(SD,SD,s),yD(SD,SD,r),t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1]),xD(bD,p,wD,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Gu(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var o=0;on[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}function Fu(t,e){if(t.length===e.length){for(var i=0;ie[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function Zu(t,e,i){if(!i.valueDim)return[];for(var n=[],o=0,a=e.count();oa[1]&&a.reverse();var r=o.getExtent(),s=Math.PI/180;i&&(a[0]-=.5,a[1]+=.5);var l=new hM({shape:{cx:Go(t.cx,1),cy:Go(t.cy,1),r0:Go(a[0],1),r:Go(a[1],1),startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:o.inverse}});return e&&(l.shape.endAngle=-r[0]*s,To(l,{shape:{endAngle:-r[1]*s}},n)),l}function ju(t,e,i,n){return"polar"===t.type?Xu(t,e,i,n):Uu(t,e,i,n)}function Yu(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r=0;a--){var r=i[a].dimension,s=t.dimensions[r],l=t.getDimensionInfo(s);if("x"===(n=l&&l.coordDim)||"y"===n){o=i[a];break}}if(o){var u=e.getAxis(n),h=f(o.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,p=o.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var g=h[0].coord-10,m=h[c-1].coord+10,v=m-g;if(v<.001)return"transparent";d(h,function(t){t.offset=(t.coord-g)/v}),h.push({offset:c?h[c-1].offset:.5,color:p[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:p[0]||"transparent"});var y=new TM(0,0,0,0,h,!0);return y[n]=g,y[n+"2"]=m,y}}}function Ku(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!$u(a,e))){var r=e.mapDimension(a.dim),s={};return d(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function $u(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),r=0;rn)return!1;return!0}function Ju(t){return this._axes[t]}function Qu(t){LD.call(this,t)}function th(t,e){return e.type||(e.data?"category":"value")}function eh(t,e,i){return t.getCoordSysModel()===e}function ih(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function nh(t,e,i,n){function o(t){return t.dim+"_"+t.index}i.getAxesOnZeroOf=function(){return a?[a]:[]};var a,r=t[e],s=i.model,l=s.get("axisLine.onZero"),u=s.get("axisLine.onZeroAxisIndex");if(l){if(null!=u)oh(r[u])&&(a=r[u]);else for(var h in r)if(r.hasOwnProperty(h)&&oh(r[h])&&!n[o(r[h])]){a=r[h];break}a&&(n[o(a)]=!0)}}function oh(t){return t&&"category"!==t.type&&"time"!==t.type&&Zl(t)}function ah(t,e){var i=t.getExtent(),n=i[0]+i[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}function rh(t,e){return f(VD,function(e){return t.getReferringComponents(e)[0]})}function sh(t){return"cartesian2d"===t.get("coordinateSystem")}function lh(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function uh(t,e,i,n){var o,a,r=Xo(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return jo(r-GD/2)?(a=l?"bottom":"top",o="center"):jo(r-1.5*GD)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*GD&&r>GD/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function hh(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function ch(t,e,i){if(!Kl(t.axis)){var n=t.get("axisLabel.showMinLabel"),o=t.get("axisLabel.showMaxLabel");e=e||[],i=i||[];var a=e[0],r=e[1],s=e[e.length-1],l=e[e.length-2],u=i[0],h=i[1],c=i[i.length-1],d=i[i.length-2];!1===n?(dh(a),dh(u)):fh(a,r)&&(n?(dh(r),dh(h)):(dh(a),dh(u))),!1===o?(dh(s),dh(c)):fh(l,s)&&(o?(dh(l),dh(d)):(dh(s),dh(c)))}}function dh(t){t&&(t.ignore=!0)}function fh(t,e,i){var n=t&&t.getBoundingRect().clone(),o=e&&e.getBoundingRect().clone();if(n&&o){var a=_t([]);return Mt(a,a,-t.rotation),n.applyTransform(bt([],a,t.getLocalTransform())),o.applyTransform(bt([],a,e.getLocalTransform())),n.intersect(o)}}function ph(t){return"middle"===t||"center"===t}function gh(t,e,i){var n=e.axis;if(e.get("axisTick.show")&&!n.scale.isBlank()){for(var o=e.getModel("axisTick"),a=o.getModel("lineStyle"),s=o.get("length"),l=n.getTicksCoords(),u=[],h=[],c=t._transform,d=[],f=0;f=0||t===e}function Sh(t){var e=Mh(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=Th(i);null==a&&(o.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r0?"bottom":"top":o.width>0?"left":"right";l||kh(t.style,d,n,u,a,i,p),fo(t,d)}function Rh(t,e){var i=t.get(tC)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function zh(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=new nC({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__valueIdx:a});e.add(r),Bh(r,t,n)}function Bh(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),o=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(o),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}function Vh(t,e,i,n){var o=e.getData(),a=this.dataIndex,r=o.getName(a),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:r,seriesId:e.id}),o.each(function(t){Gh(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Gh(t,e,i,n,o){var a=(e.startAngle+e.endAngle)/2,r=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[r*l,s*l];o?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function Fh(t,e){function i(){a.ignore=a.hoverIgnore,r.ignore=r.hoverIgnore}function n(){a.ignore=a.normalIgnore,r.ignore=r.normalIgnore}tb.call(this);var o=new hM({z2:2}),a=new gM,r=new rM;this.add(o),this.add(a),this.add(r),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function Wh(t,e,i,n,o,a,r){function s(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function l(t,e,i,n,o,a){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s=r&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}t.sort(function(t,e){return t.y-e.y});for(var u,h=0,c=t.length,d=[],f=[],p=0;pe&&a+1t[a].y+t[a].height)return void s(a,n/2);s(i-1,n/2)}(p,c,-u),h=t[p].y+t[p].height;r-h<0&&s(c-1,h-r);for(p=0;p=i?f.push(t[p]):d.push(t[p]);l(d,!1,e,i,n,o),l(f,!0,e,i,n,o)}function Hh(t,e,i,n,o,a){for(var r=[],s=[],l=0;l3?1.4:o>1?1.2:1.1;hc(this,"zoom","zoomOnMouseWheel",t,{scale:n>0?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);hc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(n>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:a,originY:r})}}}function uc(t){ic(this._zr,"globalPan")||hc(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function hc(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(mw(n.event),cc(t,e,i,n,o))}function cc(t,e,i,n,o){o.isAvailableBehavior=m(dc,null,i,n),t.trigger(e,o)}function dc(t,e,i){var n=i[t];return!t||n&&(!_(n)||e.event[n+"Key"])}function fc(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function pc(t,e,i,n){var o=t.target,a=t.zoomLimit,r=o.position,s=o.scale,l=t.zoom=t.zoom||1;if(l*=e,a){var u=a.min||0,h=a.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}function gc(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!RC[n.mainType]&&o&&o.model!==i}function mc(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function vc(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(a){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var r=a.target;!r.__regions;)r=r.parent;if(r){var s={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",batch:f(r.__regions,function(t){return{name:t.name,from:o.uid}})};s[e.mainType+"Id"]=e.id,n.dispatchAction(s),yc(e,i)}}}))}function yc(t,e){e.eachChild(function(e){d(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function xc(t,e){var i=new tb;this.uid=Ro("ec_map_draw"),this._controller=new oc(t.getZr()),this._controllerHost={target:e?i:null},this.group=i,this._updateGroup=e,this._mouseDownFlag,this._mapName,this._initialized,i.add(this._regionsGroup=new tb),i.add(this._backgroundGroup=new tb)}function _c(t){var e=this[zC];e&&e.recordVersion===this[BC]&&wc(e,t)}function wc(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(mo({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=NM):(mo(i.style,n,{text:n.get("show")?r:null,textPosition:n.getShallow("position")||"bottom"},{isRectText:!0,useInsideStyle:!1}),i.dirty(!1),null!=i.__mapOriginalZ2&&(i.z2=i.__mapOriginalZ2,i.__mapOriginalZ2=null))}function bc(t,e,i){var n=t.getZoom(),o=t.getCenter(),a=e.zoom,r=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;o=t.pointToData(r);t.setCenter(o)}if(null!=a){if(i){var s=i.min||0,l=i.max||1/0;a=Math.max(Math.min(n*a,l),s)/n}t.scale[0]*=a,t.scale[1]*=a;var u=t.position,h=(e.originX-u[0])*(a-1),c=(e.originY-u[1])*(a-1);u[0]-=h,u[1]-=c,t.updateTransform();o=t.pointToData(r);t.setCenter(o),t.setZoom(a*n)}return{center:t.getCenter(),zoom:t.getZoom()}}function Sc(){Tw.call(this)}function Mc(t){this.name=t,this.zoomLimit,Tw.call(this),this._roamTransformable=new Sc,this._rawTransformable=new Sc,this._center,this._zoom}function Ic(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function Tc(t,e,i,n){Mc.call(this,t),this.map=e;var o=OC.load(e,i);this._nameCoordMap=o.nameCoordMap,this._regionsMap=o.regionsMap,this._invertLongitute=null==n||n,this.regions=o.regions,this._rect=o.boundingRect}function Ac(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}function Dc(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,r=this.getBoundingRect(),s=t.get("layoutCenter"),l=t.get("layoutSize"),u=e.getWidth(),h=e.getHeight(),c=r.width/r.height*this.aspectScale,d=!1;s&&l&&(s=[Vo(s[0],u),Vo(s[1],h)],l=Vo(l,Math.min(u,h)),isNaN(s[0])||isNaN(s[1])||isNaN(l)||(d=!0));if(d){var f={};c>1?(f.width=l,f.height=l/c):(f.height=l,f.width=l*c),f.y=s[1]-f.height/2,f.x=s[0]-f.width/2}else(a=t.getBoxLayoutParams()).aspect=c,f=ca(a,{width:u,height:h});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function Cc(t,e){d(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}function Lc(t,e){var i={};return d(t,function(t){t.each(t.mapDimension("value"),function(e,n){var o="ec-"+t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(t[0].mapDimension("value"),function(n,o){for(var a="ec-"+t[0].getName(o),r=0,s=1/0,l=-1/0,u=i[a].length,h=0;h=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},n.push(a)}}function Wc(t,e){var i=t.isExpand?t.children:[],n=t.parentNode.children,o=t.hierNode.i?n[t.hierNode.i-1]:null;if(i.length){jc(t);var a=(i[0].hierNode.prelim+i[i.length-1].hierNode.prelim)/2;o?(t.hierNode.prelim=o.hierNode.prelim+e(t,o),t.hierNode.modifier=t.hierNode.prelim-a):t.hierNode.prelim=a}else o&&(t.hierNode.prelim=o.hierNode.prelim+e(t,o));t.parentNode.hierNode.defaultAncestor=Yc(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Hc(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function Zc(t){return arguments.length?t:Qc}function Uc(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Xc(t,e){return ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function jc(t){for(var e=t.children,i=e.length,n=0,o=0;--i>=0;){var a=e[i];a.hierNode.prelim+=n,a.hierNode.modifier+=n,o+=a.hierNode.change,n+=a.hierNode.shift+o}}function Yc(t,e,i,n){if(e){for(var o=t,a=t,r=a.parentNode.children[0],s=e,l=o.hierNode.modifier,u=a.hierNode.modifier,h=r.hierNode.modifier,c=s.hierNode.modifier;s=qc(s),a=Kc(a),s&&a;){o=qc(o),r=Kc(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);d>0&&(Jc($c(s,t,i),t,d),u+=d,l+=d),c+=s.hierNode.modifier,u+=a.hierNode.modifier,l+=o.hierNode.modifier,h+=r.hierNode.modifier}s&&!qc(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!Kc(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}return i}function qc(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function Kc(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function $c(t,e,i){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:i}function Jc(t,e,i){var n=i/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=n,e.hierNode.shift+=i,e.hierNode.modifier+=i,e.hierNode.prelim+=i,t.hierNode.change+=n}function Qc(t,e){return t.parentNode===e.parentNode?1:2}function td(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function ed(t,e,i){return i.itemModel=e,i.itemStyle=e.getModel("itemStyle").getItemStyle(),i.hoverItemStyle=e.getModel("emphasis.itemStyle").getItemStyle(),i.lineStyle=e.getModel("lineStyle").getLineStyle(),i.labelModel=e.getModel("label"),i.hoverLabelModel=e.getModel("emphasis.label"),!1===t.isExpand&&0!==t.children.length?i.symbolInnerColor=i.itemStyle.fill:i.symbolInnerColor="#fff",i}function id(t,e,i,n,o,a){var s=!i,l=t.tree.getNodeByDataIndex(e),a=ed(l,l.getModel(),a),u=t.tree.root,h=l.parentNode===u?l:l.parentNode||l,c=t.getItemGraphicEl(h.dataIndex),d=h.getLayout(),f=c?{x:c.position[0],y:c.position[1],rawX:c.__radialOldRawX,rawY:c.__radialOldRawY}:d,p=l.getLayout();s?(i=new wu(t,e,a)).attr("position",[f.x,f.y]):i.updateData(t,e,a),i.__radialOldRawX=i.__radialRawX,i.__radialOldRawY=i.__radialRawY,i.__radialRawX=p.rawX,i.__radialRawY=p.rawY,n.add(i),t.setItemGraphicEl(e,i),Io(i,{position:[p.x,p.y]},o);var g=i.getSymbolPath();if("radial"===a.layout){var m,v,y=u.children[0],x=y.getLayout(),_=y.children.length;if(p.x===x.x&&!0===l.isExpand){var w={};w.x=(y.children[0].getLayout().x+y.children[_-1].getLayout().x)/2,w.y=(y.children[0].getLayout().y+y.children[_-1].getLayout().y)/2,(m=Math.atan2(w.y-x.y,w.x-x.x))<0&&(m=2*Math.PI+m),(v=w.xx.x)||(m-=Math.PI);var b=v?"left":"right";g.setStyle({textPosition:b,textRotation:-m,textOrigin:"center",verticalAlign:"middle"})}if(l.parentNode&&l.parentNode!==u){var S=i.__edge;S||(S=i.__edge=new bM({shape:od(a,f,f),style:r({opacity:0,strokeNoScale:!0},a.lineStyle)})),Io(S,{shape:od(a,d,p),style:{opacity:1}},o),n.add(S)}}function nd(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,a=ed(s,s.getModel(),a),u=s.parentNode===l?s:s.parentNode||s;null==(r=u.getLayout());)u=u.parentNode===l?u:u.parentNode||u;Io(i,{position:[r.x+1,r.y+1]},o,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var h=i.__edge;h&&Io(h,{shape:od(a,r,r),style:{opacity:0}},o,function(){n.remove(h)})}function od(t,e,i){var n,o,a,r,s,l,u,h,c=t.orient;if("radial"===t.layout){s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=Uc(s,u),f=Uc(s,u+(h-u)*t.curvature),p=Uc(l,h+(u-h)*t.curvature),g=Uc(l,h);return{x1:d.x,y1:d.y,x2:g.x,y2:g.y,cpx1:f.x,cpy1:f.y,cpx2:p.x,cpy2:p.y}}return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,o=u,a=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,o=u+(h-u)*t.curvature,a=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:o,cpx2:a,cpy2:r}}function ad(t,e,i){for(var n,o=[t],a=[];n=o.pop();)if(a.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;s=0;a--)n.push(o[a])}}function sd(t,e){var i=Xc(t,e);t.layoutInfo=i;var n=t.get("layout"),o=0,a=0,r=null;"radial"===n?(o=2*Math.PI,a=Math.min(i.height,i.width)/2,r=Zc(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,r=Zc());var s=t.getData().tree.root,l=s.children[0];if(l){Fc(s),ad(l,Wc,r),s.hierNode.modifier=-l.hierNode.prelim,rd(l,Hc);var u=l,h=l,c=l;rd(l,function(t){var e=t.getLayout().x;eh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Uc(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=a/(h.getLayout().x+d+f),p=o/(c.depth-1||1),rd(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:o-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:a-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}function ld(t,e,i){if(t&&l(e,t.type)>=0){var n=i.getData().tree.root,o=t.targetNode;if("string"==typeof o&&(o=n.getNodeById(o)),o&&n.contains(o))return{node:o};var a=t.targetNodeId;if(null!=a&&(o=n.getNodeById(a)))return{node:o}}}function ud(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function hd(t,e){return l(ud(t),e)>=0}function cd(t,e){for(var i=[];t;){var n=t.dataIndex;i.push({name:t.name,dataIndex:n,value:e.getRawValue(n)}),t=t.parentNode}return i.reverse(),i}function dd(t){var e=0;d(t.children,function(t){dd(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function fd(t,e){var i=e.get("color");if(i){var n;return d(t=t||[],function(t){var e=new No(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),n||((t[0]||(t[0]={})).color=i.slice()),t}}function pd(t){this.group=new tb,t.add(this.group)}function gd(t,e,i,n,o,a){var r=[[o?t:t-UC,e],[t+i,e],[t+i,e+n],[o?t:t-UC,e+n]];return!a&&r.splice(2,0,[t+i+UC,e+n/2]),!o&&r.push([t,e+n/2]),r}function md(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&cd(i,e)}}function vd(){var t,e=[],i={};return{add:function(t,n,o,a,r){return _(a)&&(r=a,a=0),!i[t.id]&&(i[t.id]=1,e.push({el:t,target:n,time:o,delay:a,easing:r}),!0)},done:function(e){return t=e,this},start:function(){for(var n=e.length,o=0,a=e.length;o=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function bd(t,e){var i=t.visual,n=[];w(i)?sL(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),Ld(t,n)}function Sd(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:Dd([0,1])}}function Md(t){var e=this.option.visual;return e[Math.round(Bo(t,[0,1],[0,e.length-1],!0))]||{}}function Id(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function Td(t){var e=this.option.visual;return e[this.option.loop&&t!==uL?t%e.length:t]}function Ad(){return this.option.visual[0]}function Dd(t){return{linear:function(e){return Bo(e,t,this.option.visual,!0)},category:Td,piecewise:function(e,i){var n=Cd.call(this,i);return null==n&&(n=Bo(e,t,this.option.visual,!0)),n},fixed:Ad}}function Cd(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[hL.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function Ld(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f(e,function(t){return Gt(t)})),e}function kd(t,e,i){return t?e<=i:e=o.length||t===o[t.depth])&&Pd(t,Vd(r,h,t,e,g,a),i,n,o,a)})}else l=Od(h),t.setVisual("color",l)}}function Nd(t,e,i,n){var o=a({},e);return d(["color","colorAlpha","colorSaturation"],function(a){var r=t.get(a,!0);null==r&&i&&(r=i[a]),null==r&&(r=e[a]),null==r&&(r=n.get(a)),null!=r&&(o[a]=r)}),o}function Od(t){var e=Rd(t,"color");if(e){var i=Rd(t,"colorAlpha"),n=Rd(t,"colorSaturation");return n&&(e=jt(e,null,null,n)),i&&(e=Yt(e,i)),e}}function Ed(t,e){return null!=e?jt(e,null,null,t):null}function Rd(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function zd(t,e,i,n,o,a){if(a&&a.length){var r=Bd(e,"color")||null!=o.color&&"none"!==o.color&&(Bd(e,"colorAlpha")||Bd(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&su[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:r.name,dataExtent:u,visual:r.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var d=new hL(c);return d.__drColorMappingBy=h,d}}}function Bd(t,e){var i=t.get(e);return fL(i)&&i.length?{name:e,range:i}:null}function Vd(t,e,i,n,o,r){var s=a({},e);if(o){var l=o.type,u="color"===l&&o.__drColorMappingBy,h="index"===u?n:"id"===u?r.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));s[l]=o.mapValueToVisual(h)}return s}function Gd(t,e,i,n){var o,a;if(!t.isRemoved()){var r=t.getLayout();o=r.width,a=r.height;var s=(f=t.getModel()).get(_L),l=f.get(wL)/2,u=Kd(f),h=Math.max(s,u),c=s-l,d=h-l,f=t.getModel();t.setLayout({borderWidth:s,upperHeight:h,upperLabelHeight:u},!0);var p=(o=mL(o-2*c,0))*(a=mL(a-c-d,0)),g=Fd(t,f,p,e,i,n);if(g.length){var m={x:c,y:d,width:o,height:a},v=vL(o,a),y=1/0,x=[];x.area=0;for(var _=0,w=g.length;_=0;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*es[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}function Ud(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;ro&&(o=n));var l=t.area*t.area,u=e*e*i;return l?mL(u*o/l,l/(u*a)):1/0}function Xd(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],h=e?t.area/e:0;(o||h>i[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;cXM&&(u=XM),a=s}u=0?n+=u:n-=u:p>=0?n-=u:n+=u}return n}function pf(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function gf(t,e,i){var n=t.getGraphicEl(),o=pf(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){if("group"!==t.type){var e=t.lineLabelOriginalOpacity;null!=e&&null==i||(e=o),t.setStyle("opacity",e)}})}function mf(t,e){var i=pf(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}function vf(t){return t instanceof Array||(t=[t,t]),t}function yf(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=t.getGraph();i.eachNode(function(t){var e=t.getModel();t.setLayout([+e.get("x"),+e.get("y")])}),xf(i)}}function xf(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.curveness")||0,i=F(t.node1.getLayout()),n=F(t.node2.getLayout()),o=[i,n];+e&&o.push([(i[0]+n[0])/2-(i[1]-n[1])*e,(i[1]+n[1])/2-(n[0]-i[0])*e]),t.setLayout(o)})}function _f(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=e.getBoundingRect(),n=t.getData(),o=n.graph,a=0,r=n.getSum("value"),s=2*Math.PI/(r||n.count()),l=i.width/2+i.x,u=i.height/2+i.y,h=Math.min(i.width,i.height)/2;o.eachNode(function(t){var e=t.getValue("value");a+=s*(r?e:1)/2,t.setLayout([h*Math.cos(a)+l,h*Math.sin(a)+u]),a+=s*(r?e:1)/2}),n.setLayout({cx:l,cy:u}),o.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.curveness")||0,n=F(t.node1.getLayout()),o=F(t.node2.getLayout()),a=(n[0]+o[0])/2,r=(n[1]+o[1])/2;+i&&(e=[l*(i*=3)+a*(1-i),u*i+r*(1-i)]),t.setLayout([n,o,e])})}}function wf(t,e,i){for(var n=i.rect,o=n.width,a=n.height,r=[n.x+o/2,n.y+a/2],s=null==i.gravity?.1:i.gravity,l=0;l0?-1:i<0?1:e?-1:1}}function Pf(t,e){return Math.min(e[1],Math.max(e[0],t))}function Nf(t,e,i){this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Of(t,e){return ek(ik(t,e[0]),e[1])}function Ef(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}}function Rf(t,e){var i,n,o=e.layoutLength,a=e.axisExpandWidth,r=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return tmk}function $f(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function Jf(t,e,i,n){var o=new tb;return o.add(new yM({name:"main",style:ip(i),silent:!0,draggable:!0,cursor:"move",drift:uk(t,e,o,"nswe"),ondragend:uk(qf,e,{isEnd:!0})})),hk(n,function(i){o.add(new yM({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:uk(t,e,o,i),ondragend:uk(qf,e,{isEnd:!0})}))}),o}function Qf(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=fk(o,vk),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-a+o/2,f=c-a+o/2,p=h-r,g=c-s,m=p+o,v=g+o;ep(t,e,"main",r,s,p,g),n.transformable&&(ep(t,e,"w",l,u,a,v),ep(t,e,"e",d,u,a,v),ep(t,e,"n",l,u,m,a),ep(t,e,"s",l,f,m,a),ep(t,e,"nw",l,u,a,a),ep(t,e,"ne",d,u,a,a),ep(t,e,"sw",l,f,a,a),ep(t,e,"se",d,f,a,a))}function tp(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(ip(i)),o.attr({silent:!n,cursor:n?"move":"default"}),hk(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=ap(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?_k[a]+"-resize":null})})}function ep(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(hp(up(t,e,[[n,o],[n+a,o+r]])))}function ip(t){return r({strokeNoScale:!0},t.brushStyle)}function np(t,e,i,n){var o=[dk(t,i),dk(e,n)],a=[fk(t,i),fk(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function op(t){return Ao(t.group)}function ap(t,e){if(e.length>1)return("e"===(n=[ap(t,(e=e.split(""))[0]),ap(t,e[1])])[0]||"w"===n[0])&&n.reverse(),n.join("");var i={left:"w",right:"e",top:"n",bottom:"s"},n=Co({w:"left",e:"right",n:"top",s:"bottom"}[e],op(t));return i[n]}function rp(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=lp(i,a,r);hk(o.split(""),function(t){var e=xk[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(np(u[0][0],u[1][0],u[0][1],u[1][1])),Zf(i,n),qf(i,{isEnd:!1})}function sp(t,e,i,n,o){var a=e.__brushOption.range,r=lp(t,i,n);hk(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Zf(t,e),qf(t,{isEnd:!1})}function lp(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function up(t,e,n){var o=jf(t,e);return o&&!0!==o?o.clipPath(n,t._transform):i(n)}function hp(t){var e=dk(t[0][0],t[1][0]),i=dk(t[0][1],t[1][1]);return{x:e,y:i,width:fk(t[0][0],t[1][0])-e,height:fk(t[0][1],t[1][1])-i}}function cp(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=Xf(t,e,i);if(!t._dragging)for(var r=0;r0;a--)Yp(s,l*=.99,r),jp(s,o,i,n,r),tg(s,l,r),jp(s,o,i,n,r)}function Up(t,e){var i=[],n="vertical"===e?"y":"x",o=Zi(t,function(t){return t.getLayout()[n]});return o.keys.sort(function(t,e){return t-e}),d(o.keys,function(t){i.push(o.buckets.get(t))}),i}function Xp(t,e,i,n,o,a,r){var s=[];d(e,function(t){var e=t.length,i=0,l=0;d(t,function(t){i+=t.getLayout().value}),l="vertical"===r?(o-(e-1)*a)/i:(n-(e-1)*a)/i,s.push(l)}),s.sort(function(t,e){return t-e});var l=s[0];d(e,function(t){d(t,function(t,e){var i=t.getLayout().value*l;"vertical"===r?(t.setLayout({x:e},!0),t.setLayout({dx:i},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:i},!0))})}),d(i,function(t){var e=+t.getValue()*l;t.setLayout({dy:e},!0)})}function jp(t,e,i,n,o){d(t,function(t){var a,r,s,l=0,u=t.length;if("vertical"===o){var h;for(t.sort(function(t,e){return t.getLayout().x-e.getLayout().x}),s=0;s0&&(h=a.getLayout().x+r,a.setLayout({x:h},!0)),l=a.getLayout().x+a.getLayout().dx+e;if((r=l-e-n)>0)for(h=a.getLayout().x-r,a.setLayout({x:h},!0),l=h,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().x+a.getLayout().dx+e-l)>0&&(h=a.getLayout().x-r,a.setLayout({x:h},!0)),l=a.getLayout().x}else{var c;for(t.sort(function(t,e){return t.getLayout().y-e.getLayout().y}),s=0;s0&&(c=a.getLayout().y+r,a.setLayout({y:c},!0)),l=a.getLayout().y+a.getLayout().dy+e;if((r=l-e-i)>0)for(c=a.getLayout().y-r,a.setLayout({y:c},!0),l=c,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().y+a.getLayout().dy+e-l)>0&&(c=a.getLayout().y-r,a.setLayout({y:c},!0)),l=a.getLayout().y}})}function Yp(t,e,i){d(t.slice().reverse(),function(t){d(t,function(t){if(t.outEdges.length){var n=Qp(t.outEdges,qp,i)/Qp(t.outEdges,Jp,i);if("vertical"===i){var o=t.getLayout().x+(n-$p(t,i))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(n-$p(t,i))*e;t.setLayout({y:a},!0)}}})})}function qp(t,e){return $p(t.node2,e)*t.getValue()}function Kp(t,e){return $p(t.node1,e)*t.getValue()}function $p(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function Jp(t){return t.getValue()}function Qp(t,e,i){for(var n=0,o=t.length,a=-1;++a0?"P":"N",a=n.getVisual("borderColor"+o)||n.getVisual("color"+o),r=i.getModel(Gk).getItemStyle(Wk);e.useStyle(r),e.style.fill=null,e.style.stroke=a}function fg(t,e,i,n,o){return i>n?-1:i0?t.get(o,e-1)<=n?1:-1:1}function pg(t,e){var i,n=t.getBaseAxis(),o="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),a=Vo(A(t.get("barMaxWidth"),o),o),r=Vo(A(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Vo(s,o):Math.max(Math.min(o/2,a),r)}function gg(t){return y(t)||(t=[+t,+t]),t}function mg(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function vg(t,e){tb.call(this);var i=new wu(t,e),n=new tb;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}function yg(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=f(e,function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),o([e,t[0],t[1]])}))}function xg(t,e,i){tb.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}function _g(t,e,i){tb.call(this),this._createPolyline(t,e,i)}function wg(t,e,i){xg.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}function bg(){this.group=new tb}function Sg(t){return t instanceof Array||(t=[t,t]),t}function Mg(){var t=iw();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}function Ig(t,e,i){var n=t[1]-t[0],o=(e=f(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}})).length,a=0;return function(t){for(n=a;n=0;n--){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}return n>=0&&n=e[0]&&t<=e[1]}}function Ag(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}function Dg(t,e,i,n){var o=t.getItemLayout(e),a=i.get("symbolRepeat"),r=i.get("symbolClip"),s=i.get("symbolPosition")||"start",l=(i.get("symbolRotate")||0)*Math.PI/180||0,u=i.get("symbolPatternSize")||2,h=i.isAnimationEnabled(),c={dataIndex:e,layout:o,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:r,symbolRepeat:a,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?i:null,hoverAnimation:h&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};Cg(i,a,o,n,c),kg(t,e,o,a,r,c.boundingLength,c.pxSign,u,n,c),Pg(i,c.symbolScale,l,n,c);var d=c.symbolSize,f=i.get("symbolOffset");return y(f)&&(f=[Vo(f[0],d[0]),Vo(f[1],d[1])]),Ng(i,d,o,a,r,f,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,n,c),c}function Cg(t,e,i,n,o){var a,r=n.valueDim,s=t.get("symbolBoundingData"),l=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(i[r.wh]<=0);if(y(s)){var c=[Lg(l,s[0])-u,Lg(l,s[1])-u];c[1]0?1:a<0?-1:0}function Lg(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function kg(t,e,i,n,o,a,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");y(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[c.index]=Vo(f[c.index],d),f[h.index]=Vo(f[h.index],n?d:Math.abs(a)),u.symbolSize=f,(u.symbolScale=[f[0]/s,f[1]/s])[h.index]*=(l.isHorizontal?-1:1)*r}function Pg(t,e,i,n,o){var a=t.get(cP)||0;a&&(fP.attr({scale:e.slice(),rotation:i}),fP.updateTransform(),a/=fP.getLineScale(),a*=e[n.valueDim.index]),o.valueLineWidth=a}function Ng(t,e,i,n,o,r,s,l,u,h,c,d){var f=c.categoryDim,p=c.valueDim,g=d.pxSign,m=Math.max(e[p.index]+l,0),v=m;if(n){var y=Math.abs(u),x=T(t.get("symbolMargin"),"15%")+"",_=!1;x.lastIndexOf("!")===x.length-1&&(_=!0,x=x.slice(0,x.length-1)),x=Vo(x,e[p.index]);var w=Math.max(m+2*x,0),b=_?0:2*x,S=Qo(n),M=S?n:Kg((y+b)/w);w=m+2*(x=(y-M*m)/2/(_?M:M-1)),b=_?0:2*x,S||"fixed"===n||(M=h?Kg((Math.abs(h)+b)/w):0),v=M*w-b,d.repeatTimes=M,d.symbolMargin=x}var I=g*(v/2),A=d.pathPosition=[];A[f.index]=i[f.wh]/2,A[p.index]="start"===s?I:"end"===s?u-I:u/2,r&&(A[0]+=r[0],A[1]+=r[1]);var D=d.bundlePosition=[];D[f.index]=i[f.xy],D[p.index]=i[p.xy];var C=d.barRectShape=a({},i);C[p.wh]=g*Math.max(Math.abs(i[p.wh]),Math.abs(A[p.index]+I)),C[f.wh]=i[f.wh];var L=d.clipShape={};L[f.xy]=-i[f.xy],L[f.wh]=c.ecSize[f.wh],L[p.xy]=0,L[p.wh]=i[p.wh]}function Og(t){var e=t.symbolPatternSize,i=Jl(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function Eg(t,e,i,n){function o(t){var e=l.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=h-1-t),e[u.index]=d*(o-h/2+.5)+l[u.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}var a=t.__pictorialBundle,r=i.symbolSize,s=i.valueLineWidth,l=i.pathPosition,u=e.valueDim,h=i.repeatTimes||0,c=0,d=r[e.valueDim.index]+s+2*i.symbolMargin;for(jg(t,function(t){t.__pictorialAnimationIndex=c,t.__pictorialRepeatTimes=h,c0)],d=t.__pictorialBarRect;kh(d.style,h,a,n,e.seriesModel,o,c),fo(d,h)}function Kg(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}function $g(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}function Jg(t,e){e=e||{};var i=t.coordinateSystem,n=t.axis,o={},a=n.position,r=n.orient,s=i.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};o.position=["vertical"===r?u.vertical[a]:l[0],"horizontal"===r?u.horizontal[a]:l[3]];var h={horizontal:0,vertical:1};o.rotation=Math.PI/2*h[r];var c={top:-1,bottom:1,right:1,left:-1};o.labelDirection=o.tickDirection=o.nameDirection=c[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),T(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var d=e.rotate;return null==d&&(d=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-d:d,o.z2=1,o}function Qg(t,e,i,n,o){var r=t.axis;if(!r.scale.isBlank()&&r.containData(e))if(t.involveSeries){var s=tm(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==o.seriesIndex&&a(o,l[0]),!n&&t.snap&&r.containData(u)&&null!=u&&(e=u),i.showPointer(t,e,l,o),i.showTooltip(t,s,u)}else i.showPointer(t,e)}function tm(t,e){var i=e.axis,n=i.dim,o=t,a=[],r=Number.MAX_VALUE,s=-1;return _P(e.seriesModels,function(e,l){var u,h,c=e.getData().mapDimension(n,!0);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(c,t,i);h=d.dataIndices,u=d.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===i.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=r&&((p=0&&s<0)&&(r=p,s=f,o=u,a.length=0),_P(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:o}}function em(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function im(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=Ah(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function nm(t,e,i){var n=i.axesInfo=[];_P(e,function(e,i){var o=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(o.status="show"),o.value=a.value,o.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(o.status="hide"),"show"===o.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:o.value})})}function om(t,e,i,n){if(!lm(e)&&t.list.length){var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}else n({type:"hideTip"})}function am(t,e,i){var n=i.getZr(),o=bP(n).axisPointerLastHighlights||{},a=bP(n).axisPointerLastHighlights={};_P(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&_P(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t})});var r=[],s=[];d(o,function(t,e){!a[e]&&s.push(t)}),d(a,function(t,e){!o[e]&&r.push(t)}),s.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:s}),r.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:r})}function rm(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}function sm(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function lm(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function um(t,e,i){if(!U_.node){var n=e.getZr();SP(n).records||(SP(n).records={}),hm(n,e),(SP(n).records[t]||(SP(n).records[t]={})).handler=i}}function hm(t,e){function i(i,n){t.on(i,function(i){var o=pm(e);MP(SP(t).records,function(t){t&&n(t,i,o.dispatchAction)}),cm(o.pendings,e)})}SP(t).initialized||(SP(t).initialized=!0,i("click",v(fm,"click")),i("mousemove",v(fm,"mousemove")),i("globalout",dm))}function cm(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function dm(t,e,i){t.handler("leave",null,i)}function fm(t,e,i,n){e.handler(t,i,n)}function pm(t){var e={showTip:[],hideTip:[]},i=function(n){var o=e[n.type];o?o.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}function gm(t,e){if(!U_.node){var i=e.getZr();(SP(i).records||{})[t]&&(SP(i).records[t]=null)}}function mm(){}function vm(t,e,i,n){ym(TP(i).lastProp,n)||(TP(i).lastProp=n,e?Io(i,n,t):(i.stopAnimation(),i.attr(n)))}function ym(t,e){if(w(t)&&w(e)){var i=!0;return d(e,function(e,n){i=i&&ym(t[n],e)}),!!i}return t===e}function xm(t,e){t[e.get("label.show")?"show":"hide"]()}function _m(t){return{position:t.position.slice(),rotation:t.rotation||0}}function wm(t,e,i){var n=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=o&&(t.zlevel=o),t.silent=i)})}function bm(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle()).fill=null:"shadow"===i&&((e=n.getAreaStyle()).stroke=null),e}function Sm(t,e,i,n,o){var a=Im(i.get("value"),e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),r=i.getModel("label"),s=qM(r.get("padding")||0),l=r.getFont(),u=ke(a,l),h=o.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=o.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=o.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),Mm(h,c,d,n);var g=r.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:r.get("borderRadius")},position:h.slice(),style:{text:a,textFont:l,textFill:r.getTextColor(),textPosition:"inside",fill:g,stroke:r.get("borderColor")||"transparent",lineWidth:r.get("borderWidth")||0,shadowBlur:r.get("shadowBlur"),shadowColor:r.get("shadowColor"),shadowOffsetX:r.get("shadowOffsetX"),shadowOffsetY:r.get("shadowOffsetY")},z2:10}}function Mm(t,e,i,n){var o=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,o)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function Im(t,e,i,n,o){t=e.scale.parse(t);var a=e.scale.getLabel(t,{precision:o.precision}),r=o.formatter;if(r){var s={value:Xl(e,t),seriesData:[]};d(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,o=e&&e.getDataParams(n);o&&s.seriesData.push(o)}),_(r)?a=r.replace("{value}",a):x(r)&&(a=r(s))}return a}function Tm(t,e,i){var n=xt();return Mt(n,n,i.rotation),St(n,n,i.position),Do([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function Am(t,e,i,n,o,a){var r=FD.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=o.get("label.margin"),Sm(e,n,o,a,{position:Tm(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})}function Dm(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}}function Cm(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}function Lm(t,e,i,n,o,a){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:a,clockwise:!0}}function km(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function Pm(t){return"x"===t.dim?0:1}function Nm(t){return t.isHorizontal()?0:1}function Om(t,e){var i=t.getRect();return[i[kP[e]],i[kP[e]]+i[PP[e]]]}function Em(t,e,i){var n=new yM({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return To(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}function Rm(t,e,i){if(t.count())for(var n,o=e.coordinateSystem,a=e.getLayerSeries(),r=t.mapDimension("single"),s=t.mapDimension("value"),l=f(a,function(e){return f(e.indices,function(e){var i=o.dataToPoint(t.get(r,e));return i[1]=t.get(s,e),i})}),u=zm(l),h=u.y0,c=i/u.max,d=a.length,p=a[0].indices.length,g=0;ga&&(a=u),n.push(u)}for(var h=0;ha&&(a=d)}return r.y0=o,r.max=a,r}function Bm(t){var e=0;d(t.children,function(t){Bm(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function Vm(t,e,i){function n(){r.ignore=r.hoverIgnore}function o(){r.ignore=r.normalIgnore}tb.call(this);var a=new hM({z2:zP});a.seriesIndex=e.seriesIndex;var r=new rM({z2:BP,silent:t.getModel("label").get("silent")});this.add(a),this.add(r),this.updateData(!0,t,"normal",e,i),this.on("emphasis",n).on("normal",o).on("mouseover",n).on("mouseout",o)}function Gm(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;return a=i.option.color[Fm(t)%r]}function Fm(t){for(var e=t;e.depth>1;)e=e.parentNode;return l(t.getAncestors()[0].children,e)}function Wm(t,e,i){return i!==RP.NONE&&(i===RP.SELF?t===e:i===RP.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function Hm(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}function Zm(t,e){var i=t.children||[];t.children=Um(i,e),i.length&&d(t.children,function(t){Zm(t,e)})}function Um(t,e){if("function"==typeof e)return t.sort(e);var i="asc"===e;return t.sort(function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n})}function Xm(t,e){return e=e||[0,0],f(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function jm(t,e){return e=e||[0,0],f([0,1],function(i){var n=e[i],o=t[i]/2,a=[],r=[];return a[i]=n-o,r[i]=n+o,a[1-i]=r[1-i]=e[1-i],Math.abs(this.dataToPoint(a)[i]-this.dataToPoint(r)[i])},this)}function Ym(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function qm(t,e){return f(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function Km(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=lv(n);(e=Xn(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new rM({})).__customText=t.style.text:e=new(0,zM[i.charAt(0).toUpperCase()+i.slice(1)]);return e.__customGraphicType=i,e.name=t.name,e}function $m(t,e,n,o,a,r,s){var l={},u=n.style||{};if(n.shape&&(l.shape=i(n.shape)),n.position&&(l.position=n.position.slice()),n.scale&&(l.scale=n.scale.slice()),n.origin&&(l.origin=n.origin.slice()),n.rotation&&(l.rotation=n.rotation),"image"===t.type&&n.style){h=l.style={};d(["x","y","width","height"],function(e){Jm(e,h,u,t.style,r)})}if("text"===t.type&&n.style){var h=l.style={};d(["x","y"],function(e){Jm(e,h,u,t.style,r)}),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke)}if("group"!==t.type&&(t.useStyle(u),r)){t.style.opacity=0;var c=u.opacity;null==c&&(c=1),To(t,{style:{opacity:c}},o,e)}r?t.attr(l):Io(t,l,o,e),n.hasOwnProperty("z2")&&t.attr("z2",n.z2||0),n.hasOwnProperty("silent")&&t.attr("silent",n.silent),n.hasOwnProperty("invisible")&&t.attr("invisible",n.invisible),n.hasOwnProperty("ignore")&&t.attr("ignore",n.ignore),n.hasOwnProperty("info")&&t.attr("info",n.info);var f=n.styleEmphasis,p=!1===f;t.__cusHasEmphStl&&null==f||!t.__cusHasEmphStl&&p||(ro(t,f),t.__cusHasEmphStl=!p),s&&po(t,!p)}function Jm(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function Qm(t,e,i,n){function o(t){null==t&&(t=h),v&&(c=e.getItemModel(t),d=c.getModel(UP),f=c.getModel(XP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():YP[l.type](l));var h,c,d,f,p,g=r({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:function(t,i){return null==i&&(i=h),e.get(e.getDimension(t||0),i)},style:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(HP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),mo(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(ZP).getItemStyle();return mo(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},visual:function(t,i){return null==i&&(i=h),e.getItemVisual(i,t)},barLayout:function(t){if(l.getBaseAxis)return Ll(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return So(t,i)}},u.api||{}),m={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:u.coordSys,dataInsideLength:e.count(),encode:tv(t.getData())},v=!0;return function(t,i){return h=t,v=!0,s&&s(r({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:i?i.type:null},m),g)}}function tv(t){var e={};return d(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim;(e[a]=e[a]||[])[o.coordDimIndex]=n}}),e}function ev(t,e,i,n,o,a){return(t=iv(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function iv(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&uv(u)&&lv(u)!==t.__customPathData||"image"===l&&hv(h,"image")&&h.image!==t.__customImagePath||"text"===l&&hv(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return!t&&(t=Km(i)),$m(t,e,i,n,a,c,r),"group"===l&&nv(t,e,i,n,a),o.add(t),t}}function nv(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(r||l||u)if(l)ov({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});else{u&&t.removeAll();for(var h=0;hn?t-=l+a:t+=a),null!=r&&(e+u+r>o?e-=u+r:e+=r),[t,e]}function Ov(t,e,i,n,o){var a=i.getOuterSize(),r=a.width,s=a.height;return t=Math.min(t+r,n)-r,e=Math.min(e+s,o)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function Ev(t,e,i){var n=i[0],o=i[1],a=0,r=0,s=e.width,l=e.height;switch(t){case"inside":a=e.x+s/2-n/2,r=e.y+l/2-o/2;break;case"top":a=e.x+s/2-n/2,r=e.y-o-5;break;case"bottom":a=e.x+s/2-n/2,r=e.y+l+5;break;case"left":a=e.x-n-5,r=e.y+l/2-o/2;break;case"right":a=e.x+s+5,r=e.y+l/2-o/2}return[a,r]}function Rv(t){return"center"===t||"middle"===t}function zv(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function Bv(t){return t.dim}function Vv(t,e){var i={};d(t,function(t,e){var n=t.getData(),o=t.coordinateSystem.getBaseAxis(),a=o.getExtent(),r="category"===o.type?o.getBandWidth():Math.abs(a[1]-a[0])/n.count(),s=i[Bv(o)]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},l=s.stacks;i[Bv(o)]=s;var u=zv(t);l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var h=Vo(t.get("barWidth"),r),c=Vo(t.get("barMaxWidth"),r),d=t.get("barGap"),f=t.get("barCategoryGap");h&&!l[u].width&&(h=Math.min(s.remainedWidth,h),l[u].width=h,s.remainedWidth-=h),c&&(l[u].maxWidth=c),null!=d&&(s.gap=d),null!=f&&(s.categoryGap=f)});var n={};return d(i,function(t,e){n[e]={};var i=t.stacks,o=t.bandWidth,a=Vo(t.categoryGap,o),r=Vo(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-a)/(l+(l-1)*r);u=Math.max(u,0),d(i,function(t,e){var i=t.maxWidth;i&&ie[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),o=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:o[0],y2:o[1]}}function jv(t){return t.getRadiusAxis().inverse?0:1}function Yv(t){var e=t[0],i=t[t.length-1];e&&i&&Math.abs(Math.abs(e.coord-i.coord)-360)<1e-4&&t.pop()}function qv(t,e,i){return{position:[t.cx,t.cy],rotation:i/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:e.getModel("axisLabel").get("rotate"),z2:1}}function Kv(t,e,i,n,o){var a=e.axis,r=a.dataToCoord(t),s=n.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=n.getRadiusAxis().getExtent();if("radius"===a.dim){var d=xt();Mt(d,d,s),St(d,d,[n.cx,n.cy]),l=Do([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=FD.innerTextLayout(s,f*Math.PI/180,-1);u=p.textAlign,h=p.textVerticalAlign}else{var g=c[1];l=n.coordToPoint([g+o,r]);var m=n.cx,v=n.cy;u=Math.abs(l[0]-m)/g<.3?"center":l[0]>m?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}function $v(t,e){e.update="updateView",Es(e,function(e,i){var n={};return i.eachComponent({mainType:"geo",query:e},function(i){i[t](e.name),d(i.coordinateSystem.regions,function(t){n[t.name]=i.isSelected(t.name)||!1})}),{selected:n,name:e.name}})}function Jv(t){var e={};d(t,function(t){e[t]=1}),t.length=0,d(e,function(e,i){t.push(i)})}function Qv(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function ty(t,e,n){function o(){var t=function(){};return t.prototype.__hidden=t.prototype,new t}var a={};return MN(e,function(e){var r=a[e]=o();MN(t[e],function(t,o){if(hL.isValidType(o)){var a={type:o,visual:t};n&&n(a,e),r[o]=new hL(a),"opacity"===o&&((a=i(a)).type="colorAlpha",r.__hidden.__alphaForOpacity=new hL(a))}})}),a}function ey(t,e,n){var o;d(n,function(t){e.hasOwnProperty(t)&&Qv(e[t])&&(o=!0)}),o&&d(n,function(n){e.hasOwnProperty(n)&&Qv(e[n])?t[n]=i(e[n]):delete t[n]})}function iy(t,e,i,n,o,a){function r(t){return i.getItemVisual(h,t)}function s(t,e){i.setItemVisual(h,t,e)}function l(t,l){h=null==a?t:l;var c=i.getRawDataItem(h);if(!c||!1!==c.visualMap)for(var d=n.call(o,t),f=e[d],p=u[d],g=0,m=p.length;g1)return!1;var h=uy(i-t,o-t,n-e,a-e)/l;return!(h<0||h>1)}function ly(t){return t<=1e-6&&t>=-1e-6}function uy(t,e,i,n){return t*n-e*i}function hy(t,e,i){var n=this._targetInfoList=[],o={},a=dy(e,t);TN(PN,function(t,e){(!i||!i.include||AN(i.include,e)>=0)&&t(a,n,o)})}function cy(t){return t[0]>t[1]&&t.reverse(),t}function dy(t,e){return Vi(t,e,{includeMainTypes:LN})}function fy(t,e,i,n){var o=i.getAxis(["x","y"][t]),a=cy(f([0,1],function(t){return e?o.coordToData(o.toLocalCoord(n[t])):o.toGlobalCoord(o.dataToCoord(n[t]))})),r=[];return r[t]=a,r[1-t]=[NaN,NaN],{values:a,xyMinMax:r}}function py(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function gy(t,e){var i=my(t),n=my(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}function my(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}function vy(t,e,i,n,o){if(o){var a=t.getZr();a[VN]||(a[BN]||(a[BN]=yy),Nr(a,BN,i,e)(t,n))}}function yy(t,e){if(!t.isDisposed()){var i=t.getZr();i[VN]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[VN]=!1}}function xy(t,e,i,n){for(var o=0,a=e.length;o=0}function Ny(t,e,i){function n(t,e){return l(e.nodes,t)>=0}function o(t,n){var o=!1;return e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]&&(o=!0)})}),o}function a(t,n){n.nodes.push(t),e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){var r={nodes:[],records:{}};if(e(function(t){r.records[t.name]={}}),!i)return r;a(i,r);var s;do{s=!1,t(function(t){!n(t,r)&&o(t,r)&&(a(t,r),s=!0)})}while(s);return r}}function Oy(t,e,i){var n=[1/0,-1/0];return $N(i,function(t){var i=t.getData();i&&$N(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]n[1]&&(n[1]=e[1])})}),n[1]0?0:NaN);var r=i.getMax(!0);return null!=r&&"dataMax"!==r&&"function"!=typeof r?e[1]=r:o&&(e[1]=a>0?a-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function Ry(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=Zo(o,[0,500]);a=Math.min(a,20);var r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}function zy(t){var e=t._minMaxSpan={},i=t._dataZoomModel;$N(["min","max"],function(n){e[n+"Span"]=i.get(n+"Span");var o=i.get(n+"ValueSpan");if(null!=o&&(e[n+"ValueSpan"]=o,null!=(o=t.getAxisModel().axis.scale.parse(o)))){var a=t._dataExtent;e[n+"Span"]=Bo(a[0]+o,a,[0,100],!0)}})}function By(t){var e={};return tO(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function Vy(t,e){var i=t._rangePropMode,n=t.get("rangeMode");tO([["start","startValue"],["end","endValue"]],function(t,o){var a=null!=e[t[0]],r=null!=e[t[1]];a&&!r?i[o]="percent":!a&&r?i[o]="value":n?i[o]=n[o]:a&&(i[o]="percent")})}function Gy(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}function Fy(t){return"vertical"===t?"ns-resize":"ew-resize"}function Wy(t,e){var i=Uy(t),n=e.dataZoomId,o=e.coordId;d(i,function(t,i){var a=t.dataZoomInfos;a[n]&&l(e.allCoordIds,o)<0&&(delete a[n],t.count--)}),jy(i);var a=i[o];a||((a=i[o]={coordId:o,dataZoomInfos:{},count:0}).controller=Xy(t,a),a.dispatchAction=v(Yy,t)),!a.dataZoomInfos[n]&&a.count++,a.dataZoomInfos[n]=e;var r=qy(a.dataZoomInfos);a.controller.enable(r.controlType,r.opt),a.controller.setPointerChecker(e.containsPoint),Nr(a,"dispatchAction",e.dataZoomModel.get("throttle",!0),"fixRate")}function Hy(t,e){var i=Uy(t);d(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),jy(i)}function Zy(t){return t.type+"\0_"+t.id}function Uy(t){var e=t.getZr();return e[fO]||(e[fO]={})}function Xy(t,e){var i=new oc(t.getZr());return d(["pan","zoom","scrollMove"],function(t){i.on(t,function(i){var n=[];d(e.dataZoomInfos,function(o){if(i.isAvailableBehavior(o.dataZoomModel.option)){var a=(o.getRange||{})[t],r=a&&a(e.controller,i);!o.dataZoomModel.get("disabled",!0)&&r&&n.push({dataZoomId:o.dataZoomId,start:r[0],end:r[1]})}}),n.length&&e.dispatchAction(n)})}),i}function jy(t){d(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function Yy(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function qy(t){var e,i={type_true:2,type_move:1,type_false:0,type_undefined:-1},n=!0;return d(t,function(t){var o=t.dataZoomModel,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i["type_"+a]>i["type_"+e]&&(e=a),n&=o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!n}}}function Ky(t){return function(e,i,n,o){var a=this._range,r=a.slice(),s=e.axisModels[0];if(s){var l=t(r,s,e,i,n,o);return QL(l,r,[0,100],"all"),this._range=r,a[0]!==r[0]||a[1]!==r[1]?r:void 0}}}function $y(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}function Jy(t,e,i,n){for(var o=e.targetVisuals[n],a=hL.prepareVisualTypes(o),r={color:t.getData().getVisual("color")},s=0,l=a.length;s=0&&(r[a]=+r[a].toFixed(h)),r}function fx(t,e){var n=t.getData(),o=t.coordinateSystem;if(e&&!cx(e)&&!y(e.coord)&&o){var a=o.dimensions,r=px(e,n,o,t);if((e=i(e)).type&&YO[e.type]&&r.baseAxis&&r.valueAxis){var s=XO(a,r.baseAxis.dim),l=XO(a,r.valueAxis.dim);e.coord=YO[e.type](n,r.baseDataDim,r.valueDataDim,s,l),e.value=e.coord[l]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)YO[u[h]]&&(u[h]=yx(n,n.mapDimension(a[h]),u[h]));e.coord=u}}return e}function px(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(gx(n,o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim)):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim),o.valueDataDim=e.mapDimension(o.valueAxis.dim)),o}function gx(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var o=0;o=0)return!0}function Yx(t){for(var e=t.split(/\n+/g),i=[],n=f(Xx(e.shift()).split(pE),function(t){return{name:t,data:[]}}),o=0;o=0&&!i[o][n];o--);if(o<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var r=a.getPercentRange();i[0][n]={dataZoomId:n,start:r[0],end:r[1]}}}}),i.push(e)}function t_(t){var e=n_(t),i=e[e.length-1];e.length>1&&e.pop();var n={};return gE(i,function(t,i){for(var o=e.length-1;o>=0;o--)if(t=e[o][i]){n[i]=t;break}}),n}function e_(t){t[mE]=null}function i_(t){return n_(t).length}function n_(t){var e=t[mE];return e||(e=t[mE]=[{}]),e}function o_(t,e,i){(this._brushController=new zf(i.getZr())).on("brush",m(this._onBrush,this)).mount(),this._isZoomActive}function a_(t){var e={};return d(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(!1===e[i]||"none"===e[i])&&(e[i]=[])}),e}function r_(t,e){t.setIconStatus("back",i_(e)>1?"emphasis":"normal")}function s_(t,e,i,n,o){var a=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(a="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var r=new hy(a_(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}function l_(t){this.model=t}function u_(t){return SE(t)}function h_(){if(!TE&&AE){TE=!0;var t=AE.styleSheets;t.length<31?AE.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}function c_(t){return parseInt(t,10)}function d_(t,e){h_(),this.root=t,this.storage=e;var i=document.createElement("div"),n=document.createElement("div");i.style.cssText="display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;",n.style.cssText="position:absolute;left:0;top:0;",t.appendChild(i),this._vmlRoot=n,this._vmlViewport=i,this.resize();var o=e.delFromStorage,a=e.addToStorage;e.delFromStorage=function(t){o.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)},this._firstPaint=!0}function f_(t){return function(){Yw('In IE8.0 VML mode painter not support method "'+t+'"')}}function p_(t){return document.createElementNS(sR,t)}function g_(t){return cR(1e4*t)/1e4}function m_(t){return t-vR}function v_(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==hR}function y_(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==hR}function x_(t,e){e&&__(t,"transform","matrix("+uR.call(e,",")+")")}function __(t,e,i){(!i||"linear"!==i.type&&"radial"!==i.type)&&t.setAttribute(e,i)}function w_(t,e,i){t.setAttributeNS("http://www.w3.org/1999/xlink",e,i)}function b_(t,e,i,n){if(v_(e,i)){var o=i?e.textFill:e.fill;o="transparent"===o?hR:o,"none"!==t.getAttribute("clip-path")&&o===hR&&(o="rgba(0, 0, 0, 0.002)"),__(t,"fill",o),__(t,"fill-opacity",null!=e.fillOpacity?e.fillOpacity*e.opacity:e.opacity)}else __(t,"fill",hR);if(y_(e,i)){var a=i?e.textStroke:e.stroke;__(t,"stroke",a="transparent"===a?hR:a),__(t,"stroke-width",(i?e.textStrokeWidth:e.lineWidth)/(!i&&e.strokeNoScale?n.getLineScale():1)),__(t,"paint-order",i?"stroke":"fill"),__(t,"stroke-opacity",null!=e.strokeOpacity?e.strokeOpacity:e.opacity),e.lineDash?(__(t,"stroke-dasharray",e.lineDash.join(",")),__(t,"stroke-dashoffset",cR(e.lineDashOffset||0))):__(t,"stroke-dasharray",""),e.lineCap&&__(t,"stroke-linecap",e.lineCap),e.lineJoin&&__(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&__(t,"stroke-miterlimit",e.miterLimit)}else __(t,"stroke",hR)}function S_(t){for(var e=[],i=t.data,n=t.len(),o=0;o=gR||!m_(g)&&(d>-pR&&d<0||d>pR)==!!p;var y=g_(s+u*fR(c)),x=g_(l+h*dR(c));m&&(d=p?gR-1e-4:1e-4-gR,v=!0,9===o&&e.push("M",y,x));var _=g_(s+u*fR(c+d)),w=g_(l+h*dR(c+d));e.push("A",g_(u),g_(h),cR(f*mR),+v,+p,_,w);break;case lR.Z:a="Z";break;case lR.R:var _=g_(i[o++]),w=g_(i[o++]),b=g_(i[o++]),S=g_(i[o++]);e.push("M",_,w,"L",_+b,w,"L",_+b,w+S,"L",_,w+S,"L",_,w)}a&&e.push(a);for(var M=0;M=11),domSupported:"undefined"!=typeof document}}(navigator.userAgent),X_={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},j_={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},Y_=Object.prototype.toString,q_=Array.prototype,K_=q_.forEach,$_=q_.filter,J_=q_.slice,Q_=q_.map,tw=q_.reduce,ew={},iw=function(){return ew.createCanvas()};ew.createCanvas=function(){return document.createElement("canvas")};var nw,ow="__ec_primitive__";E.prototype={constructor:E,get:function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},set:function(t,e){return this.data[t]=e},each:function(t,e){void 0!==e&&(t=m(t,e));for(var i in this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var aw=(Object.freeze||Object)({$override:e,clone:i,merge:n,mergeAll:o,extend:a,defaults:r,createCanvas:iw,getContext:s,indexOf:l,inherits:u,mixin:h,isArrayLike:c,each:d,map:f,reduce:p,filter:g,find:function(t,e,i){if(t&&e)for(var n=0,o=t.length;n3&&(n=dw.call(n,1));for(var a=e.length,r=0;r4&&(n=dw.call(n,1,n.length-1));for(var a=n[n.length-1],r=e.length,s=0;s1&&n&&n.length>1){var a=ft(n)/ft(o);!isFinite(a)&&(a=1),e.pinchScale=a;var r=pt(n);return e.pinchX=r[0],e.pinchY=r[1],{type:"pinch",target:t[0].target,event:e}}}}},xw="silent";vt.prototype.dispose=function(){};var _w=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ww=function(t,e,i,n){fw.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new vt,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,it.call(this),this.setHandlerProxy(i)};ww.prototype={constructor:ww,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(d(_w,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,o=n.target;o&&!o.__zr&&(o=(n=this.findHover(n.x,n.y)).target);var a=this._hovered=this.findHover(e,i),r=a.target,s=this.proxy;s.setCursor&&s.setCursor(r?r.cursor:"default"),o&&r!==o&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(a,"mousemove",t),r&&r!==o&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do{i=i&&i.parentNode}while(i&&9!==i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){var n=(t=t||{}).target;if(!n||!n.silent){for(var o="on"+e,a=gt(e,t,i);n&&(n[o]&&(a.cancelBubble=n[o].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o={x:t,y:e},a=n.length-1;a>=0;a--){var r;if(n[a]!==i&&!n[a].ignore&&(r=yt(n[a],t,e))&&(!o.topTarget&&(o.topTarget=n[a]),r!==xw)){o.target=n[a];break}}return o},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new vw);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var o=n.type;t.gestureEvent=o,this.dispatchToElement({target:n.target},o,n.event)}}},d(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){ww.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downEl=n,this._downPoint=[e.zrX,e.zrY],this._upEl=n;else if("mouseup"===t)this._upEl=n;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||uw(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(i,t,e)}}),h(ww,fw),h(ww,it);var bw="undefined"==typeof Float32Array?Array:Float32Array,Sw=(Object.freeze||Object)({create:xt,identity:_t,copy:wt,mul:bt,translate:St,rotate:Mt,scale:It,invert:Tt,clone:At}),Mw=_t,Iw=5e-5,Tw=function(t){(t=t||{}).position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},Aw=Tw.prototype;Aw.transform=null,Aw.needLocalTransform=function(){return Dt(this.rotation)||Dt(this.position[0])||Dt(this.position[1])||Dt(this.scale[0]-1)||Dt(this.scale[1]-1)};var Dw=[];Aw.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(i||e){n=n||xt(),i?this.getLocalTransform(n):Mw(n),e&&(i?bt(n,t.transform,n):wt(n,t.transform)),this.transform=n;var o=this.globalScaleRatio;if(null!=o&&1!==o){this.getGlobalScale(Dw);var a=Dw[0]<0?-1:1,r=Dw[1]<0?-1:1,s=((Dw[0]-a)*o+a)/Dw[0]||0,l=((Dw[1]-r)*o+r)/Dw[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||xt(),Tt(this.invTransform,n)}else n&&Mw(n)},Aw.getLocalTransform=function(t){return Tw.getLocalTransform(this,t)},Aw.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},Aw.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var Cw=[],Lw=xt();Aw.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,o=this.scale;Dt(e-1)&&(e=Math.sqrt(e)),Dt(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],o[0]=e,o[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},Aw.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(bt(Cw,t.invTransform,e),e=Cw);var i=this.origin;i&&(i[0]||i[1])&&(Lw[4]=i[0],Lw[5]=i[1],bt(Cw,e,Lw),Cw[4]-=i[0],Cw[5]-=i[1],e=Cw),this.setLocalTransform(e)}},Aw.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},Aw.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&Q(i,i,n),i},Aw.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&Q(i,i,n),i},Tw.getLocalTransform=function(t,e){Mw(e=e||[]);var i=t.origin,n=t.scale||[1,1],o=t.rotation||0,a=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),It(e,e,n),o&&Mt(e,e,o),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=a[0],e[5]+=a[1],e};var kw={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-kw.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*kw.bounceIn(2*t):.5*kw.bounceOut(2*t-1)+.5}};Ct.prototype={constructor:Ct,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,o="string"==typeof n?kw[n]:n,a="function"==typeof o?o(i):i;return this.fire("frame",a),1===i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var Pw=function(){this.head=null,this.tail=null,this._len=0},Nw=Pw.prototype;Nw.insert=function(t){var e=new Ow(t);return this.insertEntry(e),e},Nw.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},Nw.remove=function(t){var e=t.prev,i=t.next;e?e.next=i:this.head=i,i?i.prev=e:this.tail=e,t.next=t.prev=null,this._len--},Nw.len=function(){return this._len},Nw.clear=function(){this.head=this.tail=null,this._len=0};var Ow=function(t){this.value=t,this.next,this.prev},Ew=function(t){this._list=new Pw,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},Rw=Ew.prototype;Rw.put=function(t,e){var i=this._list,n=this._map,o=null;if(null==n[t]){var a=i.len(),r=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=i.head;i.remove(s),delete n[s.key],o=s.value,this._lastRemovedEntry=s}r?r.value=e:r=new Ow(e),r.key=t,i.insertEntry(r),n[t]=r}return o},Rw.get=function(t){var e=this._map[t],i=this._list;if(null!=e)return e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value},Rw.clear=function(){this._list.clear(),this._map={}};var zw={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]},Bw=new Ew(20),Vw=null,Gw=Ut,Fw=Xt,Ww=(Object.freeze||Object)({parse:Gt,lift:Ht,toHex:Zt,fastLerp:Ut,fastMapToColor:Gw,lerp:Xt,mapToColor:Fw,modifyHSL:jt,modifyAlpha:Yt,stringify:qt}),Hw=Array.prototype.slice,Zw=function(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||Kt,this._setter=n||$t,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};Zw.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:ae(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new de(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},de.create=function(t){return new de(t.x,t.y,t.width,t.height)};var tb=function(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};tb.prototype={constructor:tb,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof tb&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,o=l(n,t);return o<0?this:(n.splice(o,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof tb&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e=0&&(this.delFromStorage(t),this._roots.splice(o,1),t instanceof tb&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:we};var ob={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},ab=function(t,e,i){return ob.hasOwnProperty(e)?i*=t.dpr:i},rb={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},sb=9,lb=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],ub=function(t){this.extendFrom(t,!1)};ub.prototype={constructor:ub,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){var n=this,o=i&&i.style,a=!o||t.__attrCachedBy!==rb.STYLE_BIND;t.__attrCachedBy=rb.STYLE_BIND;for(var r=0;r0},extendFrom:function(t,e){if(t)for(var i in t)!t.hasOwnProperty(i)||!0!==e&&(!1===e?this.hasOwnProperty(i):null==t[i])||(this[i]=t[i])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,i){for(var n=("radial"===e.type?Se:be)(t,e,i),o=e.colorStops,a=0;a=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i15)break}s.__drawIndex=m,s.__drawIndex0&&t>n[0]){for(r=0;rt);r++);a=i[n[r]]}if(n.splice(r+1,0,t),i[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else Yw("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n0?.01:0),this._needsManuallyCompositing),a.__builtin__||Yw("ZLevel "+s+" has been used by unkown layer "+a.id),a!==i&&(a.__used=!0,a.__startIndex!==o&&(a.__dirty=!0),a.__startIndex=o,a.incremental?a.__drawIndex=-1:a.__drawIndex=o,e(o),i=a),r.__dirty&&(a.__dirty=!0,a.incremental&&a.__drawIndex<0&&(a.__drawIndex=o))}e(o),this.eachBuiltinLayer(function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?n(i[t],e,!0):i[t]=e;for(var o=0;o=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i=0||n&&l(n,r)<0)){var s=e.getShallow(r);null!=s&&(o[t[a][0]]=s)}}return o}},tS=Qb([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),eS={getLineStyle:function(t){var e=tS(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"===e||null==e?null:"dashed"===e?[n,n]:[i,i]}},iS=Qb([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),nS={getAreaStyle:function(t,e){return iS(this,t,e)}},oS=Math.pow,aS=Math.sqrt,rS=1e-8,sS=1e-4,lS=aS(3),uS=1/3,hS=V(),cS=V(),dS=V(),fS=Math.min,pS=Math.max,gS=Math.sin,mS=Math.cos,vS=2*Math.PI,yS=V(),xS=V(),_S=V(),wS=[],bS=[],SS={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},MS=[],IS=[],TS=[],AS=[],DS=Math.min,CS=Math.max,LS=Math.cos,kS=Math.sin,PS=Math.sqrt,NS=Math.abs,OS="undefined"!=typeof Float32Array,ES=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};ES.prototype={constructor:ES,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=NS(1/Xw/t)||0,this._uy=NS(1/Xw/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(SS.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var i=NS(t-this._xi)>this._ux||NS(e-this._yi)>this._uy||this._len<5;return this.addData(SS.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(SS.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(SS.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(SS.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=LS(o)*i+t,this._yi=kS(o)*i+e,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(SS.R,t,e,i,n),this},closePath:function(){this.addData(SS.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;i0&&f<=t||h<0&&f>=t||0===h&&(c>0&&p<=e||c<0&&p>=e);)f+=h*(i=r[n=this._dashIdx]),p+=c*i,this._dashIdx=(n+1)%g,h>0&&fl||c>0&&pu||s[n%2?"moveTo":"lineTo"](h>=0?DS(f,t):CS(f,t),c>=0?DS(p,e):CS(p,e));h=f-t,c=p-e,this._dashOffset=-PS(h*h+c*c)},_dashedBezierTo:function(t,e,i,n,o,a){var r,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=tn,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,r=0;r<1;r+=.1)s=v(g,t,i,o,r+.1)-v(g,t,i,o,r),l=v(m,e,n,a,r+.1)-v(m,e,n,a,r),y+=PS(s*s+l*l);for(;x<_&&!((w+=f[x])>d);x++);for(r=(w-d)/y;r<=1;)u=v(g,t,i,o,r),h=v(m,e,n,a,r),x%2?p.moveTo(u,h):p.lineTo(u,h),r+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(o,a),s=o-u,l=a-h,this._dashOffset=-PS(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,OS&&(this.data=new Float32Array(t)))},getBoundingRect:function(){MS[0]=MS[1]=TS[0]=TS[1]=Number.MAX_VALUE,IS[0]=IS[1]=AS[0]=AS[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,o=0,a=0;al||NS(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case SS.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],x=s[c++],_=s[c++],w=g>m?g:m,b=g>m?1:g/m,S=g>m?m/g:1,M=v+y;Math.abs(g-m)>.001?(t.translate(f,p),t.rotate(x),t.scale(b,S),t.arc(0,0,w,v,M,1-_),t.scale(1/b,1/S),t.rotate(-x),t.translate(-f,-p)):t.arc(f,p,w,v,M,1-_),1===c&&(e=LS(v)*g+f,i=kS(v)*m+p),n=LS(M)*g+f,o=kS(M)*m+p;break;case SS.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case SS.Z:t.closePath(),n=e,o=i}}}},ES.CMD=SS;var RS=2*Math.PI,zS=2*Math.PI,BS=ES.CMD,VS=2*Math.PI,GS=1e-4,FS=[-1,-1,-1],WS=[-1,-1],HS=fb.prototype.getCanvasPattern,ZS=Math.abs,US=new ES(!0);Pn.prototype={constructor:Pn,type:"path",__dirtyPath:!0,strokeContainThreshold:5,subPixelOptimize:!1,brush:function(t,e){var i=this.style,n=this.path||US,o=i.hasStroke(),a=i.hasFill(),r=i.fill,s=i.stroke,l=a&&!!r.colorStops,u=o&&!!s.colorStops,h=a&&!!r.image,c=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var d;l&&(d=d||this.getBoundingRect(),this._fillGradient=i.getGradient(t,r,d)),u&&(d=d||this.getBoundingRect(),this._strokeGradient=i.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:h&&(t.fillStyle=HS.call(r,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=HS.call(s,t));var f=i.lineDash,p=i.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();if(n.setScale(m[0],m[1]),this.__dirtyPath||f&&!g&&o?(n.beginPath(t),f&&!g&&(n.setLineDash(f),n.setLineDashOffset(p)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),a)if(null!=i.fillOpacity){v=t.globalAlpha;t.globalAlpha=i.fillOpacity*i.opacity,n.fill(t),t.globalAlpha=v}else n.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),o)if(null!=i.strokeOpacity){var v=t.globalAlpha;t.globalAlpha=i.strokeOpacity*i.opacity,n.stroke(t),t.globalAlpha=v}else n.stroke(t);f&&g&&t.setLineDash([]),null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new ES},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new ES),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),r>1e-10&&(o.width+=a/r,o.height+=a/r,o.x-=a/r/2,o.y-=a/r/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,s=o.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),kn(a,r/s,t,e)))return!0}if(o.hasFill())return Ln(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):di.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(w(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&ZS(t[0]-1)>1e-10&&ZS(t[3]-1)>1e-10?Math.sqrt(ZS(t[0]*t[3]-t[2]*t[1])):1}},Pn.extend=function(t){var e=function(e){Pn.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var n=this.shape;for(var o in i)!n.hasOwnProperty(o)&&i.hasOwnProperty(o)&&(n[o]=i[o])}t.init&&t.init.call(this,e)};u(e,Pn);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(Pn,di);var XS=ES.CMD,jS=[[],[],[]],YS=Math.sqrt,qS=Math.atan2,KS=function(t,e){var i,n,o,a,r,s,l=t.data,u=XS.M,h=XS.C,c=XS.L,d=XS.R,f=XS.A,p=XS.Q;for(o=0,a=0;o=11?function(){var e,i=this.__clipPaths,n=this.style;if(i)for(var o=0;oi-2?i-1:c+1],u=t[c>i-3?i-1:c+2]);var p=d*d,g=d*p;n.push([Bn(s[0],f[0],l[0],u[0],d,p,g),Bn(s[1],f[1],l[1],u[1],d,p,g)])}return n},fM=function(t,e,i,n){var o,a,r,s,l=[],u=[],h=[],c=[];if(n){r=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d=i&&a>=o)return{x:i,y:o,width:n-i,height:a-o}},createIcon:Po,Group:tb,Image:fi,Text:rM,Circle:sM,Sector:hM,Ring:cM,Polygon:pM,Polyline:gM,Rect:yM,Line:_M,BezierCurve:bM,Arc:SM,IncrementalDisplayable:Zn,CompoundPath:MM,LinearGradient:TM,RadialGradient:AM,BoundingRect:de}),BM=["textStyle","color"],VM={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(BM):null)},getFont:function(){return So({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return ke(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}},GM=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),FM={getItemStyle:function(t,e){var i=GM(this,t,e),n=this.getBorderLineDash();return n&&(i.lineDash=n),i},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}},WM=h,HM=Bi();No.prototype={constructor:No,init:null,mergeOption:function(t){n(this.option,t,!0)},get:function(t,e){return null==t?this.option:Oo(this.option,this.parsePath(t),!e&&Eo(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&Eo(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,n=null==t?this.option:Oo(this.option,t=this.parsePath(t));return e=e||(i=Eo(this,t))&&i.getModel(t),new No(n,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new(0,this.constructor)(i(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){HM(this).getParent=t},isAnimationEnabled:function(){if(!U_.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},ji(No),Yi(No),WM(No,eS),WM(No,nS),WM(No,VM),WM(No,FM);var ZM=0,UM=1e-4,XM=9007199254740991,jM=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,YM=(Object.freeze||Object)({linearMap:Bo,parsePercent:Vo,round:Go,asc:Fo,getPrecision:Wo,getPrecisionSafe:Ho,getPixelPrecision:Zo,getPercentWithPrecision:Uo,MAX_SAFE_INTEGER:XM,remRadian:Xo,isRadianAroundZero:jo,parseDate:Yo,quantity:qo,nice:$o,quantile:function(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),o=+t[n-1],a=i-n;return a?o+a*(t[n]-o):o},reformIntervals:Jo,isNumeric:Qo}),qM=L,KM=/([&<>"'])/g,$M={"&":"&","<":"<",">":">",'"':""","'":"'"},JM=["a","b","c","d","e","f","g"],QM=function(t,e){return"{"+t+(null==e?"":e)+"}"},tI=ze,eI=(Object.freeze||Object)({addCommas:ta,toCamelCase:ea,normalizeCssArray:qM,encodeHTML:ia,formatTpl:na,formatTplSimple:oa,getTooltipMarker:aa,formatTime:sa,capitalFirst:la,truncateText:tI,getTextBoundingRect:function(t){return ke(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,o,a,r,s){return ke(t,e,i,n,o,s,a,r)}}),iI=d,nI=["left","right","top","bottom","width","height"],oI=[["width","left","right"],["height","top","bottom"]],aI=ua,rI=(v(ua,"vertical"),v(ua,"horizontal"),{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}}),sI=Bi(),lI=No.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){No.call(this,t,e,i,n),this.uid=Ro("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?ga(t):{};n(t,e.getTheme().get(this.mainType)),n(t,this.getDefaultOption()),i&&pa(t,o,i)},mergeOption:function(t,e){n(this.option,t,!0);var i=this.layoutMode;i&&pa(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=sI(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var o=i.prototype.defaultOption;o&&e.push(o),i=i.superClass}for(var a={},r=e.length-1;r>=0;r--)a=n(a,e[r],!0);t.defaultOption=a}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});$i(lI,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,i){t=Ui(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=Ui(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o}}(lI),function(t,e){function i(t){var i={},a=[];return d(t,function(r){var s=n(i,r),u=o(s.originalDeps=e(r),t);s.entryCount=u.length,0===s.entryCount&&a.push(r),d(u,function(t){l(s.predecessor,t)<0&&s.predecessor.push(t);var e=n(i,t);l(e.successor,t)<0&&e.successor.push(r)})}),{graph:i,noEntryList:a}}function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function o(t,e){var i=[];return d(t,function(t){l(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,n,o){function a(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}if(t.length){var r=i(e),s=r.graph,l=r.noEntryList,u={};for(d(t,function(t){u[t]=!0});l.length;){var h=l.pop(),c=s[h],f=!!u[h];f&&(n.call(o,h,c.originalDeps.slice()),delete u[h]),d(c.successor,f?function(t){u[t]=!0,a(t)}:a)}d(u,function(){throw new Error("Circle dependency may exists")})}}}(lI,function(t){var e=[];return d(lI.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return Ui(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(lI,rI);var uI="";"undefined"!=typeof navigator&&(uI=navigator.platform||"");var hI={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:uI.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},cI=Bi(),dI={clearColorPalette:function(){cI(this).colorIdx=0,cI(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=cI(e=e||this),o=n.colorIdx||0,a=n.colorNameMap=n.colorNameMap||{};if(a.hasOwnProperty(t))return a[t];var r=Di(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?va(s,i):r;if((l=l||r)&&l.length){var u=l[o];return t&&(a[t]=u),n.colorIdx=(o+1)%l.length,u}}},fI={cartesian2d:function(t,e,i,n){var o=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",o),i.set("y",a),xa(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),xa(a)&&(n.set("y",a),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var o=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",o),xa(o)&&(n.set("single",o),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var o=t.getReferringComponents("polar")[0],a=o.findAxisModel("radiusAxis"),r=o.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",r),xa(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),xa(r)&&(n.set("angle",r),e.firstCategoryDimIndex=1)},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,e,i,n){var o=t.ecModel,a=o.getComponent("parallel",t.get("parallelIndex")),r=e.coordSysDims=a.dimensions.slice();d(a.parallelAxisIndex,function(t,a){var s=o.getComponent("parallelAxis",t),l=r[a];i.set(l,s),xa(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},pI="original",gI="arrayRows",mI="objectRows",vI="keyedColumns",yI="unknown",xI="typedArray",_I="column",wI="row";_a.seriesDataToSource=function(t){return new _a({data:t,sourceFormat:S(t)?xI:pI,fromDataset:!1})},Yi(_a);var bI=Bi(),SI="\0_ec_inner",MI=No.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new No(i),this._optionManager=n},setOption:function(t,e){k(!(SI in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,i=this._optionManager;if(!t||"recreate"===t){var n=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(n)):Ea.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&d(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){var e=this.option,o=this._componentsMap,r=[];Sa(this),d(t,function(t,o){null!=t&&(lI.hasClass(o)?o&&r.push(o):e[o]=null==e[o]?i(t):n(e[o],t,!0))}),lI.topologicalTravel(r,lI.getAllClassMainTypes(),function(i,n){var r=Di(t[i]),s=Pi(o.get(i),r);Ni(s),d(s,function(t,e){var n=t.option;w(n)&&(t.keyInfo.mainType=i,t.keyInfo.subType=za(i,n,t.exist))});var l=Ra(o,n);e[i]=[],o.set(i,[]),d(s,function(t,n){var r=t.exist,s=t.option;if(k(w(s)||r,"Empty component definition"),s){var u=lI.getClass(i,t.keyInfo.subType,!0);if(r&&r instanceof u)r.name=t.keyInfo.name,r.mergeOption(s,this),r.optionUpdated(s,!1);else{var h=a({dependentModels:l,componentIndex:n},t.keyInfo);a(r=new u(s,this,this,h),h),r.init(s,this,this,h),r.optionUpdated(null,!0)}}else r.mergeOption({},this),r.optionUpdated({},!1);o.get(i)[n]=r,e[i][n]=r.option},this),"series"===i&&Ba(this,o.get("series"))},this),this._seriesIndicesMap=R(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=i(this.option);return d(t,function(e,i){if(lI.hasClass(i)){for(var n=(e=Di(e)).length-1;n>=0;n--)Ei(e[n])&&e.splice(n,1);t[i]=e}}),delete t[SI],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,o=t.name,a=this._componentsMap.get(e);if(!a||!a.length)return[];var r;if(null!=i)y(i)||(i=[i]),r=g(f(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=y(n);r=g(a,function(t){return s&&l(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=y(o);r=g(a,function(t){return u&&l(o,t.name)>=0||!u&&t.name===o})}else r=a.slice();return Va(r,t)},findComponents:function(t){var e=t.query,i=t.mainType,n=function(t){var e=i+"Index",n=i+"Id",o=i+"Name";return!t||null==t[e]&&null==t[n]&&null==t[o]?null:{mainType:i,index:t[e],id:t[n],name:t[o]}}(e);return function(e){return t.filter?g(e,t.filter):e}(Va(n?this.queryComponents(n):this._componentsMap.get(i),t))},eachComponent:function(t,e,i){var n=this._componentsMap;"function"==typeof t?(i=e,e=t,n.each(function(t,n){d(t,function(t,o){e.call(i,n,t,o)})})):_(t)?d(n.get(t),e,i):w(t)&&d(this.findComponents(t),e,i)},getSeriesByName:function(t){return g(this._componentsMap.get("series"),function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){return g(this._componentsMap.get("series"),function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){d(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){d(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){d(this._seriesIndices,function(n){var o=this._componentsMap.get("series")[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return d(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){Ba(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;Ba(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),lI.topologicalTravel(i,lI.getAllClassMainTypes(),function(i,n){d(e.get(i),function(e){("series"!==i||!Na(e,t))&&e.restoreData()})})}});h(MI,dI);var II=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],TI={};Fa.prototype={constructor:Fa,create:function(t,e){var i=[];d(TI,function(n,o){var a=n.create(t,e);i=i.concat(a||[])}),this._coordinateSystems=i},update:function(t,e){d(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},Fa.register=function(t,e){TI[t]=e},Fa.get=function(t){return TI[t]};var AI=d,DI=i,CI=f,LI=n,kI=/^(min|max)?(.+)$/;Wa.prototype={constructor:Wa,setOption:function(t,e){t&&d(Di(t.series),function(t){t&&t.data&&S(t.data)&&N(t.data)}),t=DI(t,!0);var i=this._optionBackup,n=Ha.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(ja(i.baseOption,n.baseOption),n.timelineOptions.length&&(i.timelineOptions=n.timelineOptions),n.mediaList.length&&(i.mediaList=n.mediaList),n.mediaDefault&&(i.mediaDefault=n.mediaDefault)):this._optionBackup=n},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=CI(e.timelineOptions,DI),this._mediaList=CI(e.mediaList,DI),this._mediaDefault=DI(e.mediaDefault),this._currentMediaIndices=[],DI(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=DI(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,a=[],r=[];if(!n.length&&!o)return r;for(var s=0,l=n.length;s=1)&&(t=1),t}var i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var o=this.context;o.data=o.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var r=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),u=t&&t.modDataCount||0;r===l&&s===u||(a="reset");var h;(this._dirty||"reset"===a)&&(this._dirty=!1,h=yr(this,n)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=i?i._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!n&&(h||d=i?null:t1&&a>0?e:t}};return s}();UI.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},UI.unfinished=function(){return this._progress&&this._dueIndex":"\n",s="richText"===n,l={},u=0,h=this.getData(),c=h.mapDimension("defaultedTooltip",!0),f=c.length,g=this.getRawValue(t),m=y(g),v=h.getItemVisual(t,"color");w(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var x=(f>1||m&&!f?function(i){function o(t,i){var o=h.getDimensionInfo(i);if(o&&!1!==o.otherDims.tooltip){var c=o.type,d="sub"+a.seriesIndex+"at"+u,p=aa({color:v,type:"subItem",renderMode:n,markerId:d}),g="string"==typeof p?p:p.content,m=(r?g+ia(o.displayName||"-")+": ":"")+ia("ordinal"===c?t+"":"time"===c?e?"":sa("yyyy/MM/dd hh:mm:ss",t):ta(t));m&&f.push(m),s&&(l[d]=v,++u)}}var r=p(i,function(t,e,i){var n=h.getDimensionInfo(i);return t|=n&&!1!==n.tooltip&&null!=n.displayName},0),f=[];c.length?d(c,function(e){o(fr(h,t,e),e)}):d(i,o);var g=r?s?"\n":"
":"",m=g+f.join(g||", ");return{renderMode:n,content:m,style:l}}(g):o(f?fr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=aa({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?ia(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?ia(S)+": "+x:x),markers:l}},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=dI.getColorFromPalette.call(this,t,e,i);return o||(o=n.getColorFromPalette(t,e,i)),o},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});h(YI,ZI),h(YI,dI);var qI=function(){this.group=new tb,this.uid=Ro("viewComponent")};qI.prototype={constructor:qI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var KI=qI.prototype;KI.updateView=KI.updateLayout=KI.updateVisual=function(t,e,i,n){},ji(qI),$i(qI,{registerWhenExtend:!0});var $I=function(){var t=Bi();return function(e){var i=t(e),n=e.pipelineContext,o=i.large,a=i.progressiveRender,r=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(o^r||a^s)&&"reset"}},JI=Bi(),QI=$I();Ar.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Cr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Cr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var tT=Ar.prototype;tT.updateView=tT.updateLayout=tT.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},ji(Ar),$i(Ar,{registerWhenExtend:!0}),Ar.markUpdateMethod=function(t,e){JI(t).updateMethod=e};var eT={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},iT="\0__throttleOriginMethod",nT="\0__throttleRate",oT="\0__throttleType",aT={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=(t.visualColorAccessPath||"itemStyle.color").split("."),o=t.get(n)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(i.setVisual("color",o),!e.isSeriesFiltered(t)){"function"!=typeof o||o instanceof IM||i.each(function(e){i.setItemVisual(e,"color",o(t.getDataParams(e)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e).get(n,!0);null!=i&&t.setItemVisual(e,"color",i)}:null}}}},rT={toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},sT=function(t,e){function i(t,e){if("string"!=typeof t)return t;var i=t;return d(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function n(t){var e=a.get(t);if(null==e){for(var i=t.split("."),n=rT.aria,o=0;o1?"series.multiple.prefix":"series.single.prefix"),{seriesCount:r}),e.eachSeries(function(t,e){if(e1?"multiple":"single")+".";a=i(a=n(s?u+"withName":u+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:o(t.subType)});var c=t.getData();window.data=c,c.count()>l?a+=i(n("data.partialData"),{displayCnt:l}):a+=n("data.allData");for(var d=[],p=0;pi.blockIndex?i.step:null,a=n&&n.modDataCount;return{step:o,modBy:null!=a?Math.ceil(a/o):null,modDataCount:a}}},uT.getPipeline=function(t){return this._pipelineMap.get(t)},uT.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),o=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,a=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:o,modDataCount:r,large:a}},uT.restorePipelines=function(t){var e=this,i=e._pipelineMap=R();t.eachSeries(function(t){var n=t.getProgressive(),o=t.uid;i.set(o,{id:o,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:n&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(n||700),count:0}),jr(e,t,t.dataTask)})},uT.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),i=this.api;d(this._allHandlers,function(n){var o=t.get(n.uid)||t.set(n.uid,[]);n.reset&&zr(this,n,o,e,i),n.overallReset&&Br(this,n,o,e,i)},this)},uT.prepareView=function(t,e,i,n){var o=t.renderTask,a=o.context;a.model=e,a.ecModel=i,a.api=n,o.__block=!t.incrementalPrepareRender,jr(this,e,o)},uT.performDataProcessorTasks=function(t,e){Rr(this,this._dataProcessorHandlers,t,e,{block:!0})},uT.performVisualTasks=function(t,e,i){Rr(this,this._visualHandlers,t,e,i)},uT.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},uT.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var hT=uT.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},cT=Ur(0);Er.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:Yr(t)}),t.uid=Ro("stageHandler"),e&&(t.visualType=e),t};var dT,fT={},pT={};qr(fT,MI),qr(pT,Ga),fT.eachSeriesByType=fT.eachRawSeriesByType=function(t){dT=t},fT.eachComponent=function(t){"series"===t.mainType&&t.subType&&(dT=t.subType)};var gT=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],mT={color:gT,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],gT]},vT=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],yT={color:vT,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:"#eee"},crossStyle:{color:"#eee"}}},legend:{textStyle:{color:"#eee"}},textStyle:{color:"#eee"},title:{textStyle:{color:"#eee"}},toolbox:{iconStyle:{normal:{borderColor:"#eee"}}},dataZoom:{textStyle:{color:"#eee"}},visualMap:{textStyle:{color:"#eee"}},timeline:{lineStyle:{color:"#eee"},itemStyle:{normal:{color:vT[1]}},label:{normal:{textStyle:{color:"#eee"}}},controlStyle:{normal:{color:"#eee",borderColor:"#eee"}}},timeAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},logAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},valueAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},categoryAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},line:{symbol:"circle"},graph:{color:vT},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};yT.categoryAxis.splitLine.show=!1,lI.extend({type:"dataset",defaultOption:{seriesLayoutBy:_I,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){wa(this)}}),qI.extend({type:"dataset"});var xT=Pn.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=.5522848,n=e.cx,o=e.cy,a=e.rx,r=e.ry,s=a*i,l=r*i;t.moveTo(n-a,o),t.bezierCurveTo(n-a,o-l,n-s,o-r,n,o-r),t.bezierCurveTo(n+s,o-r,n+a,o-l,n+a,o),t.bezierCurveTo(n+a,o+l,n+s,o+r,n,o+r),t.bezierCurveTo(n-s,o+r,n-a,o+l,n-a,o),t.closePath()}}),_T=/[\s,]+/;$r.prototype.parse=function(t,e){e=e||{};var i=Kr(t);if(!i)throw new Error("Illegal svg");var n=new tb;this._root=n;var o=i.getAttribute("viewBox")||"",a=parseFloat(i.getAttribute("width")||e.width),r=parseFloat(i.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(r)&&(r=null),es(i,n,null,!0);for(var s=i.firstChild;s;)this._parseNode(s,n),s=s.nextSibling;var l,u;if(o){var h=P(o).split(_T);h.length>=4&&(l={x:parseFloat(h[0]||0),y:parseFloat(h[1]||0),width:parseFloat(h[2]),height:parseFloat(h[3])})}if(l&&null!=a&&null!=r&&(u=as(l,a,r),!e.ignoreViewBox)){var c=n;(n=new tb).add(c),c.scale=u.scale.slice(),c.position=u.position.slice()}return e.ignoreRootClip||null==a||null==r||n.setClipPath(new yM({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:l,viewBoxTransform:u}},$r.prototype._parseNode=function(t,e){var i=t.nodeName.toLowerCase();"defs"===i?this._isDefine=!0:"text"===i&&(this._isText=!0);var n;if(this._isDefine){if(r=bT[i]){var o=r.call(this,t),a=t.getAttribute("id");a&&(this._defs[a]=o)}}else{var r=wT[i];r&&(n=r.call(this,t,e),e.add(n))}for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,n),3===s.nodeType&&this._isText&&this._parseText(s,n),s=s.nextSibling;"defs"===i?this._isDefine=!1:"text"===i&&(this._isText=!1)},$r.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var o=new rM({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});Qr(e,o),es(t,o,this._defs);var a=o.style.fontSize;a&&a<9&&(o.style.fontSize=9,o.scale=o.scale||[1,1],o.scale[0]*=a/9,o.scale[1]*=a/9);var r=o.getBoundingRect();return this._textX+=r.width,e.add(o),o};var wT={g:function(t,e){var i=new tb;return Qr(e,i),es(t,i,this._defs),i},rect:function(t,e){var i=new yM;return Qr(e,i),es(t,i,this._defs),i.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),i},circle:function(t,e){var i=new sM;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),i},line:function(t,e){var i=new _M;return Qr(e,i),es(t,i,this._defs),i.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),i},ellipse:function(t,e){var i=new xT;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),i},polygon:function(t,e){var i=t.getAttribute("points");i&&(i=ts(i));var n=new pM({shape:{points:i||[]}});return Qr(e,n),es(t,n,this._defs),n},polyline:function(t,e){var i=new Pn;Qr(e,i),es(t,i,this._defs);var n=t.getAttribute("points");return n&&(n=ts(n)),new gM({shape:{points:n||[]}})},image:function(t,e){var i=new fi;return Qr(e,i),es(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(o),this._textY=parseFloat(n)+parseFloat(a);var r=new tb;return Qr(e,r),es(t,r,this._defs),r},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0,r=new tb;return Qr(e,r),es(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=Rn(t.getAttribute("d")||"");return Qr(e,i),es(t,i,this._defs),i}},bT={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),o=parseInt(t.getAttribute("y2")||0,10),a=new TM(e,i,n,o);return Jr(t,a),a},radialgradient:function(t){}},ST={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-align":"textAlign","alignment-baseline":"textBaseline"},MT=/url\(\s*#(.*?)\)/,IT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,TT=/([^\s:;]+)\s*:\s*([^:;]+)/g,AT=R(),DT={registerMap:function(t,e,i){var n;return y(e)?n=e:e.svg?n=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),n=[{type:"geoJSON",source:e,specialAreas:i}]),d(n,function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,CT[e])(t)}),AT.set(t,n)},retrieveMap:function(t){return AT.get(t)}},CT={geoJSON:function(t){var e=t.source;t.geoJSON=_(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=Kr(t.source)}},LT=k,kT=d,PT=x,NT=w,OT=lI.parseClassType,ET={zrender:"4.0.6"},RT=1e3,zT=1e3,BT=3e3,VT={PROCESSOR:{FILTER:RT,STATISTIC:5e3},VISUAL:{LAYOUT:zT,GLOBAL:2e3,CHART:BT,COMPONENT:4e3,BRUSH:5e3}},GT="__flagInMainProcess",FT="__optionUpdated",WT=/^[a-zA-Z0-9_]+$/;ls.prototype.on=ss("on"),ls.prototype.off=ss("off"),ls.prototype.one=ss("one"),h(ls,fw);var HT=us.prototype;HT._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[FT]){var e=this[FT].silent;this[GT]=!0,cs(this),ZT.update.call(this),this[GT]=!1,this[FT]=!1,gs.call(this,e),ms.call(this,e)}else if(t.unfinished){var i=1,n=this._model;this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),fs(this,n),t.performVisualTasks(n),bs(this,this._model,0,"remain"),i-=+new Date-o}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},HT.getDom=function(){return this._dom},HT.getZr=function(){return this._zr},HT.setOption=function(t,e,i){var n;if(NT(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[GT]=!0,!this._model||e){var o=new Wa(this._api),a=this._theme,r=this._model=new MI(null,null,a,o);r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,qT),i?(this[FT]={silent:n},this[GT]=!1):(cs(this),ZT.update.call(this),this._zr.flush(),this[FT]=!1,this[GT]=!1,gs.call(this,n),ms.call(this,n))},HT.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},HT.getModel=function(){return this._model},HT.getOption=function(){return this._model&&this._model.getOption()},HT.getWidth=function(){return this._zr.getWidth()},HT.getHeight=function(){return this._zr.getHeight()},HT.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},HT.getRenderedCanvas=function(t){if(U_.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},HT.getSvgDataUrl=function(){if(U_.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},HT.getDataURL=function(t){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;kT(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return kT(n,function(t){t.group.ignore=!1}),a},HT.getConnectedDataURL=function(t){if(U_.canvasSupported){var e=this.group,n=Math.min,o=Math.max;if(eA[e]){var a=1/0,r=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(tA,function(h,c){if(h.group===e){var d=h.getRenderedCanvas(i(t)),f=h.getDom().getBoundingClientRect();a=n(f.left,a),r=n(f.top,r),s=o(f.right,s),l=o(f.bottom,l),u.push({dom:d,left:f.left,top:f.top})}});var c=(s*=h)-(a*=h),f=(l*=h)-(r*=h),p=iw();p.width=c,p.height=f;var g=Ii(p);return kT(u,function(t){var e=new fi({style:{x:t.left*h-a,y:t.top*h-r,image:t.dom}});g.add(e)}),g.refreshImmediately(),p.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},HT.convertToPixel=v(hs,"convertToPixel"),HT.convertFromPixel=v(hs,"convertFromPixel"),HT.containPixel=function(t,e){var i;return t=Vi(this._model,t),d(t,function(t,n){n.indexOf("Models")>=0&&d(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},HT.getVisual=function(t,e){var i=(t=Vi(this._model,t,{defaultMainType:"series"})).seriesModel.getData(),n=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?i.indexOfRawIndex(t.dataIndex):null;return null!=n?i.getItemVisual(n,e):i.getVisual(e)},HT.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},HT.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var ZT={prepareAndUpdate:function(t){cs(this),ZT.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,o=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),o.create(e,i),a.performDataProcessorTasks(e,t),fs(this,e),o.update(e,i),xs(e),a.performVisualTasks(e,t),_s(this,e,i,t);var r=e.get("backgroundColor")||"transparent";if(U_.canvasSupported)n.setBackgroundColor(r);else{var s=Gt(r);r=qt(s,"rgb"),0===s[3]&&(r="transparent")}Ss(e,i)}},updateTransform:function(t){var e=this._model,i=this,n=this._api;if(e){var o=[];e.eachComponent(function(a,r){var s=i.getViewOfComponentModel(r);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(r,e,n,t);l&&l.update&&o.push(s)}else o.push(s)});var a=R();e.eachSeries(function(o){var r=i._chartsMap[o.__viewId];if(r.updateTransform){var s=r.updateTransform(o,e,n,t);s&&s.update&&a.set(o.uid,1)}else a.set(o.uid,1)}),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),bs(i,e,0,t,a),Ss(e,this._api)}},updateView:function(t){var e=this._model;e&&(Ar.markUpdateMethod(t,"updateView"),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),_s(this,this._model,this._api,t),Ss(e,this._api))},updateVisual:function(t){ZT.update.call(this,t)},updateLayout:function(t){ZT.update.call(this,t)}};HT.resize=function(t){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var i=e.resetOption("media"),n=t&&t.silent;this[GT]=!0,i&&cs(this),ZT.update.call(this),this[GT]=!1,gs.call(this,n),ms.call(this,n)}},HT.showLoading=function(t,e){if(NT(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),QT[t]){var i=QT[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},HT.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},HT.makeActionFromEvent=function(t){var e=a({},t);return e.type=jT[t.type],e},HT.dispatchAction=function(t,e){NT(e)||(e={silent:!!e}),XT[t.type]&&this._model&&(this[GT]?this._pendingActions.push(t):(ps.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&U_.browser.weChat&&this._throttledZrFlush(),gs.call(this,e.silent),ms.call(this,e.silent)))},HT.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},HT.on=ss("on"),HT.off=ss("off"),HT.one=ss("one");var UT=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];HT._initEvents=function(){kT(UT,function(t){var e=function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var r=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=r&&r.getDataParams(o.dataIndex,o.dataType,o)||{}}else o&&o.eventData&&(i=a({},o.eventData));if(i){var s=i.componentType,l=i.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=i.seriesIndex);var u=s&&null!=l&&n.getComponent(s,l),h=u&&this["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];i.event=e,i.type=t,this._ecEventProcessor.eventInfo={targetEl:o,packedEvent:i,model:u,view:h},this.trigger(t,i)}};e.zrEventfulCallAtLast=!0,this._zr.on(t,e,this)},this),kT(jT,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},HT.isDisposed=function(){return this._disposed},HT.clear=function(){this.setOption({series:[]},!0)},HT.dispose=function(){if(!this._disposed){this._disposed=!0,Fi(this.getDom(),oA,"");var t=this._api,e=this._model;kT(this._componentsViews,function(i){i.dispose(e,t)}),kT(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete tA[this.id]}},h(us,fw),Ds.prototype={constructor:Ds,normalizeQuery:function(t){var e={},i={},n={};if(_(t)){var o=OT(t);e.mainType=o.main||null,e.subType=o.sub||null}else{var a=["Index","Name","Id"],r={name:1,dataIndex:1,dataType:1};d(t,function(t,o){for(var s=!1,l=0;l0&&h===o.length-u.length){var c=o.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}r.hasOwnProperty(o)&&(i[o]=t,s=!0),s||(n[o]=t)})}return{cptQuery:e,dataQuery:i,otherQuery:n}},filter:function(t,e,i){function n(t,e,i,n){return null==t[i]||e[n||i]===t[i]}var o=this.eventInfo;if(!o)return!0;var a=o.targetEl,r=o.packedEvent,s=o.model,l=o.view;if(!s||!l)return!0;var u=e.cptQuery,h=e.dataQuery;return n(u,s,"mainType")&&n(u,s,"subType")&&n(u,s,"index","componentIndex")&&n(u,s,"name")&&n(u,s,"id")&&n(h,r,"name")&&n(h,r,"dataIndex")&&n(h,r,"dataType")&&(!l.filterForExposedEvent||l.filterForExposedEvent(t,e.otherQuery,a,r))},afterTrigger:function(){this.eventInfo=null}};var XT={},jT={},YT=[],qT=[],KT=[],$T=[],JT={},QT={},tA={},eA={},iA=new Date-0,nA=new Date-0,oA="_echarts_instance_",aA=Ls;Bs(2e3,aT),Ns(BI),Os(5e3,function(t){var e=R();t.eachSeries(function(t){var i=t.get("stack");if(i){var n=e.get(i)||e.set(i,[]),o=t.getData(),a={stackResultDimension:o.getCalculationInfo("stackResultDimension"),stackedOverDimension:o.getCalculationInfo("stackedOverDimension"),stackedDimension:o.getCalculationInfo("stackedDimension"),stackedByDimension:o.getCalculationInfo("stackedByDimension"),isStackedByIndex:o.getCalculationInfo("isStackedByIndex"),data:o,seriesModel:t};if(!a.stackedDimension||!a.isStackedByIndex&&!a.stackedByDimension)return;n.length&&o.setCalculationInfo("stackedOnSeries",n[n.length-1].seriesModel),n.push(a)}}),e.each(ar)}),Gs("default",function(t,e){r(e=e||{},{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new yM({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new SM({shape:{startAngle:-lT/2,endAngle:-lT/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),o=new yM({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});n.animateShape(!0).when(1e3,{endAngle:3*lT/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*lT/2}).delay(300).start("circularInOut");var a=new tb;return a.add(n),a.add(o),a.add(i),a.resize=function(){var e=t.getWidth()/2,a=t.getHeight()/2;n.setShape({cx:e,cy:a});var r=n.shape.r;o.setShape({x:e-r,y:a-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},a.resize(),a}),Es({type:"highlight",event:"highlight",update:"highlight"},B),Es({type:"downplay",event:"downplay",update:"downplay"},B),Ps("light",mT),Ps("dark",yT);var rA={};Xs.prototype={constructor:Xs,add:function(t){return this._add=t,this},update:function(t){return this._update=t,this},remove:function(t){return this._remove=t,this},execute:function(){var t=this._old,e=this._new,i={},n=[],o=[];for(js(t,{},n,"_oldKeyGetter",this),js(e,i,o,"_newKeyGetter",this),a=0;ax[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},el(this)},yA._initDataFromProvider=function(t,e){if(!(t>=e)){for(var i,n=this._chunkSize,o=this._rawData,a=this._storage,r=this.dimensions,s=r.length,l=this._dimensionInfos,u=this._nameList,h=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;pM[1]&&(M[1]=S)}if(!o.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var T=r[i],A=a[T][y];if(A){I=A[x];var D=l[T].ordinalMeta;D&&D.categories.length&&(I=D.categories[I])}}var C=null==m?null:m.id;null==C&&null!=I&&(d[I]=d[I]||0,C=I,d[I]>0&&(C+="__ec__"+d[I]),d[I]++),null!=C&&(h[v]=C)}}!o.persistent&&o.clean&&o.clean(),this._rawCount=this._count=e,this._extent={},el(this)}},yA.count=function(){return this._count},yA.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){n=new e(i);for(o=0;o=0&&e=0&&ea&&(a=s)}return i=[o,a],this._extent[t]=i,i},yA.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},yA.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},yA.getCalculationInfo=function(t){return this._calculationInfo[t]},yA.setCalculationInfo=function(t,e){lA(t)?a(this._calculationInfo,t):this._calculationInfo[t]=e},yA.getSum=function(t){var e=0;if(this._storage[t])for(var i=0,n=this.count();i=this._rawCount||t<0)return-1;var e=this._indices,i=e[t];if(null!=i&&it))return a;o=a-1}}return-1},yA.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var o=Number.MAX_VALUE,a=-1,r=0,s=this.count();r=0&&a<0)&&(o=u,a=l,n.length=0),n.push(r))}return n},yA.getRawIndex=nl,yA.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i=l&&w<=u||isNaN(w))&&(a[r++]=c),c++;h=!0}else if(2===n){for(var d=this._storage[s],v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1],f=0;f=l&&w<=u||isNaN(w))&&(b>=y&&b<=x||isNaN(b))&&(a[r++]=c),c++}h=!0}}if(!h)if(1===n)for(m=0;m=l&&w<=u||isNaN(w))&&(a[r++]=M)}else for(m=0;mt[I][1])&&(S=!1)}S&&(a[r++]=this.getRawIndex(m))}return rb[1]&&(b[1]=w)}}}return o},yA.downSample=function(t,e,i,n){for(var o=sl(this,[t]),a=o._storage,r=[],s=Math.floor(1/e),l=a[t],u=this.count(),h=this._chunkSize,c=o._rawExtent[t],d=new($s(this))(u),f=0,p=0;pu-p&&(s=u-p,r.length=s);for(var g=0;gc[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=ol,o},yA.getItemModel=function(t){var e=this.hostModel;return new No(this.getRawDataItem(t),e,e&&e.ecModel)},yA.diff=function(t){var e=this;return new Xs(t?t.getIndices():[],this.getIndices(),function(e){return al(t,e)},function(t){return al(e,t)})},yA.getVisual=function(t){var e=this._visual;return e&&e[t]},yA.setVisual=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},yA.setLayout=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},yA.getLayout=function(t){return this._layout[t]},yA.getItemLayout=function(t){return this._itemLayouts[t]},yA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},yA.clearItemLayouts=function(){this._itemLayouts.length=0},yA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},yA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,lA(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},yA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var xA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};yA.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(xA,e)),this._graphicEls[t]=e},yA.getItemGraphicEl=function(t){return this._graphicEls[t]},yA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},yA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new vA(e,this.hostModel)}if(t._storage=this._storage,Qs(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?ol:nl,t},yA.wrapMethod=function(t,e){var i=this[t];"function"==typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(C(arguments)))})},yA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],yA.CHANGABLE_METHODS=["filterSelf","selectRange"];var _A=function(t,e){return e=e||{},hl(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};xl.prototype.parse=function(t){return t},xl.prototype.getSetting=function(t){return this._setting[t]},xl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},xl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},xl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},xl.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},xl.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},xl.prototype.getExtent=function(){return this._extent.slice()},xl.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},xl.prototype.isBlank=function(){return this._isBlank},xl.prototype.setBlank=function(t){this._isBlank=t},xl.prototype.getLabel=null,ji(xl),$i(xl,{registerWhenExtend:!0}),_l.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&f(i,bl);return new _l({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var wA=_l.prototype;wA.getOrdinal=function(t){return wl(this).get(t)},wA.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!=typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=wl(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var bA=xl.prototype,SA=xl.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new _l({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),bA.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return bA.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(bA.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:B,niceExtent:B});SA.create=function(){return new SA};var MA=Go,IA=Go,TA=xl.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),TA.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Ml(t)},getTicks:function(){return Al(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getLabel:function(t,e){if(null==t)return"";var i=e&&e.precision;return null==i?i=Ho(t)||0:"auto"===i&&(i=this._intervalPrecision),t=IA(t,i,!0),ta(t)},niceTicks:function(t,e,i){t=t||5;var n=this._extent,o=n[1]-n[0];if(isFinite(o)){o<0&&(o=-o,n.reverse());var a=Sl(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax?e[0]-=i/2:(e[1]+=i/2,e[0]-=i/2)}else e[1]=1;var n=e[1]-e[0];isFinite(n)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var o=this._interval;t.fixMin||(e[0]=IA(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=IA(Math.ceil(e[1]/o)*o))}});TA.create=function(){return new TA};var AA="__ec_stack_",DA="undefined"!=typeof Float32Array?Float32Array:Array,CA={seriesType:"bar",plan:$I(),reset:function(t){if(Rl(t)&&zl(t)){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),o=i.getOtherAxis(n),a=e.mapDimension(o.dim),r=e.mapDimension(n.dim),s=o.isHorizontal(),l=s?0:1,u=Ol(Pl([t]),n,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var n,h=new DA(2*t.count),c=[],d=[],f=0;null!=(n=t.next());)d[l]=e.get(a,n),d[1-l]=e.get(r,n),c=i.dataToPoint(d,null,c),h[f++]=c[0],h[f++]=c[1];e.setLayout({largePoints:h,barWidth:u,valueAxisStart:Bl(0,o),valueAxisHorizontal:s})}}}}},LA=TA.prototype,kA=Math.ceil,PA=Math.floor,NA=function(t,e,i,n){for(;i>>1;t[o][1]i&&(a=i);var r=EA.length,s=NA(EA,a,0,r),l=EA[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=$o(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(kA((n[0]-h)/u)*u+h),Math.round(PA((n[1]-h)/u)*u+h)];Tl(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Yo(t)}});d(["contain","normalize"],function(t){OA.prototype[t]=function(e){return LA[t].call(this,this.parse(e))}});var EA=[["hh:mm:ss",1e3],["hh:mm:ss",5e3],["hh:mm:ss",1e4],["hh:mm:ss",15e3],["hh:mm:ss",3e4],["hh:mm\nMM-dd",6e4],["hh:mm\nMM-dd",3e5],["hh:mm\nMM-dd",6e5],["hh:mm\nMM-dd",9e5],["hh:mm\nMM-dd",18e5],["hh:mm\nMM-dd",36e5],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",216e5],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",864e5],["MM-dd\nyyyy",1728e5],["MM-dd\nyyyy",2592e5],["MM-dd\nyyyy",3456e5],["MM-dd\nyyyy",432e6],["MM-dd\nyyyy",5184e5],["week",6048e5],["MM-dd\nyyyy",864e6],["week",12096e5],["week",18144e5],["month",26784e5],["week",36288e5],["month",53568e5],["week",6048e6],["quarter",8208e6],["month",107136e5],["month",13392e6],["half-year",16416e6],["month",214272e5],["month",26784e6],["year",32832e6]];OA.create=function(t){return new OA({useUTC:t.ecModel.get("useUTC")})};var RA=xl.prototype,zA=TA.prototype,BA=Ho,VA=Go,GA=Math.floor,FA=Math.ceil,WA=Math.pow,HA=Math.log,ZA=xl.extend({type:"log",base:10,$constructor:function(){xl.apply(this,arguments),this._originalScale=new TA},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return f(zA.getTicks.call(this),function(n){var o=Go(WA(this.base,n));return o=n===e[0]&&t.__fixMin?Vl(o,i[0]):o,o=n===e[1]&&t.__fixMax?Vl(o,i[1]):o},this)},getLabel:zA.getLabel,scale:function(t){return t=RA.scale.call(this,t),WA(this.base,t)},setExtent:function(t,e){var i=this.base;t=HA(t)/HA(i),e=HA(e)/HA(i),zA.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=RA.getExtent.call(this);e[0]=WA(t,e[0]),e[1]=WA(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Vl(e[0],n[0])),i.__fixMax&&(e[1]=Vl(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=HA(t[0])/HA(e),t[1]=HA(t[1])/HA(e),RA.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=qo(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[Go(FA(e[0]/n)*n),Go(GA(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){zA.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){ZA.prototype[t]=function(e){return e=HA(e)/HA(this.base),RA[t].call(this,e)}}),ZA.create=function(){return new ZA};var UA={getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getMax:function(t){var e=this.option,i=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=i&&"dataMax"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:B,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},XA=Un({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n+a),t.lineTo(i-o,n+a),t.closePath()}}),jA=Un({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n),t.lineTo(i,n+a),t.lineTo(i-o,n),t.closePath()}}),YA=Un({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,a=Math.max(o,e.height),r=o/2,s=r*r/(a-r),l=n-a+r+s,u=Math.asin(s/r),h=Math.cos(u)*r,c=Math.sin(u),d=Math.cos(u),f=.6*r,p=.7*r;t.moveTo(i-h,l+s),t.arc(i,l,r,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(i+h-c*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-h+c*f,l+s+d*f,i-h,l+s),t.closePath()}}),qA=Un({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,a=e.y,r=n/3*2;t.moveTo(o,a),t.lineTo(o+r,a+i),t.lineTo(o,a+i/4*3),t.lineTo(o-r,a+i),t.lineTo(o,a),t.closePath()}}),KA={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var a=Math.min(i,n);o.x=t,o.y=e,o.width=a,o.height=a},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},$A={};d({line:_M,rect:yM,roundRect:yM,square:yM,circle:sM,diamond:jA,pin:YA,arrow:qA,triangle:XA},function(t,e){$A[e]=new t});var JA=Un({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style;"pin"===this.shape.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,o=$A[n];"none"!==e.symbolType&&(o||(o=$A[n="rect"]),KA[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),QA={isDimensionStacked:pl,enableDataStack:fl,getStackedDimension:gl},tD=(Object.freeze||Object)({createList:function(t){return ml(t.getSource(),t)},getLayoutRect:ca,dataStack:QA,createScale:function(t,e){var i=e;No.isInstance(e)||h(i=new No(e),UA);var n=Hl(i);return n.setExtent(t[0],t[1]),Wl(n,i),n},mixinAxisModelCommonMethods:function(t){h(t,UA)},completeDimensions:hl,createDimensions:_A,createSymbol:Jl}),eD=1e-8;eu.prototype={constructor:eu,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],a=[],r=this.geometries,s=0;s0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&d(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var a=new eu(e.name,o,e.cp);return a.properties=e,a})},nD=Bi(),oD=[0,1],aD=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};aD.prototype={constructor:aD,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Zo(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,n=this.scale;return t=n.normalize(t),this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count()),Bo(t,oD,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count());var o=Bo(t,i,oD,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=au(this,e),n=f(i.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return xu(this,n,i.tickCategoryInterval,o,t.clamp),n},getViewLabels:function(){return ou(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return pu(this)}};var rD=iD,sD={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){sD[t]=aw[t]});var lD={};d(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){lD[t]=zM[t]}),YI.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});var uD=wu.prototype,hD=wu.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};uD._createSymbol=function(t,e,i,n,o){this.removeAll();var a=Jl(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:bu(n)}),a.drift=Su,this._symbolType=t,this.add(a)},uD.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},uD.getSymbolPath=function(){return this.childAt(0)},uD.getScale=function(){return this.childAt(0).scale},uD.highlight=function(){this.childAt(0).trigger("emphasis")},uD.downplay=function(){this.childAt(0).trigger("normal")},uD.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},uD.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},uD.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=hD(t,e),r=n!==this._symbolType;if(r){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(n,t,e,a,s)}else(l=this.childAt(0)).silent=!1,Io(l,{scale:bu(a)},o,e);if(this._updateCommon(t,e,a,i),r){var l=this.childAt(0),u=i&&i.fadeIn,h={scale:l.scale.slice()};u&&(h.style={opacity:l.style.opacity}),l.scale=[0,0],u&&(l.style.opacity=0),To(l,h,o,e)}this._seriesModel=o};var cD=["itemStyle"],dD=["emphasis","itemStyle"],fD=["label"],pD=["emphasis","label"];uD._updateCommon=function(t,e,i,n){var o=this.childAt(0),r=t.hostModel,s=t.getItemVisual(e,"color");"image"!==o.type&&o.useStyle({strokeNoScale:!0});var l=n&&n.itemStyle,u=n&&n.hoverItemStyle,h=n&&n.symbolRotate,c=n&&n.symbolOffset,d=n&&n.labelModel,f=n&&n.hoverLabelModel,p=n&&n.hoverAnimation,g=n&&n.cursorStyle;if(!n||t.hasItemOption){var m=n&&n.itemModel?n.itemModel:t.getItemModel(e);l=m.getModel(cD).getItemStyle(["color"]),u=m.getModel(dD).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(fD),f=m.getModel(pD),p=m.getShallow("hoverAnimation"),g=m.getShallow("cursor")}else u=a({},u);var v=o.style;o.attr("rotation",(h||0)*Math.PI/180||0),c&&o.attr("position",[Vo(c[0],i[0]),Vo(c[1],i[1])]),g&&o.attr("cursor",g),o.setColor(s,n&&n.symbolInnerColor),o.setStyle(l);var y=t.getItemVisual(e,"opacity");null!=y&&(v.opacity=y);var x=t.getItemVisual(e,"liftZ"),_=o.__z2Origin;null!=x?null==_&&(o.__z2Origin=o.z2,o.z2+=x):null!=_&&(o.z2=_,o.__z2Origin=null);var w=n&&n.useNameLabel;go(v,u,d,f,{labelFetcher:r,labelDataIndex:e,defaultText:function(e,i){return w?t.getName(e):_u(t,e)},isRectText:!0,autoColor:s}),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=u,fo(o),o.__symbolOriginalScale=bu(i),p&&r.isAnimationEnabled()&&o.on("mouseover",Mu).on("mouseout",Iu).on("emphasis",Tu).on("normal",Au)},uD.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,!(e&&e.keepLabel)&&(i.style.text=null),Io(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(wu,tb);var gD=Du.prototype;gD.updateData=function(t,e){e=Lu(e);var i=this.group,n=t.hostModel,o=this._data,a=this._symbolCtor,r=ku(t);o||i.removeAll(),t.diff(o).add(function(n){var o=t.getItemLayout(n);if(Cu(t,o,n,e)){var s=new a(t,n,r);s.attr("position",o),t.setItemGraphicEl(n,s),i.add(s)}}).update(function(s,l){var u=o.getItemGraphicEl(l),h=t.getItemLayout(s);Cu(t,h,s,e)?(u?(u.updateData(t,s,r),Io(u,{position:h},n)):(u=new a(t,s)).attr("position",h),i.add(u),t.setItemGraphicEl(s,u)):i.remove(u)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},gD.isPersistent=function(){return!0},gD.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},gD.incrementalPrepareUpdate=function(t){this._seriesScope=ku(t),this._data=null,this.group.removeAll()},gD.incrementalUpdate=function(t,e,i){i=Lu(i);for(var n=t.start;n0&&Ru(i[o-1]);o--);for(;n0&&Ru(i[a-1]);a--);for(;o=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;(r=new wu(o,a)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else Ar.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=zi(o,n);if(null!=a&&a>=0){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else Ar.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new MD({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new ID({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_updateAnimation:function(t,e,i,n,o,a){var r=this._polyline,s=this._polygon,l=t.hostModel,u=mD(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;o&&(h=Yu(u.current,i,o),c=Yu(u.stackedOnCurrent,i,o),d=Yu(u.next,i,o),f=Yu(u.stackedOnNext,i,o)),r.shape.__points=u.current,r.shape.points=h,Io(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),Io(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;me&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;ie[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},u(kD,aD);var PD={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},ND={};ND.categoryAxis=n({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},PD),ND.valueAxis=n({boundaryGap:[0,0],splitNumber:5},PD),ND.timeAxis=r({scale:!0,min:"dataMin",max:"dataMax"},ND.valueAxis),ND.logAxis=r({scale:!0,logBase:10},ND.valueAxis);var OD=["value","category","time","log"],ED=function(t,e,i,a){d(OD,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,o){var a=this.layoutMode,s=a?ga(e):{};n(e,o.getTheme().get(r+"Axis")),n(e,this.getDefaultOption()),e.type=i(t,e),a&&pa(e,s,a)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=_l.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:o([{},ND[r+"Axis"],a],!0)})}),lI.registerSubTypeDefaulter(t+"Axis",v(i,t))},RD=lI.extend({type:"cartesian2dAxis",axis:null,init:function(){RD.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){RD.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){RD.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});n(RD.prototype,UA);var zD={offset:0};ED("x",RD,th,zD),ED("y",RD,th,zD),lI.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var BD=ih.prototype;BD.type="grid",BD.axisPointerEnabled=!0,BD.getRect=function(){return this._rect},BD.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),d(i.x,function(t){Wl(t.scale,t.model)}),d(i.y,function(t){Wl(t.scale,t.model)});var n={};d(i.x,function(t){nh(i,"y",t,n)}),d(i.y,function(t){nh(i,"x",t,n)}),this.resize(this.model,e)},BD.resize=function(t,e,i){function n(){d(a,function(t){var e=t.isHorizontal(),i=e?[0,o.width]:[0,o.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),ah(t,e?o.x:o.y)})}var o=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;n(),!i&&t.get("containLabel")&&(d(a,function(t){if(!t.model.get("axisLabel.inside")){var e=jl(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");o[i]-=e[i]+n,"top"===t.position?o.y+=e.height+n:"left"===t.position&&(o.x+=e.width+n)}}}),n())},BD.getAxis=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},BD.getAxes=function(){return this._axesList.slice()},BD.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}w(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,o=this._coordsList;nu[1]?-1:1,c=["start"===o?u[0]-h*l:"end"===o?u[1]+h*l:(u[0]+u[1])/2,ph(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*GD/180);var f;ph(o)?n=HD(t.rotation,null!=d?d:t.rotation,r):(n=uh(t,o,d||0,u),null!=(f=t.axisNameAvailableWidth)&&(f=Math.abs(f/Math.sin(n.rotation)),!isFinite(f)&&(f=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},m=g.ellipsis,v=T(t.nameTruncateMaxWidth,g.maxWidth,f),y=null!=m&&null!=v?tI(i,v,p,m,{minChar:2,placeholder:g.placeholder}):i,x=e.get("tooltip",!0),_=e.mainType,w={componentType:_,name:i,$vars:["name"]};w[_+"Index"]=e.componentIndex;var b=new rM({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:hh(e),z2:1,tooltip:x&&x.show?a({content:i,formatter:function(){return i},formatterParams:w},x):null});mo(b.style,s,{text:y,textFont:p,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:n.textAlign,textVerticalAlign:n.textVerticalAlign}),e.get("triggerEvent")&&(b.eventData=lh(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},HD=FD.innerTextLayout=function(t,e,i){var n,o,a=Xo(e-t);return jo(a)?(o=i>0?"top":"bottom",n="center"):jo(a-GD)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=a>0&&a0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:o}},ZD=d,UD=v,XD=Ws({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&Sh(t),XD.superApply(this,"render",arguments),Dh(this,t,0,i,0,!0)},updateAxisPointer:function(t,e,i,n,o){Dh(this,t,0,i,0,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),XD.superApply(this,"remove",arguments)},dispose:function(t,e){Ch(this,e),XD.superApply(this,"dispose",arguments)}}),jD=[];XD.registerAxisPointerClass=function(t,e){jD[t]=e},XD.getAxisPointerClass=function(t){return t&&jD[t]};var YD=["axisLine","axisTickLabel","axisName"],qD=["splitArea","splitLine"],KD=XD.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,i,n){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new tb,this.group.add(this._axisGroup),t.get("show")){var a=t.getCoordSysModel(),r=Lh(a,t),s=new FD(t,r);d(YD,s.add,s),this._axisGroup.add(s.getGroup()),d(qD,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Lo(o,this._axisGroup,t),KD.superCall(this,"render",t,e,i,n)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),a=o.get("color");a=y(a)?a:[a];for(var s=e.coordinateSystem.getRect(),l=i.isHorizontal(),u=0,h=i.getTicksCoords({tickModel:n}),c=[],d=[],f=o.getLineStyle(),p=0;p1){var c;"string"==typeof o?c=DD[o]:"function"==typeof o&&(c=o),c&&t.setData(n.downSample(n.mapDimension(s.dim),1/h,c,CD))}}}}}("line"));var $D=YI.extend({type:"series.__base_bar__",getInitialData:function(t,e){return ml(this.getSource(),this)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(e.clampData(t)),n=this.getData(),o=n.getLayout("offset"),a=n.getLayout("size");return i[e.getBaseAxis().isHorizontal()?0:1]+=o+a/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod",itemStyle:{},emphasis:{}}});$D.extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect",getProgressive:function(){return!!this.get("large")&&this.get("progressive")},getProgressiveThreshold:function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t}});var JD=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),QD={getBarItemStyle:function(t){var e=JD(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},tC=["itemStyle","barBorderWidth"];a(No.prototype,QD),Zs({type:"bar",render:function(t,e,i){this._updateDrawMode(t);var n=t.get("coordinateSystem");return"cartesian2d"!==n&&"polar"!==n||(this._isLargeDraw?this._renderLarge(t,e,i):this._renderNormal(t,e,i)),this.group},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t,e,i){var n,o=this.group,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.getBaseAxis();"cartesian2d"===s.type?n=l.isHorizontal():"polar"===s.type&&(n="angle"===l.dim);var u=t.isAnimationEnabled()?t:null;a.diff(r).add(function(e){if(a.hasValue(e)){var i=a.getItemModel(e),r=iC[s.type](a,e,i),l=eC[s.type](a,e,i,r,n,u);a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,i,r,t,n,"polar"===s.type)}}).update(function(e,i){var l=r.getItemGraphicEl(i);if(a.hasValue(e)){var h=a.getItemModel(e),c=iC[s.type](a,e,h);l?Io(l,{shape:c},u,e):l=eC[s.type](a,e,h,c,n,u,!0),a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,h,c,t,n,"polar"===s.type)}else o.remove(l)}).remove(function(t){var e=r.getItemGraphicEl(t);"cartesian2d"===s.type?e&&Nh(t,u,e):e&&Oh(t,u,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),zh(t,this.group)},_incrementalRenderLarge:function(t,e){zh(e,this.group,!0)},dispose:B,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,i=this._data;t&&t.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(e){"sector"===e.type?Oh(e.dataIndex,t,e):Nh(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var eC={cartesian2d:function(t,e,i,n,o,r,s){var l=new yM({shape:a({},n)});if(r){var u=l.shape,h=o?"height":"width",c={};u[h]=0,c[h]=n[h],zM[s?"updateProps":"initProps"](l,{shape:c},r,e)}return l},polar:function(t,e,i,n,o,a,s){var l=n.startAngle0?1:-1,r=n.height>0?1:-1;return{x:n.x+a*o/2,y:n.y+r*o/2,width:n.width-a*o,height:n.height-r*o}},polar:function(t,e,i){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle}}},nC=Pn.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,o=this.__valueIdx,a=0;a0&&"scale"!==u){var d=o.getItemLayout(0),f=Math.max(i.getWidth(),i.getHeight())/2,p=m(r.removeClipPath,r);r.setClipPath(this._createClipPath(d.cx,d.cy,f,d.startAngle,d.clockwise,p,t))}else r.removeClipPath();this._data=o}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r){var s=new hM({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return To(s,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),s},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var lC=function(t,e){d(e,function(e){e.update="updateView",Es(e,function(i,n){var o={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name,i.dataIndex);var n=t.getData();n.each(function(e){var i=n.getName(e);o[i]=t.isSelected(i)||!1})}),{name:i.name,selected:o}})})},uC=function(t){return{getTargetSeries:function(e){var i={},n=R();return e.eachSeriesByType(t,function(t){t.__paletteScope=i,n.set(t.uid,t)}),n},reset:function(t,e){var i=t.getRawData(),n={},o=t.getData();o.each(function(t){var e=o.getRawIndex(t);n[e]=t}),i.each(function(e){var a=n[e],r=null!=a&&o.getItemVisual(a,"color",!0);if(r)i.setItemVisual(e,"color",r);else{var s=i.getItemModel(e).get("itemStyle.color")||t.getColorFromPalette(i.getName(e)||e+"",t.__paletteScope,i.count());i.setItemVisual(e,"color",s),null!=a&&o.setItemVisual(a,"color",s)}})}}},hC=function(t,e,i,n){var o,a,r=t.getData(),s=[],l=!1;r.each(function(i){var n,u,h,c,d=r.getItemLayout(i),f=r.getItemModel(i),p=f.getModel("label"),g=p.get("position")||f.get("emphasis.label.position"),m=f.getModel("labelLine"),v=m.get("length"),y=m.get("length2"),x=(d.startAngle+d.endAngle)/2,_=Math.cos(x),w=Math.sin(x);o=d.cx,a=d.cy;var b="inside"===g||"inner"===g;if("center"===g)n=d.cx,u=d.cy,c="center";else{var S=(b?(d.r+d.r0)/2*_:d.r*_)+o,M=(b?(d.r+d.r0)/2*w:d.r*w)+a;if(n=S+3*_,u=M+3*w,!b){var I=S+_*(v+e-d.r),T=M+w*(v+e-d.r),A=I+(_<0?-1:1)*y,D=T;n=A+(_<0?-5:5),u=D,h=[[S,M],[I,T],[A,D]]}c=b?"center":_>0?"left":"right"}var C=p.getFont(),L=p.get("rotate")?_<0?-x+Math.PI:-x:0,k=ke(t.getFormattedLabel(i,"normal")||r.getName(i),C,c,"top");l=!!L,d.label={x:n,y:u,position:g,height:k.height,len:v,len2:y,linePoints:h,textAlign:c,verticalAlign:"middle",rotation:L,inside:b},b||s.push(d.label)}),!l&&t.get("avoidLabelOverlap")&&Hh(s,o,a,e,i,n)},cC=2*Math.PI,dC=Math.PI/180,fC=function(t){return{seriesType:t,reset:function(t,e){var i=e.findComponents({mainType:"legend"});if(i&&i.length){var n=t.getData();n.filterSelf(function(t){for(var e=n.getName(t),o=0;o=0;s--){var l=2*s,u=n[l]-a/2,h=n[l+1]-r/2;if(t>=u&&e>=h&&t<=u+a&&e<=h+r)return s}return-1}}),gC=Uh.prototype;gC.isPersistent=function(){return!this._incremental},gC.updateData=function(t){this.group.removeAll();var e=new pC({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},gC.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var i=2*(t.endIndex-t.startIndex),n=4*t.startIndex*2;e=new Float32Array(e.buffer,n,i)}t.setShape("points",e)})}},gC.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},gC.incrementalUpdate=function(t,e){var i;this._incremental?(i=new pC,this._incremental.addDisplayable(i,!0)):((i=new pC({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(i,e,!!this._incremental)},gC._setCommon=function(t,e,i){var n=e.hostModel,o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.symbolProxy=Jl(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var a=t.shape.size[0]<4;t.useStyle(n.getModel("itemStyle").getItemStyle(a?["color","shadowBlur","shadowColor"]:["color"]));var r=e.getVisual("color");r&&t.setColor(r),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>=0&&(t.dataIndex=i+(t.startIndex||0))}))},gC.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},gC._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Zs({type:"scatter",render:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).updateData(n),this._finished=!0},incrementalPrepareRender:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).incrementalPrepareUpdate(n),this._finished=!1},incrementalRender:function(t,e,i){this._symbolDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData();if(this.group.dirty(),!this._finished||n.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var o=AD().reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_updateSymbolDraw:function(t,e){var i=this._symbolDraw,n=e.pipelineContext.large;return i&&n===this._isLargeDraw||(i&&i.remove(),i=this._symbolDraw=n?new Uh:new Du,this._isLargeDraw=n,this.group.removeAll()),this.group.add(i.group),i},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}}),Bs(TD("scatter","circle")),zs(AD("scatter")),u(Xh,aD),jh.prototype.getIndicatorAxes=function(){return this._indicatorAxes},jh.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},jh.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},jh.prototype.pointToData=function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=Math.sqrt(e*e+i*i);e/=n,i/=n;for(var o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;ln[0]&&isFinite(c)&&isFinite(n[0]))}else{r.getTicks().length-1>a&&(u=i(u));var d=Math.round((n[0]+n[1])/2/u)*u,f=Math.round(a/2);r.setExtent(Go(d-f*u),Go(d+(a-f)*u)),r.setInterval(u)}})},jh.dimensions=[],jh.create=function(t,e){var i=[];return t.eachComponent("radar",function(n){var o=new jh(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},Fa.register("radar",jh);var mC=ND.valueAxis,vC=(Fs({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),o=this.get("scale"),s=this.get("axisLine"),l=this.get("axisTick"),u=this.get("axisLabel"),h=this.get("name"),c=this.get("name.show"),d=this.get("name.formatter"),p=this.get("nameGap"),g=this.get("triggerEvent"),m=f(this.get("indicator")||[],function(f){null!=f.max&&f.max>0&&!f.min?f.min=0:null!=f.min&&f.min<0&&!f.max&&(f.max=0);var m=h;if(null!=f.color&&(m=r({color:f.color},h)),f=n(i(f),{boundaryGap:t,splitNumber:e,scale:o,axisLine:s,axisTick:l,axisLabel:u,name:f.text,nameLocation:"end",nameGap:p,nameTextStyle:m,triggerEvent:g},!1),c||(f.name=""),"string"==typeof d){var v=f.name;f.name=d.replace("{value}",null!=v?v:"")}else"function"==typeof d&&(f.name=d(f.name,f));var y=a(new No(f,null,this.ecModel),UA);return y.mainType="radar",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return m}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:n({lineStyle:{color:"#bbb"}},mC.axisLine),axisLabel:Yh(mC.axisLabel,!1),axisTick:Yh(mC.axisTick,!1),splitLine:Yh(mC.splitLine,!0),splitArea:Yh(mC.splitArea,!0),indicator:[]}}),["axisLine","axisTickLabel","axisName"]);Ws({type:"radar",render:function(t,e,i){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem;d(f(e.getIndicatorAxes(),function(t){return new FD(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){d(vC,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){function e(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}var i=t.coordinateSystem,n=i.getIndicatorAxes();if(n.length){var o=t.get("shape"),a=t.getModel("splitLine"),s=t.getModel("splitArea"),l=a.getModel("lineStyle"),u=s.getModel("areaStyle"),h=a.get("show"),c=s.get("show"),p=l.get("color"),g=u.get("color");p=y(p)?p:[p],g=y(g)?g:[g];var m=[],v=[];if("circle"===o)for(var x=n[0].getTicksCoords(),_=i.cx,w=i.cy,b=0;b"+f(i,function(i,n){var o=e.get(e.mapDimension(i.dim),t);return ia(i.name+" : "+o)}).join("
")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Zs({type:"radar",render:function(t,e,n){function o(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=qh(t.getItemVisual(e,"symbolSize")),a=Jl(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function a(e,i,n,a,r,s){n.removeAll();for(var l=0;l"+ia(n+" : "+i)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),i=this.coordinateSystem,n=i.getRegion(e);return n&&i.dataToPoint(n.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}}}}),aC);var EC="\0_ec_interaction_mutex";Es({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(oc,fw);var RC={axisPointer:1,tooltip:1,brush:1};xc.prototype={constructor:xc,draw:function(t,e,i,n,o){var a="geo"===t.mainType,r=t.getData&&t.getData();a&&e.eachComponent({mainType:"series",subType:"map"},function(e){r||e.getHostGeoModel()!==t||(r=e.getData())});var s=t.coordinateSystem;this._updateBackground(s);var l=this._regionsGroup,u=this.group,h=s.scale,c={position:s.position,scale:h};!l.childAt(0)||o?u.attr(c):Io(u,c,t),l.removeAll();var f=["itemStyle"],p=["emphasis","itemStyle"],g=["label"],m=["emphasis","label"],v=R();d(s.regions,function(e){var i=v.get(e.name)||v.set(e.name,new tb),n=new MM({shape:{paths:[]}});i.add(n);var o,s=(C=t.getRegionModel(e.name)||t).getModel(f),u=C.getModel(p),c=mc(s),y=mc(u),x=C.getModel(g),_=C.getModel(m);if(r){o=r.indexOfName(e.name);var w=r.getItemVisual(o,"color",!0);w&&(c.fill=w)}d(e.geometries,function(t){if("polygon"===t.type){n.shape.paths.push(new pM({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)n.shape.paths.push(new pM({shape:{points:t.interiors[e]}}))}}),n.setStyle(c),n.style.strokeNoScale=!0,n.culling=!0;var b=x.get("show"),S=_.get("show"),M=r&&isNaN(r.get(r.mapDimension("value"),o)),I=r&&r.getItemLayout(o);if(a||M&&(b||S)||I&&I.showLabel){var T,A=a?e.name:o;(!r||o>=0)&&(T=t);var D=new rM({position:e.center.slice(),scale:[1/h[0],1/h[1]],z2:10,silent:!0});go(D.style,D.hoverStyle={},x,_,{labelFetcher:T,labelDataIndex:A,defaultText:e.name,useInsideStyle:!1},{textAlign:"center",textVerticalAlign:"middle"}),i.add(D)}if(r)r.setItemGraphicEl(o,i);else{var C=t.getRegionModel(e.name);n.eventData={componentType:"geo",componentIndex:t.componentIndex,geoIndex:t.componentIndex,name:e.name,region:C&&C.option||{}}}(i.__regions||(i.__regions=[])).push(e),fo(i,y,{hoverSilentOnTouch:!!t.get("selectedMode")}),l.add(i)}),this._updateController(t,e,i),vc(this,t,l,i,n),yc(t,l)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&OC.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&d(OC.makeGraphic(e,this.uid),function(t){this._backgroundGroup.add(t)},this),this._mapName=e},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:l};return e[l+"Id"]=t.id,e}var o=t.coordinateSystem,r=this._controller,s=this._controllerHost;s.zoomLimit=t.get("scaleLimit"),s.zoom=o.getZoom(),r.enable(t.get("roam")||!1);var l=t.mainType;r.off("pan").on("pan",function(t){this._mouseDownFlag=!1,fc(s,t.dx,t.dy),i.dispatchAction(a(n(),{dx:t.dx,dy:t.dy}))},this),r.off("zoom").on("zoom",function(t){if(this._mouseDownFlag=!1,pc(s,t.scale,t.originX,t.originY),i.dispatchAction(a(n(),{zoom:t.scale,originX:t.originX,originY:t.originY})),this._updateGroup){var e=this.group.scale;this._regionsGroup.traverse(function(t){"text"===t.type&&t.attr("scale",[1/e[0],1/e[1]])})}},this),r.setPointerChecker(function(e,n,a){return o.getViewRectAfterRoam().contain(n,a)&&!gc(e,i,t)})}};var zC="__seriesMapHighDown",BC="__seriesMapCallKey";Zs({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new xc(i,!0);o.add(a.group),a.draw(t,e,i,this,n),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,e,i){var n=t.originalData,o=this.group;n.each(n.mapDimension("value"),function(e,i){if(!isNaN(e)){var r=n.getItemLayout(i);if(r&&r.point){var s=r.point,l=r.offset,u=new sM({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:8+(l?0:NM+1)});if(!l){var h=t.mainSeries.getData(),c=n.getName(i),d=h.indexOfName(c),f=n.getItemModel(i),p=f.getModel("label"),g=f.getModel("emphasis.label"),m=h.getItemGraphicEl(d),y=A(t.getFormattedLabel(d,"normal"),c),x=A(t.getFormattedLabel(d,"emphasis"),y),_=m[zC],w=Math.random();if(!_){_=m[zC]={};var b=v(_c,!0),S=v(_c,!1);m.on("mouseover",b).on("mouseout",S).on("emphasis",b).on("normal",S)}m[BC]=w,a(_,{recordVersion:w,circle:u,labelModel:p,hoverLabelModel:g,emphasisText:x,normalText:y}),wc(_,!1)}o.add(u)}}})}}),Es({type:"geoRoam",event:"geoRoam",update:"updateTransform"},function(t,e){var i=t.componentType||"series";e.eachComponent({mainType:i,query:t},function(e){var n=e.coordinateSystem;if("geo"===n.type){var o=bc(n,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(o.center),e.setZoom&&e.setZoom(o.zoom),"series"===i&&d(e.seriesGroup,function(t){t.setCenter(o.center),t.setZoom(o.zoom)})}})});var VC=Q;h(Sc,Tw),Mc.prototype={constructor:Mc,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new de(t,e,i,n),this._rect},getBoundingRect:function(){return this._rect},setViewRect:function(t,e,i,n){this.transformTo(t,e,i,n),this._viewRect=new de(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._rawTransformable;a.transform=o.calculateTransform(new de(t,e,i,n)),a.decomposeTransform(),this._updateTransform()},setCenter:function(t){t&&(this._center=t,this._updateCenterAndZoom())},setZoom:function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},getDefaultCenter:function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=Q([],n,t),i=Q([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransformable,e=this._rawTransformable;e.parent=t,t.updateTransform(),e.updateTransform(),wt(this.transform||(this.transform=[]),e.transform||xt()),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],Tt(this.invTransform,this.transform),this.decomposeTransform()},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},dataToPoint:function(t,e,i){var n=e?this._rawTransform:this.transform;return i=i||[],n?VC(i,t,n):G(i,t)},pointToData:function(t){var e=this.invTransform;return e?VC([],t,e):[t[0],t[1]]},convertToPixel:v(Ic,"dataToPoint"),convertFromPixel:v(Ic,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},h(Mc,Tw),Tc.prototype={constructor:Tc,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;ie&&(e=n.height)}this.height=e+1},getNodeById:function(t){if(this.getId()===t)return this;for(var e=0,i=this.children,n=i.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this.hostTree.data.getItemLayout(this.dataIndex)},getModel:function(t){if(!(this.dataIndex<0)){var e,i=this.hostTree,n=i.data.getItemModel(this.dataIndex),o=this.getLevelModel();return o||0!==this.children.length&&(0===this.children.length||!1!==this.isExpand)||(e=this.getLeavesModel()),n.getModel(t,(o||e||i.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},getLeavesModel:function(){return this.hostTree.leavesModel},setVisual:function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this.hostTree.data.getItemVisual(this.dataIndex,t,e)},getRawIndex:function(){return this.hostTree.data.getRawIndex(this.dataIndex)},getId:function(){return this.hostTree.data.getId(this.dataIndex)},isAncestorOf:function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},isDescendantOf:function(t){return t!==this&&t.isAncestorOf(this)}},Vc.prototype={constructor:Vc,type:"tree",eachNode:function(t,e,i){this.root.eachNode(t,e,i)},getNodeByDataIndex:function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},getNodeByName:function(t){return this.root.getNodeByName(t)},update:function(){for(var t=this.data,e=this._nodes,i=0,n=e.length;ia&&(a=t.depth)});var r=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:a;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=r}),o.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),o=n.getValue(),a=n.name;n&&n!==i;)a=n.parentNode.name+"."+a,n=n.parentNode;return ia(a+(isNaN(o)||null==o?"":" : "+o))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}}),Zs({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new tb,this._controller=new oc(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(t,e,i,n){var o=t.getData(),a=t.layoutInfo,r=this._mainGroup,s=t.get("layout");"radial"===s?r.attr("position",[a.x+a.width/2,a.y+a.height/2]):r.attr("position",[a.x,a.y]),this._updateViewCoordSys(t),this._updateController(t,e,i);var l=this._data,u={expandAndCollapse:t.get("expandAndCollapse"),layout:s,orient:t.getOrient(),curvature:t.get("lineStyle.curveness"),symbolRotate:t.get("symbolRotate"),symbolOffset:t.get("symbolOffset"),hoverAnimation:t.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};o.diff(l).add(function(e){td(o,e)&&id(o,e,null,r,t,u)}).update(function(e,i){var n=l.getItemGraphicEl(i);td(o,e)?id(o,e,n,r,t,u):n&&nd(l,i,n,r,t,u)}).remove(function(e){var i=l.getItemGraphicEl(e);i&&nd(l,e,i,r,t,u)}).execute(),this._nodeScaleRatio=t.get("nodeScaleRatio"),this._updateNodeAndLinkScale(t),!0===u.expandAndCollapse&&o.eachItemGraphicEl(function(e,n){e.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:t.id,dataIndex:n})})}),this._data=o},_updateViewCoordSys:function(t){var e=t.getData(),i=[];e.each(function(t){var n=e.getItemLayout(t);!n||isNaN(n.x)||isNaN(n.y)||i.push([+n.x,+n.y])});var n=[],o=[];fn(i,n,o),o[0]-n[0]==0&&(o[0]+=1,n[0]-=1),o[1]-n[1]==0&&(o[1]+=1,n[1]-=1);var a=t.coordinateSystem=new Mc;a.zoomLimit=t.get("scaleLimit"),a.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1]),a.setCenter(t.get("center")),a.setZoom(t.get("zoom")),this.group.attr({position:a.position,scale:a.scale}),this._viewCoordSys=a},_updateController:function(t,e,i){var n=this._controller,o=this._controllerHost,a=this.group;n.setPointerChecker(function(e,n,o){var r=a.getBoundingRect();return r.applyTransform(a.transform),r.contain(n,o)&&!gc(e,i,t)}),n.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),n.off("pan").off("zoom").on("pan",function(e){fc(o,e.dx,e.dy),i.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})},this).on("zoom",function(e){pc(o,e.scale,e.originX,e.originY),i.dispatchAction({seriesId:t.id,type:"treeRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),this._updateNodeAndLinkScale(t)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),Es({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=t.dataIndex,n=e.getData().tree.getNodeByDataIndex(i);n.isExpand=!n.isExpand})}),Es({type:"treeRoam",event:"treeRoam",update:"none"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=bc(e.coordinateSystem,t);e.setCenter&&e.setCenter(i.center),e.setZoom&&e.setZoom(i.zoom)})});Bs(TD("tree","circle")),zs(function(t,e){t.eachSeriesByType("tree",function(t){sd(t,e)})}),YI.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/0,left:"center",top:"middle",right:null,bottom:null,width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",borderColor:"rgba(255,255,255,0.7)",borderWidth:1,shadowColor:"rgba(150,150,150,1)",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:"#fff"}},emphasis:{textStyle:{}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",ellipsis:!0},upperLabel:{show:!1,position:[0,"50%"],height:20,color:"#fff",ellipsis:!0,verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],color:"#fff",ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i={name:t.name,children:t.data};dd(i);var n=t.levels||[];n=t.levels=fd(n,e);var o={};return o.levels=n,Vc.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=ta(y(i)?i[0]:i);return ia(e.getName(t)+": "+n)},getDataParams:function(t){var e=YI.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=cd(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},a(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=R(),this._idIndexMapCount=0);var i=e.get(t);return null==i&&e.set(t,i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var UC=5;pd.prototype={constructor:pd,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),da(a,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,o){for(var a=0,s=e.emptyItemWidth,l=t.get("breadcrumb.height"),u=ha(e.pos,e.box),h=e.totalWidth,c=e.renderList,d=c.length-1;d>=0;d--){var f=c[d],p=f.node,g=f.width,m=f.text;h>u.width&&(h-=g-s,g=s,m=null);var y=new pM({shape:{points:gd(a,0,g,l,d===c.length-1,0===d)},style:r(i.getItemStyle(),{lineJoin:"bevel",text:m,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:v(o,p)});this.group.add(y),md(y,t,p),a+=g+8}},remove:function(){this.group.removeAll()}};var XC=m,jC=tb,YC=yM,qC=d,KC=["label"],$C=["emphasis","label"],JC=["upperLabel"],QC=["emphasis","upperLabel"],tL=10,eL=1,iL=2,nL=Qb([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),oL=function(t){var e=nL(t);return e.stroke=e.fill=e.lineWidth=null,e};Zs({type:"treemap",init:function(t,e){this._containerGroup,this._storage={nodeGroup:[],background:[],content:[]},this._oldTree,this._breadcrumb,this._controller,this._state="ready"},render:function(t,e,i,n){if(!(l(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var o=ld(n,["treemapZoomToNode","treemapRootToNode"],t),a=n&&n.type,r=t.layoutInfo,s=!this._oldTree,u=this._storage,h="treemapRootToNode"===a&&o&&u?{rootNodeGroup:u.nodeGroup[o.node.getRawIndex()],direction:n.direction}:null,c=this._giveContainerGroup(r),d=this._doRender(c,t,h);s||a&&"treemapZoomToNode"!==a&&"treemapRootToNode"!==a?d.renderFinally():this._doAnimation(c,d,t,h),this._resetController(i),this._renderBreadcrumb(t,i,o)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new jC,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function n(t,e,i,o,a){function r(t){return t.getId()}function s(r,s){var l=null!=r?t[r]:null,u=null!=s?e[s]:null,c=h(l,u,i,a);c&&n(l&&l.viewChildren||[],u&&u.viewChildren||[],c,o,a+1)}o?(e=t,qC(t,function(t,e){!t.isRemoved()&&s(e,e)})):new Xs(e,t,r,r).add(s).update(s).remove(v(s,null)).execute()}var o=e.getData().tree,a=this._oldTree,r={nodeGroup:[],background:[],content:[]},s={nodeGroup:[],background:[],content:[]},l=this._storage,u=[],h=v(yd,e,s,l,i,r,u);n(o.root?[o.root]:[],a&&a.root?[a.root]:[],t,o===a||!a,0);var c=function(t){var e={nodeGroup:[],background:[],content:[]};return t&&qC(t,function(t,i){var n=e[i];qC(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}(l);return this._oldTree=o,this._storage=s,{lastsForAnimation:r,willDeleteEls:c,renderFinally:function(){qC(c,function(t){qC(t,function(t){t.parent&&t.parent.remove(t)})}),qC(u,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),r=i.get("animationEasing"),s=vd();qC(e.willDeleteEls,function(t,e){qC(t,function(t,i){if(!t.invisible){var a,l=t.parent;if(n&&"drillDown"===n.direction)a=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,h=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,h=l.__tmNodeHeight/2),a="nodeGroup"===e?{position:[u,h],style:{opacity:0}}:{shape:{x:u,y:h,width:0,height:0},style:{opacity:0}}}a&&s.add(t,a,o,r)}})}),qC(this._storage,function(t,i){qC(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=a({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,r))})},this),this._state="animating",s.done(XC(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new oc(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",XC(this._onPan,this)),e.on("zoom",XC(this._onZoom,this)));var i=new de(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,n){return i.contain(e,n)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t){if("animating"!==this._state&&(Math.abs(t.dx)>3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var i=e.getLayout();if(!i)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:i.x+t.dx,y:i.y+t.dy,width:i.width,height:i.height}})}},_onZoom:function(t){var e=t.originX,i=t.originY;if("animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new de(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=xt();St(s,s,[-e,-i]),It(s,s,[t.scale,t.scale]),St(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&window.open(a,r)}}}}},this)},_renderBreadcrumb:function(t,e,i){i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(i={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new pd(this.group))).render(t,e,i.node,XC(function(e){"animating"!==this._state&&(hd(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))},this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(t,e){var i;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var a=o.transformCoordToLocal(t,e),r=o.shape;if(!(r.x<=a[0]&&a[0]<=r.x+r.width&&r.y<=a[1]&&a[1]<=r.y+r.height))return!1;i={node:n,offsetX:a[0],offsetY:a[1]}}},this),i}});for(var aL=["treemapZoomToNode","treemapRender","treemapMove"],rL=0;rL=0&&t.call(e,i[o],o)},TL.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},TL.breadthFirstTraverse=function(t,e,i,n){if(Jd.isInstance(e)||(e=this._nodesMap[$d(e)]),e){for(var o="out"===i?"outEdges":"in"===i?"inEdges":"edges",a=0;a=0&&i.node2.dataIndex>=0});for(var o=0,a=n.length;o=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}};h(Jd,AL("hostGraph","data")),h(Qd,AL("hostGraph","edgeData")),IL.Node=Jd,IL.Edge=Qd,Yi(Jd),Yi(Qd);var DL=function(t,e,i,n,o){for(var a=new IL(n),r=0;r "+f)),h++)}var p,g=i.get("coordinateSystem");if("cartesian2d"===g||"polar"===g)p=ml(t,i);else{var m=Fa.get(g),v=m&&"view"!==m.type?m.dimensions||[]:[];l(v,"value")<0&&v.concat(["value"]);var y=_A(t,{coordDimensions:v});(p=new vA(y,i)).initData(t)}var x=new vA(["value"],i);return x.initData(u,s),o&&o(p,x),kc({mainData:p,struct:a,structAttr:"graph",datas:{node:p,edge:x},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a},CL=Hs({type:"series.graph",init:function(t){CL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){CL.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){CL.superApply(this,"mergeDefaultAndTheme",arguments),Ci(t,["edgeLabel"],["show"])},getInitialData:function(t,e){var i=t.edges||t.links||[],n=t.data||t.nodes||[],o=this;if(n&&i)return DL(n,i,this,!0,function(t,i){function n(t){return(t=this.parsePath(t))&&"label"===t[0]?r:t&&"emphasis"===t[0]&&"label"===t[1]?l:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var a=o.getModel("edgeLabel"),r=new No({label:a.option},a.parentModel,e),s=o.getModel("emphasis.edgeLabel"),l=new No({emphasis:{label:s.option}},s.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),t})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(t,e,i){if("edge"===i){var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),s=n.getName(a.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=ia(l.join(" > ")),o.value&&(l+=" : "+ia(o.value)),l}return CL.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=f(this.option.categories||[],function(t){return null!=t.value?t:a({value:0},t)}),e=new vA(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return CL.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle"},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{label:{show:!0}}}}),LL=_M.prototype,kL=bM.prototype,PL=Un({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){(tf(e)?LL:kL).buildPath(t,e)},pointAt:function(t){return tf(this.shape)?LL.pointAt.call(this,t):kL.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=tf(e)?[e.x2-e.x1,e.y2-e.y1]:kL.tangentAt.call(this,t);return q(i,i)}}),NL=["fromSymbol","toSymbol"],OL=rf.prototype;OL.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,a=this.parent;a;)a.scale&&(o/=a.scale[0]),a=a.parent;var r=t.childOfName("line");if(this.__dirty||r.__dirty){var s=r.shape.percent,l=r.pointAt(0),u=r.pointAt(s),h=U([],u,l);if(q(h,h),e&&(e.attr("position",l),c=r.tangentAt(0),e.attr("rotation",Math.PI/2-Math.atan2(c[1],c[0])),e.attr("scale",[o*s,o*s])),i){i.attr("position",u);var c=r.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(c[1],c[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var d,f,p,g=5*o;if("end"===n.__position)d=[h[0]*g+u[0],h[1]*g+u[1]],f=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var m=s/2,v=[(c=r.tangentAt(m))[1],-c[0]],y=r.pointAt(m);v[1]>0&&(v[0]=-v[0],v[1]=-v[1]),d=[y[0]+v[0]*g,y[1]+v[1]*g],f="center",p="bottom";var x=-Math.atan2(c[1],c[0]);u[0].8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||p,textAlign:n.__textAlign||f},position:d,scale:[o,o]})}}}},OL._createLine=function(t,e,i){var n=t.hostModel,o=of(t.getItemLayout(e));o.shape.percent=0,To(o,{shape:{percent:1}},n,e),this.add(o);var a=new rM({name:"label",lineLabelOriginalOpacity:1});this.add(a),d(NL,function(i){var n=nf(i,t,e);this.add(n),this[ef(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},OL.updateData=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=t.getItemLayout(e),r={shape:{}};af(r.shape,a),Io(o,r,n,e),d(NL,function(i){var n=t.getItemVisual(e,i),o=ef(i);if(this[o]!==n){this.remove(this.childOfName(i));var a=nf(i,t,e);this.add(a)}this[o]=n},this),this._updateCommonStl(t,e,i)},OL._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,s=i&&i.hoverLineStyle,l=i&&i.labelModel,u=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var h=t.getItemModel(e);a=h.getModel("lineStyle").getLineStyle(),s=h.getModel("emphasis.lineStyle").getLineStyle(),l=h.getModel("label"),u=h.getModel("emphasis.label")}var c=t.getItemVisual(e,"color"),f=D(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(r({strokeNoScale:!0,fill:"none",stroke:c,opacity:f},a)),o.hoverStyle=s,d(NL,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:f}))},this);var p,g,m=l.getShallow("show"),v=u.getShallow("show"),y=this.childOfName("label");if((m||v)&&(p=c||"#000",null==(g=n.getFormattedLabel(e,"normal",t.dataType)))){var x=n.getRawValue(e);g=null==x?t.getName(e):isFinite(x)?Go(x):x}var _=m?g:null,w=v?A(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(mo(y.style,l,{text:_},{autoColor:p}),y.__textAlign=b.textAlign,y.__verticalAlign=b.textVerticalAlign,y.__position=l.get("position")||"middle"),y.hoverStyle=null!=w?{text:w,textFill:u.getTextColor(!0),fontStyle:u.getShallow("fontStyle"),fontWeight:u.getShallow("fontWeight"),fontSize:u.getShallow("fontSize"),fontFamily:u.getShallow("fontFamily")}:{text:null},y.ignore=!m&&!v,fo(this)},OL.highlight=function(){this.trigger("emphasis")},OL.downplay=function(){this.trigger("normal")},OL.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},OL.setLinePoints=function(t){var e=this.childOfName("line");af(e.shape,t),e.dirty()},u(rf,tb);var EL=sf.prototype;EL.isPersistent=function(){return!0},EL.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var o=hf(t);t.diff(n).add(function(i){lf(e,t,i,o)}).update(function(i,a){uf(e,n,t,a,i,o)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},EL.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},EL.incrementalPrepareUpdate=function(t){this._seriesScope=hf(t),this._lineData=null,this.group.removeAll()},EL.incrementalUpdate=function(t,e){for(var i=t.start;i=o/3?1:2),l=e.y-n(r)*a*(a>=o/3?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}}),YL=2*Math.PI,qL=(Ar.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=Sf(t,i);this._renderMain(t,e,i,n,o)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var a=this.group,r=t.getModel("axisLine").getModel("lineStyle"),s=t.get("clockwise"),l=-t.get("startAngle")/180*Math.PI,u=-t.get("endAngle")/180*Math.PI,h=(u-l)%YL,c=l,d=r.get("width"),f=0;f=t&&(0===e?0:n[e-1][0]).4?"bottom":"middle",textAlign:A<-.4?"left":A>.4?"right":"center"},{autoColor:P}),silent:!0}))}if(g.get("show")&&T!==v){for(var N=0;N<=y;N++){var A=Math.cos(w),D=Math.sin(w),O=new _M({shape:{x1:A*c+u,y1:D*c+h,x2:A*(c-_)+u,y2:D*(c-_)+h},silent:!0,style:I});"auto"===I.stroke&&O.setStyle({stroke:n((T+N/y)/v)}),l.add(O),w+=S}w-=S}else w+=b}},_renderPointer:function(t,e,i,n,o,a,r,s){var l=this.group,u=this._data;if(t.get("pointer.show")){var h=[+t.get("min"),+t.get("max")],c=[a,r],d=t.getData(),f=d.mapDimension("value");d.diff(u).add(function(e){var i=new jL({shape:{angle:a}});To(i,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(i),d.setItemGraphicEl(e,i)}).update(function(e,i){var n=u.getItemGraphicEl(i);Io(n,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(n),d.setItemGraphicEl(e,n)}).remove(function(t){var e=u.getItemGraphicEl(t);l.remove(e)}).execute(),d.eachItemGraphicEl(function(t,e){var i=d.getItemModel(e),a=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:Vo(a.get("width"),o.r),r:Vo(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(Bo(d.get(f,e),h,[0,1],!0))),fo(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=d}else u&&u.eachItemGraphicEl(function(t){l.remove(t)})},_renderTitle:function(t,e,i,n,o){var a=t.getData(),r=a.mapDimension("value"),s=t.getModel("title");if(s.get("show")){var l=s.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(Bo(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},s,{x:u,y:h,text:a.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:f,forceRich:!0})}))}},_renderDetail:function(t,e,i,n,o){var a=t.getModel("detail"),r=+t.get("min"),s=+t.get("max");if(a.get("show")){var l=a.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=Vo(a.get("width"),o.r),d=Vo(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(Bo(p,[r,s],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},a,{x:u,y:h,text:Mf(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Hs({type:"series.funnel",init:function(t){qL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return oC(this,["value"])},_defaultLabelLine:function(t){Ci(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},getDataParams:function(t){var e=this.getData(),i=qL.superCall(this,"getDataParams",t),n=e.mapDimension("value"),o=e.getSum(n);return i.percent=o?+(e.get(n,t)/o*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}})),KL=If.prototype,$L=["itemStyle","opacity"];KL.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e),l=t.getItemModel(e).get($L);l=null==l?1:l,n.useStyle({}),i?(n.setShape({points:s.points}),n.setStyle({opacity:0}),To(n,{style:{opacity:l}},o,e)):Io(n,{style:{opacity:l},shape:{points:s.points}},o,e);var u=a.getModel("itemStyle"),h=t.getItemVisual(e,"color");n.setStyle(r({lineJoin:"round",fill:h},u.getItemStyle(["opacity"]))),n.hoverStyle=u.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),fo(this)},KL._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,a=t.getItemModel(e),r=t.getItemLayout(e).label,s=t.getItemVisual(e,"color");Io(i,{shape:{points:r.linePoints||r.linePoints}},o,e),Io(n,{style:{x:r.x,y:r.y}},o,e),n.attr({rotation:r.rotation,origin:[r.x,r.y],z2:10});var l=a.getModel("label"),u=a.getModel("emphasis.label"),h=a.getModel("labelLine"),c=a.getModel("emphasis.labelLine"),s=t.getItemVisual(e,"color");go(n.style,n.hoverStyle={},l,u,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:s,useInsideStyle:!!r.inside},{textAlign:r.textAlign,textVerticalAlign:r.verticalAlign}),n.ignore=n.normalIgnore=!l.get("show"),n.hoverIgnore=!u.get("show"),i.ignore=i.normalIgnore=!h.get("show"),i.hoverIgnore=!c.get("show"),i.setStyle({stroke:s}),i.setStyle(h.getModel("lineStyle").getLineStyle()),i.hoverStyle=c.getModel("lineStyle").getLineStyle()},u(If,tb);Ar.extend({type:"funnel",render:function(t,e,i){var n=t.getData(),o=this._data,a=this.group;n.diff(o).add(function(t){var e=new If(n,t);n.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var i=o.getItemGraphicEl(e);i.updateData(n,t),a.add(i),n.setItemGraphicEl(t,i)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=n},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});Bs(uC("funnel")),zs(function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),n=i.mapDimension("value"),o=t.get("sort"),a=Tf(t,e),r=Af(i,o),s=[Vo(t.get("minSize"),a.width),Vo(t.get("maxSize"),a.width)],l=i.getDataExtent(n),u=t.get("min"),h=t.get("max");null==u&&(u=Math.min(l[0],0)),null==h&&(h=l[1]);var c=t.get("funnelAlign"),d=t.get("gap"),f=(a.height-d*(i.count()-1))/i.count(),p=a.y,g=function(t,e){var o,r=Bo(i.get(n,t)||0,[u,h],s,!0);switch(c){case"left":o=a.x;break;case"center":o=a.x+(a.width-r)/2;break;case"right":o=a.x+a.width-r}return[[o,e],[o+r,e]]};"ascending"===o&&(f=-f,d=-d,p+=a.height,r=r.reverse());for(var m=0;ma&&(e[1-n]=e[n]+h.sign*a),e},tk=d,ek=Math.min,ik=Math.max,nk=Math.floor,ok=Math.ceil,ak=Go,rk=Math.PI;Nf.prototype={type:"parallel",constructor:Nf,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;tk(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),r=this._axesMap.set(t,new JL(t,Hl(a),[0,0],a.get("type"),n)),s="category"===r.type;r.onBand=s&&a.get("boundaryGap"),r.inverse=a.get("inverse"),a.axis=r,r.model=a,r.coordinateSystem=a.coordinateSystem=this},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},containPoint:function(t){var e=this._makeLayoutInfo(),i=e.axisBase,n=e.layoutBase,o=e.pixelDimIndex,a=t[1-o],r=t[o];return a>=i&&a<=i+e.axisLength&&r>=n&&r<=n+e.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();tk(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,n.mapDimension(t)),Wl(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],o=["width","height"],a=e.get("layout"),r="horizontal"===a?0:1,s=i[o[r]],l=[0,s],u=this.dimensions.length,h=Of(e.get("axisExpandWidth"),l),c=Of(e.get("axisExpandCount")||0,[0,u]),d=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,f=e.get("axisExpandWindow");f?(t=Of(f[1]-f[0],l),f[1]=f[0]+t):(t=Of(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||nk(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[nk(ak(f[0]/h,1))+1,ok(ak(f[1]/h,1))-1],m=p/h*f[0];return{layout:a,pixelDimIndex:r,layoutBase:i[n[r]],layoutLength:s,axisBase:i[n[1-r]],axisLength:i[o[1-r]],axisExpandable:d,axisExpandWidth:h,axisCollapseWidth:p,axisExpandWindow:f,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:m}},_layoutAxes:function(){var t=this._rect,e=this._axesMap,i=this.dimensions,n=this._makeLayoutInfo(),o=n.layout;e.each(function(t){var e=[0,n.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),tk(i,function(e,i){var a=(n.axisExpandable?Rf:Ef)(i,n),r={horizontal:{x:a.position,y:n.axisLength},vertical:{x:0,y:a.position}},s={horizontal:rk/2,vertical:0},l=[r[o].x+t.x,r[o].y+t.y],u=s[o],h=xt();Mt(h,h,u),St(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:a.axisNameAvailableWidth,axisLabelShow:a.axisLabelShow,nameTruncateMaxWidth:a.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},getAxis:function(t){return this._axesMap.get(t)},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},eachActiveState:function(t,e,i,n){null==i&&(i=0),null==n&&(n=t.count());var o=this._axesMap,a=this.dimensions,r=[],s=[];d(a,function(e){r.push(t.mapDimension(e)),s.push(o.get(e).model)});for(var l=this.hasAxisBrushed(),u=i;uo*(1-h[0])?(l="jump",r=s-o*(1-h[2])):(r=s-o*h[1])>=0&&(r=s-o*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?QL(r,n,a,"all"):l="none";else{o=n[1]-n[0];(n=[ik(0,a[1]*s/o-o/2)])[1]=ek(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},Fa.register("parallel",{create:function(t,e){var i=[];return t.eachComponent("parallel",function(n,o){var a=new Nf(n,t,e);a.name="parallel_"+o,a.resize(n,e),n.coordinateSystem=a,a.model=n,i.push(a)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}});var sk=lI.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Qb([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=i(t);if(e)for(var n=e.length-1;n>=0;n--)Fo(e[n])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,o=e.length;n5)return;var n=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==n.behavior&&this._dispatchExpand({axisExpandWindow:n.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&Ip(this,"mousemove")){var e=this._model,i=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),n=i.behavior;"jump"===n&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===n?null:{axisExpandWindow:i.axisExpandWindow,animation:"jump"===n&&null})}}};Ns(function(t){Cf(t),Lf(t)}),YI.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return Tp(i,this),ml(i,this)},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"}});var Dk=.3,Ck=(Ar.extend({type:"parallel",init:function(){this._dataGroup=new tb,this.group.add(this._dataGroup),this._data,this._initialized},render:function(t,e,i,n){var o=this._dataGroup,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.dimensions,u=kp(t);if(a.diff(r).add(function(t){Pp(Lp(a,o,t,l,s),a,t,u)}).update(function(e,i){var o=r.getItemGraphicEl(i),h=Cp(a,e,l,s);a.setItemGraphicEl(e,o),Io(o,{shape:{points:h}},n&&!1===n.animation?null:t,e),Pp(o,a,e,u)}).remove(function(t){var e=r.getItemGraphicEl(t);o.remove(e)}).execute(),!this._initialized){this._initialized=!0;var h=Dp(s,t,function(){setTimeout(function(){o.removeClipPath()})});o.setClipPath(h)}this._data=a},incrementalPrepareRender:function(t,e,i){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,i){for(var n=e.getData(),o=e.coordinateSystem,a=o.dimensions,r=kp(e),s=t.start;sn&&(n=e)}),d(e,function(e){var o=new hL({type:"color",mappingMethod:"linear",dataExtent:[i,n],visual:t.get("color")}).mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var a=e.getModel().get("itemStyle.color");null!=a&&e.setVisual("color",a)})}})});var Ok={_baseAxisDim:null,getInitialData:function(t,e){var i,n,o=e.getComponent("xAxis",this.get("xAxisIndex")),a=e.getComponent("yAxis",this.get("yAxisIndex")),r=o.get("type"),s=a.get("type");"category"===r?(t.layout="horizontal",i=o.getOrdinalMeta(),n=!0):"category"===s?(t.layout="vertical",i=a.getOrdinalMeta(),n=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],f=[o,a],p=f[u].get("type"),g=f[1-u].get("type"),m=t.data;if(m&&n){var v=[];d(m,function(t,e){var i;t.value&&y(t.value)?(i=t.value.slice(),t.value.unshift(e)):y(t)?(i=t.slice(),t.unshift(e)):i=t,v.push(i)}),t.data=v}var x=this.defaultValueDimensions;return oC(this,{coordDimensions:[{name:h,type:qs(p),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:qs(g),dimsDef:x.slice()}],dimensionsCount:x.length+1})},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}};h(YI.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}}),Ok,!0);var Ek=["itemStyle"],Rk=["emphasis","itemStyle"],zk=(Ar.extend({type:"boxplot",render:function(t,e,i){var n=t.getData(),o=this.group,a=this._data;this._data||o.removeAll();var r="horizontal"===t.get("layout")?1:0;n.diff(a).add(function(t){if(n.hasValue(t)){var e=ig(n.getItemLayout(t),n,t,r,!0);n.setItemGraphicEl(t,e),o.add(e)}}).update(function(t,e){var i=a.getItemGraphicEl(e);if(n.hasValue(t)){var s=n.getItemLayout(t);i?ng(s,i,n,t):i=ig(s,n,t,r),o.add(i),n.setItemGraphicEl(t,i)}else o.remove(i)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&o.remove(e)}).execute(),this._data=n},remove:function(t){var e=this.group,i=this._data;this._data=null,i&&i.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:B}),Pn.extend({type:"boxplotBoxPath",shape:{},buildPath:function(t,e){var i=e.points,n=0;for(t.moveTo(i[n][0],i[n][1]),n++;n<4;n++)t.lineTo(i[n][0],i[n][1]);for(t.closePath();n0?jk:Yk)}function n(t,e){return e.get(t>0?Uk:Xk)}var o=t.getData(),a=t.pipelineContext.large;if(o.setVisual({legendSymbol:"roundRect",colorP:i(1,t),colorN:i(-1,t),borderColorP:n(1,t),borderColorN:n(-1,t)}),!e.isSeriesFiltered(t))return!a&&{progress:function(t,e){for(var o;null!=(o=t.next());){var a=e.getItemModel(o),r=e.getItemLayout(o).sign;e.setItemVisual(o,{color:i(r,a),borderColor:n(r,a)})}}}}},Kk="undefined"!=typeof Float32Array?Float32Array:Array,$k={seriesType:"candlestick",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.getData(),n=pg(t,i),o=0,a=1,r=["x","y"],s=i.mapDimension(r[o]),l=i.mapDimension(r[a],!0),u=l[0],h=l[1],c=l[2],d=l[3];if(i.setLayout({candleWidth:n,isSimpleBox:n<=1.3}),!(null==s||l.length<4))return{progress:t.pipelineContext.large?function(t,i){for(var n,r,l=new Kk(5*t.count),f=0,p=[],g=[];null!=(r=t.next());){var m=i.get(s,r),v=i.get(u,r),y=i.get(h,r),x=i.get(c,r),_=i.get(d,r);isNaN(m)||isNaN(x)||isNaN(_)?(l[f++]=NaN,f+=4):(l[f++]=fg(i,r,v,y,h),p[o]=m,p[a]=x,n=e.dataToPoint(p,null,g),l[f++]=n?n[0]:NaN,l[f++]=n?n[1]:NaN,p[a]=_,n=e.dataToPoint(p,null,g),l[f++]=n?n[1]:NaN)}i.setLayout("largePoints",l)}:function(t,i){function r(t,i){var n=[];return n[o]=i,n[a]=t,isNaN(i)||isNaN(t)?[NaN,NaN]:e.dataToPoint(n)}function l(t,e,i){var a=e.slice(),r=e.slice();a[o]=Jn(a[o]+n/2,1,!1),r[o]=Jn(r[o]-n/2,1,!0),i?t.push(a,r):t.push(r,a)}function f(t){return t[o]=Jn(t[o],1),t}for(var p;null!=(p=t.next());){var g=i.get(s,p),m=i.get(u,p),v=i.get(h,p),y=i.get(c,p),x=i.get(d,p),_=Math.min(m,v),w=Math.max(m,v),b=r(_,g),S=r(w,g),M=r(y,g),I=r(x,g),T=[];l(T,S,0),l(T,b,1),T.push(f(I),f(S),f(M),f(b)),i.setItemLayout(p,{sign:fg(i,p,m,v,h),initBaseline:m>v?S[a]:b[a],ends:T,brushRect:function(t,e,i){var s=r(t,i),l=r(e,i);return s[o]-=n/2,l[o]-=n/2,{x:s[0],y:s[1],width:a?n:l[0]-s[0],height:a?l[1]-s[1]:n}}(y,x,g)})}}}}};Ns(function(t){t&&y(t.series)&&d(t.series,function(t){w(t)&&"k"===t.type&&(t.type="candlestick")})}),Bs(qk),zs($k),YI.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}});var Jk=vg.prototype;Jk.stopEffectAnimation=function(){this.childAt(1).removeAll()},Jk.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),o=0;o<3;o++){var a=Jl(e,-1,-1,2,2,i);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var r=-o/3*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(r).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(r).start(),n.add(a)}mg(n,t)},Jk.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],o=0;o "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}}),iP=xg.prototype;iP.createLine=function(t,e,i){return new rf(t,e,i)},iP._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),o=i.get("symbol");y(n)||(n=[n,n]);var a=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==o&&(this.remove(r),(r=Jl(o,-.5,-.5,1,1,a)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",a),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(a),r.attr("scale",n),this._symbolType=o,this._updateEffectAnimation(t,i,e))},iP._updateEffectAnimation=function(t,e,i){var n=this.childAt(1);if(n){var o=this,a=t.getItemLayout(i),r=1e3*e.get("period"),s=e.get("loop"),l=e.get("constantSpeed"),u=T(e.get("delay"),function(e){return e/t.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,a),l>0&&(r=this.getLineLength(n)/l*1e3),r!==this._period||s!==this._loop){n.stopAnimation();var c=u;h&&(c=u(i)),n.__t>0&&(c=-r*n.__t),n.__t=0;var d=n.animate("",s).when(r,{__t:1}).delay(c).during(function(){o.updateSymbolPosition(n)});s||d.done(function(){o.remove(n)}),d.start()}this._period=r,this._loop=s}},iP.getLineLength=function(t){return uw(t.__p1,t.__cp1)+uw(t.__cp1,t.__p2)},iP.updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},iP.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},iP.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=sn,s=ln;a[0]=r(e[0],n[0],i[0],o),a[1]=r(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),u=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(u,l)-Math.PI/2,t.ignore=!1},iP.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},u(xg,tb);var nP=_g.prototype;nP._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new gM({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},nP.updateData=function(t,e,i){var n=t.hostModel;Io(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},nP._updateCommonStl=function(t,e,i){var n=this.childAt(0),o=t.getItemModel(e),a=t.getItemVisual(e,"color"),s=i&&i.lineStyle,l=i&&i.hoverLineStyle;i&&!t.hasItemOption||(s=o.getModel("lineStyle").getLineStyle(),l=o.getModel("emphasis.lineStyle").getLineStyle()),n.useStyle(r({strokeNoScale:!0,fill:"none",stroke:a},s)),n.hoverStyle=l,fo(this)},nP.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},u(_g,tb);var oP=wg.prototype;oP.createLine=function(t,e,i){return new _g(t,e,i)},oP.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o=0&&!(n[r]<=e);r--);r=Math.min(r,o-2)}else{for(var r=a;re);r++);r=Math.min(r-1,o-2)}J(t.position,i[r],i[r+1],(e-n[r])/(n[r+1]-n[r]));var s=i[r+1][0]-i[r][0],l=i[r+1][1]-i[r][1];t.rotation=-Math.atan2(l,s)-Math.PI/2,this._lastFrame=r,this._lastFramePercent=e,t.ignore=!1}},u(wg,xg);var aP=Un({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(r=0;r0){t.moveTo(i[r++],i[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*n,d=(l+h)/2-(u-s)*n;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var i=this.shape,n=i.segs,o=i.curveness;if(i.polyline)for(var a=0,r=0;r0)for(var l=n[r++],u=n[r++],h=1;h0){if(_n(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(yn(l,u,c,d))return a;a++}return-1}}),rP=bg.prototype;rP.isPersistent=function(){return!this._incremental},rP.updateData=function(t){this.group.removeAll();var e=new aP({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},rP.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},rP.incrementalUpdate=function(t,e){var i=new aP;i.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(i,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(i,!0):(i.rectHover=!0,i.cursor="default",i.__startIndex=t.start,this.group.add(i))},rP.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},rP._setCommon=function(t,e,i){var n=e.hostModel;t.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),t.useStyle(n.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var o=e.getVisual("color");o&&t.setStyle("stroke",o),t.setStyle("fill"),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>0&&(t.dataIndex=i+t.__startIndex)}))},rP._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var sP={seriesType:"lines",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.get("polyline"),n=t.pipelineContext.large;return{progress:function(o,a){var r=[];if(n){var s,l=o.end-o.start;if(i){for(var u=0,h=o.start;h0){var I=a(v)?s:l;v>0&&(v=v*S+b),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(y,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=iw()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},Zs({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var o=t.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(t,i,0,t.getData().count()):Ag(o)&&this._renderOnGeo(o,t,n,i)},incrementalPrepareRender:function(t,e,i){this.group.removeAll()},incrementalRender:function(t,e,i,n){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,n,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,e,i,n,o){var r,s,l=t.coordinateSystem;if("cartesian2d"===l.type){var u=l.getAxis("x"),h=l.getAxis("y");r=u.getBandWidth(),s=h.getBandWidth()}for(var c=this.group,d=t.getData(),f=t.getModel("itemStyle").getItemStyle(["color"]),p=t.getModel("emphasis.itemStyle").getItemStyle(),g=t.getModel("label"),m=t.getModel("emphasis.label"),v=l.type,y="cartesian2d"===v?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],x=i;x=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},Fa.register("single",{create:function(t,e){var i=[];return t.eachComponent("singleAxis",function(n,o){var a=new $g(n,t,e);a.name="single_"+o,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i},dimensions:$g.prototype.dimensions});var gP=["axisLine","axisTickLabel","axisName"],mP=XD.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=Jg(t),r=new FD(t,a);d(gP,r.add,r),o.add(r.getGroup()),t.get("splitLine.show")&&this._splitLine(t),mP.superCall(this,"render",t,e,i,n)},_splitLine:function(t){var e=t.axis;if(!e.scale.isBlank()){var i=t.getModel("splitLine"),n=i.getModel("lineStyle"),o=n.get("width"),a=n.get("color");a=a instanceof Array?a:[a];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;f=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){gm(e.getZr(),"axisPointer"),IP.superApply(this._model,"remove",arguments)},dispose:function(t,e){gm("axisPointer",e),IP.superApply(this._model,"dispose",arguments)}}),TP=Bi(),AP=i,DP=m;(mm.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var o=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==o||this._lastStatus!==a){this._lastValue=o,this._lastStatus=a;var r=this._group,s=this._handle;if(!a||"hide"===a)return r&&r.hide(),void(s&&s.hide());r&&r.show(),s&&s.show();var l={};this.makeElOption(l,o,t,e,i);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(r){var c=v(vm,e,h);this.updatePointerEl(r,l,c,e),this.updateLabelEl(r,l,c,e)}else r=this._group=new tb,this.createPointerEl(r,l,t,e),this.createLabelEl(r,l,t,e),i.getZr().add(r);wm(r,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,o="category"===n.type,a=e.get("snap");if(!a&&!o)return!1;if("auto"===i||null==i){var r=this.animationThreshold;if(o&&n.getBandWidth()>r)return!0;if(a){var s=Mh(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1}return!0===i},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=TP(t).pointerEl=new zM[o.type](AP(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=TP(t).labelEl=new yM(AP(e.label));t.add(o),xm(o,n)}},updatePointerEl:function(t,e,i){var n=TP(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=TP(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),xm(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,o=e.getModel("handle"),a=e.get("status");if(!o.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var r;this._handle||(r=!0,n=this._handle=Po(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){mw(t.event)},onmousedown:DP(this._onHandleDragMove,this,0,0),drift:DP(this._onHandleDragMove,this),ondragend:DP(this._onHandleDragEnd,this)}),i.add(n)),wm(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(o.getItemStyle(null,s));var l=o.get("size");y(l)||(l=[l,l]),n.attr("scale",[l[0]/2,l[1]/2]),Nr(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)}},_moveHandleToValue:function(t,e){vm(this._axisPointerModel,!e&&this._moveAnimation,this._handle,_m(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(_m(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(_m(n)),TP(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=mm,ji(mm);var CP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.grid,s=n.get("type"),l=km(r,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var h=bm(n),c=LP[s](a,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Lh(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=Lh(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.grid,r=o.getGlobalExtent(!0),s=km(a,o).getOtherAxis(o).getGlobalExtent(),l="x"===o.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];var d=[{verticalAlign:"middle"},{align:"center"}];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:d[l]}}}),LP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Pm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=Math.max(1,t.getBandWidth()),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Pm(t))}}};XD.registerAxisPointerClass("CartesianAxisPointer",CP),Ns(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Os(VT.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=vh(t,e)}),Es({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,o=[t.x,t.y],a=t,r=t.dispatchAction||m(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){lm(o)&&(o=xP({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var l=lm(o),u=a.axesInfo,h=s.axesInfo,c="leave"===n||lm(o),d={},f={},p={list:[],map:{}},g={showPointer:wP(em,f),showTooltip:wP(im,p)};_P(s.coordSysMap,function(t,e){var i=l||t.containPoint(o);_P(s.coordSysAxesInfo[e],function(t,e){var n=t.axis,a=rm(u,t);if(!c&&i&&(!u||a)){var r=a&&a.value;null!=r||l||(r=n.pointToData(o)),null!=r&&Qg(t,r,g,!1,d)}})});var v={};return _P(h,function(t,e){var i=t.linkGroup;i&&!f[e]&&_P(i.axesInfo,function(e,n){var o=f[n];if(e!==t&&o){var a=o.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,sm(e),sm(t)))),v[t.key]=a}})}),_P(v,function(t,e){Qg(h[e],t,g,!0,d)}),nm(f,h,d),om(p,o,t,r),am(h,0,i),d}});var kP=["x","y"],PP=["width","height"],NP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.coordinateSystem,s=Om(r,1-Nm(a)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=bm(n),c=OP[u](a,l,s,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Jg(i),i,n,o)},getHandleTransform:function(t,e,i){var n=Jg(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.coordinateSystem,r=Nm(o),s=Om(a,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=Om(a,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),OP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Nm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=t.getBandWidth(),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Nm(t))}}};XD.registerAxisPointerClass("SingleAxisPointer",NP),Ws({type:"single"});var EP=YI.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){EP.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){var e=t.length,i=[];Zi(t,function(t){return t[2]}).buckets.each(function(t,e){i.push({name:e,dataList:t})});for(var n=i.length,o=-1,a=-1,r=0;ro&&(o=s,a=r)}for(var l=0;lMath.PI/2?"right":"left"):x&&"center"!==x?"left"===x?(f=u.r0+y,p>Math.PI/2&&(x="right")):"right"===x&&(f=u.r-y,p>Math.PI/2&&(x="left")):(f=(u.r+u.r0)/2,x="center"),d.attr("style",{text:l,textAlign:x,textVerticalAlign:n("verticalAlign")||"middle",opacity:n("opacity")});var _=f*g+u.cx,w=f*m+u.cy;d.attr("position",[_,w]);var b=n("rotate"),S=0;"radial"===b?(S=-p)<-Math.PI/2&&(S+=Math.PI):"tangential"===b?(S=Math.PI/2-p)>Math.PI/2?S-=Math.PI:S<-Math.PI/2&&(S+=Math.PI):"number"==typeof b&&(S=b*Math.PI/180),d.attr("rotation",S)},VP._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");var o=this,a=function(){o.onEmphasis(n)},r=function(){o.onNormal()};i.isAnimationEnabled()&&t.on("mouseover",a).on("mouseout",r).on("emphasis",a).on("normal",r).on("downplay",function(){o.onDownplay()}).on("highlight",function(){o.onHighlight()})},u(Vm,tb);Ar.extend({type:"sunburst",init:function(){},render:function(t,e,i,n){function o(i,n){if(c||!i||i.getValue()||(i=null),i!==l&&n!==l)if(n&&n.piece)i?(n.piece.updateData(!1,i,"normal",t,e),s.setItemGraphicEl(i.dataIndex,n.piece)):a(n);else if(i){var o=new Vm(i,t,e);h.add(o),s.setItemGraphicEl(i.dataIndex,o)}}function a(t){t&&t.piece&&(h.remove(t.piece),t.piece=null)}var r=this;this.seriesModel=t,this.api=i,this.ecModel=e;var s=t.getData(),l=s.tree.root,u=t.getViewRoot(),h=this.group,c=t.get("renderLabelForZeroData"),d=[];u.eachNode(function(t){d.push(t)});var f=this._oldChildren||[];if(function(t,e){function i(t){return t.getId()}function n(i,n){o(null==i?null:t[i],null==n?null:e[n])}0===t.length&&0===e.length||new Xs(e,t,i,i).add(n).update(n).remove(v(n,null)).execute()}(d,f),function(i,n){if(n.depth>0){r.virtualPiece?r.virtualPiece.updateData(!1,i,"normal",t,e):(r.virtualPiece=new Vm(i,t,e),h.add(r.virtualPiece)),n.piece._onclickEvent&&n.piece.off("click",n.piece._onclickEvent);var o=function(t){r._rootToNode(n.parentNode)};n.piece._onclickEvent=o,r.virtualPiece.on("click",o)}else r.virtualPiece&&(h.remove(r.virtualPiece),r.virtualPiece=null)}(l,u),n&&n.highlight&&n.highlight.piece){var p=t.getShallow("highlightPolicy");n.highlight.piece.onEmphasis(p)}else if(n&&n.unhighlight){var g=this.virtualPiece;!g&&l.children.length&&(g=l.children[0].piece),g&&g.onNormal()}this._initEvents(),this._oldChildren=d},dispose:function(){},_initEvents:function(){var t=this,e=function(e){var i=!1;t.seriesModel.getViewRoot().eachNode(function(n){if(!i&&n.piece&&n.piece.childAt(0)===e.target){var o=n.getModel().get("nodeClick");if("rootToNode"===o)t._rootToNode(n);else if("link"===o){var a=n.getModel(),r=a.get("link");if(r){var s=a.get("target",!0)||"_blank";window.open(r,s)}}i=!0}})};this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",e),this.group._onclickEvent=e},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:"sunburstRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var GP="sunburstRootToNode";Es({type:GP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[GP],e);if(n){var o=e.getViewRoot();o&&(t.direction=hd(o,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}})});var FP="sunburstHighlight";Es({type:FP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[FP],e);n&&(t.highlight=n.node)})});Es({type:"sunburstUnhighlight",update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){t.unhighlight=!0})});var WP=Math.PI/180;Bs(v(uC,"sunburst")),zs(v(function(t,e,i,n){e.eachSeriesByType(t,function(t){var e=t.get("center"),n=t.get("radius");y(n)||(n=[0,n]),y(e)||(e=[e,e]);var o=i.getWidth(),a=i.getHeight(),r=Math.min(o,a),s=Vo(e[0],o),l=Vo(e[1],a),u=Vo(n[0],r/2),h=Vo(n[1],r/2),c=-t.get("startAngle")*WP,f=t.get("minAngle")*WP,p=t.getData().tree.root,g=t.getViewRoot(),m=g.depth,v=t.get("sort");null!=v&&Zm(g,v);var x=0;d(g.children,function(t){!isNaN(t.getValue())&&x++});var _=g.getValue(),w=Math.PI/(_||x)*2,b=g.depth>0,S=g.height-(b?-1:1),M=(h-u)/(S||1),I=t.get("clockwise"),T=t.get("stillShowZeroSum"),A=I?1:-1,D=function(t,e){if(t){var i=e;if(t!==p){var n=t.getValue(),o=0===_&&T?w:n*w;on[1]&&n.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:n[1],r0:n[0]},api:{coord:m(function(n){var o=e.dataToRadius(n[0]),a=i.dataToAngle(n[1]),r=t.coordToPoint([o,a]);return r.push(o,a*Math.PI/180),r}),size:m(qm,t)}}},calendar:function(t){var e=t.getRect(),i=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:i.start,end:i.end,weeks:i.weeks,dayCount:i.allDay}},api:{coord:function(e,i){return t.dataToPoint(e,i)}}}}};YI.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0},getInitialData:function(t,e){return ml(this.getSource(),this)},getDataParams:function(t,e,i){var n=YI.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Ar.extend({type:"custom",_data:null,render:function(t,e,i,n){var o=this._data,a=t.getData(),r=this.group,s=Qm(t,a,e,i);a.diff(o).add(function(e){ev(null,e,s(e,n),t,r,a)}).update(function(e,i){ev(o.getItemGraphicEl(i),e,s(e,n),t,r,a)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute(),this._data=a},incrementalPrepareRender:function(t,e,i){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,o){for(var a=e.getData(),r=Qm(e,a,i,n),s=t.start;s=0;l--)null==o[l]?o.splice(l,1):delete o[l].$action},_flatten:function(t,e,i){d(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});Ws({type:"graphic",init:function(t,e){this._elMap=R(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,i)},_updateElements:function(t){var e=t.useElOptionsToUpdate();if(e){var i=this._elMap,n=this.group;d(e,function(e){var o=e.$action,a=e.id,r=i.get(a),s=e.parentId,l=null!=s?i.get(s):n,u=e.style;"text"===e.type&&u&&(e.hv&&e.hv[1]&&(u.textVerticalAlign=u.textBaseline=null),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke));var h=fv(e);o&&"merge"!==o?"replace"===o?(dv(r,i),cv(a,l,h,i)):"remove"===o&&dv(r,i):r?r.attr(h):cv(a,l,h,i);var c=i.get(a);c&&(c.__ecGraphicWidth=e.width,c.__ecGraphicHeight=e.height,yv(c,t))})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=i.length-1;a>=0;a--){var r=i[a],s=o.get(r.id);if(s){var l=s.parent;da(s,r,l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0},null,{hv:r.hv,boundingMode:r.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){dv(e,t)}),this._elMap=R()},dispose:function(){this._clear()}});var KP=Fs({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){KP.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});Es("legendToggleSelect","legendselectchanged",v(xv,"toggleSelected")),Es("legendSelect","legendselected",v(xv,"select")),Es("legendUnSelect","legendunselected",v(xv,"unSelect"));var $P=v,JP=d,QP=tb,tN=Ws({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new QP),this._backgroundEl,this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},render:function(t,e,i){var n=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var o=t.get("align");o&&"auto"!==o||(o="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left"),this.renderInner(o,t,e,i);var a=t.getBoxLayoutParams(),s={width:i.getWidth(),height:i.getHeight()},l=t.get("padding"),u=ca(a,s,l),h=this.layoutInner(t,o,u,n),c=ca(r({width:h.width,height:h.height},a),s,l);this.group.attr("position",[c.x-h.x,c.y-h.y]),this.group.add(this._backgroundEl=wv(h,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl)},renderInner:function(t,e,i,n){var o=this.getContentGroup(),a=R(),r=e.get("selectedMode"),s=[];i.eachRawSeries(function(t){!t.get("legendHoverLink")&&s.push(t.id)}),JP(e.getData(),function(l,u){var h=l.get("name");if(this.newlineDisabled||""!==h&&"\n"!==h){var c=i.getSeriesByName(h)[0];if(!a.get(h))if(c){var d=c.getData(),f=d.getVisual("color");"function"==typeof f&&(f=f(c.getDataParams(0)));var p=d.getVisual("legendSymbol")||"roundRect",g=d.getVisual("symbol");this._createItem(h,u,l,e,p,g,t,f,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,c.name,null,n,s)).on("mouseout",$P(Mv,c.name,null,n,s)),a.set(h,!0)}else i.eachRawSeries(function(i){if(!a.get(h)&&i.legendDataProvider){var o=i.legendDataProvider(),c=o.indexOfName(h);if(c<0)return;var d=o.getItemVisual(c,"color");this._createItem(h,u,l,e,"roundRect",null,t,d,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,null,h,n,s)).on("mouseout",$P(Mv,null,h,n,s)),a.set(h,!0)}},this)}else o.add(new QP({newline:!0}))},this)},_createItem:function(t,e,i,n,o,r,s,l,u){var h=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("symbolKeepAspect"),p=n.isSelected(t),g=new QP,m=i.getModel("textStyle"),v=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(o=v||o,g.add(Jl(o,0,0,h,c,p?l:d,null==f||f)),!v&&r&&(r!==o||"none"===r)){var _=.8*c;"none"===r&&(r="circle"),g.add(Jl(r,(h-_)/2,(c-_)/2,_,_,p?l:d,null==f||f))}var w="left"===s?h+5:-5,b=s,S=n.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t)),g.add(new rM({style:mo({},m,{text:M,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new yM({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(I),g.eachChild(function(t){t.silent=!0}),I.silent=!u,this.getContentGroup().add(g),fo(g),g.__legendDataIndex=e,g},layoutInner:function(t,e,i){var n=this.getContentGroup();aI(t.get("orient"),n,t.get("itemGap"),i.width,i.height);var o=n.getBoundingRect();return n.attr("position",[-o.x,-o.y]),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});Os(function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;ii[l],p=[-c.x,-c.y];n||(p[s]=o.position[s]);var g=[0,0],m=[-d.x,-d.y],v=A(t.get("pageButtonGap",!0),t.get("itemGap",!0));f&&("end"===t.get("pageButtonPosition",!0)?m[s]+=i[l]-d[l]:g[s]+=d[l]+v),m[1-s]+=c[u]/2-d[u]/2,o.attr("position",p),a.attr("position",g),r.attr("position",m);var y=this.group.getBoundingRect();if((y={x:0,y:0})[l]=f?i[l]:c[l],y[u]=Math.max(c[u],d[u]),y[h]=Math.min(0,d[h]+m[1-s]),a.__rectSize=i[l],f){var x={x:0,y:0};x[l]=Math.max(i[l]-d[l]-v,0),x[u]=y[u],a.setClipPath(new yM({shape:x})),a.__rectSize=x[l]}else r.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&Io(o,{position:_.contentPosition},!!f&&t),this._updatePageInfoView(t,_),y},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(t,e){var i=this._controllerGroup;d(["pagePrev","pageNext"],function(n){var o=null!=e[n+"DataIndex"],a=i.childOfName(n);a&&(a.setStyle("fill",o?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=o?"pointer":"default")});var n=i.childOfName("pageText"),o=t.get("pageFormatter"),a=e.pageIndex,r=null!=a?a+1:0,s=e.pageCount;n&&o&&n.setStyle("text",_(o)?o.replace("{current}",r).replace("{total}",s):o({current:r,total:s}))},_getPageInfo:function(t){function e(t){if(t){var e=t.getBoundingRect(),i=e[l]+t.position[r];return{s:i,e:i+e[s],i:t.__legendDataIndex}}}function i(t,e){return t.e>=e&&t.s<=e+a}var n=t.get("scrollDataIndex",!0),o=this.getContentGroup(),a=this._containerGroup.__rectSize,r=t.getOrient().index,s=nN[r],l=oN[r],u=this._findTargetItemIndex(n),h=o.children(),c=h[u],d=h.length,f=d?1:0,p={contentPosition:o.position.slice(),pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return p;var g=e(c);p.contentPosition[r]=-g.s;for(var m=u+1,v=g,y=g,x=null;m<=d;++m)(!(x=e(h[m]))&&y.e>v.s+a||x&&!i(x,v.s))&&(v=y.i>v.i?y:x)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=v.i),++p.pageCount),y=x;for(var m=u-1,v=g,y=g,x=null;m>=-1;--m)(x=e(h[m]))&&i(y,x.s)||!(v.i=0;){var r=o.indexOf("|}"),s=o.substr(a+"{marker".length,r-a-"{marker".length);s.indexOf("sub")>-1?n["marker"+s]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[s],textOffset:[3,0]}:n["marker"+s]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[s]},a=(o=o.substr(r+1)).indexOf("{marker")}this.el=new rM({style:{rich:n,text:t,textLineHeight:20,textBackgroundColor:i.get("backgroundColor"),textBorderRadius:i.get("borderRadius"),textFill:i.get("textStyle.color"),textPadding:i.get("padding")},z:i.get("z")}),this._zr.add(this.el);var l=this;this.el.on("mouseover",function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0}),this.el.on("mouseout",function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){this.el&&this.el.attr("position",[t,e])},hide:function(){this.el?this.el.hide():true,this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(m(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var uN=m,hN=d,cN=Vo,dN=new yM({shape:{x:-1,y:-1,width:2,height:2}});Ws({type:"tooltip",init:function(t,e){if(!U_.node){var i=t.getComponent("tooltip").get("renderMode");this._renderMode=Hi(i);var n;"html"===this._renderMode?(n=new Cv(e.getDom(),e),this._newLine="
"):(n=new Lv(e),this._newLine="\n"),this._tooltipContent=n}},render:function(t,e,i){if(!U_.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");um("itemTooltip",this._api,uN(function(e,i,n){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(i,n):"leave"===e&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!U_.node){var o=Pv(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=dN;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},o)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},o);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=xP(n,e),l=s.point[0],u=s.point[1];null!=l&&null!=u&&this._tryShow({offsetX:l,offsetY:u,position:n.position,target:s.el,event:{}},o)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},o))}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(Pv(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var o=n.seriesIndex,a=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=o&&null!=a&&null!=r){var s=e.getSeriesByIndex(o);if(s&&"axis"===(t=kv([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:a,position:n.position}),!0}},_tryShow:function(t,e){var i=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var n=t.dataByCoordSys;n&&n.length?this._showAxisTooltip(n,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=m(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=kv([e.tooltipOption,o]),u=this._renderMode,h=this._newLine,c={};hN(t,function(t){hN(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),o=t.value,a=[];if(e&&null!=o){var l=Im(o,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);d(t.seriesDataIndices,function(r){var h=i.getSeriesByIndex(r.seriesIndex),d=r.dataIndexInside,f=h&&h.getDataParams(d);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=Xl(e.axis,o),f.axisValueLabel=l,f){s.push(f);var p,g=h.formatTooltip(d,!0,null,u);if(w(g)){p=g.html;var m=g.markers;n(c,m)}else p=g;a.push(p)}});var f=l;"html"!==u?r.push(a.join(h)):r.push((f?ia(f)+h:"")+a.join(h))}})},this),r.reverse(),r=r.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,f,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],f,void 0,c)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,o=e.seriesIndex,a=n.getSeriesByIndex(o),r=e.dataModel||a,s=e.dataIndex,l=e.dataType,u=r.getData(),h=kv([u.getItemModel(s),r,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),c=h.get("trigger");if(null==c||"item"===c){var d,f,p=r.getDataParams(s,l),g=r.formatTooltip(s,!1,l,this._renderMode);w(g)?(d=g.html,f=g.markers):(d=g,f=null);var m="item_"+r.name+"_"+s;this._showOrMove(h,function(){this._showTooltipContent(h,d,p,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:s,dataIndex:u.getRawIndex(s),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new No(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");r=r||t.get("position");var c=e;if(h&&"string"==typeof h)c=na(h,i,!0);else if("function"==typeof h){var d=uN(function(e,n){e===this._ticket&&(u.setContent(n,l,t),this._updatePosition(t,r,o,a,u,i,s))},this);this._ticket=n,c=h(i,n,d)}u.setContent(c,l,t),u.show(t),this._updatePosition(t,r,o,a,u,i,s)}},_updatePosition:function(t,e,i,n,o,a,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=o.getSize(),h=t.get("align"),c=t.get("verticalAlign"),d=r&&r.getBoundingRect().clone();if(r&&d.applyTransform(r.transform),"function"==typeof e&&(e=e([i,n],a,o.el,d,{viewSize:[s,l],contentSize:u.slice()})),y(e))i=cN(e[0],s),n=cN(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=ca(e,{width:s,height:l});i=f.x,n=f.y,h=null,c=null}else"string"==typeof e&&r?(i=(p=Ev(e,d,u))[0],n=p[1]):(i=(p=Nv(i,n,o,s,l,h?null:20,c?null:20))[0],n=p[1]);if(h&&(i-=Rv(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=Rv(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")){var p=Ov(i,n,o,s,l);i=p[0],n=p[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&hN(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&hN(o,function(t,e){var n=a[e]||{},o=t.seriesDataIndices||[],r=n.seriesDataIndices||[];(i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===r.length)&&hN(o,function(t,e){var n=r[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){U_.node||(this._tooltipContent.hide(),gm("itemTooltip",e))}}),Es({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Es({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){}),Gv.prototype={constructor:Gv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:aD.prototype.dataToCoord,radiusToData:aD.prototype.coordToData},u(Gv,aD);var fN=Bi();Fv.prototype={constructor:Fv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:aD.prototype.dataToCoord,angleToData:aD.prototype.coordToData,calculateCategoryInterval:function(){var t=this,e=t.getLabelModel(),i=t.scale,n=i.getExtent(),o=i.count();if(n[1]-n[0]<1)return 0;var a=n[0],r=t.dataToCoord(a+1)-t.dataToCoord(a),s=Math.abs(r),l=ke(a,e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=fN(t.model),d=c.lastAutoInterval,f=c.lastTickCount;return null!=d&&null!=f&&Math.abs(d-h)<=1&&Math.abs(f-o)<=1&&d>h?h=d:(c.lastTickCount=o,c.lastAutoInterval=h),h}},u(Fv,aD);var pN=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new Gv,this._angleAxis=new Fv,this._radiusAxis.polar=this._angleAxis.polar=this};pN.prototype={type:"polar",axisPointerEnabled:!0,constructor:pN,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=lr;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI;return[Math.cos(i)*e+this.cx,-Math.sin(i)*e+this.cy]}};var gN=lI.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n(gN.prototype,UA);var mN={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};ED("angle",gN,Wv,mN.angle),ED("radius",gN,Wv,mN.radius),Fs({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e;return this.ecModel.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}});var vN={dimensions:pN.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new pN(n);o.update=Zv;var a=o.getRadiusAxis(),r=o.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");Uv(a,s),Uv(r,l),Hv(o,t,e),i.push(o),t.coordinateSystem=o,o.model=t}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};Fa.register("polar",vN);var yN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];XD.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,o=n.polar,a=o.getRadiusAxis().getExtent(),r=n.getTicksCoords(),s=f(n.getViewLabels(),function(t){return(t=i(t)).coord=n.dataToCoord(t.tickValue),t});Yv(s),Yv(r),d(yN,function(e){!t.get(e+".show")||n.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,o,r,a,s)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),a=new sM({shape:{cx:e.cx,cy:e.cy,r:n[jv(e)]},style:o.getLineStyle(),z2:1,silent:!0});a.style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n){var o=t.getModel("axisTick"),a=(o.get("inside")?-1:1)*o.get("length"),s=n[jv(e)],l=f(i,function(t){return new _M({shape:Xv(e,[s,s+a],t.coord)})});this.group.add(OM(l,{style:r(o.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n,o){var a=t.getCategories(!0),r=t.getModel("axisLabel"),s=r.get("margin");d(o,function(i,o){var l=r,u=i.tickValue,h=n[jv(e)],c=e.coordToPoint([h+s,i.coord]),d=e.cx,f=e.cy,p=Math.abs(c[0]-d)/h<.3?"center":c[0]>d?"left":"right",g=Math.abs(c[1]-f)/h<.3?"middle":c[1]>f?"top":"bottom";a&&a[u]&&a[u].textStyle&&(l=new No(a[u].textStyle,r,r.ecModel));var m=new rM({silent:!0});this.group.add(m),mo(m.style,l,{x:c[0],y:c[1],textFill:l.getTextColor()||t.get("axisLine.lineStyle.color"),text:i.formattedLabel,textAlign:p,textVerticalAlign:g})},this)},_splitLine:function(t,e,i,n){var o=t.getModel("splitLine").getModel("lineStyle"),a=o.get("color"),s=0;a=a instanceof Array?a:[a];for(var l=[],u=0;u=0?"p":"n",M=y;v&&(n[r][b]||(n[r][b]={p:y,n:y}),M=n[r][b][S]);var I,T,A,D;if("radius"===h.dim){var C=h.dataToRadius(w)-y,L=a.dataToAngle(b);Math.abs(C)=0},kN.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=dy(e,t),o=0;o=0||AN(n,t.getAxis("y").model)>=0)&&a.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:a[0],coordSyses:a,getPanelRect:ON.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){TN(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:ON.geo})})}},NN=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],ON={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ao(t)),e}},EN={lineX:DN(fy,0),lineY:DN(fy,1),rect:function(t,e,i){var n=e[CN[t]]([i[0][0],i[1][0]]),o=e[CN[t]]([i[0][1],i[1][1]]),a=[cy([n[0],o[0]]),cy([n[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,i){var n=[[1/0,-1/0],[1/0,-1/0]];return{values:f(i,function(i){var o=e[CN[t]](i);return n[0][0]=Math.min(n[0][0],o[0]),n[1][0]=Math.min(n[1][0],o[1]),n[0][1]=Math.max(n[0][1],o[0]),n[1][1]=Math.max(n[1][1],o[1]),o}),xyMinMax:n}}},RN={lineX:DN(py,0),lineY:DN(py,1),rect:function(t,e,i){return[[t[0][0]-i[0]*e[0][0],t[0][1]-i[0]*e[0][1]],[t[1][0]-i[1]*e[1][0],t[1][1]-i[1]*e[1][1]]]},polygon:function(t,e,i){return f(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}},zN=["inBrush","outOfBrush"],BN="__ecBrushSelect",VN="__ecInBrushSelectEvent",GN=VT.VISUAL.BRUSH;zs(GN,function(t,e,i){t.eachComponent({mainType:"brush"},function(e){i&&"takeGlobalCursor"===i.type&&e.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1}),(e.brushTargetManager=new hy(e.option,t)).setInputRanges(e.areas,t)})}),Bs(GN,function(t,e,n){var o,a,s=[];t.eachComponent({mainType:"brush"},function(e,n){function l(t){return"all"===m||v[t]}function u(t){return!!t.length}function h(t,e){var i=t.coordinateSystem;w|=i.hasAxisBrushed(),l(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(x[e]=1)})}function c(i,n,o){var a=_y(i);if(a&&!wy(e,n)&&(d(b,function(n){a[n.brushType]&&e.brushTargetManager.controlSeries(n,i,t)&&o.push(n),w|=u(o)}),l(n)&&u(o))){var r=i.getData();r.each(function(t){xy(a,o,r,t)&&(x[t]=1)})}}var p={brushId:e.id,brushIndex:n,brushName:e.name,areas:i(e.areas),selected:[]};s.push(p);var g=e.option,m=g.brushLink,v=[],x=[],_=[],w=0;n||(o=g.throttleType,a=g.throttleDelay);var b=f(e.areas,function(t){return by(r({boundingRect:FN[t.brushType](t)},t))}),S=ty(e.option,zN,function(t){t.mappingMethod="fixed"});y(m)&&d(m,function(t){v[t]=1}),t.eachSeries(function(t,e){var i=_[e]=[];"parallel"===t.subType?h(t,e):c(t,e,i)}),t.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};p.selected.push(i);var n=_y(t),o=_[e],a=t.getData(),r=l(e)?function(t){return x[t]?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return xy(n,o,a,t)?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"};(l(e)?w:u(o))&&iy(zN,S,a,r)})}),vy(e,o,a,s,n)});var FN={lineX:B,lineY:B,rect:function(t){return Sy(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;ne[0][1]&&(e[0][1]=a[0]),a[1]e[1][1]&&(e[1][1]=a[1])}return e&&Sy(e)}},WN=["#ddd"];Fs({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&ey(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:WN},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=f(t,function(t){return My(this.option,t)},this))},setBrushOption:function(t){this.brushOption=My(this.option,t),this.brushType=this.brushOption.brushType}});Ws({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new zf(e.getZr())).on("brush",m(this._onBrush,this)).mount()},render:function(t){return this.model=t,Iy.apply(this,arguments)},updateTransform:Iy,updateView:Iy,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var n=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:n,areas:i(t),$from:n})}}),Es({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),Es({type:"brushSelect",event:"brushSelected",update:"none"},function(){});var HN={},ZN=rT.toolbox.brush;Dy.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:i(ZN.title)};var UN=Dy.prototype;UN.render=UN.updateView=function(t,e,i){var n,o,a;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,d(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?a:e===n)?"emphasis":"normal")})},UN.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return d(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},UN.onclick=function(t,e,i){var n=this._brushType,o=this._brushMode;"clear"===i?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},Ty("brush",Dy),Ns(function(t,e){var i=t&&t.brush;if(y(i)||(i=i?[i]:[]),i.length){var n=[];d(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var o=t&&t.toolbox;y(o)&&(o=o[0]),o||(o={feature:{}},t.toolbox=[o]);var a=o.feature||(o.feature={}),r=a.brush||(a.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),Jv(s),e&&!s.length&&s.push.apply(s,SN)}});Cy.prototype={constructor:Cy,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"},"value"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){var e=(t=Yo(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return o=Math.abs((o+7-this.getFirstDayOfWeek())%7),{y:e,m:i,d:n,day:o,time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)?this.getDateInfo(t):((t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t))},update:function(t,e){function i(t,e){return null!=t[e]&&"auto"!==t[e]}this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,o=["width","height"],a=this._model.get("cellSize").slice(),r=this._model.getBoxLayoutParams(),s="horizontal"===this._orient?[n,7]:[7,n];d([0,1],function(t){i(a,t)&&(r[o[t]]=a[t]*s[t])});var l={width:e.getWidth(),height:e.getHeight()},u=this._rect=ca(r,l);d([0,1],function(t){i(a,t)||(a[t]=u[o[t]]/s[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(t,e){y(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,o=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.timea.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),o=n.getDate(),a=t[1].date.getDate();if(n.setDate(o+i-1),n.getDate()!==a)for(var r=n.getTime()-t[1].time>0?1:-1;n.getDate()!==a&&(n.getTime()-t[1].time)*r>0;)i-=r,n.setDate(o+i-1);var s=Math.floor((i+t[0].day+6)/7),l=e?1-s:s-1;return e&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:i,weeks:s,nthWeek:l,fweek:t[0].day,lweek:t[1].day}},_getDateByWeeksAndDay:function(t,e,i){var n=this._getRangeInfo(i);if(t>n.weeks||0===t&&en.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=new Date(n.start.time);return a.setDate(n.start.d+o),this.getDateInfo(a)}},Cy.dimensions=Cy.prototype.dimensions,Cy.getDimensionsInfo=Cy.prototype.getDimensionsInfo,Cy.create=function(t,e){var i=[];return t.eachComponent("calendar",function(n){var o=new Cy(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])}),i},Fa.register("calendar",Cy);var XN=lI.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var o=ga(t);XN.superApply(this,"init",arguments),ky(t,o)},mergeOption:function(t,e){XN.superApply(this,"mergeOption",arguments),ky(this.option,t)}}),jN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},YN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Ws({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new yM({shape:{x:l[0],y:l[1],width:a,height:r},cursor:"default",style:o});i.add(u)}},_renderLines:function(t,e,i,n){function o(e){a._firstDayOfMonth.push(r.getDateInfo(e)),a._firstDayPoints.push(r.dataToRect([e],!1).tl);var o=a._getLinePointsOfOneWeek(t,e,i);a._tlpoints.push(o[0]),a._blpoints.push(o[o.length-1]),l&&a._drawSplitline(o,s,n)}var a=this,r=t.coordinateSystem,s=t.getModel("splitLine.lineStyle").getLineStyle(),l=t.get("splitLine.show"),u=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=e.start,c=0;h.time<=e.end.time;c++){o(h.formatedDate),0===c&&(h=r.getDateInfo(e.start.y+"-"+e.start.m));var d=h.date;d.setMonth(d.getMonth()+1),h=r.getDateInfo(d)}o(r.getNextNDay(e.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,u,i),s,n),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,u,i),s,n)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new gM({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?oa(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,o){e=e.slice();var a=["center","bottom"];"bottom"===n?(e[1]+=o,a=["center","top"]):"left"===n?e[0]-=o:"right"===n?(e[0]+=o,a=["center","top"]):e[1]-=o;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:a[0],textVerticalAlign:a[1]}}},_renderYearText:function(t,e,i,n){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),r=o.get("position");r||(r="horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=o.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new rM({z2:30});mo(m.style,o,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,a)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var o=n.get("nameMap"),r=n.get("margin"),s=n.get("position"),l=n.get("align"),u=[this._tlpoints,this._blpoints];_(o)&&(o=jN[o.toUpperCase()]||[]);var h="start"===s?0:1,c="horizontal"===e?0:1;r="start"===s?-r:r;for(var d="center"===l,f=0;f=r[0]&&t<=r[1]}if(t===this._dataZoomModel){var n=this._dimName,o=this.getTargetSeriesModels(),a=t.get("filterMode"),r=this._valueWindow;"none"!==a&&$N(o,function(t){var e=t.getData(),o=e.mapDimension(n,!0);o.length&&("weakFilter"===a?e.filterSelf(function(t){for(var i,n,a,s=0;sr[1];if(u&&!h&&!c)return!0;u&&(a=!0),h&&(i=!0),c&&(n=!0)}return a&&i&&n}):$N(o,function(n){if("empty"===a)t.setData(e.map(n,function(t){return i(t)?t:NaN}));else{var o={};o[n]=r,e.selectRange(o)}}),$N(o,function(t){e.setApproximateExtent(r,t)}))})}}};var tO=d,eO=KN,iO=Fs({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var n=By(t);this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=By(t);n(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;U_.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),Vy(this,t),tO([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,o){var a=this.dependentModels[e.axis][i],r=a.__dzAxisProxy||(a.__dzAxisProxy=new QN(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();eO(function(e){var i=e.axisIndex;t[i]=Di(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;eO(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var o="vertical"===e?"y":"x";n[o+"Axis"].length?(i[o+"AxisIndex"]=[0],t=!1):tO(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&eO(function(e){if(t){var n=[],o=this.dependentModels[e.axis];if(o.length&&!n.length)for(var a=0,r=o.length;a0?100:20}},getFirstTargetAxisModel:function(){var t;return eO(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;eO(function(n){tO(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(t,e){var i=this.option;tO([["start","startValue"],["end","endValue"]],function(e){null==t[e[0]]&&null==t[e[1]]||(i[e[0]]=t[e[0]],i[e[1]]=t[e[1]])},this),!e&&Vy(this,t)},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var i in e)if(e.hasOwnProperty(i)&&e[i].hostedBy(this))return e[i];for(var i in e)if(e.hasOwnProperty(i)&&!e[i].hostedBy(this))return e[i]},getRangePropMode:function(){return this._rangePropMode.slice()}}),nO=qI.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,a=0;a0&&e%g)p+=f;else{var i=null==t||isNaN(t)||""===t,n=i?0:aO(t,a,u,!0);i&&!l&&e?(c.push([c[c.length-1][0],0]),d.push([d[d.length-1][0],0])):!i&&l&&(c.push([p,0]),d.push([p,0])),c.push([p,n]),d.push([p,n]),p+=f,l=i}});var m=this.dataZoomModel;this._displayables.barGroup.add(new pM({shape:{points:c},style:r({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new gM({shape:{points:d},style:m.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var i,n=this.ecModel;return t.eachTargetAxis(function(o,a){d(t.getAxisProxy(o.name,a).getTargetSeriesModels(),function(t){if(!(i||!0!==e&&l(cO,t.get("type"))<0)){var r,s=n.getComponent(o.axis,a).axis,u=Gy(o.name),h=t.coordinateSystem;null!=u&&h.getOtherAxis&&(r=h.getOtherAxis(s).inverse),u=t.getData().mapDimension(u),i={thisAxis:s,series:t,thisDim:o.name,otherDim:u,otherAxisInverse:r}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,a=this.dataZoomModel;n.add(t.filler=new oO({draggable:!0,cursor:Fy(this._orient),drift:sO(this._onDragMove,this,"all"),onmousemove:function(t){mw(t.event)},ondragstart:sO(this._showDataInfo,this,!0),ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new oO($n({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}}))),lO([0,1],function(t){var o=Po(a.get("handleIcon"),{cursor:Fy(this._orient),draggable:!0,drift:sO(this._onDragMove,this,t),onmousemove:function(t){mw(t.event)},ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),r=o.getBoundingRect();this._handleHeight=Vo(a.get("handleSize"),this._size[1]),this._handleWidth=r.width/r.height*this._handleHeight,o.setStyle(a.getModel("handleStyle").getItemStyle());var s=a.get("handleColor");null!=s&&(o.style.fill=s),n.add(e[t]=o);var l=a.textStyleModel;this.group.add(i[t]=new rM({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:l.getTextColor(),textFont:l.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[aO(t[0],[0,100],e,!0),aO(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];QL(e,n,o,i.get("zoomLock")?"all":t,null!=a.minSpan?aO(a.minSpan,r,o,!0):null,null!=a.maxSpan?aO(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=rO([aO(n[0],o,r,!0),aO(n[1],o,r,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=rO(i.slice()),o=this._size;lO([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a/2,a/2],position:[i[t],o[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=Ao(n.handles[t].parent,this.group),i=Co(0===t?"right":"left",e),s=this._handleWidth/2+hO,l=Do([c[t]+(0===t?-s:s),this._size[1]/2],e);o[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===uO?"middle":i,textAlign:a===uO?i:"center",text:r[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,a=this._orient,r=["",""];if(i.get("showDetail")){var s=i.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,u=this._range,h=t?s.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:s.getDataValueWindow();r=[this._formatLabel(h[0],l),this._formatLabel(h[1],l)]}}var c=rO(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return x(n)?n(t,a):_(n)?n.replace("{value}",a):a},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i){this._dragging=!0;var n=Do([e,i],this._displayables.barGroup.getLocalTransform(),!0),o=this._updateInterval(t,n[0]),a=this.dataZoomModel.get("realtime");this._updateView(!a),o&&a&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get("realtime")&&this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,i=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(i[0]<0||i[0]>e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var t;if(lO(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});iO.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var fO="\0_ec_dataZoom_roams",pO=m,gO=nO.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){gO.superApply(this,"render",arguments),this._range=t.getPercentRange(),d(this.getTargetCoordInfo(),function(e,n){var o=f(e,function(t){return Zy(t.model)});d(e,function(e){var a=e.model,r={};d(["pan","zoom","scrollMove"],function(t){r[t]=pO(mO[t],this,e,n)},this),Wy(i,{coordId:Zy(a),allCoordIds:o,containsPoint:function(t,e,i){return a.coordinateSystem.containPoint([e,i])},dataZoomId:t.id,dataZoomModel:t,getRange:r})},this)},this)},dispose:function(){Hy(this.api,this.dataZoomModel.id),gO.superApply(this,"dispose",arguments),this._range=null}}),mO={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=vO[e](null,[n.originX,n.originY],r,i,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],u=Math.max(1/n.scale,0);a[0]=(a[0]-l)*u+l,a[1]=(a[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return QL(0,a,[0,100],0,h.minSpan,h.maxSpan),this._range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}},pan:Ky(function(t,e,i,n,o,a){var r=vO[n]([a.oldX,a.oldY],[a.newX,a.newY],e,o,i);return r.signal*(t[1]-t[0])*r.pixel/r.pixelLength}),scrollMove:Ky(function(t,e,i,n,o,a){return vO[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})},vO={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.mainType?(r.pixel=e[0]-t[0],r.pixelLength=l[1]-l[0],r.pixelStart=l[0],r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}};Os({getTargetSeries:function(t){var e=R();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){d(n.getAxisProxy(t.name,i).getTargetSeriesModels(),function(t){e.set(t.uid,t)})})}),e},modifyOutputEnd:!0,overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).reset(n,e)}),t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).filterData(n,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})}}),Es("dataZoom",function(t,e){var i=Ny(m(e.eachComponent,e,"dataZoom"),KN,function(t,e){return t.get(e.axisIndex)}),n=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){n.push.apply(n,i(t).nodes)}),d(n,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})});var yO=d,xO=function(t){var e=t&&t.visualMap;y(e)||(e=e?[e]:[]),yO(e,function(t){if(t){$y(t,"splitList")&&!$y(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&y(e)&&yO(e,function(t){w(t)&&($y(t,"start")&&!$y(t,"min")&&(t.min=t.start),$y(t,"end")&&!$y(t,"max")&&(t.max=t.end))})}})};lI.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"});var _O=VT.VISUAL.COMPONENT;Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=[];return e.eachComponent("visualMap",function(e){var n=t.pipelineContext;!e.isTargetSeries(t)||n&&n.large||i.push(ny(e.stateList,e.targetVisuals,m(e.getValueState,e),e.getDataDimension(t.getData())))}),i}}),Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=t.getData(),n=[];e.eachComponent("visualMap",function(e){if(e.isTargetSeries(t)){var o=e.getVisualMeta(m(Jy,null,t,e))||{stops:[],outerColors:[]},a=e.getDataDimension(i),r=i.getDimensionInfo(a);null!=r&&(o.dimension=r.index,n.push(o))}}),t.getData().setVisual("visualMeta",n)}});var wO={get:function(t,e,n){var o=i((bO[t]||{})[e]);return n&&y(o)?o[o.length-1]:o}},bO={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},SO=hL.mapVisual,MO=hL.eachVisual,IO=y,TO=d,AO=Fo,DO=Bo,CO=B,LO=Fs({type:"visualMap",dependencies:["series"],stateList:["inRange","outOfRange"],replacableOptionKeys:["inRange","outOfRange","target","controller","color"],dataBound:[-1/0,1/0],layoutMode:{type:"box",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:"all",min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:"#333"}},init:function(t,e,i){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this.mergeDefaultAndTheme(t,i)},optionUpdated:function(t,e){var i=this.option;U_.canvasSupported||(i.realtime=!1),!e&&ey(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=m(t,this),this.controllerVisuals=ty(this.option.controller,e,t),this.targetVisuals=ty(this.option.target,e,t)},getTargetSeriesIndices:function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,i){e.push(i)}):e=Di(t),e},eachTargetSeries:function(t,e){d(this.getTargetSeriesIndices(),function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===l[0]?"min":t===l[1]?"max":(+t).toFixed(Math.min(s,20))}var o,a,r=this.option,s=r.precision,l=this.dataBound,u=r.formatter;return i=i||["<",">"],y(t)&&(t=t.slice(),o=!0),a=e?t:o?[n(t[0]),n(t[1])]:n(t),_(u)?u.replace("{value}",o?a[0]:a).replace("{value2}",o?a[1]:a):x(u)?o?u(t[0],t[1]):u(t):o?t[0]===l[0]?i[0]+" "+a[1]:t[1]===l[1]?i[1]+" "+a[0]:a[0]+" - "+a[1]:a},resetExtent:function(){var t=this.option,e=AO([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension,i=t.dimensions;if(null!=e||i.length){if(null!=e)return t.getDimension(e);for(var n=t.dimensions,o=n.length-1;o>=0;o--){var a=n[o];if(!t.getDimensionInfo(a).isCalculationCoord)return a}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){IO(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")},TO(this.stateList,function(e){var i=t[e];if(_(i)){var n=wO.get(i,"active",l);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}var e=this.ecModel,o=this.option,a={inRange:o.inRange,outOfRange:o.outOfRange},r=o.target||(o.target={}),s=o.controller||(o.controller={});n(r,a),n(s,a);var l=this.isCategory();t.call(this,r),t.call(this,s),function(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},TO(n,function(t,e){if(hL.isValidType(e)){var i=wO.get(e,"inactive",l);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}.call(this,r,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,o=this.get("inactiveColor");TO(this.stateList,function(a){var r=this.itemSize,s=t[a];s||(s=t[a]={color:l?o:[o]}),null==s.symbol&&(s.symbol=e&&i(e)||(l?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=n&&i(n)||(l?r[0]:[r[0],r[0]])),s.symbol=SO(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var u=s.symbolSize;if(null!=u){var h=-1/0;MO(u,function(t){t>h&&(h=t)}),s.symbolSize=SO(u,function(t){return DO(t,[0,h],[0,r[0]],!0)})}},this)}.call(this,s)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:CO,getValueState:CO,getVisualMeta:CO}),kO=[20,140],PO=LO.extend({type:"visualMap.continuous",defaultOption:{align:"auto",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:null},optionUpdated:function(t,e){PO.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){PO.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=kO[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=kO[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):y(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){LO.prototype.completeVisualOption.apply(this,arguments),d(this.stateList,function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this.option.range=t.slice(),this._resetRange()},getSelected:function(){var t=this.getExtent(),e=Fo((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){o.push({value:e,color:t(e,i)})}for(var i=Qy(0,0,this.getExtent()),n=Qy(0,0,this.option.range.slice()),o=[],a=0,r=0,s=n.length,l=i.length;rt[1])break;i.push({color:this.getControllerVisual(a,"color",e),offset:o/100})}return i.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),i},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get("inverse");return new tb("horizontal"!==e||i?"horizontal"===e&&i?{scale:"bottom"===t?[-1,1]:[1,1],rotation:-Math.PI/2}:"vertical"!==e||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:"bottom"===t?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,a=i.handleLabels;EO([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=Do(i.handleLabelPoints[r],Ao(s,this.group));a[r].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[r]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===r?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),r=o.itemSize,s=[0,r[1]],l=OO(t,a,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",ox(!!i,n,l,r[1]));var c={convertOpacityToAlpha:!0},d=this.getControllerVisual(t,"color",c);h.setStyle("fill",d);var f=Do(u.indicatorLabelPoint,Ao(h,this.group)),p=u.indicatorLabel;p.attr("invisible",!1);var g=this._applyTransform("left",u.barGroup),m=this._orient;p.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===m?g:"middle",textAlign:"horizontal"===m?"center":g,x:f[0],y:f[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=RO(zO(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i.option.hoverLink){var o=[0,n[1]],a=i.getExtent();t=RO(zO(o[0],t),o[1]);var r=ax(i,a,o),s=[t-r,t+r],l=OO(t,o,a,!0),u=[OO(s[0],o,a,!0),OO(s[1],o,a,!0)];s[0]o[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",r):u[1]===1/0?this._showIndicator(l,u[0],"> ",r):this._showIndicator(l,l,"≈ ",r));var h=this._hoverLinkDataIndices,c=[];(e||rx(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=Ri(h,c);this._dispatchHighDown("downplay",ex(d[0])),this._dispatchHighDown("highlight",ex(d[1]))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t.target,i=this.visualMapModel;if(e&&null!=e.dataIndex){var n=this.ecModel.getSeriesByIndex(e.seriesIndex);if(i.isTargetSeries(n)){var o=n.getData(e.dataType),a=o.get(i.getDataDimension(o),e.dataIndex,!0);isNaN(a)||this._showIndicator(a,a)}}},_hideIndicator:function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",ex(t)),t.length=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},_applyTransform:function(t,e,i,n){var o=Ao(e,n?null:this.group);return zM[y(t)?"applyTransform":"transformDirection"](t,o,i)},_dispatchHighDown:function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});Es({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})}),Ns(xO);var FO=LO.extend({type:"visualMap.piecewise",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieceList:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(t,e){FO.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();WO[this._mode].call(this),this._resetSelected(t,e);var o=this.option.categories;this.resetVisual(function(t,e){"categories"===n?(t.mappingMethod="category",t.categories=i(o)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=f(this._pieceList,function(t){var t=i(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(w(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=hL.listVisualTypes(),o=this.isCategory();d(e.pieces,function(t){d(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),d(i,function(i,n){var a=0;d(this.stateList,function(i){a|=t(e,i,n)||t(e.target,i,n)},this),!a&&d(this.stateList,function(t){(e[t]||(e[t]={}))[n]=wO.get(n,"inRange"===t?"active":"inactive",o)})},this),LO.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,d(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var a=!1;d(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(a?o[i]=!1:a=!0)},this)}},getSelectedMapKey:function(t){return"categories"===this._mode?t.value+"":t.index+""},getPieceList:function(){return this._pieceList},_determineMode:function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=i(t)},getValueState:function(t){var e=hL.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){hL.findPieceIndex(e,this._pieceList)===t&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getRepresentValue:function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var i=t.interval||[];e=i[0]===-1/0&&i[1]===1/0?0:(i[0]+i[1])/2}return e},getVisualMeta:function(t){function e(e,a){var r=o.getRepresentValue({interval:e});a||(a=o.getValueState(r));var s=t(r,a);e[0]===-1/0?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,a=this._pieceList.slice();if(a.length){var r=a[0].interval[0];r!==-1/0&&a.unshift({interval:[-1/0,r]}),(r=a[a.length-1].interval[1])!==1/0&&a.push({interval:[r,1/0]})}else a.push({interval:[-1/0,1/0]});var s=-1/0;return d(a,function(t){var i=t.interval;i&&(i[0]>s&&e([s,i[0]],"outOfRange"),e(i.slice()),s=i[1])},this),{stops:i,outerColors:n}}}}),WO={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.toFixed(i);var r=0;t.minOpen&&e.push({index:r++,interval:[-1/0,n[0]],close:[0,0]});for(var s=n[0],l=r+o;r","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};NO.extend({type:"visualMap.piecewise",doRender:function(){var t=this.group;t.removeAll();var e=this.visualMapModel,i=e.get("textGap"),n=e.textStyleModel,o=n.getFont(),a=n.getTextColor(),r=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=T(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,r),d(l.viewPieceList,function(n){var l=n.piece,u=new tb;u.onclick=m(this._onItemClick,this,l),this._enableHoverLink(u,n.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var d=this.visualMapModel.getValueState(c);u.add(new rM({style:{x:"right"===r?-i:s[0]+i,y:s[1]/2,text:l.text,textVerticalAlign:"middle",textAlign:r,textFont:o,textFill:a,opacity:"outOfRange"===d?.5:1}}))}t.add(u)},this),u&&this._renderEndsText(t,u[1],s,h,r),aI(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:ex(i.findTargetDataIndices(e))})}t.on("mouseover",m(i,this,"highlight")).on("mouseout",m(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return tx(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new tb,r=this.visualMapModel.textStyleModel;a.add(new rM({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=f(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),o=t.get("inverse");return("horizontal"===n?o:!o)?e.reverse():i&&(i=i.slice().reverse()),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(Jl(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,n=e.option,o=i(n.selected),a=e.getSelectedMapKey(t);"single"===n.selectedMode?(o[a]=!0,d(o,function(t,e){o[e]=e===a})):o[a]=!o[a],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:o})}});Ns(xO);var HO=ta,ZO=ia,UO=Fs({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,n){var o=this.constructor,r=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType,!0),s=t[r];i&&i.data?(s?s.mergeOption(i,e,!0):(n&&ux(i),d(i.data,function(t){t instanceof Array?(ux(t[0]),ux(t[1])):ux(t)}),a(s=new o(i,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),t[r]=s):t[r]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=y(i)?f(i,HO).join(", "):HO(i),o=e.getName(t),a=ZO(this.name);return(null!=i||o)&&(a+="
"),o&&(a+=ZO(o),null!=i&&(a+=" : ")),null!=i&&(a+=ZO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(UO,ZI),UO.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var XO=l,jO=v,YO={min:jO(dx,"min"),max:jO(dx,"max"),average:jO(dx,"average")},qO=Ws({type:"marker",init:function(){this.markerGroupMap=R()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});qO.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(xx(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,r=t.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,new Du),u=_x(o,t,e);e.setData(u),xx(e.getData(),t,n),u.each(function(t){var i=u.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),u.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||r.getVisual("color"),symbol:i.getShallow("symbol")})}),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markPoint=t.markPoint||{}}),UO.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});var KO=function(t,e,o,r){var s=t.getData(),l=r.type;if(!y(r)&&("min"===l||"max"===l||"average"===l||"median"===l||null!=r.xAxis||null!=r.yAxis)){var u,h;if(null!=r.yAxis||null!=r.xAxis)u=null!=r.yAxis?"y":"x",e.getAxis(u),h=T(r.yAxis,r.xAxis);else{var c=px(r,s,e,t);u=c.valueDataDim,c.valueAxis,h=yx(s,u,l)}var d="x"===u?0:1,f=1-d,p=i(r),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-1/0,g.coord[f]=1/0;var m=o.get("precision");m>=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),p.coord[d]=g.coord[d]=h,r=[p,g,{type:l,valueIndex:r.valueIndex,value:h}]}return r=[fx(t,r[0]),fx(t,r[1]),a({},r[2])],r[2].type=r[2].type||"",n(r[2],r[0]),n(r[2],r[1]),r};qO.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){Ix(o,e,!0,t,i),Ix(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);Ix(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||g[o?0:1],symbol:a.get("symbol",!0)||p[o?0:1],color:a.get("itemStyle.color")||s.getVisual("color")})}var a=t.coordinateSystem,r=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(r)||l.set(r,new sf);this.group.add(u.group);var h=Tx(a,t,e),c=h.from,d=h.to,f=h.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");y(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),h.from.each(function(t){o(c,t,!0),o(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),u.updateData(f),h.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),u.__keep=!0,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markLine=t.markLine||{}}),UO.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});var $O=function(t,e,i,n){var a=fx(t,n[0]),r=fx(t,n[1]),s=T,l=a.coord,u=r.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),u[0]=s(u[0],1/0),u[1]=s(u[1],1/0);var h=o([{},a,r]);return h.coord=[a.coord,r.coord],h.x0=a.x,h.y0=a.y,h.x1=r.x,h.y1=r.y,h},JO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];qO.extend({type:"markArea",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=f(JO,function(o){return Lx(n,e,o,t,i)});n.setItemLayout(e,o),n.getItemGraphicEl(e).setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(a)||l.set(a,{group:new tb});this.group.add(u.group),u.__keep=!0;var h=kx(o,t,e);e.setData(h),h.each(function(e){h.setItemLayout(e,f(JO,function(i){return Lx(h,e,i,t,n)})),h.setItemVisual(e,{color:s.getVisual("color")})}),h.diff(u.__data).add(function(t){var e=new pM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);Io(n,{shape:{points:h.getItemLayout(t)}},e,t),u.group.add(n),h.setItemGraphicEl(t,n)}).remove(function(t){var e=u.__data.getItemGraphicEl(t);u.group.remove(e)}).execute(),h.eachItemGraphicEl(function(t,i){var n=h.getItemModel(i),o=n.getModel("label"),a=n.getModel("emphasis.label"),s=h.getItemVisual(i,"color");t.useStyle(r(n.getModel("itemStyle").getItemStyle(),{fill:Yt(s,.4),stroke:s})),t.hoverStyle=n.getModel("emphasis.itemStyle").getItemStyle(),go(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),fo(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markArea=t.markArea||{}});lI.registerSubTypeDefaulter("timeline",function(){return"slider"}),Es({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),r({currentIndex:i.option.currentIndex},t)}),Es({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var QO=lI.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){QO.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],n=t.axisType,o=this._names=[];if("category"===n){var a=[];d(e,function(t,e){var n,r=Li(t);w(t)?(n=i(t)).value=e:n=e,a.push(n),_(r)||null!=r&&!isNaN(r)||(r=""),o.push(r+"")}),e=a}var r={category:"ordinal",time:"time"}[n]||"number";(this._data=new vA([{name:"value",type:r}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});h(QO.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}}),ZI);var tE=qI.extend({type:"timeline"}),eE=function(t,e,i,n){aD.call(this,t,e,i),this.type=n||"value",this.model=null};eE.prototype={constructor:eE,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(eE,aD);var iE=m,nE=d,oE=Math.PI;tE.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return ia(s.scale.getLabel(t))},nE(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,a,s,t)},this),this._renderAxisLabel(o,r,s,t),this._position(o,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),o=Ex(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2=0||"+"===i?"left":"right"},r={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},s={horizontal:0,vertical:oE/2},l="vertical"===n?o.height:o.width,u=t.getModel("controlStyle"),h=u.get("show",!0),c=h?u.get("itemSize"):0,d=h?u.get("itemGap"):0,f=c+d,p=t.get("label.rotate")||0;p=p*oE/180;var g,m,v,y,x=u.get("position",!0),_=h&&u.get("showPlayBtn",!0),w=h&&u.get("showPrevBtn",!0),b=h&&u.get("showNextBtn",!0),S=0,M=l;return"left"===x||"bottom"===x?(_&&(g=[0,0],S+=f),w&&(m=[S,0],S+=f),b&&(v=[M-c,0],M-=f)):(_&&(g=[M-c,0],M-=f),w&&(m=[0,0],S+=f),b&&(v=[M-c,0],M-=f)),y=[S,M],t.get("inverse")&&y.reverse(),{viewRect:o,mainLength:l,orient:n,rotation:s[n],labelRotation:p,labelPosOpt:i,labelAlign:t.get("label.align")||a[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||r[n],playPosition:g,prevBtnPosition:m,nextBtnPosition:v,axisExtent:y,controlSize:c,controlGap:d}},_position:function(t,e){function i(t){var e=t.position;t.origin=[c[0][0]-e[0],c[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var a=this._mainGroup,r=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=xt(),u=s.x,h=s.y+s.height;St(l,l,[-u,-h]),Mt(l,l,-oE/2),St(l,l,[u,h]),(s=s.clone()).applyTransform(l)}var c=n(s),d=n(a.getBoundingRect()),f=n(r.getBoundingRect()),p=a.position,g=r.position;g[0]=p[0]=c[0][0];var m=t.labelPosOpt;if(isNaN(m))o(p,d,c,1,v="+"===m?0:1),o(g,f,c,1,1-v);else{var v=m>=0?0:1;o(p,d,c,1,v),g[1]=p[1]+m}a.attr("position",p),r.attr("position",g),a.rotation=r.rotation=t.rotation,i(a),i(r)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=Hl(e,n);o.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var a=i.getDataExtent("value");o.setExtent(a[0],a[1]),o.niceTicks();var r=new eE("value",o,t.axisExtent,n);return r.model=e,r},_createGroup:function(t){var e=this["_"+t]=new tb;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new _M({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:a({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),a=i.scale.getTicks();nE(a,function(t){var a=i.dataToCoord(t),r=o.getItemModel(t),s=r.getModel("itemStyle"),l=r.getModel("emphasis.itemStyle"),u={position:[a,0],onclick:iE(this._changeTimeline,this,t)},h=zx(r,s,e,u);fo(h,l.getItemStyle()),r.get("tooltip")?(h.dataIndex=t,h.dataModel=n):h.dataIndex=h.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){if(i.getLabelModel().get("show")){var o=n.getData(),a=i.getViewLabels();nE(a,function(n){var a=n.tickValue,r=o.getItemModel(a),s=r.getModel("label"),l=r.getModel("emphasis.label"),u=i.dataToCoord(n.tickValue),h=new rM({position:[u,0],rotation:t.labelRotation-t.rotation,onclick:iE(this._changeTimeline,this,a),silent:!1});mo(h.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(h),fo(h,mo({},l))},this)}},_renderControl:function(t,e,i,n){function o(t,i,o,h){if(t){var c=Rx(n,i,u,{position:t,origin:[a/2,0],rotation:h?-r:0,rectHover:!0,style:s,onclick:o});e.add(c),fo(c,l)}}var a=t.controlSize,r=t.rotation,s=n.getModel("controlStyle").getItemStyle(),l=n.getModel("emphasis.controlStyle").getItemStyle(),u=[0,-a/2,a,a],h=n.getPlayState(),c=n.get("inverse",!0);o(t.nextBtnPosition,"controlStyle.nextIcon",iE(this._changeTimeline,this,c?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",iE(this._changeTimeline,this,c?"+":"-")),o(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),iE(this._handlePlayClick,this,!h),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),a=n.getCurrentIndex(),r=o.getItemModel(a).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=iE(s._handlePointerDrag,s),t.ondragend=iE(s._handlePointerDragend,s),Bx(t,a,i,n,!0)},onUpdate:function(t){Bx(t,a,i,n)}};this._currentPointer=zx(r,r,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i.offsetX,i.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=Fo(this._axis.getExtent().slice());i>n[1]&&(i=n[1]),ii.getHeight()&&(n.textPosition="top",l=!0);var u=l?-5-o.height:s+8;a+o.width/2>i.getWidth()?(n.textPosition=["100%",u],n.textAlign="right"):a-o.width/2<0&&(n.textPosition=[0,u],n.textAlign="left")}})}},updateView:function(t,e,i,n){d(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(t,e){d(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){d(this._features,function(i){i.dispose&&i.dispose(t,e)})}});var rE=rT.toolbox.saveAsImage;Gx.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:rE.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:rE.lang.slice()},Gx.prototype.unusable=!U_.canvasSupported,Gx.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=document.createElement("a"),a=i.get("type",!0)||"png";o.download=n+"."+a,o.target="_blank";var r=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(o.href=r,"function"!=typeof MouseEvent||U_.browser.ie||U_.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(r.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,n+"."+a)}else{var c=i.get("lang"),d='';window.open().document.write(d)}else{var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(f)}},Ty("saveAsImage",Gx);var sE=rT.toolbox.magicType;Fx.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z",tiled:"M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z"},title:i(sE.title),option:{},seriesIndex:{}};var lE=Fx.prototype;lE.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return d(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var uE={line:function(t,e,i,o){if("bar"===t)return n({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.line")||{},!0)},bar:function(t,e,i,o){if("line"===t)return n({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.bar")||{},!0)},stack:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:"__ec_magicType_stack__"},o.get("option.stack")||{},!0)},tiled:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:""},o.get("option.tiled")||{},!0)}},hE=[["line","bar"],["stack","tiled"]];lE.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(uE[i]){var a={series:[]};d(hE,function(t){l(t,i)>=0&&d(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},function(e){var o=e.subType,s=e.id,l=uE[i](o,s,e,n);l&&(r(l,e.option),a.series.push(l));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var c=h.dim+"Axis",d=t.queryComponents({mainType:c,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;a[c]=a[c]||[];for(var f=0;f<=d;f++)a[c][d]=a[c][d]||{};a[c][d].boundaryGap="bar"===i}}}),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:a})}},Es({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Ty("magicType",Fx);var cE=rT.toolbox.dataView,dE=new Array(60).join("-"),fE="\t",pE=new RegExp("["+fE+"]+","g");$x.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:i(cE.title),lang:i(cE.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},$x.prototype.onclick=function(t,e){function i(){n.removeChild(a),x._dom=null}var n=e.getDom(),o=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=o.get("backgroundColor")||"#fff";var r=document.createElement("h4"),s=o.get("lang")||[];r.innerHTML=s[0]||o.get("title"),r.style.cssText="margin: 10px 20px;",r.style.color=o.get("textColor");var l=document.createElement("div"),u=document.createElement("textarea");l.style.cssText="display:block;width:100%;overflow:auto;";var h=o.get("optionToContent"),c=o.get("contentToOption"),d=Ux(t);if("function"==typeof h){var f=h(e.getOption());"string"==typeof f?l.innerHTML=f:M(f)&&l.appendChild(f)}else l.appendChild(u),u.readOnly=o.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=o.get("textColor"),u.style.borderColor=o.get("textareaBorderColor"),u.style.backgroundColor=o.get("textareaColor"),u.value=d.value;var p=d.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:0;left:0;right:0;";var m="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),y=document.createElement("div");m+=";background-color:"+o.get("buttonColor"),m+=";color:"+o.get("buttonTextColor");var x=this;ht(v,"click",i),ht(y,"click",function(){var t;try{t="function"==typeof c?c(l,e.getOption()):Kx(u.value,p)}catch(t){throw i(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),v.innerHTML=s[1],y.innerHTML=s[2],y.style.cssText=m,v.style.cssText=m,!o.get("readOnly")&&g.appendChild(y),g.appendChild(v),ht(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+fE+e.substring(n),this.selectionStart=this.selectionEnd=i+1,mw(t)}}),a.appendChild(r),a.appendChild(l),a.appendChild(g),l.style.height=n.clientHeight-80+"px",n.appendChild(a),this._dom=a},$x.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},$x.prototype.dispose=function(t,e){this.remove(t,e)},Ty("dataView",$x),Es({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];d(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:Jx(t.data,o)})}else i.push(a({type:"scatter"},t))}),e.mergeOption(r({series:i},t.newOption))});var gE=d,mE="\0_ec_hist_store";iO.extend({type:"dataZoom.select"}),nO.extend({type:"dataZoom.select"});var vE=rT.toolbox.dataZoom,yE=d,xE="\0_ec_\0toolbox-dataZoom_";o_.defaultOption={show:!0,icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:i(vE.title)};var _E=o_.prototype;_E.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,s_(t,e,this,n,i),r_(t,e)},_E.onclick=function(t,e,i){wE[i].call(this)},_E.remove=function(t,e){this._brushController.unmount()},_E.dispose=function(t,e){this._brushController.dispose()};var wE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(t_(this.ecModel))}};_E._onBrush=function(t,e){function i(t,e,i){var r=e.getAxis(t),s=r.model,l=n(t,s,a),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(i=QL(0,i.slice(),r.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(o[l.id]={dataZoomId:l.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){i.getAxisModel(t,e.componentIndex)&&(n=i)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]),new hy(a_(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),Qx(a,o),this._dispatchZoomAction(o)}},_E._dispatchZoomAction=function(t){var e=[];yE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},Ty("dataZoom",o_),Ns(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"===a||y(a)||(a=!1===a||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"===a||-1!==l(a,i)){var r={type:"select",$fromToolbox:!0,id:xE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),yE(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);y(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(y(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}});var bE=rT.toolbox.restore;l_.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:bE.title},l_.prototype.onclick=function(t,e,i){e_(t),e.dispatchAction({type:"restore",from:this.uid})},Ty("restore",l_),Es({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var SE,ME="urn:schemas-microsoft-com:vml",IE="undefined"==typeof window?null:window,TE=!1,AE=IE&&IE.document;if(AE&&!U_.canvasSupported)try{!AE.namespaces.zrvml&&AE.namespaces.add("zrvml",ME),SE=function(t){return AE.createElement("')}}catch(t){SE=function(t){return AE.createElement("<"+t+' xmlns="'+ME+'" class="zrvml">')}}var DE=ES.CMD,CE=Math.round,LE=Math.sqrt,kE=Math.abs,PE=Math.cos,NE=Math.sin,OE=Math.max;if(!U_.canvasSupported){var EE=21600,RE=EE/2,zE=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=EE+","+EE,t.coordorigin="0,0"},BE=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},VE=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},GE=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},FE=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},WE=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},HE=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},ZE=function(t,e,i){var n=Gt(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=VE(n[0],n[1],n[2]),t.opacity=i*n[3])},UE=function(t){var e=Gt(t);return[VE(e[0],e[1],e[2]),e[3]]},XE=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof IM){var o,a=0,r=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){o="gradient";var d=i.transform,f=[n.x*h,n.y*c],p=[n.x2*h,n.y2*c];d&&(Q(f,f,d),Q(p,p,d));var g=p[0]-f[0],m=p[1]-f[1];(a=180*Math.atan2(g,m)/Math.PI)<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial";var f=[n.x*h,n.y*c],d=i.transform,v=i.scale,y=h,x=c;r=[(f[0]-u.x)/y,(f[1]-u.y)/x],d&&Q(f,f,d),y/=v[0]*EE,x/=v[1]*EE;var _=OE(y,x);s=0/_,l=2*n.r/_-s}var w=n.colorStops.slice();w.sort(function(t,e){return t.offset-e.offset});for(var b=w.length,S=[],M=[],I=0;I=2){var D=S[0][0],C=S[1][0],L=S[0][1]*e.opacity,k=S[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=D,t.color2=C,t.colors=M.join(","),t.opacity=k,t.opacity2=L}"radial"===o&&(t.focusposition=r.join(","))}else ZE(t,n,e.opacity)},jE=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof IM||ZE(t,e.stroke,e.opacity)},YE=function(t,e,i,n){var o="fill"===e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof IM&&FE(t,a),a||(a=u_(e)),o?XE(a,i,n):jE(a,i),GE(t,a)):(t[o?"filled":"stroked"]="false",FE(t,a))},qE=[[],[],[]],KE=function(t,e){var i,n,o,a,r,s,l=DE.M,u=DE.C,h=DE.L,c=DE.A,d=DE.Q,f=[],p=t.data,g=t.len();for(a=0;a.01?N&&(O+=.0125):Math.abs(E-D)<1e-4?N&&OA?x-=.0125:x+=.0125:N&&ED?y+=.0125:y-=.0125),f.push(R,CE(((A-C)*M+b)*EE-RE),",",CE(((D-L)*I+S)*EE-RE),",",CE(((A+C)*M+b)*EE-RE),",",CE(((D+L)*I+S)*EE-RE),",",CE((O*M+b)*EE-RE),",",CE((E*I+S)*EE-RE),",",CE((y*M+b)*EE-RE),",",CE((x*I+S)*EE-RE)),r=y,s=x;break;case DE.R:var z=qE[0],B=qE[1];z[0]=p[a++],z[1]=p[a++],B[0]=z[0]+p[a++],B[1]=z[1]+p[a++],e&&(Q(z,z,e),Q(B,B,e)),z[0]=CE(z[0]*EE-RE),B[0]=CE(B[0]*EE-RE),z[1]=CE(z[1]*EE-RE),B[1]=CE(B[1]*EE-RE),f.push(" m ",z[0],",",z[1]," l ",B[0],",",z[1]," l ",B[0],",",B[1]," l ",z[0],",",B[1]);break;case DE.Z:f.push(" x ")}if(i>0){f.push(n);for(var V=0;V100&&(tR=0,QE={});var i,n=eR.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(t){}e={style:n.fontStyle||"normal",variant:n.fontVariant||"normal",weight:n.fontWeight||"normal",size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},QE[t]=e,tR++}return e};!function(t,e){bb[t]=e}("measureText",function(t,e){var i=AE;JE||((JE=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",AE.body.appendChild(JE));try{JE.style.font=e}catch(t){}return JE.innerHTML="",JE.appendChild(i.createTextNode(t)),{width:JE.offsetWidth}});for(var nR=new de,oR=[Db,di,fi,Pn,rM],aR=0;aR=o&&u+1>=a){for(var h=[],c=0;c=o&&c+1>=a)return T_(0,s.components);l[i]=s}else l[i]=void 0}r++}();if(d)return d}},pushComponent:function(t,e,i){var n=t[t.length-1];n&&n.added===e&&n.removed===i?t[t.length-1]={count:n.count+1,added:e,removed:i}:t.push({count:1,added:e,removed:i})},extractCommon:function(t,e,i,n){for(var o=e.length,a=i.length,r=t.newPos,s=r-n,l=0;r+1=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},D_.prototype.update=function(t,e){if(t){var i=this.getDefs(!1);if(t[this._domName]&&i.contains(t[this._domName]))"function"==typeof e&&e(t);else{var n=this.add(t);n&&(t[this._domName]=n)}}},D_.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},D_.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},D_.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return d(this._tagNames,function(i){var n=t.getElementsByTagName(i);e=e.concat([].slice.call(n))}),e},D_.prototype.markAllUnused=function(){var t=this;d(this.getDoms(),function(e){e[t._markLabel]="0"})},D_.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},D_.prototype.removeUnused=function(){var t=this.getDefs(!1);if(t){var e=this;d(this.getDoms(),function(i){"1"!==i[e._markLabel]&&t.removeChild(i)})}},D_.prototype.getSvgProxy=function(t){return t instanceof Pn?yR:t instanceof fi?xR:t instanceof rM?_R:yR},D_.prototype.getTextSvgElement=function(t){return t.__textSvgEl},D_.prototype.getSvgElement=function(t){return t.__svgEl},u(C_,D_),C_.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var i=this;d(["fill","stroke"],function(n){if(e.style[n]&&("linear"===e.style[n].type||"radial"===e.style[n].type)){var o,a=e.style[n],r=i.getDefs(!0);a._dom?(o=a._dom,r.contains(a._dom)||i.addDom(o)):o=i.add(a),i.markUsed(e);var s=o.getAttribute("id");t.setAttribute(n,"url(#"+s+")")}})}},C_.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return Yw("Illegal gradient type."),null;e=this.createElement("radialGradient")}return t.id=t.id||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-gradient-"+t.id),this.updateDom(t,e),this.addDom(e),e},C_.prototype.update=function(t){var e=this;D_.prototype.update.call(this,t,function(){var i=t.type,n=t._dom.tagName;"linear"===i&&"linearGradient"===n||"radial"===i&&"radialGradient"===n?e.updateDom(t,t._dom):(e.removeDom(t),e.add(t))})},C_.prototype.updateDom=function(t,e){if("linear"===t.type)e.setAttribute("x1",t.x),e.setAttribute("y1",t.y),e.setAttribute("x2",t.x2),e.setAttribute("y2",t.y2);else{if("radial"!==t.type)return void Yw("Illegal gradient type.");e.setAttribute("cx",t.x),e.setAttribute("cy",t.y),e.setAttribute("r",t.r)}t.global?e.setAttribute("gradientUnits","userSpaceOnUse"):e.setAttribute("gradientUnits","objectBoundingBox"),e.innerHTML="";for(var i=t.colorStops,n=0,o=i.length;n0){var n,o,a=this.getDefs(!0),r=e[0],s=i?"_textDom":"_dom";r[s]?(o=r[s].getAttribute("id"),n=r[s],a.contains(n)||a.appendChild(n)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(n=this.createElement("clipPath")).setAttribute("id",o),a.appendChild(n),r[s]=n);var l=this.getSvgProxy(r);if(r.transform&&r.parent.invTransform&&!i){var u=Array.prototype.slice.call(r.transform);bt(r.transform,r.parent.invTransform,r.transform),l.brush(r),r.transform=u}else l.brush(r);var h=this.getSvgElement(r);n.innerHTML="",n.appendChild(h.cloneNode()),t.setAttribute("clip-path","url(#"+o+")"),e.length>1&&this.updateDom(n,e.slice(1),i)}else t&&t.setAttribute("clip-path","none")},L_.prototype.markUsed=function(t){var e=this;t.__clipPaths&&t.__clipPaths.length>0&&d(t.__clipPaths,function(t){t._dom&&D_.prototype.markUsed.call(e,t._dom),t._textDom&&D_.prototype.markUsed.call(e,t._textDom)})},u(k_,D_),k_.prototype.addWithoutUpdate=function(t,e){if(e&&P_(e.style)){var i,n=e.style;n._shadowDom?(i=n._shadowDom,this.getDefs(!0).contains(n._shadowDom)||this.addDom(i)):i=this.add(e),this.markUsed(e);var o=i.getAttribute("id");t.style.filter="url(#"+o+")"}},k_.prototype.add=function(t){var e=this.createElement("filter"),i=t.style;return i._shadowDomId=i._shadowDomId||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-shadow-"+i._shadowDomId),this.updateDom(t,e),this.addDom(e),e},k_.prototype.update=function(t,e){var i=e.style;if(P_(i)){var n=this;D_.prototype.update.call(this,e,function(t){n.updateDom(e,t._shadowDom)})}else this.remove(t,i)},k_.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(e),t.style.filter="")},k_.prototype.updateDom=function(t,e){var i=e.getElementsByTagName("feDropShadow");i=0===i.length?this.createElement("feDropShadow"):i[0];var n,o,a,r,s=t.style,l=t.scale?t.scale[0]||1:1,u=t.scale?t.scale[1]||1:1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)n=s.shadowOffsetX||0,o=s.shadowOffsetY||0,a=s.shadowBlur,r=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);n=s.textShadowOffsetX||0,o=s.textShadowOffsetY||0,a=s.textShadowBlur,r=s.textShadowColor}i.setAttribute("dx",n/l),i.setAttribute("dy",o/u),i.setAttribute("flood-color",r);var h=a/2/l+" "+a/2/u;i.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(a/2*200)+"%"),e.setAttribute("height",Math.ceil(a/2*200)+"%"),e.appendChild(i),s._shadowDom=e},k_.prototype.markUsed=function(t){var e=t.style;e&&e._shadowDom&&D_.prototype.markUsed.call(this,e._shadowDom)};var IR=function(t,e,i,n){this.root=t,this.storage=e,this._opts=i=a({},i||{});var o=p_("svg");o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttribute("version","1.1"),o.setAttribute("baseProfile","full"),o.style.cssText="user-select:none;position:absolute;left:0;top:0;",this.gradientManager=new C_(n,o),this.clipPathManager=new L_(n,o),this.shadowManager=new k_(n,o);var r=document.createElement("div");r.style.cssText="overflow:hidden;position:relative",this._svgRoot=o,this._viewport=r,t.appendChild(r),r.appendChild(o),this.resize(i.width,i.height),this._visibleList=[]};IR.prototype={constructor:IR,getType:function(){return"svg"},getViewportRoot:function(){return this._viewport},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},setBackgroundColor:function(t){this._viewport.style.background=t},_paintList:function(t){this.gradientManager.markAllUnused(),this.clipPathManager.markAllUnused(),this.shadowManager.markAllUnused();var e,i=this._svgRoot,n=this._visibleList,o=t.length,a=[];for(e=0;e=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},resize:function(t,e){var i=this._viewport;i.style.display="none";var n=this._opts;if(null!=t&&(n.width=t),null!=e&&(n.height=e),t=this._getSize(0),e=this._getSize(1),i.style.display="",this._width!==t||this._height!==e){this._width=t,this._height=e;var o=i.style;o.width=t+"px",o.height=e+"px";var a=this._svgRoot;a.setAttribute("width",t),a.setAttribute("height",e)}},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],n=["clientWidth","clientHeight"][t],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||N_(s[i])||N_(r.style[i]))-(N_(s[o])||0)-(N_(s[a])||0)|0},dispose:function(){this.root.innerHTML="",this._svgRoot=this._viewport=this.storage=null},clear:function(){this._viewport&&this.root.removeChild(this._viewport)},pathToDataUrl:function(){return this.refresh(),"data:image/svg+xml;charset=UTF-8,"+this._svgRoot.outerHTML}},d(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){IR.prototype[t]=F_(t)}),Ti("svg",IR),t.version="4.2.1",t.dependencies=ET,t.PRIORITY=VT,t.init=function(t,e,i){var n=ks(t);if(n)return n;var o=new us(t,e,i);return o.id="ec_"+iA++,tA[o.id]=o,Fi(t,oA,o.id),Cs(o),o},t.connect=function(t){if(y(t)){var e=t;t=null,kT(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+nA++,kT(e,function(e){e.group=t})}return eA[t]=!0,t},t.disConnect=Ls,t.disconnect=aA,t.dispose=function(t){"string"==typeof t?t=tA[t]:t instanceof us||(t=ks(t)),t instanceof us&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=ks,t.getInstanceById=function(t){return tA[t]},t.registerTheme=Ps,t.registerPreprocessor=Ns,t.registerProcessor=Os,t.registerPostUpdate=function(t){KT.push(t)},t.registerAction=Es,t.registerCoordinateSystem=Rs,t.getCoordinateSystemDimensions=function(t){var e=Fa.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=zs,t.registerVisual=Bs,t.registerLoading=Gs,t.extendComponentModel=Fs,t.extendComponentView=Ws,t.extendSeriesModel=Hs,t.extendChartView=Zs,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,i){DT.registerMap(t,e,i)},t.getMap=function(t){var e=DT.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool=rA,t.zrender=Hb,t.number=YM,t.format=eI,t.throttle=Pr,t.helper=tD,t.matrix=Sw,t.vector=cw,t.color=Ww,t.parseGeoJSON=iD,t.parseGeoJson=rD,t.util=sD,t.graphic=lD,t.List=vA,t.Model=No,t.Axis=aD,t.env=U_}); \ No newline at end of file diff --git a/uni_modules/qiun-data-charts_2.5.0/static/h5/echarts.min.js b/uni_modules/qiun-data-charts_2.5.0/static/h5/echarts.min.js new file mode 100644 index 0000000..5396a03 --- /dev/null +++ b/uni_modules/qiun-data-charts_2.5.0/static/h5/echarts.min.js @@ -0,0 +1,23 @@ + +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* 版本为4.2.1,修改一处源码:this.el.hide() 改为 this.el?this.el.hide():true +*/ + + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.echarts={})}(this,function(t){"use strict";function e(t,e){"createCanvas"===t&&(nw=null),ew[t]=e}function i(t){if(null==t||"object"!=typeof t)return t;var e=t,n=Y_.call(t);if("[object Array]"===n){if(!O(t)){e=[];for(var o=0,a=t.length;o=0){var o="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];o&&st(t,o,e,i)}else st(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var a=e.button;return null==e.which&&void 0!==a&&gw.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function ht(t,e,i){pw?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function ct(t,e,i){pw?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}function dt(t){return 2===t.which||3===t.which}function ft(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function pt(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function gt(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:mt}}function mt(t){mw(this.event)}function vt(){}function yt(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,o=t;o;){if(o.clipPath&&!o.clipPath.contain(e,i))return!1;o.silent&&(n=!0),o=o.parent}return!n||xw}return!1}function xt(){var t=new bw(6);return _t(t),t}function _t(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function wt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function bt(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t}function St(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t}function Mt(t,e,i){var n=e[0],o=e[2],a=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+r*u,t[1]=-n*u+r*h,t[2]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*a+u*l,t[5]=h*l-u*a,t}function It(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t}function Tt(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}function At(t){var e=xt();return wt(e,t),e}function Dt(t){return t>Iw||t<-Iw}function Ct(t){this._target=t.target,this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null!=t.loop&&t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}function Lt(t){return(t=Math.round(t))<0?0:t>255?255:t}function kt(t){return(t=Math.round(t))<0?0:t>360?360:t}function Pt(t){return t<0?0:t>1?1:t}function Nt(t){return Lt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function Ot(t){return Pt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function Et(t,e,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function Rt(t,e,i){return t+(e-t)*i}function zt(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function Bt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Vt(t,e){Vw&&Bt(Vw,e),Vw=Bw.put(t,Vw||e.slice())}function Gt(t,e){if(t){e=e||[];var i=Bw.get(t);if(i)return Bt(e,i);var n=(t+="").replace(/ /g,"").toLowerCase();if(n in zw)return Bt(e,zw[n]),Vt(t,e),e;if("#"!==n.charAt(0)){var o=n.indexOf("("),a=n.indexOf(")");if(-1!==o&&a+1===n.length){var r=n.substr(0,o),s=n.substr(o+1,a-(o+1)).split(","),l=1;switch(r){case"rgba":if(4!==s.length)return void zt(e,0,0,0,1);l=Ot(s.pop());case"rgb":return 3!==s.length?void zt(e,0,0,0,1):(zt(e,Nt(s[0]),Nt(s[1]),Nt(s[2]),l),Vt(t,e),e);case"hsla":return 4!==s.length?void zt(e,0,0,0,1):(s[3]=Ot(s[3]),Ft(s,e),Vt(t,e),e);case"hsl":return 3!==s.length?void zt(e,0,0,0,1):(Ft(s,e),Vt(t,e),e);default:return}}zt(e,0,0,0,1)}else{if(4===n.length)return(u=parseInt(n.substr(1),16))>=0&&u<=4095?(zt(e,(3840&u)>>4|(3840&u)>>8,240&u|(240&u)>>4,15&u|(15&u)<<4,1),Vt(t,e),e):void zt(e,0,0,0,1);if(7===n.length){var u=parseInt(n.substr(1),16);return u>=0&&u<=16777215?(zt(e,(16711680&u)>>16,(65280&u)>>8,255&u,1),Vt(t,e),e):void zt(e,0,0,0,1)}}}}function Ft(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Ot(t[1]),o=Ot(t[2]),a=o<=.5?o*(n+1):o+n-o*n,r=2*o-a;return e=e||[],zt(e,Lt(255*Et(r,a,i+1/3)),Lt(255*Et(r,a,i)),Lt(255*Et(r,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Wt(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:a===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function Ht(t,e){var i=Gt(t);if(i){for(var n=0;n<3;n++)i[n]=e<0?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,i[n]>255?i[n]=255:t[n]<0&&(i[n]=0);return qt(i,4===i.length?"rgba":"rgb")}}function Zt(t){var e=Gt(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ut(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[];var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=e[o],s=e[a],l=n-o;return i[0]=Lt(Rt(r[0],s[0],l)),i[1]=Lt(Rt(r[1],s[1],l)),i[2]=Lt(Rt(r[2],s[2],l)),i[3]=Pt(Rt(r[3],s[3],l)),i}}function Xt(t,e,i){if(e&&e.length&&t>=0&&t<=1){var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=Gt(e[o]),s=Gt(e[a]),l=n-o,u=qt([Lt(Rt(r[0],s[0],l)),Lt(Rt(r[1],s[1],l)),Lt(Rt(r[2],s[2],l)),Pt(Rt(r[3],s[3],l))],"rgba");return i?{color:u,leftIndex:o,rightIndex:a,value:n}:u}}function jt(t,e,i,n){if(t=Gt(t))return t=Wt(t),null!=e&&(t[0]=kt(e)),null!=i&&(t[1]=Ot(i)),null!=n&&(t[2]=Ot(n)),qt(Ft(t),"rgba")}function Yt(t,e){if((t=Gt(t))&&null!=e)return t[3]=Pt(e),qt(t,"rgba")}function qt(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}function Kt(t,e){return t[e]}function $t(t,e,i){t[e]=i}function Jt(t,e,i){return(e-t)*i+t}function Qt(t,e,i){return i>.5?e:t}function te(t,e,i,n,o){var a=t.length;if(1===o)for(s=0;so)t.length=o;else for(r=n;r=0&&!(m[i]<=e);i--);i=Math.min(i,u-2)}else{for(i=L;ie);i++);i=Math.min(i-1,u-2)}L=i,k=e;var n=m[i+1]-m[i];if(0!==n)if(I=(e-m[i])/n,l)if(A=v[i],T=v[0===i?i:i-1],D=v[i>u-2?u-1:i+1],C=v[i>u-3?u-1:i+2],d)ne(T,A,D,C,I,I*I,I*I*I,r(t,o),g);else{if(f)a=ne(T,A,D,C,I,I*I,I*I*I,P,1),a=re(P);else{if(p)return Qt(A,D,I);a=oe(T,A,D,C,I,I*I,I*I*I)}s(t,o,a)}else if(d)te(v[i],v[i+1],I,r(t,o),g);else{var a;if(f)te(v[i],v[i+1],I,P,1),a=re(P);else{if(p)return Qt(v[i],v[i+1],I);a=Jt(v[i],v[i+1],I)}s(t,o,a)}},ondestroy:i});return e&&"spline"!==e&&(N.easing=e),N}}}function ue(t,e,i,n,o,a,r,s){_(n)?(a=o,o=n,n=0):x(o)?(a=o,o="linear",n=0):x(n)?(a=n,n=0):x(i)?(a=i,i=500):i||(i=500),t.stopAnimation(),he(t,"",t,e,i,n,s);var l=t.animators.slice(),u=l.length;u||a&&a();for(var h=0;h0&&t.animate(e,!1).when(null==o?500:o,s).delay(a||0)}function ce(t,e,i,n){if(e){var o={};o[e]={},o[e][i]=n,t.attr(o)}else t.attr(i,n)}function de(t,e,i,n){i<0&&(t+=i,i=-i),n<0&&(e+=n,n=-n),this.x=t,this.y=e,this.width=i,this.height=n}function fe(t){for(var e=0;t>=eb;)e|=1&t,t>>=1;return t+e}function pe(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o=0;)o++;return o-e}function ge(t,e,i){for(i--;e>>1])<0?l=a:s=a+1;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=r}}function ve(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])>0){for(s=n-o;l0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}else{for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r>>1);a(t,e[i+h])>0?r=h+1:l=h}return l}function ye(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l=0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}for(r++;r>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function xe(t,e){function i(i){var s=a[i],u=r[i],h=a[i+1],c=r[i+1];r[i]=u+c,i===l-3&&(a[i+1]=a[i+2],r[i+1]=r[i+2]),l--;var d=ye(t[h],t,s,u,0,e);s+=d,0!==(u-=d)&&0!==(c=ve(t[s+u-1],t,h,c,c-1,e))&&(u<=c?n(s,u,h,c):o(s,u,h,c))}function n(i,n,o,a){var r=0;for(r=0;r=ib||f>=ib);if(p)break;g<0&&(g=0),g+=2}if((s=g)<1&&(s=1),1===n){for(r=0;r=0;r--)t[f+r]=t[d+r];if(0===n){v=!0;break}}if(t[c--]=u[h--],1==--a){v=!0;break}if(0!=(m=a-ve(t[l],u,0,a,a-1,e))){for(a-=m,f=(c-=m)+1,d=(h-=m)+1,r=0;r=ib||m>=ib);if(v)break;p<0&&(p=0),p+=2}if((s=p)<1&&(s=1),1===a){for(f=(c-=n)+1,d=(l-=n)+1,r=n-1;r>=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else{if(0===a)throw new Error;for(d=c-(a-1),r=0;r=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else for(d=c-(a-1),r=0;r1;){var t=l-2;if(t>=1&&r[t-1]<=r[t]+r[t+1]||t>=2&&r[t-2]<=r[t]+r[t-1])r[t-1]r[t+1])break;i(t)}},this.forceMergeRuns=function(){for(;l>1;){var t=l-2;t>0&&r[t-1]s&&(l=s),me(t,i,i+l,i+a,e),a=l}r.pushRun(i,a),r.mergeRuns(),o-=a,i+=a}while(0!==o);r.forceMergeRuns()}}function we(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function be(t,e,i){var n=null==e.x?0:e.x,o=null==e.x2?1:e.x2,a=null==e.y?0:e.y,r=null==e.y2?0:e.y2;return e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y),n=isNaN(n)?0:n,o=isNaN(o)?1:o,a=isNaN(a)?0:a,r=isNaN(r)?0:r,t.createLinearGradient(n,a,o,r)}function Se(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(r=r*n+i.x,s=s*o+i.y,l*=a),t.createRadialGradient(r,s,0,r,s,l)}function Me(){return!1}function Ie(t,e,i){var n=iw(),o=e.getWidth(),a=e.getHeight(),r=n.style;return r&&(r.position="absolute",r.left=0,r.top=0,r.width=o+"px",r.height=a+"px",n.setAttribute("data-zr-dom-id",t)),n.width=o*i,n.height=a*i,n}function Te(t){if("string"==typeof t){var e=mb.get(t);return e&&e.image}return t}function Ae(t,e,i,n,o){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!i)return e;var a=mb.get(t),r={hostEl:i,cb:n,cbPayload:o};return a?!Ce(e=a.image)&&a.pending.push(r):((e=new Image).onload=e.onerror=De,mb.put(t,e.__cachedImgObj={image:e,pending:[r]}),e.src=e.__zrImageSrc=t),e}return t}return e}function De(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;exb&&(yb=0,vb={}),yb++,vb[i]=o,o}function ke(t,e,i,n,o,a,r,s){return r?Ne(t,e,i,n,o,a,r,s):Pe(t,e,i,n,o,a,s)}function Pe(t,e,i,n,o,a,r){var s=He(t,e,o,a,r),l=Le(t,e);o&&(l+=o[1]+o[3]);var u=s.outerHeight,h=new de(Oe(0,l,i),Ee(0,u,n),l,u);return h.lineHeight=s.lineHeight,h}function Ne(t,e,i,n,o,a,r,s){var l=Ze(t,{rich:r,truncate:s,font:e,textAlign:i,textPadding:o,textLineHeight:a}),u=l.outerWidth,h=l.outerHeight;return new de(Oe(0,u,i),Ee(0,h,n),u,h)}function Oe(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function Ee(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function Re(t,e,i){var n=e.x,o=e.y,a=e.height,r=e.width,s=a/2,l="left",u="top";switch(t){case"left":n-=i,o+=s,l="right",u="middle";break;case"right":n+=i+r,o+=s,u="middle";break;case"top":n+=r/2,o-=i,l="center",u="bottom";break;case"bottom":n+=r/2,o+=a+i,l="center";break;case"inside":n+=r/2,o+=s,l="center",u="middle";break;case"insideLeft":n+=i,o+=s,u="middle";break;case"insideRight":n+=r-i,o+=s,l="right",u="middle";break;case"insideTop":n+=r/2,o+=i,l="center";break;case"insideBottom":n+=r/2,o+=a-i,l="center",u="bottom";break;case"insideTopLeft":n+=i,o+=i;break;case"insideTopRight":n+=r-i,o+=i,l="right";break;case"insideBottomLeft":n+=i,o+=a-i,u="bottom";break;case"insideBottomRight":n+=r-i,o+=a-i,l="right",u="bottom"}return{x:n,y:o,textAlign:l,textVerticalAlign:u}}function ze(t,e,i,n,o){if(!e)return"";var a=(t+"").split("\n");o=Be(e,i,n,o);for(var r=0,s=a.length;r=r;l++)s-=r;var u=Le(i,e);return u>s&&(i="",u=0),s=t-u,n.ellipsis=i,n.ellipsisWidth=u,n.contentWidth=s,n.containerWidth=t,n}function Ve(t,e){var i=e.containerWidth,n=e.font,o=e.contentWidth;if(!i)return"";var a=Le(t,n);if(a<=i)return t;for(var r=0;;r++){if(a<=o||r>=e.maxIterations){t+=e.ellipsis;break}var s=0===r?Ge(t,o,e.ascCharWidth,e.cnCharWidth):a>0?Math.floor(t.length*o/a):0;a=Le(t=t.substr(0,s),n)}return""===t&&(t=e.placeholder),t}function Ge(t,e,i,n){for(var o=0,a=0,r=t.length;au)t="",r=[];else if(null!=h)for(var c=Be(h-(i?i[1]+i[3]:0),e,o.ellipsis,{minChar:o.minChar,placeholder:o.placeholder}),d=0,f=r.length;do&&Ue(i,t.substring(o,a)),Ue(i,n[2],n[1]),o=_b.lastIndex}of)return{lines:[],width:0,height:0};k.textWidth=Le(k.text,_);var b=y.textWidth,S=null==b||"auto"===b;if("string"==typeof b&&"%"===b.charAt(b.length-1))k.percentWidth=b,u.push(k),b=0;else{if(S){b=k.textWidth;var M=y.textBackgroundColor,I=M&&M.image;I&&Ce(I=Te(I))&&(b=Math.max(b,I.width*w/I.height))}var T=x?x[1]+x[3]:0;b+=T;var C=null!=d?d-m:null;null!=C&&Cl&&(i*=l/(c=i+n),n*=l/c),o+a>l&&(o*=l/(c=o+a),a*=l/c),n+o>u&&(n*=u/(c=n+o),o*=u/c),i+a>u&&(i*=u/(c=i+a),a*=u/c),t.moveTo(r+i,s),t.lineTo(r+l-n,s),0!==n&&t.arc(r+l-n,s+n,n,-Math.PI/2,0),t.lineTo(r+l,s+u-o),0!==o&&t.arc(r+l-o,s+u-o,o,0,Math.PI/2),t.lineTo(r+a,s+u),0!==a&&t.arc(r+a,s+u-a,a,Math.PI/2,Math.PI),t.lineTo(r,s+i),0!==i&&t.arc(r+i,s+i,i,Math.PI,1.5*Math.PI)}function Ye(t){return qe(t),d(t.rich,qe),t}function qe(t){if(t){t.font=Xe(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Mb[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||Ib[i]?i:"top",t.textPadding&&(t.textPadding=L(t.textPadding))}}function Ke(t,e,i,n,o,a){n.rich?Je(t,e,i,n,o,a):$e(t,e,i,n,o,a)}function $e(t,e,i,n,o,a){var r,s=ii(n),l=!1,u=e.__attrCachedBy===rb.PLAIN_TEXT;a!==sb?(a&&(r=a.style,l=!s&&u&&r),e.__attrCachedBy=s?rb.NONE:rb.PLAIN_TEXT):u&&(e.__attrCachedBy=rb.NONE);var h=n.font||Sb;l&&h===(r.font||Sb)||(e.font=h);var c=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,c=t.__computedFont=e.font);var d=n.textPadding,f=n.textLineHeight,p=t.__textCotentBlock;p&&!t.__dirtyText||(p=t.__textCotentBlock=He(i,c,d,f,n.truncate));var g=p.outerHeight,m=p.lines,v=p.lineHeight,y=ai(g,n,o),x=y.baseX,_=y.baseY,w=y.textAlign||"left",b=y.textVerticalAlign;ti(e,n,o,x,_);var S=Ee(_,g,b),M=x,I=S;if(s||d){var T=Le(i,c);d&&(T+=d[1]+d[3]);var A=Oe(x,T,w);s&&ni(t,e,n,A,S,T,g),d&&(M=hi(x,w,d),I+=d[0])}e.textAlign=w,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(B=0;B=0&&"right"===(_=b[C]).textAlign;)ei(t,e,_,n,M,v,D,"right"),I-=_.width,D-=_.width,C--;for(A+=(a-(A-m)-(y-D)-I)/2;T<=C;)ei(t,e,_=b[T],n,M,v,A+_.width/2,"center"),A+=_.width,T++;v+=M}}function ti(t,e,i,n,o){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,o=i.height/2+i.y):a&&(n=a[0]+i.x,o=a[1]+i.y),t.translate(n,o),t.rotate(-e.textRotation),t.translate(-n,-o)}}function ei(t,e,i,n,o,a,r,s){var l=n.rich[i.styleName]||{};l.text=i.text;var u=i.textVerticalAlign,h=a+o/2;"top"===u?h=a+i.height/2:"bottom"===u&&(h=a+o-i.height/2),!i.isLineHolder&&ii(l)&&ni(t,e,l,"right"===s?r-i.width:"center"===s?r-i.width/2:r,h-i.height/2,i.width,i.height);var c=i.textPadding;c&&(r=hi(r,s,c),h-=i.height/2-c[2]-i.textHeight/2),ri(e,"shadowBlur",D(l.textShadowBlur,n.textShadowBlur,0)),ri(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),ri(e,"shadowOffsetX",D(l.textShadowOffsetX,n.textShadowOffsetX,0)),ri(e,"shadowOffsetY",D(l.textShadowOffsetY,n.textShadowOffsetY,0)),ri(e,"textAlign",s),ri(e,"textBaseline","middle"),ri(e,"font",i.font||Sb);var d=si(l.textStroke||n.textStroke,p),f=li(l.textFill||n.textFill),p=A(l.textStrokeWidth,n.textStrokeWidth);d&&(ri(e,"lineWidth",p),ri(e,"strokeStyle",d),e.strokeText(i.text,r,h)),f&&(ri(e,"fillStyle",f),e.fillText(i.text,r,h))}function ii(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function ni(t,e,i,n,o,a,r){var s=i.textBackgroundColor,l=i.textBorderWidth,u=i.textBorderColor,h=_(s);if(ri(e,"shadowBlur",i.textBoxShadowBlur||0),ri(e,"shadowColor",i.textBoxShadowColor||"transparent"),ri(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),ri(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=i.textBorderRadius;c?je(e,{x:n,y:o,width:a,height:r,r:c}):e.rect(n,o,a,r),e.closePath()}if(h)if(ri(e,"fillStyle",s),null!=i.fillOpacity){f=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=f}else e.fill();else if(w(s)){var d=s.image;(d=Ae(d,null,t,oi,s))&&Ce(d)&&e.drawImage(d,n,o,a,r)}if(l&&u)if(ri(e,"lineWidth",l),ri(e,"strokeStyle",u),null!=i.strokeOpacity){var f=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=f}else e.stroke()}function oi(t,e){e.image=t}function ai(t,e,i){var n=e.x||0,o=e.y||0,a=e.textAlign,r=e.textVerticalAlign;if(i){var s=e.textPosition;if(s instanceof Array)n=i.x+ui(s[0],i.width),o=i.y+ui(s[1],i.height);else{var l=Re(s,i,e.textDistance);n=l.x,o=l.y,a=a||l.textAlign,r=r||l.textVerticalAlign}var u=e.textOffset;u&&(n+=u[0],o+=u[1])}return{baseX:n,baseY:o,textAlign:a,textVerticalAlign:r}}function ri(t,e,i){return t[e]=ab(t,e,i),t[e]}function si(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function li(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function ui(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function hi(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function ci(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function di(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new ub(t.style,this),this._rect=null,this.__clipPaths=[]}function fi(t){di.call(this,t)}function pi(t){return parseInt(t,10)}function gi(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function mi(t,e,i){return Cb.copy(t.getBoundingRect()),t.transform&&Cb.applyTransform(t.transform),Lb.width=e,Lb.height=i,!Cb.intersect(Lb)}function vi(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i=i.length&&i.push({option:t})}}),i}function Ni(t){var e=R();Zb(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),Zb(t,function(t,i){var n=t.option;k(!n||null==n.id||!e.get(n.id)||e.get(n.id)===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&e.set(n.id,t),!t.keyInfo&&(t.keyInfo={})}),Zb(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(Ub(o)){if(a.name=null!=o.name?o.name+"":n?n.name:jb+i,n)a.id=n.id;else if(null!=o.id)a.id=o.id+"";else{var r=0;do{a.id="\0"+a.name+"\0"+r++}while(e.get(a.id))}e.set(a.id,t)}})}function Oi(t){var e=t.name;return!(!e||!e.indexOf(jb))}function Ei(t){return Ub(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Ri(t,e){function i(t,e,i){for(var n=0,o=t.length;n-rS&&trS||t<-rS}function tn(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function en(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function nn(t,e,i,n,o,a){var r=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),u=t-o,h=s*s-3*r*l,c=s*l-9*r*u,d=l*l-3*s*u,f=0;if(Ji(h)&&Ji(c))Ji(s)?a[0]=0:(M=-l/s)>=0&&M<=1&&(a[f++]=M);else{var p=c*c-4*h*d;if(Ji(p)){var g=c/h,m=-g/2;(M=-s/r+g)>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m)}else if(p>0){var v=aS(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);(M=(-s-((y=y<0?-oS(-y,uS):oS(y,uS))+(x=x<0?-oS(-x,uS):oS(x,uS))))/(3*r))>=0&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*aS(h*h*h)),w=Math.acos(_)/3,b=aS(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),m=(-s+b*(S+lS*Math.sin(w)))/(3*r),I=(-s+b*(S-lS*Math.sin(w)))/(3*r);M>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m),I>=0&&I<=1&&(a[f++]=I)}}return f}function on(t,e,i,n,o){var a=6*i-12*e+6*t,r=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if(Ji(r))Qi(a)&&(c=-s/a)>=0&&c<=1&&(o[l++]=c);else{var u=a*a-4*r*s;if(Ji(u))o[0]=-a/(2*r);else if(u>0){var h=aS(u),c=(-a+h)/(2*r),d=(-a-h)/(2*r);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function an(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,h=(l-s)*o+s,c=(h-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=c,a[4]=c,a[5]=h,a[6]=l,a[7]=n}function rn(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;hS[0]=l,hS[1]=u;for(var y=0;y<1;y+=.05)cS[0]=tn(t,i,o,r,y),cS[1]=tn(e,n,a,s,y),(p=hw(hS,cS))=0&&p=0&&c<=1&&(o[l++]=c);else{var u=r*r-4*a*s;if(Ji(u))(c=-r/(2*a))>=0&&c<=1&&(o[l++]=c);else if(u>0){var h=aS(u),c=(-r+h)/(2*a),d=(-r-h)/(2*a);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function hn(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function cn(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}function dn(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;hS[0]=r,hS[1]=s;for(var d=0;d<1;d+=.05)cS[0]=sn(t,i,o,d),cS[1]=sn(e,n,a,d),(m=hw(hS,cS))=0&&m1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(yS[0]=mS(o)*i+t,yS[1]=gS(o)*n+e,xS[0]=mS(a)*i+t,xS[1]=gS(a)*n+e,u(s,yS,xS),h(l,yS,xS),(o%=vS)<0&&(o+=vS),(a%=vS)<0&&(a+=vS),o>a&&!r?a+=vS:oo&&(_S[0]=mS(f)*i+t,_S[1]=gS(f)*n+e,u(s,_S,s),h(l,_S,l))}function yn(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0,u=t;if(r>e+s&&r>n+s||rt+s&&a>i+s||ae+c&&h>n+c&&h>a+c&&h>s+c||ht+c&&u>i+c&&u>o+c&&u>r+c||ue+u&&l>n+u&&l>a+u||lt+u&&s>i+u&&s>o+u||si||h+uo&&(o+=zS);var d=Math.atan2(l,s);return d<0&&(d+=zS),d>=n&&d<=o||d+zS>=n&&d+zS<=o}function Sn(t,e,i,n,o,a){if(a>e&&a>n||ao?r:0}function Mn(t,e){return Math.abs(t-e)e&&u>n&&u>a&&u>s||u1&&In(),c=tn(e,n,a,s,WS[0]),p>1&&(d=tn(e,n,a,s,WS[1]))),2===p?me&&s>n&&s>a||s=0&&u<=1){for(var h=0,c=sn(e,n,a,u),d=0;di||s<-i)return 0;u=Math.sqrt(i*i-s*s);FS[0]=-u,FS[1]=u;var l=Math.abs(n-o);if(l<1e-4)return 0;if(l%VS<1e-4){n=0,o=VS;p=a?1:-1;return r>=FS[0]+t&&r<=FS[1]+t?p:0}if(a){var u=n;n=wn(o),o=wn(u)}else n=wn(n),o=wn(o);n>o&&(o+=VS);for(var h=0,c=0;c<2;c++){var d=FS[c];if(d+t>r){var f=Math.atan2(s,d),p=a?1:-1;f<0&&(f=VS+f),(f>=n&&f<=o||f+VS>=n&&f+VS<=o)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function Cn(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h1&&(i||(a+=Sn(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case BS.M:r=l=t[h++],s=u=t[h++];break;case BS.L:if(i){if(yn(r,s,t[h],t[h+1],e,n,o))return!0}else a+=Sn(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.C:if(i){if(xn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=Tn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.Q:if(i){if(_n(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=An(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.A:var d=t[h++],f=t[h++],p=t[h++],g=t[h++],m=t[h++],v=t[h++];h+=1;var y=1-t[h++],x=Math.cos(m)*p+d,_=Math.sin(m)*g+f;h>1?a+=Sn(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(bn(d,f,g,m,m+v,y,e,w,o))return!0}else a+=Dn(d,f,g,m,m+v,y,w,o);r=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case BS.R:l=r=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(i){if(yn(l,u,x,u,e,n,o)||yn(x,u,x,_,e,n,o)||yn(x,_,l,_,e,n,o)||yn(l,_,l,u,e,n,o))return!0}else a+=Sn(x,u,x,_,n,o),a+=Sn(l,_,l,u,n,o);break;case BS.Z:if(i){if(yn(r,s,l,u,e,n,o))return!0}else a+=Sn(r,s,l,u,n,o);r=l,s=u}}return i||Mn(s,u)||(a+=Sn(r,s,l,u,n,o)||0),0!==a}function Ln(t,e,i){return Cn(t,0,!1,e,i)}function kn(t,e,i,n){return Cn(t,e,!0,i,n)}function Pn(t){di.call(this,t),this.path=null}function Nn(t,e,i,n,o,a,r,s,l,u,h){var c=l*(tM/180),d=QS(c)*(t-i)/2+JS(c)*(e-n)/2,f=-1*JS(c)*(t-i)/2+QS(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);p>1&&(r*=$S(p),s*=$S(p));var g=(o===a?-1:1)*$S((r*r*(s*s)-r*r*(f*f)-s*s*(d*d))/(r*r*(f*f)+s*s*(d*d)))||0,m=g*r*f/s,v=g*-s*d/r,y=(t+i)/2+QS(c)*m-JS(c)*v,x=(e+n)/2+JS(c)*m+QS(c)*v,_=nM([1,0],[(d-m)/r,(f-v)/s]),w=[(d-m)/r,(f-v)/s],b=[(-1*d-m)/r,(-1*f-v)/s],S=nM(w,b);iM(w,b)<=-1&&(S=tM),iM(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*tM),1===a&&S<0&&(S+=2*tM),h.addData(u,y,x,r,s,_,S,c,a)}function On(t){if(!t)return new ES;for(var e,i=0,n=0,o=i,a=n,r=new ES,s=ES.CMD,l=t.match(oM),u=0;u=2){if(o&&"spline"!==o){var a=fM(n,o,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var r=n.length,s=0;s<(i?r:r-1);s++){var l=a[2*s],u=a[2*s+1],h=n[(s+1)%r];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===o&&(n=dM(n,i)),t.moveTo(n[0][0],n[0][1]);for(var s=1,c=n.length;s=0)?(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))):null!=a&&(i={textFill:null},t.textFill=a),i&&(t.insideRollback=i)}}function bo(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function So(t,e){var i=e||e.getModel("textStyle");return P([t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" "))}function Mo(t,e,i,n,o,a){if("function"==typeof o&&(a=o,o=null),n&&n.isAnimationEnabled()){var r=t?"Update":"",s=n.getShallow("animationDuration"+r),l=n.getShallow("animationEasing"+r),u=n.getShallow("animationDelay"+r);"function"==typeof u&&(u=u(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof s&&(s=s(o)),s>0?e.animateTo(i,s,u||0,l,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function Io(t,e,i,n,o){Mo(!0,t,e,i,n,o)}function To(t,e,i,n,o){Mo(!1,t,e,i,n,o)}function Ao(t,e){for(var i=_t([]);t&&t!==e;)bt(i,t.getLocalTransform(),i),t=t.parent;return i}function Do(t,e,i){return e&&!c(e)&&(e=Tw.getLocalTransform(e)),i&&(e=Tt([],e)),Q([],t,e)}function Co(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=Do(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Lo(t,e,i,n){function o(t){var e={position:F(t.position),rotation:t.rotation};return t.shape&&(e.shape=a({},t.shape)),e}if(t&&e){var r=function(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=r[t.anid];if(e){var n=o(t);t.attr(o(e)),Io(t,n,i,t.dataIndex)}}})}}function ko(t,e){return f(t,function(t){var i=t[0];i=LM(i,e.x),i=kM(i,e.x+e.width);var n=t[1];return n=LM(n,e.y),n=kM(n,e.y+e.height),[i,n]})}function Po(t,e,i){var n=(e=a({rectHover:!0},e)).style={strokeNoScale:!0};if(i=i||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(n.image=t.slice(8),r(n,i),new fi(e)):Xn(t.replace("path://",""),e,i,"center")}function No(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function Oo(t,e,i){for(var n=0;n0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]}function Vo(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?zo(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Go(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Fo(t){return t.sort(function(t,e){return t-e}),t}function Wo(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Ho(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var o=e.indexOf(".");return o<0?0:e.length-1-o}function Zo(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20}function Uo(t,e,i){if(!t[e])return 0;var n=p(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var o=Math.pow(10,i),a=f(t,function(t){return(isNaN(t)?0:t)/n*o*100}),r=100*o,s=f(a,function(t){return Math.floor(t)}),l=p(s,function(t,e){return t+e},0),u=f(a,function(t,e){return t-s[e]});lh&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/o}function Xo(t){var e=2*Math.PI;return(t%e+e)%e}function jo(t){return t>-UM&&t=-20?+t.toFixed(n<0?-n:0):t}function Jo(t){function e(t,i,n){return t.interval[n]=0}function ta(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function ea(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}function ia(t){return null==t?"":(t+"").replace(KM,function(t,e){return $M[e]})}function na(t,e,i){y(e)||(e=[e]);var n=e.length;if(!n)return"";for(var o=e[0].$vars||[],a=0;a':'':{renderMode:o,content:"{marker"+a+"|} ",style:{color:i}}:""}function ra(t,e){return t+="","0000".substr(0,e-t.length)+t}function sa(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Yo(e),o=i?"UTC":"",a=n["get"+o+"FullYear"](),r=n["get"+o+"Month"]()+1,s=n["get"+o+"Date"](),l=n["get"+o+"Hours"](),u=n["get"+o+"Minutes"](),h=n["get"+o+"Seconds"](),c=n["get"+o+"Milliseconds"]();return t=t.replace("MM",ra(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",ra(s,2)).replace("d",s).replace("hh",ra(l,2)).replace("h",l).replace("mm",ra(u,2)).replace("m",u).replace("ss",ra(h,2)).replace("s",h).replace("SSS",ra(c,3))}function la(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function ua(t,e,i,n,o){var a=0,r=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);(h=a+m)>n||l.newline?(a=0,h=m,r+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(c=r+v)>o||l.newline?(a+=s+i,r=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=r,"horizontal"===t?a=h+i:r=c+i)})}function ha(t,e,i){var n=e.width,o=e.height,a=Vo(t.x,n),r=Vo(t.y,o),s=Vo(t.x2,n),l=Vo(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=o),i=qM(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}function ca(t,e,i){i=qM(i||0);var n=e.width,o=e.height,a=Vo(t.left,n),r=Vo(t.top,o),s=Vo(t.right,n),l=Vo(t.bottom,o),u=Vo(t.width,n),h=Vo(t.height,o),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-a),isNaN(h)&&(h=o-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(f>n/o?u=.8*n:h=.8*o),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(a)&&(a=n-s-u-d),isNaN(r)&&(r=o-l-h-c),t.left||t.right){case"center":a=n/2-u/2-i[3];break;case"right":a=n-u-d}switch(t.top||t.bottom){case"middle":case"center":r=o/2-h/2-i[0];break;case"bottom":r=o-h-c}a=a||0,r=r||0,isNaN(u)&&(u=n-d-a-(s||0)),isNaN(h)&&(h=o-c-r-(l||0));var p=new de(a+i[3],r+i[0],u,h);return p.margin=i,p}function da(t,e,i,n,o){var a=!o||!o.hv||o.hv[0],s=!o||!o.hv||o.hv[1],l=o&&o.boundingMode||"all";if(a||s){var u;if("raw"===l)u="group"===t.type?new de(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(u=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(u=u.clone()).applyTransform(h)}e=ca(r({width:u.width,height:u.height},e),i,n);var c=t.position,d=a?e.x-u.x:0,f=s?e.y-u.y:0;t.attr("position","raw"===l?[d,f]:[c[0]+d,c[1]+f])}}function fa(t,e){return null!=t[oI[e][0]]||null!=t[oI[e][1]]&&null!=t[oI[e][2]]}function pa(t,e,i){function n(i,n){var r={},l=0,u={},h=0;if(iI(i,function(e){u[e]=t[e]}),iI(i,function(t){o(e,t)&&(r[t]=u[t]=e[t]),a(r,t)&&l++,a(u,t)&&h++}),s[n])return a(e,i[1])?u[i[2]]=null:a(e,i[2])&&(u[i[1]]=null),u;if(2!==h&&l){if(l>=2)return r;for(var c=0;ce)return t[n];return t[i-1]}function ya(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:R(),categoryAxisMap:R()},n=fI[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}function xa(t){return"category"===t.get("type")}function _a(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===vI?{}:[]),this.sourceFormat=t.sourceFormat||yI,this.seriesLayoutBy=t.seriesLayoutBy||_I,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&R(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function wa(t){var e=t.option.source,i=yI;if(S(e))i=xI;else if(y(e)){0===e.length&&(i=gI);for(var n=0,o=e.length;n=e:"max"===i?t<=e:t===e}function Xa(t,e){return t.join(",")===e.join(",")}function ja(t,e){AI(e=e||{},function(e,i){if(null!=e){var n=t[i];if(lI.hasClass(i)){e=Di(e);var o=Pi(n=Di(n),e);t[i]=CI(o,function(t){return t.option&&t.exist?LI(t.exist,t.option,!0):t.exist||t.option})}else t[i]=LI(n,e,!0)}})}function Ya(t){var e=t&&t.itemStyle;if(e)for(var i=0,o=OI.length;i=0;p--){var g=t[p];if(s||(d=g.data.rawIndexOf(g.stackedByDimension,c)),d>=0){var m=g.data.getByRawIndex(g.stackResultDimension,d);if(h>=0&&m>0||h<=0&&m<0){h+=m,f=m;break}}}return n[0]=h,n[1]=f,n});r.hostModel.setData(l),e.data=l})}function rr(t,e){_a.isInstance(t)||(t=_a.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===xI&&(this._offset=0,this._dimSize=e,this._data=i),a(this,GI[n===gI?n+"_"+t.seriesLayoutBy:n])}function sr(){return this._data.length}function lr(t){return this._data[t]}function ur(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Mr(t,e){d(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,v(Ir,e))})}function Ir(t){var e=Tr(t);e&&e.setOutputEnd(this.count())}function Tr(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var o=n.agentStubMap;o&&(n=o.get(t.uid))}return n}}function Ar(){this.group=new tb,this.uid=Ro("viewChart"),this.renderTask=gr({plan:Lr,reset:kr}),this.renderTask.context={view:this}}function Dr(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i=0?n():c=setTimeout(n,-a),u=o};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){l=t},d}function Nr(t,e,i,n){var o=t[e];if(o){var a=o[iT]||o,r=o[oT];if(o[nT]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=Pr(a,i,"debounce"===n))[iT]=a,o[oT]=n,o[nT]=i}return o}}function Or(t,e){var i=t[e];i&&i[iT]&&(t[e]=i[iT])}function Er(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;var i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=R()}function Rr(t,e,i,n,o){function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}o=o||{};var r;d(e,function(e,s){if(!o.visualType||o.visualType===e.visualType){var l=t._stageTaskMap.get(e.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,d=h.agentStubMap;d.each(function(t){a(o,t)&&(t.dirty(),c=!0)}),c&&h.dirty(),hT(h,n);var f=t.getPerformArgs(h,o.block);d.each(function(t){t.perform(f)}),r|=h.perform(f)}else u&&u.each(function(s,l){a(o,s)&&s.dirty();var u=t.getPerformArgs(s,o.block);u.skip=!e.performRawSeries&&i.isSeriesFiltered(s.context.model),hT(s,n),r|=s.perform(u)})}}),t.unfinished|=r}function zr(t,e,i,n,o){function a(i){var a=i.uid,s=r.get(a)||r.set(a,gr({plan:Hr,reset:Zr,count:Xr}));s.context={model:i,ecModel:n,api:o,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},jr(t,i,s)}var r=i.seriesTaskMap||(i.seriesTaskMap=R()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(a):s?n.eachRawSeriesByType(s,a):l&&l(n,o).each(a);var u=t._pipelineMap;r.each(function(t,e){u.get(e)||(t.dispose(),r.removeKey(e))})}function Br(t,e,i,n,o){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,gr({reset:Gr,onDirty:Wr})),r.dirty()),n.context={model:e,overallProgress:h,modifyOutputEnd:c},n.agent=r,n.__block=h,jr(t,e,n)}var r=i.overallTask=i.overallTask||gr({reset:Vr});r.context={ecModel:n,api:o,overallReset:e.overallReset,scheduler:t};var s=r.agentStubMap=r.agentStubMap||R(),l=e.seriesType,u=e.getTargetSeries,h=!0,c=e.modifyOutputEnd;l?n.eachRawSeriesByType(l,a):u?u(n,o).each(a):(h=!1,d(n.getSeries(),a));var f=t._pipelineMap;s.each(function(t,e){f.get(e)||(t.dispose(),r.dirty(),s.removeKey(e))})}function Vr(t){t.overallReset(t.ecModel,t.api,t.payload)}function Gr(t,e){return t.overallProgress&&Fr}function Fr(){this.agent.dirty(),this.getDownstream().dirty()}function Wr(){this.agent&&this.agent.dirty()}function Hr(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Zr(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Di(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?f(e,function(t,e){return Ur(e)}):cT}function Ur(t){return function(e,i){var n=i.data,o=i.resetDefines[t];if(o&&o.dataEach)for(var a=e.start;a0?parseInt(n,10)/100:n?parseFloat(n):0;var o=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,o)}i=i.nextSibling}}function Qr(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),r(e.__inheritedStyle,t.__inheritedStyle))}function ts(t){for(var e=P(t).split(_T),i=[],n=0;n0;a-=2){var r=o[a],s=o[a-1];switch(n=n||xt(),s){case"translate":r=P(r).split(_T),St(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=P(r).split(_T),It(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=P(r).split(_T),Mt(n,n,parseFloat(r[0]));break;case"skew":r=P(r).split(_T),console.warn("Skew transform is not supported yet");break;case"matrix":r=P(r).split(_T);n[0]=parseFloat(r[0]),n[1]=parseFloat(r[1]),n[2]=parseFloat(r[2]),n[3]=parseFloat(r[3]),n[4]=parseFloat(r[4]),n[5]=parseFloat(r[5])}}e.setLocalTransform(n)}}function os(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};TT.lastIndex=0;for(var o;null!=(o=TT.exec(e));)n[o[1]]=o[2];for(var a in ST)ST.hasOwnProperty(a)&&null!=n[a]&&(i[ST[a]]=n[a]);return i}function as(t,e,i){var n=e/t.width,o=i/t.height,a=Math.min(n,o);return{scale:[a,a],position:[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2]}}function rs(t,e){return(new $r).parse(t,e)}function ss(t){return function(e,i,n){e=e&&e.toLowerCase(),fw.prototype[t].call(this,e,i,n)}}function ls(){fw.call(this)}function us(t,e,n){function o(t,e){return t.__prio-e.__prio}n=n||{},"string"==typeof e&&(e=JT[e]),this.id,this.group,this._dom=t;var a=this._zr=Ii(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=Pr(m(a.flush,a),17),(e=i(e))&&BI(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Fa;var r=this._api=As(this);_e($T,o),_e(YT,o),this._scheduler=new Er(this,r,YT,$T),fw.call(this,this._ecEventProcessor=new Ds),this._messageCenter=new ls,this._initEvents(),this.resize=m(this.resize,this),this._pendingActions=[],a.animation.on("frame",this._onframe,this),vs(a,this),N(this)}function hs(t,e,i){var n,o=this._model,a=this._coordSysMgr.getCoordinateSystems();e=Vi(o,e);for(var r=0;re.get("hoverLayerThreshold")&&!U_.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function Is(t,e){var i=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==i&&t.setStyle("blend",i),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",i)})})}function Ts(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function As(t){var e=t._coordSysMgr;return a(new Ga(t),{getCoordinateSystems:m(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function Ds(){this.eventInfo}function Cs(t){function e(t,e){for(var n=0;n65535?dA:pA}function Js(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Qs(t,e){d(gA.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,d(mA,function(n){t[n]=i(e[n])}),t._calculationInfo=a(e._calculationInfo)}function tl(t,e,i,n,o){var a=cA[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length=0?this._indices[t]:-1}function al(t,e){var i=t._idList[e];return null==i&&(i=il(t,t._idDimIdx,e)),null==i&&(i=hA+e),i}function rl(t){return y(t)||(t=[t]),t}function sl(t,e){var i=t.dimensions,n=new vA(f(i,t.getDimensionInfo,t),t.hostModel);Qs(n,t);for(var o=n._storage={},a=t._storage,r=0;r=0?(o[s]=ll(a[s]),n._rawExtent[s]=ul(),n._extent[s]=null):o[s]=a[s])}return n}function ll(t){for(var e=new Array(t.length),i=0;in&&(r=o.interval=n);var s=o.intervalPrecision=Ml(r);return Tl(o.niceTickExtent=[MA(Math.ceil(t[0]/r)*r,s),MA(Math.floor(t[1]/r)*r,s)],t),o}function Ml(t){return Ho(t)+2}function Il(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Tl(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Il(t,0,e),Il(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Al(t,e,i,n){var o=[];if(!t)return o;e[0]1e4)return[];return e[1]>(o.length?o[o.length-1]:i[1])&&o.push(e[1]),o}function Dl(t){return t.get("stack")||AA+t.seriesIndex}function Cl(t){return t.dim+t.index}function Ll(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),o=0;o=0?"p":"n",b=m;p&&(o[r][_]||(o[r][_]={p:m,n:m}),b=o[r][_][w]);var S,M,I,T;if(g)S=b,M=(A=i.dataToPoint([x,_]))[1]+l,I=A[0]-m,T=u,Math.abs(I)a[1]?(n=a[1],o=a[0]):(n=a[0],o=a[1]);var r=e.toGlobalCoord(e.dataToCoord(0));return ro&&(r=o),r}function Vl(t,e){return VA(t,BA(e))}function Gl(t,e){var i,n,o,a=t.type,r=e.getMin(),s=e.getMax(),l=null!=r,u=null!=s,h=t.getExtent();"ordinal"===a?i=e.getCategories().length:(y(n=e.get("boundaryGap"))||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=Vo(n[0],1),n[1]=Vo(n[1],1),o=h[1]-h[0]||Math.abs(h[0])),null==r&&(r="ordinal"===a?i?0:NaN:h[0]-n[0]*o),null==s&&(s="ordinal"===a?i?i-1:NaN:h[1]+n[1]*o),"dataMin"===r?r=h[0]:"function"==typeof r&&(r=r({min:h[0],max:h[1]})),"dataMax"===s?s=h[1]:"function"==typeof s&&(s=s({min:h[0],max:h[1]})),(null==r||!isFinite(r))&&(r=NaN),(null==s||!isFinite(s))&&(s=NaN),t.setBlank(I(r)||I(s)||"ordinal"===a&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(r>0&&s>0&&!l&&(r=0),r<0&&s<0&&!u&&(s=0));var c=e.ecModel;if(c&&"time"===a){var f,p=kl("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=Pl(p),m=Fl(r,s,e,g);r=m.min,s=m.max}}return[r,s]}function Fl(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Ol(n,i.axis);if(void 0===r)return{min:t,max:e};var s=1/0;d(r,function(t){s=Math.min(t.offset,s)});var l=-1/0;d(r,function(t){l=Math.max(t.offset+t.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/a)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}function Wl(t,e){var i=Gl(t,e),n=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var r=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:o,minInterval:"interval"===r||"time"===r?e.get("minInterval"):null,maxInterval:"interval"===r||"time"===r?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)}function Hl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new SA(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new TA;default:return(xl.getClass(e)||TA).create(t)}}function Zl(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function Ul(t){var e=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof e?e=function(e){return function(i){return i=t.scale.getLabel(i),e.replace("{value}",null!=i?i:"")}}(e):"function"==typeof e?function(n,o){return null!=i&&(o=n-i),e(Xl(t,n),o)}:function(e){return t.scale.getLabel(e)}}function Xl(t,e){return"category"===t.type?t.scale.getLabel(e):e}function jl(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,o,a="category"===t.type,r=i.getExtent();o=a?i.count():(n=i.getTicks()).length;var s,l=t.getLabelModel(),u=Ul(t),h=1;o>40&&(h=Math.ceil(o/40));for(var c=0;c>1^-(1&s),l=l>>1^-(1&l),o=s+=o,a=l+=a,n.push([s/i,l/i])}return n}function ou(t){return"category"===t.type?ru(t):uu(t)}function au(t,e){return"category"===t.type?lu(t,e):{ticks:t.scale.getTicks()}}function ru(t){var e=t.getLabelModel(),i=su(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function su(t,e){var i=hu(t,"labels"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;return a=x(n)?vu(t,n):mu(t,r="auto"===n?fu(t):n),du(i,n,{labels:a,labelCategoryInterval:r})}function lu(t,e){var i=hu(t,"ticks"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;if(e.get("show")&&!t.scale.isBlank()||(a=[]),x(n))a=vu(t,n,!0);else if("auto"===n){var s=su(t,t.getLabelModel());r=s.labelCategoryInterval,a=f(s.labels,function(t){return t.tickValue})}else a=mu(t,r=n,!0);return du(i,n,{ticks:a,tickCategoryInterval:r})}function uu(t){var e=t.scale.getTicks(),i=Ul(t);return{labels:f(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function hu(t,e){return nD(t)[e]||(nD(t)[e]=[])}function cu(t,e){for(var i=0;i40&&(s=Math.max(1,Math.floor(r/40)));for(var l=a[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(n)),c=Math.abs(u*Math.sin(n)),d=0,f=0;l<=a[1];l+=s){var p=0,g=0,m=ke(i(l),e.font,"center","top");p=1.3*m.width,g=1.3*m.height,d=Math.max(d,p,7),f=Math.max(f,g,7)}var v=d/h,y=f/c;isNaN(v)&&(v=1/0),isNaN(y)&&(y=1/0);var x=Math.max(0,Math.floor(Math.min(v,y))),_=nD(t.model),w=_.lastAutoInterval,b=_.lastTickCount;return null!=w&&null!=b&&Math.abs(w-x)<=1&&Math.abs(b-r)<=1&&w>x?x=w:(_.lastTickCount=r,_.lastAutoInterval=x),x}function gu(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function mu(t,e,i){function n(t){l.push(i?t:{formattedLabel:o(t),rawLabel:a.getLabel(t),tickValue:t})}var o=Ul(t),a=t.scale,r=a.getExtent(),s=t.getLabelModel(),l=[],u=Math.max((e||0)+1,1),h=r[0],c=a.count();0!==h&&u>1&&c/u>2&&(h=Math.round(Math.ceil(h/u)*u));var d=Kl(t),f=s.get("showMinLabel")||d,p=s.get("showMaxLabel")||d;f&&h!==r[0]&&n(r[0]);for(var g=h;g<=r[1];g+=u)n(g);return p&&g!==r[1]&&n(r[1]),l}function vu(t,e,i){var n=t.scale,o=Ul(t),a=[];return d(n.getTicks(),function(t){var r=n.getLabel(t);e(t,r)&&a.push(i?t:{formattedLabel:o(t),rawLabel:r,tickValue:t})}),a}function yu(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}function xu(t,e,i,n,o){function a(t,e){return h?t>e:t0&&(t.coord-=u/(2*(e+1)))}),s={coord:e[r-1].coord+u},e.push(s)}var h=l[0]>l[1];a(e[0].coord,l[0])&&(o?e[0].coord=l[0]:e.shift()),o&&a(l[0],e[0].coord)&&e.unshift({coord:l[0]}),a(l[1],s.coord)&&(o?s.coord=l[1]:e.pop()),o&&a(s.coord,l[1])&&e.push({coord:l[1]})}}function _u(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return fr(t,e,i[0]);if(n){for(var o=[],a=0;a0?i=n[0]:n[1]<0&&(i=n[1]),i}function Ou(t,e,i,n){var o=NaN;t.stacked&&(o=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(o)&&(o=t.valueStart);var a=t.baseDataOffset,r=[];return r[a]=i.get(t.baseDim,n),r[1-a]=o,e.dataToPoint(r)}function Eu(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}function Ru(t){return isNaN(t[0])||isNaN(t[1])}function zu(t,e,i,n,o,a,r,s,l,u,h){return"none"!==u&&u?Bu.apply(this,arguments):Vu.apply(this,arguments)}function Bu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]);else if(l>0){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;_D(bD,g),bD[m]=g[m]+v,_D(SD,p),SD[m]=p[m]-v,t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Vu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),_D(bD,p);else if(l>0){var g=d+a,m=e[g];if(h)for(;m&&Ru(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||Ru(m))_D(SD,p);else{Ru(m)&&!h&&(m=p),U(wD,m,y);var x,_;if("x"===u||"y"===u){var w="x"===u?0:1;x=Math.abs(p[w]-y[w]),_=Math.abs(p[w]-m[w])}else x=uw(p,y),_=uw(p,m);xD(SD,p,wD,-l*(1-(v=_/(_+x))))}vD(bD,bD,s),yD(bD,bD,r),vD(SD,SD,s),yD(SD,SD,r),t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1]),xD(bD,p,wD,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Gu(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var o=0;on[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}function Fu(t,e){if(t.length===e.length){for(var i=0;ie[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function Zu(t,e,i){if(!i.valueDim)return[];for(var n=[],o=0,a=e.count();oa[1]&&a.reverse();var r=o.getExtent(),s=Math.PI/180;i&&(a[0]-=.5,a[1]+=.5);var l=new hM({shape:{cx:Go(t.cx,1),cy:Go(t.cy,1),r0:Go(a[0],1),r:Go(a[1],1),startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:o.inverse}});return e&&(l.shape.endAngle=-r[0]*s,To(l,{shape:{endAngle:-r[1]*s}},n)),l}function ju(t,e,i,n){return"polar"===t.type?Xu(t,e,i,n):Uu(t,e,i,n)}function Yu(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r=0;a--){var r=i[a].dimension,s=t.dimensions[r],l=t.getDimensionInfo(s);if("x"===(n=l&&l.coordDim)||"y"===n){o=i[a];break}}if(o){var u=e.getAxis(n),h=f(o.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,p=o.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var g=h[0].coord-10,m=h[c-1].coord+10,v=m-g;if(v<.001)return"transparent";d(h,function(t){t.offset=(t.coord-g)/v}),h.push({offset:c?h[c-1].offset:.5,color:p[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:p[0]||"transparent"});var y=new TM(0,0,0,0,h,!0);return y[n]=g,y[n+"2"]=m,y}}}function Ku(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!$u(a,e))){var r=e.mapDimension(a.dim),s={};return d(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function $u(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),r=0;rn)return!1;return!0}function Ju(t){return this._axes[t]}function Qu(t){LD.call(this,t)}function th(t,e){return e.type||(e.data?"category":"value")}function eh(t,e,i){return t.getCoordSysModel()===e}function ih(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function nh(t,e,i,n){function o(t){return t.dim+"_"+t.index}i.getAxesOnZeroOf=function(){return a?[a]:[]};var a,r=t[e],s=i.model,l=s.get("axisLine.onZero"),u=s.get("axisLine.onZeroAxisIndex");if(l){if(null!=u)oh(r[u])&&(a=r[u]);else for(var h in r)if(r.hasOwnProperty(h)&&oh(r[h])&&!n[o(r[h])]){a=r[h];break}a&&(n[o(a)]=!0)}}function oh(t){return t&&"category"!==t.type&&"time"!==t.type&&Zl(t)}function ah(t,e){var i=t.getExtent(),n=i[0]+i[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}function rh(t,e){return f(VD,function(e){return t.getReferringComponents(e)[0]})}function sh(t){return"cartesian2d"===t.get("coordinateSystem")}function lh(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function uh(t,e,i,n){var o,a,r=Xo(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return jo(r-GD/2)?(a=l?"bottom":"top",o="center"):jo(r-1.5*GD)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*GD&&r>GD/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function hh(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function ch(t,e,i){if(!Kl(t.axis)){var n=t.get("axisLabel.showMinLabel"),o=t.get("axisLabel.showMaxLabel");e=e||[],i=i||[];var a=e[0],r=e[1],s=e[e.length-1],l=e[e.length-2],u=i[0],h=i[1],c=i[i.length-1],d=i[i.length-2];!1===n?(dh(a),dh(u)):fh(a,r)&&(n?(dh(r),dh(h)):(dh(a),dh(u))),!1===o?(dh(s),dh(c)):fh(l,s)&&(o?(dh(l),dh(d)):(dh(s),dh(c)))}}function dh(t){t&&(t.ignore=!0)}function fh(t,e,i){var n=t&&t.getBoundingRect().clone(),o=e&&e.getBoundingRect().clone();if(n&&o){var a=_t([]);return Mt(a,a,-t.rotation),n.applyTransform(bt([],a,t.getLocalTransform())),o.applyTransform(bt([],a,e.getLocalTransform())),n.intersect(o)}}function ph(t){return"middle"===t||"center"===t}function gh(t,e,i){var n=e.axis;if(e.get("axisTick.show")&&!n.scale.isBlank()){for(var o=e.getModel("axisTick"),a=o.getModel("lineStyle"),s=o.get("length"),l=n.getTicksCoords(),u=[],h=[],c=t._transform,d=[],f=0;f=0||t===e}function Sh(t){var e=Mh(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=Th(i);null==a&&(o.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r0?"bottom":"top":o.width>0?"left":"right";l||kh(t.style,d,n,u,a,i,p),fo(t,d)}function Rh(t,e){var i=t.get(tC)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function zh(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=new nC({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__valueIdx:a});e.add(r),Bh(r,t,n)}function Bh(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),o=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(o),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}function Vh(t,e,i,n){var o=e.getData(),a=this.dataIndex,r=o.getName(a),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:r,seriesId:e.id}),o.each(function(t){Gh(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Gh(t,e,i,n,o){var a=(e.startAngle+e.endAngle)/2,r=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[r*l,s*l];o?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function Fh(t,e){function i(){a.ignore=a.hoverIgnore,r.ignore=r.hoverIgnore}function n(){a.ignore=a.normalIgnore,r.ignore=r.normalIgnore}tb.call(this);var o=new hM({z2:2}),a=new gM,r=new rM;this.add(o),this.add(a),this.add(r),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function Wh(t,e,i,n,o,a,r){function s(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function l(t,e,i,n,o,a){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s=r&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}t.sort(function(t,e){return t.y-e.y});for(var u,h=0,c=t.length,d=[],f=[],p=0;pe&&a+1t[a].y+t[a].height)return void s(a,n/2);s(i-1,n/2)}(p,c,-u),h=t[p].y+t[p].height;r-h<0&&s(c-1,h-r);for(p=0;p=i?f.push(t[p]):d.push(t[p]);l(d,!1,e,i,n,o),l(f,!0,e,i,n,o)}function Hh(t,e,i,n,o,a){for(var r=[],s=[],l=0;l3?1.4:o>1?1.2:1.1;hc(this,"zoom","zoomOnMouseWheel",t,{scale:n>0?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);hc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(n>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:a,originY:r})}}}function uc(t){ic(this._zr,"globalPan")||hc(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function hc(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(mw(n.event),cc(t,e,i,n,o))}function cc(t,e,i,n,o){o.isAvailableBehavior=m(dc,null,i,n),t.trigger(e,o)}function dc(t,e,i){var n=i[t];return!t||n&&(!_(n)||e.event[n+"Key"])}function fc(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function pc(t,e,i,n){var o=t.target,a=t.zoomLimit,r=o.position,s=o.scale,l=t.zoom=t.zoom||1;if(l*=e,a){var u=a.min||0,h=a.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}function gc(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!RC[n.mainType]&&o&&o.model!==i}function mc(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function vc(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(a){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var r=a.target;!r.__regions;)r=r.parent;if(r){var s={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",batch:f(r.__regions,function(t){return{name:t.name,from:o.uid}})};s[e.mainType+"Id"]=e.id,n.dispatchAction(s),yc(e,i)}}}))}function yc(t,e){e.eachChild(function(e){d(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function xc(t,e){var i=new tb;this.uid=Ro("ec_map_draw"),this._controller=new oc(t.getZr()),this._controllerHost={target:e?i:null},this.group=i,this._updateGroup=e,this._mouseDownFlag,this._mapName,this._initialized,i.add(this._regionsGroup=new tb),i.add(this._backgroundGroup=new tb)}function _c(t){var e=this[zC];e&&e.recordVersion===this[BC]&&wc(e,t)}function wc(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(mo({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=NM):(mo(i.style,n,{text:n.get("show")?r:null,textPosition:n.getShallow("position")||"bottom"},{isRectText:!0,useInsideStyle:!1}),i.dirty(!1),null!=i.__mapOriginalZ2&&(i.z2=i.__mapOriginalZ2,i.__mapOriginalZ2=null))}function bc(t,e,i){var n=t.getZoom(),o=t.getCenter(),a=e.zoom,r=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;o=t.pointToData(r);t.setCenter(o)}if(null!=a){if(i){var s=i.min||0,l=i.max||1/0;a=Math.max(Math.min(n*a,l),s)/n}t.scale[0]*=a,t.scale[1]*=a;var u=t.position,h=(e.originX-u[0])*(a-1),c=(e.originY-u[1])*(a-1);u[0]-=h,u[1]-=c,t.updateTransform();o=t.pointToData(r);t.setCenter(o),t.setZoom(a*n)}return{center:t.getCenter(),zoom:t.getZoom()}}function Sc(){Tw.call(this)}function Mc(t){this.name=t,this.zoomLimit,Tw.call(this),this._roamTransformable=new Sc,this._rawTransformable=new Sc,this._center,this._zoom}function Ic(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function Tc(t,e,i,n){Mc.call(this,t),this.map=e;var o=OC.load(e,i);this._nameCoordMap=o.nameCoordMap,this._regionsMap=o.regionsMap,this._invertLongitute=null==n||n,this.regions=o.regions,this._rect=o.boundingRect}function Ac(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}function Dc(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,r=this.getBoundingRect(),s=t.get("layoutCenter"),l=t.get("layoutSize"),u=e.getWidth(),h=e.getHeight(),c=r.width/r.height*this.aspectScale,d=!1;s&&l&&(s=[Vo(s[0],u),Vo(s[1],h)],l=Vo(l,Math.min(u,h)),isNaN(s[0])||isNaN(s[1])||isNaN(l)||(d=!0));if(d){var f={};c>1?(f.width=l,f.height=l/c):(f.height=l,f.width=l*c),f.y=s[1]-f.height/2,f.x=s[0]-f.width/2}else(a=t.getBoxLayoutParams()).aspect=c,f=ca(a,{width:u,height:h});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function Cc(t,e){d(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}function Lc(t,e){var i={};return d(t,function(t){t.each(t.mapDimension("value"),function(e,n){var o="ec-"+t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(t[0].mapDimension("value"),function(n,o){for(var a="ec-"+t[0].getName(o),r=0,s=1/0,l=-1/0,u=i[a].length,h=0;h=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},n.push(a)}}function Wc(t,e){var i=t.isExpand?t.children:[],n=t.parentNode.children,o=t.hierNode.i?n[t.hierNode.i-1]:null;if(i.length){jc(t);var a=(i[0].hierNode.prelim+i[i.length-1].hierNode.prelim)/2;o?(t.hierNode.prelim=o.hierNode.prelim+e(t,o),t.hierNode.modifier=t.hierNode.prelim-a):t.hierNode.prelim=a}else o&&(t.hierNode.prelim=o.hierNode.prelim+e(t,o));t.parentNode.hierNode.defaultAncestor=Yc(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Hc(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function Zc(t){return arguments.length?t:Qc}function Uc(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Xc(t,e){return ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function jc(t){for(var e=t.children,i=e.length,n=0,o=0;--i>=0;){var a=e[i];a.hierNode.prelim+=n,a.hierNode.modifier+=n,o+=a.hierNode.change,n+=a.hierNode.shift+o}}function Yc(t,e,i,n){if(e){for(var o=t,a=t,r=a.parentNode.children[0],s=e,l=o.hierNode.modifier,u=a.hierNode.modifier,h=r.hierNode.modifier,c=s.hierNode.modifier;s=qc(s),a=Kc(a),s&&a;){o=qc(o),r=Kc(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);d>0&&(Jc($c(s,t,i),t,d),u+=d,l+=d),c+=s.hierNode.modifier,u+=a.hierNode.modifier,l+=o.hierNode.modifier,h+=r.hierNode.modifier}s&&!qc(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!Kc(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}return i}function qc(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function Kc(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function $c(t,e,i){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:i}function Jc(t,e,i){var n=i/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=n,e.hierNode.shift+=i,e.hierNode.modifier+=i,e.hierNode.prelim+=i,t.hierNode.change+=n}function Qc(t,e){return t.parentNode===e.parentNode?1:2}function td(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function ed(t,e,i){return i.itemModel=e,i.itemStyle=e.getModel("itemStyle").getItemStyle(),i.hoverItemStyle=e.getModel("emphasis.itemStyle").getItemStyle(),i.lineStyle=e.getModel("lineStyle").getLineStyle(),i.labelModel=e.getModel("label"),i.hoverLabelModel=e.getModel("emphasis.label"),!1===t.isExpand&&0!==t.children.length?i.symbolInnerColor=i.itemStyle.fill:i.symbolInnerColor="#fff",i}function id(t,e,i,n,o,a){var s=!i,l=t.tree.getNodeByDataIndex(e),a=ed(l,l.getModel(),a),u=t.tree.root,h=l.parentNode===u?l:l.parentNode||l,c=t.getItemGraphicEl(h.dataIndex),d=h.getLayout(),f=c?{x:c.position[0],y:c.position[1],rawX:c.__radialOldRawX,rawY:c.__radialOldRawY}:d,p=l.getLayout();s?(i=new wu(t,e,a)).attr("position",[f.x,f.y]):i.updateData(t,e,a),i.__radialOldRawX=i.__radialRawX,i.__radialOldRawY=i.__radialRawY,i.__radialRawX=p.rawX,i.__radialRawY=p.rawY,n.add(i),t.setItemGraphicEl(e,i),Io(i,{position:[p.x,p.y]},o);var g=i.getSymbolPath();if("radial"===a.layout){var m,v,y=u.children[0],x=y.getLayout(),_=y.children.length;if(p.x===x.x&&!0===l.isExpand){var w={};w.x=(y.children[0].getLayout().x+y.children[_-1].getLayout().x)/2,w.y=(y.children[0].getLayout().y+y.children[_-1].getLayout().y)/2,(m=Math.atan2(w.y-x.y,w.x-x.x))<0&&(m=2*Math.PI+m),(v=w.xx.x)||(m-=Math.PI);var b=v?"left":"right";g.setStyle({textPosition:b,textRotation:-m,textOrigin:"center",verticalAlign:"middle"})}if(l.parentNode&&l.parentNode!==u){var S=i.__edge;S||(S=i.__edge=new bM({shape:od(a,f,f),style:r({opacity:0,strokeNoScale:!0},a.lineStyle)})),Io(S,{shape:od(a,d,p),style:{opacity:1}},o),n.add(S)}}function nd(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,a=ed(s,s.getModel(),a),u=s.parentNode===l?s:s.parentNode||s;null==(r=u.getLayout());)u=u.parentNode===l?u:u.parentNode||u;Io(i,{position:[r.x+1,r.y+1]},o,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var h=i.__edge;h&&Io(h,{shape:od(a,r,r),style:{opacity:0}},o,function(){n.remove(h)})}function od(t,e,i){var n,o,a,r,s,l,u,h,c=t.orient;if("radial"===t.layout){s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=Uc(s,u),f=Uc(s,u+(h-u)*t.curvature),p=Uc(l,h+(u-h)*t.curvature),g=Uc(l,h);return{x1:d.x,y1:d.y,x2:g.x,y2:g.y,cpx1:f.x,cpy1:f.y,cpx2:p.x,cpy2:p.y}}return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,o=u,a=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,o=u+(h-u)*t.curvature,a=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:o,cpx2:a,cpy2:r}}function ad(t,e,i){for(var n,o=[t],a=[];n=o.pop();)if(a.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;s=0;a--)n.push(o[a])}}function sd(t,e){var i=Xc(t,e);t.layoutInfo=i;var n=t.get("layout"),o=0,a=0,r=null;"radial"===n?(o=2*Math.PI,a=Math.min(i.height,i.width)/2,r=Zc(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,r=Zc());var s=t.getData().tree.root,l=s.children[0];if(l){Fc(s),ad(l,Wc,r),s.hierNode.modifier=-l.hierNode.prelim,rd(l,Hc);var u=l,h=l,c=l;rd(l,function(t){var e=t.getLayout().x;eh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Uc(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=a/(h.getLayout().x+d+f),p=o/(c.depth-1||1),rd(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:o-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:a-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}function ld(t,e,i){if(t&&l(e,t.type)>=0){var n=i.getData().tree.root,o=t.targetNode;if("string"==typeof o&&(o=n.getNodeById(o)),o&&n.contains(o))return{node:o};var a=t.targetNodeId;if(null!=a&&(o=n.getNodeById(a)))return{node:o}}}function ud(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function hd(t,e){return l(ud(t),e)>=0}function cd(t,e){for(var i=[];t;){var n=t.dataIndex;i.push({name:t.name,dataIndex:n,value:e.getRawValue(n)}),t=t.parentNode}return i.reverse(),i}function dd(t){var e=0;d(t.children,function(t){dd(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function fd(t,e){var i=e.get("color");if(i){var n;return d(t=t||[],function(t){var e=new No(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),n||((t[0]||(t[0]={})).color=i.slice()),t}}function pd(t){this.group=new tb,t.add(this.group)}function gd(t,e,i,n,o,a){var r=[[o?t:t-UC,e],[t+i,e],[t+i,e+n],[o?t:t-UC,e+n]];return!a&&r.splice(2,0,[t+i+UC,e+n/2]),!o&&r.push([t,e+n/2]),r}function md(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&cd(i,e)}}function vd(){var t,e=[],i={};return{add:function(t,n,o,a,r){return _(a)&&(r=a,a=0),!i[t.id]&&(i[t.id]=1,e.push({el:t,target:n,time:o,delay:a,easing:r}),!0)},done:function(e){return t=e,this},start:function(){for(var n=e.length,o=0,a=e.length;o=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function bd(t,e){var i=t.visual,n=[];w(i)?sL(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),Ld(t,n)}function Sd(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:Dd([0,1])}}function Md(t){var e=this.option.visual;return e[Math.round(Bo(t,[0,1],[0,e.length-1],!0))]||{}}function Id(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function Td(t){var e=this.option.visual;return e[this.option.loop&&t!==uL?t%e.length:t]}function Ad(){return this.option.visual[0]}function Dd(t){return{linear:function(e){return Bo(e,t,this.option.visual,!0)},category:Td,piecewise:function(e,i){var n=Cd.call(this,i);return null==n&&(n=Bo(e,t,this.option.visual,!0)),n},fixed:Ad}}function Cd(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[hL.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function Ld(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f(e,function(t){return Gt(t)})),e}function kd(t,e,i){return t?e<=i:e=o.length||t===o[t.depth])&&Pd(t,Vd(r,h,t,e,g,a),i,n,o,a)})}else l=Od(h),t.setVisual("color",l)}}function Nd(t,e,i,n){var o=a({},e);return d(["color","colorAlpha","colorSaturation"],function(a){var r=t.get(a,!0);null==r&&i&&(r=i[a]),null==r&&(r=e[a]),null==r&&(r=n.get(a)),null!=r&&(o[a]=r)}),o}function Od(t){var e=Rd(t,"color");if(e){var i=Rd(t,"colorAlpha"),n=Rd(t,"colorSaturation");return n&&(e=jt(e,null,null,n)),i&&(e=Yt(e,i)),e}}function Ed(t,e){return null!=e?jt(e,null,null,t):null}function Rd(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function zd(t,e,i,n,o,a){if(a&&a.length){var r=Bd(e,"color")||null!=o.color&&"none"!==o.color&&(Bd(e,"colorAlpha")||Bd(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&su[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:r.name,dataExtent:u,visual:r.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var d=new hL(c);return d.__drColorMappingBy=h,d}}}function Bd(t,e){var i=t.get(e);return fL(i)&&i.length?{name:e,range:i}:null}function Vd(t,e,i,n,o,r){var s=a({},e);if(o){var l=o.type,u="color"===l&&o.__drColorMappingBy,h="index"===u?n:"id"===u?r.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));s[l]=o.mapValueToVisual(h)}return s}function Gd(t,e,i,n){var o,a;if(!t.isRemoved()){var r=t.getLayout();o=r.width,a=r.height;var s=(f=t.getModel()).get(_L),l=f.get(wL)/2,u=Kd(f),h=Math.max(s,u),c=s-l,d=h-l,f=t.getModel();t.setLayout({borderWidth:s,upperHeight:h,upperLabelHeight:u},!0);var p=(o=mL(o-2*c,0))*(a=mL(a-c-d,0)),g=Fd(t,f,p,e,i,n);if(g.length){var m={x:c,y:d,width:o,height:a},v=vL(o,a),y=1/0,x=[];x.area=0;for(var _=0,w=g.length;_=0;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*es[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}function Ud(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;ro&&(o=n));var l=t.area*t.area,u=e*e*i;return l?mL(u*o/l,l/(u*a)):1/0}function Xd(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],h=e?t.area/e:0;(o||h>i[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;cXM&&(u=XM),a=s}u=0?n+=u:n-=u:p>=0?n-=u:n+=u}return n}function pf(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function gf(t,e,i){var n=t.getGraphicEl(),o=pf(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){if("group"!==t.type){var e=t.lineLabelOriginalOpacity;null!=e&&null==i||(e=o),t.setStyle("opacity",e)}})}function mf(t,e){var i=pf(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}function vf(t){return t instanceof Array||(t=[t,t]),t}function yf(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=t.getGraph();i.eachNode(function(t){var e=t.getModel();t.setLayout([+e.get("x"),+e.get("y")])}),xf(i)}}function xf(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.curveness")||0,i=F(t.node1.getLayout()),n=F(t.node2.getLayout()),o=[i,n];+e&&o.push([(i[0]+n[0])/2-(i[1]-n[1])*e,(i[1]+n[1])/2-(n[0]-i[0])*e]),t.setLayout(o)})}function _f(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=e.getBoundingRect(),n=t.getData(),o=n.graph,a=0,r=n.getSum("value"),s=2*Math.PI/(r||n.count()),l=i.width/2+i.x,u=i.height/2+i.y,h=Math.min(i.width,i.height)/2;o.eachNode(function(t){var e=t.getValue("value");a+=s*(r?e:1)/2,t.setLayout([h*Math.cos(a)+l,h*Math.sin(a)+u]),a+=s*(r?e:1)/2}),n.setLayout({cx:l,cy:u}),o.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.curveness")||0,n=F(t.node1.getLayout()),o=F(t.node2.getLayout()),a=(n[0]+o[0])/2,r=(n[1]+o[1])/2;+i&&(e=[l*(i*=3)+a*(1-i),u*i+r*(1-i)]),t.setLayout([n,o,e])})}}function wf(t,e,i){for(var n=i.rect,o=n.width,a=n.height,r=[n.x+o/2,n.y+a/2],s=null==i.gravity?.1:i.gravity,l=0;l0?-1:i<0?1:e?-1:1}}function Pf(t,e){return Math.min(e[1],Math.max(e[0],t))}function Nf(t,e,i){this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Of(t,e){return ek(ik(t,e[0]),e[1])}function Ef(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}}function Rf(t,e){var i,n,o=e.layoutLength,a=e.axisExpandWidth,r=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return tmk}function $f(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function Jf(t,e,i,n){var o=new tb;return o.add(new yM({name:"main",style:ip(i),silent:!0,draggable:!0,cursor:"move",drift:uk(t,e,o,"nswe"),ondragend:uk(qf,e,{isEnd:!0})})),hk(n,function(i){o.add(new yM({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:uk(t,e,o,i),ondragend:uk(qf,e,{isEnd:!0})}))}),o}function Qf(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=fk(o,vk),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-a+o/2,f=c-a+o/2,p=h-r,g=c-s,m=p+o,v=g+o;ep(t,e,"main",r,s,p,g),n.transformable&&(ep(t,e,"w",l,u,a,v),ep(t,e,"e",d,u,a,v),ep(t,e,"n",l,u,m,a),ep(t,e,"s",l,f,m,a),ep(t,e,"nw",l,u,a,a),ep(t,e,"ne",d,u,a,a),ep(t,e,"sw",l,f,a,a),ep(t,e,"se",d,f,a,a))}function tp(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(ip(i)),o.attr({silent:!n,cursor:n?"move":"default"}),hk(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=ap(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?_k[a]+"-resize":null})})}function ep(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(hp(up(t,e,[[n,o],[n+a,o+r]])))}function ip(t){return r({strokeNoScale:!0},t.brushStyle)}function np(t,e,i,n){var o=[dk(t,i),dk(e,n)],a=[fk(t,i),fk(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function op(t){return Ao(t.group)}function ap(t,e){if(e.length>1)return("e"===(n=[ap(t,(e=e.split(""))[0]),ap(t,e[1])])[0]||"w"===n[0])&&n.reverse(),n.join("");var i={left:"w",right:"e",top:"n",bottom:"s"},n=Co({w:"left",e:"right",n:"top",s:"bottom"}[e],op(t));return i[n]}function rp(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=lp(i,a,r);hk(o.split(""),function(t){var e=xk[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(np(u[0][0],u[1][0],u[0][1],u[1][1])),Zf(i,n),qf(i,{isEnd:!1})}function sp(t,e,i,n,o){var a=e.__brushOption.range,r=lp(t,i,n);hk(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Zf(t,e),qf(t,{isEnd:!1})}function lp(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function up(t,e,n){var o=jf(t,e);return o&&!0!==o?o.clipPath(n,t._transform):i(n)}function hp(t){var e=dk(t[0][0],t[1][0]),i=dk(t[0][1],t[1][1]);return{x:e,y:i,width:fk(t[0][0],t[1][0])-e,height:fk(t[0][1],t[1][1])-i}}function cp(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=Xf(t,e,i);if(!t._dragging)for(var r=0;r0;a--)Yp(s,l*=.99,r),jp(s,o,i,n,r),tg(s,l,r),jp(s,o,i,n,r)}function Up(t,e){var i=[],n="vertical"===e?"y":"x",o=Zi(t,function(t){return t.getLayout()[n]});return o.keys.sort(function(t,e){return t-e}),d(o.keys,function(t){i.push(o.buckets.get(t))}),i}function Xp(t,e,i,n,o,a,r){var s=[];d(e,function(t){var e=t.length,i=0,l=0;d(t,function(t){i+=t.getLayout().value}),l="vertical"===r?(o-(e-1)*a)/i:(n-(e-1)*a)/i,s.push(l)}),s.sort(function(t,e){return t-e});var l=s[0];d(e,function(t){d(t,function(t,e){var i=t.getLayout().value*l;"vertical"===r?(t.setLayout({x:e},!0),t.setLayout({dx:i},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:i},!0))})}),d(i,function(t){var e=+t.getValue()*l;t.setLayout({dy:e},!0)})}function jp(t,e,i,n,o){d(t,function(t){var a,r,s,l=0,u=t.length;if("vertical"===o){var h;for(t.sort(function(t,e){return t.getLayout().x-e.getLayout().x}),s=0;s0&&(h=a.getLayout().x+r,a.setLayout({x:h},!0)),l=a.getLayout().x+a.getLayout().dx+e;if((r=l-e-n)>0)for(h=a.getLayout().x-r,a.setLayout({x:h},!0),l=h,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().x+a.getLayout().dx+e-l)>0&&(h=a.getLayout().x-r,a.setLayout({x:h},!0)),l=a.getLayout().x}else{var c;for(t.sort(function(t,e){return t.getLayout().y-e.getLayout().y}),s=0;s0&&(c=a.getLayout().y+r,a.setLayout({y:c},!0)),l=a.getLayout().y+a.getLayout().dy+e;if((r=l-e-i)>0)for(c=a.getLayout().y-r,a.setLayout({y:c},!0),l=c,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().y+a.getLayout().dy+e-l)>0&&(c=a.getLayout().y-r,a.setLayout({y:c},!0)),l=a.getLayout().y}})}function Yp(t,e,i){d(t.slice().reverse(),function(t){d(t,function(t){if(t.outEdges.length){var n=Qp(t.outEdges,qp,i)/Qp(t.outEdges,Jp,i);if("vertical"===i){var o=t.getLayout().x+(n-$p(t,i))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(n-$p(t,i))*e;t.setLayout({y:a},!0)}}})})}function qp(t,e){return $p(t.node2,e)*t.getValue()}function Kp(t,e){return $p(t.node1,e)*t.getValue()}function $p(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function Jp(t){return t.getValue()}function Qp(t,e,i){for(var n=0,o=t.length,a=-1;++a0?"P":"N",a=n.getVisual("borderColor"+o)||n.getVisual("color"+o),r=i.getModel(Gk).getItemStyle(Wk);e.useStyle(r),e.style.fill=null,e.style.stroke=a}function fg(t,e,i,n,o){return i>n?-1:i0?t.get(o,e-1)<=n?1:-1:1}function pg(t,e){var i,n=t.getBaseAxis(),o="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),a=Vo(A(t.get("barMaxWidth"),o),o),r=Vo(A(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Vo(s,o):Math.max(Math.min(o/2,a),r)}function gg(t){return y(t)||(t=[+t,+t]),t}function mg(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function vg(t,e){tb.call(this);var i=new wu(t,e),n=new tb;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}function yg(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=f(e,function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),o([e,t[0],t[1]])}))}function xg(t,e,i){tb.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}function _g(t,e,i){tb.call(this),this._createPolyline(t,e,i)}function wg(t,e,i){xg.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}function bg(){this.group=new tb}function Sg(t){return t instanceof Array||(t=[t,t]),t}function Mg(){var t=iw();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}function Ig(t,e,i){var n=t[1]-t[0],o=(e=f(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}})).length,a=0;return function(t){for(n=a;n=0;n--){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}return n>=0&&n=e[0]&&t<=e[1]}}function Ag(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}function Dg(t,e,i,n){var o=t.getItemLayout(e),a=i.get("symbolRepeat"),r=i.get("symbolClip"),s=i.get("symbolPosition")||"start",l=(i.get("symbolRotate")||0)*Math.PI/180||0,u=i.get("symbolPatternSize")||2,h=i.isAnimationEnabled(),c={dataIndex:e,layout:o,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:r,symbolRepeat:a,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?i:null,hoverAnimation:h&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};Cg(i,a,o,n,c),kg(t,e,o,a,r,c.boundingLength,c.pxSign,u,n,c),Pg(i,c.symbolScale,l,n,c);var d=c.symbolSize,f=i.get("symbolOffset");return y(f)&&(f=[Vo(f[0],d[0]),Vo(f[1],d[1])]),Ng(i,d,o,a,r,f,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,n,c),c}function Cg(t,e,i,n,o){var a,r=n.valueDim,s=t.get("symbolBoundingData"),l=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(i[r.wh]<=0);if(y(s)){var c=[Lg(l,s[0])-u,Lg(l,s[1])-u];c[1]0?1:a<0?-1:0}function Lg(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function kg(t,e,i,n,o,a,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");y(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[c.index]=Vo(f[c.index],d),f[h.index]=Vo(f[h.index],n?d:Math.abs(a)),u.symbolSize=f,(u.symbolScale=[f[0]/s,f[1]/s])[h.index]*=(l.isHorizontal?-1:1)*r}function Pg(t,e,i,n,o){var a=t.get(cP)||0;a&&(fP.attr({scale:e.slice(),rotation:i}),fP.updateTransform(),a/=fP.getLineScale(),a*=e[n.valueDim.index]),o.valueLineWidth=a}function Ng(t,e,i,n,o,r,s,l,u,h,c,d){var f=c.categoryDim,p=c.valueDim,g=d.pxSign,m=Math.max(e[p.index]+l,0),v=m;if(n){var y=Math.abs(u),x=T(t.get("symbolMargin"),"15%")+"",_=!1;x.lastIndexOf("!")===x.length-1&&(_=!0,x=x.slice(0,x.length-1)),x=Vo(x,e[p.index]);var w=Math.max(m+2*x,0),b=_?0:2*x,S=Qo(n),M=S?n:Kg((y+b)/w);w=m+2*(x=(y-M*m)/2/(_?M:M-1)),b=_?0:2*x,S||"fixed"===n||(M=h?Kg((Math.abs(h)+b)/w):0),v=M*w-b,d.repeatTimes=M,d.symbolMargin=x}var I=g*(v/2),A=d.pathPosition=[];A[f.index]=i[f.wh]/2,A[p.index]="start"===s?I:"end"===s?u-I:u/2,r&&(A[0]+=r[0],A[1]+=r[1]);var D=d.bundlePosition=[];D[f.index]=i[f.xy],D[p.index]=i[p.xy];var C=d.barRectShape=a({},i);C[p.wh]=g*Math.max(Math.abs(i[p.wh]),Math.abs(A[p.index]+I)),C[f.wh]=i[f.wh];var L=d.clipShape={};L[f.xy]=-i[f.xy],L[f.wh]=c.ecSize[f.wh],L[p.xy]=0,L[p.wh]=i[p.wh]}function Og(t){var e=t.symbolPatternSize,i=Jl(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function Eg(t,e,i,n){function o(t){var e=l.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=h-1-t),e[u.index]=d*(o-h/2+.5)+l[u.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}var a=t.__pictorialBundle,r=i.symbolSize,s=i.valueLineWidth,l=i.pathPosition,u=e.valueDim,h=i.repeatTimes||0,c=0,d=r[e.valueDim.index]+s+2*i.symbolMargin;for(jg(t,function(t){t.__pictorialAnimationIndex=c,t.__pictorialRepeatTimes=h,c0)],d=t.__pictorialBarRect;kh(d.style,h,a,n,e.seriesModel,o,c),fo(d,h)}function Kg(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}function $g(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}function Jg(t,e){e=e||{};var i=t.coordinateSystem,n=t.axis,o={},a=n.position,r=n.orient,s=i.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};o.position=["vertical"===r?u.vertical[a]:l[0],"horizontal"===r?u.horizontal[a]:l[3]];var h={horizontal:0,vertical:1};o.rotation=Math.PI/2*h[r];var c={top:-1,bottom:1,right:1,left:-1};o.labelDirection=o.tickDirection=o.nameDirection=c[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),T(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var d=e.rotate;return null==d&&(d=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-d:d,o.z2=1,o}function Qg(t,e,i,n,o){var r=t.axis;if(!r.scale.isBlank()&&r.containData(e))if(t.involveSeries){var s=tm(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==o.seriesIndex&&a(o,l[0]),!n&&t.snap&&r.containData(u)&&null!=u&&(e=u),i.showPointer(t,e,l,o),i.showTooltip(t,s,u)}else i.showPointer(t,e)}function tm(t,e){var i=e.axis,n=i.dim,o=t,a=[],r=Number.MAX_VALUE,s=-1;return _P(e.seriesModels,function(e,l){var u,h,c=e.getData().mapDimension(n,!0);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(c,t,i);h=d.dataIndices,u=d.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===i.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=r&&((p=0&&s<0)&&(r=p,s=f,o=u,a.length=0),_P(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:o}}function em(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function im(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=Ah(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function nm(t,e,i){var n=i.axesInfo=[];_P(e,function(e,i){var o=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(o.status="show"),o.value=a.value,o.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(o.status="hide"),"show"===o.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:o.value})})}function om(t,e,i,n){if(!lm(e)&&t.list.length){var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}else n({type:"hideTip"})}function am(t,e,i){var n=i.getZr(),o=bP(n).axisPointerLastHighlights||{},a=bP(n).axisPointerLastHighlights={};_P(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&_P(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t})});var r=[],s=[];d(o,function(t,e){!a[e]&&s.push(t)}),d(a,function(t,e){!o[e]&&r.push(t)}),s.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:s}),r.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:r})}function rm(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}function sm(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function lm(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function um(t,e,i){if(!U_.node){var n=e.getZr();SP(n).records||(SP(n).records={}),hm(n,e),(SP(n).records[t]||(SP(n).records[t]={})).handler=i}}function hm(t,e){function i(i,n){t.on(i,function(i){var o=pm(e);MP(SP(t).records,function(t){t&&n(t,i,o.dispatchAction)}),cm(o.pendings,e)})}SP(t).initialized||(SP(t).initialized=!0,i("click",v(fm,"click")),i("mousemove",v(fm,"mousemove")),i("globalout",dm))}function cm(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function dm(t,e,i){t.handler("leave",null,i)}function fm(t,e,i,n){e.handler(t,i,n)}function pm(t){var e={showTip:[],hideTip:[]},i=function(n){var o=e[n.type];o?o.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}function gm(t,e){if(!U_.node){var i=e.getZr();(SP(i).records||{})[t]&&(SP(i).records[t]=null)}}function mm(){}function vm(t,e,i,n){ym(TP(i).lastProp,n)||(TP(i).lastProp=n,e?Io(i,n,t):(i.stopAnimation(),i.attr(n)))}function ym(t,e){if(w(t)&&w(e)){var i=!0;return d(e,function(e,n){i=i&&ym(t[n],e)}),!!i}return t===e}function xm(t,e){t[e.get("label.show")?"show":"hide"]()}function _m(t){return{position:t.position.slice(),rotation:t.rotation||0}}function wm(t,e,i){var n=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=o&&(t.zlevel=o),t.silent=i)})}function bm(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle()).fill=null:"shadow"===i&&((e=n.getAreaStyle()).stroke=null),e}function Sm(t,e,i,n,o){var a=Im(i.get("value"),e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),r=i.getModel("label"),s=qM(r.get("padding")||0),l=r.getFont(),u=ke(a,l),h=o.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=o.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=o.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),Mm(h,c,d,n);var g=r.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:r.get("borderRadius")},position:h.slice(),style:{text:a,textFont:l,textFill:r.getTextColor(),textPosition:"inside",fill:g,stroke:r.get("borderColor")||"transparent",lineWidth:r.get("borderWidth")||0,shadowBlur:r.get("shadowBlur"),shadowColor:r.get("shadowColor"),shadowOffsetX:r.get("shadowOffsetX"),shadowOffsetY:r.get("shadowOffsetY")},z2:10}}function Mm(t,e,i,n){var o=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,o)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function Im(t,e,i,n,o){t=e.scale.parse(t);var a=e.scale.getLabel(t,{precision:o.precision}),r=o.formatter;if(r){var s={value:Xl(e,t),seriesData:[]};d(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,o=e&&e.getDataParams(n);o&&s.seriesData.push(o)}),_(r)?a=r.replace("{value}",a):x(r)&&(a=r(s))}return a}function Tm(t,e,i){var n=xt();return Mt(n,n,i.rotation),St(n,n,i.position),Do([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function Am(t,e,i,n,o,a){var r=FD.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=o.get("label.margin"),Sm(e,n,o,a,{position:Tm(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})}function Dm(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}}function Cm(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}function Lm(t,e,i,n,o,a){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:a,clockwise:!0}}function km(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function Pm(t){return"x"===t.dim?0:1}function Nm(t){return t.isHorizontal()?0:1}function Om(t,e){var i=t.getRect();return[i[kP[e]],i[kP[e]]+i[PP[e]]]}function Em(t,e,i){var n=new yM({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return To(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}function Rm(t,e,i){if(t.count())for(var n,o=e.coordinateSystem,a=e.getLayerSeries(),r=t.mapDimension("single"),s=t.mapDimension("value"),l=f(a,function(e){return f(e.indices,function(e){var i=o.dataToPoint(t.get(r,e));return i[1]=t.get(s,e),i})}),u=zm(l),h=u.y0,c=i/u.max,d=a.length,p=a[0].indices.length,g=0;ga&&(a=u),n.push(u)}for(var h=0;ha&&(a=d)}return r.y0=o,r.max=a,r}function Bm(t){var e=0;d(t.children,function(t){Bm(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function Vm(t,e,i){function n(){r.ignore=r.hoverIgnore}function o(){r.ignore=r.normalIgnore}tb.call(this);var a=new hM({z2:zP});a.seriesIndex=e.seriesIndex;var r=new rM({z2:BP,silent:t.getModel("label").get("silent")});this.add(a),this.add(r),this.updateData(!0,t,"normal",e,i),this.on("emphasis",n).on("normal",o).on("mouseover",n).on("mouseout",o)}function Gm(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;return a=i.option.color[Fm(t)%r]}function Fm(t){for(var e=t;e.depth>1;)e=e.parentNode;return l(t.getAncestors()[0].children,e)}function Wm(t,e,i){return i!==RP.NONE&&(i===RP.SELF?t===e:i===RP.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function Hm(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}function Zm(t,e){var i=t.children||[];t.children=Um(i,e),i.length&&d(t.children,function(t){Zm(t,e)})}function Um(t,e){if("function"==typeof e)return t.sort(e);var i="asc"===e;return t.sort(function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n})}function Xm(t,e){return e=e||[0,0],f(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function jm(t,e){return e=e||[0,0],f([0,1],function(i){var n=e[i],o=t[i]/2,a=[],r=[];return a[i]=n-o,r[i]=n+o,a[1-i]=r[1-i]=e[1-i],Math.abs(this.dataToPoint(a)[i]-this.dataToPoint(r)[i])},this)}function Ym(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function qm(t,e){return f(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function Km(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=lv(n);(e=Xn(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new rM({})).__customText=t.style.text:e=new(0,zM[i.charAt(0).toUpperCase()+i.slice(1)]);return e.__customGraphicType=i,e.name=t.name,e}function $m(t,e,n,o,a,r,s){var l={},u=n.style||{};if(n.shape&&(l.shape=i(n.shape)),n.position&&(l.position=n.position.slice()),n.scale&&(l.scale=n.scale.slice()),n.origin&&(l.origin=n.origin.slice()),n.rotation&&(l.rotation=n.rotation),"image"===t.type&&n.style){h=l.style={};d(["x","y","width","height"],function(e){Jm(e,h,u,t.style,r)})}if("text"===t.type&&n.style){var h=l.style={};d(["x","y"],function(e){Jm(e,h,u,t.style,r)}),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke)}if("group"!==t.type&&(t.useStyle(u),r)){t.style.opacity=0;var c=u.opacity;null==c&&(c=1),To(t,{style:{opacity:c}},o,e)}r?t.attr(l):Io(t,l,o,e),n.hasOwnProperty("z2")&&t.attr("z2",n.z2||0),n.hasOwnProperty("silent")&&t.attr("silent",n.silent),n.hasOwnProperty("invisible")&&t.attr("invisible",n.invisible),n.hasOwnProperty("ignore")&&t.attr("ignore",n.ignore),n.hasOwnProperty("info")&&t.attr("info",n.info);var f=n.styleEmphasis,p=!1===f;t.__cusHasEmphStl&&null==f||!t.__cusHasEmphStl&&p||(ro(t,f),t.__cusHasEmphStl=!p),s&&po(t,!p)}function Jm(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function Qm(t,e,i,n){function o(t){null==t&&(t=h),v&&(c=e.getItemModel(t),d=c.getModel(UP),f=c.getModel(XP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():YP[l.type](l));var h,c,d,f,p,g=r({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:function(t,i){return null==i&&(i=h),e.get(e.getDimension(t||0),i)},style:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(HP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),mo(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(ZP).getItemStyle();return mo(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},visual:function(t,i){return null==i&&(i=h),e.getItemVisual(i,t)},barLayout:function(t){if(l.getBaseAxis)return Ll(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return So(t,i)}},u.api||{}),m={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:u.coordSys,dataInsideLength:e.count(),encode:tv(t.getData())},v=!0;return function(t,i){return h=t,v=!0,s&&s(r({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:i?i.type:null},m),g)}}function tv(t){var e={};return d(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim;(e[a]=e[a]||[])[o.coordDimIndex]=n}}),e}function ev(t,e,i,n,o,a){return(t=iv(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function iv(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&uv(u)&&lv(u)!==t.__customPathData||"image"===l&&hv(h,"image")&&h.image!==t.__customImagePath||"text"===l&&hv(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return!t&&(t=Km(i)),$m(t,e,i,n,a,c,r),"group"===l&&nv(t,e,i,n,a),o.add(t),t}}function nv(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(r||l||u)if(l)ov({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});else{u&&t.removeAll();for(var h=0;hn?t-=l+a:t+=a),null!=r&&(e+u+r>o?e-=u+r:e+=r),[t,e]}function Ov(t,e,i,n,o){var a=i.getOuterSize(),r=a.width,s=a.height;return t=Math.min(t+r,n)-r,e=Math.min(e+s,o)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function Ev(t,e,i){var n=i[0],o=i[1],a=0,r=0,s=e.width,l=e.height;switch(t){case"inside":a=e.x+s/2-n/2,r=e.y+l/2-o/2;break;case"top":a=e.x+s/2-n/2,r=e.y-o-5;break;case"bottom":a=e.x+s/2-n/2,r=e.y+l+5;break;case"left":a=e.x-n-5,r=e.y+l/2-o/2;break;case"right":a=e.x+s+5,r=e.y+l/2-o/2}return[a,r]}function Rv(t){return"center"===t||"middle"===t}function zv(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function Bv(t){return t.dim}function Vv(t,e){var i={};d(t,function(t,e){var n=t.getData(),o=t.coordinateSystem.getBaseAxis(),a=o.getExtent(),r="category"===o.type?o.getBandWidth():Math.abs(a[1]-a[0])/n.count(),s=i[Bv(o)]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},l=s.stacks;i[Bv(o)]=s;var u=zv(t);l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var h=Vo(t.get("barWidth"),r),c=Vo(t.get("barMaxWidth"),r),d=t.get("barGap"),f=t.get("barCategoryGap");h&&!l[u].width&&(h=Math.min(s.remainedWidth,h),l[u].width=h,s.remainedWidth-=h),c&&(l[u].maxWidth=c),null!=d&&(s.gap=d),null!=f&&(s.categoryGap=f)});var n={};return d(i,function(t,e){n[e]={};var i=t.stacks,o=t.bandWidth,a=Vo(t.categoryGap,o),r=Vo(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-a)/(l+(l-1)*r);u=Math.max(u,0),d(i,function(t,e){var i=t.maxWidth;i&&ie[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),o=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:o[0],y2:o[1]}}function jv(t){return t.getRadiusAxis().inverse?0:1}function Yv(t){var e=t[0],i=t[t.length-1];e&&i&&Math.abs(Math.abs(e.coord-i.coord)-360)<1e-4&&t.pop()}function qv(t,e,i){return{position:[t.cx,t.cy],rotation:i/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:e.getModel("axisLabel").get("rotate"),z2:1}}function Kv(t,e,i,n,o){var a=e.axis,r=a.dataToCoord(t),s=n.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=n.getRadiusAxis().getExtent();if("radius"===a.dim){var d=xt();Mt(d,d,s),St(d,d,[n.cx,n.cy]),l=Do([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=FD.innerTextLayout(s,f*Math.PI/180,-1);u=p.textAlign,h=p.textVerticalAlign}else{var g=c[1];l=n.coordToPoint([g+o,r]);var m=n.cx,v=n.cy;u=Math.abs(l[0]-m)/g<.3?"center":l[0]>m?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}function $v(t,e){e.update="updateView",Es(e,function(e,i){var n={};return i.eachComponent({mainType:"geo",query:e},function(i){i[t](e.name),d(i.coordinateSystem.regions,function(t){n[t.name]=i.isSelected(t.name)||!1})}),{selected:n,name:e.name}})}function Jv(t){var e={};d(t,function(t){e[t]=1}),t.length=0,d(e,function(e,i){t.push(i)})}function Qv(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function ty(t,e,n){function o(){var t=function(){};return t.prototype.__hidden=t.prototype,new t}var a={};return MN(e,function(e){var r=a[e]=o();MN(t[e],function(t,o){if(hL.isValidType(o)){var a={type:o,visual:t};n&&n(a,e),r[o]=new hL(a),"opacity"===o&&((a=i(a)).type="colorAlpha",r.__hidden.__alphaForOpacity=new hL(a))}})}),a}function ey(t,e,n){var o;d(n,function(t){e.hasOwnProperty(t)&&Qv(e[t])&&(o=!0)}),o&&d(n,function(n){e.hasOwnProperty(n)&&Qv(e[n])?t[n]=i(e[n]):delete t[n]})}function iy(t,e,i,n,o,a){function r(t){return i.getItemVisual(h,t)}function s(t,e){i.setItemVisual(h,t,e)}function l(t,l){h=null==a?t:l;var c=i.getRawDataItem(h);if(!c||!1!==c.visualMap)for(var d=n.call(o,t),f=e[d],p=u[d],g=0,m=p.length;g1)return!1;var h=uy(i-t,o-t,n-e,a-e)/l;return!(h<0||h>1)}function ly(t){return t<=1e-6&&t>=-1e-6}function uy(t,e,i,n){return t*n-e*i}function hy(t,e,i){var n=this._targetInfoList=[],o={},a=dy(e,t);TN(PN,function(t,e){(!i||!i.include||AN(i.include,e)>=0)&&t(a,n,o)})}function cy(t){return t[0]>t[1]&&t.reverse(),t}function dy(t,e){return Vi(t,e,{includeMainTypes:LN})}function fy(t,e,i,n){var o=i.getAxis(["x","y"][t]),a=cy(f([0,1],function(t){return e?o.coordToData(o.toLocalCoord(n[t])):o.toGlobalCoord(o.dataToCoord(n[t]))})),r=[];return r[t]=a,r[1-t]=[NaN,NaN],{values:a,xyMinMax:r}}function py(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function gy(t,e){var i=my(t),n=my(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}function my(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}function vy(t,e,i,n,o){if(o){var a=t.getZr();a[VN]||(a[BN]||(a[BN]=yy),Nr(a,BN,i,e)(t,n))}}function yy(t,e){if(!t.isDisposed()){var i=t.getZr();i[VN]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[VN]=!1}}function xy(t,e,i,n){for(var o=0,a=e.length;o=0}function Ny(t,e,i){function n(t,e){return l(e.nodes,t)>=0}function o(t,n){var o=!1;return e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]&&(o=!0)})}),o}function a(t,n){n.nodes.push(t),e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){var r={nodes:[],records:{}};if(e(function(t){r.records[t.name]={}}),!i)return r;a(i,r);var s;do{s=!1,t(function(t){!n(t,r)&&o(t,r)&&(a(t,r),s=!0)})}while(s);return r}}function Oy(t,e,i){var n=[1/0,-1/0];return $N(i,function(t){var i=t.getData();i&&$N(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]n[1]&&(n[1]=e[1])})}),n[1]0?0:NaN);var r=i.getMax(!0);return null!=r&&"dataMax"!==r&&"function"!=typeof r?e[1]=r:o&&(e[1]=a>0?a-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function Ry(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=Zo(o,[0,500]);a=Math.min(a,20);var r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}function zy(t){var e=t._minMaxSpan={},i=t._dataZoomModel;$N(["min","max"],function(n){e[n+"Span"]=i.get(n+"Span");var o=i.get(n+"ValueSpan");if(null!=o&&(e[n+"ValueSpan"]=o,null!=(o=t.getAxisModel().axis.scale.parse(o)))){var a=t._dataExtent;e[n+"Span"]=Bo(a[0]+o,a,[0,100],!0)}})}function By(t){var e={};return tO(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function Vy(t,e){var i=t._rangePropMode,n=t.get("rangeMode");tO([["start","startValue"],["end","endValue"]],function(t,o){var a=null!=e[t[0]],r=null!=e[t[1]];a&&!r?i[o]="percent":!a&&r?i[o]="value":n?i[o]=n[o]:a&&(i[o]="percent")})}function Gy(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}function Fy(t){return"vertical"===t?"ns-resize":"ew-resize"}function Wy(t,e){var i=Uy(t),n=e.dataZoomId,o=e.coordId;d(i,function(t,i){var a=t.dataZoomInfos;a[n]&&l(e.allCoordIds,o)<0&&(delete a[n],t.count--)}),jy(i);var a=i[o];a||((a=i[o]={coordId:o,dataZoomInfos:{},count:0}).controller=Xy(t,a),a.dispatchAction=v(Yy,t)),!a.dataZoomInfos[n]&&a.count++,a.dataZoomInfos[n]=e;var r=qy(a.dataZoomInfos);a.controller.enable(r.controlType,r.opt),a.controller.setPointerChecker(e.containsPoint),Nr(a,"dispatchAction",e.dataZoomModel.get("throttle",!0),"fixRate")}function Hy(t,e){var i=Uy(t);d(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),jy(i)}function Zy(t){return t.type+"\0_"+t.id}function Uy(t){var e=t.getZr();return e[fO]||(e[fO]={})}function Xy(t,e){var i=new oc(t.getZr());return d(["pan","zoom","scrollMove"],function(t){i.on(t,function(i){var n=[];d(e.dataZoomInfos,function(o){if(i.isAvailableBehavior(o.dataZoomModel.option)){var a=(o.getRange||{})[t],r=a&&a(e.controller,i);!o.dataZoomModel.get("disabled",!0)&&r&&n.push({dataZoomId:o.dataZoomId,start:r[0],end:r[1]})}}),n.length&&e.dispatchAction(n)})}),i}function jy(t){d(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function Yy(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function qy(t){var e,i={type_true:2,type_move:1,type_false:0,type_undefined:-1},n=!0;return d(t,function(t){var o=t.dataZoomModel,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i["type_"+a]>i["type_"+e]&&(e=a),n&=o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!n}}}function Ky(t){return function(e,i,n,o){var a=this._range,r=a.slice(),s=e.axisModels[0];if(s){var l=t(r,s,e,i,n,o);return QL(l,r,[0,100],"all"),this._range=r,a[0]!==r[0]||a[1]!==r[1]?r:void 0}}}function $y(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}function Jy(t,e,i,n){for(var o=e.targetVisuals[n],a=hL.prepareVisualTypes(o),r={color:t.getData().getVisual("color")},s=0,l=a.length;s=0&&(r[a]=+r[a].toFixed(h)),r}function fx(t,e){var n=t.getData(),o=t.coordinateSystem;if(e&&!cx(e)&&!y(e.coord)&&o){var a=o.dimensions,r=px(e,n,o,t);if((e=i(e)).type&&YO[e.type]&&r.baseAxis&&r.valueAxis){var s=XO(a,r.baseAxis.dim),l=XO(a,r.valueAxis.dim);e.coord=YO[e.type](n,r.baseDataDim,r.valueDataDim,s,l),e.value=e.coord[l]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)YO[u[h]]&&(u[h]=yx(n,n.mapDimension(a[h]),u[h]));e.coord=u}}return e}function px(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(gx(n,o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim)):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim),o.valueDataDim=e.mapDimension(o.valueAxis.dim)),o}function gx(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var o=0;o=0)return!0}function Yx(t){for(var e=t.split(/\n+/g),i=[],n=f(Xx(e.shift()).split(pE),function(t){return{name:t,data:[]}}),o=0;o=0&&!i[o][n];o--);if(o<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var r=a.getPercentRange();i[0][n]={dataZoomId:n,start:r[0],end:r[1]}}}}),i.push(e)}function t_(t){var e=n_(t),i=e[e.length-1];e.length>1&&e.pop();var n={};return gE(i,function(t,i){for(var o=e.length-1;o>=0;o--)if(t=e[o][i]){n[i]=t;break}}),n}function e_(t){t[mE]=null}function i_(t){return n_(t).length}function n_(t){var e=t[mE];return e||(e=t[mE]=[{}]),e}function o_(t,e,i){(this._brushController=new zf(i.getZr())).on("brush",m(this._onBrush,this)).mount(),this._isZoomActive}function a_(t){var e={};return d(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(!1===e[i]||"none"===e[i])&&(e[i]=[])}),e}function r_(t,e){t.setIconStatus("back",i_(e)>1?"emphasis":"normal")}function s_(t,e,i,n,o){var a=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(a="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var r=new hy(a_(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}function l_(t){this.model=t}function u_(t){return SE(t)}function h_(){if(!TE&&AE){TE=!0;var t=AE.styleSheets;t.length<31?AE.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}function c_(t){return parseInt(t,10)}function d_(t,e){h_(),this.root=t,this.storage=e;var i=document.createElement("div"),n=document.createElement("div");i.style.cssText="display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;",n.style.cssText="position:absolute;left:0;top:0;",t.appendChild(i),this._vmlRoot=n,this._vmlViewport=i,this.resize();var o=e.delFromStorage,a=e.addToStorage;e.delFromStorage=function(t){o.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)},this._firstPaint=!0}function f_(t){return function(){Yw('In IE8.0 VML mode painter not support method "'+t+'"')}}function p_(t){return document.createElementNS(sR,t)}function g_(t){return cR(1e4*t)/1e4}function m_(t){return t-vR}function v_(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==hR}function y_(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==hR}function x_(t,e){e&&__(t,"transform","matrix("+uR.call(e,",")+")")}function __(t,e,i){(!i||"linear"!==i.type&&"radial"!==i.type)&&t.setAttribute(e,i)}function w_(t,e,i){t.setAttributeNS("http://www.w3.org/1999/xlink",e,i)}function b_(t,e,i,n){if(v_(e,i)){var o=i?e.textFill:e.fill;o="transparent"===o?hR:o,"none"!==t.getAttribute("clip-path")&&o===hR&&(o="rgba(0, 0, 0, 0.002)"),__(t,"fill",o),__(t,"fill-opacity",null!=e.fillOpacity?e.fillOpacity*e.opacity:e.opacity)}else __(t,"fill",hR);if(y_(e,i)){var a=i?e.textStroke:e.stroke;__(t,"stroke",a="transparent"===a?hR:a),__(t,"stroke-width",(i?e.textStrokeWidth:e.lineWidth)/(!i&&e.strokeNoScale?n.getLineScale():1)),__(t,"paint-order",i?"stroke":"fill"),__(t,"stroke-opacity",null!=e.strokeOpacity?e.strokeOpacity:e.opacity),e.lineDash?(__(t,"stroke-dasharray",e.lineDash.join(",")),__(t,"stroke-dashoffset",cR(e.lineDashOffset||0))):__(t,"stroke-dasharray",""),e.lineCap&&__(t,"stroke-linecap",e.lineCap),e.lineJoin&&__(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&__(t,"stroke-miterlimit",e.miterLimit)}else __(t,"stroke",hR)}function S_(t){for(var e=[],i=t.data,n=t.len(),o=0;o=gR||!m_(g)&&(d>-pR&&d<0||d>pR)==!!p;var y=g_(s+u*fR(c)),x=g_(l+h*dR(c));m&&(d=p?gR-1e-4:1e-4-gR,v=!0,9===o&&e.push("M",y,x));var _=g_(s+u*fR(c+d)),w=g_(l+h*dR(c+d));e.push("A",g_(u),g_(h),cR(f*mR),+v,+p,_,w);break;case lR.Z:a="Z";break;case lR.R:var _=g_(i[o++]),w=g_(i[o++]),b=g_(i[o++]),S=g_(i[o++]);e.push("M",_,w,"L",_+b,w,"L",_+b,w+S,"L",_,w+S,"L",_,w)}a&&e.push(a);for(var M=0;M=11),domSupported:"undefined"!=typeof document}}(navigator.userAgent),X_={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},j_={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},Y_=Object.prototype.toString,q_=Array.prototype,K_=q_.forEach,$_=q_.filter,J_=q_.slice,Q_=q_.map,tw=q_.reduce,ew={},iw=function(){return ew.createCanvas()};ew.createCanvas=function(){return document.createElement("canvas")};var nw,ow="__ec_primitive__";E.prototype={constructor:E,get:function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},set:function(t,e){return this.data[t]=e},each:function(t,e){void 0!==e&&(t=m(t,e));for(var i in this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var aw=(Object.freeze||Object)({$override:e,clone:i,merge:n,mergeAll:o,extend:a,defaults:r,createCanvas:iw,getContext:s,indexOf:l,inherits:u,mixin:h,isArrayLike:c,each:d,map:f,reduce:p,filter:g,find:function(t,e,i){if(t&&e)for(var n=0,o=t.length;n3&&(n=dw.call(n,1));for(var a=e.length,r=0;r4&&(n=dw.call(n,1,n.length-1));for(var a=n[n.length-1],r=e.length,s=0;s1&&n&&n.length>1){var a=ft(n)/ft(o);!isFinite(a)&&(a=1),e.pinchScale=a;var r=pt(n);return e.pinchX=r[0],e.pinchY=r[1],{type:"pinch",target:t[0].target,event:e}}}}},xw="silent";vt.prototype.dispose=function(){};var _w=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ww=function(t,e,i,n){fw.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new vt,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,it.call(this),this.setHandlerProxy(i)};ww.prototype={constructor:ww,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(d(_w,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,o=n.target;o&&!o.__zr&&(o=(n=this.findHover(n.x,n.y)).target);var a=this._hovered=this.findHover(e,i),r=a.target,s=this.proxy;s.setCursor&&s.setCursor(r?r.cursor:"default"),o&&r!==o&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(a,"mousemove",t),r&&r!==o&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do{i=i&&i.parentNode}while(i&&9!==i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){var n=(t=t||{}).target;if(!n||!n.silent){for(var o="on"+e,a=gt(e,t,i);n&&(n[o]&&(a.cancelBubble=n[o].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o={x:t,y:e},a=n.length-1;a>=0;a--){var r;if(n[a]!==i&&!n[a].ignore&&(r=yt(n[a],t,e))&&(!o.topTarget&&(o.topTarget=n[a]),r!==xw)){o.target=n[a];break}}return o},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new vw);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var o=n.type;t.gestureEvent=o,this.dispatchToElement({target:n.target},o,n.event)}}},d(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){ww.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downEl=n,this._downPoint=[e.zrX,e.zrY],this._upEl=n;else if("mouseup"===t)this._upEl=n;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||uw(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(i,t,e)}}),h(ww,fw),h(ww,it);var bw="undefined"==typeof Float32Array?Array:Float32Array,Sw=(Object.freeze||Object)({create:xt,identity:_t,copy:wt,mul:bt,translate:St,rotate:Mt,scale:It,invert:Tt,clone:At}),Mw=_t,Iw=5e-5,Tw=function(t){(t=t||{}).position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},Aw=Tw.prototype;Aw.transform=null,Aw.needLocalTransform=function(){return Dt(this.rotation)||Dt(this.position[0])||Dt(this.position[1])||Dt(this.scale[0]-1)||Dt(this.scale[1]-1)};var Dw=[];Aw.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(i||e){n=n||xt(),i?this.getLocalTransform(n):Mw(n),e&&(i?bt(n,t.transform,n):wt(n,t.transform)),this.transform=n;var o=this.globalScaleRatio;if(null!=o&&1!==o){this.getGlobalScale(Dw);var a=Dw[0]<0?-1:1,r=Dw[1]<0?-1:1,s=((Dw[0]-a)*o+a)/Dw[0]||0,l=((Dw[1]-r)*o+r)/Dw[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||xt(),Tt(this.invTransform,n)}else n&&Mw(n)},Aw.getLocalTransform=function(t){return Tw.getLocalTransform(this,t)},Aw.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},Aw.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var Cw=[],Lw=xt();Aw.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,o=this.scale;Dt(e-1)&&(e=Math.sqrt(e)),Dt(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],o[0]=e,o[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},Aw.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(bt(Cw,t.invTransform,e),e=Cw);var i=this.origin;i&&(i[0]||i[1])&&(Lw[4]=i[0],Lw[5]=i[1],bt(Cw,e,Lw),Cw[4]-=i[0],Cw[5]-=i[1],e=Cw),this.setLocalTransform(e)}},Aw.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},Aw.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&Q(i,i,n),i},Aw.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&Q(i,i,n),i},Tw.getLocalTransform=function(t,e){Mw(e=e||[]);var i=t.origin,n=t.scale||[1,1],o=t.rotation||0,a=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),It(e,e,n),o&&Mt(e,e,o),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=a[0],e[5]+=a[1],e};var kw={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-kw.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*kw.bounceIn(2*t):.5*kw.bounceOut(2*t-1)+.5}};Ct.prototype={constructor:Ct,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,o="string"==typeof n?kw[n]:n,a="function"==typeof o?o(i):i;return this.fire("frame",a),1===i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var Pw=function(){this.head=null,this.tail=null,this._len=0},Nw=Pw.prototype;Nw.insert=function(t){var e=new Ow(t);return this.insertEntry(e),e},Nw.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},Nw.remove=function(t){var e=t.prev,i=t.next;e?e.next=i:this.head=i,i?i.prev=e:this.tail=e,t.next=t.prev=null,this._len--},Nw.len=function(){return this._len},Nw.clear=function(){this.head=this.tail=null,this._len=0};var Ow=function(t){this.value=t,this.next,this.prev},Ew=function(t){this._list=new Pw,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},Rw=Ew.prototype;Rw.put=function(t,e){var i=this._list,n=this._map,o=null;if(null==n[t]){var a=i.len(),r=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=i.head;i.remove(s),delete n[s.key],o=s.value,this._lastRemovedEntry=s}r?r.value=e:r=new Ow(e),r.key=t,i.insertEntry(r),n[t]=r}return o},Rw.get=function(t){var e=this._map[t],i=this._list;if(null!=e)return e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value},Rw.clear=function(){this._list.clear(),this._map={}};var zw={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]},Bw=new Ew(20),Vw=null,Gw=Ut,Fw=Xt,Ww=(Object.freeze||Object)({parse:Gt,lift:Ht,toHex:Zt,fastLerp:Ut,fastMapToColor:Gw,lerp:Xt,mapToColor:Fw,modifyHSL:jt,modifyAlpha:Yt,stringify:qt}),Hw=Array.prototype.slice,Zw=function(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||Kt,this._setter=n||$t,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};Zw.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:ae(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new de(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},de.create=function(t){return new de(t.x,t.y,t.width,t.height)};var tb=function(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};tb.prototype={constructor:tb,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof tb&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,o=l(n,t);return o<0?this:(n.splice(o,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof tb&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e=0&&(this.delFromStorage(t),this._roots.splice(o,1),t instanceof tb&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:we};var ob={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},ab=function(t,e,i){return ob.hasOwnProperty(e)?i*=t.dpr:i},rb={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},sb=9,lb=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],ub=function(t){this.extendFrom(t,!1)};ub.prototype={constructor:ub,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){var n=this,o=i&&i.style,a=!o||t.__attrCachedBy!==rb.STYLE_BIND;t.__attrCachedBy=rb.STYLE_BIND;for(var r=0;r0},extendFrom:function(t,e){if(t)for(var i in t)!t.hasOwnProperty(i)||!0!==e&&(!1===e?this.hasOwnProperty(i):null==t[i])||(this[i]=t[i])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,i){for(var n=("radial"===e.type?Se:be)(t,e,i),o=e.colorStops,a=0;a=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i15)break}s.__drawIndex=m,s.__drawIndex0&&t>n[0]){for(r=0;rt);r++);a=i[n[r]]}if(n.splice(r+1,0,t),i[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else Yw("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n0?.01:0),this._needsManuallyCompositing),a.__builtin__||Yw("ZLevel "+s+" has been used by unkown layer "+a.id),a!==i&&(a.__used=!0,a.__startIndex!==o&&(a.__dirty=!0),a.__startIndex=o,a.incremental?a.__drawIndex=-1:a.__drawIndex=o,e(o),i=a),r.__dirty&&(a.__dirty=!0,a.incremental&&a.__drawIndex<0&&(a.__drawIndex=o))}e(o),this.eachBuiltinLayer(function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?n(i[t],e,!0):i[t]=e;for(var o=0;o=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i=0||n&&l(n,r)<0)){var s=e.getShallow(r);null!=s&&(o[t[a][0]]=s)}}return o}},tS=Qb([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),eS={getLineStyle:function(t){var e=tS(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"===e||null==e?null:"dashed"===e?[n,n]:[i,i]}},iS=Qb([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),nS={getAreaStyle:function(t,e){return iS(this,t,e)}},oS=Math.pow,aS=Math.sqrt,rS=1e-8,sS=1e-4,lS=aS(3),uS=1/3,hS=V(),cS=V(),dS=V(),fS=Math.min,pS=Math.max,gS=Math.sin,mS=Math.cos,vS=2*Math.PI,yS=V(),xS=V(),_S=V(),wS=[],bS=[],SS={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},MS=[],IS=[],TS=[],AS=[],DS=Math.min,CS=Math.max,LS=Math.cos,kS=Math.sin,PS=Math.sqrt,NS=Math.abs,OS="undefined"!=typeof Float32Array,ES=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};ES.prototype={constructor:ES,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=NS(1/Xw/t)||0,this._uy=NS(1/Xw/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(SS.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var i=NS(t-this._xi)>this._ux||NS(e-this._yi)>this._uy||this._len<5;return this.addData(SS.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(SS.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(SS.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(SS.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=LS(o)*i+t,this._yi=kS(o)*i+e,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(SS.R,t,e,i,n),this},closePath:function(){this.addData(SS.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;i0&&f<=t||h<0&&f>=t||0===h&&(c>0&&p<=e||c<0&&p>=e);)f+=h*(i=r[n=this._dashIdx]),p+=c*i,this._dashIdx=(n+1)%g,h>0&&fl||c>0&&pu||s[n%2?"moveTo":"lineTo"](h>=0?DS(f,t):CS(f,t),c>=0?DS(p,e):CS(p,e));h=f-t,c=p-e,this._dashOffset=-PS(h*h+c*c)},_dashedBezierTo:function(t,e,i,n,o,a){var r,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=tn,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,r=0;r<1;r+=.1)s=v(g,t,i,o,r+.1)-v(g,t,i,o,r),l=v(m,e,n,a,r+.1)-v(m,e,n,a,r),y+=PS(s*s+l*l);for(;x<_&&!((w+=f[x])>d);x++);for(r=(w-d)/y;r<=1;)u=v(g,t,i,o,r),h=v(m,e,n,a,r),x%2?p.moveTo(u,h):p.lineTo(u,h),r+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(o,a),s=o-u,l=a-h,this._dashOffset=-PS(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,OS&&(this.data=new Float32Array(t)))},getBoundingRect:function(){MS[0]=MS[1]=TS[0]=TS[1]=Number.MAX_VALUE,IS[0]=IS[1]=AS[0]=AS[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,o=0,a=0;al||NS(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case SS.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],x=s[c++],_=s[c++],w=g>m?g:m,b=g>m?1:g/m,S=g>m?m/g:1,M=v+y;Math.abs(g-m)>.001?(t.translate(f,p),t.rotate(x),t.scale(b,S),t.arc(0,0,w,v,M,1-_),t.scale(1/b,1/S),t.rotate(-x),t.translate(-f,-p)):t.arc(f,p,w,v,M,1-_),1===c&&(e=LS(v)*g+f,i=kS(v)*m+p),n=LS(M)*g+f,o=kS(M)*m+p;break;case SS.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case SS.Z:t.closePath(),n=e,o=i}}}},ES.CMD=SS;var RS=2*Math.PI,zS=2*Math.PI,BS=ES.CMD,VS=2*Math.PI,GS=1e-4,FS=[-1,-1,-1],WS=[-1,-1],HS=fb.prototype.getCanvasPattern,ZS=Math.abs,US=new ES(!0);Pn.prototype={constructor:Pn,type:"path",__dirtyPath:!0,strokeContainThreshold:5,subPixelOptimize:!1,brush:function(t,e){var i=this.style,n=this.path||US,o=i.hasStroke(),a=i.hasFill(),r=i.fill,s=i.stroke,l=a&&!!r.colorStops,u=o&&!!s.colorStops,h=a&&!!r.image,c=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var d;l&&(d=d||this.getBoundingRect(),this._fillGradient=i.getGradient(t,r,d)),u&&(d=d||this.getBoundingRect(),this._strokeGradient=i.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:h&&(t.fillStyle=HS.call(r,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=HS.call(s,t));var f=i.lineDash,p=i.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();if(n.setScale(m[0],m[1]),this.__dirtyPath||f&&!g&&o?(n.beginPath(t),f&&!g&&(n.setLineDash(f),n.setLineDashOffset(p)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),a)if(null!=i.fillOpacity){v=t.globalAlpha;t.globalAlpha=i.fillOpacity*i.opacity,n.fill(t),t.globalAlpha=v}else n.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),o)if(null!=i.strokeOpacity){var v=t.globalAlpha;t.globalAlpha=i.strokeOpacity*i.opacity,n.stroke(t),t.globalAlpha=v}else n.stroke(t);f&&g&&t.setLineDash([]),null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new ES},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new ES),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),r>1e-10&&(o.width+=a/r,o.height+=a/r,o.x-=a/r/2,o.y-=a/r/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,s=o.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),kn(a,r/s,t,e)))return!0}if(o.hasFill())return Ln(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):di.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(w(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&ZS(t[0]-1)>1e-10&&ZS(t[3]-1)>1e-10?Math.sqrt(ZS(t[0]*t[3]-t[2]*t[1])):1}},Pn.extend=function(t){var e=function(e){Pn.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var n=this.shape;for(var o in i)!n.hasOwnProperty(o)&&i.hasOwnProperty(o)&&(n[o]=i[o])}t.init&&t.init.call(this,e)};u(e,Pn);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(Pn,di);var XS=ES.CMD,jS=[[],[],[]],YS=Math.sqrt,qS=Math.atan2,KS=function(t,e){var i,n,o,a,r,s,l=t.data,u=XS.M,h=XS.C,c=XS.L,d=XS.R,f=XS.A,p=XS.Q;for(o=0,a=0;o=11?function(){var e,i=this.__clipPaths,n=this.style;if(i)for(var o=0;oi-2?i-1:c+1],u=t[c>i-3?i-1:c+2]);var p=d*d,g=d*p;n.push([Bn(s[0],f[0],l[0],u[0],d,p,g),Bn(s[1],f[1],l[1],u[1],d,p,g)])}return n},fM=function(t,e,i,n){var o,a,r,s,l=[],u=[],h=[],c=[];if(n){r=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d=i&&a>=o)return{x:i,y:o,width:n-i,height:a-o}},createIcon:Po,Group:tb,Image:fi,Text:rM,Circle:sM,Sector:hM,Ring:cM,Polygon:pM,Polyline:gM,Rect:yM,Line:_M,BezierCurve:bM,Arc:SM,IncrementalDisplayable:Zn,CompoundPath:MM,LinearGradient:TM,RadialGradient:AM,BoundingRect:de}),BM=["textStyle","color"],VM={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(BM):null)},getFont:function(){return So({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return ke(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}},GM=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),FM={getItemStyle:function(t,e){var i=GM(this,t,e),n=this.getBorderLineDash();return n&&(i.lineDash=n),i},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}},WM=h,HM=Bi();No.prototype={constructor:No,init:null,mergeOption:function(t){n(this.option,t,!0)},get:function(t,e){return null==t?this.option:Oo(this.option,this.parsePath(t),!e&&Eo(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&Eo(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,n=null==t?this.option:Oo(this.option,t=this.parsePath(t));return e=e||(i=Eo(this,t))&&i.getModel(t),new No(n,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new(0,this.constructor)(i(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){HM(this).getParent=t},isAnimationEnabled:function(){if(!U_.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},ji(No),Yi(No),WM(No,eS),WM(No,nS),WM(No,VM),WM(No,FM);var ZM=0,UM=1e-4,XM=9007199254740991,jM=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,YM=(Object.freeze||Object)({linearMap:Bo,parsePercent:Vo,round:Go,asc:Fo,getPrecision:Wo,getPrecisionSafe:Ho,getPixelPrecision:Zo,getPercentWithPrecision:Uo,MAX_SAFE_INTEGER:XM,remRadian:Xo,isRadianAroundZero:jo,parseDate:Yo,quantity:qo,nice:$o,quantile:function(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),o=+t[n-1],a=i-n;return a?o+a*(t[n]-o):o},reformIntervals:Jo,isNumeric:Qo}),qM=L,KM=/([&<>"'])/g,$M={"&":"&","<":"<",">":">",'"':""","'":"'"},JM=["a","b","c","d","e","f","g"],QM=function(t,e){return"{"+t+(null==e?"":e)+"}"},tI=ze,eI=(Object.freeze||Object)({addCommas:ta,toCamelCase:ea,normalizeCssArray:qM,encodeHTML:ia,formatTpl:na,formatTplSimple:oa,getTooltipMarker:aa,formatTime:sa,capitalFirst:la,truncateText:tI,getTextBoundingRect:function(t){return ke(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,o,a,r,s){return ke(t,e,i,n,o,s,a,r)}}),iI=d,nI=["left","right","top","bottom","width","height"],oI=[["width","left","right"],["height","top","bottom"]],aI=ua,rI=(v(ua,"vertical"),v(ua,"horizontal"),{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}}),sI=Bi(),lI=No.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){No.call(this,t,e,i,n),this.uid=Ro("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?ga(t):{};n(t,e.getTheme().get(this.mainType)),n(t,this.getDefaultOption()),i&&pa(t,o,i)},mergeOption:function(t,e){n(this.option,t,!0);var i=this.layoutMode;i&&pa(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=sI(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var o=i.prototype.defaultOption;o&&e.push(o),i=i.superClass}for(var a={},r=e.length-1;r>=0;r--)a=n(a,e[r],!0);t.defaultOption=a}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});$i(lI,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,i){t=Ui(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=Ui(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o}}(lI),function(t,e){function i(t){var i={},a=[];return d(t,function(r){var s=n(i,r),u=o(s.originalDeps=e(r),t);s.entryCount=u.length,0===s.entryCount&&a.push(r),d(u,function(t){l(s.predecessor,t)<0&&s.predecessor.push(t);var e=n(i,t);l(e.successor,t)<0&&e.successor.push(r)})}),{graph:i,noEntryList:a}}function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function o(t,e){var i=[];return d(t,function(t){l(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,n,o){function a(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}if(t.length){var r=i(e),s=r.graph,l=r.noEntryList,u={};for(d(t,function(t){u[t]=!0});l.length;){var h=l.pop(),c=s[h],f=!!u[h];f&&(n.call(o,h,c.originalDeps.slice()),delete u[h]),d(c.successor,f?function(t){u[t]=!0,a(t)}:a)}d(u,function(){throw new Error("Circle dependency may exists")})}}}(lI,function(t){var e=[];return d(lI.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return Ui(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(lI,rI);var uI="";"undefined"!=typeof navigator&&(uI=navigator.platform||"");var hI={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:uI.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},cI=Bi(),dI={clearColorPalette:function(){cI(this).colorIdx=0,cI(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=cI(e=e||this),o=n.colorIdx||0,a=n.colorNameMap=n.colorNameMap||{};if(a.hasOwnProperty(t))return a[t];var r=Di(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?va(s,i):r;if((l=l||r)&&l.length){var u=l[o];return t&&(a[t]=u),n.colorIdx=(o+1)%l.length,u}}},fI={cartesian2d:function(t,e,i,n){var o=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",o),i.set("y",a),xa(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),xa(a)&&(n.set("y",a),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var o=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",o),xa(o)&&(n.set("single",o),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var o=t.getReferringComponents("polar")[0],a=o.findAxisModel("radiusAxis"),r=o.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",r),xa(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),xa(r)&&(n.set("angle",r),e.firstCategoryDimIndex=1)},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,e,i,n){var o=t.ecModel,a=o.getComponent("parallel",t.get("parallelIndex")),r=e.coordSysDims=a.dimensions.slice();d(a.parallelAxisIndex,function(t,a){var s=o.getComponent("parallelAxis",t),l=r[a];i.set(l,s),xa(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},pI="original",gI="arrayRows",mI="objectRows",vI="keyedColumns",yI="unknown",xI="typedArray",_I="column",wI="row";_a.seriesDataToSource=function(t){return new _a({data:t,sourceFormat:S(t)?xI:pI,fromDataset:!1})},Yi(_a);var bI=Bi(),SI="\0_ec_inner",MI=No.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new No(i),this._optionManager=n},setOption:function(t,e){k(!(SI in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,i=this._optionManager;if(!t||"recreate"===t){var n=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(n)):Ea.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&d(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){var e=this.option,o=this._componentsMap,r=[];Sa(this),d(t,function(t,o){null!=t&&(lI.hasClass(o)?o&&r.push(o):e[o]=null==e[o]?i(t):n(e[o],t,!0))}),lI.topologicalTravel(r,lI.getAllClassMainTypes(),function(i,n){var r=Di(t[i]),s=Pi(o.get(i),r);Ni(s),d(s,function(t,e){var n=t.option;w(n)&&(t.keyInfo.mainType=i,t.keyInfo.subType=za(i,n,t.exist))});var l=Ra(o,n);e[i]=[],o.set(i,[]),d(s,function(t,n){var r=t.exist,s=t.option;if(k(w(s)||r,"Empty component definition"),s){var u=lI.getClass(i,t.keyInfo.subType,!0);if(r&&r instanceof u)r.name=t.keyInfo.name,r.mergeOption(s,this),r.optionUpdated(s,!1);else{var h=a({dependentModels:l,componentIndex:n},t.keyInfo);a(r=new u(s,this,this,h),h),r.init(s,this,this,h),r.optionUpdated(null,!0)}}else r.mergeOption({},this),r.optionUpdated({},!1);o.get(i)[n]=r,e[i][n]=r.option},this),"series"===i&&Ba(this,o.get("series"))},this),this._seriesIndicesMap=R(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=i(this.option);return d(t,function(e,i){if(lI.hasClass(i)){for(var n=(e=Di(e)).length-1;n>=0;n--)Ei(e[n])&&e.splice(n,1);t[i]=e}}),delete t[SI],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,o=t.name,a=this._componentsMap.get(e);if(!a||!a.length)return[];var r;if(null!=i)y(i)||(i=[i]),r=g(f(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=y(n);r=g(a,function(t){return s&&l(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=y(o);r=g(a,function(t){return u&&l(o,t.name)>=0||!u&&t.name===o})}else r=a.slice();return Va(r,t)},findComponents:function(t){var e=t.query,i=t.mainType,n=function(t){var e=i+"Index",n=i+"Id",o=i+"Name";return!t||null==t[e]&&null==t[n]&&null==t[o]?null:{mainType:i,index:t[e],id:t[n],name:t[o]}}(e);return function(e){return t.filter?g(e,t.filter):e}(Va(n?this.queryComponents(n):this._componentsMap.get(i),t))},eachComponent:function(t,e,i){var n=this._componentsMap;"function"==typeof t?(i=e,e=t,n.each(function(t,n){d(t,function(t,o){e.call(i,n,t,o)})})):_(t)?d(n.get(t),e,i):w(t)&&d(this.findComponents(t),e,i)},getSeriesByName:function(t){return g(this._componentsMap.get("series"),function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){return g(this._componentsMap.get("series"),function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){d(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){d(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){d(this._seriesIndices,function(n){var o=this._componentsMap.get("series")[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return d(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){Ba(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;Ba(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),lI.topologicalTravel(i,lI.getAllClassMainTypes(),function(i,n){d(e.get(i),function(e){("series"!==i||!Na(e,t))&&e.restoreData()})})}});h(MI,dI);var II=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],TI={};Fa.prototype={constructor:Fa,create:function(t,e){var i=[];d(TI,function(n,o){var a=n.create(t,e);i=i.concat(a||[])}),this._coordinateSystems=i},update:function(t,e){d(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},Fa.register=function(t,e){TI[t]=e},Fa.get=function(t){return TI[t]};var AI=d,DI=i,CI=f,LI=n,kI=/^(min|max)?(.+)$/;Wa.prototype={constructor:Wa,setOption:function(t,e){t&&d(Di(t.series),function(t){t&&t.data&&S(t.data)&&N(t.data)}),t=DI(t,!0);var i=this._optionBackup,n=Ha.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(ja(i.baseOption,n.baseOption),n.timelineOptions.length&&(i.timelineOptions=n.timelineOptions),n.mediaList.length&&(i.mediaList=n.mediaList),n.mediaDefault&&(i.mediaDefault=n.mediaDefault)):this._optionBackup=n},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=CI(e.timelineOptions,DI),this._mediaList=CI(e.mediaList,DI),this._mediaDefault=DI(e.mediaDefault),this._currentMediaIndices=[],DI(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=DI(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,a=[],r=[];if(!n.length&&!o)return r;for(var s=0,l=n.length;s=1)&&(t=1),t}var i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var o=this.context;o.data=o.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var r=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),u=t&&t.modDataCount||0;r===l&&s===u||(a="reset");var h;(this._dirty||"reset"===a)&&(this._dirty=!1,h=yr(this,n)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=i?i._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!n&&(h||d=i?null:t1&&a>0?e:t}};return s}();UI.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},UI.unfinished=function(){return this._progress&&this._dueIndex":"\n",s="richText"===n,l={},u=0,h=this.getData(),c=h.mapDimension("defaultedTooltip",!0),f=c.length,g=this.getRawValue(t),m=y(g),v=h.getItemVisual(t,"color");w(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var x=(f>1||m&&!f?function(i){function o(t,i){var o=h.getDimensionInfo(i);if(o&&!1!==o.otherDims.tooltip){var c=o.type,d="sub"+a.seriesIndex+"at"+u,p=aa({color:v,type:"subItem",renderMode:n,markerId:d}),g="string"==typeof p?p:p.content,m=(r?g+ia(o.displayName||"-")+": ":"")+ia("ordinal"===c?t+"":"time"===c?e?"":sa("yyyy/MM/dd hh:mm:ss",t):ta(t));m&&f.push(m),s&&(l[d]=v,++u)}}var r=p(i,function(t,e,i){var n=h.getDimensionInfo(i);return t|=n&&!1!==n.tooltip&&null!=n.displayName},0),f=[];c.length?d(c,function(e){o(fr(h,t,e),e)}):d(i,o);var g=r?s?"\n":"
":"",m=g+f.join(g||", ");return{renderMode:n,content:m,style:l}}(g):o(f?fr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=aa({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?ia(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?ia(S)+": "+x:x),markers:l}},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=dI.getColorFromPalette.call(this,t,e,i);return o||(o=n.getColorFromPalette(t,e,i)),o},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});h(YI,ZI),h(YI,dI);var qI=function(){this.group=new tb,this.uid=Ro("viewComponent")};qI.prototype={constructor:qI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var KI=qI.prototype;KI.updateView=KI.updateLayout=KI.updateVisual=function(t,e,i,n){},ji(qI),$i(qI,{registerWhenExtend:!0});var $I=function(){var t=Bi();return function(e){var i=t(e),n=e.pipelineContext,o=i.large,a=i.progressiveRender,r=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(o^r||a^s)&&"reset"}},JI=Bi(),QI=$I();Ar.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Cr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Cr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var tT=Ar.prototype;tT.updateView=tT.updateLayout=tT.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},ji(Ar),$i(Ar,{registerWhenExtend:!0}),Ar.markUpdateMethod=function(t,e){JI(t).updateMethod=e};var eT={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},iT="\0__throttleOriginMethod",nT="\0__throttleRate",oT="\0__throttleType",aT={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=(t.visualColorAccessPath||"itemStyle.color").split("."),o=t.get(n)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(i.setVisual("color",o),!e.isSeriesFiltered(t)){"function"!=typeof o||o instanceof IM||i.each(function(e){i.setItemVisual(e,"color",o(t.getDataParams(e)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e).get(n,!0);null!=i&&t.setItemVisual(e,"color",i)}:null}}}},rT={toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},sT=function(t,e){function i(t,e){if("string"!=typeof t)return t;var i=t;return d(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function n(t){var e=a.get(t);if(null==e){for(var i=t.split("."),n=rT.aria,o=0;o1?"series.multiple.prefix":"series.single.prefix"),{seriesCount:r}),e.eachSeries(function(t,e){if(e1?"multiple":"single")+".";a=i(a=n(s?u+"withName":u+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:o(t.subType)});var c=t.getData();window.data=c,c.count()>l?a+=i(n("data.partialData"),{displayCnt:l}):a+=n("data.allData");for(var d=[],p=0;pi.blockIndex?i.step:null,a=n&&n.modDataCount;return{step:o,modBy:null!=a?Math.ceil(a/o):null,modDataCount:a}}},uT.getPipeline=function(t){return this._pipelineMap.get(t)},uT.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),o=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,a=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:o,modDataCount:r,large:a}},uT.restorePipelines=function(t){var e=this,i=e._pipelineMap=R();t.eachSeries(function(t){var n=t.getProgressive(),o=t.uid;i.set(o,{id:o,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:n&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(n||700),count:0}),jr(e,t,t.dataTask)})},uT.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),i=this.api;d(this._allHandlers,function(n){var o=t.get(n.uid)||t.set(n.uid,[]);n.reset&&zr(this,n,o,e,i),n.overallReset&&Br(this,n,o,e,i)},this)},uT.prepareView=function(t,e,i,n){var o=t.renderTask,a=o.context;a.model=e,a.ecModel=i,a.api=n,o.__block=!t.incrementalPrepareRender,jr(this,e,o)},uT.performDataProcessorTasks=function(t,e){Rr(this,this._dataProcessorHandlers,t,e,{block:!0})},uT.performVisualTasks=function(t,e,i){Rr(this,this._visualHandlers,t,e,i)},uT.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},uT.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var hT=uT.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},cT=Ur(0);Er.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:Yr(t)}),t.uid=Ro("stageHandler"),e&&(t.visualType=e),t};var dT,fT={},pT={};qr(fT,MI),qr(pT,Ga),fT.eachSeriesByType=fT.eachRawSeriesByType=function(t){dT=t},fT.eachComponent=function(t){"series"===t.mainType&&t.subType&&(dT=t.subType)};var gT=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],mT={color:gT,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],gT]},vT=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],yT={color:vT,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:"#eee"},crossStyle:{color:"#eee"}}},legend:{textStyle:{color:"#eee"}},textStyle:{color:"#eee"},title:{textStyle:{color:"#eee"}},toolbox:{iconStyle:{normal:{borderColor:"#eee"}}},dataZoom:{textStyle:{color:"#eee"}},visualMap:{textStyle:{color:"#eee"}},timeline:{lineStyle:{color:"#eee"},itemStyle:{normal:{color:vT[1]}},label:{normal:{textStyle:{color:"#eee"}}},controlStyle:{normal:{color:"#eee",borderColor:"#eee"}}},timeAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},logAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},valueAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},categoryAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},line:{symbol:"circle"},graph:{color:vT},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};yT.categoryAxis.splitLine.show=!1,lI.extend({type:"dataset",defaultOption:{seriesLayoutBy:_I,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){wa(this)}}),qI.extend({type:"dataset"});var xT=Pn.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=.5522848,n=e.cx,o=e.cy,a=e.rx,r=e.ry,s=a*i,l=r*i;t.moveTo(n-a,o),t.bezierCurveTo(n-a,o-l,n-s,o-r,n,o-r),t.bezierCurveTo(n+s,o-r,n+a,o-l,n+a,o),t.bezierCurveTo(n+a,o+l,n+s,o+r,n,o+r),t.bezierCurveTo(n-s,o+r,n-a,o+l,n-a,o),t.closePath()}}),_T=/[\s,]+/;$r.prototype.parse=function(t,e){e=e||{};var i=Kr(t);if(!i)throw new Error("Illegal svg");var n=new tb;this._root=n;var o=i.getAttribute("viewBox")||"",a=parseFloat(i.getAttribute("width")||e.width),r=parseFloat(i.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(r)&&(r=null),es(i,n,null,!0);for(var s=i.firstChild;s;)this._parseNode(s,n),s=s.nextSibling;var l,u;if(o){var h=P(o).split(_T);h.length>=4&&(l={x:parseFloat(h[0]||0),y:parseFloat(h[1]||0),width:parseFloat(h[2]),height:parseFloat(h[3])})}if(l&&null!=a&&null!=r&&(u=as(l,a,r),!e.ignoreViewBox)){var c=n;(n=new tb).add(c),c.scale=u.scale.slice(),c.position=u.position.slice()}return e.ignoreRootClip||null==a||null==r||n.setClipPath(new yM({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:l,viewBoxTransform:u}},$r.prototype._parseNode=function(t,e){var i=t.nodeName.toLowerCase();"defs"===i?this._isDefine=!0:"text"===i&&(this._isText=!0);var n;if(this._isDefine){if(r=bT[i]){var o=r.call(this,t),a=t.getAttribute("id");a&&(this._defs[a]=o)}}else{var r=wT[i];r&&(n=r.call(this,t,e),e.add(n))}for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,n),3===s.nodeType&&this._isText&&this._parseText(s,n),s=s.nextSibling;"defs"===i?this._isDefine=!1:"text"===i&&(this._isText=!1)},$r.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var o=new rM({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});Qr(e,o),es(t,o,this._defs);var a=o.style.fontSize;a&&a<9&&(o.style.fontSize=9,o.scale=o.scale||[1,1],o.scale[0]*=a/9,o.scale[1]*=a/9);var r=o.getBoundingRect();return this._textX+=r.width,e.add(o),o};var wT={g:function(t,e){var i=new tb;return Qr(e,i),es(t,i,this._defs),i},rect:function(t,e){var i=new yM;return Qr(e,i),es(t,i,this._defs),i.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),i},circle:function(t,e){var i=new sM;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),i},line:function(t,e){var i=new _M;return Qr(e,i),es(t,i,this._defs),i.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),i},ellipse:function(t,e){var i=new xT;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),i},polygon:function(t,e){var i=t.getAttribute("points");i&&(i=ts(i));var n=new pM({shape:{points:i||[]}});return Qr(e,n),es(t,n,this._defs),n},polyline:function(t,e){var i=new Pn;Qr(e,i),es(t,i,this._defs);var n=t.getAttribute("points");return n&&(n=ts(n)),new gM({shape:{points:n||[]}})},image:function(t,e){var i=new fi;return Qr(e,i),es(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(o),this._textY=parseFloat(n)+parseFloat(a);var r=new tb;return Qr(e,r),es(t,r,this._defs),r},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0,r=new tb;return Qr(e,r),es(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=Rn(t.getAttribute("d")||"");return Qr(e,i),es(t,i,this._defs),i}},bT={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),o=parseInt(t.getAttribute("y2")||0,10),a=new TM(e,i,n,o);return Jr(t,a),a},radialgradient:function(t){}},ST={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-align":"textAlign","alignment-baseline":"textBaseline"},MT=/url\(\s*#(.*?)\)/,IT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,TT=/([^\s:;]+)\s*:\s*([^:;]+)/g,AT=R(),DT={registerMap:function(t,e,i){var n;return y(e)?n=e:e.svg?n=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),n=[{type:"geoJSON",source:e,specialAreas:i}]),d(n,function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,CT[e])(t)}),AT.set(t,n)},retrieveMap:function(t){return AT.get(t)}},CT={geoJSON:function(t){var e=t.source;t.geoJSON=_(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=Kr(t.source)}},LT=k,kT=d,PT=x,NT=w,OT=lI.parseClassType,ET={zrender:"4.0.6"},RT=1e3,zT=1e3,BT=3e3,VT={PROCESSOR:{FILTER:RT,STATISTIC:5e3},VISUAL:{LAYOUT:zT,GLOBAL:2e3,CHART:BT,COMPONENT:4e3,BRUSH:5e3}},GT="__flagInMainProcess",FT="__optionUpdated",WT=/^[a-zA-Z0-9_]+$/;ls.prototype.on=ss("on"),ls.prototype.off=ss("off"),ls.prototype.one=ss("one"),h(ls,fw);var HT=us.prototype;HT._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[FT]){var e=this[FT].silent;this[GT]=!0,cs(this),ZT.update.call(this),this[GT]=!1,this[FT]=!1,gs.call(this,e),ms.call(this,e)}else if(t.unfinished){var i=1,n=this._model;this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),fs(this,n),t.performVisualTasks(n),bs(this,this._model,0,"remain"),i-=+new Date-o}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},HT.getDom=function(){return this._dom},HT.getZr=function(){return this._zr},HT.setOption=function(t,e,i){var n;if(NT(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[GT]=!0,!this._model||e){var o=new Wa(this._api),a=this._theme,r=this._model=new MI(null,null,a,o);r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,qT),i?(this[FT]={silent:n},this[GT]=!1):(cs(this),ZT.update.call(this),this._zr.flush(),this[FT]=!1,this[GT]=!1,gs.call(this,n),ms.call(this,n))},HT.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},HT.getModel=function(){return this._model},HT.getOption=function(){return this._model&&this._model.getOption()},HT.getWidth=function(){return this._zr.getWidth()},HT.getHeight=function(){return this._zr.getHeight()},HT.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},HT.getRenderedCanvas=function(t){if(U_.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},HT.getSvgDataUrl=function(){if(U_.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},HT.getDataURL=function(t){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;kT(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return kT(n,function(t){t.group.ignore=!1}),a},HT.getConnectedDataURL=function(t){if(U_.canvasSupported){var e=this.group,n=Math.min,o=Math.max;if(eA[e]){var a=1/0,r=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(tA,function(h,c){if(h.group===e){var d=h.getRenderedCanvas(i(t)),f=h.getDom().getBoundingClientRect();a=n(f.left,a),r=n(f.top,r),s=o(f.right,s),l=o(f.bottom,l),u.push({dom:d,left:f.left,top:f.top})}});var c=(s*=h)-(a*=h),f=(l*=h)-(r*=h),p=iw();p.width=c,p.height=f;var g=Ii(p);return kT(u,function(t){var e=new fi({style:{x:t.left*h-a,y:t.top*h-r,image:t.dom}});g.add(e)}),g.refreshImmediately(),p.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},HT.convertToPixel=v(hs,"convertToPixel"),HT.convertFromPixel=v(hs,"convertFromPixel"),HT.containPixel=function(t,e){var i;return t=Vi(this._model,t),d(t,function(t,n){n.indexOf("Models")>=0&&d(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},HT.getVisual=function(t,e){var i=(t=Vi(this._model,t,{defaultMainType:"series"})).seriesModel.getData(),n=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?i.indexOfRawIndex(t.dataIndex):null;return null!=n?i.getItemVisual(n,e):i.getVisual(e)},HT.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},HT.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var ZT={prepareAndUpdate:function(t){cs(this),ZT.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,o=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),o.create(e,i),a.performDataProcessorTasks(e,t),fs(this,e),o.update(e,i),xs(e),a.performVisualTasks(e,t),_s(this,e,i,t);var r=e.get("backgroundColor")||"transparent";if(U_.canvasSupported)n.setBackgroundColor(r);else{var s=Gt(r);r=qt(s,"rgb"),0===s[3]&&(r="transparent")}Ss(e,i)}},updateTransform:function(t){var e=this._model,i=this,n=this._api;if(e){var o=[];e.eachComponent(function(a,r){var s=i.getViewOfComponentModel(r);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(r,e,n,t);l&&l.update&&o.push(s)}else o.push(s)});var a=R();e.eachSeries(function(o){var r=i._chartsMap[o.__viewId];if(r.updateTransform){var s=r.updateTransform(o,e,n,t);s&&s.update&&a.set(o.uid,1)}else a.set(o.uid,1)}),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),bs(i,e,0,t,a),Ss(e,this._api)}},updateView:function(t){var e=this._model;e&&(Ar.markUpdateMethod(t,"updateView"),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),_s(this,this._model,this._api,t),Ss(e,this._api))},updateVisual:function(t){ZT.update.call(this,t)},updateLayout:function(t){ZT.update.call(this,t)}};HT.resize=function(t){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var i=e.resetOption("media"),n=t&&t.silent;this[GT]=!0,i&&cs(this),ZT.update.call(this),this[GT]=!1,gs.call(this,n),ms.call(this,n)}},HT.showLoading=function(t,e){if(NT(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),QT[t]){var i=QT[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},HT.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},HT.makeActionFromEvent=function(t){var e=a({},t);return e.type=jT[t.type],e},HT.dispatchAction=function(t,e){NT(e)||(e={silent:!!e}),XT[t.type]&&this._model&&(this[GT]?this._pendingActions.push(t):(ps.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&U_.browser.weChat&&this._throttledZrFlush(),gs.call(this,e.silent),ms.call(this,e.silent)))},HT.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},HT.on=ss("on"),HT.off=ss("off"),HT.one=ss("one");var UT=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];HT._initEvents=function(){kT(UT,function(t){var e=function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var r=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=r&&r.getDataParams(o.dataIndex,o.dataType,o)||{}}else o&&o.eventData&&(i=a({},o.eventData));if(i){var s=i.componentType,l=i.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=i.seriesIndex);var u=s&&null!=l&&n.getComponent(s,l),h=u&&this["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];i.event=e,i.type=t,this._ecEventProcessor.eventInfo={targetEl:o,packedEvent:i,model:u,view:h},this.trigger(t,i)}};e.zrEventfulCallAtLast=!0,this._zr.on(t,e,this)},this),kT(jT,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},HT.isDisposed=function(){return this._disposed},HT.clear=function(){this.setOption({series:[]},!0)},HT.dispose=function(){if(!this._disposed){this._disposed=!0,Fi(this.getDom(),oA,"");var t=this._api,e=this._model;kT(this._componentsViews,function(i){i.dispose(e,t)}),kT(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete tA[this.id]}},h(us,fw),Ds.prototype={constructor:Ds,normalizeQuery:function(t){var e={},i={},n={};if(_(t)){var o=OT(t);e.mainType=o.main||null,e.subType=o.sub||null}else{var a=["Index","Name","Id"],r={name:1,dataIndex:1,dataType:1};d(t,function(t,o){for(var s=!1,l=0;l0&&h===o.length-u.length){var c=o.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}r.hasOwnProperty(o)&&(i[o]=t,s=!0),s||(n[o]=t)})}return{cptQuery:e,dataQuery:i,otherQuery:n}},filter:function(t,e,i){function n(t,e,i,n){return null==t[i]||e[n||i]===t[i]}var o=this.eventInfo;if(!o)return!0;var a=o.targetEl,r=o.packedEvent,s=o.model,l=o.view;if(!s||!l)return!0;var u=e.cptQuery,h=e.dataQuery;return n(u,s,"mainType")&&n(u,s,"subType")&&n(u,s,"index","componentIndex")&&n(u,s,"name")&&n(u,s,"id")&&n(h,r,"name")&&n(h,r,"dataIndex")&&n(h,r,"dataType")&&(!l.filterForExposedEvent||l.filterForExposedEvent(t,e.otherQuery,a,r))},afterTrigger:function(){this.eventInfo=null}};var XT={},jT={},YT=[],qT=[],KT=[],$T=[],JT={},QT={},tA={},eA={},iA=new Date-0,nA=new Date-0,oA="_echarts_instance_",aA=Ls;Bs(2e3,aT),Ns(BI),Os(5e3,function(t){var e=R();t.eachSeries(function(t){var i=t.get("stack");if(i){var n=e.get(i)||e.set(i,[]),o=t.getData(),a={stackResultDimension:o.getCalculationInfo("stackResultDimension"),stackedOverDimension:o.getCalculationInfo("stackedOverDimension"),stackedDimension:o.getCalculationInfo("stackedDimension"),stackedByDimension:o.getCalculationInfo("stackedByDimension"),isStackedByIndex:o.getCalculationInfo("isStackedByIndex"),data:o,seriesModel:t};if(!a.stackedDimension||!a.isStackedByIndex&&!a.stackedByDimension)return;n.length&&o.setCalculationInfo("stackedOnSeries",n[n.length-1].seriesModel),n.push(a)}}),e.each(ar)}),Gs("default",function(t,e){r(e=e||{},{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new yM({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new SM({shape:{startAngle:-lT/2,endAngle:-lT/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),o=new yM({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});n.animateShape(!0).when(1e3,{endAngle:3*lT/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*lT/2}).delay(300).start("circularInOut");var a=new tb;return a.add(n),a.add(o),a.add(i),a.resize=function(){var e=t.getWidth()/2,a=t.getHeight()/2;n.setShape({cx:e,cy:a});var r=n.shape.r;o.setShape({x:e-r,y:a-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},a.resize(),a}),Es({type:"highlight",event:"highlight",update:"highlight"},B),Es({type:"downplay",event:"downplay",update:"downplay"},B),Ps("light",mT),Ps("dark",yT);var rA={};Xs.prototype={constructor:Xs,add:function(t){return this._add=t,this},update:function(t){return this._update=t,this},remove:function(t){return this._remove=t,this},execute:function(){var t=this._old,e=this._new,i={},n=[],o=[];for(js(t,{},n,"_oldKeyGetter",this),js(e,i,o,"_newKeyGetter",this),a=0;ax[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},el(this)},yA._initDataFromProvider=function(t,e){if(!(t>=e)){for(var i,n=this._chunkSize,o=this._rawData,a=this._storage,r=this.dimensions,s=r.length,l=this._dimensionInfos,u=this._nameList,h=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;pM[1]&&(M[1]=S)}if(!o.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var T=r[i],A=a[T][y];if(A){I=A[x];var D=l[T].ordinalMeta;D&&D.categories.length&&(I=D.categories[I])}}var C=null==m?null:m.id;null==C&&null!=I&&(d[I]=d[I]||0,C=I,d[I]>0&&(C+="__ec__"+d[I]),d[I]++),null!=C&&(h[v]=C)}}!o.persistent&&o.clean&&o.clean(),this._rawCount=this._count=e,this._extent={},el(this)}},yA.count=function(){return this._count},yA.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){n=new e(i);for(o=0;o=0&&e=0&&ea&&(a=s)}return i=[o,a],this._extent[t]=i,i},yA.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},yA.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},yA.getCalculationInfo=function(t){return this._calculationInfo[t]},yA.setCalculationInfo=function(t,e){lA(t)?a(this._calculationInfo,t):this._calculationInfo[t]=e},yA.getSum=function(t){var e=0;if(this._storage[t])for(var i=0,n=this.count();i=this._rawCount||t<0)return-1;var e=this._indices,i=e[t];if(null!=i&&it))return a;o=a-1}}return-1},yA.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var o=Number.MAX_VALUE,a=-1,r=0,s=this.count();r=0&&a<0)&&(o=u,a=l,n.length=0),n.push(r))}return n},yA.getRawIndex=nl,yA.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i=l&&w<=u||isNaN(w))&&(a[r++]=c),c++;h=!0}else if(2===n){for(var d=this._storage[s],v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1],f=0;f=l&&w<=u||isNaN(w))&&(b>=y&&b<=x||isNaN(b))&&(a[r++]=c),c++}h=!0}}if(!h)if(1===n)for(m=0;m=l&&w<=u||isNaN(w))&&(a[r++]=M)}else for(m=0;mt[I][1])&&(S=!1)}S&&(a[r++]=this.getRawIndex(m))}return rb[1]&&(b[1]=w)}}}return o},yA.downSample=function(t,e,i,n){for(var o=sl(this,[t]),a=o._storage,r=[],s=Math.floor(1/e),l=a[t],u=this.count(),h=this._chunkSize,c=o._rawExtent[t],d=new($s(this))(u),f=0,p=0;pu-p&&(s=u-p,r.length=s);for(var g=0;gc[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=ol,o},yA.getItemModel=function(t){var e=this.hostModel;return new No(this.getRawDataItem(t),e,e&&e.ecModel)},yA.diff=function(t){var e=this;return new Xs(t?t.getIndices():[],this.getIndices(),function(e){return al(t,e)},function(t){return al(e,t)})},yA.getVisual=function(t){var e=this._visual;return e&&e[t]},yA.setVisual=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},yA.setLayout=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},yA.getLayout=function(t){return this._layout[t]},yA.getItemLayout=function(t){return this._itemLayouts[t]},yA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},yA.clearItemLayouts=function(){this._itemLayouts.length=0},yA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},yA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,lA(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},yA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var xA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};yA.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(xA,e)),this._graphicEls[t]=e},yA.getItemGraphicEl=function(t){return this._graphicEls[t]},yA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},yA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new vA(e,this.hostModel)}if(t._storage=this._storage,Qs(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?ol:nl,t},yA.wrapMethod=function(t,e){var i=this[t];"function"==typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(C(arguments)))})},yA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],yA.CHANGABLE_METHODS=["filterSelf","selectRange"];var _A=function(t,e){return e=e||{},hl(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};xl.prototype.parse=function(t){return t},xl.prototype.getSetting=function(t){return this._setting[t]},xl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},xl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},xl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},xl.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},xl.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},xl.prototype.getExtent=function(){return this._extent.slice()},xl.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},xl.prototype.isBlank=function(){return this._isBlank},xl.prototype.setBlank=function(t){this._isBlank=t},xl.prototype.getLabel=null,ji(xl),$i(xl,{registerWhenExtend:!0}),_l.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&f(i,bl);return new _l({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var wA=_l.prototype;wA.getOrdinal=function(t){return wl(this).get(t)},wA.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!=typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=wl(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var bA=xl.prototype,SA=xl.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new _l({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),bA.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return bA.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(bA.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:B,niceExtent:B});SA.create=function(){return new SA};var MA=Go,IA=Go,TA=xl.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),TA.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Ml(t)},getTicks:function(){return Al(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getLabel:function(t,e){if(null==t)return"";var i=e&&e.precision;return null==i?i=Ho(t)||0:"auto"===i&&(i=this._intervalPrecision),t=IA(t,i,!0),ta(t)},niceTicks:function(t,e,i){t=t||5;var n=this._extent,o=n[1]-n[0];if(isFinite(o)){o<0&&(o=-o,n.reverse());var a=Sl(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax?e[0]-=i/2:(e[1]+=i/2,e[0]-=i/2)}else e[1]=1;var n=e[1]-e[0];isFinite(n)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var o=this._interval;t.fixMin||(e[0]=IA(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=IA(Math.ceil(e[1]/o)*o))}});TA.create=function(){return new TA};var AA="__ec_stack_",DA="undefined"!=typeof Float32Array?Float32Array:Array,CA={seriesType:"bar",plan:$I(),reset:function(t){if(Rl(t)&&zl(t)){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),o=i.getOtherAxis(n),a=e.mapDimension(o.dim),r=e.mapDimension(n.dim),s=o.isHorizontal(),l=s?0:1,u=Ol(Pl([t]),n,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var n,h=new DA(2*t.count),c=[],d=[],f=0;null!=(n=t.next());)d[l]=e.get(a,n),d[1-l]=e.get(r,n),c=i.dataToPoint(d,null,c),h[f++]=c[0],h[f++]=c[1];e.setLayout({largePoints:h,barWidth:u,valueAxisStart:Bl(0,o),valueAxisHorizontal:s})}}}}},LA=TA.prototype,kA=Math.ceil,PA=Math.floor,NA=function(t,e,i,n){for(;i>>1;t[o][1]i&&(a=i);var r=EA.length,s=NA(EA,a,0,r),l=EA[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=$o(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(kA((n[0]-h)/u)*u+h),Math.round(PA((n[1]-h)/u)*u+h)];Tl(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Yo(t)}});d(["contain","normalize"],function(t){OA.prototype[t]=function(e){return LA[t].call(this,this.parse(e))}});var EA=[["hh:mm:ss",1e3],["hh:mm:ss",5e3],["hh:mm:ss",1e4],["hh:mm:ss",15e3],["hh:mm:ss",3e4],["hh:mm\nMM-dd",6e4],["hh:mm\nMM-dd",3e5],["hh:mm\nMM-dd",6e5],["hh:mm\nMM-dd",9e5],["hh:mm\nMM-dd",18e5],["hh:mm\nMM-dd",36e5],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",216e5],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",864e5],["MM-dd\nyyyy",1728e5],["MM-dd\nyyyy",2592e5],["MM-dd\nyyyy",3456e5],["MM-dd\nyyyy",432e6],["MM-dd\nyyyy",5184e5],["week",6048e5],["MM-dd\nyyyy",864e6],["week",12096e5],["week",18144e5],["month",26784e5],["week",36288e5],["month",53568e5],["week",6048e6],["quarter",8208e6],["month",107136e5],["month",13392e6],["half-year",16416e6],["month",214272e5],["month",26784e6],["year",32832e6]];OA.create=function(t){return new OA({useUTC:t.ecModel.get("useUTC")})};var RA=xl.prototype,zA=TA.prototype,BA=Ho,VA=Go,GA=Math.floor,FA=Math.ceil,WA=Math.pow,HA=Math.log,ZA=xl.extend({type:"log",base:10,$constructor:function(){xl.apply(this,arguments),this._originalScale=new TA},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return f(zA.getTicks.call(this),function(n){var o=Go(WA(this.base,n));return o=n===e[0]&&t.__fixMin?Vl(o,i[0]):o,o=n===e[1]&&t.__fixMax?Vl(o,i[1]):o},this)},getLabel:zA.getLabel,scale:function(t){return t=RA.scale.call(this,t),WA(this.base,t)},setExtent:function(t,e){var i=this.base;t=HA(t)/HA(i),e=HA(e)/HA(i),zA.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=RA.getExtent.call(this);e[0]=WA(t,e[0]),e[1]=WA(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Vl(e[0],n[0])),i.__fixMax&&(e[1]=Vl(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=HA(t[0])/HA(e),t[1]=HA(t[1])/HA(e),RA.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=qo(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[Go(FA(e[0]/n)*n),Go(GA(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){zA.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){ZA.prototype[t]=function(e){return e=HA(e)/HA(this.base),RA[t].call(this,e)}}),ZA.create=function(){return new ZA};var UA={getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getMax:function(t){var e=this.option,i=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=i&&"dataMax"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:B,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},XA=Un({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n+a),t.lineTo(i-o,n+a),t.closePath()}}),jA=Un({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n),t.lineTo(i,n+a),t.lineTo(i-o,n),t.closePath()}}),YA=Un({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,a=Math.max(o,e.height),r=o/2,s=r*r/(a-r),l=n-a+r+s,u=Math.asin(s/r),h=Math.cos(u)*r,c=Math.sin(u),d=Math.cos(u),f=.6*r,p=.7*r;t.moveTo(i-h,l+s),t.arc(i,l,r,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(i+h-c*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-h+c*f,l+s+d*f,i-h,l+s),t.closePath()}}),qA=Un({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,a=e.y,r=n/3*2;t.moveTo(o,a),t.lineTo(o+r,a+i),t.lineTo(o,a+i/4*3),t.lineTo(o-r,a+i),t.lineTo(o,a),t.closePath()}}),KA={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var a=Math.min(i,n);o.x=t,o.y=e,o.width=a,o.height=a},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},$A={};d({line:_M,rect:yM,roundRect:yM,square:yM,circle:sM,diamond:jA,pin:YA,arrow:qA,triangle:XA},function(t,e){$A[e]=new t});var JA=Un({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style;"pin"===this.shape.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,o=$A[n];"none"!==e.symbolType&&(o||(o=$A[n="rect"]),KA[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),QA={isDimensionStacked:pl,enableDataStack:fl,getStackedDimension:gl},tD=(Object.freeze||Object)({createList:function(t){return ml(t.getSource(),t)},getLayoutRect:ca,dataStack:QA,createScale:function(t,e){var i=e;No.isInstance(e)||h(i=new No(e),UA);var n=Hl(i);return n.setExtent(t[0],t[1]),Wl(n,i),n},mixinAxisModelCommonMethods:function(t){h(t,UA)},completeDimensions:hl,createDimensions:_A,createSymbol:Jl}),eD=1e-8;eu.prototype={constructor:eu,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],a=[],r=this.geometries,s=0;s0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&d(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var a=new eu(e.name,o,e.cp);return a.properties=e,a})},nD=Bi(),oD=[0,1],aD=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};aD.prototype={constructor:aD,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Zo(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,n=this.scale;return t=n.normalize(t),this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count()),Bo(t,oD,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count());var o=Bo(t,i,oD,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=au(this,e),n=f(i.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return xu(this,n,i.tickCategoryInterval,o,t.clamp),n},getViewLabels:function(){return ou(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return pu(this)}};var rD=iD,sD={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){sD[t]=aw[t]});var lD={};d(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){lD[t]=zM[t]}),YI.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});var uD=wu.prototype,hD=wu.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};uD._createSymbol=function(t,e,i,n,o){this.removeAll();var a=Jl(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:bu(n)}),a.drift=Su,this._symbolType=t,this.add(a)},uD.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},uD.getSymbolPath=function(){return this.childAt(0)},uD.getScale=function(){return this.childAt(0).scale},uD.highlight=function(){this.childAt(0).trigger("emphasis")},uD.downplay=function(){this.childAt(0).trigger("normal")},uD.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},uD.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},uD.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=hD(t,e),r=n!==this._symbolType;if(r){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(n,t,e,a,s)}else(l=this.childAt(0)).silent=!1,Io(l,{scale:bu(a)},o,e);if(this._updateCommon(t,e,a,i),r){var l=this.childAt(0),u=i&&i.fadeIn,h={scale:l.scale.slice()};u&&(h.style={opacity:l.style.opacity}),l.scale=[0,0],u&&(l.style.opacity=0),To(l,h,o,e)}this._seriesModel=o};var cD=["itemStyle"],dD=["emphasis","itemStyle"],fD=["label"],pD=["emphasis","label"];uD._updateCommon=function(t,e,i,n){var o=this.childAt(0),r=t.hostModel,s=t.getItemVisual(e,"color");"image"!==o.type&&o.useStyle({strokeNoScale:!0});var l=n&&n.itemStyle,u=n&&n.hoverItemStyle,h=n&&n.symbolRotate,c=n&&n.symbolOffset,d=n&&n.labelModel,f=n&&n.hoverLabelModel,p=n&&n.hoverAnimation,g=n&&n.cursorStyle;if(!n||t.hasItemOption){var m=n&&n.itemModel?n.itemModel:t.getItemModel(e);l=m.getModel(cD).getItemStyle(["color"]),u=m.getModel(dD).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(fD),f=m.getModel(pD),p=m.getShallow("hoverAnimation"),g=m.getShallow("cursor")}else u=a({},u);var v=o.style;o.attr("rotation",(h||0)*Math.PI/180||0),c&&o.attr("position",[Vo(c[0],i[0]),Vo(c[1],i[1])]),g&&o.attr("cursor",g),o.setColor(s,n&&n.symbolInnerColor),o.setStyle(l);var y=t.getItemVisual(e,"opacity");null!=y&&(v.opacity=y);var x=t.getItemVisual(e,"liftZ"),_=o.__z2Origin;null!=x?null==_&&(o.__z2Origin=o.z2,o.z2+=x):null!=_&&(o.z2=_,o.__z2Origin=null);var w=n&&n.useNameLabel;go(v,u,d,f,{labelFetcher:r,labelDataIndex:e,defaultText:function(e,i){return w?t.getName(e):_u(t,e)},isRectText:!0,autoColor:s}),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=u,fo(o),o.__symbolOriginalScale=bu(i),p&&r.isAnimationEnabled()&&o.on("mouseover",Mu).on("mouseout",Iu).on("emphasis",Tu).on("normal",Au)},uD.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,!(e&&e.keepLabel)&&(i.style.text=null),Io(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(wu,tb);var gD=Du.prototype;gD.updateData=function(t,e){e=Lu(e);var i=this.group,n=t.hostModel,o=this._data,a=this._symbolCtor,r=ku(t);o||i.removeAll(),t.diff(o).add(function(n){var o=t.getItemLayout(n);if(Cu(t,o,n,e)){var s=new a(t,n,r);s.attr("position",o),t.setItemGraphicEl(n,s),i.add(s)}}).update(function(s,l){var u=o.getItemGraphicEl(l),h=t.getItemLayout(s);Cu(t,h,s,e)?(u?(u.updateData(t,s,r),Io(u,{position:h},n)):(u=new a(t,s)).attr("position",h),i.add(u),t.setItemGraphicEl(s,u)):i.remove(u)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},gD.isPersistent=function(){return!0},gD.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},gD.incrementalPrepareUpdate=function(t){this._seriesScope=ku(t),this._data=null,this.group.removeAll()},gD.incrementalUpdate=function(t,e,i){i=Lu(i);for(var n=t.start;n0&&Ru(i[o-1]);o--);for(;n0&&Ru(i[a-1]);a--);for(;o=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;(r=new wu(o,a)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else Ar.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=zi(o,n);if(null!=a&&a>=0){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else Ar.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new MD({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new ID({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_updateAnimation:function(t,e,i,n,o,a){var r=this._polyline,s=this._polygon,l=t.hostModel,u=mD(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;o&&(h=Yu(u.current,i,o),c=Yu(u.stackedOnCurrent,i,o),d=Yu(u.next,i,o),f=Yu(u.stackedOnNext,i,o)),r.shape.__points=u.current,r.shape.points=h,Io(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),Io(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;me&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;ie[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},u(kD,aD);var PD={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},ND={};ND.categoryAxis=n({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},PD),ND.valueAxis=n({boundaryGap:[0,0],splitNumber:5},PD),ND.timeAxis=r({scale:!0,min:"dataMin",max:"dataMax"},ND.valueAxis),ND.logAxis=r({scale:!0,logBase:10},ND.valueAxis);var OD=["value","category","time","log"],ED=function(t,e,i,a){d(OD,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,o){var a=this.layoutMode,s=a?ga(e):{};n(e,o.getTheme().get(r+"Axis")),n(e,this.getDefaultOption()),e.type=i(t,e),a&&pa(e,s,a)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=_l.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:o([{},ND[r+"Axis"],a],!0)})}),lI.registerSubTypeDefaulter(t+"Axis",v(i,t))},RD=lI.extend({type:"cartesian2dAxis",axis:null,init:function(){RD.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){RD.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){RD.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});n(RD.prototype,UA);var zD={offset:0};ED("x",RD,th,zD),ED("y",RD,th,zD),lI.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var BD=ih.prototype;BD.type="grid",BD.axisPointerEnabled=!0,BD.getRect=function(){return this._rect},BD.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),d(i.x,function(t){Wl(t.scale,t.model)}),d(i.y,function(t){Wl(t.scale,t.model)});var n={};d(i.x,function(t){nh(i,"y",t,n)}),d(i.y,function(t){nh(i,"x",t,n)}),this.resize(this.model,e)},BD.resize=function(t,e,i){function n(){d(a,function(t){var e=t.isHorizontal(),i=e?[0,o.width]:[0,o.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),ah(t,e?o.x:o.y)})}var o=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;n(),!i&&t.get("containLabel")&&(d(a,function(t){if(!t.model.get("axisLabel.inside")){var e=jl(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");o[i]-=e[i]+n,"top"===t.position?o.y+=e.height+n:"left"===t.position&&(o.x+=e.width+n)}}}),n())},BD.getAxis=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},BD.getAxes=function(){return this._axesList.slice()},BD.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}w(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,o=this._coordsList;nu[1]?-1:1,c=["start"===o?u[0]-h*l:"end"===o?u[1]+h*l:(u[0]+u[1])/2,ph(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*GD/180);var f;ph(o)?n=HD(t.rotation,null!=d?d:t.rotation,r):(n=uh(t,o,d||0,u),null!=(f=t.axisNameAvailableWidth)&&(f=Math.abs(f/Math.sin(n.rotation)),!isFinite(f)&&(f=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},m=g.ellipsis,v=T(t.nameTruncateMaxWidth,g.maxWidth,f),y=null!=m&&null!=v?tI(i,v,p,m,{minChar:2,placeholder:g.placeholder}):i,x=e.get("tooltip",!0),_=e.mainType,w={componentType:_,name:i,$vars:["name"]};w[_+"Index"]=e.componentIndex;var b=new rM({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:hh(e),z2:1,tooltip:x&&x.show?a({content:i,formatter:function(){return i},formatterParams:w},x):null});mo(b.style,s,{text:y,textFont:p,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:n.textAlign,textVerticalAlign:n.textVerticalAlign}),e.get("triggerEvent")&&(b.eventData=lh(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},HD=FD.innerTextLayout=function(t,e,i){var n,o,a=Xo(e-t);return jo(a)?(o=i>0?"top":"bottom",n="center"):jo(a-GD)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=a>0&&a0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:o}},ZD=d,UD=v,XD=Ws({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&Sh(t),XD.superApply(this,"render",arguments),Dh(this,t,0,i,0,!0)},updateAxisPointer:function(t,e,i,n,o){Dh(this,t,0,i,0,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),XD.superApply(this,"remove",arguments)},dispose:function(t,e){Ch(this,e),XD.superApply(this,"dispose",arguments)}}),jD=[];XD.registerAxisPointerClass=function(t,e){jD[t]=e},XD.getAxisPointerClass=function(t){return t&&jD[t]};var YD=["axisLine","axisTickLabel","axisName"],qD=["splitArea","splitLine"],KD=XD.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,i,n){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new tb,this.group.add(this._axisGroup),t.get("show")){var a=t.getCoordSysModel(),r=Lh(a,t),s=new FD(t,r);d(YD,s.add,s),this._axisGroup.add(s.getGroup()),d(qD,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Lo(o,this._axisGroup,t),KD.superCall(this,"render",t,e,i,n)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),a=o.get("color");a=y(a)?a:[a];for(var s=e.coordinateSystem.getRect(),l=i.isHorizontal(),u=0,h=i.getTicksCoords({tickModel:n}),c=[],d=[],f=o.getLineStyle(),p=0;p1){var c;"string"==typeof o?c=DD[o]:"function"==typeof o&&(c=o),c&&t.setData(n.downSample(n.mapDimension(s.dim),1/h,c,CD))}}}}}("line"));var $D=YI.extend({type:"series.__base_bar__",getInitialData:function(t,e){return ml(this.getSource(),this)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(e.clampData(t)),n=this.getData(),o=n.getLayout("offset"),a=n.getLayout("size");return i[e.getBaseAxis().isHorizontal()?0:1]+=o+a/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod",itemStyle:{},emphasis:{}}});$D.extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect",getProgressive:function(){return!!this.get("large")&&this.get("progressive")},getProgressiveThreshold:function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t}});var JD=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),QD={getBarItemStyle:function(t){var e=JD(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},tC=["itemStyle","barBorderWidth"];a(No.prototype,QD),Zs({type:"bar",render:function(t,e,i){this._updateDrawMode(t);var n=t.get("coordinateSystem");return"cartesian2d"!==n&&"polar"!==n||(this._isLargeDraw?this._renderLarge(t,e,i):this._renderNormal(t,e,i)),this.group},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t,e,i){var n,o=this.group,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.getBaseAxis();"cartesian2d"===s.type?n=l.isHorizontal():"polar"===s.type&&(n="angle"===l.dim);var u=t.isAnimationEnabled()?t:null;a.diff(r).add(function(e){if(a.hasValue(e)){var i=a.getItemModel(e),r=iC[s.type](a,e,i),l=eC[s.type](a,e,i,r,n,u);a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,i,r,t,n,"polar"===s.type)}}).update(function(e,i){var l=r.getItemGraphicEl(i);if(a.hasValue(e)){var h=a.getItemModel(e),c=iC[s.type](a,e,h);l?Io(l,{shape:c},u,e):l=eC[s.type](a,e,h,c,n,u,!0),a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,h,c,t,n,"polar"===s.type)}else o.remove(l)}).remove(function(t){var e=r.getItemGraphicEl(t);"cartesian2d"===s.type?e&&Nh(t,u,e):e&&Oh(t,u,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),zh(t,this.group)},_incrementalRenderLarge:function(t,e){zh(e,this.group,!0)},dispose:B,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,i=this._data;t&&t.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(e){"sector"===e.type?Oh(e.dataIndex,t,e):Nh(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var eC={cartesian2d:function(t,e,i,n,o,r,s){var l=new yM({shape:a({},n)});if(r){var u=l.shape,h=o?"height":"width",c={};u[h]=0,c[h]=n[h],zM[s?"updateProps":"initProps"](l,{shape:c},r,e)}return l},polar:function(t,e,i,n,o,a,s){var l=n.startAngle0?1:-1,r=n.height>0?1:-1;return{x:n.x+a*o/2,y:n.y+r*o/2,width:n.width-a*o,height:n.height-r*o}},polar:function(t,e,i){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle}}},nC=Pn.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,o=this.__valueIdx,a=0;a0&&"scale"!==u){var d=o.getItemLayout(0),f=Math.max(i.getWidth(),i.getHeight())/2,p=m(r.removeClipPath,r);r.setClipPath(this._createClipPath(d.cx,d.cy,f,d.startAngle,d.clockwise,p,t))}else r.removeClipPath();this._data=o}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r){var s=new hM({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return To(s,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),s},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var lC=function(t,e){d(e,function(e){e.update="updateView",Es(e,function(i,n){var o={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name,i.dataIndex);var n=t.getData();n.each(function(e){var i=n.getName(e);o[i]=t.isSelected(i)||!1})}),{name:i.name,selected:o}})})},uC=function(t){return{getTargetSeries:function(e){var i={},n=R();return e.eachSeriesByType(t,function(t){t.__paletteScope=i,n.set(t.uid,t)}),n},reset:function(t,e){var i=t.getRawData(),n={},o=t.getData();o.each(function(t){var e=o.getRawIndex(t);n[e]=t}),i.each(function(e){var a=n[e],r=null!=a&&o.getItemVisual(a,"color",!0);if(r)i.setItemVisual(e,"color",r);else{var s=i.getItemModel(e).get("itemStyle.color")||t.getColorFromPalette(i.getName(e)||e+"",t.__paletteScope,i.count());i.setItemVisual(e,"color",s),null!=a&&o.setItemVisual(a,"color",s)}})}}},hC=function(t,e,i,n){var o,a,r=t.getData(),s=[],l=!1;r.each(function(i){var n,u,h,c,d=r.getItemLayout(i),f=r.getItemModel(i),p=f.getModel("label"),g=p.get("position")||f.get("emphasis.label.position"),m=f.getModel("labelLine"),v=m.get("length"),y=m.get("length2"),x=(d.startAngle+d.endAngle)/2,_=Math.cos(x),w=Math.sin(x);o=d.cx,a=d.cy;var b="inside"===g||"inner"===g;if("center"===g)n=d.cx,u=d.cy,c="center";else{var S=(b?(d.r+d.r0)/2*_:d.r*_)+o,M=(b?(d.r+d.r0)/2*w:d.r*w)+a;if(n=S+3*_,u=M+3*w,!b){var I=S+_*(v+e-d.r),T=M+w*(v+e-d.r),A=I+(_<0?-1:1)*y,D=T;n=A+(_<0?-5:5),u=D,h=[[S,M],[I,T],[A,D]]}c=b?"center":_>0?"left":"right"}var C=p.getFont(),L=p.get("rotate")?_<0?-x+Math.PI:-x:0,k=ke(t.getFormattedLabel(i,"normal")||r.getName(i),C,c,"top");l=!!L,d.label={x:n,y:u,position:g,height:k.height,len:v,len2:y,linePoints:h,textAlign:c,verticalAlign:"middle",rotation:L,inside:b},b||s.push(d.label)}),!l&&t.get("avoidLabelOverlap")&&Hh(s,o,a,e,i,n)},cC=2*Math.PI,dC=Math.PI/180,fC=function(t){return{seriesType:t,reset:function(t,e){var i=e.findComponents({mainType:"legend"});if(i&&i.length){var n=t.getData();n.filterSelf(function(t){for(var e=n.getName(t),o=0;o=0;s--){var l=2*s,u=n[l]-a/2,h=n[l+1]-r/2;if(t>=u&&e>=h&&t<=u+a&&e<=h+r)return s}return-1}}),gC=Uh.prototype;gC.isPersistent=function(){return!this._incremental},gC.updateData=function(t){this.group.removeAll();var e=new pC({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},gC.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var i=2*(t.endIndex-t.startIndex),n=4*t.startIndex*2;e=new Float32Array(e.buffer,n,i)}t.setShape("points",e)})}},gC.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},gC.incrementalUpdate=function(t,e){var i;this._incremental?(i=new pC,this._incremental.addDisplayable(i,!0)):((i=new pC({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(i,e,!!this._incremental)},gC._setCommon=function(t,e,i){var n=e.hostModel,o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.symbolProxy=Jl(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var a=t.shape.size[0]<4;t.useStyle(n.getModel("itemStyle").getItemStyle(a?["color","shadowBlur","shadowColor"]:["color"]));var r=e.getVisual("color");r&&t.setColor(r),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>=0&&(t.dataIndex=i+(t.startIndex||0))}))},gC.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},gC._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Zs({type:"scatter",render:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).updateData(n),this._finished=!0},incrementalPrepareRender:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).incrementalPrepareUpdate(n),this._finished=!1},incrementalRender:function(t,e,i){this._symbolDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData();if(this.group.dirty(),!this._finished||n.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var o=AD().reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_updateSymbolDraw:function(t,e){var i=this._symbolDraw,n=e.pipelineContext.large;return i&&n===this._isLargeDraw||(i&&i.remove(),i=this._symbolDraw=n?new Uh:new Du,this._isLargeDraw=n,this.group.removeAll()),this.group.add(i.group),i},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}}),Bs(TD("scatter","circle")),zs(AD("scatter")),u(Xh,aD),jh.prototype.getIndicatorAxes=function(){return this._indicatorAxes},jh.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},jh.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},jh.prototype.pointToData=function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=Math.sqrt(e*e+i*i);e/=n,i/=n;for(var o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;ln[0]&&isFinite(c)&&isFinite(n[0]))}else{r.getTicks().length-1>a&&(u=i(u));var d=Math.round((n[0]+n[1])/2/u)*u,f=Math.round(a/2);r.setExtent(Go(d-f*u),Go(d+(a-f)*u)),r.setInterval(u)}})},jh.dimensions=[],jh.create=function(t,e){var i=[];return t.eachComponent("radar",function(n){var o=new jh(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},Fa.register("radar",jh);var mC=ND.valueAxis,vC=(Fs({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),o=this.get("scale"),s=this.get("axisLine"),l=this.get("axisTick"),u=this.get("axisLabel"),h=this.get("name"),c=this.get("name.show"),d=this.get("name.formatter"),p=this.get("nameGap"),g=this.get("triggerEvent"),m=f(this.get("indicator")||[],function(f){null!=f.max&&f.max>0&&!f.min?f.min=0:null!=f.min&&f.min<0&&!f.max&&(f.max=0);var m=h;if(null!=f.color&&(m=r({color:f.color},h)),f=n(i(f),{boundaryGap:t,splitNumber:e,scale:o,axisLine:s,axisTick:l,axisLabel:u,name:f.text,nameLocation:"end",nameGap:p,nameTextStyle:m,triggerEvent:g},!1),c||(f.name=""),"string"==typeof d){var v=f.name;f.name=d.replace("{value}",null!=v?v:"")}else"function"==typeof d&&(f.name=d(f.name,f));var y=a(new No(f,null,this.ecModel),UA);return y.mainType="radar",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return m}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:n({lineStyle:{color:"#bbb"}},mC.axisLine),axisLabel:Yh(mC.axisLabel,!1),axisTick:Yh(mC.axisTick,!1),splitLine:Yh(mC.splitLine,!0),splitArea:Yh(mC.splitArea,!0),indicator:[]}}),["axisLine","axisTickLabel","axisName"]);Ws({type:"radar",render:function(t,e,i){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem;d(f(e.getIndicatorAxes(),function(t){return new FD(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){d(vC,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){function e(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}var i=t.coordinateSystem,n=i.getIndicatorAxes();if(n.length){var o=t.get("shape"),a=t.getModel("splitLine"),s=t.getModel("splitArea"),l=a.getModel("lineStyle"),u=s.getModel("areaStyle"),h=a.get("show"),c=s.get("show"),p=l.get("color"),g=u.get("color");p=y(p)?p:[p],g=y(g)?g:[g];var m=[],v=[];if("circle"===o)for(var x=n[0].getTicksCoords(),_=i.cx,w=i.cy,b=0;b"+f(i,function(i,n){var o=e.get(e.mapDimension(i.dim),t);return ia(i.name+" : "+o)}).join("
")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Zs({type:"radar",render:function(t,e,n){function o(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=qh(t.getItemVisual(e,"symbolSize")),a=Jl(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function a(e,i,n,a,r,s){n.removeAll();for(var l=0;l"+ia(n+" : "+i)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),i=this.coordinateSystem,n=i.getRegion(e);return n&&i.dataToPoint(n.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}}}}),aC);var EC="\0_ec_interaction_mutex";Es({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(oc,fw);var RC={axisPointer:1,tooltip:1,brush:1};xc.prototype={constructor:xc,draw:function(t,e,i,n,o){var a="geo"===t.mainType,r=t.getData&&t.getData();a&&e.eachComponent({mainType:"series",subType:"map"},function(e){r||e.getHostGeoModel()!==t||(r=e.getData())});var s=t.coordinateSystem;this._updateBackground(s);var l=this._regionsGroup,u=this.group,h=s.scale,c={position:s.position,scale:h};!l.childAt(0)||o?u.attr(c):Io(u,c,t),l.removeAll();var f=["itemStyle"],p=["emphasis","itemStyle"],g=["label"],m=["emphasis","label"],v=R();d(s.regions,function(e){var i=v.get(e.name)||v.set(e.name,new tb),n=new MM({shape:{paths:[]}});i.add(n);var o,s=(C=t.getRegionModel(e.name)||t).getModel(f),u=C.getModel(p),c=mc(s),y=mc(u),x=C.getModel(g),_=C.getModel(m);if(r){o=r.indexOfName(e.name);var w=r.getItemVisual(o,"color",!0);w&&(c.fill=w)}d(e.geometries,function(t){if("polygon"===t.type){n.shape.paths.push(new pM({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)n.shape.paths.push(new pM({shape:{points:t.interiors[e]}}))}}),n.setStyle(c),n.style.strokeNoScale=!0,n.culling=!0;var b=x.get("show"),S=_.get("show"),M=r&&isNaN(r.get(r.mapDimension("value"),o)),I=r&&r.getItemLayout(o);if(a||M&&(b||S)||I&&I.showLabel){var T,A=a?e.name:o;(!r||o>=0)&&(T=t);var D=new rM({position:e.center.slice(),scale:[1/h[0],1/h[1]],z2:10,silent:!0});go(D.style,D.hoverStyle={},x,_,{labelFetcher:T,labelDataIndex:A,defaultText:e.name,useInsideStyle:!1},{textAlign:"center",textVerticalAlign:"middle"}),i.add(D)}if(r)r.setItemGraphicEl(o,i);else{var C=t.getRegionModel(e.name);n.eventData={componentType:"geo",componentIndex:t.componentIndex,geoIndex:t.componentIndex,name:e.name,region:C&&C.option||{}}}(i.__regions||(i.__regions=[])).push(e),fo(i,y,{hoverSilentOnTouch:!!t.get("selectedMode")}),l.add(i)}),this._updateController(t,e,i),vc(this,t,l,i,n),yc(t,l)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&OC.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&d(OC.makeGraphic(e,this.uid),function(t){this._backgroundGroup.add(t)},this),this._mapName=e},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:l};return e[l+"Id"]=t.id,e}var o=t.coordinateSystem,r=this._controller,s=this._controllerHost;s.zoomLimit=t.get("scaleLimit"),s.zoom=o.getZoom(),r.enable(t.get("roam")||!1);var l=t.mainType;r.off("pan").on("pan",function(t){this._mouseDownFlag=!1,fc(s,t.dx,t.dy),i.dispatchAction(a(n(),{dx:t.dx,dy:t.dy}))},this),r.off("zoom").on("zoom",function(t){if(this._mouseDownFlag=!1,pc(s,t.scale,t.originX,t.originY),i.dispatchAction(a(n(),{zoom:t.scale,originX:t.originX,originY:t.originY})),this._updateGroup){var e=this.group.scale;this._regionsGroup.traverse(function(t){"text"===t.type&&t.attr("scale",[1/e[0],1/e[1]])})}},this),r.setPointerChecker(function(e,n,a){return o.getViewRectAfterRoam().contain(n,a)&&!gc(e,i,t)})}};var zC="__seriesMapHighDown",BC="__seriesMapCallKey";Zs({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new xc(i,!0);o.add(a.group),a.draw(t,e,i,this,n),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,e,i){var n=t.originalData,o=this.group;n.each(n.mapDimension("value"),function(e,i){if(!isNaN(e)){var r=n.getItemLayout(i);if(r&&r.point){var s=r.point,l=r.offset,u=new sM({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:8+(l?0:NM+1)});if(!l){var h=t.mainSeries.getData(),c=n.getName(i),d=h.indexOfName(c),f=n.getItemModel(i),p=f.getModel("label"),g=f.getModel("emphasis.label"),m=h.getItemGraphicEl(d),y=A(t.getFormattedLabel(d,"normal"),c),x=A(t.getFormattedLabel(d,"emphasis"),y),_=m[zC],w=Math.random();if(!_){_=m[zC]={};var b=v(_c,!0),S=v(_c,!1);m.on("mouseover",b).on("mouseout",S).on("emphasis",b).on("normal",S)}m[BC]=w,a(_,{recordVersion:w,circle:u,labelModel:p,hoverLabelModel:g,emphasisText:x,normalText:y}),wc(_,!1)}o.add(u)}}})}}),Es({type:"geoRoam",event:"geoRoam",update:"updateTransform"},function(t,e){var i=t.componentType||"series";e.eachComponent({mainType:i,query:t},function(e){var n=e.coordinateSystem;if("geo"===n.type){var o=bc(n,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(o.center),e.setZoom&&e.setZoom(o.zoom),"series"===i&&d(e.seriesGroup,function(t){t.setCenter(o.center),t.setZoom(o.zoom)})}})});var VC=Q;h(Sc,Tw),Mc.prototype={constructor:Mc,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new de(t,e,i,n),this._rect},getBoundingRect:function(){return this._rect},setViewRect:function(t,e,i,n){this.transformTo(t,e,i,n),this._viewRect=new de(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._rawTransformable;a.transform=o.calculateTransform(new de(t,e,i,n)),a.decomposeTransform(),this._updateTransform()},setCenter:function(t){t&&(this._center=t,this._updateCenterAndZoom())},setZoom:function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},getDefaultCenter:function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=Q([],n,t),i=Q([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransformable,e=this._rawTransformable;e.parent=t,t.updateTransform(),e.updateTransform(),wt(this.transform||(this.transform=[]),e.transform||xt()),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],Tt(this.invTransform,this.transform),this.decomposeTransform()},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},dataToPoint:function(t,e,i){var n=e?this._rawTransform:this.transform;return i=i||[],n?VC(i,t,n):G(i,t)},pointToData:function(t){var e=this.invTransform;return e?VC([],t,e):[t[0],t[1]]},convertToPixel:v(Ic,"dataToPoint"),convertFromPixel:v(Ic,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},h(Mc,Tw),Tc.prototype={constructor:Tc,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;ie&&(e=n.height)}this.height=e+1},getNodeById:function(t){if(this.getId()===t)return this;for(var e=0,i=this.children,n=i.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this.hostTree.data.getItemLayout(this.dataIndex)},getModel:function(t){if(!(this.dataIndex<0)){var e,i=this.hostTree,n=i.data.getItemModel(this.dataIndex),o=this.getLevelModel();return o||0!==this.children.length&&(0===this.children.length||!1!==this.isExpand)||(e=this.getLeavesModel()),n.getModel(t,(o||e||i.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},getLeavesModel:function(){return this.hostTree.leavesModel},setVisual:function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this.hostTree.data.getItemVisual(this.dataIndex,t,e)},getRawIndex:function(){return this.hostTree.data.getRawIndex(this.dataIndex)},getId:function(){return this.hostTree.data.getId(this.dataIndex)},isAncestorOf:function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},isDescendantOf:function(t){return t!==this&&t.isAncestorOf(this)}},Vc.prototype={constructor:Vc,type:"tree",eachNode:function(t,e,i){this.root.eachNode(t,e,i)},getNodeByDataIndex:function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},getNodeByName:function(t){return this.root.getNodeByName(t)},update:function(){for(var t=this.data,e=this._nodes,i=0,n=e.length;ia&&(a=t.depth)});var r=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:a;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=r}),o.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),o=n.getValue(),a=n.name;n&&n!==i;)a=n.parentNode.name+"."+a,n=n.parentNode;return ia(a+(isNaN(o)||null==o?"":" : "+o))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}}),Zs({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new tb,this._controller=new oc(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(t,e,i,n){var o=t.getData(),a=t.layoutInfo,r=this._mainGroup,s=t.get("layout");"radial"===s?r.attr("position",[a.x+a.width/2,a.y+a.height/2]):r.attr("position",[a.x,a.y]),this._updateViewCoordSys(t),this._updateController(t,e,i);var l=this._data,u={expandAndCollapse:t.get("expandAndCollapse"),layout:s,orient:t.getOrient(),curvature:t.get("lineStyle.curveness"),symbolRotate:t.get("symbolRotate"),symbolOffset:t.get("symbolOffset"),hoverAnimation:t.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};o.diff(l).add(function(e){td(o,e)&&id(o,e,null,r,t,u)}).update(function(e,i){var n=l.getItemGraphicEl(i);td(o,e)?id(o,e,n,r,t,u):n&&nd(l,i,n,r,t,u)}).remove(function(e){var i=l.getItemGraphicEl(e);i&&nd(l,e,i,r,t,u)}).execute(),this._nodeScaleRatio=t.get("nodeScaleRatio"),this._updateNodeAndLinkScale(t),!0===u.expandAndCollapse&&o.eachItemGraphicEl(function(e,n){e.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:t.id,dataIndex:n})})}),this._data=o},_updateViewCoordSys:function(t){var e=t.getData(),i=[];e.each(function(t){var n=e.getItemLayout(t);!n||isNaN(n.x)||isNaN(n.y)||i.push([+n.x,+n.y])});var n=[],o=[];fn(i,n,o),o[0]-n[0]==0&&(o[0]+=1,n[0]-=1),o[1]-n[1]==0&&(o[1]+=1,n[1]-=1);var a=t.coordinateSystem=new Mc;a.zoomLimit=t.get("scaleLimit"),a.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1]),a.setCenter(t.get("center")),a.setZoom(t.get("zoom")),this.group.attr({position:a.position,scale:a.scale}),this._viewCoordSys=a},_updateController:function(t,e,i){var n=this._controller,o=this._controllerHost,a=this.group;n.setPointerChecker(function(e,n,o){var r=a.getBoundingRect();return r.applyTransform(a.transform),r.contain(n,o)&&!gc(e,i,t)}),n.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),n.off("pan").off("zoom").on("pan",function(e){fc(o,e.dx,e.dy),i.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})},this).on("zoom",function(e){pc(o,e.scale,e.originX,e.originY),i.dispatchAction({seriesId:t.id,type:"treeRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),this._updateNodeAndLinkScale(t)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),Es({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=t.dataIndex,n=e.getData().tree.getNodeByDataIndex(i);n.isExpand=!n.isExpand})}),Es({type:"treeRoam",event:"treeRoam",update:"none"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=bc(e.coordinateSystem,t);e.setCenter&&e.setCenter(i.center),e.setZoom&&e.setZoom(i.zoom)})});Bs(TD("tree","circle")),zs(function(t,e){t.eachSeriesByType("tree",function(t){sd(t,e)})}),YI.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/0,left:"center",top:"middle",right:null,bottom:null,width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",borderColor:"rgba(255,255,255,0.7)",borderWidth:1,shadowColor:"rgba(150,150,150,1)",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:"#fff"}},emphasis:{textStyle:{}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",ellipsis:!0},upperLabel:{show:!1,position:[0,"50%"],height:20,color:"#fff",ellipsis:!0,verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],color:"#fff",ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i={name:t.name,children:t.data};dd(i);var n=t.levels||[];n=t.levels=fd(n,e);var o={};return o.levels=n,Vc.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=ta(y(i)?i[0]:i);return ia(e.getName(t)+": "+n)},getDataParams:function(t){var e=YI.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=cd(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},a(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=R(),this._idIndexMapCount=0);var i=e.get(t);return null==i&&e.set(t,i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var UC=5;pd.prototype={constructor:pd,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),da(a,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,o){for(var a=0,s=e.emptyItemWidth,l=t.get("breadcrumb.height"),u=ha(e.pos,e.box),h=e.totalWidth,c=e.renderList,d=c.length-1;d>=0;d--){var f=c[d],p=f.node,g=f.width,m=f.text;h>u.width&&(h-=g-s,g=s,m=null);var y=new pM({shape:{points:gd(a,0,g,l,d===c.length-1,0===d)},style:r(i.getItemStyle(),{lineJoin:"bevel",text:m,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:v(o,p)});this.group.add(y),md(y,t,p),a+=g+8}},remove:function(){this.group.removeAll()}};var XC=m,jC=tb,YC=yM,qC=d,KC=["label"],$C=["emphasis","label"],JC=["upperLabel"],QC=["emphasis","upperLabel"],tL=10,eL=1,iL=2,nL=Qb([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),oL=function(t){var e=nL(t);return e.stroke=e.fill=e.lineWidth=null,e};Zs({type:"treemap",init:function(t,e){this._containerGroup,this._storage={nodeGroup:[],background:[],content:[]},this._oldTree,this._breadcrumb,this._controller,this._state="ready"},render:function(t,e,i,n){if(!(l(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var o=ld(n,["treemapZoomToNode","treemapRootToNode"],t),a=n&&n.type,r=t.layoutInfo,s=!this._oldTree,u=this._storage,h="treemapRootToNode"===a&&o&&u?{rootNodeGroup:u.nodeGroup[o.node.getRawIndex()],direction:n.direction}:null,c=this._giveContainerGroup(r),d=this._doRender(c,t,h);s||a&&"treemapZoomToNode"!==a&&"treemapRootToNode"!==a?d.renderFinally():this._doAnimation(c,d,t,h),this._resetController(i),this._renderBreadcrumb(t,i,o)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new jC,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function n(t,e,i,o,a){function r(t){return t.getId()}function s(r,s){var l=null!=r?t[r]:null,u=null!=s?e[s]:null,c=h(l,u,i,a);c&&n(l&&l.viewChildren||[],u&&u.viewChildren||[],c,o,a+1)}o?(e=t,qC(t,function(t,e){!t.isRemoved()&&s(e,e)})):new Xs(e,t,r,r).add(s).update(s).remove(v(s,null)).execute()}var o=e.getData().tree,a=this._oldTree,r={nodeGroup:[],background:[],content:[]},s={nodeGroup:[],background:[],content:[]},l=this._storage,u=[],h=v(yd,e,s,l,i,r,u);n(o.root?[o.root]:[],a&&a.root?[a.root]:[],t,o===a||!a,0);var c=function(t){var e={nodeGroup:[],background:[],content:[]};return t&&qC(t,function(t,i){var n=e[i];qC(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}(l);return this._oldTree=o,this._storage=s,{lastsForAnimation:r,willDeleteEls:c,renderFinally:function(){qC(c,function(t){qC(t,function(t){t.parent&&t.parent.remove(t)})}),qC(u,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),r=i.get("animationEasing"),s=vd();qC(e.willDeleteEls,function(t,e){qC(t,function(t,i){if(!t.invisible){var a,l=t.parent;if(n&&"drillDown"===n.direction)a=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,h=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,h=l.__tmNodeHeight/2),a="nodeGroup"===e?{position:[u,h],style:{opacity:0}}:{shape:{x:u,y:h,width:0,height:0},style:{opacity:0}}}a&&s.add(t,a,o,r)}})}),qC(this._storage,function(t,i){qC(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=a({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,r))})},this),this._state="animating",s.done(XC(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new oc(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",XC(this._onPan,this)),e.on("zoom",XC(this._onZoom,this)));var i=new de(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,n){return i.contain(e,n)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t){if("animating"!==this._state&&(Math.abs(t.dx)>3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var i=e.getLayout();if(!i)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:i.x+t.dx,y:i.y+t.dy,width:i.width,height:i.height}})}},_onZoom:function(t){var e=t.originX,i=t.originY;if("animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new de(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=xt();St(s,s,[-e,-i]),It(s,s,[t.scale,t.scale]),St(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&window.open(a,r)}}}}},this)},_renderBreadcrumb:function(t,e,i){i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(i={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new pd(this.group))).render(t,e,i.node,XC(function(e){"animating"!==this._state&&(hd(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))},this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(t,e){var i;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var a=o.transformCoordToLocal(t,e),r=o.shape;if(!(r.x<=a[0]&&a[0]<=r.x+r.width&&r.y<=a[1]&&a[1]<=r.y+r.height))return!1;i={node:n,offsetX:a[0],offsetY:a[1]}}},this),i}});for(var aL=["treemapZoomToNode","treemapRender","treemapMove"],rL=0;rL=0&&t.call(e,i[o],o)},TL.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},TL.breadthFirstTraverse=function(t,e,i,n){if(Jd.isInstance(e)||(e=this._nodesMap[$d(e)]),e){for(var o="out"===i?"outEdges":"in"===i?"inEdges":"edges",a=0;a=0&&i.node2.dataIndex>=0});for(var o=0,a=n.length;o=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}};h(Jd,AL("hostGraph","data")),h(Qd,AL("hostGraph","edgeData")),IL.Node=Jd,IL.Edge=Qd,Yi(Jd),Yi(Qd);var DL=function(t,e,i,n,o){for(var a=new IL(n),r=0;r "+f)),h++)}var p,g=i.get("coordinateSystem");if("cartesian2d"===g||"polar"===g)p=ml(t,i);else{var m=Fa.get(g),v=m&&"view"!==m.type?m.dimensions||[]:[];l(v,"value")<0&&v.concat(["value"]);var y=_A(t,{coordDimensions:v});(p=new vA(y,i)).initData(t)}var x=new vA(["value"],i);return x.initData(u,s),o&&o(p,x),kc({mainData:p,struct:a,structAttr:"graph",datas:{node:p,edge:x},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a},CL=Hs({type:"series.graph",init:function(t){CL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){CL.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){CL.superApply(this,"mergeDefaultAndTheme",arguments),Ci(t,["edgeLabel"],["show"])},getInitialData:function(t,e){var i=t.edges||t.links||[],n=t.data||t.nodes||[],o=this;if(n&&i)return DL(n,i,this,!0,function(t,i){function n(t){return(t=this.parsePath(t))&&"label"===t[0]?r:t&&"emphasis"===t[0]&&"label"===t[1]?l:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var a=o.getModel("edgeLabel"),r=new No({label:a.option},a.parentModel,e),s=o.getModel("emphasis.edgeLabel"),l=new No({emphasis:{label:s.option}},s.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),t})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(t,e,i){if("edge"===i){var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),s=n.getName(a.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=ia(l.join(" > ")),o.value&&(l+=" : "+ia(o.value)),l}return CL.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=f(this.option.categories||[],function(t){return null!=t.value?t:a({value:0},t)}),e=new vA(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return CL.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle"},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{label:{show:!0}}}}),LL=_M.prototype,kL=bM.prototype,PL=Un({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){(tf(e)?LL:kL).buildPath(t,e)},pointAt:function(t){return tf(this.shape)?LL.pointAt.call(this,t):kL.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=tf(e)?[e.x2-e.x1,e.y2-e.y1]:kL.tangentAt.call(this,t);return q(i,i)}}),NL=["fromSymbol","toSymbol"],OL=rf.prototype;OL.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,a=this.parent;a;)a.scale&&(o/=a.scale[0]),a=a.parent;var r=t.childOfName("line");if(this.__dirty||r.__dirty){var s=r.shape.percent,l=r.pointAt(0),u=r.pointAt(s),h=U([],u,l);if(q(h,h),e&&(e.attr("position",l),c=r.tangentAt(0),e.attr("rotation",Math.PI/2-Math.atan2(c[1],c[0])),e.attr("scale",[o*s,o*s])),i){i.attr("position",u);var c=r.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(c[1],c[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var d,f,p,g=5*o;if("end"===n.__position)d=[h[0]*g+u[0],h[1]*g+u[1]],f=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var m=s/2,v=[(c=r.tangentAt(m))[1],-c[0]],y=r.pointAt(m);v[1]>0&&(v[0]=-v[0],v[1]=-v[1]),d=[y[0]+v[0]*g,y[1]+v[1]*g],f="center",p="bottom";var x=-Math.atan2(c[1],c[0]);u[0].8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||p,textAlign:n.__textAlign||f},position:d,scale:[o,o]})}}}},OL._createLine=function(t,e,i){var n=t.hostModel,o=of(t.getItemLayout(e));o.shape.percent=0,To(o,{shape:{percent:1}},n,e),this.add(o);var a=new rM({name:"label",lineLabelOriginalOpacity:1});this.add(a),d(NL,function(i){var n=nf(i,t,e);this.add(n),this[ef(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},OL.updateData=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=t.getItemLayout(e),r={shape:{}};af(r.shape,a),Io(o,r,n,e),d(NL,function(i){var n=t.getItemVisual(e,i),o=ef(i);if(this[o]!==n){this.remove(this.childOfName(i));var a=nf(i,t,e);this.add(a)}this[o]=n},this),this._updateCommonStl(t,e,i)},OL._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,s=i&&i.hoverLineStyle,l=i&&i.labelModel,u=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var h=t.getItemModel(e);a=h.getModel("lineStyle").getLineStyle(),s=h.getModel("emphasis.lineStyle").getLineStyle(),l=h.getModel("label"),u=h.getModel("emphasis.label")}var c=t.getItemVisual(e,"color"),f=D(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(r({strokeNoScale:!0,fill:"none",stroke:c,opacity:f},a)),o.hoverStyle=s,d(NL,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:f}))},this);var p,g,m=l.getShallow("show"),v=u.getShallow("show"),y=this.childOfName("label");if((m||v)&&(p=c||"#000",null==(g=n.getFormattedLabel(e,"normal",t.dataType)))){var x=n.getRawValue(e);g=null==x?t.getName(e):isFinite(x)?Go(x):x}var _=m?g:null,w=v?A(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(mo(y.style,l,{text:_},{autoColor:p}),y.__textAlign=b.textAlign,y.__verticalAlign=b.textVerticalAlign,y.__position=l.get("position")||"middle"),y.hoverStyle=null!=w?{text:w,textFill:u.getTextColor(!0),fontStyle:u.getShallow("fontStyle"),fontWeight:u.getShallow("fontWeight"),fontSize:u.getShallow("fontSize"),fontFamily:u.getShallow("fontFamily")}:{text:null},y.ignore=!m&&!v,fo(this)},OL.highlight=function(){this.trigger("emphasis")},OL.downplay=function(){this.trigger("normal")},OL.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},OL.setLinePoints=function(t){var e=this.childOfName("line");af(e.shape,t),e.dirty()},u(rf,tb);var EL=sf.prototype;EL.isPersistent=function(){return!0},EL.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var o=hf(t);t.diff(n).add(function(i){lf(e,t,i,o)}).update(function(i,a){uf(e,n,t,a,i,o)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},EL.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},EL.incrementalPrepareUpdate=function(t){this._seriesScope=hf(t),this._lineData=null,this.group.removeAll()},EL.incrementalUpdate=function(t,e){for(var i=t.start;i=o/3?1:2),l=e.y-n(r)*a*(a>=o/3?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}}),YL=2*Math.PI,qL=(Ar.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=Sf(t,i);this._renderMain(t,e,i,n,o)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var a=this.group,r=t.getModel("axisLine").getModel("lineStyle"),s=t.get("clockwise"),l=-t.get("startAngle")/180*Math.PI,u=-t.get("endAngle")/180*Math.PI,h=(u-l)%YL,c=l,d=r.get("width"),f=0;f=t&&(0===e?0:n[e-1][0]).4?"bottom":"middle",textAlign:A<-.4?"left":A>.4?"right":"center"},{autoColor:P}),silent:!0}))}if(g.get("show")&&T!==v){for(var N=0;N<=y;N++){var A=Math.cos(w),D=Math.sin(w),O=new _M({shape:{x1:A*c+u,y1:D*c+h,x2:A*(c-_)+u,y2:D*(c-_)+h},silent:!0,style:I});"auto"===I.stroke&&O.setStyle({stroke:n((T+N/y)/v)}),l.add(O),w+=S}w-=S}else w+=b}},_renderPointer:function(t,e,i,n,o,a,r,s){var l=this.group,u=this._data;if(t.get("pointer.show")){var h=[+t.get("min"),+t.get("max")],c=[a,r],d=t.getData(),f=d.mapDimension("value");d.diff(u).add(function(e){var i=new jL({shape:{angle:a}});To(i,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(i),d.setItemGraphicEl(e,i)}).update(function(e,i){var n=u.getItemGraphicEl(i);Io(n,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(n),d.setItemGraphicEl(e,n)}).remove(function(t){var e=u.getItemGraphicEl(t);l.remove(e)}).execute(),d.eachItemGraphicEl(function(t,e){var i=d.getItemModel(e),a=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:Vo(a.get("width"),o.r),r:Vo(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(Bo(d.get(f,e),h,[0,1],!0))),fo(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=d}else u&&u.eachItemGraphicEl(function(t){l.remove(t)})},_renderTitle:function(t,e,i,n,o){var a=t.getData(),r=a.mapDimension("value"),s=t.getModel("title");if(s.get("show")){var l=s.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(Bo(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},s,{x:u,y:h,text:a.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:f,forceRich:!0})}))}},_renderDetail:function(t,e,i,n,o){var a=t.getModel("detail"),r=+t.get("min"),s=+t.get("max");if(a.get("show")){var l=a.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=Vo(a.get("width"),o.r),d=Vo(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(Bo(p,[r,s],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},a,{x:u,y:h,text:Mf(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Hs({type:"series.funnel",init:function(t){qL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return oC(this,["value"])},_defaultLabelLine:function(t){Ci(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},getDataParams:function(t){var e=this.getData(),i=qL.superCall(this,"getDataParams",t),n=e.mapDimension("value"),o=e.getSum(n);return i.percent=o?+(e.get(n,t)/o*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}})),KL=If.prototype,$L=["itemStyle","opacity"];KL.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e),l=t.getItemModel(e).get($L);l=null==l?1:l,n.useStyle({}),i?(n.setShape({points:s.points}),n.setStyle({opacity:0}),To(n,{style:{opacity:l}},o,e)):Io(n,{style:{opacity:l},shape:{points:s.points}},o,e);var u=a.getModel("itemStyle"),h=t.getItemVisual(e,"color");n.setStyle(r({lineJoin:"round",fill:h},u.getItemStyle(["opacity"]))),n.hoverStyle=u.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),fo(this)},KL._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,a=t.getItemModel(e),r=t.getItemLayout(e).label,s=t.getItemVisual(e,"color");Io(i,{shape:{points:r.linePoints||r.linePoints}},o,e),Io(n,{style:{x:r.x,y:r.y}},o,e),n.attr({rotation:r.rotation,origin:[r.x,r.y],z2:10});var l=a.getModel("label"),u=a.getModel("emphasis.label"),h=a.getModel("labelLine"),c=a.getModel("emphasis.labelLine"),s=t.getItemVisual(e,"color");go(n.style,n.hoverStyle={},l,u,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:s,useInsideStyle:!!r.inside},{textAlign:r.textAlign,textVerticalAlign:r.verticalAlign}),n.ignore=n.normalIgnore=!l.get("show"),n.hoverIgnore=!u.get("show"),i.ignore=i.normalIgnore=!h.get("show"),i.hoverIgnore=!c.get("show"),i.setStyle({stroke:s}),i.setStyle(h.getModel("lineStyle").getLineStyle()),i.hoverStyle=c.getModel("lineStyle").getLineStyle()},u(If,tb);Ar.extend({type:"funnel",render:function(t,e,i){var n=t.getData(),o=this._data,a=this.group;n.diff(o).add(function(t){var e=new If(n,t);n.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var i=o.getItemGraphicEl(e);i.updateData(n,t),a.add(i),n.setItemGraphicEl(t,i)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=n},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});Bs(uC("funnel")),zs(function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),n=i.mapDimension("value"),o=t.get("sort"),a=Tf(t,e),r=Af(i,o),s=[Vo(t.get("minSize"),a.width),Vo(t.get("maxSize"),a.width)],l=i.getDataExtent(n),u=t.get("min"),h=t.get("max");null==u&&(u=Math.min(l[0],0)),null==h&&(h=l[1]);var c=t.get("funnelAlign"),d=t.get("gap"),f=(a.height-d*(i.count()-1))/i.count(),p=a.y,g=function(t,e){var o,r=Bo(i.get(n,t)||0,[u,h],s,!0);switch(c){case"left":o=a.x;break;case"center":o=a.x+(a.width-r)/2;break;case"right":o=a.x+a.width-r}return[[o,e],[o+r,e]]};"ascending"===o&&(f=-f,d=-d,p+=a.height,r=r.reverse());for(var m=0;ma&&(e[1-n]=e[n]+h.sign*a),e},tk=d,ek=Math.min,ik=Math.max,nk=Math.floor,ok=Math.ceil,ak=Go,rk=Math.PI;Nf.prototype={type:"parallel",constructor:Nf,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;tk(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),r=this._axesMap.set(t,new JL(t,Hl(a),[0,0],a.get("type"),n)),s="category"===r.type;r.onBand=s&&a.get("boundaryGap"),r.inverse=a.get("inverse"),a.axis=r,r.model=a,r.coordinateSystem=a.coordinateSystem=this},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},containPoint:function(t){var e=this._makeLayoutInfo(),i=e.axisBase,n=e.layoutBase,o=e.pixelDimIndex,a=t[1-o],r=t[o];return a>=i&&a<=i+e.axisLength&&r>=n&&r<=n+e.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();tk(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,n.mapDimension(t)),Wl(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],o=["width","height"],a=e.get("layout"),r="horizontal"===a?0:1,s=i[o[r]],l=[0,s],u=this.dimensions.length,h=Of(e.get("axisExpandWidth"),l),c=Of(e.get("axisExpandCount")||0,[0,u]),d=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,f=e.get("axisExpandWindow");f?(t=Of(f[1]-f[0],l),f[1]=f[0]+t):(t=Of(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||nk(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[nk(ak(f[0]/h,1))+1,ok(ak(f[1]/h,1))-1],m=p/h*f[0];return{layout:a,pixelDimIndex:r,layoutBase:i[n[r]],layoutLength:s,axisBase:i[n[1-r]],axisLength:i[o[1-r]],axisExpandable:d,axisExpandWidth:h,axisCollapseWidth:p,axisExpandWindow:f,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:m}},_layoutAxes:function(){var t=this._rect,e=this._axesMap,i=this.dimensions,n=this._makeLayoutInfo(),o=n.layout;e.each(function(t){var e=[0,n.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),tk(i,function(e,i){var a=(n.axisExpandable?Rf:Ef)(i,n),r={horizontal:{x:a.position,y:n.axisLength},vertical:{x:0,y:a.position}},s={horizontal:rk/2,vertical:0},l=[r[o].x+t.x,r[o].y+t.y],u=s[o],h=xt();Mt(h,h,u),St(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:a.axisNameAvailableWidth,axisLabelShow:a.axisLabelShow,nameTruncateMaxWidth:a.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},getAxis:function(t){return this._axesMap.get(t)},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},eachActiveState:function(t,e,i,n){null==i&&(i=0),null==n&&(n=t.count());var o=this._axesMap,a=this.dimensions,r=[],s=[];d(a,function(e){r.push(t.mapDimension(e)),s.push(o.get(e).model)});for(var l=this.hasAxisBrushed(),u=i;uo*(1-h[0])?(l="jump",r=s-o*(1-h[2])):(r=s-o*h[1])>=0&&(r=s-o*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?QL(r,n,a,"all"):l="none";else{o=n[1]-n[0];(n=[ik(0,a[1]*s/o-o/2)])[1]=ek(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},Fa.register("parallel",{create:function(t,e){var i=[];return t.eachComponent("parallel",function(n,o){var a=new Nf(n,t,e);a.name="parallel_"+o,a.resize(n,e),n.coordinateSystem=a,a.model=n,i.push(a)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}});var sk=lI.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Qb([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=i(t);if(e)for(var n=e.length-1;n>=0;n--)Fo(e[n])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,o=e.length;n5)return;var n=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==n.behavior&&this._dispatchExpand({axisExpandWindow:n.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&Ip(this,"mousemove")){var e=this._model,i=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),n=i.behavior;"jump"===n&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===n?null:{axisExpandWindow:i.axisExpandWindow,animation:"jump"===n&&null})}}};Ns(function(t){Cf(t),Lf(t)}),YI.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return Tp(i,this),ml(i,this)},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"}});var Dk=.3,Ck=(Ar.extend({type:"parallel",init:function(){this._dataGroup=new tb,this.group.add(this._dataGroup),this._data,this._initialized},render:function(t,e,i,n){var o=this._dataGroup,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.dimensions,u=kp(t);if(a.diff(r).add(function(t){Pp(Lp(a,o,t,l,s),a,t,u)}).update(function(e,i){var o=r.getItemGraphicEl(i),h=Cp(a,e,l,s);a.setItemGraphicEl(e,o),Io(o,{shape:{points:h}},n&&!1===n.animation?null:t,e),Pp(o,a,e,u)}).remove(function(t){var e=r.getItemGraphicEl(t);o.remove(e)}).execute(),!this._initialized){this._initialized=!0;var h=Dp(s,t,function(){setTimeout(function(){o.removeClipPath()})});o.setClipPath(h)}this._data=a},incrementalPrepareRender:function(t,e,i){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,i){for(var n=e.getData(),o=e.coordinateSystem,a=o.dimensions,r=kp(e),s=t.start;sn&&(n=e)}),d(e,function(e){var o=new hL({type:"color",mappingMethod:"linear",dataExtent:[i,n],visual:t.get("color")}).mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var a=e.getModel().get("itemStyle.color");null!=a&&e.setVisual("color",a)})}})});var Ok={_baseAxisDim:null,getInitialData:function(t,e){var i,n,o=e.getComponent("xAxis",this.get("xAxisIndex")),a=e.getComponent("yAxis",this.get("yAxisIndex")),r=o.get("type"),s=a.get("type");"category"===r?(t.layout="horizontal",i=o.getOrdinalMeta(),n=!0):"category"===s?(t.layout="vertical",i=a.getOrdinalMeta(),n=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],f=[o,a],p=f[u].get("type"),g=f[1-u].get("type"),m=t.data;if(m&&n){var v=[];d(m,function(t,e){var i;t.value&&y(t.value)?(i=t.value.slice(),t.value.unshift(e)):y(t)?(i=t.slice(),t.unshift(e)):i=t,v.push(i)}),t.data=v}var x=this.defaultValueDimensions;return oC(this,{coordDimensions:[{name:h,type:qs(p),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:qs(g),dimsDef:x.slice()}],dimensionsCount:x.length+1})},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}};h(YI.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}}),Ok,!0);var Ek=["itemStyle"],Rk=["emphasis","itemStyle"],zk=(Ar.extend({type:"boxplot",render:function(t,e,i){var n=t.getData(),o=this.group,a=this._data;this._data||o.removeAll();var r="horizontal"===t.get("layout")?1:0;n.diff(a).add(function(t){if(n.hasValue(t)){var e=ig(n.getItemLayout(t),n,t,r,!0);n.setItemGraphicEl(t,e),o.add(e)}}).update(function(t,e){var i=a.getItemGraphicEl(e);if(n.hasValue(t)){var s=n.getItemLayout(t);i?ng(s,i,n,t):i=ig(s,n,t,r),o.add(i),n.setItemGraphicEl(t,i)}else o.remove(i)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&o.remove(e)}).execute(),this._data=n},remove:function(t){var e=this.group,i=this._data;this._data=null,i&&i.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:B}),Pn.extend({type:"boxplotBoxPath",shape:{},buildPath:function(t,e){var i=e.points,n=0;for(t.moveTo(i[n][0],i[n][1]),n++;n<4;n++)t.lineTo(i[n][0],i[n][1]);for(t.closePath();n0?jk:Yk)}function n(t,e){return e.get(t>0?Uk:Xk)}var o=t.getData(),a=t.pipelineContext.large;if(o.setVisual({legendSymbol:"roundRect",colorP:i(1,t),colorN:i(-1,t),borderColorP:n(1,t),borderColorN:n(-1,t)}),!e.isSeriesFiltered(t))return!a&&{progress:function(t,e){for(var o;null!=(o=t.next());){var a=e.getItemModel(o),r=e.getItemLayout(o).sign;e.setItemVisual(o,{color:i(r,a),borderColor:n(r,a)})}}}}},Kk="undefined"!=typeof Float32Array?Float32Array:Array,$k={seriesType:"candlestick",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.getData(),n=pg(t,i),o=0,a=1,r=["x","y"],s=i.mapDimension(r[o]),l=i.mapDimension(r[a],!0),u=l[0],h=l[1],c=l[2],d=l[3];if(i.setLayout({candleWidth:n,isSimpleBox:n<=1.3}),!(null==s||l.length<4))return{progress:t.pipelineContext.large?function(t,i){for(var n,r,l=new Kk(5*t.count),f=0,p=[],g=[];null!=(r=t.next());){var m=i.get(s,r),v=i.get(u,r),y=i.get(h,r),x=i.get(c,r),_=i.get(d,r);isNaN(m)||isNaN(x)||isNaN(_)?(l[f++]=NaN,f+=4):(l[f++]=fg(i,r,v,y,h),p[o]=m,p[a]=x,n=e.dataToPoint(p,null,g),l[f++]=n?n[0]:NaN,l[f++]=n?n[1]:NaN,p[a]=_,n=e.dataToPoint(p,null,g),l[f++]=n?n[1]:NaN)}i.setLayout("largePoints",l)}:function(t,i){function r(t,i){var n=[];return n[o]=i,n[a]=t,isNaN(i)||isNaN(t)?[NaN,NaN]:e.dataToPoint(n)}function l(t,e,i){var a=e.slice(),r=e.slice();a[o]=Jn(a[o]+n/2,1,!1),r[o]=Jn(r[o]-n/2,1,!0),i?t.push(a,r):t.push(r,a)}function f(t){return t[o]=Jn(t[o],1),t}for(var p;null!=(p=t.next());){var g=i.get(s,p),m=i.get(u,p),v=i.get(h,p),y=i.get(c,p),x=i.get(d,p),_=Math.min(m,v),w=Math.max(m,v),b=r(_,g),S=r(w,g),M=r(y,g),I=r(x,g),T=[];l(T,S,0),l(T,b,1),T.push(f(I),f(S),f(M),f(b)),i.setItemLayout(p,{sign:fg(i,p,m,v,h),initBaseline:m>v?S[a]:b[a],ends:T,brushRect:function(t,e,i){var s=r(t,i),l=r(e,i);return s[o]-=n/2,l[o]-=n/2,{x:s[0],y:s[1],width:a?n:l[0]-s[0],height:a?l[1]-s[1]:n}}(y,x,g)})}}}}};Ns(function(t){t&&y(t.series)&&d(t.series,function(t){w(t)&&"k"===t.type&&(t.type="candlestick")})}),Bs(qk),zs($k),YI.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}});var Jk=vg.prototype;Jk.stopEffectAnimation=function(){this.childAt(1).removeAll()},Jk.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),o=0;o<3;o++){var a=Jl(e,-1,-1,2,2,i);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var r=-o/3*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(r).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(r).start(),n.add(a)}mg(n,t)},Jk.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],o=0;o "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}}),iP=xg.prototype;iP.createLine=function(t,e,i){return new rf(t,e,i)},iP._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),o=i.get("symbol");y(n)||(n=[n,n]);var a=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==o&&(this.remove(r),(r=Jl(o,-.5,-.5,1,1,a)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",a),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(a),r.attr("scale",n),this._symbolType=o,this._updateEffectAnimation(t,i,e))},iP._updateEffectAnimation=function(t,e,i){var n=this.childAt(1);if(n){var o=this,a=t.getItemLayout(i),r=1e3*e.get("period"),s=e.get("loop"),l=e.get("constantSpeed"),u=T(e.get("delay"),function(e){return e/t.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,a),l>0&&(r=this.getLineLength(n)/l*1e3),r!==this._period||s!==this._loop){n.stopAnimation();var c=u;h&&(c=u(i)),n.__t>0&&(c=-r*n.__t),n.__t=0;var d=n.animate("",s).when(r,{__t:1}).delay(c).during(function(){o.updateSymbolPosition(n)});s||d.done(function(){o.remove(n)}),d.start()}this._period=r,this._loop=s}},iP.getLineLength=function(t){return uw(t.__p1,t.__cp1)+uw(t.__cp1,t.__p2)},iP.updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},iP.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},iP.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=sn,s=ln;a[0]=r(e[0],n[0],i[0],o),a[1]=r(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),u=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(u,l)-Math.PI/2,t.ignore=!1},iP.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},u(xg,tb);var nP=_g.prototype;nP._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new gM({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},nP.updateData=function(t,e,i){var n=t.hostModel;Io(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},nP._updateCommonStl=function(t,e,i){var n=this.childAt(0),o=t.getItemModel(e),a=t.getItemVisual(e,"color"),s=i&&i.lineStyle,l=i&&i.hoverLineStyle;i&&!t.hasItemOption||(s=o.getModel("lineStyle").getLineStyle(),l=o.getModel("emphasis.lineStyle").getLineStyle()),n.useStyle(r({strokeNoScale:!0,fill:"none",stroke:a},s)),n.hoverStyle=l,fo(this)},nP.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},u(_g,tb);var oP=wg.prototype;oP.createLine=function(t,e,i){return new _g(t,e,i)},oP.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o=0&&!(n[r]<=e);r--);r=Math.min(r,o-2)}else{for(var r=a;re);r++);r=Math.min(r-1,o-2)}J(t.position,i[r],i[r+1],(e-n[r])/(n[r+1]-n[r]));var s=i[r+1][0]-i[r][0],l=i[r+1][1]-i[r][1];t.rotation=-Math.atan2(l,s)-Math.PI/2,this._lastFrame=r,this._lastFramePercent=e,t.ignore=!1}},u(wg,xg);var aP=Un({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(r=0;r0){t.moveTo(i[r++],i[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*n,d=(l+h)/2-(u-s)*n;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var i=this.shape,n=i.segs,o=i.curveness;if(i.polyline)for(var a=0,r=0;r0)for(var l=n[r++],u=n[r++],h=1;h0){if(_n(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(yn(l,u,c,d))return a;a++}return-1}}),rP=bg.prototype;rP.isPersistent=function(){return!this._incremental},rP.updateData=function(t){this.group.removeAll();var e=new aP({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},rP.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},rP.incrementalUpdate=function(t,e){var i=new aP;i.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(i,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(i,!0):(i.rectHover=!0,i.cursor="default",i.__startIndex=t.start,this.group.add(i))},rP.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},rP._setCommon=function(t,e,i){var n=e.hostModel;t.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),t.useStyle(n.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var o=e.getVisual("color");o&&t.setStyle("stroke",o),t.setStyle("fill"),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>0&&(t.dataIndex=i+t.__startIndex)}))},rP._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var sP={seriesType:"lines",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.get("polyline"),n=t.pipelineContext.large;return{progress:function(o,a){var r=[];if(n){var s,l=o.end-o.start;if(i){for(var u=0,h=o.start;h0){var I=a(v)?s:l;v>0&&(v=v*S+b),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(y,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=iw()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},Zs({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var o=t.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(t,i,0,t.getData().count()):Ag(o)&&this._renderOnGeo(o,t,n,i)},incrementalPrepareRender:function(t,e,i){this.group.removeAll()},incrementalRender:function(t,e,i,n){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,n,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,e,i,n,o){var r,s,l=t.coordinateSystem;if("cartesian2d"===l.type){var u=l.getAxis("x"),h=l.getAxis("y");r=u.getBandWidth(),s=h.getBandWidth()}for(var c=this.group,d=t.getData(),f=t.getModel("itemStyle").getItemStyle(["color"]),p=t.getModel("emphasis.itemStyle").getItemStyle(),g=t.getModel("label"),m=t.getModel("emphasis.label"),v=l.type,y="cartesian2d"===v?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],x=i;x=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},Fa.register("single",{create:function(t,e){var i=[];return t.eachComponent("singleAxis",function(n,o){var a=new $g(n,t,e);a.name="single_"+o,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i},dimensions:$g.prototype.dimensions});var gP=["axisLine","axisTickLabel","axisName"],mP=XD.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=Jg(t),r=new FD(t,a);d(gP,r.add,r),o.add(r.getGroup()),t.get("splitLine.show")&&this._splitLine(t),mP.superCall(this,"render",t,e,i,n)},_splitLine:function(t){var e=t.axis;if(!e.scale.isBlank()){var i=t.getModel("splitLine"),n=i.getModel("lineStyle"),o=n.get("width"),a=n.get("color");a=a instanceof Array?a:[a];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;f=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){gm(e.getZr(),"axisPointer"),IP.superApply(this._model,"remove",arguments)},dispose:function(t,e){gm("axisPointer",e),IP.superApply(this._model,"dispose",arguments)}}),TP=Bi(),AP=i,DP=m;(mm.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var o=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==o||this._lastStatus!==a){this._lastValue=o,this._lastStatus=a;var r=this._group,s=this._handle;if(!a||"hide"===a)return r&&r.hide(),void(s&&s.hide());r&&r.show(),s&&s.show();var l={};this.makeElOption(l,o,t,e,i);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(r){var c=v(vm,e,h);this.updatePointerEl(r,l,c,e),this.updateLabelEl(r,l,c,e)}else r=this._group=new tb,this.createPointerEl(r,l,t,e),this.createLabelEl(r,l,t,e),i.getZr().add(r);wm(r,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,o="category"===n.type,a=e.get("snap");if(!a&&!o)return!1;if("auto"===i||null==i){var r=this.animationThreshold;if(o&&n.getBandWidth()>r)return!0;if(a){var s=Mh(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1}return!0===i},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=TP(t).pointerEl=new zM[o.type](AP(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=TP(t).labelEl=new yM(AP(e.label));t.add(o),xm(o,n)}},updatePointerEl:function(t,e,i){var n=TP(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=TP(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),xm(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,o=e.getModel("handle"),a=e.get("status");if(!o.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var r;this._handle||(r=!0,n=this._handle=Po(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){mw(t.event)},onmousedown:DP(this._onHandleDragMove,this,0,0),drift:DP(this._onHandleDragMove,this),ondragend:DP(this._onHandleDragEnd,this)}),i.add(n)),wm(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(o.getItemStyle(null,s));var l=o.get("size");y(l)||(l=[l,l]),n.attr("scale",[l[0]/2,l[1]/2]),Nr(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)}},_moveHandleToValue:function(t,e){vm(this._axisPointerModel,!e&&this._moveAnimation,this._handle,_m(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(_m(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(_m(n)),TP(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=mm,ji(mm);var CP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.grid,s=n.get("type"),l=km(r,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var h=bm(n),c=LP[s](a,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Lh(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=Lh(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.grid,r=o.getGlobalExtent(!0),s=km(a,o).getOtherAxis(o).getGlobalExtent(),l="x"===o.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];var d=[{verticalAlign:"middle"},{align:"center"}];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:d[l]}}}),LP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Pm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=Math.max(1,t.getBandWidth()),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Pm(t))}}};XD.registerAxisPointerClass("CartesianAxisPointer",CP),Ns(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Os(VT.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=vh(t,e)}),Es({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,o=[t.x,t.y],a=t,r=t.dispatchAction||m(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){lm(o)&&(o=xP({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var l=lm(o),u=a.axesInfo,h=s.axesInfo,c="leave"===n||lm(o),d={},f={},p={list:[],map:{}},g={showPointer:wP(em,f),showTooltip:wP(im,p)};_P(s.coordSysMap,function(t,e){var i=l||t.containPoint(o);_P(s.coordSysAxesInfo[e],function(t,e){var n=t.axis,a=rm(u,t);if(!c&&i&&(!u||a)){var r=a&&a.value;null!=r||l||(r=n.pointToData(o)),null!=r&&Qg(t,r,g,!1,d)}})});var v={};return _P(h,function(t,e){var i=t.linkGroup;i&&!f[e]&&_P(i.axesInfo,function(e,n){var o=f[n];if(e!==t&&o){var a=o.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,sm(e),sm(t)))),v[t.key]=a}})}),_P(v,function(t,e){Qg(h[e],t,g,!0,d)}),nm(f,h,d),om(p,o,t,r),am(h,0,i),d}});var kP=["x","y"],PP=["width","height"],NP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.coordinateSystem,s=Om(r,1-Nm(a)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=bm(n),c=OP[u](a,l,s,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Jg(i),i,n,o)},getHandleTransform:function(t,e,i){var n=Jg(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.coordinateSystem,r=Nm(o),s=Om(a,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=Om(a,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),OP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Nm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=t.getBandWidth(),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Nm(t))}}};XD.registerAxisPointerClass("SingleAxisPointer",NP),Ws({type:"single"});var EP=YI.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){EP.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){var e=t.length,i=[];Zi(t,function(t){return t[2]}).buckets.each(function(t,e){i.push({name:e,dataList:t})});for(var n=i.length,o=-1,a=-1,r=0;ro&&(o=s,a=r)}for(var l=0;lMath.PI/2?"right":"left"):x&&"center"!==x?"left"===x?(f=u.r0+y,p>Math.PI/2&&(x="right")):"right"===x&&(f=u.r-y,p>Math.PI/2&&(x="left")):(f=(u.r+u.r0)/2,x="center"),d.attr("style",{text:l,textAlign:x,textVerticalAlign:n("verticalAlign")||"middle",opacity:n("opacity")});var _=f*g+u.cx,w=f*m+u.cy;d.attr("position",[_,w]);var b=n("rotate"),S=0;"radial"===b?(S=-p)<-Math.PI/2&&(S+=Math.PI):"tangential"===b?(S=Math.PI/2-p)>Math.PI/2?S-=Math.PI:S<-Math.PI/2&&(S+=Math.PI):"number"==typeof b&&(S=b*Math.PI/180),d.attr("rotation",S)},VP._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");var o=this,a=function(){o.onEmphasis(n)},r=function(){o.onNormal()};i.isAnimationEnabled()&&t.on("mouseover",a).on("mouseout",r).on("emphasis",a).on("normal",r).on("downplay",function(){o.onDownplay()}).on("highlight",function(){o.onHighlight()})},u(Vm,tb);Ar.extend({type:"sunburst",init:function(){},render:function(t,e,i,n){function o(i,n){if(c||!i||i.getValue()||(i=null),i!==l&&n!==l)if(n&&n.piece)i?(n.piece.updateData(!1,i,"normal",t,e),s.setItemGraphicEl(i.dataIndex,n.piece)):a(n);else if(i){var o=new Vm(i,t,e);h.add(o),s.setItemGraphicEl(i.dataIndex,o)}}function a(t){t&&t.piece&&(h.remove(t.piece),t.piece=null)}var r=this;this.seriesModel=t,this.api=i,this.ecModel=e;var s=t.getData(),l=s.tree.root,u=t.getViewRoot(),h=this.group,c=t.get("renderLabelForZeroData"),d=[];u.eachNode(function(t){d.push(t)});var f=this._oldChildren||[];if(function(t,e){function i(t){return t.getId()}function n(i,n){o(null==i?null:t[i],null==n?null:e[n])}0===t.length&&0===e.length||new Xs(e,t,i,i).add(n).update(n).remove(v(n,null)).execute()}(d,f),function(i,n){if(n.depth>0){r.virtualPiece?r.virtualPiece.updateData(!1,i,"normal",t,e):(r.virtualPiece=new Vm(i,t,e),h.add(r.virtualPiece)),n.piece._onclickEvent&&n.piece.off("click",n.piece._onclickEvent);var o=function(t){r._rootToNode(n.parentNode)};n.piece._onclickEvent=o,r.virtualPiece.on("click",o)}else r.virtualPiece&&(h.remove(r.virtualPiece),r.virtualPiece=null)}(l,u),n&&n.highlight&&n.highlight.piece){var p=t.getShallow("highlightPolicy");n.highlight.piece.onEmphasis(p)}else if(n&&n.unhighlight){var g=this.virtualPiece;!g&&l.children.length&&(g=l.children[0].piece),g&&g.onNormal()}this._initEvents(),this._oldChildren=d},dispose:function(){},_initEvents:function(){var t=this,e=function(e){var i=!1;t.seriesModel.getViewRoot().eachNode(function(n){if(!i&&n.piece&&n.piece.childAt(0)===e.target){var o=n.getModel().get("nodeClick");if("rootToNode"===o)t._rootToNode(n);else if("link"===o){var a=n.getModel(),r=a.get("link");if(r){var s=a.get("target",!0)||"_blank";window.open(r,s)}}i=!0}})};this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",e),this.group._onclickEvent=e},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:"sunburstRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var GP="sunburstRootToNode";Es({type:GP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[GP],e);if(n){var o=e.getViewRoot();o&&(t.direction=hd(o,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}})});var FP="sunburstHighlight";Es({type:FP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[FP],e);n&&(t.highlight=n.node)})});Es({type:"sunburstUnhighlight",update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){t.unhighlight=!0})});var WP=Math.PI/180;Bs(v(uC,"sunburst")),zs(v(function(t,e,i,n){e.eachSeriesByType(t,function(t){var e=t.get("center"),n=t.get("radius");y(n)||(n=[0,n]),y(e)||(e=[e,e]);var o=i.getWidth(),a=i.getHeight(),r=Math.min(o,a),s=Vo(e[0],o),l=Vo(e[1],a),u=Vo(n[0],r/2),h=Vo(n[1],r/2),c=-t.get("startAngle")*WP,f=t.get("minAngle")*WP,p=t.getData().tree.root,g=t.getViewRoot(),m=g.depth,v=t.get("sort");null!=v&&Zm(g,v);var x=0;d(g.children,function(t){!isNaN(t.getValue())&&x++});var _=g.getValue(),w=Math.PI/(_||x)*2,b=g.depth>0,S=g.height-(b?-1:1),M=(h-u)/(S||1),I=t.get("clockwise"),T=t.get("stillShowZeroSum"),A=I?1:-1,D=function(t,e){if(t){var i=e;if(t!==p){var n=t.getValue(),o=0===_&&T?w:n*w;on[1]&&n.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:n[1],r0:n[0]},api:{coord:m(function(n){var o=e.dataToRadius(n[0]),a=i.dataToAngle(n[1]),r=t.coordToPoint([o,a]);return r.push(o,a*Math.PI/180),r}),size:m(qm,t)}}},calendar:function(t){var e=t.getRect(),i=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:i.start,end:i.end,weeks:i.weeks,dayCount:i.allDay}},api:{coord:function(e,i){return t.dataToPoint(e,i)}}}}};YI.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0},getInitialData:function(t,e){return ml(this.getSource(),this)},getDataParams:function(t,e,i){var n=YI.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Ar.extend({type:"custom",_data:null,render:function(t,e,i,n){var o=this._data,a=t.getData(),r=this.group,s=Qm(t,a,e,i);a.diff(o).add(function(e){ev(null,e,s(e,n),t,r,a)}).update(function(e,i){ev(o.getItemGraphicEl(i),e,s(e,n),t,r,a)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute(),this._data=a},incrementalPrepareRender:function(t,e,i){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,o){for(var a=e.getData(),r=Qm(e,a,i,n),s=t.start;s=0;l--)null==o[l]?o.splice(l,1):delete o[l].$action},_flatten:function(t,e,i){d(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});Ws({type:"graphic",init:function(t,e){this._elMap=R(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,i)},_updateElements:function(t){var e=t.useElOptionsToUpdate();if(e){var i=this._elMap,n=this.group;d(e,function(e){var o=e.$action,a=e.id,r=i.get(a),s=e.parentId,l=null!=s?i.get(s):n,u=e.style;"text"===e.type&&u&&(e.hv&&e.hv[1]&&(u.textVerticalAlign=u.textBaseline=null),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke));var h=fv(e);o&&"merge"!==o?"replace"===o?(dv(r,i),cv(a,l,h,i)):"remove"===o&&dv(r,i):r?r.attr(h):cv(a,l,h,i);var c=i.get(a);c&&(c.__ecGraphicWidth=e.width,c.__ecGraphicHeight=e.height,yv(c,t))})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=i.length-1;a>=0;a--){var r=i[a],s=o.get(r.id);if(s){var l=s.parent;da(s,r,l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0},null,{hv:r.hv,boundingMode:r.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){dv(e,t)}),this._elMap=R()},dispose:function(){this._clear()}});var KP=Fs({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){KP.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});Es("legendToggleSelect","legendselectchanged",v(xv,"toggleSelected")),Es("legendSelect","legendselected",v(xv,"select")),Es("legendUnSelect","legendunselected",v(xv,"unSelect"));var $P=v,JP=d,QP=tb,tN=Ws({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new QP),this._backgroundEl,this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},render:function(t,e,i){var n=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var o=t.get("align");o&&"auto"!==o||(o="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left"),this.renderInner(o,t,e,i);var a=t.getBoxLayoutParams(),s={width:i.getWidth(),height:i.getHeight()},l=t.get("padding"),u=ca(a,s,l),h=this.layoutInner(t,o,u,n),c=ca(r({width:h.width,height:h.height},a),s,l);this.group.attr("position",[c.x-h.x,c.y-h.y]),this.group.add(this._backgroundEl=wv(h,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl)},renderInner:function(t,e,i,n){var o=this.getContentGroup(),a=R(),r=e.get("selectedMode"),s=[];i.eachRawSeries(function(t){!t.get("legendHoverLink")&&s.push(t.id)}),JP(e.getData(),function(l,u){var h=l.get("name");if(this.newlineDisabled||""!==h&&"\n"!==h){var c=i.getSeriesByName(h)[0];if(!a.get(h))if(c){var d=c.getData(),f=d.getVisual("color");"function"==typeof f&&(f=f(c.getDataParams(0)));var p=d.getVisual("legendSymbol")||"roundRect",g=d.getVisual("symbol");this._createItem(h,u,l,e,p,g,t,f,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,c.name,null,n,s)).on("mouseout",$P(Mv,c.name,null,n,s)),a.set(h,!0)}else i.eachRawSeries(function(i){if(!a.get(h)&&i.legendDataProvider){var o=i.legendDataProvider(),c=o.indexOfName(h);if(c<0)return;var d=o.getItemVisual(c,"color");this._createItem(h,u,l,e,"roundRect",null,t,d,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,null,h,n,s)).on("mouseout",$P(Mv,null,h,n,s)),a.set(h,!0)}},this)}else o.add(new QP({newline:!0}))},this)},_createItem:function(t,e,i,n,o,r,s,l,u){var h=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("symbolKeepAspect"),p=n.isSelected(t),g=new QP,m=i.getModel("textStyle"),v=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(o=v||o,g.add(Jl(o,0,0,h,c,p?l:d,null==f||f)),!v&&r&&(r!==o||"none"===r)){var _=.8*c;"none"===r&&(r="circle"),g.add(Jl(r,(h-_)/2,(c-_)/2,_,_,p?l:d,null==f||f))}var w="left"===s?h+5:-5,b=s,S=n.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t)),g.add(new rM({style:mo({},m,{text:M,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new yM({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(I),g.eachChild(function(t){t.silent=!0}),I.silent=!u,this.getContentGroup().add(g),fo(g),g.__legendDataIndex=e,g},layoutInner:function(t,e,i){var n=this.getContentGroup();aI(t.get("orient"),n,t.get("itemGap"),i.width,i.height);var o=n.getBoundingRect();return n.attr("position",[-o.x,-o.y]),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});Os(function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;ii[l],p=[-c.x,-c.y];n||(p[s]=o.position[s]);var g=[0,0],m=[-d.x,-d.y],v=A(t.get("pageButtonGap",!0),t.get("itemGap",!0));f&&("end"===t.get("pageButtonPosition",!0)?m[s]+=i[l]-d[l]:g[s]+=d[l]+v),m[1-s]+=c[u]/2-d[u]/2,o.attr("position",p),a.attr("position",g),r.attr("position",m);var y=this.group.getBoundingRect();if((y={x:0,y:0})[l]=f?i[l]:c[l],y[u]=Math.max(c[u],d[u]),y[h]=Math.min(0,d[h]+m[1-s]),a.__rectSize=i[l],f){var x={x:0,y:0};x[l]=Math.max(i[l]-d[l]-v,0),x[u]=y[u],a.setClipPath(new yM({shape:x})),a.__rectSize=x[l]}else r.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&Io(o,{position:_.contentPosition},!!f&&t),this._updatePageInfoView(t,_),y},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(t,e){var i=this._controllerGroup;d(["pagePrev","pageNext"],function(n){var o=null!=e[n+"DataIndex"],a=i.childOfName(n);a&&(a.setStyle("fill",o?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=o?"pointer":"default")});var n=i.childOfName("pageText"),o=t.get("pageFormatter"),a=e.pageIndex,r=null!=a?a+1:0,s=e.pageCount;n&&o&&n.setStyle("text",_(o)?o.replace("{current}",r).replace("{total}",s):o({current:r,total:s}))},_getPageInfo:function(t){function e(t){if(t){var e=t.getBoundingRect(),i=e[l]+t.position[r];return{s:i,e:i+e[s],i:t.__legendDataIndex}}}function i(t,e){return t.e>=e&&t.s<=e+a}var n=t.get("scrollDataIndex",!0),o=this.getContentGroup(),a=this._containerGroup.__rectSize,r=t.getOrient().index,s=nN[r],l=oN[r],u=this._findTargetItemIndex(n),h=o.children(),c=h[u],d=h.length,f=d?1:0,p={contentPosition:o.position.slice(),pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return p;var g=e(c);p.contentPosition[r]=-g.s;for(var m=u+1,v=g,y=g,x=null;m<=d;++m)(!(x=e(h[m]))&&y.e>v.s+a||x&&!i(x,v.s))&&(v=y.i>v.i?y:x)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=v.i),++p.pageCount),y=x;for(var m=u-1,v=g,y=g,x=null;m>=-1;--m)(x=e(h[m]))&&i(y,x.s)||!(v.i=0;){var r=o.indexOf("|}"),s=o.substr(a+"{marker".length,r-a-"{marker".length);s.indexOf("sub")>-1?n["marker"+s]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[s],textOffset:[3,0]}:n["marker"+s]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[s]},a=(o=o.substr(r+1)).indexOf("{marker")}this.el=new rM({style:{rich:n,text:t,textLineHeight:20,textBackgroundColor:i.get("backgroundColor"),textBorderRadius:i.get("borderRadius"),textFill:i.get("textStyle.color"),textPadding:i.get("padding")},z:i.get("z")}),this._zr.add(this.el);var l=this;this.el.on("mouseover",function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0}),this.el.on("mouseout",function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){this.el&&this.el.attr("position",[t,e])},hide:function(){this.el?this.el.hide():true,this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(m(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var uN=m,hN=d,cN=Vo,dN=new yM({shape:{x:-1,y:-1,width:2,height:2}});Ws({type:"tooltip",init:function(t,e){if(!U_.node){var i=t.getComponent("tooltip").get("renderMode");this._renderMode=Hi(i);var n;"html"===this._renderMode?(n=new Cv(e.getDom(),e),this._newLine="
"):(n=new Lv(e),this._newLine="\n"),this._tooltipContent=n}},render:function(t,e,i){if(!U_.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");um("itemTooltip",this._api,uN(function(e,i,n){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(i,n):"leave"===e&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!U_.node){var o=Pv(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=dN;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},o)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},o);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=xP(n,e),l=s.point[0],u=s.point[1];null!=l&&null!=u&&this._tryShow({offsetX:l,offsetY:u,position:n.position,target:s.el,event:{}},o)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},o))}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(Pv(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var o=n.seriesIndex,a=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=o&&null!=a&&null!=r){var s=e.getSeriesByIndex(o);if(s&&"axis"===(t=kv([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:a,position:n.position}),!0}},_tryShow:function(t,e){var i=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var n=t.dataByCoordSys;n&&n.length?this._showAxisTooltip(n,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=m(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=kv([e.tooltipOption,o]),u=this._renderMode,h=this._newLine,c={};hN(t,function(t){hN(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),o=t.value,a=[];if(e&&null!=o){var l=Im(o,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);d(t.seriesDataIndices,function(r){var h=i.getSeriesByIndex(r.seriesIndex),d=r.dataIndexInside,f=h&&h.getDataParams(d);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=Xl(e.axis,o),f.axisValueLabel=l,f){s.push(f);var p,g=h.formatTooltip(d,!0,null,u);if(w(g)){p=g.html;var m=g.markers;n(c,m)}else p=g;a.push(p)}});var f=l;"html"!==u?r.push(a.join(h)):r.push((f?ia(f)+h:"")+a.join(h))}})},this),r.reverse(),r=r.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,f,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],f,void 0,c)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,o=e.seriesIndex,a=n.getSeriesByIndex(o),r=e.dataModel||a,s=e.dataIndex,l=e.dataType,u=r.getData(),h=kv([u.getItemModel(s),r,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),c=h.get("trigger");if(null==c||"item"===c){var d,f,p=r.getDataParams(s,l),g=r.formatTooltip(s,!1,l,this._renderMode);w(g)?(d=g.html,f=g.markers):(d=g,f=null);var m="item_"+r.name+"_"+s;this._showOrMove(h,function(){this._showTooltipContent(h,d,p,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:s,dataIndex:u.getRawIndex(s),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new No(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");r=r||t.get("position");var c=e;if(h&&"string"==typeof h)c=na(h,i,!0);else if("function"==typeof h){var d=uN(function(e,n){e===this._ticket&&(u.setContent(n,l,t),this._updatePosition(t,r,o,a,u,i,s))},this);this._ticket=n,c=h(i,n,d)}u.setContent(c,l,t),u.show(t),this._updatePosition(t,r,o,a,u,i,s)}},_updatePosition:function(t,e,i,n,o,a,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=o.getSize(),h=t.get("align"),c=t.get("verticalAlign"),d=r&&r.getBoundingRect().clone();if(r&&d.applyTransform(r.transform),"function"==typeof e&&(e=e([i,n],a,o.el,d,{viewSize:[s,l],contentSize:u.slice()})),y(e))i=cN(e[0],s),n=cN(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=ca(e,{width:s,height:l});i=f.x,n=f.y,h=null,c=null}else"string"==typeof e&&r?(i=(p=Ev(e,d,u))[0],n=p[1]):(i=(p=Nv(i,n,o,s,l,h?null:20,c?null:20))[0],n=p[1]);if(h&&(i-=Rv(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=Rv(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")){var p=Ov(i,n,o,s,l);i=p[0],n=p[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&hN(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&hN(o,function(t,e){var n=a[e]||{},o=t.seriesDataIndices||[],r=n.seriesDataIndices||[];(i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===r.length)&&hN(o,function(t,e){var n=r[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){U_.node||(this._tooltipContent.hide(),gm("itemTooltip",e))}}),Es({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Es({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){}),Gv.prototype={constructor:Gv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:aD.prototype.dataToCoord,radiusToData:aD.prototype.coordToData},u(Gv,aD);var fN=Bi();Fv.prototype={constructor:Fv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:aD.prototype.dataToCoord,angleToData:aD.prototype.coordToData,calculateCategoryInterval:function(){var t=this,e=t.getLabelModel(),i=t.scale,n=i.getExtent(),o=i.count();if(n[1]-n[0]<1)return 0;var a=n[0],r=t.dataToCoord(a+1)-t.dataToCoord(a),s=Math.abs(r),l=ke(a,e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=fN(t.model),d=c.lastAutoInterval,f=c.lastTickCount;return null!=d&&null!=f&&Math.abs(d-h)<=1&&Math.abs(f-o)<=1&&d>h?h=d:(c.lastTickCount=o,c.lastAutoInterval=h),h}},u(Fv,aD);var pN=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new Gv,this._angleAxis=new Fv,this._radiusAxis.polar=this._angleAxis.polar=this};pN.prototype={type:"polar",axisPointerEnabled:!0,constructor:pN,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=lr;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI;return[Math.cos(i)*e+this.cx,-Math.sin(i)*e+this.cy]}};var gN=lI.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n(gN.prototype,UA);var mN={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};ED("angle",gN,Wv,mN.angle),ED("radius",gN,Wv,mN.radius),Fs({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e;return this.ecModel.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}});var vN={dimensions:pN.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new pN(n);o.update=Zv;var a=o.getRadiusAxis(),r=o.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");Uv(a,s),Uv(r,l),Hv(o,t,e),i.push(o),t.coordinateSystem=o,o.model=t}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};Fa.register("polar",vN);var yN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];XD.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,o=n.polar,a=o.getRadiusAxis().getExtent(),r=n.getTicksCoords(),s=f(n.getViewLabels(),function(t){return(t=i(t)).coord=n.dataToCoord(t.tickValue),t});Yv(s),Yv(r),d(yN,function(e){!t.get(e+".show")||n.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,o,r,a,s)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),a=new sM({shape:{cx:e.cx,cy:e.cy,r:n[jv(e)]},style:o.getLineStyle(),z2:1,silent:!0});a.style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n){var o=t.getModel("axisTick"),a=(o.get("inside")?-1:1)*o.get("length"),s=n[jv(e)],l=f(i,function(t){return new _M({shape:Xv(e,[s,s+a],t.coord)})});this.group.add(OM(l,{style:r(o.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n,o){var a=t.getCategories(!0),r=t.getModel("axisLabel"),s=r.get("margin");d(o,function(i,o){var l=r,u=i.tickValue,h=n[jv(e)],c=e.coordToPoint([h+s,i.coord]),d=e.cx,f=e.cy,p=Math.abs(c[0]-d)/h<.3?"center":c[0]>d?"left":"right",g=Math.abs(c[1]-f)/h<.3?"middle":c[1]>f?"top":"bottom";a&&a[u]&&a[u].textStyle&&(l=new No(a[u].textStyle,r,r.ecModel));var m=new rM({silent:!0});this.group.add(m),mo(m.style,l,{x:c[0],y:c[1],textFill:l.getTextColor()||t.get("axisLine.lineStyle.color"),text:i.formattedLabel,textAlign:p,textVerticalAlign:g})},this)},_splitLine:function(t,e,i,n){var o=t.getModel("splitLine").getModel("lineStyle"),a=o.get("color"),s=0;a=a instanceof Array?a:[a];for(var l=[],u=0;u=0?"p":"n",M=y;v&&(n[r][b]||(n[r][b]={p:y,n:y}),M=n[r][b][S]);var I,T,A,D;if("radius"===h.dim){var C=h.dataToRadius(w)-y,L=a.dataToAngle(b);Math.abs(C)=0},kN.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=dy(e,t),o=0;o=0||AN(n,t.getAxis("y").model)>=0)&&a.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:a[0],coordSyses:a,getPanelRect:ON.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){TN(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:ON.geo})})}},NN=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],ON={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ao(t)),e}},EN={lineX:DN(fy,0),lineY:DN(fy,1),rect:function(t,e,i){var n=e[CN[t]]([i[0][0],i[1][0]]),o=e[CN[t]]([i[0][1],i[1][1]]),a=[cy([n[0],o[0]]),cy([n[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,i){var n=[[1/0,-1/0],[1/0,-1/0]];return{values:f(i,function(i){var o=e[CN[t]](i);return n[0][0]=Math.min(n[0][0],o[0]),n[1][0]=Math.min(n[1][0],o[1]),n[0][1]=Math.max(n[0][1],o[0]),n[1][1]=Math.max(n[1][1],o[1]),o}),xyMinMax:n}}},RN={lineX:DN(py,0),lineY:DN(py,1),rect:function(t,e,i){return[[t[0][0]-i[0]*e[0][0],t[0][1]-i[0]*e[0][1]],[t[1][0]-i[1]*e[1][0],t[1][1]-i[1]*e[1][1]]]},polygon:function(t,e,i){return f(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}},zN=["inBrush","outOfBrush"],BN="__ecBrushSelect",VN="__ecInBrushSelectEvent",GN=VT.VISUAL.BRUSH;zs(GN,function(t,e,i){t.eachComponent({mainType:"brush"},function(e){i&&"takeGlobalCursor"===i.type&&e.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1}),(e.brushTargetManager=new hy(e.option,t)).setInputRanges(e.areas,t)})}),Bs(GN,function(t,e,n){var o,a,s=[];t.eachComponent({mainType:"brush"},function(e,n){function l(t){return"all"===m||v[t]}function u(t){return!!t.length}function h(t,e){var i=t.coordinateSystem;w|=i.hasAxisBrushed(),l(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(x[e]=1)})}function c(i,n,o){var a=_y(i);if(a&&!wy(e,n)&&(d(b,function(n){a[n.brushType]&&e.brushTargetManager.controlSeries(n,i,t)&&o.push(n),w|=u(o)}),l(n)&&u(o))){var r=i.getData();r.each(function(t){xy(a,o,r,t)&&(x[t]=1)})}}var p={brushId:e.id,brushIndex:n,brushName:e.name,areas:i(e.areas),selected:[]};s.push(p);var g=e.option,m=g.brushLink,v=[],x=[],_=[],w=0;n||(o=g.throttleType,a=g.throttleDelay);var b=f(e.areas,function(t){return by(r({boundingRect:FN[t.brushType](t)},t))}),S=ty(e.option,zN,function(t){t.mappingMethod="fixed"});y(m)&&d(m,function(t){v[t]=1}),t.eachSeries(function(t,e){var i=_[e]=[];"parallel"===t.subType?h(t,e):c(t,e,i)}),t.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};p.selected.push(i);var n=_y(t),o=_[e],a=t.getData(),r=l(e)?function(t){return x[t]?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return xy(n,o,a,t)?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"};(l(e)?w:u(o))&&iy(zN,S,a,r)})}),vy(e,o,a,s,n)});var FN={lineX:B,lineY:B,rect:function(t){return Sy(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;ne[0][1]&&(e[0][1]=a[0]),a[1]e[1][1]&&(e[1][1]=a[1])}return e&&Sy(e)}},WN=["#ddd"];Fs({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&ey(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:WN},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=f(t,function(t){return My(this.option,t)},this))},setBrushOption:function(t){this.brushOption=My(this.option,t),this.brushType=this.brushOption.brushType}});Ws({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new zf(e.getZr())).on("brush",m(this._onBrush,this)).mount()},render:function(t){return this.model=t,Iy.apply(this,arguments)},updateTransform:Iy,updateView:Iy,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var n=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:n,areas:i(t),$from:n})}}),Es({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),Es({type:"brushSelect",event:"brushSelected",update:"none"},function(){});var HN={},ZN=rT.toolbox.brush;Dy.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:i(ZN.title)};var UN=Dy.prototype;UN.render=UN.updateView=function(t,e,i){var n,o,a;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,d(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?a:e===n)?"emphasis":"normal")})},UN.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return d(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},UN.onclick=function(t,e,i){var n=this._brushType,o=this._brushMode;"clear"===i?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},Ty("brush",Dy),Ns(function(t,e){var i=t&&t.brush;if(y(i)||(i=i?[i]:[]),i.length){var n=[];d(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var o=t&&t.toolbox;y(o)&&(o=o[0]),o||(o={feature:{}},t.toolbox=[o]);var a=o.feature||(o.feature={}),r=a.brush||(a.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),Jv(s),e&&!s.length&&s.push.apply(s,SN)}});Cy.prototype={constructor:Cy,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"},"value"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){var e=(t=Yo(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return o=Math.abs((o+7-this.getFirstDayOfWeek())%7),{y:e,m:i,d:n,day:o,time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)?this.getDateInfo(t):((t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t))},update:function(t,e){function i(t,e){return null!=t[e]&&"auto"!==t[e]}this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,o=["width","height"],a=this._model.get("cellSize").slice(),r=this._model.getBoxLayoutParams(),s="horizontal"===this._orient?[n,7]:[7,n];d([0,1],function(t){i(a,t)&&(r[o[t]]=a[t]*s[t])});var l={width:e.getWidth(),height:e.getHeight()},u=this._rect=ca(r,l);d([0,1],function(t){i(a,t)||(a[t]=u[o[t]]/s[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(t,e){y(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,o=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.timea.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),o=n.getDate(),a=t[1].date.getDate();if(n.setDate(o+i-1),n.getDate()!==a)for(var r=n.getTime()-t[1].time>0?1:-1;n.getDate()!==a&&(n.getTime()-t[1].time)*r>0;)i-=r,n.setDate(o+i-1);var s=Math.floor((i+t[0].day+6)/7),l=e?1-s:s-1;return e&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:i,weeks:s,nthWeek:l,fweek:t[0].day,lweek:t[1].day}},_getDateByWeeksAndDay:function(t,e,i){var n=this._getRangeInfo(i);if(t>n.weeks||0===t&&en.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=new Date(n.start.time);return a.setDate(n.start.d+o),this.getDateInfo(a)}},Cy.dimensions=Cy.prototype.dimensions,Cy.getDimensionsInfo=Cy.prototype.getDimensionsInfo,Cy.create=function(t,e){var i=[];return t.eachComponent("calendar",function(n){var o=new Cy(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])}),i},Fa.register("calendar",Cy);var XN=lI.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var o=ga(t);XN.superApply(this,"init",arguments),ky(t,o)},mergeOption:function(t,e){XN.superApply(this,"mergeOption",arguments),ky(this.option,t)}}),jN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},YN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Ws({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new yM({shape:{x:l[0],y:l[1],width:a,height:r},cursor:"default",style:o});i.add(u)}},_renderLines:function(t,e,i,n){function o(e){a._firstDayOfMonth.push(r.getDateInfo(e)),a._firstDayPoints.push(r.dataToRect([e],!1).tl);var o=a._getLinePointsOfOneWeek(t,e,i);a._tlpoints.push(o[0]),a._blpoints.push(o[o.length-1]),l&&a._drawSplitline(o,s,n)}var a=this,r=t.coordinateSystem,s=t.getModel("splitLine.lineStyle").getLineStyle(),l=t.get("splitLine.show"),u=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=e.start,c=0;h.time<=e.end.time;c++){o(h.formatedDate),0===c&&(h=r.getDateInfo(e.start.y+"-"+e.start.m));var d=h.date;d.setMonth(d.getMonth()+1),h=r.getDateInfo(d)}o(r.getNextNDay(e.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,u,i),s,n),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,u,i),s,n)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new gM({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?oa(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,o){e=e.slice();var a=["center","bottom"];"bottom"===n?(e[1]+=o,a=["center","top"]):"left"===n?e[0]-=o:"right"===n?(e[0]+=o,a=["center","top"]):e[1]-=o;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:a[0],textVerticalAlign:a[1]}}},_renderYearText:function(t,e,i,n){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),r=o.get("position");r||(r="horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=o.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new rM({z2:30});mo(m.style,o,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,a)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var o=n.get("nameMap"),r=n.get("margin"),s=n.get("position"),l=n.get("align"),u=[this._tlpoints,this._blpoints];_(o)&&(o=jN[o.toUpperCase()]||[]);var h="start"===s?0:1,c="horizontal"===e?0:1;r="start"===s?-r:r;for(var d="center"===l,f=0;f=r[0]&&t<=r[1]}if(t===this._dataZoomModel){var n=this._dimName,o=this.getTargetSeriesModels(),a=t.get("filterMode"),r=this._valueWindow;"none"!==a&&$N(o,function(t){var e=t.getData(),o=e.mapDimension(n,!0);o.length&&("weakFilter"===a?e.filterSelf(function(t){for(var i,n,a,s=0;sr[1];if(u&&!h&&!c)return!0;u&&(a=!0),h&&(i=!0),c&&(n=!0)}return a&&i&&n}):$N(o,function(n){if("empty"===a)t.setData(e.map(n,function(t){return i(t)?t:NaN}));else{var o={};o[n]=r,e.selectRange(o)}}),$N(o,function(t){e.setApproximateExtent(r,t)}))})}}};var tO=d,eO=KN,iO=Fs({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var n=By(t);this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=By(t);n(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;U_.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),Vy(this,t),tO([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,o){var a=this.dependentModels[e.axis][i],r=a.__dzAxisProxy||(a.__dzAxisProxy=new QN(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();eO(function(e){var i=e.axisIndex;t[i]=Di(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;eO(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var o="vertical"===e?"y":"x";n[o+"Axis"].length?(i[o+"AxisIndex"]=[0],t=!1):tO(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&eO(function(e){if(t){var n=[],o=this.dependentModels[e.axis];if(o.length&&!n.length)for(var a=0,r=o.length;a0?100:20}},getFirstTargetAxisModel:function(){var t;return eO(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;eO(function(n){tO(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(t,e){var i=this.option;tO([["start","startValue"],["end","endValue"]],function(e){null==t[e[0]]&&null==t[e[1]]||(i[e[0]]=t[e[0]],i[e[1]]=t[e[1]])},this),!e&&Vy(this,t)},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var i in e)if(e.hasOwnProperty(i)&&e[i].hostedBy(this))return e[i];for(var i in e)if(e.hasOwnProperty(i)&&!e[i].hostedBy(this))return e[i]},getRangePropMode:function(){return this._rangePropMode.slice()}}),nO=qI.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,a=0;a0&&e%g)p+=f;else{var i=null==t||isNaN(t)||""===t,n=i?0:aO(t,a,u,!0);i&&!l&&e?(c.push([c[c.length-1][0],0]),d.push([d[d.length-1][0],0])):!i&&l&&(c.push([p,0]),d.push([p,0])),c.push([p,n]),d.push([p,n]),p+=f,l=i}});var m=this.dataZoomModel;this._displayables.barGroup.add(new pM({shape:{points:c},style:r({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new gM({shape:{points:d},style:m.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var i,n=this.ecModel;return t.eachTargetAxis(function(o,a){d(t.getAxisProxy(o.name,a).getTargetSeriesModels(),function(t){if(!(i||!0!==e&&l(cO,t.get("type"))<0)){var r,s=n.getComponent(o.axis,a).axis,u=Gy(o.name),h=t.coordinateSystem;null!=u&&h.getOtherAxis&&(r=h.getOtherAxis(s).inverse),u=t.getData().mapDimension(u),i={thisAxis:s,series:t,thisDim:o.name,otherDim:u,otherAxisInverse:r}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,a=this.dataZoomModel;n.add(t.filler=new oO({draggable:!0,cursor:Fy(this._orient),drift:sO(this._onDragMove,this,"all"),onmousemove:function(t){mw(t.event)},ondragstart:sO(this._showDataInfo,this,!0),ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new oO($n({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}}))),lO([0,1],function(t){var o=Po(a.get("handleIcon"),{cursor:Fy(this._orient),draggable:!0,drift:sO(this._onDragMove,this,t),onmousemove:function(t){mw(t.event)},ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),r=o.getBoundingRect();this._handleHeight=Vo(a.get("handleSize"),this._size[1]),this._handleWidth=r.width/r.height*this._handleHeight,o.setStyle(a.getModel("handleStyle").getItemStyle());var s=a.get("handleColor");null!=s&&(o.style.fill=s),n.add(e[t]=o);var l=a.textStyleModel;this.group.add(i[t]=new rM({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:l.getTextColor(),textFont:l.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[aO(t[0],[0,100],e,!0),aO(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];QL(e,n,o,i.get("zoomLock")?"all":t,null!=a.minSpan?aO(a.minSpan,r,o,!0):null,null!=a.maxSpan?aO(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=rO([aO(n[0],o,r,!0),aO(n[1],o,r,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=rO(i.slice()),o=this._size;lO([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a/2,a/2],position:[i[t],o[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=Ao(n.handles[t].parent,this.group),i=Co(0===t?"right":"left",e),s=this._handleWidth/2+hO,l=Do([c[t]+(0===t?-s:s),this._size[1]/2],e);o[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===uO?"middle":i,textAlign:a===uO?i:"center",text:r[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,a=this._orient,r=["",""];if(i.get("showDetail")){var s=i.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,u=this._range,h=t?s.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:s.getDataValueWindow();r=[this._formatLabel(h[0],l),this._formatLabel(h[1],l)]}}var c=rO(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return x(n)?n(t,a):_(n)?n.replace("{value}",a):a},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i){this._dragging=!0;var n=Do([e,i],this._displayables.barGroup.getLocalTransform(),!0),o=this._updateInterval(t,n[0]),a=this.dataZoomModel.get("realtime");this._updateView(!a),o&&a&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get("realtime")&&this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,i=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(i[0]<0||i[0]>e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var t;if(lO(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});iO.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var fO="\0_ec_dataZoom_roams",pO=m,gO=nO.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){gO.superApply(this,"render",arguments),this._range=t.getPercentRange(),d(this.getTargetCoordInfo(),function(e,n){var o=f(e,function(t){return Zy(t.model)});d(e,function(e){var a=e.model,r={};d(["pan","zoom","scrollMove"],function(t){r[t]=pO(mO[t],this,e,n)},this),Wy(i,{coordId:Zy(a),allCoordIds:o,containsPoint:function(t,e,i){return a.coordinateSystem.containPoint([e,i])},dataZoomId:t.id,dataZoomModel:t,getRange:r})},this)},this)},dispose:function(){Hy(this.api,this.dataZoomModel.id),gO.superApply(this,"dispose",arguments),this._range=null}}),mO={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=vO[e](null,[n.originX,n.originY],r,i,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],u=Math.max(1/n.scale,0);a[0]=(a[0]-l)*u+l,a[1]=(a[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return QL(0,a,[0,100],0,h.minSpan,h.maxSpan),this._range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}},pan:Ky(function(t,e,i,n,o,a){var r=vO[n]([a.oldX,a.oldY],[a.newX,a.newY],e,o,i);return r.signal*(t[1]-t[0])*r.pixel/r.pixelLength}),scrollMove:Ky(function(t,e,i,n,o,a){return vO[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})},vO={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.mainType?(r.pixel=e[0]-t[0],r.pixelLength=l[1]-l[0],r.pixelStart=l[0],r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}};Os({getTargetSeries:function(t){var e=R();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){d(n.getAxisProxy(t.name,i).getTargetSeriesModels(),function(t){e.set(t.uid,t)})})}),e},modifyOutputEnd:!0,overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).reset(n,e)}),t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).filterData(n,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})}}),Es("dataZoom",function(t,e){var i=Ny(m(e.eachComponent,e,"dataZoom"),KN,function(t,e){return t.get(e.axisIndex)}),n=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){n.push.apply(n,i(t).nodes)}),d(n,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})});var yO=d,xO=function(t){var e=t&&t.visualMap;y(e)||(e=e?[e]:[]),yO(e,function(t){if(t){$y(t,"splitList")&&!$y(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&y(e)&&yO(e,function(t){w(t)&&($y(t,"start")&&!$y(t,"min")&&(t.min=t.start),$y(t,"end")&&!$y(t,"max")&&(t.max=t.end))})}})};lI.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"});var _O=VT.VISUAL.COMPONENT;Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=[];return e.eachComponent("visualMap",function(e){var n=t.pipelineContext;!e.isTargetSeries(t)||n&&n.large||i.push(ny(e.stateList,e.targetVisuals,m(e.getValueState,e),e.getDataDimension(t.getData())))}),i}}),Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=t.getData(),n=[];e.eachComponent("visualMap",function(e){if(e.isTargetSeries(t)){var o=e.getVisualMeta(m(Jy,null,t,e))||{stops:[],outerColors:[]},a=e.getDataDimension(i),r=i.getDimensionInfo(a);null!=r&&(o.dimension=r.index,n.push(o))}}),t.getData().setVisual("visualMeta",n)}});var wO={get:function(t,e,n){var o=i((bO[t]||{})[e]);return n&&y(o)?o[o.length-1]:o}},bO={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},SO=hL.mapVisual,MO=hL.eachVisual,IO=y,TO=d,AO=Fo,DO=Bo,CO=B,LO=Fs({type:"visualMap",dependencies:["series"],stateList:["inRange","outOfRange"],replacableOptionKeys:["inRange","outOfRange","target","controller","color"],dataBound:[-1/0,1/0],layoutMode:{type:"box",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:"all",min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:"#333"}},init:function(t,e,i){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this.mergeDefaultAndTheme(t,i)},optionUpdated:function(t,e){var i=this.option;U_.canvasSupported||(i.realtime=!1),!e&&ey(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=m(t,this),this.controllerVisuals=ty(this.option.controller,e,t),this.targetVisuals=ty(this.option.target,e,t)},getTargetSeriesIndices:function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,i){e.push(i)}):e=Di(t),e},eachTargetSeries:function(t,e){d(this.getTargetSeriesIndices(),function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===l[0]?"min":t===l[1]?"max":(+t).toFixed(Math.min(s,20))}var o,a,r=this.option,s=r.precision,l=this.dataBound,u=r.formatter;return i=i||["<",">"],y(t)&&(t=t.slice(),o=!0),a=e?t:o?[n(t[0]),n(t[1])]:n(t),_(u)?u.replace("{value}",o?a[0]:a).replace("{value2}",o?a[1]:a):x(u)?o?u(t[0],t[1]):u(t):o?t[0]===l[0]?i[0]+" "+a[1]:t[1]===l[1]?i[1]+" "+a[0]:a[0]+" - "+a[1]:a},resetExtent:function(){var t=this.option,e=AO([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension,i=t.dimensions;if(null!=e||i.length){if(null!=e)return t.getDimension(e);for(var n=t.dimensions,o=n.length-1;o>=0;o--){var a=n[o];if(!t.getDimensionInfo(a).isCalculationCoord)return a}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){IO(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")},TO(this.stateList,function(e){var i=t[e];if(_(i)){var n=wO.get(i,"active",l);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}var e=this.ecModel,o=this.option,a={inRange:o.inRange,outOfRange:o.outOfRange},r=o.target||(o.target={}),s=o.controller||(o.controller={});n(r,a),n(s,a);var l=this.isCategory();t.call(this,r),t.call(this,s),function(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},TO(n,function(t,e){if(hL.isValidType(e)){var i=wO.get(e,"inactive",l);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}.call(this,r,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,o=this.get("inactiveColor");TO(this.stateList,function(a){var r=this.itemSize,s=t[a];s||(s=t[a]={color:l?o:[o]}),null==s.symbol&&(s.symbol=e&&i(e)||(l?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=n&&i(n)||(l?r[0]:[r[0],r[0]])),s.symbol=SO(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var u=s.symbolSize;if(null!=u){var h=-1/0;MO(u,function(t){t>h&&(h=t)}),s.symbolSize=SO(u,function(t){return DO(t,[0,h],[0,r[0]],!0)})}},this)}.call(this,s)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:CO,getValueState:CO,getVisualMeta:CO}),kO=[20,140],PO=LO.extend({type:"visualMap.continuous",defaultOption:{align:"auto",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:null},optionUpdated:function(t,e){PO.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){PO.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=kO[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=kO[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):y(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){LO.prototype.completeVisualOption.apply(this,arguments),d(this.stateList,function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this.option.range=t.slice(),this._resetRange()},getSelected:function(){var t=this.getExtent(),e=Fo((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){o.push({value:e,color:t(e,i)})}for(var i=Qy(0,0,this.getExtent()),n=Qy(0,0,this.option.range.slice()),o=[],a=0,r=0,s=n.length,l=i.length;rt[1])break;i.push({color:this.getControllerVisual(a,"color",e),offset:o/100})}return i.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),i},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get("inverse");return new tb("horizontal"!==e||i?"horizontal"===e&&i?{scale:"bottom"===t?[-1,1]:[1,1],rotation:-Math.PI/2}:"vertical"!==e||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:"bottom"===t?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,a=i.handleLabels;EO([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=Do(i.handleLabelPoints[r],Ao(s,this.group));a[r].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[r]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===r?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),r=o.itemSize,s=[0,r[1]],l=OO(t,a,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",ox(!!i,n,l,r[1]));var c={convertOpacityToAlpha:!0},d=this.getControllerVisual(t,"color",c);h.setStyle("fill",d);var f=Do(u.indicatorLabelPoint,Ao(h,this.group)),p=u.indicatorLabel;p.attr("invisible",!1);var g=this._applyTransform("left",u.barGroup),m=this._orient;p.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===m?g:"middle",textAlign:"horizontal"===m?"center":g,x:f[0],y:f[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=RO(zO(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i.option.hoverLink){var o=[0,n[1]],a=i.getExtent();t=RO(zO(o[0],t),o[1]);var r=ax(i,a,o),s=[t-r,t+r],l=OO(t,o,a,!0),u=[OO(s[0],o,a,!0),OO(s[1],o,a,!0)];s[0]o[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",r):u[1]===1/0?this._showIndicator(l,u[0],"> ",r):this._showIndicator(l,l,"≈ ",r));var h=this._hoverLinkDataIndices,c=[];(e||rx(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=Ri(h,c);this._dispatchHighDown("downplay",ex(d[0])),this._dispatchHighDown("highlight",ex(d[1]))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t.target,i=this.visualMapModel;if(e&&null!=e.dataIndex){var n=this.ecModel.getSeriesByIndex(e.seriesIndex);if(i.isTargetSeries(n)){var o=n.getData(e.dataType),a=o.get(i.getDataDimension(o),e.dataIndex,!0);isNaN(a)||this._showIndicator(a,a)}}},_hideIndicator:function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",ex(t)),t.length=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},_applyTransform:function(t,e,i,n){var o=Ao(e,n?null:this.group);return zM[y(t)?"applyTransform":"transformDirection"](t,o,i)},_dispatchHighDown:function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});Es({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})}),Ns(xO);var FO=LO.extend({type:"visualMap.piecewise",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieceList:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(t,e){FO.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();WO[this._mode].call(this),this._resetSelected(t,e);var o=this.option.categories;this.resetVisual(function(t,e){"categories"===n?(t.mappingMethod="category",t.categories=i(o)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=f(this._pieceList,function(t){var t=i(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(w(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=hL.listVisualTypes(),o=this.isCategory();d(e.pieces,function(t){d(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),d(i,function(i,n){var a=0;d(this.stateList,function(i){a|=t(e,i,n)||t(e.target,i,n)},this),!a&&d(this.stateList,function(t){(e[t]||(e[t]={}))[n]=wO.get(n,"inRange"===t?"active":"inactive",o)})},this),LO.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,d(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var a=!1;d(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(a?o[i]=!1:a=!0)},this)}},getSelectedMapKey:function(t){return"categories"===this._mode?t.value+"":t.index+""},getPieceList:function(){return this._pieceList},_determineMode:function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=i(t)},getValueState:function(t){var e=hL.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){hL.findPieceIndex(e,this._pieceList)===t&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getRepresentValue:function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var i=t.interval||[];e=i[0]===-1/0&&i[1]===1/0?0:(i[0]+i[1])/2}return e},getVisualMeta:function(t){function e(e,a){var r=o.getRepresentValue({interval:e});a||(a=o.getValueState(r));var s=t(r,a);e[0]===-1/0?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,a=this._pieceList.slice();if(a.length){var r=a[0].interval[0];r!==-1/0&&a.unshift({interval:[-1/0,r]}),(r=a[a.length-1].interval[1])!==1/0&&a.push({interval:[r,1/0]})}else a.push({interval:[-1/0,1/0]});var s=-1/0;return d(a,function(t){var i=t.interval;i&&(i[0]>s&&e([s,i[0]],"outOfRange"),e(i.slice()),s=i[1])},this),{stops:i,outerColors:n}}}}),WO={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.toFixed(i);var r=0;t.minOpen&&e.push({index:r++,interval:[-1/0,n[0]],close:[0,0]});for(var s=n[0],l=r+o;r","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};NO.extend({type:"visualMap.piecewise",doRender:function(){var t=this.group;t.removeAll();var e=this.visualMapModel,i=e.get("textGap"),n=e.textStyleModel,o=n.getFont(),a=n.getTextColor(),r=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=T(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,r),d(l.viewPieceList,function(n){var l=n.piece,u=new tb;u.onclick=m(this._onItemClick,this,l),this._enableHoverLink(u,n.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var d=this.visualMapModel.getValueState(c);u.add(new rM({style:{x:"right"===r?-i:s[0]+i,y:s[1]/2,text:l.text,textVerticalAlign:"middle",textAlign:r,textFont:o,textFill:a,opacity:"outOfRange"===d?.5:1}}))}t.add(u)},this),u&&this._renderEndsText(t,u[1],s,h,r),aI(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:ex(i.findTargetDataIndices(e))})}t.on("mouseover",m(i,this,"highlight")).on("mouseout",m(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return tx(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new tb,r=this.visualMapModel.textStyleModel;a.add(new rM({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=f(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),o=t.get("inverse");return("horizontal"===n?o:!o)?e.reverse():i&&(i=i.slice().reverse()),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(Jl(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,n=e.option,o=i(n.selected),a=e.getSelectedMapKey(t);"single"===n.selectedMode?(o[a]=!0,d(o,function(t,e){o[e]=e===a})):o[a]=!o[a],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:o})}});Ns(xO);var HO=ta,ZO=ia,UO=Fs({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,n){var o=this.constructor,r=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType,!0),s=t[r];i&&i.data?(s?s.mergeOption(i,e,!0):(n&&ux(i),d(i.data,function(t){t instanceof Array?(ux(t[0]),ux(t[1])):ux(t)}),a(s=new o(i,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),t[r]=s):t[r]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=y(i)?f(i,HO).join(", "):HO(i),o=e.getName(t),a=ZO(this.name);return(null!=i||o)&&(a+="
"),o&&(a+=ZO(o),null!=i&&(a+=" : ")),null!=i&&(a+=ZO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(UO,ZI),UO.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var XO=l,jO=v,YO={min:jO(dx,"min"),max:jO(dx,"max"),average:jO(dx,"average")},qO=Ws({type:"marker",init:function(){this.markerGroupMap=R()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});qO.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(xx(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,r=t.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,new Du),u=_x(o,t,e);e.setData(u),xx(e.getData(),t,n),u.each(function(t){var i=u.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),u.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||r.getVisual("color"),symbol:i.getShallow("symbol")})}),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markPoint=t.markPoint||{}}),UO.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});var KO=function(t,e,o,r){var s=t.getData(),l=r.type;if(!y(r)&&("min"===l||"max"===l||"average"===l||"median"===l||null!=r.xAxis||null!=r.yAxis)){var u,h;if(null!=r.yAxis||null!=r.xAxis)u=null!=r.yAxis?"y":"x",e.getAxis(u),h=T(r.yAxis,r.xAxis);else{var c=px(r,s,e,t);u=c.valueDataDim,c.valueAxis,h=yx(s,u,l)}var d="x"===u?0:1,f=1-d,p=i(r),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-1/0,g.coord[f]=1/0;var m=o.get("precision");m>=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),p.coord[d]=g.coord[d]=h,r=[p,g,{type:l,valueIndex:r.valueIndex,value:h}]}return r=[fx(t,r[0]),fx(t,r[1]),a({},r[2])],r[2].type=r[2].type||"",n(r[2],r[0]),n(r[2],r[1]),r};qO.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){Ix(o,e,!0,t,i),Ix(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);Ix(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||g[o?0:1],symbol:a.get("symbol",!0)||p[o?0:1],color:a.get("itemStyle.color")||s.getVisual("color")})}var a=t.coordinateSystem,r=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(r)||l.set(r,new sf);this.group.add(u.group);var h=Tx(a,t,e),c=h.from,d=h.to,f=h.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");y(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),h.from.each(function(t){o(c,t,!0),o(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),u.updateData(f),h.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),u.__keep=!0,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markLine=t.markLine||{}}),UO.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});var $O=function(t,e,i,n){var a=fx(t,n[0]),r=fx(t,n[1]),s=T,l=a.coord,u=r.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),u[0]=s(u[0],1/0),u[1]=s(u[1],1/0);var h=o([{},a,r]);return h.coord=[a.coord,r.coord],h.x0=a.x,h.y0=a.y,h.x1=r.x,h.y1=r.y,h},JO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];qO.extend({type:"markArea",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=f(JO,function(o){return Lx(n,e,o,t,i)});n.setItemLayout(e,o),n.getItemGraphicEl(e).setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(a)||l.set(a,{group:new tb});this.group.add(u.group),u.__keep=!0;var h=kx(o,t,e);e.setData(h),h.each(function(e){h.setItemLayout(e,f(JO,function(i){return Lx(h,e,i,t,n)})),h.setItemVisual(e,{color:s.getVisual("color")})}),h.diff(u.__data).add(function(t){var e=new pM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);Io(n,{shape:{points:h.getItemLayout(t)}},e,t),u.group.add(n),h.setItemGraphicEl(t,n)}).remove(function(t){var e=u.__data.getItemGraphicEl(t);u.group.remove(e)}).execute(),h.eachItemGraphicEl(function(t,i){var n=h.getItemModel(i),o=n.getModel("label"),a=n.getModel("emphasis.label"),s=h.getItemVisual(i,"color");t.useStyle(r(n.getModel("itemStyle").getItemStyle(),{fill:Yt(s,.4),stroke:s})),t.hoverStyle=n.getModel("emphasis.itemStyle").getItemStyle(),go(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),fo(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markArea=t.markArea||{}});lI.registerSubTypeDefaulter("timeline",function(){return"slider"}),Es({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),r({currentIndex:i.option.currentIndex},t)}),Es({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var QO=lI.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){QO.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],n=t.axisType,o=this._names=[];if("category"===n){var a=[];d(e,function(t,e){var n,r=Li(t);w(t)?(n=i(t)).value=e:n=e,a.push(n),_(r)||null!=r&&!isNaN(r)||(r=""),o.push(r+"")}),e=a}var r={category:"ordinal",time:"time"}[n]||"number";(this._data=new vA([{name:"value",type:r}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});h(QO.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}}),ZI);var tE=qI.extend({type:"timeline"}),eE=function(t,e,i,n){aD.call(this,t,e,i),this.type=n||"value",this.model=null};eE.prototype={constructor:eE,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(eE,aD);var iE=m,nE=d,oE=Math.PI;tE.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return ia(s.scale.getLabel(t))},nE(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,a,s,t)},this),this._renderAxisLabel(o,r,s,t),this._position(o,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),o=Ex(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2=0||"+"===i?"left":"right"},r={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},s={horizontal:0,vertical:oE/2},l="vertical"===n?o.height:o.width,u=t.getModel("controlStyle"),h=u.get("show",!0),c=h?u.get("itemSize"):0,d=h?u.get("itemGap"):0,f=c+d,p=t.get("label.rotate")||0;p=p*oE/180;var g,m,v,y,x=u.get("position",!0),_=h&&u.get("showPlayBtn",!0),w=h&&u.get("showPrevBtn",!0),b=h&&u.get("showNextBtn",!0),S=0,M=l;return"left"===x||"bottom"===x?(_&&(g=[0,0],S+=f),w&&(m=[S,0],S+=f),b&&(v=[M-c,0],M-=f)):(_&&(g=[M-c,0],M-=f),w&&(m=[0,0],S+=f),b&&(v=[M-c,0],M-=f)),y=[S,M],t.get("inverse")&&y.reverse(),{viewRect:o,mainLength:l,orient:n,rotation:s[n],labelRotation:p,labelPosOpt:i,labelAlign:t.get("label.align")||a[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||r[n],playPosition:g,prevBtnPosition:m,nextBtnPosition:v,axisExtent:y,controlSize:c,controlGap:d}},_position:function(t,e){function i(t){var e=t.position;t.origin=[c[0][0]-e[0],c[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var a=this._mainGroup,r=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=xt(),u=s.x,h=s.y+s.height;St(l,l,[-u,-h]),Mt(l,l,-oE/2),St(l,l,[u,h]),(s=s.clone()).applyTransform(l)}var c=n(s),d=n(a.getBoundingRect()),f=n(r.getBoundingRect()),p=a.position,g=r.position;g[0]=p[0]=c[0][0];var m=t.labelPosOpt;if(isNaN(m))o(p,d,c,1,v="+"===m?0:1),o(g,f,c,1,1-v);else{var v=m>=0?0:1;o(p,d,c,1,v),g[1]=p[1]+m}a.attr("position",p),r.attr("position",g),a.rotation=r.rotation=t.rotation,i(a),i(r)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=Hl(e,n);o.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var a=i.getDataExtent("value");o.setExtent(a[0],a[1]),o.niceTicks();var r=new eE("value",o,t.axisExtent,n);return r.model=e,r},_createGroup:function(t){var e=this["_"+t]=new tb;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new _M({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:a({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),a=i.scale.getTicks();nE(a,function(t){var a=i.dataToCoord(t),r=o.getItemModel(t),s=r.getModel("itemStyle"),l=r.getModel("emphasis.itemStyle"),u={position:[a,0],onclick:iE(this._changeTimeline,this,t)},h=zx(r,s,e,u);fo(h,l.getItemStyle()),r.get("tooltip")?(h.dataIndex=t,h.dataModel=n):h.dataIndex=h.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){if(i.getLabelModel().get("show")){var o=n.getData(),a=i.getViewLabels();nE(a,function(n){var a=n.tickValue,r=o.getItemModel(a),s=r.getModel("label"),l=r.getModel("emphasis.label"),u=i.dataToCoord(n.tickValue),h=new rM({position:[u,0],rotation:t.labelRotation-t.rotation,onclick:iE(this._changeTimeline,this,a),silent:!1});mo(h.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(h),fo(h,mo({},l))},this)}},_renderControl:function(t,e,i,n){function o(t,i,o,h){if(t){var c=Rx(n,i,u,{position:t,origin:[a/2,0],rotation:h?-r:0,rectHover:!0,style:s,onclick:o});e.add(c),fo(c,l)}}var a=t.controlSize,r=t.rotation,s=n.getModel("controlStyle").getItemStyle(),l=n.getModel("emphasis.controlStyle").getItemStyle(),u=[0,-a/2,a,a],h=n.getPlayState(),c=n.get("inverse",!0);o(t.nextBtnPosition,"controlStyle.nextIcon",iE(this._changeTimeline,this,c?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",iE(this._changeTimeline,this,c?"+":"-")),o(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),iE(this._handlePlayClick,this,!h),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),a=n.getCurrentIndex(),r=o.getItemModel(a).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=iE(s._handlePointerDrag,s),t.ondragend=iE(s._handlePointerDragend,s),Bx(t,a,i,n,!0)},onUpdate:function(t){Bx(t,a,i,n)}};this._currentPointer=zx(r,r,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i.offsetX,i.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=Fo(this._axis.getExtent().slice());i>n[1]&&(i=n[1]),ii.getHeight()&&(n.textPosition="top",l=!0);var u=l?-5-o.height:s+8;a+o.width/2>i.getWidth()?(n.textPosition=["100%",u],n.textAlign="right"):a-o.width/2<0&&(n.textPosition=[0,u],n.textAlign="left")}})}},updateView:function(t,e,i,n){d(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(t,e){d(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){d(this._features,function(i){i.dispose&&i.dispose(t,e)})}});var rE=rT.toolbox.saveAsImage;Gx.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:rE.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:rE.lang.slice()},Gx.prototype.unusable=!U_.canvasSupported,Gx.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=document.createElement("a"),a=i.get("type",!0)||"png";o.download=n+"."+a,o.target="_blank";var r=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(o.href=r,"function"!=typeof MouseEvent||U_.browser.ie||U_.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(r.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,n+"."+a)}else{var c=i.get("lang"),d='';window.open().document.write(d)}else{var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(f)}},Ty("saveAsImage",Gx);var sE=rT.toolbox.magicType;Fx.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z",tiled:"M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z"},title:i(sE.title),option:{},seriesIndex:{}};var lE=Fx.prototype;lE.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return d(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var uE={line:function(t,e,i,o){if("bar"===t)return n({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.line")||{},!0)},bar:function(t,e,i,o){if("line"===t)return n({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.bar")||{},!0)},stack:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:"__ec_magicType_stack__"},o.get("option.stack")||{},!0)},tiled:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:""},o.get("option.tiled")||{},!0)}},hE=[["line","bar"],["stack","tiled"]];lE.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(uE[i]){var a={series:[]};d(hE,function(t){l(t,i)>=0&&d(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},function(e){var o=e.subType,s=e.id,l=uE[i](o,s,e,n);l&&(r(l,e.option),a.series.push(l));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var c=h.dim+"Axis",d=t.queryComponents({mainType:c,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;a[c]=a[c]||[];for(var f=0;f<=d;f++)a[c][d]=a[c][d]||{};a[c][d].boundaryGap="bar"===i}}}),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:a})}},Es({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Ty("magicType",Fx);var cE=rT.toolbox.dataView,dE=new Array(60).join("-"),fE="\t",pE=new RegExp("["+fE+"]+","g");$x.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:i(cE.title),lang:i(cE.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},$x.prototype.onclick=function(t,e){function i(){n.removeChild(a),x._dom=null}var n=e.getDom(),o=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=o.get("backgroundColor")||"#fff";var r=document.createElement("h4"),s=o.get("lang")||[];r.innerHTML=s[0]||o.get("title"),r.style.cssText="margin: 10px 20px;",r.style.color=o.get("textColor");var l=document.createElement("div"),u=document.createElement("textarea");l.style.cssText="display:block;width:100%;overflow:auto;";var h=o.get("optionToContent"),c=o.get("contentToOption"),d=Ux(t);if("function"==typeof h){var f=h(e.getOption());"string"==typeof f?l.innerHTML=f:M(f)&&l.appendChild(f)}else l.appendChild(u),u.readOnly=o.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=o.get("textColor"),u.style.borderColor=o.get("textareaBorderColor"),u.style.backgroundColor=o.get("textareaColor"),u.value=d.value;var p=d.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:0;left:0;right:0;";var m="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),y=document.createElement("div");m+=";background-color:"+o.get("buttonColor"),m+=";color:"+o.get("buttonTextColor");var x=this;ht(v,"click",i),ht(y,"click",function(){var t;try{t="function"==typeof c?c(l,e.getOption()):Kx(u.value,p)}catch(t){throw i(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),v.innerHTML=s[1],y.innerHTML=s[2],y.style.cssText=m,v.style.cssText=m,!o.get("readOnly")&&g.appendChild(y),g.appendChild(v),ht(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+fE+e.substring(n),this.selectionStart=this.selectionEnd=i+1,mw(t)}}),a.appendChild(r),a.appendChild(l),a.appendChild(g),l.style.height=n.clientHeight-80+"px",n.appendChild(a),this._dom=a},$x.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},$x.prototype.dispose=function(t,e){this.remove(t,e)},Ty("dataView",$x),Es({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];d(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:Jx(t.data,o)})}else i.push(a({type:"scatter"},t))}),e.mergeOption(r({series:i},t.newOption))});var gE=d,mE="\0_ec_hist_store";iO.extend({type:"dataZoom.select"}),nO.extend({type:"dataZoom.select"});var vE=rT.toolbox.dataZoom,yE=d,xE="\0_ec_\0toolbox-dataZoom_";o_.defaultOption={show:!0,icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:i(vE.title)};var _E=o_.prototype;_E.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,s_(t,e,this,n,i),r_(t,e)},_E.onclick=function(t,e,i){wE[i].call(this)},_E.remove=function(t,e){this._brushController.unmount()},_E.dispose=function(t,e){this._brushController.dispose()};var wE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(t_(this.ecModel))}};_E._onBrush=function(t,e){function i(t,e,i){var r=e.getAxis(t),s=r.model,l=n(t,s,a),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(i=QL(0,i.slice(),r.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(o[l.id]={dataZoomId:l.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){i.getAxisModel(t,e.componentIndex)&&(n=i)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]),new hy(a_(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),Qx(a,o),this._dispatchZoomAction(o)}},_E._dispatchZoomAction=function(t){var e=[];yE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},Ty("dataZoom",o_),Ns(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"===a||y(a)||(a=!1===a||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"===a||-1!==l(a,i)){var r={type:"select",$fromToolbox:!0,id:xE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),yE(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);y(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(y(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}});var bE=rT.toolbox.restore;l_.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:bE.title},l_.prototype.onclick=function(t,e,i){e_(t),e.dispatchAction({type:"restore",from:this.uid})},Ty("restore",l_),Es({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var SE,ME="urn:schemas-microsoft-com:vml",IE="undefined"==typeof window?null:window,TE=!1,AE=IE&&IE.document;if(AE&&!U_.canvasSupported)try{!AE.namespaces.zrvml&&AE.namespaces.add("zrvml",ME),SE=function(t){return AE.createElement("')}}catch(t){SE=function(t){return AE.createElement("<"+t+' xmlns="'+ME+'" class="zrvml">')}}var DE=ES.CMD,CE=Math.round,LE=Math.sqrt,kE=Math.abs,PE=Math.cos,NE=Math.sin,OE=Math.max;if(!U_.canvasSupported){var EE=21600,RE=EE/2,zE=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=EE+","+EE,t.coordorigin="0,0"},BE=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},VE=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},GE=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},FE=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},WE=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},HE=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},ZE=function(t,e,i){var n=Gt(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=VE(n[0],n[1],n[2]),t.opacity=i*n[3])},UE=function(t){var e=Gt(t);return[VE(e[0],e[1],e[2]),e[3]]},XE=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof IM){var o,a=0,r=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){o="gradient";var d=i.transform,f=[n.x*h,n.y*c],p=[n.x2*h,n.y2*c];d&&(Q(f,f,d),Q(p,p,d));var g=p[0]-f[0],m=p[1]-f[1];(a=180*Math.atan2(g,m)/Math.PI)<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial";var f=[n.x*h,n.y*c],d=i.transform,v=i.scale,y=h,x=c;r=[(f[0]-u.x)/y,(f[1]-u.y)/x],d&&Q(f,f,d),y/=v[0]*EE,x/=v[1]*EE;var _=OE(y,x);s=0/_,l=2*n.r/_-s}var w=n.colorStops.slice();w.sort(function(t,e){return t.offset-e.offset});for(var b=w.length,S=[],M=[],I=0;I=2){var D=S[0][0],C=S[1][0],L=S[0][1]*e.opacity,k=S[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=D,t.color2=C,t.colors=M.join(","),t.opacity=k,t.opacity2=L}"radial"===o&&(t.focusposition=r.join(","))}else ZE(t,n,e.opacity)},jE=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof IM||ZE(t,e.stroke,e.opacity)},YE=function(t,e,i,n){var o="fill"===e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof IM&&FE(t,a),a||(a=u_(e)),o?XE(a,i,n):jE(a,i),GE(t,a)):(t[o?"filled":"stroked"]="false",FE(t,a))},qE=[[],[],[]],KE=function(t,e){var i,n,o,a,r,s,l=DE.M,u=DE.C,h=DE.L,c=DE.A,d=DE.Q,f=[],p=t.data,g=t.len();for(a=0;a.01?N&&(O+=.0125):Math.abs(E-D)<1e-4?N&&OA?x-=.0125:x+=.0125:N&&ED?y+=.0125:y-=.0125),f.push(R,CE(((A-C)*M+b)*EE-RE),",",CE(((D-L)*I+S)*EE-RE),",",CE(((A+C)*M+b)*EE-RE),",",CE(((D+L)*I+S)*EE-RE),",",CE((O*M+b)*EE-RE),",",CE((E*I+S)*EE-RE),",",CE((y*M+b)*EE-RE),",",CE((x*I+S)*EE-RE)),r=y,s=x;break;case DE.R:var z=qE[0],B=qE[1];z[0]=p[a++],z[1]=p[a++],B[0]=z[0]+p[a++],B[1]=z[1]+p[a++],e&&(Q(z,z,e),Q(B,B,e)),z[0]=CE(z[0]*EE-RE),B[0]=CE(B[0]*EE-RE),z[1]=CE(z[1]*EE-RE),B[1]=CE(B[1]*EE-RE),f.push(" m ",z[0],",",z[1]," l ",B[0],",",z[1]," l ",B[0],",",B[1]," l ",z[0],",",B[1]);break;case DE.Z:f.push(" x ")}if(i>0){f.push(n);for(var V=0;V100&&(tR=0,QE={});var i,n=eR.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(t){}e={style:n.fontStyle||"normal",variant:n.fontVariant||"normal",weight:n.fontWeight||"normal",size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},QE[t]=e,tR++}return e};!function(t,e){bb[t]=e}("measureText",function(t,e){var i=AE;JE||((JE=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",AE.body.appendChild(JE));try{JE.style.font=e}catch(t){}return JE.innerHTML="",JE.appendChild(i.createTextNode(t)),{width:JE.offsetWidth}});for(var nR=new de,oR=[Db,di,fi,Pn,rM],aR=0;aR=o&&u+1>=a){for(var h=[],c=0;c=o&&c+1>=a)return T_(0,s.components);l[i]=s}else l[i]=void 0}r++}();if(d)return d}},pushComponent:function(t,e,i){var n=t[t.length-1];n&&n.added===e&&n.removed===i?t[t.length-1]={count:n.count+1,added:e,removed:i}:t.push({count:1,added:e,removed:i})},extractCommon:function(t,e,i,n){for(var o=e.length,a=i.length,r=t.newPos,s=r-n,l=0;r+1=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},D_.prototype.update=function(t,e){if(t){var i=this.getDefs(!1);if(t[this._domName]&&i.contains(t[this._domName]))"function"==typeof e&&e(t);else{var n=this.add(t);n&&(t[this._domName]=n)}}},D_.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},D_.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},D_.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return d(this._tagNames,function(i){var n=t.getElementsByTagName(i);e=e.concat([].slice.call(n))}),e},D_.prototype.markAllUnused=function(){var t=this;d(this.getDoms(),function(e){e[t._markLabel]="0"})},D_.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},D_.prototype.removeUnused=function(){var t=this.getDefs(!1);if(t){var e=this;d(this.getDoms(),function(i){"1"!==i[e._markLabel]&&t.removeChild(i)})}},D_.prototype.getSvgProxy=function(t){return t instanceof Pn?yR:t instanceof fi?xR:t instanceof rM?_R:yR},D_.prototype.getTextSvgElement=function(t){return t.__textSvgEl},D_.prototype.getSvgElement=function(t){return t.__svgEl},u(C_,D_),C_.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var i=this;d(["fill","stroke"],function(n){if(e.style[n]&&("linear"===e.style[n].type||"radial"===e.style[n].type)){var o,a=e.style[n],r=i.getDefs(!0);a._dom?(o=a._dom,r.contains(a._dom)||i.addDom(o)):o=i.add(a),i.markUsed(e);var s=o.getAttribute("id");t.setAttribute(n,"url(#"+s+")")}})}},C_.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return Yw("Illegal gradient type."),null;e=this.createElement("radialGradient")}return t.id=t.id||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-gradient-"+t.id),this.updateDom(t,e),this.addDom(e),e},C_.prototype.update=function(t){var e=this;D_.prototype.update.call(this,t,function(){var i=t.type,n=t._dom.tagName;"linear"===i&&"linearGradient"===n||"radial"===i&&"radialGradient"===n?e.updateDom(t,t._dom):(e.removeDom(t),e.add(t))})},C_.prototype.updateDom=function(t,e){if("linear"===t.type)e.setAttribute("x1",t.x),e.setAttribute("y1",t.y),e.setAttribute("x2",t.x2),e.setAttribute("y2",t.y2);else{if("radial"!==t.type)return void Yw("Illegal gradient type.");e.setAttribute("cx",t.x),e.setAttribute("cy",t.y),e.setAttribute("r",t.r)}t.global?e.setAttribute("gradientUnits","userSpaceOnUse"):e.setAttribute("gradientUnits","objectBoundingBox"),e.innerHTML="";for(var i=t.colorStops,n=0,o=i.length;n0){var n,o,a=this.getDefs(!0),r=e[0],s=i?"_textDom":"_dom";r[s]?(o=r[s].getAttribute("id"),n=r[s],a.contains(n)||a.appendChild(n)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(n=this.createElement("clipPath")).setAttribute("id",o),a.appendChild(n),r[s]=n);var l=this.getSvgProxy(r);if(r.transform&&r.parent.invTransform&&!i){var u=Array.prototype.slice.call(r.transform);bt(r.transform,r.parent.invTransform,r.transform),l.brush(r),r.transform=u}else l.brush(r);var h=this.getSvgElement(r);n.innerHTML="",n.appendChild(h.cloneNode()),t.setAttribute("clip-path","url(#"+o+")"),e.length>1&&this.updateDom(n,e.slice(1),i)}else t&&t.setAttribute("clip-path","none")},L_.prototype.markUsed=function(t){var e=this;t.__clipPaths&&t.__clipPaths.length>0&&d(t.__clipPaths,function(t){t._dom&&D_.prototype.markUsed.call(e,t._dom),t._textDom&&D_.prototype.markUsed.call(e,t._textDom)})},u(k_,D_),k_.prototype.addWithoutUpdate=function(t,e){if(e&&P_(e.style)){var i,n=e.style;n._shadowDom?(i=n._shadowDom,this.getDefs(!0).contains(n._shadowDom)||this.addDom(i)):i=this.add(e),this.markUsed(e);var o=i.getAttribute("id");t.style.filter="url(#"+o+")"}},k_.prototype.add=function(t){var e=this.createElement("filter"),i=t.style;return i._shadowDomId=i._shadowDomId||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-shadow-"+i._shadowDomId),this.updateDom(t,e),this.addDom(e),e},k_.prototype.update=function(t,e){var i=e.style;if(P_(i)){var n=this;D_.prototype.update.call(this,e,function(t){n.updateDom(e,t._shadowDom)})}else this.remove(t,i)},k_.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(e),t.style.filter="")},k_.prototype.updateDom=function(t,e){var i=e.getElementsByTagName("feDropShadow");i=0===i.length?this.createElement("feDropShadow"):i[0];var n,o,a,r,s=t.style,l=t.scale?t.scale[0]||1:1,u=t.scale?t.scale[1]||1:1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)n=s.shadowOffsetX||0,o=s.shadowOffsetY||0,a=s.shadowBlur,r=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);n=s.textShadowOffsetX||0,o=s.textShadowOffsetY||0,a=s.textShadowBlur,r=s.textShadowColor}i.setAttribute("dx",n/l),i.setAttribute("dy",o/u),i.setAttribute("flood-color",r);var h=a/2/l+" "+a/2/u;i.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(a/2*200)+"%"),e.setAttribute("height",Math.ceil(a/2*200)+"%"),e.appendChild(i),s._shadowDom=e},k_.prototype.markUsed=function(t){var e=t.style;e&&e._shadowDom&&D_.prototype.markUsed.call(this,e._shadowDom)};var IR=function(t,e,i,n){this.root=t,this.storage=e,this._opts=i=a({},i||{});var o=p_("svg");o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttribute("version","1.1"),o.setAttribute("baseProfile","full"),o.style.cssText="user-select:none;position:absolute;left:0;top:0;",this.gradientManager=new C_(n,o),this.clipPathManager=new L_(n,o),this.shadowManager=new k_(n,o);var r=document.createElement("div");r.style.cssText="overflow:hidden;position:relative",this._svgRoot=o,this._viewport=r,t.appendChild(r),r.appendChild(o),this.resize(i.width,i.height),this._visibleList=[]};IR.prototype={constructor:IR,getType:function(){return"svg"},getViewportRoot:function(){return this._viewport},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},setBackgroundColor:function(t){this._viewport.style.background=t},_paintList:function(t){this.gradientManager.markAllUnused(),this.clipPathManager.markAllUnused(),this.shadowManager.markAllUnused();var e,i=this._svgRoot,n=this._visibleList,o=t.length,a=[];for(e=0;e=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},resize:function(t,e){var i=this._viewport;i.style.display="none";var n=this._opts;if(null!=t&&(n.width=t),null!=e&&(n.height=e),t=this._getSize(0),e=this._getSize(1),i.style.display="",this._width!==t||this._height!==e){this._width=t,this._height=e;var o=i.style;o.width=t+"px",o.height=e+"px";var a=this._svgRoot;a.setAttribute("width",t),a.setAttribute("height",e)}},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],n=["clientWidth","clientHeight"][t],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||N_(s[i])||N_(r.style[i]))-(N_(s[o])||0)-(N_(s[a])||0)|0},dispose:function(){this.root.innerHTML="",this._svgRoot=this._viewport=this.storage=null},clear:function(){this._viewport&&this.root.removeChild(this._viewport)},pathToDataUrl:function(){return this.refresh(),"data:image/svg+xml;charset=UTF-8,"+this._svgRoot.outerHTML}},d(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){IR.prototype[t]=F_(t)}),Ti("svg",IR),t.version="4.2.1",t.dependencies=ET,t.PRIORITY=VT,t.init=function(t,e,i){var n=ks(t);if(n)return n;var o=new us(t,e,i);return o.id="ec_"+iA++,tA[o.id]=o,Fi(t,oA,o.id),Cs(o),o},t.connect=function(t){if(y(t)){var e=t;t=null,kT(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+nA++,kT(e,function(e){e.group=t})}return eA[t]=!0,t},t.disConnect=Ls,t.disconnect=aA,t.dispose=function(t){"string"==typeof t?t=tA[t]:t instanceof us||(t=ks(t)),t instanceof us&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=ks,t.getInstanceById=function(t){return tA[t]},t.registerTheme=Ps,t.registerPreprocessor=Ns,t.registerProcessor=Os,t.registerPostUpdate=function(t){KT.push(t)},t.registerAction=Es,t.registerCoordinateSystem=Rs,t.getCoordinateSystemDimensions=function(t){var e=Fa.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=zs,t.registerVisual=Bs,t.registerLoading=Gs,t.extendComponentModel=Fs,t.extendComponentView=Ws,t.extendSeriesModel=Hs,t.extendChartView=Zs,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,i){DT.registerMap(t,e,i)},t.getMap=function(t){var e=DT.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool=rA,t.zrender=Hb,t.number=YM,t.format=eI,t.throttle=Pr,t.helper=tD,t.matrix=Sw,t.vector=cw,t.color=Ww,t.parseGeoJSON=iD,t.parseGeoJson=rD,t.util=sD,t.graphic=lD,t.List=vA,t.Model=No,t.Axis=aD,t.env=U_}); \ No newline at end of file diff --git a/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue index 1f8ef4e..daf9096 100644 --- a/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue +++ b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue @@ -2,8 +2,8 @@ {{ d }} {{dayText}} - {{ h }} - {{ showColon ? ':' : hourText }} + {{ h }} + {{ showColon ? ':' : hourText }} {{ i }} {{ showColon ? ':' : minuteText }} {{ s }} @@ -43,6 +43,10 @@ type: Boolean, default: true }, + showHour: { + type: Boolean, + default: true + }, showColon: { type: Boolean, default: true @@ -129,9 +133,10 @@ } }, splitorStyle() { - const { splitorColor, fontSize, backgroundColor } = this + const {color, splitorColor, fontSize, backgroundColor } = this return { - color: splitorColor, + // color: splitorColor, + color, fontSize: `${fontSize * 12 / 14}px`, margin: backgroundColor ? `${fontSize * 4 / 14}px` : '' } diff --git a/uni_modules/wei-dropdown-menu/changelog.md b/uni_modules/wei-dropdown-menu/changelog.md new file mode 100644 index 0000000..fdb5e97 --- /dev/null +++ b/uni_modules/wei-dropdown-menu/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2023-07-07) +增加一些样式配置 +## 1.0.2(2023-07-07) +解决一些bug +## 1.0.1(2023-07-07) +修复弹出位置问题 +## 1.0.0(2023-07-06) +完成基本功能 diff --git a/uni_modules/wei-dropdown-menu/components/wei-dropdown-menu/props.js b/uni_modules/wei-dropdown-menu/components/wei-dropdown-menu/props.js new file mode 100644 index 0000000..d357bf4 --- /dev/null +++ b/uni_modules/wei-dropdown-menu/components/wei-dropdown-menu/props.js @@ -0,0 +1,39 @@ +export const dropdownMenuProps = { + value: { + type: Object, + default: () => {} + }, + data: { + type: Array, + required: true, + default: () => [] + }, + activeColor: { + type: String, + default: '#1989fa' + }, + zIndex: { + type: Number, + default: 10 + }, + overlay: { + type: Boolean, + default: true + }, + closeOnClickOverlay: { + type: Boolean, + default: true + }, + duration: { + type: Number, + default: 0.3 + }, + menuItemStyle: { + type: Object, + default: {}, + }, + popupSytle: { + type: Object, + default: {}, + } +} diff --git a/uni_modules/wei-dropdown-menu/components/wei-dropdown-menu/wei-dropdown-menu.vue b/uni_modules/wei-dropdown-menu/components/wei-dropdown-menu/wei-dropdown-menu.vue new file mode 100644 index 0000000..b39a336 --- /dev/null +++ b/uni_modules/wei-dropdown-menu/components/wei-dropdown-menu/wei-dropdown-menu.vue @@ -0,0 +1,570 @@ + + + diff --git a/uni_modules/wei-dropdown-menu/package.json b/uni_modules/wei-dropdown-menu/package.json new file mode 100644 index 0000000..b7efbb8 --- /dev/null +++ b/uni_modules/wei-dropdown-menu/package.json @@ -0,0 +1,84 @@ +{ + "id": "wei-dropdown-menu", + "displayName": "wei-dropdown-menu", + "version": "1.0.3", + "description": "支持二级分类的下拉菜单列表,兼容小程序、h5、app-nvue", + "keywords": [ + "下拉菜单列表", + "向下弹出菜单列表", + "二级分类搜索", + "头部搜索" +], + "repository": "", + "engines": { + "HBuilderX": "^3.8.7" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "n", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "n", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "u", + "QQ": "u", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/wei-dropdown-menu/readme.md b/uni_modules/wei-dropdown-menu/readme.md new file mode 100644 index 0000000..e0c6a62 --- /dev/null +++ b/uni_modules/wei-dropdown-menu/readme.md @@ -0,0 +1,73 @@ + + +## 介绍 +向下弹出的菜单列表,支持二级分类选择。不依赖任何第三方插件,支持小程序、h5、app-vue。 +注意: 仅支持vue3 +### 基本用法 +``` + + + +``` + +## 属性/事件说明 + +|属性名 |类型 |默认值 |说明 | +|:--:|:--:|:--:|:--:| +|value |Object |{} |传递给组件的值,不支持双向绑定,可以通过监听change自己实现双向绑定| +|data |Array |[] |整个菜单栏的下拉选择的数据,必填,具体看下面说明 +|activeColor |String |#1989fa|菜单标题和选项的选中态颜色 | +|z-index |Number |10 |菜单栏 z-index 层级| +|duration |Number |.2 |动画时长,单位秒,设置为 0 可以禁用动画| +|overlay |Boolean |true |是否显示遮罩层| +|close-on-click-overlay |Boolean |true |是否在点击遮罩层后关闭菜单| +|menuItemStyle |Object |{} |每个菜单栏的样式设置,必须为对象| +|popupSytle |Object |{} |下拉选择项弹出样式设置,必须为对象| +|@change |Function | |当菜单的值改变触发的事件,e = { item: Object, value: Object }| + +### 属性 Data + +Data 属性必须为数组,数组每一项的配置如下 + +|属性名 |类型 |默认值 |说明 | +|:--:|:--:|:--:|:--:| +|name|String|null| 必填,每栏菜单项的唯一标识,也就是组件value值的key| +|title|String|null| 必填,每栏菜单显示的标题| +|options|Array|null| 必填,下拉菜单的选择项,格式 { label:"xxx", value:"xxx", tip: "显示在最右边的提示" }| +|treeSelect|Boolean|false| 是否为二级分类选择, 如果是,options需要有children字段| +|popupHeight|String|null| 弹出选择菜单的高度,如果为空,则会自适应选项高度, 必须带单位 | +|menuWidth|String|null|每项菜单栏的宽度,为空自适应,必须带单位| + +### 后期继续完善的功能 + +- [ ] 增加出更多样式配置 +- [ ] 兼容nvue + +