From 9cea5a5b671473cad7f450ef05074025cb66855a Mon Sep 17 00:00:00 2001 From: Witt Date: Thu, 16 Jul 2020 20:50:56 +0800 Subject: [PATCH] update to the latest version. --- bin/run.bat | 14 + doc/若依环境使用手册.docx | Bin 0 -> 408676 bytes .../demo/controller/DemoDialogController.java | 80 + .../demo/controller/DemoFormController.java | 326 + .../demo/controller/DemoIconController.java | 35 + .../controller/DemoOperateController.java | 326 + .../demo/controller/DemoReportController.java | 53 + .../demo/controller/DemoTableController.java | 423 ++ .../controller/demo/domain/CustomerModel.java | 116 + .../controller/demo/domain/GoodsModel.java | 82 + .../demo/domain/UserOperateModel.java | 149 + .../system/SysRegisterController.java | 46 + .../main/resources/mybatis/mybatis-config.xml | 15 + .../libs/bootstrap-fileinput/fileinput.css | 550 ++ .../libs/bootstrap-fileinput/fileinput.js | 5697 ++++++++++++++++ .../bootstrap-fileinput/fileinput.min.css | 12 + .../libs/bootstrap-fileinput/fileinput.min.js | 10 + .../libs/bootstrap-fileinput/loading-sm.gif | Bin 0 -> 2670 bytes .../ajax/libs/bootstrap-fileinput/loading.gif | Bin 0 -> 847 bytes .../bootstrap-select/bootstrap-select.css | 429 ++ .../libs/bootstrap-select/bootstrap-select.js | 3139 +++++++++ .../bootstrap-select/bootstrap-select.min.css | 6 + .../bootstrap-select/bootstrap-select.min.js | 9 + .../columns/bootstrap-table-fixed-columns.js | 321 + .../editable/bootstrap-editable.css | 663 ++ .../editable/bootstrap-editable.min.js | 7 + .../extensions/editable/clear.png | Bin 0 -> 244 bytes .../extensions/editable/loading.gif | Bin 0 -> 1849 bytes .../reorder/bootstrap-table-reorder.js | 117 + .../extensions/reorder/jquery.tablednd.js | 598 ++ .../static/ajax/libs/cropper/cropper.css | 304 + .../static/ajax/libs/cropper/cropper.js | 3616 ++++++++++ .../static/ajax/libs/cropper/cropper.min.css | 9 + .../static/ajax/libs/cropper/cropper.min.js | 10 + .../ajax/libs/cxselect/jquery.cxselect.js | 406 ++ .../ajax/libs/cxselect/jquery.cxselect.min.js | 11 + .../datapicker/bootstrap-datetimepicker.css | 418 ++ .../datapicker/bootstrap-datetimepicker.js | 1978 ++++++ .../bootstrap-datetimepicker.min.css | 9 + .../bootstrap-datetimepicker.min.js | 1 + .../duallistbox/bootstrap-duallistbox.css | 86 + .../libs/duallistbox/bootstrap-duallistbox.js | 841 +++ .../duallistbox/bootstrap-duallistbox.min.css | 1 + .../duallistbox/bootstrap-duallistbox.min.js | 10 + .../static/ajax/libs/flot/curvedLines.js | 315 + .../static/ajax/libs/flot/jquery.flot.js | 2599 ++++++++ .../static/ajax/libs/flot/jquery.flot.pie.js | 750 +++ .../ajax/libs/flot/jquery.flot.resize.js | 60 + .../ajax/libs/flot/jquery.flot.spline.js | 212 + .../ajax/libs/flot/jquery.flot.symbol.js | 71 + .../ajax/libs/flot/jquery.flot.tooltip.min.js | 12 + .../ajax/libs/jasny/jasny-bootstrap.css | 621 ++ .../static/ajax/libs/jasny/jasny-bootstrap.js | 1025 +++ .../ajax/libs/jasny/jasny-bootstrap.min.css | 7 + .../ajax/libs/jasny/jasny-bootstrap.min.js | 6 + .../ajax/libs/jsonview/jquery.jsonview.css | 50 + .../ajax/libs/jsonview/jquery.jsonview.js | 250 + .../ajax/libs/layer/theme/moon/default.png | Bin 0 -> 7563 bytes .../ajax/libs/layer/theme/moon/style.css | 138 + .../ajax/libs/report/echarts/echarts-all.js | 52 + .../libs/report/peity/jquery.peity.min.js | 13 + .../report/sparkline/jquery.sparkline.min.js | 5 + .../ajax/libs/select2/select2-bootstrap.css | 7 + .../static/ajax/libs/select2/select2.css | 484 ++ .../static/ajax/libs/select2/select2.js | 5885 +++++++++++++++++ .../static/ajax/libs/select2/select2.min.css | 1 + .../static/ajax/libs/select2/select2.min.js | 1 + .../static/ajax/libs/staps/jquery.steps.css | 381 ++ .../static/ajax/libs/staps/jquery.steps.js | 2042 ++++++ .../ajax/libs/staps/jquery.steps.min.js | 6 + .../ajax/libs/suggest/bootstrap-suggest.js | 1042 +++ .../libs/suggest/bootstrap-suggest.min.js | 10 + .../ajax/libs/summernote/font/summernote.eot | Bin 0 -> 17342 bytes .../ajax/libs/summernote/font/summernote.ttf | Bin 0 -> 17156 bytes .../libs/typeahead/bootstrap3-typeahead.js | 774 +++ .../typeahead/bootstrap3-typeahead.min.js | 1 + .../static/css/jquery.contextMenu.min.css | 16 + .../src/main/resources/static/css/skins.css | 985 +++ .../resources/static/i18n/messages.properties | 36 + .../static/js/jquery.contextMenu.min.js | 2 + .../static/js/jquery.i18n.properties.min.js | 9 + .../main/resources/static/js/jquery.tmpl.js | 492 ++ .../main/resources/static/ruoyi/register.js | 82 + .../templates/demo/form/autocomplete.html | 322 + .../resources/templates/demo/form/basic.html | 593 ++ .../resources/templates/demo/form/button.html | 620 ++ .../resources/templates/demo/form/cards.html | 319 + .../templates/demo/form/cxselect.html | 161 + .../templates/demo/form/datetime.html | 236 + .../templates/demo/form/duallistbox.html | 65 + .../resources/templates/demo/form/grid.html | 432 ++ .../resources/templates/demo/form/jasny.html | 118 + .../resources/templates/demo/form/select.html | 148 + .../templates/demo/form/sortable.html | 198 + .../templates/demo/form/summernote.html | 93 + .../templates/demo/form/tabs_panels.html | 353 + .../templates/demo/form/timeline.html | 113 + .../resources/templates/demo/form/upload.html | 55 + .../templates/demo/form/validate.html | 193 + .../resources/templates/demo/form/wizard.html | 192 + .../templates/demo/icon/fontawesome.html | 1944 ++++++ .../templates/demo/icon/glyphicons.html | 1364 ++++ .../templates/demo/modal/dialog.html | 215 + .../resources/templates/demo/modal/form.html | 95 + .../resources/templates/demo/modal/layer.html | 256 + .../resources/templates/demo/modal/table.html | 56 + .../templates/demo/modal/table/check.html | 86 + .../templates/demo/modal/table/parent.html | 90 + .../templates/demo/modal/table/radio.html | 86 + .../resources/templates/demo/operate/add.html | 78 + .../templates/demo/operate/detail.html | 69 + .../templates/demo/operate/edit.html | 79 + .../templates/demo/operate/other.html | 77 + .../templates/demo/operate/table.html | 125 + .../templates/demo/report/echarts.html | 1264 ++++ .../templates/demo/report/metrics.html | 478 ++ .../templates/demo/report/peity.html | 206 + .../templates/demo/report/sparkline.html | 232 + .../templates/demo/table/button.html | 92 + .../resources/templates/demo/table/child.html | 113 + .../resources/templates/demo/table/curd.html | 178 + .../resources/templates/demo/table/data.html | 76 + .../templates/demo/table/detail.html | 86 + .../templates/demo/table/editable.html | 128 + .../resources/templates/demo/table/event.html | 107 + .../templates/demo/table/export.html | 81 + .../templates/demo/table/fixedColumns.html | 146 + .../templates/demo/table/footer.html | 83 + .../templates/demo/table/groupHeader.html | 80 + .../resources/templates/demo/table/image.html | 79 + .../resources/templates/demo/table/multi.html | 222 + .../resources/templates/demo/table/other.html | 106 + .../templates/demo/table/pageGo.html | 77 + .../templates/demo/table/params.html | 158 + .../templates/demo/table/remember.html | 86 + .../templates/demo/table/reorder.html | 75 + .../templates/demo/table/search.html | 202 + .../templates/demo/table/subdata.html | 185 + .../resources/templates/error/business.html | 20 + .../src/main/resources/templates/main_v1.html | 336 + .../main/resources/templates/register.html | 83 + .../src/main/resources/templates/skin.html | 165 + .../templates/system/dict/type/tree.html | 42 + .../templates/system/role/authUser.html | 149 + .../templates/system/role/dataScope.html | 107 + .../templates/system/role/selectUser.html | 120 + .../templates/system/user/authRole.html | 109 + .../com/ruoyi/common/annotation/Excels.java | 18 + .../ruoyi/common/annotation/RepeatSubmit.java | 21 + .../com/ruoyi/common/config/ServerConfig.java | 33 + .../DynamicDataSourceContextHolder.java | 45 + .../config/thread/ThreadPoolConfig.java | 62 + .../ruoyi/common/constant/GenConstants.java | 106 + .../core/controller/BaseController.java | 185 + .../ruoyi/common/core/domain/AjaxResult.java | 182 + .../ruoyi/common/core/domain/BaseEntity.java | 114 + .../ruoyi/common/core/domain/CxSelect.java | 69 + .../ruoyi/common/core/domain/TreeEntity.java | 63 + .../com/ruoyi/common/core/domain/Ztree.java | 104 + .../ruoyi/common/core/page/PageDomain.java | 72 + .../ruoyi/common/core/page/TableDataInfo.java | 85 + .../ruoyi/common/core/page/TableSupport.java | 30 + .../ruoyi/common/core/text/CharsetKit.java | 86 + .../com/ruoyi/common/core/text/Convert.java | 999 +++ .../ruoyi/common/core/text/StrFormatter.java | 92 + .../common/exception/base/BaseException.java | 97 + .../common/exception/file/FileException.java | 19 + .../file/FileSizeLimitExceededException.java | 16 + .../exception/user/CaptchaException.java | 16 + .../exception/user/RoleBlockedException.java | 16 + .../exception/user/UserBlockedException.java | 16 + .../exception/user/UserDeleteException.java | 16 + .../common/exception/user/UserException.java | 18 + .../user/UserNotExistsException.java | 16 + .../user/UserPasswordNotMatchException.java | 16 + .../UserPasswordRetryLimitCountException.java | 16 + ...UserPasswordRetryLimitExceedException.java | 16 + .../com/ruoyi/common/utils/CacheUtils.java | 187 + .../com/ruoyi/common/utils/ExceptionUtil.java | 40 + .../com/ruoyi/common/utils/MessageUtils.java | 26 + .../com/ruoyi/common/utils/ServletUtils.java | 135 + .../java/com/ruoyi/common/utils/Threads.java | 99 + .../common/utils/file/FileUploadUtils.java | 243 + .../common/utils/file/MimeTypeUtils.java | 55 + .../ruoyi/common/utils/html/EscapeUtil.java | 154 + .../ruoyi/common/utils/html/HTMLFilter.java | 570 ++ .../com/ruoyi/common/utils/poi/ExcelUtil.java | 951 +++ .../common/utils/reflect/ReflectUtils.java | 406 ++ .../ruoyi/common/utils/security/Md5Utils.java | 66 + .../utils/security/PermissionUtils.java | 118 + .../common/utils/spring/SpringUtils.java | 114 + .../com/ruoyi/common/utils/sql/SqlUtil.java | 37 + .../framework/config/ApplicationConfig.java | 20 + .../ruoyi/framework/config/MyBatisConfig.java | 108 + .../config/properties/DruidProperties.java | 77 + .../interceptor/RepeatSubmitInterceptor.java | 55 + .../impl/SameUrlDataInterceptor.java | 94 + .../framework/manager/ShutdownManager.java | 87 + .../shiro/service/SysRegisterService.java | 80 + .../shiro/service/SysShiroService.java | 62 + .../filter/kickout/KickoutSessionFilter.java | 186 + .../web/exception/GlobalExceptionHandler.java | 116 + .../com/ruoyi/generator/config/GenConfig.java | 73 + .../generator/controller/GenController.java | 240 + .../com/ruoyi/generator/domain/GenTable.java | 372 ++ .../generator/domain/GenTableColumn.java | 373 ++ .../mapper/GenTableColumnMapper.java | 52 + .../generator/mapper/GenTableMapper.java | 83 + .../service/IGenTableColumnService.java | 44 + .../generator/service/IGenTableService.java | 115 + .../impl/GenTableColumnServiceImpl.java | 69 + .../service/impl/GenTableServiceImpl.java | 466 ++ .../ruoyi/generator/util/VelocityUtils.java | 384 ++ .../src/main/resources/generator.yml | 11 + .../mapper/generator/GenTableColumnMapper.xml | 120 + .../mapper/generator/GenTableMapper.xml | 189 + .../resources/templates/tool/gen/edit.html | 604 ++ .../resources/templates/tool/gen/gen.html | 197 + .../templates/tool/gen/importTable.html | 105 + .../main/resources/vm/html/list-tree.html.vm | 151 + .../src/main/resources/vm/html/tree.html.vm | 51 + .../main/resources/vm/java/controller.java.vm | 201 + .../src/main/resources/vm/java/mapper.java.vm | 91 + .../main/resources/vm/java/service.java.vm | 73 + .../resources/vm/java/serviceImpl.java.vm | 198 + .../main/resources/vm/java/sub-domain.java.vm | 75 + .../src/main/resources/vm/xml/mapper.xml.vm | 147 + .../quartz/controller/SysJobController.java | 174 + .../controller/SysJobLogController.java | 103 + .../ruoyi/quartz/util/AbstractQuartzJob.java | 107 + .../com/ruoyi/quartz/util/JobInvokeUtil.java | 182 + .../QuartzDisallowConcurrentExecution.java | 21 + .../ruoyi/quartz/util/QuartzJobExecution.java | 19 + .../resources/templates/monitor/job/add.html | 109 + .../templates/monitor/job/detail.html | 99 + .../resources/templates/monitor/job/edit.html | 111 + .../resources/templates/monitor/job/job.html | 181 + .../templates/monitor/job/jobLog.html | 135 + .../com/ruoyi/system/utils/DictUtils.java | 183 + sql/ry_20200708.sql | 703 ++ 240 files changed, 67208 insertions(+) create mode 100644 bin/run.bat create mode 100644 doc/若依环境使用手册.docx create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoDialogController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoFormController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoIconController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoOperateController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoReportController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoTableController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/CustomerModel.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/GoodsModel.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/UserOperateModel.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java create mode 100644 ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading-sm.gif create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading.gif create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/clear.png create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/loading.gif create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder/bootstrap-table-reorder.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder/jquery.tablednd.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/cropper/cropper.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/cropper/cropper.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/cropper/cropper.min.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/cropper/cropper.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.min.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.min.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/flot/curvedLines.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.pie.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.resize.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.spline.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.symbol.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.tooltip.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.min.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/jsonview/jquery.jsonview.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/jsonview/jquery.jsonview.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/layer/theme/moon/default.png create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/layer/theme/moon/style.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/report/echarts/echarts-all.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/report/peity/jquery.peity.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/report/sparkline/jquery.sparkline.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/select2/select2-bootstrap.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/select2/select2.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/select2/select2.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/select2/select2.min.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/select2/select2.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/staps/jquery.steps.css create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/staps/jquery.steps.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/staps/jquery.steps.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/suggest/bootstrap-suggest.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/suggest/bootstrap-suggest.min.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/summernote/font/summernote.eot create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/summernote/font/summernote.ttf create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/typeahead/bootstrap3-typeahead.js create mode 100644 ruoyi-admin/src/main/resources/static/ajax/libs/typeahead/bootstrap3-typeahead.min.js create mode 100644 ruoyi-admin/src/main/resources/static/css/jquery.contextMenu.min.css create mode 100644 ruoyi-admin/src/main/resources/static/css/skins.css create mode 100644 ruoyi-admin/src/main/resources/static/i18n/messages.properties create mode 100644 ruoyi-admin/src/main/resources/static/js/jquery.contextMenu.min.js create mode 100644 ruoyi-admin/src/main/resources/static/js/jquery.i18n.properties.min.js create mode 100644 ruoyi-admin/src/main/resources/static/js/jquery.tmpl.js create mode 100644 ruoyi-admin/src/main/resources/static/ruoyi/register.js create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/autocomplete.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/basic.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/button.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/cards.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/cxselect.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/datetime.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/duallistbox.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/grid.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/jasny.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/select.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/sortable.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/summernote.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/tabs_panels.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/timeline.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/upload.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/validate.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/form/wizard.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/icon/fontawesome.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/icon/glyphicons.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/modal/dialog.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/modal/form.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/modal/layer.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/modal/table.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/modal/table/check.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/modal/table/parent.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/modal/table/radio.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/operate/add.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/operate/detail.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/operate/edit.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/operate/other.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/operate/table.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/report/echarts.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/report/metrics.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/report/peity.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/report/sparkline.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/button.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/child.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/curd.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/data.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/detail.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/editable.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/event.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/export.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/fixedColumns.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/footer.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/groupHeader.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/image.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/multi.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/other.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/pageGo.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/params.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/remember.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/reorder.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/search.html create mode 100644 ruoyi-admin/src/main/resources/templates/demo/table/subdata.html create mode 100644 ruoyi-admin/src/main/resources/templates/error/business.html create mode 100644 ruoyi-admin/src/main/resources/templates/main_v1.html create mode 100644 ruoyi-admin/src/main/resources/templates/register.html create mode 100644 ruoyi-admin/src/main/resources/templates/skin.html create mode 100644 ruoyi-admin/src/main/resources/templates/system/dict/type/tree.html create mode 100644 ruoyi-admin/src/main/resources/templates/system/role/authUser.html create mode 100644 ruoyi-admin/src/main/resources/templates/system/role/dataScope.html create mode 100644 ruoyi-admin/src/main/resources/templates/system/role/selectUser.html create mode 100644 ruoyi-admin/src/main/resources/templates/system/user/authRole.html create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excels.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/RepeatSubmit.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/ServerConfig.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/datasource/DynamicDataSourceContextHolder.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/thread/ThreadPoolConfig.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/CxSelect.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Ztree.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/PageDomain.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableSupport.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/text/CharsetKit.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/text/Convert.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/text/StrFormatter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileSizeLimitExceededException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/RoleBlockedException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserBlockedException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserDeleteException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserNotExistsException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordNotMatchException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordRetryLimitCountException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordRetryLimitExceedException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/CacheUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ExceptionUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/MessageUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/Threads.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/html/HTMLFilter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/reflect/ReflectUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/security/Md5Utils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/security/PermissionUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/spring/SpringUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/DruidProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysRegisterService.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysShiroService.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/kickout/KickoutSessionFilter.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/service/impl/GenTableColumnServiceImpl.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/service/impl/GenTableServiceImpl.java create mode 100644 ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java create mode 100644 ruoyi-generator/src/main/resources/generator.yml create mode 100644 ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml create mode 100644 ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml create mode 100644 ruoyi-generator/src/main/resources/templates/tool/gen/edit.html create mode 100644 ruoyi-generator/src/main/resources/templates/tool/gen/gen.html create mode 100644 ruoyi-generator/src/main/resources/templates/tool/gen/importTable.html create mode 100644 ruoyi-generator/src/main/resources/vm/html/list-tree.html.vm create mode 100644 ruoyi-generator/src/main/resources/vm/html/tree.html.vm create mode 100644 ruoyi-generator/src/main/resources/vm/java/controller.java.vm create mode 100644 ruoyi-generator/src/main/resources/vm/java/mapper.java.vm create mode 100644 ruoyi-generator/src/main/resources/vm/java/service.java.vm create mode 100644 ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm create mode 100644 ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm create mode 100644 ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/AbstractQuartzJob.java create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/JobInvokeUtil.java create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzDisallowConcurrentExecution.java create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzJobExecution.java create mode 100644 ruoyi-quartz/src/main/resources/templates/monitor/job/add.html create mode 100644 ruoyi-quartz/src/main/resources/templates/monitor/job/detail.html create mode 100644 ruoyi-quartz/src/main/resources/templates/monitor/job/edit.html create mode 100644 ruoyi-quartz/src/main/resources/templates/monitor/job/job.html create mode 100644 ruoyi-quartz/src/main/resources/templates/monitor/job/jobLog.html create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/utils/DictUtils.java create mode 100644 sql/ry_20200708.sql diff --git a/bin/run.bat b/bin/run.bat new file mode 100644 index 000000000..90073a828 --- /dev/null +++ b/bin/run.bat @@ -0,0 +1,14 @@ +@echo off +echo. +echo [Ϣ] Web̡ +echo. + +cd %~dp0 +cd ../ruoyi-admin/target + +set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m + +java -jar %JAVA_OPTS% ruoyi-admin.jar + +cd bin +pause \ No newline at end of file diff --git a/doc/若依环境使用手册.docx b/doc/若依环境使用手册.docx new file mode 100644 index 0000000000000000000000000000000000000000..c0edbcc487d4f5def3221e3bfa5afe04fa5ac485 GIT binary patch literal 408676 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

+(kUPEqS2b66Q+GjWS+g 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 z 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

1cWz9UmVZeHeOrV=~62qas#oI{HU= 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%0DGAnpqI4 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 users = new ArrayList(); + { + users.add(new UserFormModel(1, "1000001", "测试1", "15888888888")); + users.add(new UserFormModel(2, "1000002", "测试2", "15666666666")); + users.add(new UserFormModel(3, "1000003", "测试3", "15666666666")); + users.add(new UserFormModel(4, "1000004", "测试4", "15666666666")); + users.add(new UserFormModel(5, "1000005", "测试5", "15666666666")); + } + + /** + * 按钮页 + */ + @GetMapping("/button") + public String button() + { + return prefix + "/button"; + } + + /** + * 下拉框 + */ + @GetMapping("/select") + public String select() + { + return prefix + "/select"; + } + + /** + * 时间轴 + */ + @GetMapping("/timeline") + public String timeline() + { + return prefix + "/timeline"; + } + + /** + * 表单校验 + */ + @GetMapping("/validate") + public String validate() + { + return prefix + "/validate"; + } + + /** + * 功能扩展(包含文件上传) + */ + @GetMapping("/jasny") + public String jasny() + { + return prefix + "/jasny"; + } + + /** + * 拖动排序 + */ + @GetMapping("/sortable") + public String sortable() + { + return prefix + "/sortable"; + } + + /** + * 选项卡 & 面板 + */ + @GetMapping("/tabs_panels") + public String tabs_panels() + { + return prefix + "/tabs_panels"; + } + + /** + * 栅格 + */ + @GetMapping("/grid") + public String grid() + { + return prefix + "/grid"; + } + + /** + * 表单向导 + */ + @GetMapping("/wizard") + public String wizard() + { + return prefix + "/wizard"; + } + + /** + * 文件上传 + */ + @GetMapping("/upload") + public String upload() + { + return prefix + "/upload"; + } + + /** + * 日期和时间页 + */ + @GetMapping("/datetime") + public String datetime() + { + return prefix + "/datetime"; + } + + /** + * 左右互选组件 + */ + @GetMapping("/duallistbox") + public String duallistbox() + { + return prefix + "/duallistbox"; + } + + /** + * 基本表单 + */ + @GetMapping("/basic") + public String basic() + { + return prefix + "/basic"; + } + + /** + * 卡片列表 + */ + @GetMapping("/cards") + public String cards() + { + return prefix + "/cards"; + } + + /** + * summernote 富文本编辑器 + */ + @GetMapping("/summernote") + public String summernote() + { + return prefix + "/summernote"; + } + + /** + * 搜索自动补全 + */ + @GetMapping("/autocomplete") + public String autocomplete() + { + return prefix + "/autocomplete"; + } + + /** + * 多级联动下拉 + */ + @GetMapping("/cxselect") + public String cxselect(ModelMap mmap) + { + CxSelect cxSelectTB = new CxSelect(); + cxSelectTB.setN("淘宝"); + cxSelectTB.setV("taobao"); + CxSelect cxSelectTm = new CxSelect(); + cxSelectTm.setN("天猫"); + cxSelectTm.setV("tm"); + CxSelect cxSelectJhs = new CxSelect(); + cxSelectJhs.setN("聚划算"); + cxSelectJhs.setV("jhs"); + List tmList = new ArrayList(); + tmList.add(cxSelectTm); + tmList.add(cxSelectJhs); + cxSelectTB.setS(tmList); + + CxSelect cxSelectJD = new CxSelect(); + cxSelectJD.setN("京东"); + cxSelectJD.setV("jd"); + CxSelect cxSelectCs = new CxSelect(); + cxSelectCs.setN("京东超市"); + cxSelectCs.setV("jdcs"); + CxSelect cxSelectSx = new CxSelect(); + cxSelectSx.setN("京东生鲜"); + cxSelectSx.setV("jdsx"); + List jdList = new ArrayList(); + jdList.add(cxSelectCs); + jdList.add(cxSelectSx); + cxSelectJD.setS(jdList); + + List cxList = new ArrayList(); + cxList.add(cxSelectTB); + cxList.add(cxSelectJD); + + mmap.put("data", JSON.toJSON(cxList)); + return prefix + "/cxselect"; + } + + /** + * 模拟数据 + */ + @GetMapping("/cityData") + @ResponseBody + public String cityData() + { + String data = "[{\"n\":\"湖南省\",\"s\":[{\"n\":\"长沙市\",\"s\":[{\"n\":\"芙蓉区\"},{\"n\":\"天心区\"},{\"n\":\"岳麓区\"},{\"n\":\"开福区\"},{\"n\":\"雨花区\"},{\"n\":\"望城区\"},{\"n\":\"长沙县\"},{\"n\":\"宁乡县\"},{\"n\":\"浏阳市\"}]},{\"n\":\"株洲市\",\"s\":[{\"n\":\"荷塘区\"},{\"n\":\"芦淞区\"},{\"n\":\"石峰区\"},{\"n\":\"天元区\"},{\"n\":\"株洲县\"},{\"n\":\"攸县\"},{\"n\":\"茶陵县\"},{\"n\":\"炎陵县\"},{\"n\":\"醴陵市\"}]},{\"n\":\"湘潭市\",\"s\":[{\"n\":\"雨湖区\"},{\"n\":\"岳塘区\"},{\"n\":\"湘潭县\"},{\"n\":\"湘乡市\"},{\"n\":\"韶山市\"}]},{\"n\":\"衡阳市\",\"s\":[{\"n\":\"珠晖区\"},{\"n\":\"雁峰区\"},{\"n\":\"石鼓区\"},{\"n\":\"蒸湘区\"},{\"n\":\"南岳区\"},{\"n\":\"衡阳县\"},{\"n\":\"衡南县\"},{\"n\":\"衡山县\"},{\"n\":\"衡东县\"},{\"n\":\"祁东县\"},{\"n\":\"耒阳市\"},{\"n\":\"常宁市\"}]},{\"n\":\"邵阳市\",\"s\":[{\"n\":\"双清区\"},{\"n\":\"大祥区\"},{\"n\":\"北塔区\"},{\"n\":\"邵东县\"},{\"n\":\"新邵县\"},{\"n\":\"邵阳县\"},{\"n\":\"隆回县\"},{\"n\":\"洞口县\"},{\"n\":\"绥宁县\"},{\"n\":\"新宁县\"},{\"n\":\"城步苗族自治县\"},{\"n\":\"武冈市\"}]},{\"n\":\"岳阳市\",\"s\":[{\"n\":\"岳阳楼区\"},{\"n\":\"云溪区\"},{\"n\":\"君山区\"},{\"n\":\"岳阳县\"},{\"n\":\"华容县\"},{\"n\":\"湘阴县\"},{\"n\":\"平江县\"},{\"n\":\"汨罗市\"},{\"n\":\"临湘市\"}]},{\"n\":\"常德市\",\"s\":[{\"n\":\"武陵区\"},{\"n\":\"鼎城区\"},{\"n\":\"安乡县\"},{\"n\":\"汉寿县\"},{\"n\":\"澧县\"},{\"n\":\"临澧县\"},{\"n\":\"桃源县\"},{\"n\":\"石门县\"},{\"n\":\"津市市\"}]},{\"n\":\"张家界市\",\"s\":[{\"n\":\"永定区\"},{\"n\":\"武陵源区\"},{\"n\":\"慈利县\"},{\"n\":\"桑植县\"}]},{\"n\":\"益阳市\",\"s\":[{\"n\":\"资阳区\"},{\"n\":\"赫山区\"},{\"n\":\"南县\"},{\"n\":\"桃江县\"},{\"n\":\"安化县\"},{\"n\":\"沅江市\"}]},{\"n\":\"郴州市\",\"s\":[{\"n\":\"北湖区\"},{\"n\":\"苏仙区\"},{\"n\":\"桂阳县\"},{\"n\":\"宜章县\"},{\"n\":\"永兴县\"},{\"n\":\"嘉禾县\"},{\"n\":\"临武县\"},{\"n\":\"汝城县\"},{\"n\":\"桂东县\"},{\"n\":\"安仁县\"},{\"n\":\"资兴市\"}]},{\"n\":\"永州市\",\"s\":[{\"n\":\"零陵区\"},{\"n\":\"冷水滩区\"},{\"n\":\"祁阳县\"},{\"n\":\"东安县\"},{\"n\":\"双牌县\"},{\"n\":\"道县\"},{\"n\":\"江永县\"},{\"n\":\"宁远县\"},{\"n\":\"蓝山县\"},{\"n\":\"新田县\"},{\"n\":\"江华瑶族自治县\"}]},{\"n\":\"怀化市\",\"s\":[{\"n\":\"鹤城区\"},{\"n\":\"中方县\"},{\"n\":\"沅陵县\"},{\"n\":\"辰溪县\"},{\"n\":\"溆浦县\"},{\"n\":\"会同县\"},{\"n\":\"麻阳苗族自治县\"},{\"n\":\"新晃侗族自治县\"},{\"n\":\"芷江侗族自治县\"},{\"n\":\"靖州苗族侗族自治县\"},{\"n\":\"通道侗族自治县\"},{\"n\":\"洪江市\"}]},{\"n\":\"娄底市\",\"s\":[{\"n\":\"娄星区\"},{\"n\":\"双峰县\"},{\"n\":\"新化县\"},{\"n\":\"冷水江市\"},{\"n\":\"涟源市\"}]},{\"n\":\"湘西土家族苗族自治州\",\"s\":[{\"n\":\"吉首市\"},{\"n\":\"泸溪县\"},{\"n\":\"凤凰县\"},{\"n\":\"花垣县\"},{\"n\":\"保靖县\"},{\"n\":\"古丈县\"},{\"n\":\"永顺县\"},{\"n\":\"龙山县\"}]}]},{\"n\":\"广东省\",\"s\":[{\"n\":\"广州市\",\"s\":[{\"n\":\"荔湾区\"},{\"n\":\"越秀区\"},{\"n\":\"海珠区\"},{\"n\":\"天河区\"},{\"n\":\"白云区\"},{\"n\":\"黄埔区\"},{\"n\":\"番禺区\"},{\"n\":\"花都区\"},{\"n\":\"南沙区\"},{\"n\":\"萝岗区\"},{\"n\":\"增城市\"},{\"n\":\"从化市\"}]},{\"n\":\"韶关市\",\"s\":[{\"n\":\"武江区\"},{\"n\":\"浈江区\"},{\"n\":\"曲江区\"},{\"n\":\"始兴县\"},{\"n\":\"仁化县\"},{\"n\":\"翁源县\"},{\"n\":\"乳源瑶族自治县\"},{\"n\":\"新丰县\"},{\"n\":\"乐昌市\"},{\"n\":\"南雄市\"}]},{\"n\":\"深圳市\",\"s\":[{\"n\":\"罗湖区\"},{\"n\":\"福田区\"},{\"n\":\"南山区\"},{\"n\":\"宝安区\"},{\"n\":\"龙岗区\"},{\"n\":\"盐田区\"}]},{\"n\":\"珠海市\",\"s\":[{\"n\":\"香洲区\"},{\"n\":\"斗门区\"},{\"n\":\"金湾区\"}]},{\"n\":\"汕头市\",\"s\":[{\"n\":\"龙湖区\"},{\"n\":\"金平区\"},{\"n\":\"濠江区\"},{\"n\":\"潮阳区\"},{\"n\":\"潮南区\"},{\"n\":\"澄海区\"},{\"n\":\"南澳县\"}]},{\"n\":\"佛山市\",\"s\":[{\"n\":\"禅城区\"},{\"n\":\"南海区\"},{\"n\":\"顺德区\"},{\"n\":\"三水区\"},{\"n\":\"高明区\"}]},{\"n\":\"江门市\",\"s\":[{\"n\":\"蓬江区\"},{\"n\":\"江海区\"},{\"n\":\"新会区\"},{\"n\":\"台山市\"},{\"n\":\"开平市\"},{\"n\":\"鹤山市\"},{\"n\":\"恩平市\"}]},{\"n\":\"湛江市\",\"s\":[{\"n\":\"赤坎区\"},{\"n\":\"霞山区\"},{\"n\":\"坡头区\"},{\"n\":\"麻章区\"},{\"n\":\"遂溪县\"},{\"n\":\"徐闻县\"},{\"n\":\"廉江市\"},{\"n\":\"雷州市\"},{\"n\":\"吴川市\"}]},{\"n\":\"茂名市\",\"s\":[{\"n\":\"茂南区\"},{\"n\":\"茂港区\"},{\"n\":\"电白县\"},{\"n\":\"高州市\"},{\"n\":\"化州市\"},{\"n\":\"信宜市\"}]},{\"n\":\"肇庆市\",\"s\":[{\"n\":\"端州区\"},{\"n\":\"鼎湖区\"},{\"n\":\"广宁县\"},{\"n\":\"怀集县\"},{\"n\":\"封开县\"},{\"n\":\"德庆县\"},{\"n\":\"高要市\"},{\"n\":\"四会市\"}]},{\"n\":\"惠州市\",\"s\":[{\"n\":\"惠城区\"},{\"n\":\"惠阳区\"},{\"n\":\"博罗县\"},{\"n\":\"惠东县\"},{\"n\":\"龙门县\"}]},{\"n\":\"梅州市\",\"s\":[{\"n\":\"梅江区\"},{\"n\":\"梅县\"},{\"n\":\"大埔县\"},{\"n\":\"丰顺县\"},{\"n\":\"五华县\"},{\"n\":\"平远县\"},{\"n\":\"蕉岭县\"},{\"n\":\"兴宁市\"}]},{\"n\":\"汕尾市\",\"s\":[{\"n\":\"城区\"},{\"n\":\"海丰县\"},{\"n\":\"陆河县\"},{\"n\":\"陆丰市\"}]},{\"n\":\"河源市\",\"s\":[{\"n\":\"源城区\"},{\"n\":\"紫金县\"},{\"n\":\"龙川县\"},{\"n\":\"连平县\"},{\"n\":\"和平县\"},{\"n\":\"东源县\"}]},{\"n\":\"阳江市\",\"s\":[{\"n\":\"江城区\"},{\"n\":\"阳西县\"},{\"n\":\"阳东县\"},{\"n\":\"阳春市\"}]},{\"n\":\"清远市\",\"s\":[{\"n\":\"清城区\"},{\"n\":\"清新区\"},{\"n\":\"佛冈县\"},{\"n\":\"阳山县\"},{\"n\":\"连山壮族瑶族自治县\"},{\"n\":\"连南瑶族自治县\"},{\"n\":\"英德市\"},{\"n\":\"连州市\"}]},{\"n\":\"东莞市\"},{\"n\":\"中山市\"},{\"n\":\"潮州市\",\"s\":[{\"n\":\"湘桥区\"},{\"n\":\"潮安区\"},{\"n\":\"饶平县\"}]},{\"n\":\"揭阳市\",\"s\":[{\"n\":\"榕城区\"},{\"n\":\"揭东区\"},{\"n\":\"揭西县\"},{\"n\":\"惠来县\"},{\"n\":\"普宁市\"}]},{\"n\":\"云浮市\",\"s\":[{\"n\":\"云城区\"},{\"n\":\"新兴县\"},{\"n\":\"郁南县\"},{\"n\":\"云安县\"},{\"n\":\"罗定市\"}]}]}]"; + return data; + } + + /** + * 获取用户数据 + */ + @GetMapping("/userModel") + @ResponseBody + public AjaxResult userModel() + { + AjaxResult ajax = new AjaxResult(); + + ajax.put("code", 200); + ajax.put("value", users); + return ajax; + } + + /** + * 获取数据集合 + */ + @GetMapping("/collection") + @ResponseBody + public AjaxResult collection() + { + String[] array = { "ruoyi 1", "ruoyi 2", "ruoyi 3", "ruoyi 4", "ruoyi 5" }; + AjaxResult ajax = new AjaxResult(); + ajax.put("value", array); + return ajax; + } +} + +class UserFormModel +{ + /** 用户ID */ + private int userId; + + /** 用户编号 */ + private String userCode; + + /** 用户姓名 */ + private String userName; + + /** 用户手机 */ + private String userPhone; + + public UserFormModel() + { + + } + + public UserFormModel(int userId, String userCode, String userName, String userPhone) + { + this.userId = userId; + this.userCode = userCode; + this.userName = userName; + this.userPhone = userPhone; + } + + public int getUserId() + { + return userId; + } + + public void setUserId(int userId) + { + this.userId = userId; + } + + public String getUserCode() + { + return userCode; + } + + public void setUserCode(String userCode) + { + this.userCode = userCode; + } + + public String getUserName() + { + return userName; + } + + public void setUserName(String userName) + { + this.userName = userName; + } + + public String getUserPhone() + { + return userPhone; + } + + public void setUserPhone(String userPhone) + { + this.userPhone = userPhone; + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoIconController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoIconController.java new file mode 100644 index 000000000..490c3e061 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoIconController.java @@ -0,0 +1,35 @@ +package com.ruoyi.web.controller.demo.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 图标相关 + * + * @author ruoyi + */ +@Controller +@RequestMapping("/demo/icon") +public class DemoIconController +{ + private String prefix = "demo/icon"; + + /** + * FontAwesome图标 + */ + @GetMapping("/fontawesome") + public String fontAwesome() + { + return prefix + "/fontawesome"; + } + + /** + * Glyphicons图标 + */ + @GetMapping("/glyphicons") + public String glyphicons() + { + return prefix + "/glyphicons"; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoOperateController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoOperateController.java new file mode 100644 index 000000000..c7544a325 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoOperateController.java @@ -0,0 +1,326 @@ +package com.ruoyi.web.controller.demo.controller; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.PageDomain; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.page.TableSupport; +import com.ruoyi.common.core.text.Convert; +import com.ruoyi.common.exception.BusinessException; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.web.controller.demo.domain.CustomerModel; +import com.ruoyi.web.controller.demo.domain.UserOperateModel; + +/** + * 操作控制 + * + * @author ruoyi + */ +@Controller +@RequestMapping("/demo/operate") +public class DemoOperateController extends BaseController +{ + private String prefix = "demo/operate"; + + private final static Map users = new LinkedHashMap(); + { + users.put(1, new UserOperateModel(1, "1000001", "测试1", "0", "15888888888", "ry@qq.com", 150.0, "0")); + users.put(2, new UserOperateModel(2, "1000002", "测试2", "1", "15666666666", "ry@qq.com", 180.0, "1")); + users.put(3, new UserOperateModel(3, "1000003", "测试3", "0", "15666666666", "ry@qq.com", 110.0, "1")); + users.put(4, new UserOperateModel(4, "1000004", "测试4", "1", "15666666666", "ry@qq.com", 220.0, "1")); + users.put(5, new UserOperateModel(5, "1000005", "测试5", "0", "15666666666", "ry@qq.com", 140.0, "1")); + users.put(6, new UserOperateModel(6, "1000006", "测试6", "1", "15666666666", "ry@qq.com", 330.0, "1")); + users.put(7, new UserOperateModel(7, "1000007", "测试7", "0", "15666666666", "ry@qq.com", 160.0, "1")); + users.put(8, new UserOperateModel(8, "1000008", "测试8", "1", "15666666666", "ry@qq.com", 170.0, "1")); + users.put(9, new UserOperateModel(9, "1000009", "测试9", "0", "15666666666", "ry@qq.com", 180.0, "1")); + users.put(10, new UserOperateModel(10, "1000010", "测试10", "0", "15666666666", "ry@qq.com", 210.0, "1")); + users.put(11, new UserOperateModel(11, "1000011", "测试11", "1", "15666666666", "ry@qq.com", 110.0, "1")); + users.put(12, new UserOperateModel(12, "1000012", "测试12", "0", "15666666666", "ry@qq.com", 120.0, "1")); + users.put(13, new UserOperateModel(13, "1000013", "测试13", "1", "15666666666", "ry@qq.com", 380.0, "1")); + users.put(14, new UserOperateModel(14, "1000014", "测试14", "0", "15666666666", "ry@qq.com", 280.0, "1")); + users.put(15, new UserOperateModel(15, "1000015", "测试15", "0", "15666666666", "ry@qq.com", 570.0, "1")); + users.put(16, new UserOperateModel(16, "1000016", "测试16", "1", "15666666666", "ry@qq.com", 260.0, "1")); + users.put(17, new UserOperateModel(17, "1000017", "测试17", "1", "15666666666", "ry@qq.com", 210.0, "1")); + users.put(18, new UserOperateModel(18, "1000018", "测试18", "1", "15666666666", "ry@qq.com", 340.0, "1")); + users.put(19, new UserOperateModel(19, "1000019", "测试19", "1", "15666666666", "ry@qq.com", 160.0, "1")); + users.put(20, new UserOperateModel(20, "1000020", "测试20", "1", "15666666666", "ry@qq.com", 220.0, "1")); + users.put(21, new UserOperateModel(21, "1000021", "测试21", "1", "15666666666", "ry@qq.com", 120.0, "1")); + users.put(22, new UserOperateModel(22, "1000022", "测试22", "1", "15666666666", "ry@qq.com", 130.0, "1")); + users.put(23, new UserOperateModel(23, "1000023", "测试23", "1", "15666666666", "ry@qq.com", 490.0, "1")); + users.put(24, new UserOperateModel(24, "1000024", "测试24", "1", "15666666666", "ry@qq.com", 570.0, "1")); + users.put(25, new UserOperateModel(25, "1000025", "测试25", "1", "15666666666", "ry@qq.com", 250.0, "1")); + users.put(26, new UserOperateModel(26, "1000026", "测试26", "1", "15666666666", "ry@qq.com", 250.0, "1")); + } + + /** + * 表格 + */ + @GetMapping("/table") + public String table() + { + return prefix + "/table"; + } + + /** + * 其他 + */ + @GetMapping("/other") + public String other() + { + return prefix + "/other"; + } + + /** + * 查询数据 + */ + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(UserOperateModel userModel) + { + TableDataInfo rspData = new TableDataInfo(); + List userList = new ArrayList(users.values()); + // 查询条件过滤 + if (StringUtils.isNotEmpty(userModel.getSearchValue())) + { + userList.clear(); + for (Map.Entry entry : users.entrySet()) + { + if (entry.getValue().getUserName().equals(userModel.getSearchValue())) + { + userList.add(entry.getValue()); + } + } + } + else if (StringUtils.isNotEmpty(userModel.getUserName())) + { + userList.clear(); + for (Map.Entry entry : users.entrySet()) + { + if (entry.getValue().getUserName().equals(userModel.getUserName())) + { + userList.add(entry.getValue()); + } + } + } + PageDomain pageDomain = TableSupport.buildPageRequest(); + if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize()) + { + rspData.setRows(userList); + rspData.setTotal(userList.size()); + return rspData; + } + Integer pageNum = (pageDomain.getPageNum() - 1) * 10; + Integer pageSize = pageDomain.getPageNum() * 10; + if (pageSize > userList.size()) + { + pageSize = userList.size(); + } + rspData.setRows(userList.subList(pageNum, pageSize)); + rspData.setTotal(userList.size()); + return rspData; + } + + /** + * 新增用户 + */ + @GetMapping("/add") + public String add(ModelMap mmap) + { + return prefix + "/add"; + } + + /** + * 新增保存用户 + */ + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(UserOperateModel user) + { + Integer userId = users.size() + 1; + user.setUserId(userId); + return AjaxResult.success(users.put(userId, user)); + } + + /** + * 新增保存主子表信息 + */ + @PostMapping("/customer/add") + @ResponseBody + public AjaxResult addSave(CustomerModel customerModel) + { + System.out.println(customerModel.toString()); + return AjaxResult.success(); + } + + /** + * 修改用户 + */ + @GetMapping("/edit/{userId}") + public String edit(@PathVariable("userId") Integer userId, ModelMap mmap) + { + mmap.put("user", users.get(userId)); + return prefix + "/edit"; + } + + /** + * 修改保存用户 + */ + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(UserOperateModel user) + { + return AjaxResult.success(users.put(user.getUserId(), user)); + } + + /** + * 导出 + */ + @PostMapping("/export") + @ResponseBody + public AjaxResult export(UserOperateModel user) + { + List list = new ArrayList(users.values()); + ExcelUtil util = new ExcelUtil(UserOperateModel.class); + return util.exportExcel(list, "用户数据"); + } + + /** + * 下载模板 + */ + @GetMapping("/importTemplate") + @ResponseBody + public AjaxResult importTemplate() + { + ExcelUtil util = new ExcelUtil(UserOperateModel.class); + return util.importTemplateExcel("用户数据"); + } + + /** + * 导入数据 + */ + @PostMapping("/importData") + @ResponseBody + public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception + { + ExcelUtil util = new ExcelUtil(UserOperateModel.class); + List userList = util.importExcel(file.getInputStream()); + String message = importUser(userList, updateSupport); + return AjaxResult.success(message); + } + + /** + * 删除用户 + */ + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + Integer[] userIds = Convert.toIntArray(ids); + for (Integer userId : userIds) + { + users.remove(userId); + } + return AjaxResult.success(); + } + + /** + * 查看详细 + */ + @GetMapping("/detail/{userId}") + public String detail(@PathVariable("userId") Integer userId, ModelMap mmap) + { + mmap.put("user", users.get(userId)); + return prefix + "/detail"; + } + + @PostMapping("/clean") + @ResponseBody + public AjaxResult clean() + { + users.clear(); + return success(); + } + + /** + * 导入用户数据 + * + * @param userList 用户数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @return 结果 + */ + public String importUser(List userList, Boolean isUpdateSupport) + { + if (StringUtils.isNull(userList) || userList.size() == 0) + { + throw new BusinessException("导入用户数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + for (UserOperateModel user : userList) + { + try + { + // 验证是否存在这个用户 + boolean userFlag = false; + for (Map.Entry entry : users.entrySet()) + { + if (entry.getValue().getUserName().equals(user.getUserName())) + { + userFlag = true; + break; + } + } + if (!userFlag) + { + Integer userId = users.size() + 1; + user.setUserId(userId); + users.put(userId, user); + successNum++; + successMsg.append("
" + successNum + "、用户 " + user.getUserName() + " 导入成功"); + } + else if (isUpdateSupport) + { + users.put(user.getUserId(), user); + successNum++; + successMsg.append("
" + successNum + "、用户 " + user.getUserName() + " 更新成功"); + } + else + { + failureNum++; + failureMsg.append("
" + failureNum + "、用户 " + user.getUserName() + " 已存在"); + } + } + catch (Exception e) + { + failureNum++; + String msg = "
" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; + failureMsg.append(msg + e.getMessage()); + } + } + if (failureNum > 0) + { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new BusinessException(failureMsg.toString()); + } + else + { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoReportController.java new file mode 100644 index 000000000..318e8f08b --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoReportController.java @@ -0,0 +1,53 @@ +package com.ruoyi.web.controller.demo.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 报表 + * + * @author ruoyi + */ +@Controller +@RequestMapping("/demo/report") +public class DemoReportController +{ + private String prefix = "demo/report"; + + /** + * 百度ECharts + */ + @GetMapping("/echarts") + public String echarts() + { + return prefix + "/echarts"; + } + + /** + * 图表插件 + */ + @GetMapping("/peity") + public String peity() + { + return prefix + "/peity"; + } + + /** + * 线状图插件 + */ + @GetMapping("/sparkline") + public String sparkline() + { + return prefix + "/sparkline"; + } + + /** + * 图表组合 + */ + @GetMapping("/metrics") + public String metrics() + { + return prefix + "/metrics"; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoTableController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoTableController.java new file mode 100644 index 000000000..511e75cbb --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoTableController.java @@ -0,0 +1,423 @@ +package com.ruoyi.web.controller.demo.controller; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.page.PageDomain; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.page.TableSupport; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; + +/** + * 表格相关 + * + * @author ruoyi + */ +@Controller +@RequestMapping("/demo/table") +public class DemoTableController extends BaseController +{ + private String prefix = "demo/table"; + + private final static List users = new ArrayList(); + { + users.add(new UserTableModel(1, "1000001", "测试1", "0", "15888888888", "ry@qq.com", 150.0, "0")); + users.add(new UserTableModel(2, "1000002", "测试2", "1", "15666666666", "ry@qq.com", 180.0, "1")); + users.add(new UserTableModel(3, "1000003", "测试3", "0", "15666666666", "ry@qq.com", 110.0, "1")); + users.add(new UserTableModel(4, "1000004", "测试4", "1", "15666666666", "ry@qq.com", 220.0, "1")); + users.add(new UserTableModel(5, "1000005", "测试5", "0", "15666666666", "ry@qq.com", 140.0, "1")); + users.add(new UserTableModel(6, "1000006", "测试6", "1", "15666666666", "ry@qq.com", 330.0, "1")); + users.add(new UserTableModel(7, "1000007", "测试7", "0", "15666666666", "ry@qq.com", 160.0, "1")); + users.add(new UserTableModel(8, "1000008", "测试8", "1", "15666666666", "ry@qq.com", 170.0, "1")); + users.add(new UserTableModel(9, "1000009", "测试9", "0", "15666666666", "ry@qq.com", 180.0, "1")); + users.add(new UserTableModel(10, "1000010", "测试10", "0", "15666666666", "ry@qq.com", 210.0, "1")); + users.add(new UserTableModel(11, "1000011", "测试11", "1", "15666666666", "ry@qq.com", 110.0, "1")); + users.add(new UserTableModel(12, "1000012", "测试12", "0", "15666666666", "ry@qq.com", 120.0, "1")); + users.add(new UserTableModel(13, "1000013", "测试13", "1", "15666666666", "ry@qq.com", 380.0, "1")); + users.add(new UserTableModel(14, "1000014", "测试14", "0", "15666666666", "ry@qq.com", 280.0, "1")); + users.add(new UserTableModel(15, "1000015", "测试15", "0", "15666666666", "ry@qq.com", 570.0, "1")); + users.add(new UserTableModel(16, "1000016", "测试16", "1", "15666666666", "ry@qq.com", 260.0, "1")); + users.add(new UserTableModel(17, "1000017", "测试17", "1", "15666666666", "ry@qq.com", 210.0, "1")); + users.add(new UserTableModel(18, "1000018", "测试18", "1", "15666666666", "ry@qq.com", 340.0, "1")); + users.add(new UserTableModel(19, "1000019", "测试19", "1", "15666666666", "ry@qq.com", 160.0, "1")); + users.add(new UserTableModel(20, "1000020", "测试20", "1", "15666666666", "ry@qq.com", 220.0, "1")); + users.add(new UserTableModel(21, "1000021", "测试21", "1", "15666666666", "ry@qq.com", 120.0, "1")); + users.add(new UserTableModel(22, "1000022", "测试22", "1", "15666666666", "ry@qq.com", 130.0, "1")); + users.add(new UserTableModel(23, "1000023", "测试23", "1", "15666666666", "ry@qq.com", 490.0, "1")); + users.add(new UserTableModel(24, "1000024", "测试24", "1", "15666666666", "ry@qq.com", 570.0, "1")); + users.add(new UserTableModel(25, "1000025", "测试25", "1", "15666666666", "ry@qq.com", 250.0, "1")); + users.add(new UserTableModel(26, "1000026", "测试26", "1", "15666666666", "ry@qq.com", 250.0, "1")); + } + + /** + * 搜索相关 + */ + @GetMapping("/search") + public String search() + { + return prefix + "/search"; + } + + /** + * 数据汇总 + */ + @GetMapping("/footer") + public String footer() + { + return prefix + "/footer"; + } + + /** + * 组合表头 + */ + @GetMapping("/groupHeader") + public String groupHeader() + { + return prefix + "/groupHeader"; + } + + /** + * 表格导出 + */ + @GetMapping("/export") + public String export() + { + return prefix + "/export"; + } + + /** + * 翻页记住选择 + */ + @GetMapping("/remember") + public String remember() + { + return prefix + "/remember"; + } + + /** + * 跳转至指定页 + */ + @GetMapping("/pageGo") + public String pageGo() + { + return prefix + "/pageGo"; + } + + /** + * 自定义查询参数 + */ + @GetMapping("/params") + public String params() + { + return prefix + "/params"; + } + + /** + * 多表格 + */ + @GetMapping("/multi") + public String multi() + { + return prefix + "/multi"; + } + + /** + * 点击按钮加载表格 + */ + @GetMapping("/button") + public String button() + { + return prefix + "/button"; + } + + /** + * 直接加载表格数据 + */ + @GetMapping("/data") + public String data(ModelMap mmap) + { + mmap.put("users", users); + return prefix + "/data"; + } + + /** + * 表格冻结列 + */ + @GetMapping("/fixedColumns") + public String fixedColumns() + { + return prefix + "/fixedColumns"; + } + + /** + * 自定义触发事件 + */ + @GetMapping("/event") + public String event() + { + return prefix + "/event"; + } + + /** + * 表格细节视图 + */ + @GetMapping("/detail") + public String detail() + { + return prefix + "/detail"; + } + + /** + * 表格父子视图 + */ + @GetMapping("/child") + public String child() + { + return prefix + "/child"; + } + + /** + * 表格图片预览 + */ + @GetMapping("/image") + public String image() + { + return prefix + "/image"; + } + + /** + * 动态增删改查 + */ + @GetMapping("/curd") + public String curd() + { + return prefix + "/curd"; + } + + /** + * 表格拖拽操作 + */ + @GetMapping("/reorder") + public String reorder() + { + return prefix + "/reorder"; + } + + /** + * 表格行内编辑操作 + */ + @GetMapping("/editable") + public String editable() + { + return prefix + "/editable"; + } + + /** + * 主子表提交 + */ + @GetMapping("/subdata") + public String subdata() + { + return prefix + "/subdata"; + } + + /** + * 表格其他操作 + */ + @GetMapping("/other") + public String other() + { + return prefix + "/other"; + } + + /** + * 查询数据 + */ + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(UserTableModel userModel) + { + TableDataInfo rspData = new TableDataInfo(); + List userList = new ArrayList(Arrays.asList(new UserTableModel[users.size()])); + Collections.copy(userList, users); + // 查询条件过滤 + if (StringUtils.isNotEmpty(userModel.getUserName())) + { + userList.clear(); + for (UserTableModel user : users) + { + if (user.getUserName().equals(userModel.getUserName())) + { + userList.add(user); + } + } + } + PageDomain pageDomain = TableSupport.buildPageRequest(); + if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize()) + { + rspData.setRows(userList); + rspData.setTotal(userList.size()); + return rspData; + } + Integer pageNum = (pageDomain.getPageNum() - 1) * 10; + Integer pageSize = pageDomain.getPageNum() * 10; + if (pageSize > userList.size()) + { + pageSize = userList.size(); + } + rspData.setRows(userList.subList(pageNum, pageSize)); + rspData.setTotal(userList.size()); + return rspData; + } +} + +class UserTableModel +{ + /** 用户ID */ + private int userId; + + /** 用户编号 */ + private String userCode; + + /** 用户姓名 */ + private String userName; + + /** 用户性别 */ + private String userSex; + + /** 用户手机 */ + private String userPhone; + + /** 用户邮箱 */ + private String userEmail; + + /** 用户余额 */ + private double userBalance; + + /** 用户状态(0正常 1停用) */ + private String status; + + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + public UserTableModel() + { + + } + + public UserTableModel(int userId, String userCode, String userName, String userSex, String userPhone, + String userEmail, double userBalance, String status) + { + this.userId = userId; + this.userCode = userCode; + this.userName = userName; + this.userSex = userSex; + this.userPhone = userPhone; + this.userEmail = userEmail; + this.userBalance = userBalance; + this.status = status; + this.createTime = DateUtils.getNowDate(); + } + + public int getUserId() + { + return userId; + } + + public void setUserId(int userId) + { + this.userId = userId; + } + + public String getUserCode() + { + return userCode; + } + + public void setUserCode(String userCode) + { + this.userCode = userCode; + } + + public String getUserName() + { + return userName; + } + + public void setUserName(String userName) + { + this.userName = userName; + } + + public String getUserSex() + { + return userSex; + } + + public void setUserSex(String userSex) + { + this.userSex = userSex; + } + + public String getUserPhone() + { + return userPhone; + } + + public void setUserPhone(String userPhone) + { + this.userPhone = userPhone; + } + + public String getUserEmail() + { + return userEmail; + } + + public void setUserEmail(String userEmail) + { + this.userEmail = userEmail; + } + + public double getUserBalance() + { + return userBalance; + } + + public void setUserBalance(double userBalance) + { + this.userBalance = userBalance; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public Date getCreateTime() + { + return createTime; + } + + public void setCreateTime(Date createTime) + { + this.createTime = createTime; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/CustomerModel.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/CustomerModel.java new file mode 100644 index 000000000..d1aebf2ba --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/CustomerModel.java @@ -0,0 +1,116 @@ +package com.ruoyi.web.controller.demo.domain; + +import java.util.List; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 客户测试信息 + * + * @author ruoyi + */ +public class CustomerModel +{ + /** + * 客户姓名 + */ + private String name; + + /** + * 客户手机 + */ + private String phonenumber; + + /** + * 客户性别 + */ + private String sex; + + /** + * 客户生日 + */ + private String birthday; + + /** + * 客户描述 + */ + private String remark; + + /** + * 商品信息 + */ + private List goods; + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public String getPhonenumber() + { + return phonenumber; + } + + public void setPhonenumber(String phonenumber) + { + this.phonenumber = phonenumber; + } + + + public String getSex() + { + return sex; + } + + public void setSex(String sex) + { + this.sex = sex; + } + + public String getBirthday() + { + return birthday; + } + + public void setBirthday(String birthday) + { + this.birthday = birthday; + } + + public String getRemark() + { + return remark; + } + + public void setRemark(String remark) + { + this.remark = remark; + } + + public List getGoods() + { + return goods; + } + + public void setGoods(List goods) + { + this.goods = goods; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("name", getName()) + .append("phonenumber", getPhonenumber()) + .append("sex", getSex()) + .append("birthday", getBirthday()) + .append("goods", getGoods()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/GoodsModel.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/GoodsModel.java new file mode 100644 index 000000000..5cf7d3734 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/GoodsModel.java @@ -0,0 +1,82 @@ +package com.ruoyi.web.controller.demo.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 商品测试信息 + * + * @author ruoyi + */ +public class GoodsModel +{ + /** + * 商品名称 + */ + private String name; + + /** + * 商品重量 + */ + private Integer weight; + + /** + * 商品价格 + */ + private Double price; + + /** + * 商品种类 + */ + private String type; + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public Integer getWeight() + { + return weight; + } + + public void setWeight(Integer weight) + { + this.weight = weight; + } + + public Double getPrice() + { + return price; + } + + public void setPrice(Double price) + { + this.price = price; + } + + public String getType() + { + return type; + } + + public void setType(String type) + { + this.type = type; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("name", getName()) + .append("weight", getWeight()) + .append("price", getPrice()) + .append("type", getType()) + .toString(); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/UserOperateModel.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/UserOperateModel.java new file mode 100644 index 000000000..3324cc7ca --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/UserOperateModel.java @@ -0,0 +1,149 @@ +package com.ruoyi.web.controller.demo.domain; + +import java.util.Date; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.annotation.Excel.Type; +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.utils.DateUtils; + +public class UserOperateModel extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + private int userId; + + @Excel(name = "用户编号") + private String userCode; + + @Excel(name = "用户姓名") + private String userName; + + @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知") + private String userSex; + + @Excel(name = "用户手机") + private String userPhone; + + @Excel(name = "用户邮箱") + private String userEmail; + + @Excel(name = "用户余额") + private double userBalance; + + @Excel(name = "用户状态", readConverterExp = "0=正常,1=停用") + private String status; + + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) + private Date createTime; + + public UserOperateModel() + { + + } + + public UserOperateModel(int userId, String userCode, String userName, String userSex, String userPhone, + String userEmail, double userBalance, String status) + { + this.userId = userId; + this.userCode = userCode; + this.userName = userName; + this.userSex = userSex; + this.userPhone = userPhone; + this.userEmail = userEmail; + this.userBalance = userBalance; + this.status = status; + this.createTime = DateUtils.getNowDate(); + } + + public int getUserId() + { + return userId; + } + + public void setUserId(int userId) + { + this.userId = userId; + } + + public String getUserCode() + { + return userCode; + } + + public void setUserCode(String userCode) + { + this.userCode = userCode; + } + + public String getUserName() + { + return userName; + } + + public void setUserName(String userName) + { + this.userName = userName; + } + + public String getUserSex() + { + return userSex; + } + + public void setUserSex(String userSex) + { + this.userSex = userSex; + } + + public String getUserPhone() + { + return userPhone; + } + + public void setUserPhone(String userPhone) + { + this.userPhone = userPhone; + } + + public String getUserEmail() + { + return userEmail; + } + + public void setUserEmail(String userEmail) + { + this.userEmail = userEmail; + } + + public double getUserBalance() + { + return userBalance; + } + + public void setUserBalance(double userBalance) + { + this.userBalance = userBalance; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + @Override + public Date getCreateTime() + { + return createTime; + } + + @Override + public void setCreateTime(Date createTime) + { + this.createTime = createTime; + } +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java new file mode 100644 index 000000000..a0f0a4848 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java @@ -0,0 +1,46 @@ +package com.ruoyi.web.controller.system; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.framework.shiro.service.SysRegisterService; +import com.ruoyi.system.domain.SysUser; +import com.ruoyi.system.service.ISysConfigService; + +/** + * 注册验证 + * + * @author ruoyi + */ +@Controller +public class SysRegisterController extends BaseController +{ + @Autowired + private SysRegisterService registerService; + + @Autowired + private ISysConfigService configService; + + @GetMapping("/register") + public String register() + { + return "register"; + } + + @PostMapping("/register") + @ResponseBody + public AjaxResult ajaxRegister(SysUser user) + { + if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) + { + return error("当前系统没有开启注册功能!"); + } + String msg = registerService.register(user); + return StringUtils.isEmpty(msg) ? success() : error(msg); + } +} diff --git a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml new file mode 100644 index 000000000..2b1811312 --- /dev/null +++ b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css new file mode 100644 index 000000000..63a56c7af --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css @@ -0,0 +1,550 @@ +/*! + * bootstrap-fileinput v5.0.4 + * http://plugins.krajee.com/file-input + * + * Krajee default styling for bootstrap-fileinput. + * + * Author: Kartik Visweswaran + * Copyright: 2014 - 2019, Kartik Visweswaran, Krajee.com + * + * Licensed under the BSD-3-Clause + * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md + */ +.file-loading input[type=file], input[type=file].file-loading { + width: 0; + height: 0; +} + +.file-no-browse { + position: absolute; + left: 50%; + bottom: 20%; + width: 1px; + height: 1px; + font-size: 0; + opacity: 0; + border: none; + background: none; + outline: none; + box-shadow: none; +} + +.kv-hidden, .file-caption-icon, .file-zoom-dialog .modal-header:before, .file-zoom-dialog .modal-header:after, .file-input-new .file-preview, .file-input-new .close, .file-input-new .glyphicon-file, .file-input-new .fileinput-remove-button, .file-input-new .fileinput-upload-button, .file-input-new .no-browse .input-group-btn, .file-input-ajax-new .fileinput-remove-button, .file-input-ajax-new .fileinput-upload-button, .file-input-ajax-new .no-browse .input-group-btn, .hide-content .kv-file-content, .is-locked .fileinput-upload-button, .is-locked .fileinput-remove-button { + display: none; +} + +.btn-file input[type=file], .file-caption-icon, .file-preview .fileinput-remove, .krajee-default .file-thumb-progress, .file-zoom-dialog .btn-navigate, .file-zoom-dialog .floating-buttons { + position: absolute; +} + +.file-caption-icon .kv-caption-icon { + line-height: inherit; +} + +.file-input, .file-loading:before, .btn-file, .file-caption, .file-preview, .krajee-default.file-preview-frame, .krajee-default .file-thumbnail-footer, .file-zoom-dialog .modal-dialog { + position: relative; +} + +.file-error-message pre, .file-error-message ul, .krajee-default .file-actions, .krajee-default .file-other-error { + text-align: left; +} + +.file-error-message pre, .file-error-message ul { + margin: 0; +} + +.krajee-default .file-drag-handle, .krajee-default .file-upload-indicator { + float: left; + margin-top: 10px; + width: 16px; + height: 16px; +} + +.krajee-default .file-thumb-progress .progress, .krajee-default .file-thumb-progress .progress-bar { + height: 20px; + font-family: Verdana, Helvetica, sans-serif; + font-size: 9px; +} + +.krajee-default .file-thumb-progress .progress, .kv-upload-progress .progress { + background-color: #ccc; +} + +.krajee-default .file-caption-info, .krajee-default .file-size-info { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 160px; + height: 15px; + margin: auto; +} + +.file-zoom-content > .file-object.type-video, .file-zoom-content > .file-object.type-flash, .file-zoom-content > .file-object.type-image { + max-width: 100%; + max-height: 100%; + width: auto; +} + +.file-zoom-content > .file-object.type-video, .file-zoom-content > .file-object.type-flash { + height: 100%; +} + +.file-zoom-content > .file-object.type-pdf, .file-zoom-content > .file-object.type-html, .file-zoom-content > .file-object.type-text, .file-zoom-content > .file-object.type-default { + width: 100%; +} + +.file-loading:before { + content: " Loading..."; + display: inline-block; + padding-left: 20px; + line-height: 16px; + font-size: 13px; + font-variant: small-caps; + color: #999; + background: transparent url(loading.gif) top left no-repeat; +} + +.file-object { + margin: 0 0 -5px 0; + padding: 0; +} + +.btn-file { + overflow: hidden; +} + +.btn-file input[type=file] { + top: 0; + left: 0; + min-width: 100%; + min-height: 100%; + text-align: right; + opacity: 0; + background: none repeat scroll 0 0 transparent; + cursor: inherit; + display: block; +} + +.btn-file ::-ms-browse { + font-size: 10000px; + width: 100%; + height: 100%; +} + +.file-caption .file-caption-name { + width: 100%; + margin: 0; + padding: 0; + box-shadow: none; + border: none; + background: none; + outline: none; +} + +.file-caption.icon-visible .file-caption-icon { + display: inline-block; +} + +.file-caption.icon-visible .file-caption-name { + padding-left: 15px; +} + +.file-caption-icon { + left: 8px; +} + +.file-error-message { + color: #a94442; + background-color: #f2dede; + margin: 5px; + border: 1px solid #ebccd1; + border-radius: 4px; + padding: 15px; +} + +.file-error-message pre { + margin: 5px 0; +} + +.file-caption-disabled { + background-color: #eee; + cursor: not-allowed; + opacity: 1; +} + +.file-preview { + border-radius: 5px; + border: 1px solid #ddd; + padding: 8px; + width: 100%; + margin-bottom: 5px; +} + +.file-preview .btn-xs { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.file-preview .fileinput-remove { + top: 1px; + right: 1px; + line-height: 10px; +} + +.file-preview .clickable { + cursor: pointer; +} + +.file-preview-image { + font: 40px Impact, Charcoal, sans-serif; + color: #008000; +} + +.krajee-default.file-preview-frame { + margin: 8px; + border: 1px solid rgba(0,0,0,0.2); + box-shadow: 0 0 10px 0 rgba(0,0,0,0.2); + padding: 6px; + float: left; + text-align: center; +} + +.krajee-default.file-preview-frame .kv-file-content { + width: 213px; + height: 160px; +} + +.krajee-default .file-preview-other-frame { + display: flex; + align-items: center; + justify-content: center; +} + +.krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered { + width: 400px; +} + +.krajee-default.file-preview-frame[data-template="audio"] .kv-file-content { + width: 240px; + height: 55px; +} + +.krajee-default.file-preview-frame .file-thumbnail-footer { + height: 70px; +} + +.krajee-default.file-preview-frame:not(.file-preview-error):hover { + border: 1px solid rgba(0,0,0,0.3); + box-shadow: 0 0 10px 0 rgba(0,0,0,0.4); +} + +.krajee-default .file-preview-text { + display: block; + color: #428bca; + border: 1px solid #ddd; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + outline: none; + padding: 8px; + resize: none; +} + +.krajee-default .file-preview-html { + border: 1px solid #ddd; + padding: 8px; + overflow: auto; +} + +.krajee-default .file-other-icon { + font-size: 6em; + line-height: 1; +} + +.krajee-default .file-footer-buttons { + float: right; +} + +.krajee-default .file-footer-caption { + display: block; + text-align: center; + padding-top: 4px; + font-size: 11px; + color: #777; + margin-bottom: 30px; +} + +.file-upload-stats { + font-size: 10px; + text-align: center; + width: 100%; +} + +.kv-upload-progress .file-upload-stats { + font-size: 12px; + margin: -10px 0 5px; +} + +.krajee-default .file-preview-error { + opacity: 0.65; + box-shadow: none; +} + +.krajee-default .file-thumb-progress { + height: 11px; + top: 37px; + left: 0; + right: 0; +} + +.krajee-default.kvsortable-ghost { + background: #e1edf7; + border: 2px solid #a1abff; +} + +.krajee-default .file-preview-other:hover { + opacity: 0.8; +} + +.krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover { + color: #000; +} + +.kv-upload-progress .progress { + height: 20px; + margin: 10px 0; + overflow: hidden; +} + +.kv-upload-progress .progress-bar { + height: 20px; + font-family: Verdana, Helvetica, sans-serif; +} + +/*noinspection CssOverwrittenProperties*/ +.file-zoom-dialog .file-other-icon { + font-size: 22em; + font-size: 50vmin; +} + +.file-zoom-dialog .modal-dialog { + width: auto; +} + +.file-zoom-dialog .modal-header { + display: flex; + align-items: center; + justify-content: space-between; +} + +.file-zoom-dialog .btn-navigate { + padding: 0; + margin: 0; + background: transparent; + text-decoration: none; + outline: none; + opacity: 0.7; + top: 45%; + font-size: 4em; + color: #1c94c4; +} + +.file-zoom-dialog .btn-navigate:not([disabled]):hover { + outline: none; + box-shadow: none; + opacity: 0.6; +} + +.file-zoom-dialog .floating-buttons { + top: 5px; + right: 10px; +} + +.file-zoom-dialog .btn-navigate[disabled] { + opacity: 0.3; +} + +.file-zoom-dialog .btn-prev { + left: 1px; +} + +.file-zoom-dialog .btn-next { + right: 1px; +} + +.file-zoom-dialog .kv-zoom-title { + font-weight: 300; + color: #999; + max-width: 50%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.file-input-new .no-browse .form-control { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.file-input-ajax-new .no-browse .form-control { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.file-caption-main { + width: 100%; +} + +.file-thumb-loading { + background: transparent url(loading.gif) no-repeat scroll center center content-box !important; +} + +.file-drop-zone { + border: 1px dashed #aaa; + border-radius: 4px; + text-align: center; + vertical-align: middle; + margin: 12px 15px 12px 12px; + padding: 5px; +} + +.file-drop-zone.clickable:hover { + border: 2px dashed #999; +} + +.file-drop-zone.clickable:focus { + border: 2px solid #5acde2; +} + +.file-drop-zone .file-preview-thumbnails { + cursor: default; +} + +.file-drop-zone-title { + color: #aaa; + font-size: 1.6em; + padding: 85px 10px; + cursor: default; +} + +.file-highlighted { + border: 2px dashed #999 !important; + background-color: #eee; +} + +.file-uploading { + background: url(loading-sm.gif) no-repeat center bottom 10px; + opacity: 0.65; +} + +.file-zoom-fullscreen .modal-dialog { + min-width: 100%; + margin: 0; +} + +.file-zoom-fullscreen .modal-content { + border-radius: 0; + box-shadow: none; + min-height: 100vh; +} + +.file-zoom-fullscreen .modal-body { + overflow-y: auto; +} + +.floating-buttons { + z-index: 3000; +} + +.floating-buttons .btn-kv { + margin-left: 3px; + z-index: 3000; +} + +.kv-zoom-actions .btn-kv { + margin-left: 3px; +} + +.file-zoom-content { + height: 480px; + text-align: center; +} + +.file-zoom-content .file-preview-image { + max-height: 100%; +} + +.file-zoom-content .file-preview-video { + max-height: 100%; +} + +.file-zoom-content > .file-object.type-image { + height: auto; + min-height: inherit; +} + +.file-zoom-content > .file-object.type-audio { + width: auto; + height: 30px; +} + +@media (min-width: 576px) { + .file-zoom-dialog .modal-dialog { + max-width: 500px; + } +} + +@media (min-width: 992px) { + .file-zoom-dialog .modal-lg { + max-width: 800px; + } +} + +@media (max-width: 767px) { + .file-preview-thumbnails { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + } + + .file-zoom-dialog .modal-header { + flex-direction: column; + } +} + +@media (max-width: 350px) { + .krajee-default.file-preview-frame:not([data-template="audio"]) .kv-file-content { + width: 160px; + } +} + +@media (max-width: 420px) { + .krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered { + width: 100%; + } +} + +.file-loading[dir=rtl]:before { + background: transparent url(loading.gif) top right no-repeat; + padding-left: 0; + padding-right: 20px; +} + +.file-sortable .file-drag-handle { + cursor: move; + opacity: 1; +} + +.file-sortable .file-drag-handle:hover { + opacity: 0.7; +} + +.clickable .file-drop-zone-title { + cursor: pointer; +} + +.file-preview-initial.sortable-chosen { + background-color: #d9edf7; +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js new file mode 100644 index 000000000..c0723da97 --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js @@ -0,0 +1,5697 @@ +/*! + * bootstrap-fileinput v5.0.4 + * http://plugins.krajee.com/file-input + * + * Author: Kartik Visweswaran + * Copyright: 2014 - 2019, Kartik Visweswaran, Krajee.com + * + * Licensed under the BSD-3-Clause + * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md + */ +(function (factory) { + 'use strict'; + //noinspection JSUnresolvedVariable + if (typeof define === 'function' && define.amd) { // jshint ignore:line + // AMD. Register as an anonymous module. + define(['jquery'], factory); // jshint ignore:line + } else { // noinspection JSUnresolvedVariable + if (typeof module === 'object' && module.exports) { // jshint ignore:line + // Node/CommonJS + // noinspection JSUnresolvedVariable + module.exports = factory(require('jquery')); // jshint ignore:line + } else { + // Browser globals + factory(window.jQuery); + } + } +}(function ($) { + 'use strict'; + + $.fn.fileinputLocales = {}; + $.fn.fileinputThemes = {}; + + String.prototype.setTokens = function (replacePairs) { + var str = this.toString(), key, re; + for (key in replacePairs) { + if (replacePairs.hasOwnProperty(key)) { + re = new RegExp('\{' + key + '\}', 'g'); + str = str.replace(re, replacePairs[key]); + } + } + return str; + }; + + var $h, FileInput; + + // fileinput helper object for all global variables and internal helper methods + //noinspection JSUnresolvedVariable + $h = { + FRAMES: '.kv-preview-thumb', + SORT_CSS: 'file-sortable', + OBJECT_PARAMS: '\n' + + '\n' + + '\n' + + '\n' + + '\n' + + '\n', + DEFAULT_PREVIEW: '

', + MODAL_ID: 'kvFileinputModal', + MODAL_EVENTS: ['show', 'shown', 'hide', 'hidden', 'loaded'], + logMessages: { + ajaxError: '{status}: {error}. Error Details: {text}.', + badDroppedFiles: 'Error scanning dropped files!', + badExifParser: 'Error loading the piexif.js library. {details}', + badInputType: 'The input "type" must be set to "file" for initializing the "bootstrap-fileinput" plugin.', + exifWarning: 'To avoid this warning, either set "autoOrientImage" to "false" OR ensure you have loaded ' + + 'the "piexif.js" library correctly on your page before the "fileinput.js" script.', + invalidChunkSize: 'Invalid upload chunk size: "{chunkSize}". Resumable uploads are disabled.', + invalidThumb: 'Invalid thumb frame with id: "{id}".', + noResumableSupport: 'The browser does not support resumable or chunk uploads.', + noUploadUrl: 'The "uploadUrl" is not set. Ajax uploads and resumable uploads have been disabled.', + retryStatus: 'Retrying upload for chunk # {chunk} for {filename}... retry # {retry}.' + }, + objUrl: window.URL || window.webkitURL, + now: function () { + return new Date(); + }, + round: function (num) { + num = parseFloat(num); + return isNaN(num) ? 0 : Math.floor(Math.round(num)); + }, + getFileRelativePath: function (file) { + /** @namespace file.relativePath */ + /** @namespace file.webkitRelativePath */ + return String(file.relativePath || file.webkitRelativePath || $h.getFileName(file) || null); + + }, + getFileId: function (file, generateFileId) { + var relativePath = $h.getFileRelativePath(file); + if (typeof generateFileId === 'function') { + return generateFileId(file); + } + if (!file) { + return null; + } + if (!relativePath) { + return null; + } + return (file.size + '_' + relativePath.replace(/\s/img, '_')); + }, + getElapsed: function (seconds) { + var delta = seconds, out = '', result = {}, structure = { + year: 31536000, + month: 2592000, + week: 604800, // uncomment row to ignore + day: 86400, // feel free to add your own row + hour: 3600, + minute: 60, + second: 1 + }; + Object.keys(structure).forEach(function (key) { + result[key] = Math.floor(delta / structure[key]); + delta -= result[key] * structure[key]; + }); + $.each(result, function (key, value) { + if (value > 0) { + out += (out ? ' ' : '') + value + key.substring(0, 1); + } + }); + return out; + }, + debounce: function (func, delay) { + var inDebounce; + return function () { + var args = arguments, context = this; + clearTimeout(inDebounce); + inDebounce = setTimeout(function () { + func.apply(context, args); + }, delay); + }; + }, + stopEvent: function (e) { + e.stopPropagation(); + e.preventDefault(); + }, + getFileName: function (file) { + /** @namespace file.fileName */ + return file ? (file.fileName || file.name || '') : ''; // some confusion in different versions of Firefox + }, + createObjectURL: function (data) { + if ($h.objUrl && $h.objUrl.createObjectURL && data) { + return $h.objUrl.createObjectURL(data); + } + return ''; + }, + revokeObjectURL: function (data) { + if ($h.objUrl && $h.objUrl.revokeObjectURL && data) { + $h.objUrl.revokeObjectURL(data); + } + }, + compare: function (input, str, exact) { + return input !== undefined && (exact ? input === str : input.match(str)); + }, + isIE: function (ver) { + var div, status; + // check for IE versions < 11 + if (navigator.appName !== 'Microsoft Internet Explorer') { + return false; + } + if (ver === 10) { + return new RegExp('msie\\s' + ver, 'i').test(navigator.userAgent); + } + div = document.createElement('div'); + div.innerHTML = ''; + status = div.getElementsByTagName('i').length; + document.body.appendChild(div); + div.parentNode.removeChild(div); + return status; + }, + canAssignFilesToInput: function () { + var input = document.createElement('input'); + try { + input.type = 'file'; + input.files = null; + return true; + } catch (err) { + return false; + } + }, + getDragDropFolders: function (items) { + var i, item, len = items ? items.length : 0, folders = 0; + if (len > 0 && items[0].webkitGetAsEntry()) { + for (i = 0; i < len; i++) { + item = items[i].webkitGetAsEntry(); + if (item && item.isDirectory) { + folders++; + } + } + } + return folders; + }, + initModal: function ($modal) { + var $body = $('body'); + if ($body.length) { + $modal.appendTo($body); + } + }, + isEmpty: function (value, trim) { + return value === undefined || value === null || value.length === 0 || (trim && $.trim(value) === ''); + }, + isArray: function (a) { + return Array.isArray(a) || Object.prototype.toString.call(a) === '[object Array]'; + }, + ifSet: function (needle, haystack, def) { + def = def || ''; + return (haystack && typeof haystack === 'object' && needle in haystack) ? haystack[needle] : def; + }, + cleanArray: function (arr) { + if (!(arr instanceof Array)) { + arr = []; + } + return arr.filter(function (e) { + return (e !== undefined && e !== null); + }); + }, + spliceArray: function (arr, index, reverseOrder) { + var i, j = 0, out = [], newArr; + if (!(arr instanceof Array)) { + return []; + } + newArr = $.extend(true, [], arr); + if (reverseOrder) { + newArr.reverse(); + } + for (i = 0; i < newArr.length; i++) { + if (i !== index) { + out[j] = newArr[i]; + j++; + } + } + if (reverseOrder) { + out.reverse(); + } + return out; + }, + getNum: function (num, def) { + def = def || 0; + if (typeof num === 'number') { + return num; + } + if (typeof num === 'string') { + num = parseFloat(num); + } + return isNaN(num) ? def : num; + }, + hasFileAPISupport: function () { + return !!(window.File && window.FileReader); + }, + hasDragDropSupport: function () { + var div = document.createElement('div'); + /** @namespace div.draggable */ + /** @namespace div.ondragstart */ + /** @namespace div.ondrop */ + return !$h.isIE(9) && + (div.draggable !== undefined || (div.ondragstart !== undefined && div.ondrop !== undefined)); + }, + hasFileUploadSupport: function () { + return $h.hasFileAPISupport() && window.FormData; + }, + hasBlobSupport: function () { + try { + return !!window.Blob && Boolean(new Blob()); + } catch (e) { + return false; + } + }, + hasArrayBufferViewSupport: function () { + try { + return new Blob([new Uint8Array(100)]).size === 100; + } catch (e) { + return false; + } + }, + hasResumableUploadSupport: function () { + /** @namespace Blob.prototype.webkitSlice */ + /** @namespace Blob.prototype.mozSlice */ + return $h.hasFileUploadSupport() && $h.hasBlobSupport() && $h.hasArrayBufferViewSupport() && + (!!Blob.prototype.webkitSlice || !!Blob.prototype.mozSlice || !!Blob.prototype.slice || false); + }, + dataURI2Blob: function (dataURI) { + //noinspection JSUnresolvedVariable + var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || + window.MSBlobBuilder, canBlob = $h.hasBlobSupport(), byteStr, arrayBuffer, intArray, i, mimeStr, bb, + canProceed = (canBlob || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array; + if (!canProceed) { + return null; + } + if (dataURI.split(',')[0].indexOf('base64') >= 0) { + byteStr = atob(dataURI.split(',')[1]); + } else { + byteStr = decodeURIComponent(dataURI.split(',')[1]); + } + arrayBuffer = new ArrayBuffer(byteStr.length); + intArray = new Uint8Array(arrayBuffer); + for (i = 0; i < byteStr.length; i += 1) { + intArray[i] = byteStr.charCodeAt(i); + } + mimeStr = dataURI.split(',')[0].split(':')[1].split(';')[0]; + if (canBlob) { + return new Blob([$h.hasArrayBufferViewSupport() ? intArray : arrayBuffer], {type: mimeStr}); + } + bb = new BlobBuilder(); + bb.append(arrayBuffer); + return bb.getBlob(mimeStr); + }, + arrayBuffer2String: function (buffer) { + //noinspection JSUnresolvedVariable + if (window.TextDecoder) { + // noinspection JSUnresolvedFunction + return new TextDecoder('utf-8').decode(buffer); + } + var array = Array.prototype.slice.apply(new Uint8Array(buffer)), out = '', i = 0, len, c, char2, char3; + len = array.length; + while (i < len) { + c = array[i++]; + switch (c >> 4) { // jshint ignore:line + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + // 0xxxxxxx + out += String.fromCharCode(c); + break; + case 12: + case 13: + // 110x xxxx 10xx xxxx + char2 = array[i++]; + out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); // jshint ignore:line + break; + case 14: + // 1110 xxxx 10xx xxxx 10xx xxxx + char2 = array[i++]; + char3 = array[i++]; + out += String.fromCharCode(((c & 0x0F) << 12) | // jshint ignore:line + ((char2 & 0x3F) << 6) | // jshint ignore:line + ((char3 & 0x3F) << 0)); // jshint ignore:line + break; + } + } + return out; + }, + isHtml: function (str) { + var a = document.createElement('div'); + a.innerHTML = str; + for (var c = a.childNodes, i = c.length; i--;) { + if (c[i].nodeType === 1) { + return true; + } + } + return false; + }, + isSvg: function (str) { + return str.match(/^\s*<\?xml/i) && (str.match(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + }, + replaceTags: function (str, tags) { + var out = str; + if (!tags) { + return out; + } + $.each(tags, function (key, value) { + if (typeof value === 'function') { + value = value(); + } + out = out.split(key).join(value); + }); + return out; + }, + cleanMemory: function ($thumb) { + var data = $thumb.is('img') ? $thumb.attr('src') : $thumb.find('source').attr('src'); + $h.revokeObjectURL(data); + }, + findFileName: function (filePath) { + var sepIndex = filePath.lastIndexOf('/'); + if (sepIndex === -1) { + sepIndex = filePath.lastIndexOf('\\'); + } + return filePath.split(filePath.substring(sepIndex, sepIndex + 1)).pop(); + }, + checkFullScreen: function () { + //noinspection JSUnresolvedVariable + return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || + document.msFullscreenElement; + }, + toggleFullScreen: function (maximize) { + var doc = document, de = doc.documentElement; + if (de && maximize && !$h.checkFullScreen()) { + /** @namespace document.requestFullscreen */ + /** @namespace document.msRequestFullscreen */ + /** @namespace document.mozRequestFullScreen */ + /** @namespace document.webkitRequestFullscreen */ + /** @namespace Element.ALLOW_KEYBOARD_INPUT */ + if (de.requestFullscreen) { + de.requestFullscreen(); + } else { + if (de.msRequestFullscreen) { + de.msRequestFullscreen(); + } else { + if (de.mozRequestFullScreen) { + de.mozRequestFullScreen(); + } else { + if (de.webkitRequestFullscreen) { + de.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); + } + } + } + } + } else { + /** @namespace document.exitFullscreen */ + /** @namespace document.msExitFullscreen */ + /** @namespace document.mozCancelFullScreen */ + /** @namespace document.webkitExitFullscreen */ + if (doc.exitFullscreen) { + doc.exitFullscreen(); + } else { + if (doc.msExitFullscreen) { + doc.msExitFullscreen(); + } else { + if (doc.mozCancelFullScreen) { + doc.mozCancelFullScreen(); + } else { + if (doc.webkitExitFullscreen) { + doc.webkitExitFullscreen(); + } + } + } + } + } + }, + moveArray: function (arr, oldIndex, newIndex, reverseOrder) { + var newArr = $.extend(true, [], arr); + if (reverseOrder) { + newArr.reverse(); + } + if (newIndex >= newArr.length) { + var k = newIndex - newArr.length; + while ((k--) + 1) { + newArr.push(undefined); + } + } + newArr.splice(newIndex, 0, newArr.splice(oldIndex, 1)[0]); + if (reverseOrder) { + newArr.reverse(); + } + return newArr; + }, + cleanZoomCache: function ($el) { + var $cache = $el.closest('.kv-zoom-cache-theme'); + if (!$cache.length) { + $cache = $el.closest('.kv-zoom-cache'); + } + $cache.remove(); + }, + closeButton: function (css) { + css = css ? 'close ' + css : 'close'; + return ''; + }, + getRotation: function (value) { + switch (value) { + case 2: + return 'rotateY(180deg)'; + case 3: + return 'rotate(180deg)'; + case 4: + return 'rotate(180deg) rotateY(180deg)'; + case 5: + return 'rotate(270deg) rotateY(180deg)'; + case 6: + return 'rotate(90deg)'; + case 7: + return 'rotate(90deg) rotateY(180deg)'; + case 8: + return 'rotate(270deg)'; + default: + return ''; + } + }, + setTransform: function (el, val) { + if (!el) { + return; + } + el.style.transform = val; + el.style.webkitTransform = val; + el.style['-moz-transform'] = val; + el.style['-ms-transform'] = val; + el.style['-o-transform'] = val; + } + }; + FileInput = function (element, options) { + var self = this; + self.$element = $(element); + self.$parent = self.$element.parent(); + if (!self._validate()) { + return; + } + self.isPreviewable = $h.hasFileAPISupport(); + self.isIE9 = $h.isIE(9); + self.isIE10 = $h.isIE(10); + if (self.isPreviewable || self.isIE9) { + self._init(options); + self._listen(); + } + self.$element.removeClass('file-loading'); + }; + //noinspection JSUnusedGlobalSymbols + FileInput.prototype = { + constructor: FileInput, + _cleanup: function () { + var self = this; + self.reader = null; + self.clearFileStack(); + self.fileBatchCompleted = true; + self.isError = false; + self.cancelling = false; + self.paused = false; + self.lastProgress = 0; + self._initAjax(); + }, + _initAjax: function () { + var self = this; + self.ajaxQueue = []; + self.ajaxRequests = []; + self.ajaxQueueIntervalId = null; + self.ajaxCurrentThreads = 0; + self.ajaxAborted = false; + }, + _init: function (options, refreshMode) { + var self = this, f, $el = self.$element, $cont, t, tmp; + self.options = options; + $.each(options, function (key, value) { + switch (key) { + case 'minFileCount': + case 'maxFileCount': + case 'minFileSize': + case 'maxFileSize': + case 'maxFilePreviewSize': + case 'resizeImageQuality': + case 'resizeIfSizeMoreThan': + case 'progressUploadThreshold': + case 'initialPreviewCount': + case 'zoomModalHeight': + case 'minImageHeight': + case 'maxImageHeight': + case 'minImageWidth': + case 'maxImageWidth': + self[key] = $h.getNum(value); + break; + default: + self[key] = value; + break; + } + }); + if (self.rtl) { // swap buttons for rtl + tmp = self.previewZoomButtonIcons.prev; + self.previewZoomButtonIcons.prev = self.previewZoomButtonIcons.next; + self.previewZoomButtonIcons.next = tmp; + } + // validate chunk threads to not exceed maxAjaxThreads + if (!isNaN(self.maxAjaxThreads) && self.maxAjaxThreads < self.resumableUploadOptions.maxThreads) { + self.resumableUploadOptions.maxThreads = self.maxAjaxThreads; + } + self._initFileManager(); + if (typeof self.autoOrientImage === 'function') { + self.autoOrientImage = self.autoOrientImage(); + } + if (typeof self.autoOrientImageInitial === 'function') { + self.autoOrientImageInitial = self.autoOrientImageInitial(); + } + if (!refreshMode) { + self._cleanup(); + } + self.$form = $el.closest('form'); + self._initTemplateDefaults(); + self.uploadFileAttr = !$h.isEmpty($el.attr('name')) ? $el.attr('name') : 'file_data'; + t = self._getLayoutTemplate('progress'); + self.progressTemplate = t.replace('{class}', self.progressClass); + self.progressInfoTemplate = t.replace('{class}', self.progressInfoClass); + self.progressPauseTemplate = t.replace('{class}', self.progressPauseClass); + self.progressCompleteTemplate = t.replace('{class}', self.progressCompleteClass); + self.progressErrorTemplate = t.replace('{class}', self.progressErrorClass); + self.isDisabled = $el.attr('disabled') || $el.attr('readonly'); + if (self.isDisabled) { + $el.attr('disabled', true); + } + self.isClickable = self.browseOnZoneClick && self.showPreview && + (self.dropZoneEnabled || !$h.isEmpty(self.defaultPreviewContent)); + self.isAjaxUpload = $h.hasFileUploadSupport() && !$h.isEmpty(self.uploadUrl); + self.dropZoneEnabled = $h.hasDragDropSupport() && self.dropZoneEnabled; + if (!self.isAjaxUpload) { + self.dropZoneEnabled = self.dropZoneEnabled && $h.canAssignFilesToInput(); + } + self.slug = typeof options.slugCallback === 'function' ? options.slugCallback : self._slugDefault; + self.mainTemplate = self.showCaption ? self._getLayoutTemplate('main1') : self._getLayoutTemplate('main2'); + self.captionTemplate = self._getLayoutTemplate('caption'); + self.previewGenericTemplate = self._getPreviewTemplate('generic'); + if (!self.imageCanvas && self.resizeImage && (self.maxImageWidth || self.maxImageHeight)) { + self.imageCanvas = document.createElement('canvas'); + self.imageCanvasContext = self.imageCanvas.getContext('2d'); + } + if ($h.isEmpty($el.attr('id'))) { + $el.attr('id', $h.uniqId()); + } + self.namespace = '.fileinput_' + $el.attr('id').replace(/-/g, '_'); + if (self.$container === undefined) { + self.$container = self._createContainer(); + } else { + self._refreshContainer(); + } + $cont = self.$container; + self.$dropZone = $cont.find('.file-drop-zone'); + self.$progress = $cont.find('.kv-upload-progress'); + self.$btnUpload = $cont.find('.fileinput-upload'); + self.$captionContainer = $h.getElement(options, 'elCaptionContainer', $cont.find('.file-caption')); + self.$caption = $h.getElement(options, 'elCaptionText', $cont.find('.file-caption-name')); + if (!$h.isEmpty(self.msgPlaceholder)) { + f = $el.attr('multiple') ? self.filePlural : self.fileSingle; + self.$caption.attr('placeholder', self.msgPlaceholder.replace('{files}', f)); + } + self.$captionIcon = self.$captionContainer.find('.file-caption-icon'); + self.$previewContainer = $h.getElement(options, 'elPreviewContainer', $cont.find('.file-preview')); + self.$preview = $h.getElement(options, 'elPreviewImage', $cont.find('.file-preview-thumbnails')); + self.$previewStatus = $h.getElement(options, 'elPreviewStatus', $cont.find('.file-preview-status')); + self.$errorContainer = $h.getElement(options, 'elErrorContainer', + self.$previewContainer.find('.kv-fileinput-error')); + self._validateDisabled(); + if (!$h.isEmpty(self.msgErrorClass)) { + $h.addCss(self.$errorContainer, self.msgErrorClass); + } + if (!refreshMode) { + self.$errorContainer.hide(); + self.previewInitId = 'preview-' + $h.uniqId(); + self._initPreviewCache(); + self._initPreview(true); + self._initPreviewActions(); + if (self.$parent.hasClass('file-loading')) { + self.$container.insertBefore(self.$parent); + self.$parent.remove(); + } + } else { + if (!self._errorsExist()) { + self.$errorContainer.hide(); + } + } + self._setFileDropZoneTitle(); + if ($el.attr('disabled')) { + self.disable(); + } + self._initZoom(); + if (self.hideThumbnailContent) { + $h.addCss(self.$preview, 'hide-content'); + } + }, + _initFileManager: function () { + var self = this; + self.fileManager = { + stack: {}, + processed: [], + errors: [], + loadedImages: {}, + totalImages: 0, + totalFiles: null, + totalSize: null, + uploadedSize: 0, + stats: {}, + initStats: function (id) { + var data = {started: $h.now().getTime()}; + if (id) { + self.fileManager.stats[id] = data; + } else { + self.fileManager.stats = data; + } + }, + getUploadStats: function (id, loaded, total) { + var fm = self.fileManager, started = id ? fm.stats[id] && fm.stats[id].started || null : null; + if (!started) { + started = $h.now().getTime(); + } + var elapsed = ($h.now().getTime() - started) / 1000, + speeds = ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s', 'PB/s', 'EB/s', 'ZB/s', 'YB/s'], + bps = elapsed ? loaded / elapsed : 0, bitrate = self._getSize(bps, speeds), + pendingBytes = total - loaded, + out = { + fileId: id, + started: started, + elapsed: elapsed, + loaded: loaded, + total: total, + bps: bps, + bitrate: bitrate, + pendingBytes: pendingBytes + }; + if (id) { + fm.stats[id] = out; + } else { + fm.stats = out; + } + return out; + }, + exists: function (id) { + return $.inArray(id, self.fileManager.getIdList()) !== -1; + }, + count: function () { + return self.fileManager.getIdList().length; + }, + total: function () { + var fm = self.fileManager; + if (!fm.totalFiles) { + fm.totalFiles = fm.count(); + } + return fm.totalFiles; + }, + getTotalSize: function () { + var fm = self.fileManager; + if (fm.totalSize) { + return fm.totalSize; + } + fm.totalSize = 0; + $.each(self.fileManager.stack, function (id, f) { + var size = parseFloat(f.size); + fm.totalSize += isNaN(size) ? 0 : size; + }); + return fm.totalSize; + }, + add: function (file, id) { + if (!id) { + id = self.fileManager.getId(file); + } + if (!id) { + return; + } + self.fileManager.stack[id] = { + file: file, + name: $h.getFileName(file), + relativePath: $h.getFileRelativePath(file), + size: file.size, + nameFmt: self._getFileName(file, ''), + sizeFmt: self._getSize(file.size) + }; + }, + remove: function ($thumb) { + var id = $thumb.attr('data-fileid'); + if (id) { + self.fileManager.removeFile(id); + } + }, + removeFile: function (id) { + delete self.fileManager.stack[id]; + delete self.fileManager.loadedImages[id]; + }, + move: function (idFrom, idTo) { + var result = {}, stack = self.fileManager.stack; + if (!idFrom && !idTo || idFrom === idTo) { + return; + } + $.each(stack, function (k, v) { + if (k !== idFrom) { + result[k] = v; + } + if (k === idTo) { + result[idFrom] = stack[idFrom]; + } + }); + self.fileManager.stack = result; + }, + list: function () { + var files = []; + $.each(self.fileManager.stack, function (k, v) { + if (v && v.file) { + files.push(v.file); + } + }); + return files; + }, + isPending: function (id) { + return $.inArray(id, self.fileManager.processed) === -1 && self.fileManager.exists(id); + }, + isProcessed: function () { + var processed = true, fm = self.fileManager; + $.each(fm.stack, function (id) { + if (fm.isPending(id)) { + processed = false; + } + }); + return processed; + }, + clear: function () { + var fm = self.fileManager; + fm.totalFiles = null; + fm.totalSize = null; + fm.uploadedSize = 0; + fm.stack = {}; + fm.errors = []; + fm.processed = []; + fm.stats = {}; + fm.clearImages(); + }, + clearImages: function () { + self.fileManager.loadedImages = {}; + self.fileManager.totalImages = 0; + }, + addImage: function (id, config) { + self.fileManager.loadedImages[id] = config; + }, + removeImage: function (id) { + delete self.fileManager.loadedImages[id]; + }, + getImageIdList: function () { + return Object.keys(self.fileManager.loadedImages); + }, + getImageCount: function () { + return self.fileManager.getImageIdList().length; + }, + getId: function (file) { + return self._getFileId(file); + }, + getIndex: function (id) { + return self.fileManager.getIdList().indexOf(id); + }, + getThumb: function (id) { + var $thumb = null; + self._getThumbs().each(function () { + if ($(this).attr('data-fileid') === id) { + $thumb = $(this); + } + }); + return $thumb; + }, + getThumbIndex: function ($thumb) { + var id = $thumb.attr('data-fileid'); + return self.fileManager.getIndex(id); + }, + getIdList: function () { + return Object.keys(self.fileManager.stack); + }, + getFile: function (id) { + return self.fileManager.stack[id] || null; + }, + getFileName: function (id, fmt) { + var file = self.fileManager.getFile(id); + if (!file) { + return ''; + } + return fmt ? (file.nameFmt || '') : file.name || ''; + }, + getFirstFile: function () { + var ids = self.fileManager.getIdList(), id = ids && ids.length ? ids[0] : null; + return self.fileManager.getFile(id); + }, + setFile: function (id, file) { + if (self.fileManager.getFile(id)) { + self.fileManager.stack[id].file = file; + } else { + self.fileManager.add(file, id); + } + }, + setProcessed: function (id) { + self.fileManager.processed.push(id); + }, + getProgress: function () { + var total = self.fileManager.total(), processed = self.fileManager.processed.length; + if (!total) { + return 0; + } + return Math.ceil(processed / total * 100); + + }, + setProgress: function (id, pct) { + var f = self.fileManager.getFile(id); + if (!isNaN(pct) && f) { + f.progress = pct; + } + } + }; + }, + _setUploadData: function (fd, config) { + var self = this; + $.each(config, function (key, value) { + var param = self.uploadParamNames[key] || key; + if ($h.isArray(value)) { + fd.append(param, value[0], value[1]); + } else { + fd.append(param, value); + } + }); + }, + _initResumableUpload: function () { + var self = this, opts = self.resumableUploadOptions, logs = $h.logMessages; + if (!self.enableResumableUpload) { + return; + } + if (opts.fallback !== false && typeof opts.fallback !== 'function') { + opts.fallback = function (s) { + s._log(logs.noResumableSupport); + s.enableResumableUpload = false; + }; + } + if (!$h.hasResumableUploadSupport() && opts.fallback !== false) { + opts.fallback(self); + return; + } + if (!self.uploadUrl && self.enableResumableUpload) { + self._log(logs.noUploadUrl); + self.enableResumableUpload = false; + return; + + } + opts.chunkSize = parseFloat(opts.chunkSize); + if (opts.chunkSize <= 0 || isNaN(opts.chunkSize)) { + self._log(logs.invalidChunkSize, {chunkSize: opts.chunkSize}); + self.enableResumableUpload = false; + return; + } + self.resumableManager = { + init: function (id, f, index) { + var rm = self.resumableManager, fm = self.fileManager; + rm.currThreads = 0; + rm.logs = []; + rm.stack = []; + rm.error = ''; + rm.chunkIntervalId = null; + rm.id = id; + rm.file = f.file; + rm.fileName = f.name; + rm.fileIndex = index; + rm.completed = false; + rm.testing = false; + rm.lastProgress = 0; + if (self.showPreview) { + rm.$thumb = fm.getThumb(id) || null; + rm.$progress = rm.$btnDelete = null; + if (rm.$thumb && rm.$thumb.length) { + rm.$progress = rm.$thumb.find('.file-thumb-progress'); + rm.$btnDelete = rm.$thumb.find('.kv-file-remove'); + } + } + rm.chunkSize = self.resumableUploadOptions.chunkSize * 1024; + rm.chunkCount = rm.getTotalChunks(); + }, + logAjaxError: function (jqXHR, textStatus, errorThrown) { + if (self.resumableUploadOptions.showErrorLog) { + self._log(logs.ajaxError, { + status: jqXHR.status, + error: errorThrown, + text: jqXHR.responseText || '' + }); + } + }, + reset: function () { + var rm = self.resumableManager; + rm.processed = {}; + }, + setProcessed: function (status) { + var rm = self.resumableManager, fm = self.fileManager, id = rm.id, msg, + $thumb = rm.$thumb, $prog = rm.$progress, hasThumb = $thumb && $thumb.length, + params = {id: hasThumb ? $thumb.attr('id') : '', index: fm.getIndex(id), fileId: id}; + rm.completed = true; + rm.lastProgress = 0; + fm.uploadedSize += rm.file.size; + if (hasThumb) { + $thumb.removeClass('file-uploading'); + } + if (status === 'success') { + if (self.showPreview) { + self._setProgress(101, $prog); + self._setThumbStatus($thumb, 'Success'); + self._initUploadSuccess(rm.processed[id].data, $thumb); + } + self.fileManager.removeFile(id); + delete rm.processed[id]; + self._raise('fileuploaded', [params.id, params.index, params.fileId]); + if (fm.isProcessed()) { + self._setProgress(101); + } + } else { + if (self.showPreview) { + self._setThumbStatus($thumb, 'Error'); + self._setPreviewError($thumb, true); + self._setProgress(101, $prog, self.msgProgressError); + self._setProgress(101, self.$progress, self.msgProgressError); + self.cancelling = true; + } + if (!self.$errorContainer.find('li[data-file-id="' + params.fileId + '"]').length) { + msg = self.msgResumableUploadRetriesExceeded.setTokens({ + file: rm.fileName, + max: self.resumableUploadOptions.maxRetries, + error: rm.error + }); + self._showFileError(msg, params); + } + } + if (fm.isProcessed()) { + rm.reset(); + } + }, + check: function () { + var rm = self.resumableManager, status = true; + $.each(rm.logs, function (index, value) { + if (!value) { + status = false; + return false; + } + }); + if (status) { + clearInterval(rm.chunkIntervalId); + rm.setProcessed('success'); + } + }, + processedResumables: function () { + var logs = self.resumableManager.logs, i, count = 0; + if (!logs || !logs.length) { + return 0; + } + for (i = 0; i < logs.length; i++) { + if (logs[i] === true) { + count++; + } + } + return count; + }, + getUploadedSize: function () { + var rm = self.resumableManager, size = rm.processedResumables() * rm.chunkSize; + return size > rm.file.size ? rm.file.size : size; + }, + getTotalChunks: function () { + var rm = self.resumableManager, chunkSize = parseFloat(rm.chunkSize); + if (!isNaN(chunkSize) && chunkSize > 0) { + return Math.ceil(rm.file.size / chunkSize); + } + return 0; + }, + getProgress: function () { + var rm = self.resumableManager, processed = rm.processedResumables(), total = rm.chunkCount; + if (total === 0) { + return 0; + } + return Math.ceil(processed / total * 100); + }, + checkAborted: function (intervalId) { + if (self.paused || self.cancelling) { + clearInterval(intervalId); + self.unlock(); + } + }, + upload: function () { + var rm = self.resumableManager, fm = self.fileManager, ids = fm.getIdList(), flag = 'new', + intervalId; + intervalId = setInterval(function () { + var id; + rm.checkAborted(intervalId); + if (flag === 'new') { + self.lock(); + flag = 'processing'; + id = ids.shift(); + fm.initStats(id); + if (fm.stack[id]) { + rm.init(id, fm.stack[id], fm.getIndex(id)); + rm.testUpload(); + rm.uploadResumable(); + } + } + if (!fm.isPending(id) && rm.completed) { + flag = 'new'; + } + if (fm.isProcessed()) { + var $initThumbs = self.$preview.find('.file-preview-initial'); + if ($initThumbs.length) { + $h.addCss($initThumbs, $h.SORT_CSS); + self._initSortable(); + } + clearInterval(intervalId); + self._clearFileInput(); + self.unlock(); + setTimeout(function () { + var data = self.previewCache.data; + if (data) { + self.initialPreview = data.content; + self.initialPreviewConfig = data.config; + self.initialPreviewThumbTags = data.tags; + } + self._raise('filebatchuploadcomplete', [ + self.initialPreview, + self.initialPreviewConfig, + self.initialPreviewThumbTags, + self._getExtraData() + ]); + }, self.processDelay); + } + }, self.processDelay); + }, + uploadResumable: function () { + var i, rm = self.resumableManager, total = rm.chunkCount; + for (i = 0; i < total; i++) { + rm.logs[i] = !!(rm.processed[rm.id] && rm.processed[rm.id][i]); + } + for (i = 0; i < total; i++) { + rm.pushAjax(i, 0); + } + rm.chunkIntervalId = setInterval(rm.loopAjax, self.queueDelay); + }, + testUpload: function () { + var rm = self.resumableManager, opts = self.resumableUploadOptions, fd, f, + fm = self.fileManager, id = rm.id, fnBefore, fnSuccess, fnError, fnComplete, outData; + if (!opts.testUrl) { + rm.testing = false; + return; + } + rm.testing = true; + fd = new FormData(); + f = fm.stack[id]; + self._setUploadData(fd, { + fileId: id, + fileName: f.fileName, + fileSize: f.size, + fileRelativePath: f.relativePath, + chunkSize: rm.chunkSize, + chunkCount: rm.chunkCount + }); + fnBefore = function (jqXHR) { + outData = self._getOutData(fd, jqXHR); + self._raise('filetestbeforesend', [id, fm, rm, outData]); + }; + fnSuccess = function (data, textStatus, jqXHR) { + outData = self._getOutData(fd, jqXHR, data); + var pNames = self.uploadParamNames, chunksUploaded = pNames.chunksUploaded || 'chunksUploaded', + params = [id, fm, rm, outData]; + if (!data[chunksUploaded] || !$h.isArray(data[chunksUploaded])) { + self._raise('filetesterror', params); + } else { + if (!rm.processed[id]) { + rm.processed[id] = {}; + } + $.each(data[chunksUploaded], function (key, index) { + rm.logs[index] = true; + rm.processed[id][index] = true; + }); + rm.processed[id].data = data; + self._raise('filetestsuccess', params); + } + rm.testing = false; + }; + fnError = function (jqXHR, textStatus, errorThrown) { + outData = self._getOutData(fd, jqXHR); + self._raise('filetestajaxerror', [id, fm, rm, outData]); + rm.logAjaxError(jqXHR, textStatus, errorThrown); + rm.testing = false; + }; + fnComplete = function () { + self._raise('filetestcomplete', [id, fm, rm, self._getOutData(fd)]); + rm.testing = false; + }; + self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, fd, id, rm.fileIndex, opts.testUrl); + }, + pushAjax: function (index, retry) { + self.resumableManager.stack.push([index, retry]); + }, + sendAjax: function (index, retry) { + var fm = self.fileManager, rm = self.resumableManager, opts = self.resumableUploadOptions, f, + chunkSize = rm.chunkSize, id = rm.id, file = rm.file, $thumb = rm.$thumb, + $btnDelete = rm.$btnDelete; + if (rm.processed[id] && rm.processed[id][index]) { + return; + } + rm.currThreads++; + if (retry > opts.maxRetries) { + rm.setProcessed('error'); + return; + } + var fd, outData, fnBefore, fnSuccess, fnError, fnComplete, slice = file.slice ? 'slice' : + (file.mozSlice ? 'mozSlice' : (file.webkitSlice ? 'webkitSlice' : 'slice')), + blob = file[slice](chunkSize * index, chunkSize * (index + 1)); + fd = new FormData(); + f = fm.stack[id]; + self._setUploadData(fd, { + chunkCount: rm.chunkCount, + chunkIndex: index, + chunkSize: chunkSize, + chunkSizeStart: chunkSize * index, + fileBlob: [blob, rm.fileName], + fileId: id, + fileName: rm.fileName, + fileRelativePath: f.relativePath, + fileSize: file.size, + retryCount: retry + }); + if (rm.$progress && rm.$progress.length) { + rm.$progress.show(); + } + fnBefore = function (jqXHR) { + outData = self._getOutData(fd, jqXHR); + if (self.showPreview) { + if (!$thumb.hasClass('file-preview-success')) { + self._setThumbStatus($thumb, 'Loading'); + $h.addCss($thumb, 'file-uploading'); + } + $btnDelete.attr('disabled', true); + } + self._raise('filechunkbeforesend', [id, index, retry, fm, rm, outData]); + }; + fnSuccess = function (data, textStatus, jqXHR) { + outData = self._getOutData(fd, jqXHR, data); + var paramNames = self.uploadParamNames, chunkIndex = paramNames.chunkIndex || 'chunkIndex', + opts = self.resumableUploadOptions, params = [id, index, retry, fm, rm, outData]; + rm.currThreads--; + if (data.error) { + if (opts.showErrorLog) { + self._log(logs.retryStatus, { + retry: retry + 1, + filename: rm.fileName, + chunk: index + }); + } + rm.pushAjax(index, retry + 1); + rm.error = data.error; + self._raise('filechunkerror', params); + } else { + rm.logs[data[chunkIndex]] = true; + if (!rm.processed[id]) { + rm.processed[id] = {}; + } + rm.processed[id][data[chunkIndex]] = true; + rm.processed[id].data = data; + self._raise('filechunksuccess', params); + rm.check(); + } + }; + fnError = function (jqXHR, textStatus, errorThrown) { + outData = self._getOutData(fd, jqXHR); + rm.currThreads--; + rm.error = errorThrown; + rm.logAjaxError(jqXHR, textStatus, errorThrown); + self._raise('filechunkajaxerror', [id, index, retry, fm, rm, outData]); + rm.pushAjax(index, retry + 1); + }; + fnComplete = function () { + self._raise('filechunkcomplete', [id, index, retry, fm, rm, self._getOutData(fd)]); + }; + self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, fd, id, rm.fileIndex); + }, + loopAjax: function () { + var rm = self.resumableManager; + if (rm.currThreads < self.resumableUploadOptions.maxThreads && !rm.testing) { + var arr = rm.stack.shift(), index; + if (typeof arr !== 'undefined') { + index = arr[0]; + if (!rm.processed[rm.id] || !rm.processed[rm.id][index]) { + rm.sendAjax(index, arr[1]); + } else { + if (rm.processedResumables() >= rm.getTotalChunks()) { + rm.setProcessed('success'); + clearInterval(rm.chunkIntervalId); + } + } + } + } + } + }; + self.resumableManager.reset(); + }, + _initTemplateDefaults: function () { + var self = this, tMain1, tMain2, tPreview, tFileIcon, tClose, tCaption, tBtnDefault, tBtnLink, tBtnBrowse, + tModalMain, tModal, tProgress, tSize, tFooter, tActions, tActionDelete, tActionUpload, tActionDownload, + tActionZoom, tActionDrag, tIndicator, tTagBef, tTagBef1, tTagBef2, tTagAft, tGeneric, tHtml, tImage, + tText, tOffice, tGdocs, tVideo, tAudio, tFlash, tObject, tPdf, tOther, tStyle, tZoomCache, vDefaultDim, + tStats; + tMain1 = '{preview}\n' + + '
\n' + + '
\n' + + ' {caption}\n' + + '
\n' + + ' {remove}\n' + + ' {cancel}\n' + + ' {pause}\n' + + ' {upload}\n' + + ' {browse}\n' + + '
\n' + + '
'; + tMain2 = '{preview}\n
\n
\n' + + '{remove}\n{cancel}\n{upload}\n{browse}\n'; + tPreview = '
\n' + + ' {close}' + + '
\n' + + '
\n' + + '
\n' + + '
' + + '
\n' + + '
\n' + + '
\n' + + '
'; + tClose = $h.closeButton('fileinput-remove'); + tFileIcon = ''; + // noinspection HtmlUnknownAttribute + tCaption = '
\n' + + ' \n' + + ' \n' + + '
'; + //noinspection HtmlUnknownAttribute + tBtnDefault = ''; + //noinspection HtmlUnknownAttribute + tBtnLink = '
{icon} {label}'; + //noinspection HtmlUnknownAttribute + tBtnBrowse = '
{icon} {label}
'; + tModalMain = ''; + tModal = '\n'; + tProgress = '
\n' + + '
\n' + + ' {status}\n' + + '
\n' + + '
{stats}'; + tStats = '
' + + '{pendingTime} ' + + '{uploadSpeed}' + + '
'; + tSize = ' ({sizeText})'; + tFooter = ''; + tActions = '
\n' + + ' \n' + + '
\n' + + '{drag}\n' + + '
'; + //noinspection HtmlUnknownAttribute + tActionDelete = '\n'; + tActionUpload = ''; + tActionDownload = '{downloadIcon}'; + tActionZoom = ''; + tActionDrag = '{dragIcon}'; + tIndicator = '
{indicator}
'; + tTagBef = '
\n'; + tTagBef2 = tTagBef + ' title="{caption}">
\n'; + tTagAft = '
{footer}\n
\n'; + tGeneric = '{content}\n'; + tStyle = ' {style}'; + tHtml = '
{data}
\n'; + tImage = '\n'; + tText = '\n'; + tOffice = ''; + tGdocs = ''; + tVideo = '\n'; + tAudio = '\n'; + tFlash = '\n'; + tPdf = '\n'; + tObject = '\n' + '\n' + + $h.OBJECT_PARAMS + ' ' + $h.DEFAULT_PREVIEW + '\n\n'; + tOther = '
\n' + $h.DEFAULT_PREVIEW + '\n
\n'; + tZoomCache = ''; + vDefaultDim = {width: '100%', height: '100%', 'min-height': '480px'}; + if (self._isPdfRendered()) { + tPdf = self.pdfRendererTemplate.replace('{renderer}', self._encodeURI(self.pdfRendererUrl)); + } + self.defaults = { + layoutTemplates: { + main1: tMain1, + main2: tMain2, + preview: tPreview, + close: tClose, + fileIcon: tFileIcon, + caption: tCaption, + modalMain: tModalMain, + modal: tModal, + progress: tProgress, + stats: tStats, + size: tSize, + footer: tFooter, + indicator: tIndicator, + actions: tActions, + actionDelete: tActionDelete, + actionUpload: tActionUpload, + actionDownload: tActionDownload, + actionZoom: tActionZoom, + actionDrag: tActionDrag, + btnDefault: tBtnDefault, + btnLink: tBtnLink, + btnBrowse: tBtnBrowse, + zoomCache: tZoomCache + }, + previewMarkupTags: { + tagBefore1: tTagBef1, + tagBefore2: tTagBef2, + tagAfter: tTagAft + }, + previewContentTemplates: { + generic: tGeneric, + html: tHtml, + image: tImage, + text: tText, + office: tOffice, + gdocs: tGdocs, + video: tVideo, + audio: tAudio, + flash: tFlash, + object: tObject, + pdf: tPdf, + other: tOther + }, + allowedPreviewTypes: ['image', 'html', 'text', 'video', 'audio', 'flash', 'pdf', 'object'], + previewTemplates: {}, + previewSettings: { + image: {width: 'auto', height: 'auto', 'max-width': '100%', 'max-height': '100%'}, + html: {width: '213px', height: '160px'}, + text: {width: '213px', height: '160px'}, + office: {width: '213px', height: '160px'}, + gdocs: {width: '213px', height: '160px'}, + video: {width: '213px', height: '160px'}, + audio: {width: '100%', height: '30px'}, + flash: {width: '213px', height: '160px'}, + object: {width: '213px', height: '160px'}, + pdf: {width: '100%', height: '160px'}, + other: {width: '213px', height: '160px'} + }, + previewSettingsSmall: { + image: {width: 'auto', height: 'auto', 'max-width': '100%', 'max-height': '100%'}, + html: {width: '100%', height: '160px'}, + text: {width: '100%', height: '160px'}, + office: {width: '100%', height: '160px'}, + gdocs: {width: '100%', height: '160px'}, + video: {width: '100%', height: 'auto'}, + audio: {width: '100%', height: '30px'}, + flash: {width: '100%', height: 'auto'}, + object: {width: '100%', height: 'auto'}, + pdf: {width: '100%', height: '160px'}, + other: {width: '100%', height: '160px'} + }, + previewZoomSettings: { + image: {width: 'auto', height: 'auto', 'max-width': '100%', 'max-height': '100%'}, + html: vDefaultDim, + text: vDefaultDim, + office: {width: '100%', height: '100%', 'max-width': '100%', 'min-height': '480px'}, + gdocs: {width: '100%', height: '100%', 'max-width': '100%', 'min-height': '480px'}, + video: {width: 'auto', height: '100%', 'max-width': '100%'}, + audio: {width: '100%', height: '30px'}, + flash: {width: 'auto', height: '480px'}, + object: {width: 'auto', height: '100%', 'max-width': '100%', 'min-height': '480px'}, + pdf: vDefaultDim, + other: {width: 'auto', height: '100%', 'min-height': '480px'} + }, + mimeTypeAliases: { + 'video/quicktime': 'video/mp4' + }, + fileTypeSettings: { + image: function (vType, vName) { + return ($h.compare(vType, 'image.*') && !$h.compare(vType, /(tiff?|wmf)$/i) || + $h.compare(vName, /\.(gif|png|jpe?g)$/i)); + }, + html: function (vType, vName) { + return $h.compare(vType, 'text/html') || $h.compare(vName, /\.(htm|html)$/i); + }, + office: function (vType, vName) { + return $h.compare(vType, /(word|excel|powerpoint|office)$/i) || + $h.compare(vName, /\.(docx?|xlsx?|pptx?|pps|potx?)$/i); + }, + gdocs: function (vType, vName) { + return $h.compare(vType, /(word|excel|powerpoint|office|iwork-pages|tiff?)$/i) || + $h.compare(vName, + /\.(docx?|xlsx?|pptx?|pps|potx?|rtf|ods|odt|pages|ai|dxf|ttf|tiff?|wmf|e?ps)$/i); + }, + text: function (vType, vName) { + return $h.compare(vType, 'text.*') || $h.compare(vName, /\.(xml|javascript)$/i) || + $h.compare(vName, /\.(txt|md|csv|nfo|ini|json|php|js|css)$/i); + }, + video: function (vType, vName) { + return $h.compare(vType, 'video.*') && ($h.compare(vType, /(ogg|mp4|mp?g|mov|webm|3gp)$/i) || + $h.compare(vName, /\.(og?|mp4|webm|mp?g|mov|3gp)$/i)); + }, + audio: function (vType, vName) { + return $h.compare(vType, 'audio.*') && ($h.compare(vName, /(ogg|mp3|mp?g|wav)$/i) || + $h.compare(vName, /\.(og?|mp3|mp?g|wav)$/i)); + }, + flash: function (vType, vName) { + return $h.compare(vType, 'application/x-shockwave-flash', true) || $h.compare(vName, + /\.(swf)$/i); + }, + pdf: function (vType, vName) { + return $h.compare(vType, 'application/pdf', true) || $h.compare(vName, /\.(pdf)$/i); + }, + object: function () { + return true; + }, + other: function () { + return true; + } + }, + fileActionSettings: { + showRemove: true, + showUpload: true, + showDownload: true, + showZoom: true, + showDrag: true, + removeIcon: '', + removeClass: 'btn btn-sm btn-kv btn-default btn-outline-secondary', + removeErrorClass: 'btn btn-sm btn-kv btn-danger', + removeTitle: 'Remove file', + uploadIcon: '', + uploadClass: 'btn btn-sm btn-kv btn-default btn-outline-secondary', + uploadTitle: 'Upload file', + uploadRetryIcon: '', + uploadRetryTitle: 'Retry upload', + downloadIcon: '', + downloadClass: 'btn btn-sm btn-kv btn-default btn-outline-secondary', + downloadTitle: 'Download file', + zoomIcon: '', + zoomClass: 'btn btn-sm btn-kv btn-default btn-outline-secondary', + zoomTitle: 'View Details', + dragIcon: '', + dragClass: 'text-info', + dragTitle: 'Move / Rearrange', + dragSettings: {}, + indicatorNew: '', + indicatorSuccess: '', + indicatorError: '', + indicatorLoading: '', + indicatorPaused: '', + indicatorNewTitle: 'Not uploaded yet', + indicatorSuccessTitle: 'Uploaded', + indicatorErrorTitle: 'Upload Error', + indicatorLoadingTitle: 'Uploading ...', + indicatorPausedTitle: 'Upload Paused' + } + }; + $.each(self.defaults, function (key, setting) { + if (key === 'allowedPreviewTypes') { + if (self.allowedPreviewTypes === undefined) { + self.allowedPreviewTypes = setting; + } + return; + } + self[key] = $.extend(true, {}, setting, self[key]); + }); + self._initPreviewTemplates(); + }, + _initPreviewTemplates: function () { + var self = this, tags = self.previewMarkupTags, tagBef, tagAft = tags.tagAfter; + $.each(self.previewContentTemplates, function (key, value) { + if ($h.isEmpty(self.previewTemplates[key])) { + tagBef = tags.tagBefore2; + if (key === 'generic' || key === 'image' || key === 'html' || key === 'text') { + tagBef = tags.tagBefore1; + } + if (self._isPdfRendered() && key === 'pdf') { + tagBef = tagBef.replace('kv-file-content', 'kv-file-content kv-pdf-rendered'); + } + self.previewTemplates[key] = tagBef + value + tagAft; + } + }); + }, + _initPreviewCache: function () { + var self = this; + self.previewCache = { + data: {}, + init: function () { + var content = self.initialPreview; + if (content.length > 0 && !$h.isArray(content)) { + content = content.split(self.initialPreviewDelimiter); + } + self.previewCache.data = { + content: content, + config: self.initialPreviewConfig, + tags: self.initialPreviewThumbTags + }; + }, + count: function (skipNull) { + if (!self.previewCache.data || !self.previewCache.data.content) { + return 0; + } + if (skipNull) { + var chk = self.previewCache.data.content.filter(function (n) { + return n !== null; + }); + return chk.length; + } + return self.previewCache.data.content.length; + }, + get: function (i, isDisabled) { + var ind = 'init_' + i, data = self.previewCache.data, config = data.config[i], fileId, + content = data.content[i], previewId = self.previewInitId + '-' + ind, out, $tmp, cat, ftr, + fname, ftype, frameClass, asData = $h.ifSet('previewAsData', config, self.initialPreviewAsData), + a = config ? {title: config.title || null, alt: config.alt || null} : {title: null, alt: null}, + parseTemplate = function (cat, dat, fn, ft, id, ftr, ind, fc, t) { + fc = ' file-preview-initial ' + $h.SORT_CSS + (fc ? ' ' + fc : ''); + /** @namespace config.zoomData */ + fileId = config && config.fileId || 'file_' + id; + return self._generatePreviewTemplate(cat, dat, fn, ft, id, fileId, false, null, fc, + ftr, ind, t, a, config && config.zoomData || dat); + }; + if (!content || !content.length) { + return ''; + } + isDisabled = isDisabled === undefined ? true : isDisabled; + cat = $h.ifSet('type', config, self.initialPreviewFileType || 'generic'); + fname = $h.ifSet('filename', config, $h.ifSet('caption', config)); + ftype = $h.ifSet('filetype', config, cat); + ftr = self.previewCache.footer(i, isDisabled, (config && config.size || null)); + frameClass = $h.ifSet('frameClass', config); + if (asData) { + out = parseTemplate(cat, content, fname, ftype, previewId, ftr, ind, frameClass); + } else { + out = parseTemplate('generic', content, fname, ftype, previewId, ftr, ind, frameClass, cat) + .setTokens({'content': data.content[i]}); + } + if (data.tags.length && data.tags[i]) { + out = $h.replaceTags(out, data.tags[i]); + } + /** @namespace config.frameAttr */ + if (!$h.isEmpty(config) && !$h.isEmpty(config.frameAttr)) { + $tmp = $(document.createElement('div')).html(out); + $tmp.find('.file-preview-initial').attr(config.frameAttr); + out = $tmp.html(); + $tmp.remove(); + } + return out; + }, + clean: function (data) { + data.content = $h.cleanArray(data.content); + data.config = $h.cleanArray(data.config); + data.tags = $h.cleanArray(data.tags); + self.previewCache.data = data; + }, + add: function (content, config, tags, append) { + var data = self.previewCache.data, index = content.length - 1; + if (!content || !content.length) { + return index; + } + if (!$h.isArray(content)) { + content = content.split(self.initialPreviewDelimiter); + } + if (append) { + index = data.content.push(content[0]) - 1; + data.config[index] = config; + data.tags[index] = tags; + } else { + data.content = content; + data.config = config; + data.tags = tags; + } + self.previewCache.clean(data); + return index; + }, + set: function (content, config, tags, append) { + var data = self.previewCache.data, i, chk; + if (!content || !content.length) { + return; + } + if (!$h.isArray(content)) { + content = content.split(self.initialPreviewDelimiter); + } + chk = content.filter(function (n) { + return n !== null; + }); + if (!chk.length) { + return; + } + if (data.content === undefined) { + data.content = []; + } + if (data.config === undefined) { + data.config = []; + } + if (data.tags === undefined) { + data.tags = []; + } + if (append) { + for (i = 0; i < content.length; i++) { + if (content[i]) { + data.content.push(content[i]); + } + } + for (i = 0; i < config.length; i++) { + if (config[i]) { + data.config.push(config[i]); + } + } + for (i = 0; i < tags.length; i++) { + if (tags[i]) { + data.tags.push(tags[i]); + } + } + } else { + data.content = content; + data.config = config; + data.tags = tags; + } + self.previewCache.clean(data); + }, + unset: function (index) { + var chk = self.previewCache.count(), rev = self.reversePreviewOrder; + if (!chk) { + return; + } + if (chk === 1) { + self.previewCache.data.content = []; + self.previewCache.data.config = []; + self.previewCache.data.tags = []; + self.initialPreview = []; + self.initialPreviewConfig = []; + self.initialPreviewThumbTags = []; + return; + } + self.previewCache.data.content = $h.spliceArray(self.previewCache.data.content, index, rev); + self.previewCache.data.config = $h.spliceArray(self.previewCache.data.config, index, rev); + self.previewCache.data.tags = $h.spliceArray(self.previewCache.data.tags, index, rev); + var data = $.extend(true, {}, self.previewCache.data); + self.previewCache.clean(data); + }, + out: function () { + var html = '', caption, len = self.previewCache.count(), i, content; + if (len === 0) { + return {content: '', caption: ''}; + } + for (i = 0; i < len; i++) { + content = self.previewCache.get(i); + html = self.reversePreviewOrder ? (content + html) : (html + content); + } + caption = self._getMsgSelected(len); + return {content: html, caption: caption}; + }, + footer: function (i, isDisabled, size) { + var data = self.previewCache.data || {}; + if ($h.isEmpty(data.content)) { + return ''; + } + if ($h.isEmpty(data.config) || $h.isEmpty(data.config[i])) { + data.config[i] = {}; + } + isDisabled = isDisabled === undefined ? true : isDisabled; + var config = data.config[i], caption = $h.ifSet('caption', config), a, + width = $h.ifSet('width', config, 'auto'), url = $h.ifSet('url', config, false), + key = $h.ifSet('key', config, null), fileId = $h.ifSet('fileId', config, null), + fs = self.fileActionSettings, initPreviewShowDel = self.initialPreviewShowDelete || false, + downloadInitialUrl = !self.initialPreviewDownloadUrl ? '' : + self.initialPreviewDownloadUrl + '?key=' + key + (fileId ? '&fileId=' + fileId : ''), + dUrl = config.downloadUrl || downloadInitialUrl, + dFil = config.filename || config.caption || '', + initPreviewShowDwl = !!(dUrl), + sDel = $h.ifSet('showRemove', config, $h.ifSet('showRemove', fs, initPreviewShowDel)), + sDwl = $h.ifSet('showDownload', config, $h.ifSet('showDownload', fs, initPreviewShowDwl)), + sZm = $h.ifSet('showZoom', config, $h.ifSet('showZoom', fs, true)), + sDrg = $h.ifSet('showDrag', config, $h.ifSet('showDrag', fs, true)), + dis = (url === false) && isDisabled; + sDwl = sDwl && config.downloadUrl !== false && !!dUrl; + a = self._renderFileActions(config, false, sDwl, sDel, sZm, sDrg, dis, url, key, true, dUrl, dFil); + return self._getLayoutTemplate('footer').setTokens({ + 'progress': self._renderThumbProgress(), + 'actions': a, + 'caption': caption, + 'size': self._getSize(size), + 'width': width, + 'indicator': '' + }); + } + }; + self.previewCache.init(); + }, + _isPdfRendered: function () { + var self = this, useLib = self.usePdfRenderer, + flag = typeof useLib === 'function' ? useLib() : !!useLib; + return flag && self.pdfRendererUrl; + }, + _handler: function ($el, event, callback) { + var self = this, ns = self.namespace, ev = event.split(' ').join(ns + ' ') + ns; + if (!$el || !$el.length) { + return; + } + $el.off(ev).on(ev, callback); + }, + _encodeURI: function (vUrl) { + var self = this; + return self.encodeUrl ? encodeURI(vUrl) : vUrl; + }, + _log: function (msg, tokens) { + var self = this, id = self.$element.attr('id'); + if (id) { + msg = '"' + id + '": ' + msg; + } + msg = 'bootstrap-fileinput: ' + msg; + if (typeof tokens === 'object') { + msg.setTokens(tokens); + } + if (typeof window.console.log !== 'undefined') { + window.console.log(msg); + } else { + window.alert(msg); + } + }, + _validate: function () { + var self = this, status = self.$element.attr('type') === 'file'; + if (!status) { + self._log($h.logMessages.badInputType); + } + return status; + }, + _errorsExist: function () { + var self = this, $err, $errList = self.$errorContainer.find('li'); + if ($errList.length) { + return true; + } + $err = $(document.createElement('div')).html(self.$errorContainer.html()); + $err.find('.kv-error-close').remove(); + $err.find('ul').remove(); + return !!$.trim($err.text()).length; + }, + _errorHandler: function (evt, caption) { + var self = this, err = evt.target.error, showError = function (msg) { + self._showError(msg.replace('{name}', caption)); + }; + /** @namespace err.NOT_FOUND_ERR */ + /** @namespace err.SECURITY_ERR */ + /** @namespace err.NOT_READABLE_ERR */ + if (err.code === err.NOT_FOUND_ERR) { + showError(self.msgFileNotFound); + } else { + if (err.code === err.SECURITY_ERR) { + showError(self.msgFileSecured); + } else { + if (err.code === err.NOT_READABLE_ERR) { + showError(self.msgFileNotReadable); + } else { + if (err.code === err.ABORT_ERR) { + showError(self.msgFilePreviewAborted); + } else { + showError(self.msgFilePreviewError); + } + } + } + } + }, + _addError: function (msg) { + var self = this, $error = self.$errorContainer; + if (msg && $error.length) { + $error.html(self.errorCloseButton + msg); + self._handler($error.find('.kv-error-close'), 'click', function () { + setTimeout(function () { + if (self.showPreview && !self.getFrames().length) { + self.clear(); + } + $error.fadeOut('slow'); + }, self.processDelay); + }); + } + }, + _setValidationError: function (css) { + var self = this; + css = (css ? css + ' ' : '') + 'has-error'; + self.$container.removeClass(css).addClass('has-error'); + $h.addCss(self.$captionContainer, 'is-invalid'); + }, + _resetErrors: function (fade) { + var self = this, $error = self.$errorContainer; + self.isError = false; + self.$container.removeClass('has-error'); + self.$captionContainer.removeClass('is-invalid'); + $error.html(''); + if (fade) { + $error.fadeOut('slow'); + } else { + $error.hide(); + } + }, + _showFolderError: function (folders) { + var self = this, $error = self.$errorContainer, msg; + if (!folders) { + return; + } + if (!self.isAjaxUpload) { + self._clearFileInput(); + } + msg = self.msgFoldersNotAllowed.replace('{n}', folders); + self._addError(msg); + self._setValidationError(); + $error.fadeIn(800); + self._raise('filefoldererror', [folders, msg]); + }, + _showFileError: function (msg, params, event) { + var self = this, $error = self.$errorContainer, ev = event || 'fileuploaderror', + fId = params && params.fileId || '', e = params && params.id ? + '
  • ' + msg + '
  • ' : '
  • ' + msg + '
  • '; + if ($error.find('ul').length === 0) { + self._addError('
      ' + e + '
    '); + } else { + $error.find('ul').append(e); + } + $error.fadeIn(800); + self._raise(ev, [params, msg]); + self._setValidationError('file-input-new'); + return true; + }, + _showError: function (msg, params, event) { + var self = this, $error = self.$errorContainer, ev = event || 'fileerror'; + params = params || {}; + params.reader = self.reader; + self._addError(msg); + $error.fadeIn(800); + self._raise(ev, [params, msg]); + if (!self.isAjaxUpload) { + self._clearFileInput(); + } + self._setValidationError('file-input-new'); + self.$btnUpload.attr('disabled', true); + return true; + }, + _noFilesError: function (params) { + var self = this, label = self.minFileCount > 1 ? self.filePlural : self.fileSingle, + msg = self.msgFilesTooLess.replace('{n}', self.minFileCount).replace('{files}', label), + $error = self.$errorContainer; + self._addError(msg); + self.isError = true; + self._updateFileDetails(0); + $error.fadeIn(800); + self._raise('fileerror', [params, msg]); + self._clearFileInput(); + self._setValidationError(); + }, + _parseError: function (operation, jqXHR, errorThrown, fileName) { + /** @namespace jqXHR.responseJSON */ + var self = this, errMsg = $.trim(errorThrown + ''), textPre, + text = jqXHR.responseJSON !== undefined && jqXHR.responseJSON.error !== undefined ? + jqXHR.responseJSON.error : jqXHR.responseText; + if (self.cancelling && self.msgUploadAborted) { + errMsg = self.msgUploadAborted; + } + if (self.showAjaxErrorDetails && text) { + text = $.trim(text.replace(/\n\s*\n/g, '\n')); + textPre = text.length ? '
    ' + text + '
    ' : ''; + errMsg += errMsg ? textPre : text; + } + if (!errMsg) { + errMsg = self.msgAjaxError.replace('{operation}', operation); + } + self.cancelling = false; + return fileName ? '' + fileName + ': ' + errMsg : errMsg; + }, + _parseFileType: function (type, name) { + var self = this, isValid, vType, cat, i, types = self.allowedPreviewTypes || []; + if (type === 'application/text-plain') { + return 'text'; + } + for (i = 0; i < types.length; i++) { + cat = types[i]; + isValid = self.fileTypeSettings[cat]; + vType = isValid(type, name) ? cat : ''; + if (!$h.isEmpty(vType)) { + return vType; + } + } + return 'other'; + }, + _getPreviewIcon: function (fname) { + var self = this, ext, out = null; + if (fname && fname.indexOf('.') > -1) { + ext = fname.split('.').pop(); + if (self.previewFileIconSettings) { + out = self.previewFileIconSettings[ext] || self.previewFileIconSettings[ext.toLowerCase()] || null; + } + if (self.previewFileExtSettings) { + $.each(self.previewFileExtSettings, function (key, func) { + if (self.previewFileIconSettings[key] && func(ext)) { + out = self.previewFileIconSettings[key]; + //noinspection UnnecessaryReturnStatementJS + return; + } + }); + } + } + return out; + }, + _parseFilePreviewIcon: function (content, fname) { + var self = this, icn = self._getPreviewIcon(fname) || self.previewFileIcon, out = content; + if (out.indexOf('{previewFileIcon}') > -1) { + out = out.setTokens({'previewFileIconClass': self.previewFileIconClass, 'previewFileIcon': icn}); + } + return out; + }, + _raise: function (event, params) { + var self = this, e = $.Event(event); + if (params !== undefined) { + self.$element.trigger(e, params); + } else { + self.$element.trigger(e); + } + if (e.isDefaultPrevented() || e.result === false) { + return false; + } + switch (event) { + // ignore these events + case 'filebatchuploadcomplete': + case 'filebatchuploadsuccess': + case 'fileuploaded': + case 'fileclear': + case 'filecleared': + case 'filereset': + case 'fileerror': + case 'filefoldererror': + case 'fileuploaderror': + case 'filebatchuploaderror': + case 'filedeleteerror': + case 'filecustomerror': + case 'filesuccessremove': + break; + // receive data response via `filecustomerror` event` + default: + if (!self.ajaxAborted) { + self.ajaxAborted = e.result; + } + break; + } + return true; + }, + _listenFullScreen: function (isFullScreen) { + var self = this, $modal = self.$modal, $btnFull, $btnBord; + if (!$modal || !$modal.length) { + return; + } + $btnFull = $modal && $modal.find('.btn-fullscreen'); + $btnBord = $modal && $modal.find('.btn-borderless'); + if (!$btnFull.length || !$btnBord.length) { + return; + } + $btnFull.removeClass('active').attr('aria-pressed', 'false'); + $btnBord.removeClass('active').attr('aria-pressed', 'false'); + if (isFullScreen) { + $btnFull.addClass('active').attr('aria-pressed', 'true'); + } else { + $btnBord.addClass('active').attr('aria-pressed', 'true'); + } + if ($modal.hasClass('file-zoom-fullscreen')) { + self._maximizeZoomDialog(); + } else { + if (isFullScreen) { + self._maximizeZoomDialog(); + } else { + $btnBord.removeClass('active').attr('aria-pressed', 'false'); + } + } + }, + _listen: function () { + var self = this, $el = self.$element, $form = self.$form, $cont = self.$container, fullScreenEvents; + self._handler($el, 'click', function (e) { + if ($el.hasClass('file-no-browse')) { + if ($el.data('zoneClicked')) { + $el.data('zoneClicked', false); + } else { + e.preventDefault(); + } + } + }); + self._handler($el, 'change', $.proxy(self._change, self)); + if (self.showBrowse) { + self._handler(self.$btnFile, 'click', $.proxy(self._browse, self)); + } + self._handler($cont.find('.fileinput-remove:not([disabled])'), 'click', $.proxy(self.clear, self)); + self._handler($cont.find('.fileinput-cancel'), 'click', $.proxy(self.cancel, self)); + self._handler($cont.find('.fileinput-pause'), 'click', $.proxy(self.pause, self)); + self._initDragDrop(); + self._handler($form, 'reset', $.proxy(self.clear, self)); + if (!self.isAjaxUpload) { + self._handler($form, 'submit', $.proxy(self._submitForm, self)); + } + self._handler(self.$container.find('.fileinput-upload'), 'click', $.proxy(self._uploadClick, self)); + self._handler($(window), 'resize', function () { + self._listenFullScreen(screen.width === window.innerWidth && screen.height === window.innerHeight); + }); + fullScreenEvents = 'webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange'; + self._handler($(document), fullScreenEvents, function () { + self._listenFullScreen($h.checkFullScreen()); + }); + self._autoFitContent(); + self._initClickable(); + self._refreshPreview(); + }, + _autoFitContent: function () { + var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, + self = this, config = width < 400 ? (self.previewSettingsSmall || self.defaults.previewSettingsSmall) : + (self.previewSettings || self.defaults.previewSettings), sel; + $.each(config, function (cat, settings) { + sel = '.file-preview-frame .file-preview-' + cat; + self.$preview.find(sel + '.kv-preview-data,' + sel + ' .kv-preview-data').css(settings); + }); + }, + _scanDroppedItems: function (item, files, path) { + path = path || ''; + var self = this, i, dirReader, readDir, errorHandler = function (e) { + self._log($h.logMessages.badDroppedFiles); + self._log(e); + }; + if (item.isFile) { + item.file(function (file) { + files.push(file); + }, errorHandler); + } else { + if (item.isDirectory) { + dirReader = item.createReader(); + readDir = function () { + dirReader.readEntries(function (entries) { + if (entries && entries.length > 0) { + for (i = 0; i < entries.length; i++) { + self._scanDroppedItems(entries[i], files, path + item.name + '/'); + } + // recursively call readDir() again, since browser can only handle first 100 entries. + readDir(); + } + return null; + }, errorHandler); + }; + readDir(); + } + } + + }, + _initDragDrop: function () { + var self = this, $zone = self.$dropZone; + if (self.dropZoneEnabled && self.showPreview) { + self._handler($zone, 'dragenter dragover', $.proxy(self._zoneDragEnter, self)); + self._handler($zone, 'dragleave', $.proxy(self._zoneDragLeave, self)); + self._handler($zone, 'drop', $.proxy(self._zoneDrop, self)); + self._handler($(document), 'dragenter dragover drop', self._zoneDragDropInit); + } + }, + _zoneDragDropInit: function (e) { + e.stopPropagation(); + e.preventDefault(); + }, + _zoneDragEnter: function (e) { + var self = this, dataTransfer = e.originalEvent.dataTransfer, + hasFiles = $.inArray('Files', dataTransfer.types) > -1; + self._zoneDragDropInit(e); + if (self.isDisabled || !hasFiles) { + e.originalEvent.dataTransfer.effectAllowed = 'none'; + e.originalEvent.dataTransfer.dropEffect = 'none'; + return; + } + if (self._raise('fileDragEnter', {'sourceEvent': e, 'files': dataTransfer.types.Files})) { + $h.addCss(self.$dropZone, 'file-highlighted'); + } + }, + _zoneDragLeave: function (e) { + var self = this; + self._zoneDragDropInit(e); + if (self.isDisabled) { + return; + } + if (self._raise('fileDragLeave', {'sourceEvent': e})) { + self.$dropZone.removeClass('file-highlighted'); + } + + }, + _zoneDrop: function (e) { + /** @namespace e.originalEvent.dataTransfer */ + var self = this, i, $el = self.$element, dataTransfer = e.originalEvent.dataTransfer, + files = dataTransfer.files, items = dataTransfer.items, folders = $h.getDragDropFolders(items), + processFiles = function () { + if (!self.isAjaxUpload) { + self.changeTriggered = true; + $el.get(0).files = files; + setTimeout(function () { + self.changeTriggered = false; + $el.trigger('change' + self.namespace); + }, self.processDelay); + } else { + self._change(e, files); + } + self.$dropZone.removeClass('file-highlighted'); + }; + e.preventDefault(); + if (self.isDisabled || $h.isEmpty(files)) { + return; + } + if (!self._raise('fileDragDrop', {'sourceEvent': e, 'files': files})) { + return; + } + if (folders > 0) { + if (!self.isAjaxUpload) { + self._showFolderError(folders); + return; + } + files = []; + for (i = 0; i < items.length; i++) { + var item = items[i].webkitGetAsEntry(); + if (item) { + self._scanDroppedItems(item, files); + } + } + setTimeout(function () { + processFiles(); + }, 500); + } else { + processFiles(); + } + }, + _uploadClick: function (e) { + var self = this, $btn = self.$container.find('.fileinput-upload'), $form, + isEnabled = !$btn.hasClass('disabled') && $h.isEmpty($btn.attr('disabled')); + if (e && e.isDefaultPrevented()) { + return; + } + if (!self.isAjaxUpload) { + if (isEnabled && $btn.attr('type') !== 'submit') { + $form = $btn.closest('form'); + // downgrade to normal form submit if possible + if ($form.length) { + $form.trigger('submit'); + } + e.preventDefault(); + } + return; + } + e.preventDefault(); + if (isEnabled) { + self.upload(); + } + }, + _submitForm: function () { + var self = this; + return self._isFileSelectionValid() && !self._abort({}); + }, + _clearPreview: function () { + var self = this, $p = self.$preview, + $thumbs = self.showUploadedThumbs ? self.getFrames(':not(.file-preview-success)') : self.getFrames(); + $thumbs.each(function () { + var $thumb = $(this); + $thumb.remove(); + $h.cleanZoomCache($p.find('#zoom-' + $thumb.attr('id'))); + }); + if (!self.getFrames().length || !self.showPreview) { + self._resetUpload(); + } + self._validateDefaultPreview(); + }, + _initSortable: function () { + var self = this, $el = self.$preview, settings, selector = '.' + $h.SORT_CSS, + rev = self.reversePreviewOrder; + if (!window.KvSortable || $el.find(selector).length === 0) { + return; + } + //noinspection JSUnusedGlobalSymbols + settings = { + handle: '.drag-handle-init', + dataIdAttr: 'data-preview-id', + scroll: false, + draggable: selector, + onSort: function (e) { + var oldIndex = e.oldIndex, newIndex = e.newIndex, i = 0; + self.initialPreview = $h.moveArray(self.initialPreview, oldIndex, newIndex, rev); + self.initialPreviewConfig = $h.moveArray(self.initialPreviewConfig, oldIndex, newIndex, rev); + self.previewCache.init(); + self.getFrames('.file-preview-initial').each(function () { + $(this).attr('data-fileindex', 'init_' + i); + i++; + }); + self._raise('filesorted', { + previewId: $(e.item).attr('id'), + 'oldIndex': oldIndex, + 'newIndex': newIndex, + stack: self.initialPreviewConfig + }); + } + }; + if ($el.data('kvsortable')) { + $el.kvsortable('destroy'); + } + $.extend(true, settings, self.fileActionSettings.dragSettings); + $el.kvsortable(settings); + }, + _setPreviewContent: function (content) { + var self = this; + self.$preview.html(content); + self._autoFitContent(); + }, + _initPreviewImageOrientations: function () { + var self = this, i = 0; + if (!self.autoOrientImageInitial) { + return; + } + self.getFrames('.file-preview-initial').each(function () { + var $thumb = $(this), $img, $zoomImg, id, config = self.initialPreviewConfig[i]; + /** @namespace config.exif */ + if (config && config.exif && config.exif.Orientation) { + id = $thumb.attr('id'); + $img = $thumb.find('>.kv-file-content img'); + $zoomImg = self.$preview.find('#zoom-' + id + ' >.kv-file-content img'); + self.setImageOrientation($img, $zoomImg, config.exif.Orientation, $thumb); + } + i++; + }); + }, + _initPreview: function (isInit) { + var self = this, cap = self.initialCaption || '', out; + if (!self.previewCache.count(true)) { + self._clearPreview(); + if (isInit) { + self._setCaption(cap); + } else { + self._initCaption(); + } + return; + } + out = self.previewCache.out(); + cap = isInit && self.initialCaption ? self.initialCaption : out.caption; + self._setPreviewContent(out.content); + self._setInitThumbAttr(); + self._setCaption(cap); + self._initSortable(); + if (!$h.isEmpty(out.content)) { + self.$container.removeClass('file-input-new'); + } + self._initPreviewImageOrientations(); + }, + _getZoomButton: function (type) { + var self = this, label = self.previewZoomButtonIcons[type], css = self.previewZoomButtonClasses[type], + title = ' title="' + (self.previewZoomButtonTitles[type] || '') + '" ', + params = title + (type === 'close' ? ' data-dismiss="modal" aria-hidden="true"' : ''); + if (type === 'fullscreen' || type === 'borderless' || type === 'toggleheader') { + params += ' data-toggle="button" aria-pressed="false" autocomplete="off"'; + } + return ''; + }, + _getModalContent: function () { + var self = this; + return self._getLayoutTemplate('modal').setTokens({ + 'rtl': self.rtl ? ' kv-rtl' : '', + 'zoomFrameClass': self.frameClass, + 'heading': self.msgZoomModalHeading, + 'prev': self._getZoomButton('prev'), + 'next': self._getZoomButton('next'), + 'toggleheader': self._getZoomButton('toggleheader'), + 'fullscreen': self._getZoomButton('fullscreen'), + 'borderless': self._getZoomButton('borderless'), + 'close': self._getZoomButton('close') + }); + }, + _listenModalEvent: function (event) { + var self = this, $modal = self.$modal, getParams = function (e) { + return { + sourceEvent: e, + previewId: $modal.data('previewId'), + modal: $modal + }; + }; + $modal.on(event + '.bs.modal', function (e) { + var $btnFull = $modal.find('.btn-fullscreen'), $btnBord = $modal.find('.btn-borderless'); + self._raise('filezoom' + event, getParams(e)); + if (event === 'shown') { + $btnBord.removeClass('active').attr('aria-pressed', 'false'); + $btnFull.removeClass('active').attr('aria-pressed', 'false'); + if ($modal.hasClass('file-zoom-fullscreen')) { + self._maximizeZoomDialog(); + if ($h.checkFullScreen()) { + $btnFull.addClass('active').attr('aria-pressed', 'true'); + } else { + $btnBord.addClass('active').attr('aria-pressed', 'true'); + } + } + } + }); + }, + _initZoom: function () { + var self = this, $dialog, modalMain = self._getLayoutTemplate('modalMain'), modalId = '#' + $h.MODAL_ID; + if (!self.showPreview) { + return; + } + self.$modal = $(modalId); + if (!self.$modal || !self.$modal.length) { + $dialog = $(document.createElement('div')).html(modalMain).insertAfter(self.$container); + self.$modal = $(modalId).insertBefore($dialog); + $dialog.remove(); + } + $h.initModal(self.$modal); + self.$modal.html(self._getModalContent()); + $.each($h.MODAL_EVENTS, function (key, event) { + self._listenModalEvent(event); + }); + }, + _initZoomButtons: function () { + var self = this, previewId = self.$modal.data('previewId') || '', $first, $last, + thumbs = self.getFrames().toArray(), len = thumbs.length, $prev = self.$modal.find('.btn-prev'), + $next = self.$modal.find('.btn-next'); + if (thumbs.length < 2) { + $prev.hide(); + $next.hide(); + return; + } else { + $prev.show(); + $next.show(); + } + if (!len) { + return; + } + $first = $(thumbs[0]); + $last = $(thumbs[len - 1]); + $prev.removeAttr('disabled'); + $next.removeAttr('disabled'); + if ($first.length && $first.attr('id') === previewId) { + $prev.attr('disabled', true); + } + if ($last.length && $last.attr('id') === previewId) { + $next.attr('disabled', true); + } + }, + _maximizeZoomDialog: function () { + var self = this, $modal = self.$modal, $head = $modal.find('.modal-header:visible'), + $foot = $modal.find('.modal-footer:visible'), $body = $modal.find('.modal-body'), + h = $(window).height(), diff = 0; + $modal.addClass('file-zoom-fullscreen'); + if ($head && $head.length) { + h -= $head.outerHeight(true); + } + if ($foot && $foot.length) { + h -= $foot.outerHeight(true); + } + if ($body && $body.length) { + diff = $body.outerHeight(true) - $body.height(); + h -= diff; + } + $modal.find('.kv-zoom-body').height(h); + }, + _resizeZoomDialog: function (fullScreen) { + var self = this, $modal = self.$modal, $btnFull = $modal.find('.btn-fullscreen'), + $btnBord = $modal.find('.btn-borderless'); + if ($modal.hasClass('file-zoom-fullscreen')) { + $h.toggleFullScreen(false); + if (!fullScreen) { + if (!$btnFull.hasClass('active')) { + $modal.removeClass('file-zoom-fullscreen'); + self.$modal.find('.kv-zoom-body').css('height', self.zoomModalHeight); + } else { + $btnFull.removeClass('active').attr('aria-pressed', 'false'); + } + } else { + if (!$btnFull.hasClass('active')) { + $modal.removeClass('file-zoom-fullscreen'); + self._resizeZoomDialog(true); + if ($btnBord.hasClass('active')) { + $btnBord.removeClass('active').attr('aria-pressed', 'false'); + } + } + } + } else { + if (!fullScreen) { + self._maximizeZoomDialog(); + return; + } + $h.toggleFullScreen(true); + } + $modal.focus(); + }, + _setZoomContent: function ($frame, animate) { + var self = this, $content, tmplt, body, title, $body, $dataEl, config, previewId = $frame.attr('id'), + $zoomPreview = self.$preview.find('#zoom-' + previewId), $modal = self.$modal, $tmp, + $btnFull = $modal.find('.btn-fullscreen'), $btnBord = $modal.find('.btn-borderless'), cap, size, + $btnTogh = $modal.find('.btn-toggleheader'); + tmplt = $zoomPreview.attr('data-template') || 'generic'; + $content = $zoomPreview.find('.kv-file-content'); + body = $content.length ? $content.html() : ''; + cap = $frame.data('caption') || ''; + size = $frame.data('size') || ''; + title = cap + ' ' + size; + $modal.find('.kv-zoom-title').attr('title', $('
    ').html(title).text()).html(title); + $body = $modal.find('.kv-zoom-body'); + $modal.removeClass('kv-single-content'); + if (animate) { + $tmp = $body.addClass('file-thumb-loading').clone().insertAfter($body); + $body.html(body).hide(); + $tmp.fadeOut('fast', function () { + $body.fadeIn('fast', function () { + $body.removeClass('file-thumb-loading'); + }); + $tmp.remove(); + }); + } else { + $body.html(body); + } + config = self.previewZoomSettings[tmplt]; + if (config) { + $dataEl = $body.find('.kv-preview-data'); + $h.addCss($dataEl, 'file-zoom-detail'); + $.each(config, function (key, value) { + $dataEl.css(key, value); + if (($dataEl.attr('width') && key === 'width') || ($dataEl.attr('height') && key === 'height')) { + $dataEl.removeAttr(key); + } + }); + } + $modal.data('previewId', previewId); + self._handler($modal.find('.btn-prev'), 'click', function () { + self._zoomSlideShow('prev', previewId); + }); + self._handler($modal.find('.btn-next'), 'click', function () { + self._zoomSlideShow('next', previewId); + }); + self._handler($btnFull, 'click', function () { + self._resizeZoomDialog(true); + }); + self._handler($btnBord, 'click', function () { + self._resizeZoomDialog(false); + }); + self._handler($btnTogh, 'click', function () { + var $header = $modal.find('.modal-header'), $floatBar = $modal.find('.modal-body .floating-buttons'), + ht, $actions = $header.find('.kv-zoom-actions'), resize = function (height) { + var $body = self.$modal.find('.kv-zoom-body'), h = self.zoomModalHeight; + if ($modal.hasClass('file-zoom-fullscreen')) { + h = $body.outerHeight(true); + if (!height) { + h = h - $header.outerHeight(true); + } + } + $body.css('height', height ? h + height : h); + }; + if ($header.is(':visible')) { + ht = $header.outerHeight(true); + $header.slideUp('slow', function () { + $actions.find('.btn').appendTo($floatBar); + resize(ht); + }); + } else { + $floatBar.find('.btn').appendTo($actions); + $header.slideDown('slow', function () { + resize(); + }); + } + $modal.focus(); + }); + self._handler($modal, 'keydown', function (e) { + var key = e.which || e.keyCode, $prev = $(this).find('.btn-prev'), $next = $(this).find('.btn-next'), + vId = $(this).data('previewId'), vPrevKey = self.rtl ? 39 : 37, vNextKey = self.rtl ? 37 : 39; + if (key === vPrevKey && $prev.length && !$prev.attr('disabled')) { + self._zoomSlideShow('prev', vId); + } + if (key === vNextKey && $next.length && !$next.attr('disabled')) { + self._zoomSlideShow('next', vId); + } + }); + }, + _zoomPreview: function ($btn) { + var self = this, $frame, $modal = self.$modal; + if (!$btn.length) { + throw 'Cannot zoom to detailed preview!'; + } + $h.initModal($modal); + $modal.html(self._getModalContent()); + $frame = $btn.closest($h.FRAMES); + self._setZoomContent($frame); + $modal.modal('show'); + self._initZoomButtons(); + }, + _zoomSlideShow: function (dir, previewId) { + var self = this, $btn = self.$modal.find('.kv-zoom-actions .btn-' + dir), $targFrame, i, + thumbs = self.getFrames().toArray(), len = thumbs.length, out; + if ($btn.attr('disabled')) { + return; + } + for (i = 0; i < len; i++) { + if ($(thumbs[i]).attr('id') === previewId) { + out = dir === 'prev' ? i - 1 : i + 1; + break; + } + } + if (out < 0 || out >= len || !thumbs[out]) { + return; + } + $targFrame = $(thumbs[out]); + if ($targFrame.length) { + self._setZoomContent($targFrame, true); + } + self._initZoomButtons(); + self._raise('filezoom' + dir, {'previewId': previewId, modal: self.$modal}); + }, + _initZoomButton: function () { + var self = this; + self.$preview.find('.kv-file-zoom').each(function () { + var $el = $(this); + self._handler($el, 'click', function () { + self._zoomPreview($el); + }); + }); + }, + _inputFileCount: function () { + return this.$element.get(0).files.length; + }, + _refreshPreview: function () { + var self = this, files; + if ((!self._inputFileCount() && !self.isAjaxUpload) || !self.showPreview || !self.isPreviewable) { + return; + } + if (self.isAjaxUpload) { + if (self.fileManager.count() > 0) { + files = $.extend(true, {}, self.fileManager.stack); + self.fileManager.clear(); + self._clearFileInput(); + } else { + files = self.$element.get(0).files; + } + } else { + files = self.$element.get(0).files; + } + if (files && files.length) { + self.readFiles(files); + self._setFileDropZoneTitle(); + } + }, + _clearObjects: function ($el) { + $el.find('video audio').each(function () { + this.pause(); + $(this).remove(); + }); + $el.find('img object div').each(function () { + $(this).remove(); + }); + }, + _clearFileInput: function () { + var self = this, $el = self.$element, $srcFrm, $tmpFrm, $tmpEl; + if (!self._inputFileCount()) { + return; + } + $srcFrm = $el.closest('form'); + $tmpFrm = $(document.createElement('form')); + $tmpEl = $(document.createElement('div')); + $el.before($tmpEl); + if ($srcFrm.length) { + $srcFrm.after($tmpFrm); + } else { + $tmpEl.after($tmpFrm); + } + $tmpFrm.append($el).trigger('reset'); + $tmpEl.before($el).remove(); + $tmpFrm.remove(); + }, + _resetUpload: function () { + var self = this; + self.uploadCache = {content: [], config: [], tags: [], append: true}; + self.$btnUpload.removeAttr('disabled'); + self._setProgress(0); + self.$progress.hide(); + self._resetErrors(false); + self._initAjax(); + self.fileManager.clearImages(); + self._resetCanvas(); + self.cacheInitialPreview = {}; + if (self.overwriteInitial) { + self.initialPreview = []; + self.initialPreviewConfig = []; + self.initialPreviewThumbTags = []; + self.previewCache.data = { + content: [], + config: [], + tags: [] + }; + } + }, + _resetCanvas: function () { + var self = this; + if (self.canvas && self.imageCanvasContext) { + self.imageCanvasContext.clearRect(0, 0, self.canvas.width, self.canvas.height); + } + }, + _hasInitialPreview: function () { + var self = this; + return !self.overwriteInitial && self.previewCache.count(true); + }, + _resetPreview: function () { + var self = this, out, cap; + if (self.previewCache.count(true)) { + out = self.previewCache.out(); + self._setPreviewContent(out.content); + self._setInitThumbAttr(); + cap = self.initialCaption ? self.initialCaption : out.caption; + self._setCaption(cap); + } else { + self._clearPreview(); + self._initCaption(); + } + if (self.showPreview) { + self._initZoom(); + self._initSortable(); + } + }, + _clearDefaultPreview: function () { + var self = this; + self.$preview.find('.file-default-preview').remove(); + }, + _validateDefaultPreview: function () { + var self = this; + if (!self.showPreview || $h.isEmpty(self.defaultPreviewContent)) { + return; + } + self._setPreviewContent('
    ' + self.defaultPreviewContent + '
    '); + self.$container.removeClass('file-input-new'); + self._initClickable(); + }, + _resetPreviewThumbs: function (isAjax) { + var self = this, out; + if (isAjax) { + self._clearPreview(); + self.clearFileStack(); + return; + } + if (self._hasInitialPreview()) { + out = self.previewCache.out(); + self._setPreviewContent(out.content); + self._setInitThumbAttr(); + self._setCaption(out.caption); + self._initPreviewActions(); + } else { + self._clearPreview(); + } + }, + _getLayoutTemplate: function (t) { + var self = this, template = self.layoutTemplates[t]; + if ($h.isEmpty(self.customLayoutTags)) { + return template; + } + return $h.replaceTags(template, self.customLayoutTags); + }, + _getPreviewTemplate: function (t) { + var self = this, template = self.previewTemplates[t]; + if ($h.isEmpty(self.customPreviewTags)) { + return template; + } + return $h.replaceTags(template, self.customPreviewTags); + }, + _getOutData: function (formdata, jqXHR, responseData, filesData) { + var self = this; + jqXHR = jqXHR || {}; + responseData = responseData || {}; + filesData = filesData || self.fileManager.list(); + return { + formdata: formdata, + files: filesData, + filenames: self.filenames, + filescount: self.getFilesCount(), + extra: self._getExtraData(), + response: responseData, + reader: self.reader, + jqXHR: jqXHR + }; + }, + _getMsgSelected: function (n) { + var self = this, strFiles = n === 1 ? self.fileSingle : self.filePlural; + return n > 0 ? self.msgSelected.replace('{n}', n).replace('{files}', strFiles) : self.msgNoFilesSelected; + }, + _getFrame: function (id) { + var self = this, $frame = $('#' + id); + if (!$frame.length) { + self._log($h.logMessages.invalidThumb, {id: id}); + return null; + } + return $frame; + }, + _getThumbs: function (css) { + css = css || ''; + return this.getFrames(':not(.file-preview-initial)' + css); + }, + _getExtraData: function (fileId, index) { + var self = this, data = self.uploadExtraData; + if (typeof self.uploadExtraData === 'function') { + data = self.uploadExtraData(fileId, index); + } + return data; + }, + _initXhr: function (xhrobj, fileId, fileCount) { + var self = this, fm = self.fileManager, func = function (event) { + var pct = 0, total = event.total, loaded = event.loaded || event.position, + stats = fm.getUploadStats(fileId, loaded, total); + /** @namespace event.lengthComputable */ + if (event.lengthComputable && !self.enableResumableUpload) { + pct = $h.round(loaded / total * 100); + } + if (fileId) { + self._setFileUploadStats(fileId, pct, fileCount, stats); + } else { + self._setProgress(pct, null, null, self._getStats(stats)); + } + self._raise('fileajaxprogress', [stats]); + }; + if (xhrobj.upload) { + if (self.progressDelay) { + func = $h.debounce(func, self.progressDelay); + } + xhrobj.upload.addEventListener('progress', func, false); + } + return xhrobj; + }, + _initAjaxSettings: function () { + var self = this; + self._ajaxSettings = $.extend(true, {}, self.ajaxSettings); + self._ajaxDeleteSettings = $.extend(true, {}, self.ajaxDeleteSettings); + }, + _mergeAjaxCallback: function (funcName, srcFunc, type) { + var self = this, settings = self._ajaxSettings, flag = self.mergeAjaxCallbacks, targFunc; + if (type === 'delete') { + settings = self._ajaxDeleteSettings; + flag = self.mergeAjaxDeleteCallbacks; + } + targFunc = settings[funcName]; + if (flag && typeof targFunc === 'function') { + if (flag === 'before') { + settings[funcName] = function () { + targFunc.apply(this, arguments); + srcFunc.apply(this, arguments); + }; + } else { + settings[funcName] = function () { + srcFunc.apply(this, arguments); + targFunc.apply(this, arguments); + }; + } + } else { + settings[funcName] = srcFunc; + } + }, + _ajaxSubmit: function (fnBefore, fnSuccess, fnComplete, fnError, formdata, fileId, index, vUrl) { + var self = this, settings, defaults, data, processQueue; + if (!self._raise('filepreajax', [formdata, fileId, index])) { + return; + } + formdata.append('initialPreview', JSON.stringify(self.initialPreview)); + formdata.append('initialPreviewConfig', JSON.stringify(self.initialPreviewConfig)); + formdata.append('initialPreviewThumbTags', JSON.stringify(self.initialPreviewThumbTags)); + self._initAjaxSettings(); + self._mergeAjaxCallback('beforeSend', fnBefore); + self._mergeAjaxCallback('success', fnSuccess); + self._mergeAjaxCallback('complete', fnComplete); + self._mergeAjaxCallback('error', fnError); + vUrl = vUrl || self.uploadUrlThumb || self.uploadUrl; + if (typeof vUrl === 'function') { + vUrl = vUrl(); + } + data = self._getExtraData(fileId, index) || {}; + if (typeof data === 'object') { + $.each(data, function (key, value) { + formdata.append(key, value); + }); + } + defaults = { + xhr: function () { + var xhrobj = $.ajaxSettings.xhr(); + return self._initXhr(xhrobj, fileId, self.fileManager.count()); + }, + url: self._encodeURI(vUrl), + type: 'POST', + dataType: 'json', + data: formdata, + cache: false, + processData: false, + contentType: false + }; + settings = $.extend(true, {}, defaults, self._ajaxSettings); + self.ajaxQueue.push(settings); + processQueue = function () { + var config, xhr; + if (self.ajaxCurrentThreads < self.maxAjaxThreads) { + config = self.ajaxQueue.shift(); + if (typeof config !== 'undefined') { + self.ajaxCurrentThreads++; + xhr = $.ajax(config).done(function () { + clearInterval(self.ajaxQueueIntervalId); + self.ajaxCurrentThreads--; + }); + self.ajaxRequests.push(xhr); + } + } + }; + self.ajaxQueueIntervalId = setInterval(processQueue, self.queueDelay); + + }, + _mergeArray: function (prop, content) { + var self = this, arr1 = $h.cleanArray(self[prop]), arr2 = $h.cleanArray(content); + self[prop] = arr1.concat(arr2); + }, + _initUploadSuccess: function (out, $thumb, allFiles) { + var self = this, append, data, index, $div, $newCache, content, config, tags, i; + if (!self.showPreview || typeof out !== 'object' || $.isEmptyObject(out)) { + return; + } + if (out.initialPreview !== undefined && out.initialPreview.length > 0) { + self.hasInitData = true; + content = out.initialPreview || []; + config = out.initialPreviewConfig || []; + tags = out.initialPreviewThumbTags || []; + append = out.append === undefined || out.append; + if (content.length > 0 && !$h.isArray(content)) { + content = content.split(self.initialPreviewDelimiter); + } + if (content.length) { + self._mergeArray('initialPreview', content); + self._mergeArray('initialPreviewConfig', config); + self._mergeArray('initialPreviewThumbTags', tags); + } + if ($thumb !== undefined) { + if (!allFiles) { + index = self.previewCache.add(content[0], config[0], tags[0], append); + data = self.previewCache.get(index, false); + $div = $(document.createElement('div')).html(data).hide().insertAfter($thumb); + $newCache = $div.find('.kv-zoom-cache'); + if ($newCache && $newCache.length) { + $newCache.insertAfter($thumb); + } + $thumb.fadeOut('slow', function () { + var $newThumb = $div.find('.file-preview-frame'); + if ($newThumb && $newThumb.length) { + $newThumb.insertBefore($thumb).fadeIn('slow').css('display:inline-block'); + } + self._initPreviewActions(); + self._clearFileInput(); + $h.cleanZoomCache(self.$preview.find('#zoom-' + $thumb.attr('id'))); + $thumb.remove(); + $div.remove(); + self._initSortable(); + }); + } else { + i = $thumb.attr('data-fileindex'); + self.uploadCache.content[i] = content[0]; + self.uploadCache.config[i] = config[0] || []; + self.uploadCache.tags[i] = tags[0] || []; + self.uploadCache.append = append; + } + } else { + self.previewCache.set(content, config, tags, append); + self._initPreview(); + self._initPreviewActions(); + } + } + }, + _initSuccessThumbs: function () { + var self = this; + if (!self.showPreview) { + return; + } + self._getThumbs($h.FRAMES + '.file-preview-success').each(function () { + var $thumb = $(this), $preview = self.$preview, $remove = $thumb.find('.kv-file-remove'); + $remove.removeAttr('disabled'); + self._handler($remove, 'click', function () { + var id = $thumb.attr('id'), + out = self._raise('filesuccessremove', [id, $thumb.attr('data-fileindex')]); + $h.cleanMemory($thumb); + if (out === false) { + return; + } + $thumb.fadeOut('slow', function () { + $h.cleanZoomCache($preview.find('#zoom-' + id)); + $thumb.remove(); + if (!self.getFrames().length) { + self.reset(); + } + }); + }); + }); + }, + _updateInitialPreview: function () { + var self = this, u = self.uploadCache, i, j, len = 0, data = self.cacheInitialPreview; + if (data && data.content) { + len = data.content.length; + } + if (self.showPreview) { + self.previewCache.set(u.content, u.config, u.tags, u.append); + if (len) { + for (i = 0; i < u.content.length; i++) { + j = i + len; + data.content[j] = u.content[i]; + //noinspection JSUnresolvedVariable + if (data.config.length) { + data.config[j] = u.config[i]; + } + if (data.tags.length) { + data.tags[j] = u.tags[i]; + } + } + self.initialPreview = $h.cleanArray(data.content); + self.initialPreviewConfig = $h.cleanArray(data.config); + self.initialPreviewThumbTags = $h.cleanArray(data.tags); + } else { + self.initialPreview = u.content; + self.initialPreviewConfig = u.config; + self.initialPreviewThumbTags = u.tags; + } + self.cacheInitialPreview = {}; + if (self.hasInitData) { + self._initPreview(); + self._initPreviewActions(); + } + } + }, + _uploadSingle: function (i, id, isBatch) { + var self = this, fm = self.fileManager, count = fm.count(), formdata = new FormData(), outData, + previewId = self.previewInitId + '-' + i, $thumb, chkComplete, $btnUpload, $btnDelete, + hasPostData = count > 0 || !$.isEmptyObject(self.uploadExtraData), uploadFailed, $prog, fnBefore, + errMsg, fnSuccess, fnComplete, fnError, updateUploadLog, op = self.ajaxOperations.uploadThumb, + fileObj = fm.getFile(id), params = {id: previewId, index: i, fileId: id}, + fileName = self.fileManager.getFileName(id, true); + if (self.enableResumableUpload) { // not enabled for resumable uploads + return; + } + if (self.showPreview) { + $thumb = self.fileManager.getThumb(id); + $prog = $thumb.find('.file-thumb-progress'); + $btnUpload = $thumb.find('.kv-file-upload'); + $btnDelete = $thumb.find('.kv-file-remove'); + $prog.show(); + } + if (count === 0 || !hasPostData || (self.showPreview && $btnUpload && $btnUpload.hasClass('disabled')) || + self._abort(params)) { + return; + } + updateUploadLog = function () { + if (!uploadFailed) { + fm.removeFile(id); + } else { + fm.errors.push(id); + } + fm.setProcessed(id); + if (fm.isProcessed()) { + self.fileBatchCompleted = true; + } + }; + chkComplete = function () { + var $initThumbs; + if (!self.fileBatchCompleted) { + return; + } + setTimeout(function () { + var triggerReset = fm.count() === 0, errCount = fm.errors.length; + self._updateInitialPreview(); + self.unlock(triggerReset); + if (triggerReset) { + self._clearFileInput(); + } + $initThumbs = self.$preview.find('.file-preview-initial'); + if (self.uploadAsync && $initThumbs.length) { + $h.addCss($initThumbs, $h.SORT_CSS); + self._initSortable(); + } + self._raise('filebatchuploadcomplete', [fm.stack, self._getExtraData()]); + if (!self.retryErrorUploads || errCount === 0) { + fm.clear(); + } + self._setProgress(101); + self.ajaxAborted = false; + }, self.processDelay); + }; + fnBefore = function (jqXHR) { + outData = self._getOutData(formdata, jqXHR); + fm.initStats(id); + self.fileBatchCompleted = false; + if (!isBatch) { + self.ajaxAborted = false; + } + if (self.showPreview) { + if (!$thumb.hasClass('file-preview-success')) { + self._setThumbStatus($thumb, 'Loading'); + $h.addCss($thumb, 'file-uploading'); + } + $btnUpload.attr('disabled', true); + $btnDelete.attr('disabled', true); + } + if (!isBatch) { + self.lock(); + } + if (fm.errors.indexOf(id) !== -1) { + delete fm.errors[id]; + } + self._raise('filepreupload', [outData, previewId, i]); + $.extend(true, params, outData); + if (self._abort(params)) { + jqXHR.abort(); + if (!isBatch) { + self._setThumbStatus($thumb, 'New'); + $thumb.removeClass('file-uploading'); + $btnUpload.removeAttr('disabled'); + $btnDelete.removeAttr('disabled'); + self.unlock(); + } + self._setProgressCancelled(); + } + }; + fnSuccess = function (data, textStatus, jqXHR) { + var pid = self.showPreview && $thumb.attr('id') ? $thumb.attr('id') : previewId; + outData = self._getOutData(formdata, jqXHR, data); + $.extend(true, params, outData); + setTimeout(function () { + if ($h.isEmpty(data) || $h.isEmpty(data.error)) { + if (self.showPreview) { + self._setThumbStatus($thumb, 'Success'); + $btnUpload.hide(); + self._initUploadSuccess(data, $thumb, isBatch); + self._setProgress(101, $prog); + } + self._raise('fileuploaded', [outData, pid, i]); + if (!isBatch) { + self.fileManager.remove($thumb); + } else { + updateUploadLog(); + } + } else { + uploadFailed = true; + errMsg = self._parseError(op, jqXHR, self.msgUploadError, self.fileManager.getFileName(id)); + self._showFileError(errMsg, params); + self._setPreviewError($thumb, true); + if (!self.retryErrorUploads) { + $btnUpload.hide(); + } + if (isBatch) { + updateUploadLog(); + } + self._setProgress(101, $('#' + pid).find('.file-thumb-progress'), self.msgUploadError); + } + }, self.processDelay); + }; + fnComplete = function () { + setTimeout(function () { + if (self.showPreview) { + $btnUpload.removeAttr('disabled'); + $btnDelete.removeAttr('disabled'); + $thumb.removeClass('file-uploading'); + } + if (!isBatch) { + self.unlock(false); + self._clearFileInput(); + } else { + chkComplete(); + } + self._initSuccessThumbs(); + }, self.processDelay); + }; + fnError = function (jqXHR, textStatus, errorThrown) { + errMsg = self._parseError(op, jqXHR, errorThrown, self.fileManager.getFileName(id)); + uploadFailed = true; + setTimeout(function () { + if (isBatch) { + updateUploadLog(); + } + self.fileManager.setProgress(id, 100); + self._setPreviewError($thumb, true); + if (!self.retryErrorUploads) { + $btnUpload.hide(); + } + $.extend(true, params, self._getOutData(formdata, jqXHR)); + self._setProgress(101, $prog, self.msgAjaxProgressError.replace('{operation}', op)); + self._setProgress(101, $thumb.find('.file-thumb-progress'), self.msgUploadError); + self._showFileError(errMsg, params); + }, self.processDelay); + }; + formdata.append(self.uploadFileAttr, fileObj.file, fileName); + self._setUploadData(formdata, {fileId: id}); + self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata, id, i); + }, + _uploadBatch: function () { + var self = this, fm = self.fileManager, total = fm.total(), params = {}, fnBefore, fnSuccess, fnError, + fnComplete, hasPostData = total > 0 || !$.isEmptyObject(self.uploadExtraData), errMsg, + setAllUploaded, formdata = new FormData(), op = self.ajaxOperations.uploadBatch; + if (total === 0 || !hasPostData || self._abort(params)) { + return; + } + setAllUploaded = function () { + self.fileManager.clear(); + self._clearFileInput(); + }; + fnBefore = function (jqXHR) { + self.lock(); + fm.initStats(); + var outData = self._getOutData(formdata, jqXHR); + self.ajaxAborted = false; + if (self.showPreview) { + self._getThumbs().each(function () { + var $thumb = $(this), $btnUpload = $thumb.find('.kv-file-upload'), + $btnDelete = $thumb.find('.kv-file-remove'); + if (!$thumb.hasClass('file-preview-success')) { + self._setThumbStatus($thumb, 'Loading'); + $h.addCss($thumb, 'file-uploading'); + } + $btnUpload.attr('disabled', true); + $btnDelete.attr('disabled', true); + }); + } + self._raise('filebatchpreupload', [outData]); + if (self._abort(outData)) { + jqXHR.abort(); + self._getThumbs().each(function () { + var $thumb = $(this), $btnUpload = $thumb.find('.kv-file-upload'), + $btnDelete = $thumb.find('.kv-file-remove'); + if ($thumb.hasClass('file-preview-loading')) { + self._setThumbStatus($thumb, 'New'); + $thumb.removeClass('file-uploading'); + } + $btnUpload.removeAttr('disabled'); + $btnDelete.removeAttr('disabled'); + }); + self._setProgressCancelled(); + } + }; + fnSuccess = function (data, textStatus, jqXHR) { + /** @namespace data.errorkeys */ + var outData = self._getOutData(formdata, jqXHR, data), key = 0, + $thumbs = self._getThumbs(':not(.file-preview-success)'), + keys = $h.isEmpty(data) || $h.isEmpty(data.errorkeys) ? [] : data.errorkeys; + + if ($h.isEmpty(data) || $h.isEmpty(data.error)) { + self._raise('filebatchuploadsuccess', [outData]); + setAllUploaded(); + if (self.showPreview) { + $thumbs.each(function () { + var $thumb = $(this); + self._setThumbStatus($thumb, 'Success'); + $thumb.removeClass('file-uploading'); + $thumb.find('.kv-file-upload').hide().removeAttr('disabled'); + }); + self._initUploadSuccess(data); + } else { + self.reset(); + } + self._setProgress(101); + } else { + if (self.showPreview) { + $thumbs.each(function () { + var $thumb = $(this); + $thumb.removeClass('file-uploading'); + $thumb.find('.kv-file-upload').removeAttr('disabled'); + $thumb.find('.kv-file-remove').removeAttr('disabled'); + if (keys.length === 0 || $.inArray(key, keys) !== -1) { + self._setPreviewError($thumb, true); + if (!self.retryErrorUploads) { + $thumb.find('.kv-file-upload').hide(); + self.fileManager.remove($thumb); + } + } else { + $thumb.find('.kv-file-upload').hide(); + self._setThumbStatus($thumb, 'Success'); + self.fileManager.remove($thumb); + } + if (!$thumb.hasClass('file-preview-error') || self.retryErrorUploads) { + key++; + } + }); + self._initUploadSuccess(data); + } + errMsg = self._parseError(op, jqXHR, self.msgUploadError); + self._showFileError(errMsg, outData, 'filebatchuploaderror'); + self._setProgress(101, self.$progress, self.msgUploadError); + } + }; + fnComplete = function () { + self.unlock(); + self._initSuccessThumbs(); + self._clearFileInput(); + self._raise('filebatchuploadcomplete', [self.fileManager.stack, self._getExtraData()]); + }; + fnError = function (jqXHR, textStatus, errorThrown) { + var outData = self._getOutData(formdata, jqXHR); + errMsg = self._parseError(op, jqXHR, errorThrown); + self._showFileError(errMsg, outData, 'filebatchuploaderror'); + self.uploadFileCount = total - 1; + if (!self.showPreview) { + return; + } + self._getThumbs().each(function () { + var $thumb = $(this); + $thumb.removeClass('file-uploading'); + if (self.fileManager.getFile($thumb.attr('data-fileid'))) { + self._setPreviewError($thumb); + } + }); + self._getThumbs().removeClass('file-uploading'); + self._getThumbs(' .kv-file-upload').removeAttr('disabled'); + self._getThumbs(' .kv-file-delete').removeAttr('disabled'); + self._setProgress(101, self.$progress, self.msgAjaxProgressError.replace('{operation}', op)); + }; + var ctr = 0; + $.each(self.fileManager.stack, function (key, data) { + if (!$h.isEmpty(data.file)) { + formdata.append(self.uploadFileAttr, data.file, (data.nameFmt || ('untitled_' + ctr))); + } + ctr++; + }); + self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata); + }, + _uploadExtraOnly: function () { + var self = this, params = {}, fnBefore, fnSuccess, fnComplete, fnError, formdata = new FormData(), errMsg, + op = self.ajaxOperations.uploadExtra; + if (self._abort(params)) { + return; + } + fnBefore = function (jqXHR) { + self.lock(); + var outData = self._getOutData(formdata, jqXHR); + self._raise('filebatchpreupload', [outData]); + self._setProgress(50); + params.data = outData; + params.xhr = jqXHR; + if (self._abort(params)) { + jqXHR.abort(); + self._setProgressCancelled(); + } + }; + fnSuccess = function (data, textStatus, jqXHR) { + var outData = self._getOutData(formdata, jqXHR, data); + if ($h.isEmpty(data) || $h.isEmpty(data.error)) { + self._raise('filebatchuploadsuccess', [outData]); + self._clearFileInput(); + self._initUploadSuccess(data); + self._setProgress(101); + } else { + errMsg = self._parseError(op, jqXHR, self.msgUploadError); + self._showFileError(errMsg, outData, 'filebatchuploaderror'); + } + }; + fnComplete = function () { + self.unlock(); + self._clearFileInput(); + self._raise('filebatchuploadcomplete', [self.fileManager.stack, self._getExtraData()]); + }; + fnError = function (jqXHR, textStatus, errorThrown) { + var outData = self._getOutData(formdata, jqXHR); + errMsg = self._parseError(op, jqXHR, errorThrown); + params.data = outData; + self._showFileError(errMsg, outData, 'filebatchuploaderror'); + self._setProgress(101, self.$progress, self.msgAjaxProgressError.replace('{operation}', op)); + }; + self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata); + }, + _deleteFileIndex: function ($frame) { + var self = this, ind = $frame.attr('data-fileindex'), rev = self.reversePreviewOrder; + if (ind.substring(0, 5) === 'init_') { + ind = parseInt(ind.replace('init_', '')); + self.initialPreview = $h.spliceArray(self.initialPreview, ind, rev); + self.initialPreviewConfig = $h.spliceArray(self.initialPreviewConfig, ind, rev); + self.initialPreviewThumbTags = $h.spliceArray(self.initialPreviewThumbTags, ind, rev); + self.getFrames().each(function () { + var $nFrame = $(this), nInd = $nFrame.attr('data-fileindex'); + if (nInd.substring(0, 5) === 'init_') { + nInd = parseInt(nInd.replace('init_', '')); + if (nInd > ind) { + nInd--; + $nFrame.attr('data-fileindex', 'init_' + nInd); + } + } + }); + if (self.uploadAsync || self.enableResumableUpload) { + self.cacheInitialPreview = self.getPreview(); + } + } + }, + _initFileActions: function () { + var self = this, $preview = self.$preview; + if (!self.showPreview) { + return; + } + self._initZoomButton(); + self.getFrames(' .kv-file-remove').each(function () { + var $el = $(this), $frame = $el.closest($h.FRAMES), hasError, id = $frame.attr('id'), + ind = $frame.attr('data-fileindex'), n, cap, status; + self._handler($el, 'click', function () { + status = self._raise('filepreremove', [id, ind]); + if (status === false || !self._validateMinCount()) { + return false; + } + hasError = $frame.hasClass('file-preview-error'); + $h.cleanMemory($frame); + $frame.fadeOut('slow', function () { + $h.cleanZoomCache($preview.find('#zoom-' + id)); + self.fileManager.remove($frame); + self._clearObjects($frame); + $frame.remove(); + if (id && hasError) { + self.$errorContainer.find('li[data-thumb-id="' + id + '"]').fadeOut('fast', function () { + $(this).remove(); + if (!self._errorsExist()) { + self._resetErrors(); + } + }); + } + self._clearFileInput(); + var chk = self.previewCache.count(true), len = self.fileManager.count(), + file, hasThumb = self.showPreview && self.getFrames().length; + if (len === 0 && chk === 0 && !hasThumb) { + self.reset(); + } else { + n = chk + len; + if (n > 1) { + cap = self._getMsgSelected(n); + } else { + file = self.fileManager.getFirstFile(); + cap = file ? file.nameFmt : '_'; + } + self._setCaption(cap); + } + self._raise('fileremoved', [id, ind]); + }); + }); + }); + self.getFrames(' .kv-file-upload').each(function () { + var $el = $(this); + self._handler($el, 'click', function () { + var $frame = $el.closest($h.FRAMES), id = $frame.attr('data-fileid'); + self.$progress.hide(); + if ($frame.hasClass('file-preview-error') && !self.retryErrorUploads) { + return; + } + self._uploadSingle(self.fileManager.getIndex(id), id, false); + }); + }); + }, + _initPreviewActions: function () { + var self = this, $preview = self.$preview, deleteExtraData = self.deleteExtraData || {}, + btnRemove = $h.FRAMES + ' .kv-file-remove', settings = self.fileActionSettings, + origClass = settings.removeClass, errClass = settings.removeErrorClass, + resetProgress = function () { + var hasFiles = self.isAjaxUpload ? self.previewCache.count(true) : self._inputFileCount(); + if (!self.getFrames().length && !hasFiles) { + self._setCaption(''); + self.reset(); + self.initialCaption = ''; + } + }; + self._initZoomButton(); + $preview.find(btnRemove).each(function () { + var $el = $(this), vUrl = $el.data('url') || self.deleteUrl, vKey = $el.data('key'), errMsg, fnBefore, + fnSuccess, fnError, op = self.ajaxOperations.deleteThumb; + if ($h.isEmpty(vUrl) || vKey === undefined) { + return; + } + if (typeof vUrl === 'function') { + vUrl = vUrl(); + } + var $frame = $el.closest($h.FRAMES), cache = self.previewCache.data, settings, params, config, + fileName, extraData, index = $frame.attr('data-fileindex'); + index = parseInt(index.replace('init_', '')); + config = $h.isEmpty(cache.config) && $h.isEmpty(cache.config[index]) ? null : cache.config[index]; + extraData = $h.isEmpty(config) || $h.isEmpty(config.extra) ? deleteExtraData : config.extra; + fileName = config.filename || config.caption || ''; + if (typeof extraData === 'function') { + extraData = extraData(); + } + params = {id: $el.attr('id'), key: vKey, extra: extraData}; + fnBefore = function (jqXHR) { + self.ajaxAborted = false; + self._raise('filepredelete', [vKey, jqXHR, extraData]); + if (self._abort()) { + jqXHR.abort(); + } else { + $el.removeClass(errClass); + $h.addCss($frame, 'file-uploading'); + $h.addCss($el, 'disabled ' + origClass); + } + }; + fnSuccess = function (data, textStatus, jqXHR) { + var n, cap; + if (!$h.isEmpty(data) && !$h.isEmpty(data.error)) { + params.jqXHR = jqXHR; + params.response = data; + errMsg = self._parseError(op, jqXHR, self.msgDeleteError, fileName); + self._showFileError(errMsg, params, 'filedeleteerror'); + $frame.removeClass('file-uploading'); + $el.removeClass('disabled ' + origClass).addClass(errClass); + resetProgress(); + return; + } + $frame.removeClass('file-uploading').addClass('file-deleted'); + $frame.fadeOut('slow', function () { + index = parseInt(($frame.attr('data-fileindex')).replace('init_', '')); + self.previewCache.unset(index); + self._deleteFileIndex($frame); + n = self.previewCache.count(true); + cap = n > 0 ? self._getMsgSelected(n) : ''; + self._setCaption(cap); + self._raise('filedeleted', [vKey, jqXHR, extraData]); + $h.cleanZoomCache($preview.find('#zoom-' + $frame.attr('id'))); + self._clearObjects($frame); + $frame.remove(); + resetProgress(); + }); + }; + fnError = function (jqXHR, textStatus, errorThrown) { + var errMsg = self._parseError(op, jqXHR, errorThrown, fileName); + params.jqXHR = jqXHR; + params.response = {}; + self._showFileError(errMsg, params, 'filedeleteerror'); + $frame.removeClass('file-uploading'); + $el.removeClass('disabled ' + origClass).addClass(errClass); + resetProgress(); + }; + self._initAjaxSettings(); + self._mergeAjaxCallback('beforeSend', fnBefore, 'delete'); + self._mergeAjaxCallback('success', fnSuccess, 'delete'); + self._mergeAjaxCallback('error', fnError, 'delete'); + settings = $.extend(true, {}, { + url: self._encodeURI(vUrl), + type: 'POST', + dataType: 'json', + data: $.extend(true, {}, {key: vKey}, extraData) + }, self._ajaxDeleteSettings); + self._handler($el, 'click', function () { + if (!self._validateMinCount()) { + return false; + } + self.ajaxAborted = false; + self._raise('filebeforedelete', [vKey, extraData]); + //noinspection JSUnresolvedVariable,JSHint + if (self.ajaxAborted instanceof Promise) { + self.ajaxAborted.then(function (result) { + if (!result) { + $.ajax(settings); + } + }); + } else { + if (!self.ajaxAborted) { + $.ajax(settings); + } + } + }); + }); + }, + _hideFileIcon: function () { + var self = this; + if (self.overwriteInitial) { + self.$captionContainer.removeClass('icon-visible'); + } + }, + _showFileIcon: function () { + var self = this; + $h.addCss(self.$captionContainer, 'icon-visible'); + }, + _getSize: function (bytes, sizes) { + var self = this, size = parseFloat(bytes), i, func = self.fileSizeGetter, out; + if (!$.isNumeric(bytes) || !$.isNumeric(size)) { + return ''; + } + if (typeof func === 'function') { + out = func(size); + } else { + if (size === 0) { + out = '0.00 B'; + } else { + i = Math.floor(Math.log(size) / Math.log(1024)); + if (!sizes) { + sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + } + out = (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + sizes[i]; + } + } + return self._getLayoutTemplate('size').replace('{sizeText}', out); + }, + _getFileType: function (ftype) { + var self = this; + return self.mimeTypeAliases[ftype] || ftype; + }, + _generatePreviewTemplate: function ( + cat, + data, + fname, + ftype, + previewId, + fileId, + isError, + size, + frameClass, + foot, + ind, + templ, + attrs, + zoomData + ) { + var self = this, caption = self.slug(fname), prevContent, zoomContent = '', styleAttribs = '', + screenW = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, + config, newCat = self.preferIconicPreview ? 'other' : cat, title = caption, alt = caption, + footer = foot || self._renderFileFooter(cat, caption, size, 'auto', isError), + hasIconSetting = self._getPreviewIcon(fname), typeCss = 'type-default', + forcePrevIcon = hasIconSetting && self.preferIconicPreview, + forceZoomIcon = hasIconSetting && self.preferIconicZoomPreview, getContent; + config = screenW < 400 ? (self.previewSettingsSmall[newCat] || self.defaults.previewSettingsSmall[newCat]) : + (self.previewSettings[newCat] || self.defaults.previewSettings[newCat]); + if (config) { + $.each(config, function (key, val) { + styleAttribs += key + ':' + val + ';'; + }); + } + getContent = function (c, d, zoom, frameCss) { + var id = zoom ? 'zoom-' + previewId : previewId, tmplt = self._getPreviewTemplate(c), + css = (frameClass || '') + ' ' + frameCss; + if (self.frameClass) { + css = self.frameClass + ' ' + css; + } + if (zoom) { + css = css.replace(' ' + $h.SORT_CSS, ''); + } + tmplt = self._parseFilePreviewIcon(tmplt, fname); + if (c === 'text') { + d = $h.htmlEncode(d); + } + if (cat === 'object' && !ftype) { + $.each(self.defaults.fileTypeSettings, function (key, func) { + if (key === 'object' || key === 'other') { + return; + } + if (func(fname, ftype)) { + typeCss = 'type-' + key; + } + }); + } + if (!$h.isEmpty(attrs)) { + if (attrs.title !== undefined && attrs.title !== null) { + title = attrs.title; + } + if (attrs.alt !== undefined && attrs.alt !== null) { + title = attrs.alt; + } + } + return tmplt.setTokens({ + 'previewId': id, + 'caption': caption, + 'title': title, + 'alt': alt, + 'frameClass': css, + 'type': self._getFileType(ftype), + 'fileindex': ind, + 'fileid': fileId || '', + 'typeCss': typeCss, + 'footer': footer, + 'data': d, + 'template': templ || cat, + 'style': styleAttribs ? 'style="' + styleAttribs + '"' : '' + }); + }; + ind = ind || previewId.slice(previewId.lastIndexOf('-') + 1); + if (self.fileActionSettings.showZoom) { + zoomContent = getContent((forceZoomIcon ? 'other' : cat), zoomData ? zoomData : data, true, + 'kv-zoom-thumb'); + } + zoomContent = '\n' + self._getLayoutTemplate('zoomCache').replace('{zoomContent}', zoomContent); + if (typeof self.sanitizeZoomCache === 'function') { + zoomContent = self.sanitizeZoomCache(zoomContent); + } + prevContent = getContent((forcePrevIcon ? 'other' : cat), data, false, 'kv-preview-thumb'); + return prevContent + zoomContent; + }, + _addToPreview: function ($preview, content) { + var self = this; + return self.reversePreviewOrder ? $preview.prepend(content) : $preview.append(content); + }, + _previewDefault: function (file, previewId, isDisabled) { + var self = this, $preview = self.$preview; + if (!self.showPreview) { + return; + } + var fname = $h.getFileName(file), ftype = file ? file.type : '', content, size = file.size || 0, + caption = self._getFileName(file, ''), isError = isDisabled === true && !self.isAjaxUpload, + data = $h.createObjectURL(file), fileId = self.fileManager.getId(file); + self._clearDefaultPreview(); + content = self._generatePreviewTemplate('other', data, fname, ftype, previewId, fileId, isError, size); + self._addToPreview($preview, content); + self._setThumbAttr(previewId, caption, size); + if (isDisabled === true && self.isAjaxUpload) { + self._setThumbStatus($('#' + previewId), 'Error'); + } + }, + canPreview: function (file) { + var self = this; + if (!file || !self.showPreview || !self.$preview || !self.$preview.length) { + return false; + } + var name = file.name || '', type = file.type || '', size = (file.size || 0) / 1000, + cat = self._parseFileType(type, name), allowedTypes, allowedMimes, allowedExts, skipPreview, + types = self.allowedPreviewTypes, mimes = self.allowedPreviewMimeTypes, + exts = self.allowedPreviewExtensions || [], dTypes = self.disabledPreviewTypes, + dMimes = self.disabledPreviewMimeTypes, dExts = self.disabledPreviewExtensions || [], + maxSize = self.maxFilePreviewSize && parseFloat(self.maxFilePreviewSize) || 0, + expAllExt = new RegExp('\\.(' + exts.join('|') + ')$', 'i'), + expDisExt = new RegExp('\\.(' + dExts.join('|') + ')$', 'i'); + allowedTypes = !types || types.indexOf(cat) !== -1; + allowedMimes = !mimes || mimes.indexOf(type) !== -1; + allowedExts = !exts.length || $h.compare(name, expAllExt); + skipPreview = (dTypes && dTypes.indexOf(cat) !== -1) || (dMimes && dMimes.indexOf(type) !== -1) || + (dExts.length && $h.compare(name, expDisExt)) || (maxSize && !isNaN(maxSize) && size > maxSize); + return !skipPreview && (allowedTypes || allowedMimes || allowedExts); + }, + _previewFile: function (i, file, theFile, previewId, data, fileInfo) { + if (!this.showPreview) { + return; + } + var self = this, fname = $h.getFileName(file), ftype = fileInfo.type, caption = fileInfo.name, + cat = self._parseFileType(ftype, fname), content, $preview = self.$preview, fsize = file.size || 0, + iData = (cat === 'text' || cat === 'html' || cat === 'image') ? theFile.target.result : data, + fileId = self.fileManager.getId(file); + /** @namespace window.DOMPurify */ + if (cat === 'html' && self.purifyHtml && window.DOMPurify) { + iData = window.DOMPurify.sanitize(iData); + } + content = self._generatePreviewTemplate(cat, iData, fname, ftype, previewId, fileId, false, fsize); + self._clearDefaultPreview(); + self._addToPreview($preview, content); + var $thumb = $preview.find('#' + previewId), $img = $thumb.find('img'), id = $thumb.attr('data-fileid'); + self._validateImageOrientation($img, file, previewId, id, caption, ftype, fsize, iData); + self._setThumbAttr(previewId, caption, fsize); + self._initSortable(); + }, + _setThumbAttr: function (id, caption, size) { + var self = this, $frame = $('#' + id); + if ($frame.length) { + size = size && size > 0 ? self._getSize(size) : ''; + $frame.data({'caption': caption, 'size': size}); + } + }, + _setInitThumbAttr: function () { + var self = this, data = self.previewCache.data, len = self.previewCache.count(true), config, + caption, size, previewId; + if (len === 0) { + return; + } + for (var i = 0; i < len; i++) { + config = data.config[i]; + previewId = self.previewInitId + '-' + 'init_' + i; + caption = $h.ifSet('caption', config, $h.ifSet('filename', config)); + size = $h.ifSet('size', config); + self._setThumbAttr(previewId, caption, size); + } + }, + _slugDefault: function (text) { + // noinspection RegExpRedundantEscape + return $h.isEmpty(text) ? '' : String(text).replace(/[\[\]\/\{}:;#%=\(\)\*\+\?\\\^\$\|<>&"']/g, '_'); + }, + _updateFileDetails: function (numFiles) { + var self = this, $el = self.$element, label, n, log, nFiles, file, + name = ($h.isIE(9) && $h.findFileName($el.val())) || ($el[0].files[0] && $el[0].files[0].name); + if (!name && self.fileManager.count() > 0) { + file = self.fileManager.getFirstFile(); + label = file.nameFmt; + } else { + label = name ? self.slug(name) : '_'; + } + n = self.isAjaxUpload ? self.fileManager.count() : numFiles; + nFiles = self.previewCache.count(true) + n; + log = n === 1 ? label : self._getMsgSelected(nFiles); + if (self.isError) { + self.$previewContainer.removeClass('file-thumb-loading'); + self.$previewStatus.html(''); + self.$captionContainer.removeClass('icon-visible'); + } else { + self._showFileIcon(); + } + self._setCaption(log, self.isError); + self.$container.removeClass('file-input-new file-input-ajax-new'); + if (arguments.length === 1) { + self._raise('fileselect', [numFiles, label]); + } + if (self.previewCache.count(true)) { + self._initPreviewActions(); + } + }, + _setThumbStatus: function ($thumb, status) { + var self = this; + if (!self.showPreview) { + return; + } + var icon = 'indicator' + status, msg = icon + 'Title', + css = 'file-preview-' + status.toLowerCase(), + $indicator = $thumb.find('.file-upload-indicator'), + config = self.fileActionSettings; + $thumb.removeClass('file-preview-success file-preview-error file-preview-paused file-preview-loading'); + if (status === 'Success') { + $thumb.find('.file-drag-handle').remove(); + } + $indicator.html(config[icon]); + $indicator.attr('title', config[msg]); + $thumb.addClass(css); + if (status === 'Error' && !self.retryErrorUploads) { + $thumb.find('.kv-file-upload').attr('disabled', true); + } + }, + _setProgressCancelled: function () { + var self = this; + self._setProgress(101, self.$progress, self.msgCancelled); + }, + _setProgress: function (p, $el, error, stats) { + var self = this; + $el = $el || self.$progress; + if (!$el.length) { + return; + } + var pct = Math.min(p, 100), out, pctLimit = self.progressUploadThreshold, + t = p <= 100 ? self.progressTemplate : self.progressCompleteTemplate, + template = pct < 100 ? self.progressTemplate : + (error ? (self.paused ? self.progressPauseTemplate : self.progressErrorTemplate) : t); + if (p >= 100) { + stats = ''; + } + if (!$h.isEmpty(template)) { + if (pctLimit && pct > pctLimit && p <= 100) { + out = template.setTokens({'percent': pctLimit, 'status': self.msgUploadThreshold}); + } else { + out = template.setTokens({'percent': pct, 'status': (p > 100 ? self.msgUploadEnd : pct + '%')}); + } + stats = stats || ''; + out = out.setTokens({stats: stats}); + $el.html(out); + if (error) { + $el.find('[role="progressbar"]').html(error); + } + } + }, + _setFileDropZoneTitle: function () { + var self = this, $zone = self.$container.find('.file-drop-zone'), title = self.dropZoneTitle, strFiles; + if (self.isClickable) { + strFiles = $h.isEmpty(self.$element.attr('multiple')) ? self.fileSingle : self.filePlural; + title += self.dropZoneClickTitle.replace('{files}', strFiles); + } + $zone.find('.' + self.dropZoneTitleClass).remove(); + if (!self.showPreview || $zone.length === 0 || self.fileManager.count() > 0 || !self.dropZoneEnabled || + (!self.isAjaxUpload && self.$element.files)) { + return; + } + if ($zone.find($h.FRAMES).length === 0 && $h.isEmpty(self.defaultPreviewContent)) { + $zone.prepend('
    ' + title + '
    '); + } + self.$container.removeClass('file-input-new'); + $h.addCss(self.$container, 'file-input-ajax-new'); + }, + _getStats: function (stats) { + var self = this, pendingTime, t; + if (!self.showUploadStats || !stats || !stats.bitrate) { + return ''; + } + t = self._getLayoutTemplate('stats'); + pendingTime = (!stats.elapsed || !stats.bps) ? self.msgCalculatingTime : + self.msgPendingTime.setTokens({time: $h.getElapsed(Math.ceil(stats.pendingBytes / stats.bps))}); + + return t.setTokens({ + uploadSpeed: stats.bitrate, + pendingTime: pendingTime + }); + }, + _setResumableProgress: function (pct, stats, $thumb) { + var self = this, rm = self.resumableManager, obj = $thumb ? rm : self, + $prog = $thumb ? $thumb.find('.file-thumb-progress') : null; + if (obj.lastProgress === 0) { + obj.lastProgress = pct; + } + if (pct < obj.lastProgress) { + pct = obj.lastProgress; + } + self._setProgress(pct, $prog, null, self._getStats(stats)); + obj.lastProgress = pct; + }, + _setFileUploadStats: function (id, pct, total, stats) { + var self = this, $prog = self.$progress; + if (!self.showPreview && (!$prog || !$prog.length)) { + return; + } + var fm = self.fileManager, $thumb = fm.getThumb(id), pctTot, rm = self.resumableManager, + totUpSize = 0, totSize = fm.getTotalSize(), totStats = $.extend(true, {}, stats); + if (self.enableResumableUpload) { + var loaded = stats.loaded, currUplSize = rm.getUploadedSize(), currTotSize = rm.file.size, totLoaded; + loaded += currUplSize; + totLoaded = fm.uploadedSize + loaded; + pct = $h.round(100 * loaded / currTotSize); + stats.pendingBytes = currTotSize - currUplSize; + self._setResumableProgress(pct, stats, $thumb); + pctTot = Math.floor(100 * totLoaded / totSize); + totStats.pendingBytes = totSize - totLoaded; + self._setResumableProgress(pctTot, totStats); + } else { + fm.setProgress(id, pct); + $prog = $thumb && $thumb.length ? $thumb.find('.file-thumb-progress') : null; + self._setProgress(pct, $prog, null, self._getStats(stats)); + $.each(fm.stats, function (id, cfg) { + totUpSize += cfg.loaded; + }); + totStats.pendingBytes = totSize - totUpSize; + pctTot = $h.round(totUpSize / totSize * 100); + self._setProgress(pctTot, null, null, self._getStats(totStats)); + } + }, + _validateMinCount: function () { + var self = this, len = self.isAjaxUpload ? self.fileManager.count() : self._inputFileCount(); + if (self.validateInitialCount && self.minFileCount > 0 && self._getFileCount(len - 1) < self.minFileCount) { + self._noFilesError({}); + return false; + } + return true; + }, + _getFileCount: function (fileCount) { + var self = this, addCount = 0; + if (self.validateInitialCount && !self.overwriteInitial) { + addCount = self.previewCache.count(true); + fileCount += addCount; + } + return fileCount; + }, + _getFileId: function (file) { + return $h.getFileId(file, this.generateFileId); + }, + _getFileName: function (file, defaultValue) { + var self = this, fileName = $h.getFileName(file); + return fileName ? self.slug(fileName) : defaultValue; + }, + _getFileNames: function (skipNull) { + var self = this; + return self.filenames.filter(function (n) { + return (skipNull ? n !== undefined : n !== undefined && n !== null); + }); + }, + _setPreviewError: function ($thumb, keepFile) { + var self = this, removeFrame = self.removeFromPreviewOnError && !self.retryErrorUploads; + if (!keepFile || removeFrame) { + self.fileManager.remove($thumb); + } + if (!self.showPreview) { + return; + } + if (removeFrame) { + $thumb.remove(); + return; + } else { + self._setThumbStatus($thumb, 'Error'); + } + self._refreshUploadButton($thumb); + }, + _refreshUploadButton: function ($thumb) { + var self = this, $btn = $thumb.find('.kv-file-upload'), cfg = self.fileActionSettings, + icon = cfg.uploadIcon, title = cfg.uploadTitle; + if (!$btn.length) { + return; + } + if (self.retryErrorUploads) { + icon = cfg.uploadRetryIcon; + title = cfg.uploadRetryTitle; + } + $btn.attr('title', title).html(icon); + }, + _checkDimensions: function (i, chk, $img, $thumb, fname, type, params) { + var self = this, msg, dim, tag = chk === 'Small' ? 'min' : 'max', limit = self[tag + 'Image' + type], + $imgEl, isValid; + if ($h.isEmpty(limit) || !$img.length) { + return; + } + $imgEl = $img[0]; + dim = (type === 'Width') ? $imgEl.naturalWidth || $imgEl.width : $imgEl.naturalHeight || $imgEl.height; + isValid = chk === 'Small' ? dim >= limit : dim <= limit; + if (isValid) { + return; + } + msg = self['msgImage' + type + chk].setTokens({'name': fname, 'size': limit}); + self._showFileError(msg, params); + self._setPreviewError($thumb); + }, + _getExifObj: function (data) { + var self = this, exifObj = null, error = $h.logMessages.exifWarning; + if (data.slice(0, 23) !== 'data:image/jpeg;base64,' && data.slice(0, 22) !== 'data:image/jpg;base64,') { + exifObj = null; + return; + } + try { + exifObj = window.piexif ? window.piexif.load(data) : null; + } catch (err) { + exifObj = null; + error = err && err.message || ''; + } + if (!exifObj) { + self._log($h.logMessages.badExifParser, {details: error}); + } + return exifObj; + }, + setImageOrientation: function ($img, $zoomImg, value, $thumb) { + var self = this, invalidImg = !$img || !$img.length, invalidZoomImg = !$zoomImg || !$zoomImg.length, $mark, + isHidden = false, $div, zoomOnly = invalidImg && $thumb && $thumb.attr('data-template') === 'image', ev; + if (invalidImg && invalidZoomImg) { + return; + } + ev = 'load.fileinputimageorient'; + if (zoomOnly) { + $img = $zoomImg; + $zoomImg = null; + $img.css(self.previewSettings.image); + $div = $(document.createElement('div')).appendTo($thumb.find('.kv-file-content')); + $mark = $(document.createElement('span')).insertBefore($img); + $img.css('visibility', 'hidden').removeClass('file-zoom-detail').appendTo($div); + } else { + isHidden = !$img.is(':visible'); + } + $img.off(ev).on(ev, function () { + if (isHidden) { + self.$preview.removeClass('hide-content'); + $thumb.find('.kv-file-content').css('visibility', 'hidden'); + } + var img = $img.get(0), zoomImg = $zoomImg && $zoomImg.length ? $zoomImg.get(0) : null, + h = img.offsetHeight, w = img.offsetWidth, r = $h.getRotation(value); + if (isHidden) { + $thumb.find('.kv-file-content').css('visibility', 'visible'); + self.$preview.addClass('hide-content'); + } + $img.data('orientation', value); + if (zoomImg) { + $zoomImg.data('orientation', value); + } + if (value < 5) { + $h.setTransform(img, r); + $h.setTransform(zoomImg, r); + return; + } + var offsetAngle = Math.atan(w / h), origFactor = Math.sqrt(Math.pow(h, 2) + Math.pow(w, 2)), + scale = !origFactor ? 1 : (h / Math.cos(Math.PI / 2 + offsetAngle)) / origFactor, + s = ' scale(' + Math.abs(scale) + ')'; + $h.setTransform(img, r + s); + $h.setTransform(zoomImg, r + s); + if (zoomOnly) { + $img.css('visibility', 'visible').insertAfter($mark).addClass('file-zoom-detail'); + $mark.remove(); + $div.remove(); + } + }); + }, + _validateImageOrientation: function ($img, file, previewId, fileId, caption, ftype, fsize, iData) { + var self = this, exifObj, value, autoOrientImage = self.autoOrientImage; + exifObj = autoOrientImage ? self._getExifObj(iData) : null; + value = exifObj ? exifObj['0th'][piexif.ImageIFD.Orientation] : null; // jshint ignore:line + if (!value) { + self._validateImage(previewId, fileId, caption, ftype, fsize, iData, exifObj); + return; + } + self.setImageOrientation($img, $('#zoom-' + previewId + ' img'), value, $('#' + previewId)); + self._raise('fileimageoriented', {'$img': $img, 'file': file}); + self._validateImage(previewId, fileId, caption, ftype, fsize, iData, exifObj); + }, + _validateImage: function (previewId, fileId, fname, ftype, fsize, iData, exifObj) { + var self = this, $preview = self.$preview, params, w1, w2, $thumb = $preview.find('#' + previewId), + i = $thumb.attr('data-fileindex'), $img = $thumb.find('img'); + fname = fname || 'Untitled'; + $img.one('load', function () { + w1 = $thumb.width(); + w2 = $preview.width(); + if (w1 > w2) { + $img.css('width', '100%'); + } + params = {ind: i, id: previewId, fileId: fileId}; + self._checkDimensions(i, 'Small', $img, $thumb, fname, 'Width', params); + self._checkDimensions(i, 'Small', $img, $thumb, fname, 'Height', params); + if (!self.resizeImage) { + self._checkDimensions(i, 'Large', $img, $thumb, fname, 'Width', params); + self._checkDimensions(i, 'Large', $img, $thumb, fname, 'Height', params); + } + self._raise('fileimageloaded', [previewId]); + self.fileManager.addImage(fileId, { + ind: i, + img: $img, + thumb: $thumb, + pid: previewId, + typ: ftype, + siz: fsize, + validated: false, + imgData: iData, + exifObj: exifObj + }); + $thumb.data('exif', exifObj); + self._validateAllImages(); + }).one('error', function () { + self._raise('fileimageloaderror', [previewId]); + }).each(function () { + if (this.complete) { + $(this).trigger('load'); + } else { + if (this.error) { + $(this).trigger('error'); + } + } + }); + }, + _validateAllImages: function () { + var self = this, counter = {val: 0}, numImgs = self.fileManager.getImageCount(), fsize, + minSize = self.resizeIfSizeMoreThan; + if (numImgs !== self.fileManager.totalImages) { + return; + } + self._raise('fileimagesloaded'); + if (!self.resizeImage) { + return; + } + $.each(self.fileManager.loadedImages, function (id, config) { + if (!config.validated) { + fsize = config.siz; + if (fsize && fsize > minSize * 1000) { + self._getResizedImage(id, config, counter, numImgs); + } + config.validated = true; + } + }); + }, + _getResizedImage: function (id, config, counter, numImgs) { + var self = this, img = $(config.img)[0], width = img.naturalWidth, height = img.naturalHeight, blob, + ratio = 1, maxWidth = self.maxImageWidth || width, maxHeight = self.maxImageHeight || height, + isValidImage = !!(width && height), chkWidth, chkHeight, canvas = self.imageCanvas, dataURI, + context = self.imageCanvasContext, type = config.typ, pid = config.pid, ind = config.ind, + $thumb = config.thumb, throwError, msg, exifObj = config.exifObj, exifStr, file, params, evParams; + throwError = function (msg, params, ev) { + if (self.isAjaxUpload) { + self._showFileError(msg, params, ev); + } else { + self._showError(msg, params, ev); + } + self._setPreviewError($thumb); + }; + file = self.fileManager.getFile(id); + params = {id: pid, 'index': ind, fileId: id}; + evParams = [id, pid, ind]; + if (!file || !isValidImage || (width <= maxWidth && height <= maxHeight)) { + if (isValidImage && file) { + self._raise('fileimageresized', evParams); + } + counter.val++; + if (counter.val === numImgs) { + self._raise('fileimagesresized'); + } + if (!isValidImage) { + throwError(self.msgImageResizeError, params, 'fileimageresizeerror'); + return; + } + } + type = type || self.resizeDefaultImageType; + chkWidth = width > maxWidth; + chkHeight = height > maxHeight; + if (self.resizePreference === 'width') { + ratio = chkWidth ? maxWidth / width : (chkHeight ? maxHeight / height : 1); + } else { + ratio = chkHeight ? maxHeight / height : (chkWidth ? maxWidth / width : 1); + } + self._resetCanvas(); + width *= ratio; + height *= ratio; + canvas.width = width; + canvas.height = height; + try { + context.drawImage(img, 0, 0, width, height); + dataURI = canvas.toDataURL(type, self.resizeQuality); + if (exifObj) { + exifStr = window.piexif.dump(exifObj); + dataURI = window.piexif.insert(exifStr, dataURI); + } + blob = $h.dataURI2Blob(dataURI); + self.fileManager.setFile(id, blob); + self._raise('fileimageresized', evParams); + counter.val++; + if (counter.val === numImgs) { + self._raise('fileimagesresized', [undefined, undefined]); + } + if (!(blob instanceof Blob)) { + throwError(self.msgImageResizeError, params, 'fileimageresizeerror'); + } + } + catch (err) { + counter.val++; + if (counter.val === numImgs) { + self._raise('fileimagesresized', [undefined, undefined]); + } + msg = self.msgImageResizeException.replace('{errors}', err.message); + throwError(msg, params, 'fileimageresizeexception'); + } + }, + _initBrowse: function ($container) { + var self = this, $el = self.$element; + if (self.showBrowse) { + self.$btnFile = $container.find('.btn-file').append($el); + } else { + $el.appendTo($container).attr('tabindex', -1); + $h.addCss($el, 'file-no-browse'); + } + }, + _initClickable: function () { + var self = this, $zone, $tmpZone; + if (!self.isClickable) { + return; + } + $zone = self.$dropZone; + if (!self.isAjaxUpload) { + $tmpZone = self.$preview.find('.file-default-preview'); + if ($tmpZone.length) { + $zone = $tmpZone; + } + } + + $h.addCss($zone, 'clickable'); + $zone.attr('tabindex', -1); + self._handler($zone, 'click', function (e) { + var $tar = $(e.target); + if (!$(self.elErrorContainer + ':visible').length && + (!$tar.parents('.file-preview-thumbnails').length || $tar.parents( + '.file-default-preview').length)) { + self.$element.data('zoneClicked', true).trigger('click'); + $zone.blur(); + } + }); + }, + _initCaption: function () { + var self = this, cap = self.initialCaption || ''; + if (self.overwriteInitial || $h.isEmpty(cap)) { + self.$caption.val(''); + return false; + } + self._setCaption(cap); + return true; + }, + _setCaption: function (content, isError) { + var self = this, title, out, icon, n, cap, file; + if (!self.$caption.length) { + return; + } + self.$captionContainer.removeClass('icon-visible'); + if (isError) { + title = $('
    ' + self.msgValidationError + '
    ').text(); + n = self.fileManager.count(); + if (n) { + file = self.fileManager.getFirstFile(); + cap = n === 1 && file ? file.nameFmt : self._getMsgSelected(n); + } else { + cap = self._getMsgSelected(self.msgNo); + } + out = $h.isEmpty(content) ? cap : content; + icon = '' + self.msgValidationErrorIcon + ''; + } else { + if ($h.isEmpty(content)) { + return; + } + title = $('
    ' + content + '
    ').text(); + out = title; + icon = self._getLayoutTemplate('fileIcon'); + } + self.$captionContainer.addClass('icon-visible'); + self.$caption.attr('title', title).val(out); + self.$captionIcon.html(icon); + }, + _createContainer: function () { + var self = this, attribs = {'class': 'file-input file-input-new' + (self.rtl ? ' kv-rtl' : '')}, + $container = $(document.createElement('div')).attr(attribs).html(self._renderMain()); + $container.insertBefore(self.$element); + self._initBrowse($container); + if (self.theme) { + $container.addClass('theme-' + self.theme); + } + return $container; + }, + _refreshContainer: function () { + var self = this, $container = self.$container, $el = self.$element; + $el.insertAfter($container); + $container.html(self._renderMain()); + self._initBrowse($container); + self._validateDisabled(); + }, + _validateDisabled: function () { + var self = this; + self.$caption.attr({readonly: self.isDisabled}); + }, + _renderMain: function () { + var self = this, + dropCss = self.dropZoneEnabled ? ' file-drop-zone' : 'file-drop-disabled', + close = !self.showClose ? '' : self._getLayoutTemplate('close'), + preview = !self.showPreview ? '' : self._getLayoutTemplate('preview') + .setTokens({'class': self.previewClass, 'dropClass': dropCss}), + css = self.isDisabled ? self.captionClass + ' file-caption-disabled' : self.captionClass, + caption = self.captionTemplate.setTokens({'class': css + ' kv-fileinput-caption'}); + return self.mainTemplate.setTokens({ + 'class': self.mainClass + (!self.showBrowse && self.showCaption ? ' no-browse' : ''), + 'preview': preview, + 'close': close, + 'caption': caption, + 'upload': self._renderButton('upload'), + 'remove': self._renderButton('remove'), + 'cancel': self._renderButton('cancel'), + 'pause': self._renderButton('pause'), + 'browse': self._renderButton('browse') + }); + + }, + _renderButton: function (type) { + var self = this, tmplt = self._getLayoutTemplate('btnDefault'), css = self[type + 'Class'], + title = self[type + 'Title'], icon = self[type + 'Icon'], label = self[type + 'Label'], + status = self.isDisabled ? ' disabled' : '', btnType = 'button'; + switch (type) { + case 'remove': + if (!self.showRemove) { + return ''; + } + break; + case 'cancel': + if (!self.showCancel) { + return ''; + } + css += ' kv-hidden'; + break; + case 'pause': + if (!self.showPause) { + return ''; + } + css += ' kv-hidden'; + break; + case 'upload': + if (!self.showUpload) { + return ''; + } + if (self.isAjaxUpload && !self.isDisabled) { + tmplt = self._getLayoutTemplate('btnLink').replace('{href}', self.uploadUrl); + } else { + btnType = 'submit'; + } + break; + case 'browse': + if (!self.showBrowse) { + return ''; + } + tmplt = self._getLayoutTemplate('btnBrowse'); + break; + default: + return ''; + } + + css += type === 'browse' ? ' btn-file' : ' fileinput-' + type + ' fileinput-' + type + '-button'; + if (!$h.isEmpty(label)) { + label = ' ' + label + ''; + } + return tmplt.setTokens({ + 'type': btnType, 'css': css, 'title': title, 'status': status, 'icon': icon, 'label': label + }); + }, + _renderThumbProgress: function () { + var self = this; + return '
    ' + + self.progressInfoTemplate.setTokens({percent: 101, status: self.msgUploadBegin, stats: ''}) + + '
    '; + }, + _renderFileFooter: function (cat, caption, size, width, isError) { + var self = this, config = self.fileActionSettings, rem = config.showRemove, drg = config.showDrag, + upl = config.showUpload, zoom = config.showZoom, out, params, + template = self._getLayoutTemplate('footer'), tInd = self._getLayoutTemplate('indicator'), + ind = isError ? config.indicatorError : config.indicatorNew, + title = isError ? config.indicatorErrorTitle : config.indicatorNewTitle, + indicator = tInd.setTokens({'indicator': ind, 'indicatorTitle': title}); + size = self._getSize(size); + params = {type: cat, caption: caption, size: size, width: width, progress: '', indicator: indicator}; + if (self.isAjaxUpload) { + params.progress = self._renderThumbProgress(); + params.actions = self._renderFileActions(params, upl, false, rem, zoom, drg, false, false, false); + } else { + params.actions = self._renderFileActions(params, false, false, false, zoom, drg, false, false, false); + } + out = template.setTokens(params); + out = $h.replaceTags(out, self.previewThumbTags); + return out; + }, + _renderFileActions: function ( + cfg, + showUpl, + showDwn, + showDel, + showZoom, + showDrag, + disabled, + url, + key, + isInit, + dUrl, + dFile + ) { + var self = this; + if (!cfg.type && isInit) { + cfg.type = 'image'; + } + if (self.enableResumableUpload) { + showUpl = false; + } else { + if (typeof showUpl === 'function') { + showUpl = showUpl(cfg); + } + } + if (typeof showDwn === 'function') { + showDwn = showDwn(cfg); + } + if (typeof showDel === 'function') { + showDel = showDel(cfg); + } + if (typeof showZoom === 'function') { + showZoom = showZoom(cfg); + } + if (typeof showDrag === 'function') { + showDrag = showDrag(cfg); + } + if (!showUpl && !showDwn && !showDel && !showZoom && !showDrag) { + return ''; + } + var vUrl = url === false ? '' : ' data-url="' + url + '"', btnZoom = '', btnDrag = '', css, + vKey = key === false ? '' : ' data-key="' + key + '"', btnDelete = '', btnUpload = '', btnDownload = '', + template = self._getLayoutTemplate('actions'), config = self.fileActionSettings, + otherButtons = self.otherActionButtons.setTokens({'dataKey': vKey, 'key': key}), + removeClass = disabled ? config.removeClass + ' disabled' : config.removeClass; + if (showDel) { + btnDelete = self._getLayoutTemplate('actionDelete').setTokens({ + 'removeClass': removeClass, + 'removeIcon': config.removeIcon, + 'removeTitle': config.removeTitle, + 'dataUrl': vUrl, + 'dataKey': vKey, + 'key': key + }); + } + if (showUpl) { + btnUpload = self._getLayoutTemplate('actionUpload').setTokens({ + 'uploadClass': config.uploadClass, + 'uploadIcon': config.uploadIcon, + 'uploadTitle': config.uploadTitle + }); + } + if (showDwn) { + btnDownload = self._getLayoutTemplate('actionDownload').setTokens({ + 'downloadClass': config.downloadClass, + 'downloadIcon': config.downloadIcon, + 'downloadTitle': config.downloadTitle, + 'downloadUrl': dUrl || self.initialPreviewDownloadUrl + }); + btnDownload = btnDownload.setTokens({'filename': dFile, 'key': key}); + } + if (showZoom) { + btnZoom = self._getLayoutTemplate('actionZoom').setTokens({ + 'zoomClass': config.zoomClass, + 'zoomIcon': config.zoomIcon, + 'zoomTitle': config.zoomTitle + }); + } + if (showDrag && isInit) { + css = 'drag-handle-init ' + config.dragClass; + btnDrag = self._getLayoutTemplate('actionDrag').setTokens({ + 'dragClass': css, + 'dragTitle': config.dragTitle, + 'dragIcon': config.dragIcon + }); + } + return template.setTokens({ + 'delete': btnDelete, + 'upload': btnUpload, + 'download': btnDownload, + 'zoom': btnZoom, + 'drag': btnDrag, + 'other': otherButtons + }); + }, + _browse: function (e) { + var self = this; + if (e && e.isDefaultPrevented() || !self._raise('filebrowse')) { + return; + } + if (self.isError && !self.isAjaxUpload) { + self.clear(); + } + self.$captionContainer.focus(); + }, + _change: function (e) { + var self = this; + if (self.changeTriggered) { + return; + } + var $el = self.$element, isDragDrop = arguments.length > 1, isAjaxUpload = self.isAjaxUpload, + tfiles, files = isDragDrop ? arguments[1] : $el.get(0).files, total, + maxCount = !isAjaxUpload && $h.isEmpty($el.attr('multiple')) ? 1 : self.maxFileCount, + len, ctr = self.fileManager.count(), isSingleUpload = $h.isEmpty($el.attr('multiple')), + flagSingle = (isSingleUpload && ctr > 0), + throwError = function (mesg, file, previewId, index) { + var p1 = $.extend(true, {}, self._getOutData(null, {}, {}, files), {id: previewId, index: index}), + p2 = {id: previewId, index: index, file: file, files: files}; + return isAjaxUpload ? self._showFileError(mesg, p1) : self._showError(mesg, p2); + }, + maxCountCheck = function (n, m) { + var msg = self.msgFilesTooMany.replace('{m}', m).replace('{n}', n); + self.isError = throwError(msg, null, null, null); + self.$captionContainer.removeClass('icon-visible'); + self._setCaption('', true); + self.$container.removeClass('file-input-new file-input-ajax-new'); + }; + self.reader = null; + self._resetUpload(); + self._hideFileIcon(); + if (self.dropZoneEnabled) { + self.$container.find('.file-drop-zone .' + self.dropZoneTitleClass).remove(); + } + if (!isAjaxUpload) { + if (e.target && e.target.files === undefined) { + files = e.target.value ? [{name: e.target.value.replace(/^.+\\/, '')}] : []; + } else { + files = e.target.files || {}; + } + } + tfiles = files; + if ($h.isEmpty(tfiles) || tfiles.length === 0) { + if (!isAjaxUpload) { + self.clear(); + } + self._raise('fileselectnone'); + return; + } + self._resetErrors(); + len = tfiles.length; + total = self._getFileCount(isAjaxUpload ? (self.fileManager.count() + len) : len); + if (maxCount > 0 && total > maxCount) { + if (!self.autoReplace || len > maxCount) { + maxCountCheck((self.autoReplace && len > maxCount ? len : total), maxCount); + return; + } + if (total > maxCount) { + self._resetPreviewThumbs(isAjaxUpload); + } + } else { + if (!isAjaxUpload || flagSingle) { + self._resetPreviewThumbs(false); + if (flagSingle) { + self.clearFileStack(); + } + } else { + if (isAjaxUpload && ctr === 0 && (!self.previewCache.count(true) || self.overwriteInitial)) { + self._resetPreviewThumbs(true); + } + } + } + self.readFiles(tfiles); + }, + _abort: function (params) { + var self = this, data; + if (self.ajaxAborted && typeof self.ajaxAborted === 'object' && self.ajaxAborted.message !== undefined) { + data = $.extend(true, {}, self._getOutData(null), params); + data.abortData = self.ajaxAborted.data || {}; + data.abortMessage = self.ajaxAborted.message; + self._setProgress(101, self.$progress, self.msgCancelled); + self._showFileError(self.ajaxAborted.message, data, 'filecustomerror'); + self.cancel(); + return true; + } + return !!self.ajaxAborted; + }, + _resetFileStack: function () { + var self = this, i = 0; + self._getThumbs().each(function () { + var $thumb = $(this), ind = $thumb.attr('data-fileindex'), pid = $thumb.attr('id'); + if (ind === '-1' || ind === -1) { + return; + } + if (!self.fileManager.getFile($thumb.attr('data-fileid'))) { + $thumb.attr({'id': self.previewInitId + '-' + i, 'data-fileindex': i}); + i++; + } else { + $thumb.attr({'id': 'uploaded-' + $h.uniqId(), 'data-fileindex': '-1'}); + } + self.$preview.find('#zoom-' + pid).attr({ + 'id': 'zoom-' + $thumb.attr('id'), + 'data-fileindex': $thumb.attr('data-fileindex') + }); + }); + }, + _isFileSelectionValid: function (cnt) { + var self = this; + cnt = cnt || 0; + if (self.required && !self.getFilesCount()) { + self.$errorContainer.html(''); + self._showFileError(self.msgFileRequired); + return false; + } + if (self.minFileCount > 0 && self._getFileCount(cnt) < self.minFileCount) { + self._noFilesError({}); + return false; + } + return true; + }, + clearFileStack: function () { + var self = this; + self.fileManager.clear(); + self._initResumableUpload(); + if (self.enableResumableUpload) { + if (self.showPause === null) { + self.showPause = true; + } + if (self.showCancel === null) { + self.showCancel = false; + } + } else { + self.showPause = false; + if (self.showCancel === null) { + self.showCancel = true; + } + } + return self.$element; + }, + getFileStack: function () { + return this.fileManager.stack; + }, + getFileList: function () { + return this.fileManager.list(); + }, + getFilesCount: function () { + var self = this, len = self.isAjaxUpload ? self.fileManager.count() : self._inputFileCount(); + return self._getFileCount(len); + }, + readFiles: function (files) { + this.reader = new FileReader(); + var self = this, $el = self.$element, reader = self.reader, + $container = self.$previewContainer, $status = self.$previewStatus, msgLoading = self.msgLoading, + msgProgress = self.msgProgress, previewInitId = self.previewInitId, numFiles = files.length, + settings = self.fileTypeSettings, ctr = self.fileManager.count(), readFile, + fileTypes = self.allowedFileTypes, typLen = fileTypes ? fileTypes.length : 0, + fileExt = self.allowedFileExtensions, strExt = $h.isEmpty(fileExt) ? '' : fileExt.join(', '), + throwError = function (msg, file, previewId, index, fileId) { + var p1 = $.extend(true, {}, self._getOutData(null, {}, {}, files), + {id: previewId, index: index, fileId: fileId}), $thumb = $('#' + previewId), + p2 = {id: previewId, index: index, fileId: fileId, file: file, files: files}; + self._previewDefault(file, previewId, true); + if (self.isAjaxUpload) { + setTimeout(function () { + readFile(index + 1); + }, self.processDelay); + } else { + numFiles = 0; + } + self._initFileActions(); + $thumb.remove(); + self.isError = self.isAjaxUpload ? self._showFileError(msg, p1) : self._showError(msg, p2); + self._updateFileDetails(numFiles); + }; + self.fileManager.clearImages(); + $.each(files, function (key, file) { + var func = self.fileTypeSettings.image; + if (func && func(file.type)) { + self.fileManager.totalImages++; + } + }); + readFile = function (i) { + if ($h.isEmpty($el.attr('multiple'))) { + numFiles = 1; + } + if (i >= numFiles) { + if (self.isAjaxUpload && self.fileManager.count() > 0) { + self._raise('filebatchselected', [self.fileManager.stack]); + } else { + self._raise('filebatchselected', [files]); + } + $container.removeClass('file-thumb-loading'); + $status.html(''); + return; + } + var node = ctr + i, previewId = previewInitId + '-' + node, file = files[i], fSizeKB, j, msg, $thumb, + fnText = settings.text, fnImage = settings.image, fnHtml = settings.html, typ, chk, typ1, typ2, + caption = self._getFileName(file, ''), fileSize = (file && file.size || 0) / 1000, + fileExtExpr = '', previewData = $h.createObjectURL(file), fileCount = 0, + strTypes = '', fileId, + func, knownTypes = 0, isText, isHtml, isImage, txtFlag, processFileLoaded = function () { + var msg = msgProgress.setTokens({ + 'index': i + 1, + 'files': numFiles, + 'percent': 50, + 'name': caption + }); + setTimeout(function () { + $status.html(msg); + self._updateFileDetails(numFiles); + readFile(i + 1); + }, self.processDelay); + self._raise('fileloaded', [file, previewId, i, reader]); + }; + if (!file) { + return; + } + fileId = self.fileManager.getId(file); + if (typLen > 0) { + for (j = 0; j < typLen; j++) { + typ1 = fileTypes[j]; + typ2 = self.msgFileTypes[typ1] || typ1; + strTypes += j === 0 ? typ2 : ', ' + typ2; + } + } + if (caption === false) { + readFile(i + 1); + return; + } + if (caption.length === 0) { + msg = self.msgInvalidFileName.replace('{name}', $h.htmlEncode($h.getFileName(file), '[unknown]')); + throwError(msg, file, previewId, i, fileId); + return; + } + if (!$h.isEmpty(fileExt)) { + fileExtExpr = new RegExp('\\.(' + fileExt.join('|') + ')$', 'i'); + } + fSizeKB = fileSize.toFixed(2); + if (self.maxFileSize > 0 && fileSize > self.maxFileSize) { + msg = self.msgSizeTooLarge.setTokens({ + 'name': caption, + 'size': fSizeKB, + 'maxSize': self.maxFileSize + }); + throwError(msg, file, previewId, i, fileId); + return; + } + if (self.minFileSize !== null && fileSize <= $h.getNum(self.minFileSize)) { + msg = self.msgSizeTooSmall.setTokens({ + 'name': caption, + 'size': fSizeKB, + 'minSize': self.minFileSize + }); + throwError(msg, file, previewId, i, fileId); + return; + } + if (!$h.isEmpty(fileTypes) && $h.isArray(fileTypes)) { + for (j = 0; j < fileTypes.length; j += 1) { + typ = fileTypes[j]; + func = settings[typ]; + fileCount += !func || (typeof func !== 'function') ? 0 : (func(file.type, + $h.getFileName(file)) ? 1 : 0); + } + if (fileCount === 0) { + msg = self.msgInvalidFileType.setTokens({name: caption, types: strTypes}); + throwError(msg, file, previewId, i, fileId); + return; + } + } + if (fileCount === 0 && !$h.isEmpty(fileExt) && $h.isArray(fileExt) && !$h.isEmpty(fileExtExpr)) { + chk = $h.compare(caption, fileExtExpr); + fileCount += $h.isEmpty(chk) ? 0 : chk.length; + if (fileCount === 0) { + msg = self.msgInvalidFileExtension.setTokens({name: caption, extensions: strExt}); + throwError(msg, file, previewId, i, fileId); + return; + } + } + if (self.isAjaxUpload && self.fileManager.exists(fileId)) { + msg = self.msgDuplicateFile.setTokens({name: caption, size: fSizeKB}); + throwError(msg, file, previewId, i, fileId); + $thumb = $('#' + previewId); + if ($thumb && $thumb.length) { + $thumb.remove(); + } + return; + } + if (!self.canPreview(file)) { + if (self.isAjaxUpload) { + self.fileManager.add(file); + } + if (self.showPreview) { + $container.addClass('file-thumb-loading'); + self._previewDefault(file, previewId); + self._initFileActions(); + } + setTimeout(function () { + self._updateFileDetails(numFiles); + readFile(i + 1); + self._raise('fileloaded', [file, previewId, i]); + }, 10); + return; + } + isText = fnText(file.type, caption); + isHtml = fnHtml(file.type, caption); + isImage = fnImage(file.type, caption); + $status.html(msgLoading.replace('{index}', i + 1).replace('{files}', numFiles)); + $container.addClass('file-thumb-loading'); + reader.onerror = function (evt) { + self._errorHandler(evt, caption); + }; + reader.onload = function (theFile) { + var hex, fileInfo, uint, byte, bytes = [], contents, mime, readTextImage = function (textFlag) { + var newReader = new FileReader(); + newReader.onerror = function (theFileNew) { + self._errorHandler(theFileNew, caption); + }; + newReader.onload = function (theFileNew) { + self._previewFile(i, file, theFileNew, previewId, previewData, fileInfo); + self._initFileActions(); + processFileLoaded(); + }; + if (textFlag) { + newReader.readAsText(file, self.textEncoding); + } else { + newReader.readAsDataURL(file); + } + }; + fileInfo = {'name': caption, 'type': file.type}; + $.each(settings, function (k, f) { + if (k !== 'object' && k !== 'other' && typeof f === 'function' && f(file.type, caption)) { + knownTypes++; + } + }); + if (knownTypes === 0) {// auto detect mime types from content if no known file types detected + uint = new Uint8Array(theFile.target.result); + for (j = 0; j < uint.length; j++) { + byte = uint[j].toString(16); + bytes.push(byte); + } + hex = bytes.join('').toLowerCase().substring(0, 8); + mime = $h.getMimeType(hex, '', ''); + if ($h.isEmpty(mime)) { // look for ascii text content + contents = $h.arrayBuffer2String(reader.result); + mime = $h.isSvg(contents) ? 'image/svg+xml' : $h.getMimeType(hex, contents, file.type); + } + fileInfo = {'name': caption, 'type': mime}; + isText = fnText(mime, ''); + isHtml = fnHtml(mime, ''); + isImage = fnImage(mime, ''); + txtFlag = isText || isHtml; + if (txtFlag || isImage) { + readTextImage(txtFlag); + return; + } + } + self._previewFile(i, file, theFile, previewId, previewData, fileInfo); + self._initFileActions(); + processFileLoaded(); + }; + reader.onprogress = function (data) { + if (data.lengthComputable) { + var fact = (data.loaded / data.total) * 100, progress = Math.ceil(fact); + msg = msgProgress.setTokens({ + 'index': i + 1, + 'files': numFiles, + 'percent': progress, + 'name': caption + }); + setTimeout(function () { + $status.html(msg); + }, self.processDelay); + } + }; + + if (isText || isHtml) { + reader.readAsText(file, self.textEncoding); + } else { + if (isImage) { + reader.readAsDataURL(file); + } else { + reader.readAsArrayBuffer(file); + } + } + self.fileManager.add(file); + }; + + readFile(0); + self._updateFileDetails(numFiles, false); + }, + lock: function () { + var self = this, $container = self.$container; + self._resetErrors(); + self.disable(); + $container.addClass('is-locked'); + if (self.showCancel) { + $container.find('.fileinput-cancel').show(); + } + if (self.showPause) { + $container.find('.fileinput-pause').show(); + } + self._raise('filelock', [self.fileManager.stack, self._getExtraData()]); + return self.$element; + }, + unlock: function (reset) { + var self = this, $container = self.$container; + if (reset === undefined) { + reset = true; + } + self.enable(); + $container.removeClass('is-locked'); + if (self.showCancel) { + $container.find('.fileinput-cancel').hide(); + } + if (self.showPause) { + $container.find('.fileinput-pause').hide(); + } + if (reset) { + self._resetFileStack(); + } + self._raise('fileunlock', [self.fileManager.stack, self._getExtraData()]); + return self.$element; + }, + resume: function () { + var self = this, flag = false, $pr = self.$progress, rm = self.resumableManager; + if (!self.enableResumableUpload) { + return self.$element; + } + if (self.paused) { + $pr.html(self.progressPauseTemplate.setTokens({ + percent: 101, + status: self.msgUploadResume, + stats: '' + })); + } else { + flag = true; + } + self.paused = false; + if (flag) { + $pr.html(self.progressInfoTemplate.setTokens({ + percent: 101, + status: self.msgUploadBegin, + stats: '' + })); + } + setTimeout(function () { + rm.upload(); + }, self.processDelay); + return self.$element; + }, + pause: function () { + var self = this, rm = self.resumableManager, xhr = self.ajaxRequests, len = xhr.length, i, + pct = rm.getProgress(), actions = self.fileActionSettings; + if (!self.enableResumableUpload) { + return self.$element; + } + if (rm.chunkIntervalId) { + clearInterval(rm.chunkIntervalId); + } + if (self.ajaxQueueIntervalId) { + clearInterval(self.ajaxQueueIntervalId); + } + self._raise('fileuploadpaused', [self.fileManager, rm]); + if (len > 0) { + for (i = 0; i < len; i += 1) { + self.paused = true; + xhr[i].abort(); + } + } + if (self.showPreview) { + self._getThumbs().each(function () { + var $thumb = $(this), fileId = $thumb.attr('data-fileid'), t = self._getLayoutTemplate('stats'), + stats, $indicator = $thumb.find('.file-upload-indicator'); + $thumb.removeClass('file-uploading'); + if ($indicator.attr('title') === actions.indicatorLoadingTitle) { + self._setThumbStatus($thumb, 'Paused'); + stats = t.setTokens({pendingTime: self.msgPaused, uploadSpeed: ''}); + self.paused = true; + self._setProgress(pct, $thumb.find('.file-thumb-progress'), pct + '%', stats); + } + if (!self.fileManager.getFile(fileId)) { + $thumb.find('.kv-file-remove').removeClass('disabled').removeAttr('disabled'); + } + }); + } + self._setProgress(101, self.$progress, self.msgPaused); + return self.$element; + }, + cancel: function () { + var self = this, xhr = self.ajaxRequests, rm = self.resumableManager, len = xhr.length, i; + if (self.enableResumableUpload && rm.chunkIntervalId) { + clearInterval(rm.chunkIntervalId); + rm.reset(); + self._raise('fileuploadcancelled', [self.fileManager, rm]); + } else { + self._raise('fileuploadcancelled', [self.fileManager]); + } + if (self.ajaxQueueIntervalId) { + clearInterval(self.ajaxQueueIntervalId); + } + self._initAjax(); + if (len > 0) { + for (i = 0; i < len; i += 1) { + self.cancelling = true; + xhr[i].abort(); + } + } + self._getThumbs().each(function () { + var $thumb = $(this), fileId = $thumb.attr('data-fileid'), $prog = $thumb.find('.file-thumb-progress'); + $thumb.removeClass('file-uploading'); + self._setProgress(0, $prog); + $prog.hide(); + if (!self.fileManager.getFile(fileId)) { + $thumb.find('.kv-file-upload').removeClass('disabled').removeAttr('disabled'); + $thumb.find('.kv-file-remove').removeClass('disabled').removeAttr('disabled'); + } + self.unlock(); + }); + setTimeout(function () { + self._setProgressCancelled(); + }, self.processDelay); + return self.$element; + }, + clear: function () { + var self = this, cap; + if (!self._raise('fileclear')) { + return; + } + self.$btnUpload.removeAttr('disabled'); + self._getThumbs().find('video,audio,img').each(function () { + $h.cleanMemory($(this)); + }); + self._clearFileInput(); + self._resetUpload(); + self.clearFileStack(); + self._resetErrors(true); + if (self._hasInitialPreview()) { + self._showFileIcon(); + self._resetPreview(); + self._initPreviewActions(); + self.$container.removeClass('file-input-new'); + } else { + self._getThumbs().each(function () { + self._clearObjects($(this)); + }); + if (self.isAjaxUpload) { + self.previewCache.data = {}; + } + self.$preview.html(''); + cap = (!self.overwriteInitial && self.initialCaption.length > 0) ? self.initialCaption : ''; + self.$caption.attr('title', '').val(cap); + $h.addCss(self.$container, 'file-input-new'); + self._validateDefaultPreview(); + } + if (self.$container.find($h.FRAMES).length === 0) { + if (!self._initCaption()) { + self.$captionContainer.removeClass('icon-visible'); + } + } + self._hideFileIcon(); + self.$captionContainer.focus(); + self._setFileDropZoneTitle(); + self._raise('filecleared'); + return self.$element; + }, + reset: function () { + var self = this; + if (!self._raise('filereset')) { + return; + } + self.lastProgress = 0; + self._resetPreview(); + self.$container.find('.fileinput-filename').text(''); + $h.addCss(self.$container, 'file-input-new'); + if (self.getFrames().length || self.dropZoneEnabled) { + self.$container.removeClass('file-input-new'); + } + self.clearFileStack(); + self._setFileDropZoneTitle(); + return self.$element; + }, + disable: function () { + var self = this; + self.isDisabled = true; + self._raise('filedisabled'); + self.$element.attr('disabled', 'disabled'); + self.$container.find('.kv-fileinput-caption').addClass('file-caption-disabled'); + self.$container.find('.fileinput-remove, .fileinput-upload, .file-preview-frame button') + .attr('disabled', true); + $h.addCss(self.$container.find('.btn-file'), 'disabled'); + self._initDragDrop(); + return self.$element; + }, + enable: function () { + var self = this; + self.isDisabled = false; + self._raise('fileenabled'); + self.$element.removeAttr('disabled'); + self.$container.find('.kv-fileinput-caption').removeClass('file-caption-disabled'); + self.$container.find('.fileinput-remove, .fileinput-upload, .file-preview-frame button') + .removeAttr('disabled'); + self.$container.find('.btn-file').removeClass('disabled'); + self._initDragDrop(); + return self.$element; + }, + upload: function () { + var self = this, fm = self.fileManager, totLen = fm.count(), i, outData, len, + hasExtraData = !$.isEmptyObject(self._getExtraData()); + if (!self.isAjaxUpload || self.isDisabled || !self._isFileSelectionValid(totLen)) { + return; + } + self.lastProgress = 0; + self._resetUpload(); + if (totLen === 0 && !hasExtraData) { + self._showFileError(self.msgUploadEmpty); + return; + } + self.cancelling = false; + self.$progress.show(); + self.lock(); + len = fm.count(); + if (totLen === 0 && hasExtraData) { + self._setProgress(2); + self._uploadExtraOnly(); + return; + } + if (self.enableResumableUpload) { + return self.resume(); + } + if (self.uploadAsync || self.enableResumableUpload) { + outData = self._getOutData(null); + self._raise('filebatchpreupload', [outData]); + self.fileBatchCompleted = false; + self.uploadCache = {content: [], config: [], tags: [], append: true}; + for (i = 0; i < len; i++) { + self.uploadCache.content[i] = null; + self.uploadCache.config[i] = null; + self.uploadCache.tags[i] = null; + } + self.$preview.find('.file-preview-initial').removeClass($h.SORT_CSS); + self._initSortable(); + self.cacheInitialPreview = self.getPreview(); + } + self._setProgress(2); + self.hasInitData = false; + if (self.uploadAsync) { + i = 0; + $.each(fm.stack, function (id) { + self._uploadSingle(i, id, true); + i++; + }); + return; + } + self._uploadBatch(); + return self.$element; + }, + destroy: function () { + var self = this, $form = self.$form, $cont = self.$container, $el = self.$element, ns = self.namespace; + $(document).off(ns); + $(window).off(ns); + if ($form && $form.length) { + $form.off(ns); + } + if (self.isAjaxUpload) { + self._clearFileInput(); + } + self._cleanup(); + self._initPreviewCache(); + $el.insertBefore($cont).off(ns).removeData(); + $cont.off().remove(); + return $el; + }, + refresh: function (options) { + var self = this, $el = self.$element; + if (typeof options !== 'object' || $h.isEmpty(options)) { + options = self.options; + } else { + options = $.extend(true, {}, self.options, options); + } + self._init(options, true); + self._listen(); + return $el; + }, + zoom: function (frameId) { + var self = this, $frame = self._getFrame(frameId), $modal = self.$modal; + if (!$frame) { + return; + } + $h.initModal($modal); + $modal.html(self._getModalContent()); + self._setZoomContent($frame); + $modal.modal('show'); + self._initZoomButtons(); + }, + getExif: function (frameId) { + var self = this, $frame = self._getFrame(frameId); + return $frame && $frame.data('exif') || null; + }, + getFrames: function (cssFilter) { + var self = this, $frames; + cssFilter = cssFilter || ''; + $frames = self.$preview.find($h.FRAMES + cssFilter); + if (self.reversePreviewOrder) { + $frames = $($frames.get().reverse()); + } + return $frames; + }, + getPreview: function () { + var self = this; + return { + content: self.initialPreview, + config: self.initialPreviewConfig, + tags: self.initialPreviewThumbTags + }; + } + }; + + $.fn.fileinput = function (option) { + if (!$h.hasFileAPISupport() && !$h.isIE(9)) { + return; + } + var args = Array.apply(null, arguments), retvals = []; + args.shift(); + this.each(function () { + var self = $(this), data = self.data('fileinput'), options = typeof option === 'object' && option, + theme = options.theme || self.data('theme'), l = {}, t = {}, + lang = options.language || self.data('language') || $.fn.fileinput.defaults.language || 'en', opt; + if (!data) { + if (theme) { + t = $.fn.fileinputThemes[theme] || {}; + } + if (lang !== 'en' && !$h.isEmpty($.fn.fileinputLocales[lang])) { + l = $.fn.fileinputLocales[lang] || {}; + } + opt = $.extend(true, {}, $.fn.fileinput.defaults, t, $.fn.fileinputLocales.zh, l, options, self.data()); + data = new FileInput(this, opt); + self.data('fileinput', data); + } + + if (typeof option === 'string') { + retvals.push(data[option].apply(data, args)); + } + }); + switch (retvals.length) { + case 0: + return this; + case 1: + return retvals[0]; + default: + return retvals; + } + }; + + //noinspection HtmlUnknownAttribute + $.fn.fileinput.defaults = { + language: 'en', + showCaption: true, + showBrowse: true, + showPreview: true, + showRemove: true, + showUpload: true, + showUploadStats: true, + showCancel: null, + showPause: null, + showClose: true, + showUploadedThumbs: true, + browseOnZoneClick: false, + autoReplace: false, + autoOrientImage: function () { // applicable for JPEG images only and non ios safari + var ua = window.navigator.userAgent, webkit = !!ua.match(/WebKit/i), + iOS = !!ua.match(/iP(od|ad|hone)/i), iOSSafari = iOS && webkit && !ua.match(/CriOS/i); + return !iOSSafari; + }, + autoOrientImageInitial: true, + required: false, + rtl: false, + hideThumbnailContent: false, + encodeUrl: true, + generateFileId: null, + previewClass: '', + captionClass: '', + frameClass: 'krajee-default', + mainClass: 'file-caption-main', + mainTemplate: null, + purifyHtml: true, + fileSizeGetter: null, + initialCaption: '', + initialPreview: [], + initialPreviewDelimiter: '*$$*', + initialPreviewAsData: false, + initialPreviewFileType: 'image', + initialPreviewConfig: [], + initialPreviewThumbTags: [], + previewThumbTags: {}, + initialPreviewShowDelete: true, + initialPreviewDownloadUrl: '', + removeFromPreviewOnError: false, + deleteUrl: '', + deleteExtraData: {}, + overwriteInitial: true, + sanitizeZoomCache: function (content) { + var $container = $(document.createElement('div')).append(content); + $container.find('input,select,.file-thumbnail-footer').remove(); + return $container.html(); + }, + previewZoomButtonIcons: { + prev: '', + next: '', + toggleheader: '', + fullscreen: '', + borderless: '', + close: '' + }, + previewZoomButtonClasses: { + prev: 'btn btn-navigate', + next: 'btn btn-navigate', + toggleheader: 'btn btn-sm btn-kv btn-default btn-outline-secondary', + fullscreen: 'btn btn-sm btn-kv btn-default btn-outline-secondary', + borderless: 'btn btn-sm btn-kv btn-default btn-outline-secondary', + close: 'btn btn-sm btn-kv btn-default btn-outline-secondary' + }, + previewTemplates: {}, + previewContentTemplates: {}, + preferIconicPreview: false, + preferIconicZoomPreview: false, + allowedFileTypes: null, + allowedFileExtensions: null, + allowedPreviewTypes: undefined, + allowedPreviewMimeTypes: null, + allowedPreviewExtensions: null, + disabledPreviewTypes: undefined, + disabledPreviewExtensions: ['msi', 'exe', 'com', 'zip', 'rar', 'app', 'vb', 'scr'], + disabledPreviewMimeTypes: null, + defaultPreviewContent: null, + customLayoutTags: {}, + customPreviewTags: {}, + previewFileIcon: '', + previewFileIconClass: 'file-other-icon', + previewFileIconSettings: {}, + previewFileExtSettings: {}, + buttonLabelClass: 'hidden-xs', + browseIcon: ' ', + browseClass: 'btn btn-primary', + removeIcon: '', + removeClass: 'btn btn-default btn-secondary', + cancelIcon: '', + cancelClass: 'btn btn-default btn-secondary', + pauseIcon: '', + pauseClass: 'btn btn-default btn-secondary', + uploadIcon: '', + uploadClass: 'btn btn-default btn-secondary', + uploadUrl: null, + uploadUrlThumb: null, + uploadAsync: true, + uploadParamNames: { + chunkCount: 'chunkCount', + chunkIndex: 'chunkIndex', + chunkSize: 'chunkSize', + chunkSizeStart: 'chunkSizeStart', + chunksUploaded: 'chunksUploaded', + fileBlob: 'fileBlob', + fileId: 'fileId', + fileName: 'fileName', + fileRelativePath: 'fileRelativePath', + fileSize: 'fileSize', + retryCount: 'retryCount' + }, + maxAjaxThreads: 5, + processDelay: 100, + queueDelay: 10, // must be lesser than process delay + progressDelay: 0, // must be lesser than process delay + enableResumableUpload: false, + resumableUploadOptions: { + fallback: null, + testUrl: null, // used for checking status of chunks/ files previously / partially uploaded + chunkSize: 2 * 1024, // in KB + maxThreads: 4, + maxRetries: 3, + showErrorLog: true + }, + uploadExtraData: {}, + zoomModalHeight: 480, + minImageWidth: null, + minImageHeight: null, + maxImageWidth: null, + maxImageHeight: null, + resizeImage: false, + resizePreference: 'width', + resizeQuality: 0.92, + resizeDefaultImageType: 'image/jpeg', + resizeIfSizeMoreThan: 0, // in KB + minFileSize: 0, + maxFileSize: 0, + maxFilePreviewSize: 25600, // 25 MB + minFileCount: 0, + maxFileCount: 0, + validateInitialCount: false, + msgValidationErrorClass: 'text-danger', + msgValidationErrorIcon: ' ', + msgErrorClass: 'file-error-message', + progressThumbClass: 'progress-bar progress-bar-striped active', + progressClass: 'progress-bar bg-success progress-bar-success progress-bar-striped active', + progressInfoClass: 'progress-bar bg-info progress-bar-info progress-bar-striped active', + progressCompleteClass: 'progress-bar bg-success progress-bar-success', + progressPauseClass: 'progress-bar bg-primary progress-bar-primary progress-bar-striped active', + progressErrorClass: 'progress-bar bg-danger progress-bar-danger', + progressUploadThreshold: 99, + previewFileType: 'image', + elCaptionContainer: null, + elCaptionText: null, + elPreviewContainer: null, + elPreviewImage: null, + elPreviewStatus: null, + elErrorContainer: null, + errorCloseButton: $h.closeButton('kv-error-close'), + slugCallback: null, + dropZoneEnabled: true, + dropZoneTitleClass: 'file-drop-zone-title', + fileActionSettings: {}, + otherActionButtons: '', + textEncoding: 'UTF-8', + ajaxSettings: {}, + ajaxDeleteSettings: {}, + showAjaxErrorDetails: true, + mergeAjaxCallbacks: false, + mergeAjaxDeleteCallbacks: false, + retryErrorUploads: true, + reversePreviewOrder: false, + usePdfRenderer: function () { + //noinspection JSUnresolvedVariable + var isIE11 = !!window.MSInputMethodContext && !!document.documentMode; + return !!navigator.userAgent.match(/(iPod|iPhone|iPad|Android)/i) || isIE11; + }, + pdfRendererUrl: '', + pdfRendererTemplate: '' + }; + + // noinspection HtmlUnknownAttribute + $.fn.fileinputLocales.en = { + fileSingle: 'file', + filePlural: 'files', + browseLabel: 'Browse …', + removeLabel: 'Remove', + removeTitle: 'Clear all unprocessed files', + cancelLabel: 'Cancel', + cancelTitle: 'Abort ongoing upload', + pauseLabel: 'Pause', + pauseTitle: 'Pause ongoing upload', + uploadLabel: 'Upload', + uploadTitle: 'Upload selected files', + msgNo: 'No', + msgNoFilesSelected: 'No files selected', + msgCancelled: 'Cancelled', + msgPaused: 'Paused', + msgPlaceholder: 'Select {files}...', + msgZoomModalHeading: 'Detailed Preview', + msgFileRequired: 'You must select a file to upload.', + msgSizeTooSmall: 'File "{name}" ({size} KB) is too small and must be larger than {minSize} KB.', + msgSizeTooLarge: 'File "{name}" ({size} KB) exceeds maximum allowed upload size of {maxSize} KB.', + msgFilesTooLess: 'You must select at least {n} {files} to upload.', + msgFilesTooMany: 'Number of files selected for upload ({n}) exceeds maximum allowed limit of {m}.', + msgFileNotFound: 'File "{name}" not found!', + msgFileSecured: 'Security restrictions prevent reading the file "{name}".', + msgFileNotReadable: 'File "{name}" is not readable.', + msgFilePreviewAborted: 'File preview aborted for "{name}".', + msgFilePreviewError: 'An error occurred while reading the file "{name}".', + msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".', + msgInvalidFileType: 'Invalid type for file "{name}". Only "{types}" files are supported.', + msgInvalidFileExtension: 'Invalid extension for file "{name}". Only "{extensions}" files are supported.', + msgFileTypes: { + 'image': 'image', + 'html': 'HTML', + 'text': 'text', + 'video': 'video', + 'audio': 'audio', + 'flash': 'flash', + 'pdf': 'PDF', + 'object': 'object' + }, + msgUploadAborted: 'The file upload was aborted', + msgUploadThreshold: 'Processing...', + msgUploadBegin: 'Initializing...', + msgUploadEnd: 'Done', + msgUploadResume: 'Resuming upload...', + msgUploadEmpty: 'No valid data available for upload.', + msgUploadError: 'Upload Error', + msgDeleteError: 'Delete Error', + msgProgressError: 'Error', + msgValidationError: 'Validation Error', + msgLoading: 'Loading file {index} of {files} …', + msgProgress: 'Loading file {index} of {files} - {name} - {percent}% completed.', + msgSelected: '{n} {files} selected', + msgFoldersNotAllowed: 'Drag & drop files only! {n} folder(s) dropped were skipped.', + msgImageWidthSmall: 'Width of image file "{name}" must be at least {size} px.', + msgImageHeightSmall: 'Height of image file "{name}" must be at least {size} px.', + msgImageWidthLarge: 'Width of image file "{name}" cannot exceed {size} px.', + msgImageHeightLarge: 'Height of image file "{name}" cannot exceed {size} px.', + msgImageResizeError: 'Could not get the image dimensions to resize.', + msgImageResizeException: 'Error while resizing the image.
    {errors}
    ', + msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!', + msgAjaxProgressError: '{operation} failed', + msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.', + msgResumableUploadRetriesExceeded: 'Upload aborted beyond {max} retries for file {file}! Error Details:
    {error}
    ', + msgPendingTime: '{time} remaining', + msgCalculatingTime: 'calculating time remaining', + ajaxOperations: { + deleteThumb: 'file delete', + uploadThumb: 'file upload', + uploadBatch: 'batch file upload', + uploadExtra: 'form data upload' + }, + dropZoneTitle: 'Drag & drop files here …', + dropZoneClickTitle: '
    (or click to select {files})', + previewZoomButtonTitles: { + prev: 'View previous file', + next: 'View next file', + toggleheader: 'Toggle header', + fullscreen: 'Toggle full screen', + borderless: 'Toggle borderless mode', + close: 'Close detailed preview' + } + }; + + $.fn.fileinputLocales.zh = { + fileSingle: '文件', + filePlural: '个文件', + browseLabel: '选择 …', + removeLabel: '移除', + removeTitle: '清除选中文件', + cancelLabel: '取消', + cancelTitle: '取消进行中的上传', + pauseLabel: 'Pause', + pauseTitle: 'Pause ongoing upload', + uploadLabel: '上传', + uploadTitle: '上传选中文件', + msgNo: '没有', + msgNoFilesSelected: '未选择文件', + msgPaused: 'Paused', + msgCancelled: '取消', + msgPlaceholder: '选择 {files}...', + msgZoomModalHeading: '详细预览', + msgFileRequired: '必须选择一个文件上传.', + msgSizeTooSmall: '文件 "{name}" ({size} KB) 必须大于限定大小 {minSize} KB.', + msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB.', + msgFilesTooLess: '你必须选择最少 {n} {files} 来上传. ', + msgFilesTooMany: '选择的上传文件个数 ({n}) 超出最大文件的限制个数 {m}.', + msgFileNotFound: '文件 "{name}" 未找到!', + msgFileSecured: '安全限制,为了防止读取文件 "{name}".', + msgFileNotReadable: '文件 "{name}" 不可读.', + msgFilePreviewAborted: '取消 "{name}" 的预览.', + msgFilePreviewError: '读取 "{name}" 时出现了一个错误.', + msgInvalidFileName: '文件名 "{name}" 包含非法字符.', + msgInvalidFileType: '不正确的类型 "{name}". 只支持 "{types}" 类型的文件.', + msgInvalidFileExtension: '不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.', + msgFileTypes: { + 'image': 'image', + 'html': 'HTML', + 'text': 'text', + 'video': 'video', + 'audio': 'audio', + 'flash': 'flash', + 'pdf': 'PDF', + 'object': 'object' + }, + msgUploadAborted: '该文件上传被中止', + msgUploadThreshold: '处理中...', + msgUploadBegin: '正在初始化...', + msgUploadEnd: '完成', + msgUploadResume: 'Resuming upload...', + msgUploadEmpty: '无效的文件上传.', + msgUploadError: 'Upload Error', + msgDeleteError: 'Delete Error', + msgProgressError: '上传出错', + msgValidationError: '验证错误', + msgLoading: '加载第 {index} 文件 共 {files} …', + msgProgress: '加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.', + msgSelected: '{n} {files} 选中', + msgFoldersNotAllowed: '只支持拖拽文件! 跳过 {n} 拖拽的文件夹.', + msgImageWidthSmall: '图像文件的"{name}"的宽度必须是至少{size}像素.', + msgImageHeightSmall: '图像文件的"{name}"的高度必须至少为{size}像素.', + msgImageWidthLarge: '图像文件"{name}"的宽度不能超过{size}像素.', + msgImageHeightLarge: '图像文件"{name}"的高度不能超过{size}像素.', + msgImageResizeError: '无法获取的图像尺寸调整。', + msgImageResizeException: '调整图像大小时发生错误。
    {errors}
    ', + msgAjaxError: '{operation} 发生错误. 请重试!', + msgAjaxProgressError: '{operation} 失败', + msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.', + msgResumableUploadRetriesExceeded: 'Upload aborted beyond {max} retries for file {file}! Error Details:
    {error}
    ', + msgPendingTime: '{time} remaining', + msgCalculatingTime: 'calculating time remaining', + ajaxOperations: { + deleteThumb: '删除文件', + uploadThumb: '上传文件', + uploadBatch: '批量上传', + uploadExtra: '表单数据上传' + }, + dropZoneTitle: '拖拽文件到这里 …
    支持多文件同时上传', + dropZoneClickTitle: '
    (或点击{files}按钮选择文件)', + fileActionSettings: { + removeTitle: '删除文件', + uploadTitle: '上传文件', + downloadTitle: '下载文件', + uploadRetryTitle: '重试', + zoomTitle: '查看详情', + dragTitle: '移动 / 重置', + indicatorNewTitle: '没有上传', + indicatorSuccessTitle: '上传', + indicatorErrorTitle: '上传错误', + indicatorPausedTitle: 'Upload Paused', + indicatorLoadingTitle: '上传 ...' + }, + previewZoomButtonTitles: { + prev: '预览上一个文件', + next: '预览下一个文件', + toggleheader: '缩放', + fullscreen: '全屏', + borderless: '无边界模式', + close: '关闭当前预览' + } + }; + + $.fn.fileinput.Constructor = FileInput; + + /** + * Convert automatically file inputs with class 'file' into a bootstrap fileinput control. + */ + $(document).ready(function () { + var $input = $('input.file[type=file]'); + if ($input.length) { + $input.fileinput(); + } + }); +})); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css new file mode 100644 index 000000000..add4f839c --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css @@ -0,0 +1,12 @@ +/*! + * bootstrap-fileinput v5.0.4 + * http://plugins.krajee.com/file-input + * + * Krajee default styling for bootstrap-fileinput. + * + * Author: Kartik Visweswaran + * Copyright: 2014 - 2019, Kartik Visweswaran, Krajee.com + * + * Licensed under the BSD-3-Clause + * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md + */.btn-file input[type=file],.file-caption-icon,.file-no-browse,.file-preview .fileinput-remove,.file-zoom-dialog .btn-navigate,.file-zoom-dialog .floating-buttons,.krajee-default .file-thumb-progress{position:absolute}.file-loading input[type=file],input[type=file].file-loading{width:0;height:0}.file-no-browse{left:50%;bottom:20%;width:1px;height:1px;font-size:0;opacity:0;border:none;background:0 0;outline:0;box-shadow:none}.file-caption-icon,.file-input-ajax-new .fileinput-remove-button,.file-input-ajax-new .fileinput-upload-button,.file-input-ajax-new .no-browse .input-group-btn,.file-input-new .close,.file-input-new .file-preview,.file-input-new .fileinput-remove-button,.file-input-new .fileinput-upload-button,.file-input-new .glyphicon-file,.file-input-new .no-browse .input-group-btn,.file-zoom-dialog .modal-header:after,.file-zoom-dialog .modal-header:before,.hide-content .kv-file-content,.is-locked .fileinput-remove-button,.is-locked .fileinput-upload-button,.kv-hidden{display:none}.file-caption-icon .kv-caption-icon{line-height:inherit}.btn-file,.file-caption,.file-input,.file-loading:before,.file-preview,.file-zoom-dialog .modal-dialog,.krajee-default .file-thumbnail-footer,.krajee-default.file-preview-frame{position:relative}.file-error-message pre,.file-error-message ul,.krajee-default .file-actions,.krajee-default .file-other-error{text-align:left}.file-error-message pre,.file-error-message ul{margin:0}.krajee-default .file-drag-handle,.krajee-default .file-upload-indicator{float:left;margin-top:10px;width:16px;height:16px}.krajee-default .file-thumb-progress .progress,.krajee-default .file-thumb-progress .progress-bar{height:20px;font-family:Verdana,Helvetica,sans-serif;font-size:9px}.krajee-default .file-thumb-progress .progress,.kv-upload-progress .progress{background-color:#ccc}.krajee-default .file-caption-info,.krajee-default .file-size-info{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:160px;height:15px;margin:auto}.file-zoom-content>.file-object.type-flash,.file-zoom-content>.file-object.type-image,.file-zoom-content>.file-object.type-video{max-width:100%;max-height:100%;width:auto}.file-zoom-content>.file-object.type-flash,.file-zoom-content>.file-object.type-video{height:100%}.file-zoom-content>.file-object.type-default,.file-zoom-content>.file-object.type-html,.file-zoom-content>.file-object.type-pdf,.file-zoom-content>.file-object.type-text{width:100%}.file-loading:before{content:" Loading...";display:inline-block;padding-left:20px;line-height:16px;font-size:13px;font-variant:small-caps;color:#999;background:url(loading.gif) top left no-repeat}.file-object{margin:0 0 -5px;padding:0}.btn-file{overflow:hidden}.btn-file input[type=file]{top:0;left:0;min-width:100%;min-height:100%;text-align:right;opacity:0;background:none;cursor:inherit;display:block}.btn-file ::-ms-browse{font-size:10000px;width:100%;height:100%}.file-caption .file-caption-name{width:100%;margin:0;padding:0;box-shadow:none;border:none;background:0 0;outline:0}.file-caption.icon-visible .file-caption-icon{display:inline-block}.file-caption.icon-visible .file-caption-name{padding-left:15px}.file-caption-icon{left:8px}.file-error-message{color:#a94442;background-color:#f2dede;margin:5px;border:1px solid #ebccd1;border-radius:4px;padding:15px}.file-error-message pre{margin:5px 0}.file-caption-disabled{background-color:#eee;cursor:not-allowed;opacity:1}.file-preview{border-radius:5px;border:1px solid #ddd;padding:8px;width:100%;margin-bottom:5px}.file-preview .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.file-preview .fileinput-remove{top:1px;right:1px;line-height:10px}.file-preview .clickable{cursor:pointer}.file-preview-image{font:40px Impact,Charcoal,sans-serif;color:green}.krajee-default.file-preview-frame{margin:8px;border:1px solid rgba(0,0,0,.2);box-shadow:0 0 10px 0 rgba(0,0,0,.2);padding:6px;float:left;text-align:center}.krajee-default.file-preview-frame .kv-file-content{width:213px;height:160px}.krajee-default .file-preview-other-frame{display:flex;align-items:center;justify-content:center}.krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered{width:400px}.krajee-default.file-preview-frame[data-template=audio] .kv-file-content{width:240px;height:55px}.krajee-default.file-preview-frame .file-thumbnail-footer{height:70px}.krajee-default.file-preview-frame:not(.file-preview-error):hover{border:1px solid rgba(0,0,0,.3);box-shadow:0 0 10px 0 rgba(0,0,0,.4)}.krajee-default .file-preview-text{display:block;color:#428bca;border:1px solid #ddd;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;outline:0;padding:8px;resize:none}.krajee-default .file-preview-html{border:1px solid #ddd;padding:8px;overflow:auto}.krajee-default .file-other-icon{font-size:6em;line-height:1}.krajee-default .file-footer-buttons{float:right}.krajee-default .file-footer-caption{display:block;text-align:center;padding-top:4px;font-size:11px;color:#777;margin-bottom:30px}.file-upload-stats{font-size:10px;text-align:center;width:100%}.kv-upload-progress .file-upload-stats{font-size:12px;margin:-10px 0 5px}.krajee-default .file-preview-error{opacity:.65;box-shadow:none}.krajee-default .file-thumb-progress{height:11px;top:37px;left:0;right:0}.krajee-default.kvsortable-ghost{background:#e1edf7;border:2px solid #a1abff}.krajee-default .file-preview-other:hover{opacity:.8}.krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover{color:#000}.kv-upload-progress .progress{height:20px;margin:10px 0;overflow:hidden}.kv-upload-progress .progress-bar{height:20px;font-family:Verdana,Helvetica,sans-serif}.file-zoom-dialog .file-other-icon{font-size:22em;font-size:50vmin}.file-zoom-dialog .modal-dialog{width:auto}.file-zoom-dialog .modal-header{display:flex;align-items:center;justify-content:space-between}.file-zoom-dialog .btn-navigate{padding:0;margin:0;background:0 0;text-decoration:none;outline:0;opacity:.7;top:45%;font-size:4em;color:#1c94c4}.file-zoom-dialog .btn-navigate:not([disabled]):hover{outline:0;box-shadow:none;opacity:.6}.file-zoom-dialog .floating-buttons{top:5px;right:10px}.file-zoom-dialog .btn-navigate[disabled]{opacity:.3}.file-zoom-dialog .btn-prev{left:1px}.file-zoom-dialog .btn-next{right:1px}.file-zoom-dialog .kv-zoom-title{font-weight:300;color:#999;max-width:50%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-input-ajax-new .no-browse .form-control,.file-input-new .no-browse .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.file-caption-main{width:100%}.file-thumb-loading{background:url(loading.gif) center center no-repeat content-box!important}.file-drop-zone{border:1px dashed #aaa;border-radius:4px;text-align:center;vertical-align:middle;margin:12px 15px 12px 12px;padding:5px}.file-drop-zone.clickable:hover{border:2px dashed #999}.file-drop-zone.clickable:focus{border:2px solid #5acde2}.file-drop-zone .file-preview-thumbnails{cursor:default}.file-drop-zone-title{color:#aaa;font-size:1.6em;padding:85px 10px;cursor:default}.file-highlighted{border:2px dashed #999!important;background-color:#eee}.file-uploading{background:url(loading-sm.gif) center bottom 10px no-repeat;opacity:.65}.file-zoom-fullscreen .modal-dialog{min-width:100%;margin:0}.file-zoom-fullscreen .modal-content{border-radius:0;box-shadow:none;min-height:100vh}.file-zoom-fullscreen .modal-body{overflow-y:auto}.floating-buttons{z-index:3000}.floating-buttons .btn-kv{margin-left:3px;z-index:3000}.kv-zoom-actions .btn-kv{margin-left:3px}.file-zoom-content{height:480px;text-align:center}.file-zoom-content .file-preview-image,.file-zoom-content .file-preview-video{max-height:100%}.file-zoom-content>.file-object.type-image{height:auto;min-height:inherit}.file-zoom-content>.file-object.type-audio{width:auto;height:30px}@media (min-width:576px){.file-zoom-dialog .modal-dialog{max-width:500px}}@media (min-width:992px){.file-zoom-dialog .modal-lg{max-width:800px}}@media (max-width:767px){.file-preview-thumbnails{display:flex;justify-content:center;align-items:center;flex-direction:column}.file-zoom-dialog .modal-header{flex-direction:column}}@media (max-width:350px){.krajee-default.file-preview-frame:not([data-template=audio]) .kv-file-content{width:160px}}@media (max-width:420px){.krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered{width:100%}}.file-loading[dir=rtl]:before{background:url(loading.gif) top right no-repeat;padding-left:0;padding-right:20px}.file-sortable .file-drag-handle{cursor:move;opacity:1}.file-sortable .file-drag-handle:hover{opacity:.7}.clickable .file-drop-zone-title{cursor:pointer}.file-preview-initial.sortable-chosen{background-color:#d9edf7} \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js new file mode 100644 index 000000000..2a2206afa --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js @@ -0,0 +1,10 @@ +/*! + bootstrap-fileinput v5.0.4 + http://plugins.krajee.com/file-input + + Author: Kartik Visweswaran + Copyright: 2014 - 2019, Kartik Visweswaran, Krajee.com + + Licensed under the BSD-3-Clause + https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md + */(function(factory){'use strict';if(typeof define==='function'&&define.amd){define(['jquery'],factory);}else{if(typeof module==='object'&&module.exports){module.exports=factory(require('jquery'));}else{factory(window.jQuery);}}}(function($){'use strict';$.fn.fileinputLocales={};$.fn.fileinputThemes={};String.prototype.setTokens=function(replacePairs){var str=this.toString(),key,re;for(key in replacePairs){if(replacePairs.hasOwnProperty(key)){re=new RegExp('\{'+key+'\}','g');str=str.replace(re,replacePairs[key]);}}return str;};var $h,FileInput;$h={FRAMES:'.kv-preview-thumb',SORT_CSS:'file-sortable',OBJECT_PARAMS:'\n'+'\n'+'\n'+'\n'+'\n'+'\n',DEFAULT_PREVIEW:'
    \n'+'{previewFileIcon}\n'+'
    ',MODAL_ID:'kvFileinputModal',MODAL_EVENTS:['show','shown','hide','hidden','loaded'],logMessages:{ajaxError:'{status}: {error}. Error Details: {text}.',badDroppedFiles:'Error scanning dropped files!',badExifParser:'Error loading the piexif.js library. {details}',badInputType:'The input "type" must be set to "file" for initializing the "bootstrap-fileinput" plugin.',exifWarning:'To avoid this warning, either set "autoOrientImage" to "false" OR ensure you have loaded '+'the "piexif.js" library correctly on your page before the "fileinput.js" script.',invalidChunkSize:'Invalid upload chunk size: "{chunkSize}". Resumable uploads are disabled.',invalidThumb:'Invalid thumb frame with id: "{id}".',noResumableSupport:'The browser does not support resumable or chunk uploads.',noUploadUrl:'The "uploadUrl" is not set. Ajax uploads and resumable uploads have been disabled.',retryStatus:'Retrying upload for chunk # {chunk} for {filename}... retry # {retry}.'},objUrl:window.URL||window.webkitURL,now:function(){return new Date();},round:function(num){num=parseFloat(num);return isNaN(num)?0:Math.floor(Math.round(num));},getFileRelativePath:function(file){return String(file.relativePath||file.webkitRelativePath||$h.getFileName(file)||null);},getFileId:function(file,generateFileId){var relativePath=$h.getFileRelativePath(file);if(typeof generateFileId==='function'){return generateFileId(file);}if(!file){return null;}if(!relativePath){return null;}return(file.size+'_'+relativePath.replace(/\s/img,'_'));},getElapsed:function(seconds){var delta=seconds,out='',result={},structure={year:31536000,month:2592000,week:604800,day:86400,hour:3600,minute:60,second:1};Object.keys(structure).forEach(function(key){result[key]=Math.floor(delta/structure[key]);delta-=result[key]*structure[key];});$.each(result,function(key,value){if(value>0){out+=(out?' ':'')+value+key.substring(0,1);}});return out;},debounce:function(func,delay){var inDebounce;return function(){var args=arguments,context=this;clearTimeout(inDebounce);inDebounce=setTimeout(function(){func.apply(context,args);},delay);};},stopEvent:function(e){e.stopPropagation();e.preventDefault();},getFileName:function(file){return file?(file.fileName||file.name||''):'';},createObjectURL:function(data){if($h.objUrl&&$h.objUrl.createObjectURL&&data){return $h.objUrl.createObjectURL(data);}return'';},revokeObjectURL:function(data){if($h.objUrl&&$h.objUrl.revokeObjectURL&&data){$h.objUrl.revokeObjectURL(data);}},compare:function(input,str,exact){return input!==undefined&&(exact?input===str:input.match(str));},isIE:function(ver){var div,status;if(navigator.appName!=='Microsoft Internet Explorer'){return false;}if(ver===10){return new RegExp('msie\\s'+ver,'i').test(navigator.userAgent);}div=document.createElement('div');div.innerHTML='';status=div.getElementsByTagName('i').length;document.body.appendChild(div);div.parentNode.removeChild(div);return status;},canAssignFilesToInput:function(){var input=document.createElement('input');try{input.type='file';input.files=null;return true;}catch(err){return false;}},getDragDropFolders:function(items){var i,item,len=items?items.length:0,folders=0;if(len>0&&items[0].webkitGetAsEntry()){for(i=0;i=0){byteStr=atob(dataURI.split(',')[1]);}else{byteStr=decodeURIComponent(dataURI.split(',')[1]);}arrayBuffer=new ArrayBuffer(byteStr.length);intArray=new Uint8Array(arrayBuffer);for(i=0;i>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:out+=String.fromCharCode(c);break;case 12:case 13:char2=array[i++];out+=String.fromCharCode(((c&0x1F)<<6)|(char2&0x3F));break;case 14:char2=array[i++];char3=array[i++];out+=String.fromCharCode(((c&0x0F)<<12)|((char2&0x3F)<<6)|((char3&0x3F)<<0));break;}}return out;},isHtml:function(str){var a=document.createElement('div');a.innerHTML=str;for(var c=a.childNodes,i=c.length;i--;){if(c[i].nodeType===1){return true;}}return false;},isSvg:function(str){return str.match(/^\s*<\?xml/i)&&(str.match(//g,'>').replace(/"/g,'"').replace(/'/g,''');},replaceTags:function(str,tags){var out=str;if(!tags){return out;}$.each(tags,function(key,value){if(typeof value==='function'){value=value();}out=out.split(key).join(value);});return out;},cleanMemory:function($thumb){var data=$thumb.is('img')?$thumb.attr('src'):$thumb.find('source').attr('src');$h.revokeObjectURL(data);},findFileName:function(filePath){var sepIndex=filePath.lastIndexOf('/');if(sepIndex===-1){sepIndex=filePath.lastIndexOf('\\');}return filePath.split(filePath.substring(sepIndex,sepIndex+1)).pop();},checkFullScreen:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;},toggleFullScreen:function(maximize){var doc=document,de=doc.documentElement;if(de&&maximize&&!$h.checkFullScreen()){if(de.requestFullscreen){de.requestFullscreen();}else{if(de.msRequestFullscreen){de.msRequestFullscreen();}else{if(de.mozRequestFullScreen){de.mozRequestFullScreen();}else{if(de.webkitRequestFullscreen){de.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);}}}}}else{if(doc.exitFullscreen){doc.exitFullscreen();}else{if(doc.msExitFullscreen){doc.msExitFullscreen();}else{if(doc.mozCancelFullScreen){doc.mozCancelFullScreen();}else{if(doc.webkitExitFullscreen){doc.webkitExitFullscreen();}}}}}},moveArray:function(arr,oldIndex,newIndex,reverseOrder){var newArr=$.extend(true,[],arr);if(reverseOrder){newArr.reverse();}if(newIndex>=newArr.length){var k=newIndex-newArr.length;while((k--)+1){newArr.push(undefined);}}newArr.splice(newIndex,0,newArr.splice(oldIndex,1)[0]);if(reverseOrder){newArr.reverse();}return newArr;},cleanZoomCache:function($el){var $cache=$el.closest('.kv-zoom-cache-theme');if(!$cache.length){$cache=$el.closest('.kv-zoom-cache');}$cache.remove();},closeButton:function(css){css=css?'close '+css:'close';return'';},getRotation:function(value){switch(value){case 2:return'rotateY(180deg)';case 3:return'rotate(180deg)';case 4:return'rotate(180deg) rotateY(180deg)';case 5:return'rotate(270deg) rotateY(180deg)';case 6:return'rotate(90deg)';case 7:return'rotate(90deg) rotateY(180deg)';case 8:return'rotate(270deg)';default:return'';}},setTransform:function(el,val){if(!el){return;}el.style.transform=val;el.style.webkitTransform=val;el.style['-moz-transform']=val;el.style['-ms-transform']=val;el.style['-o-transform']=val;}};FileInput=function(element,options){var self=this;self.$element=$(element);self.$parent=self.$element.parent();if(!self._validate()){return;}self.isPreviewable=$h.hasFileAPISupport();self.isIE9=$h.isIE(9);self.isIE10=$h.isIE(10);if(self.isPreviewable||self.isIE9){self._init(options);self._listen();}self.$element.removeClass('file-loading');};FileInput.prototype={constructor:FileInput,_cleanup:function(){var self=this;self.reader=null;self.clearFileStack();self.fileBatchCompleted=true;self.isError=false;self.cancelling=false;self.paused=false;self.lastProgress=0;self._initAjax();},_initAjax:function(){var self=this;self.ajaxQueue=[];self.ajaxRequests=[];self.ajaxQueueIntervalId=null;self.ajaxCurrentThreads=0;self.ajaxAborted=false;},_init:function(options,refreshMode){var self=this,f,$el=self.$element,$cont,t,tmp;self.options=options;$.each(options,function(key,value){switch(key){case'minFileCount':case'maxFileCount':case'minFileSize':case'maxFileSize':case'maxFilePreviewSize':case'resizeImageQuality':case'resizeIfSizeMoreThan':case'progressUploadThreshold':case'initialPreviewCount':case'zoomModalHeight':case'minImageHeight':case'maxImageHeight':case'minImageWidth':case'maxImageWidth':self[key]=$h.getNum(value);break;default:self[key]=value;break;}});if(self.rtl){tmp=self.previewZoomButtonIcons.prev;self.previewZoomButtonIcons.prev=self.previewZoomButtonIcons.next;self.previewZoomButtonIcons.next=tmp;}if(!isNaN(self.maxAjaxThreads)&&self.maxAjaxThreadsrm.file.size?rm.file.size:size;},getTotalChunks:function(){var rm=self.resumableManager,chunkSize=parseFloat(rm.chunkSize);if(!isNaN(chunkSize)&&chunkSize>0){return Math.ceil(rm.file.size/chunkSize);}return 0;},getProgress:function(){var rm=self.resumableManager,processed=rm.processedResumables(),total=rm.chunkCount;if(total===0){return 0;}return Math.ceil(processed/total*100);},checkAborted:function(intervalId){if(self.paused||self.cancelling){clearInterval(intervalId);self.unlock();}},upload:function(){var rm=self.resumableManager,fm=self.fileManager,ids=fm.getIdList(),flag='new',intervalId;intervalId=setInterval(function(){var id;rm.checkAborted(intervalId);if(flag==='new'){self.lock();flag='processing';id=ids.shift();fm.initStats(id);if(fm.stack[id]){rm.init(id,fm.stack[id],fm.getIndex(id));rm.testUpload();rm.uploadResumable();}}if(!fm.isPending(id)&&rm.completed){flag='new';}if(fm.isProcessed()){var $initThumbs=self.$preview.find('.file-preview-initial');if($initThumbs.length){$h.addCss($initThumbs,$h.SORT_CSS);self._initSortable();}clearInterval(intervalId);self._clearFileInput();self.unlock();setTimeout(function(){var data=self.previewCache.data;if(data){self.initialPreview=data.content;self.initialPreviewConfig=data.config;self.initialPreviewThumbTags=data.tags;}self._raise('filebatchuploadcomplete',[self.initialPreview,self.initialPreviewConfig,self.initialPreviewThumbTags,self._getExtraData()]);},self.processDelay);}},self.processDelay);},uploadResumable:function(){var i,rm=self.resumableManager,total=rm.chunkCount;for(i=0;iopts.maxRetries){rm.setProcessed('error');return;}var fd,outData,fnBefore,fnSuccess,fnError,fnComplete,slice=file.slice?'slice':(file.mozSlice?'mozSlice':(file.webkitSlice?'webkitSlice':'slice')),blob=file[slice](chunkSize*index,chunkSize*(index+1));fd=new FormData();f=fm.stack[id];self._setUploadData(fd,{chunkCount:rm.chunkCount,chunkIndex:index,chunkSize:chunkSize,chunkSizeStart:chunkSize*index,fileBlob:[blob,rm.fileName],fileId:id,fileName:rm.fileName,fileRelativePath:f.relativePath,fileSize:file.size,retryCount:retry});if(rm.$progress&&rm.$progress.length){rm.$progress.show();}fnBefore=function(jqXHR){outData=self._getOutData(fd,jqXHR);if(self.showPreview){if(!$thumb.hasClass('file-preview-success')){self._setThumbStatus($thumb,'Loading');$h.addCss($thumb,'file-uploading');}$btnDelete.attr('disabled',true);}self._raise('filechunkbeforesend',[id,index,retry,fm,rm,outData]);};fnSuccess=function(data,textStatus,jqXHR){outData=self._getOutData(fd,jqXHR,data);var paramNames=self.uploadParamNames,chunkIndex=paramNames.chunkIndex||'chunkIndex',opts=self.resumableUploadOptions,params=[id,index,retry,fm,rm,outData];rm.currThreads--;if(data.error){if(opts.showErrorLog){self._log(logs.retryStatus,{retry:retry+1,filename:rm.fileName,chunk:index});}rm.pushAjax(index,retry+1);rm.error=data.error;self._raise('filechunkerror',params);}else{rm.logs[data[chunkIndex]]=true;if(!rm.processed[id]){rm.processed[id]={};}rm.processed[id][data[chunkIndex]]=true;rm.processed[id].data=data;self._raise('filechunksuccess',params);rm.check();}};fnError=function(jqXHR,textStatus,errorThrown){outData=self._getOutData(fd,jqXHR);rm.currThreads--;rm.error=errorThrown;rm.logAjaxError(jqXHR,textStatus,errorThrown);self._raise('filechunkajaxerror',[id,index,retry,fm,rm,outData]);rm.pushAjax(index,retry+1);};fnComplete=function(){self._raise('filechunkcomplete',[id,index,retry,fm,rm,self._getOutData(fd)]);};self._ajaxSubmit(fnBefore,fnSuccess,fnComplete,fnError,fd,id,rm.fileIndex);},loopAjax:function(){var rm=self.resumableManager;if(rm.currThreads=rm.getTotalChunks()){rm.setProcessed('success');clearInterval(rm.chunkIntervalId);}}}}}};self.resumableManager.reset();},_initTemplateDefaults:function(){var self=this,tMain1,tMain2,tPreview,tFileIcon,tClose,tCaption,tBtnDefault,tBtnLink,tBtnBrowse,tModalMain,tModal,tProgress,tSize,tFooter,tActions,tActionDelete,tActionUpload,tActionDownload,tActionZoom,tActionDrag,tIndicator,tTagBef,tTagBef1,tTagBef2,tTagAft,tGeneric,tHtml,tImage,tText,tOffice,tGdocs,tVideo,tAudio,tFlash,tObject,tPdf,tOther,tStyle,tZoomCache,vDefaultDim,tStats;tMain1='{preview}\n'+'
    \n'+'
    \n'+' {caption}\n'+'
    \n'+' {remove}\n'+' {cancel}\n'+' {pause}\n'+' {upload}\n'+' {browse}\n'+'
    \n'+'
    ';tMain2='{preview}\n
    \n
    \n'+'{remove}\n{cancel}\n{upload}\n{browse}\n';tPreview='
    \n'+' {close}'+'
    \n'+'
    \n'+'
    \n'+'
    '+'
    \n'+'
    \n'+'
    \n'+'
    ';tClose=$h.closeButton('fileinput-remove');tFileIcon='';tCaption='
    \n'+' \n'+' \n'+'
    ';tBtnDefault='';tBtnLink='{icon} {label}';tBtnBrowse='
    {icon} {label}
    ';tModalMain='';tModal='\n';tProgress='
    \n'+'
    \n'+' {status}\n'+'
    \n'+'
    {stats}';tStats='
    '+'{pendingTime} '+'{uploadSpeed}'+'
    ';tSize=' ({sizeText})';tFooter='';tActions='
    \n'+' \n'+'
    \n'+'{drag}\n'+'
    ';tActionDelete='\n';tActionUpload='';tActionDownload='{downloadIcon}';tActionZoom='';tActionDrag='{dragIcon}';tIndicator='
    {indicator}
    ';tTagBef='
    \n';tTagBef2=tTagBef+' title="{caption}">
    \n';tTagAft='
    {footer}\n
    \n';tGeneric='{content}\n';tStyle=' {style}';tHtml='
    {data}
    \n';tImage='\n';tText='\n';tOffice='';tGdocs='';tVideo='\n';tAudio='\n';tFlash='\n';tPdf='\n';tObject='\n'+'\n'+$h.OBJECT_PARAMS+' '+$h.DEFAULT_PREVIEW+'\n\n';tOther='
    \n'+$h.DEFAULT_PREVIEW+'\n
    \n';tZoomCache='';vDefaultDim={width:'100%',height:'100%','min-height':'480px'};if(self._isPdfRendered()){tPdf=self.pdfRendererTemplate.replace('{renderer}',self._encodeURI(self.pdfRendererUrl));}self.defaults={layoutTemplates:{main1:tMain1,main2:tMain2,preview:tPreview,close:tClose,fileIcon:tFileIcon,caption:tCaption,modalMain:tModalMain,modal:tModal,progress:tProgress,stats:tStats,size:tSize,footer:tFooter,indicator:tIndicator,actions:tActions,actionDelete:tActionDelete,actionUpload:tActionUpload,actionDownload:tActionDownload,actionZoom:tActionZoom,actionDrag:tActionDrag,btnDefault:tBtnDefault,btnLink:tBtnLink,btnBrowse:tBtnBrowse,zoomCache:tZoomCache},previewMarkupTags:{tagBefore1:tTagBef1,tagBefore2:tTagBef2,tagAfter:tTagAft},previewContentTemplates:{generic:tGeneric,html:tHtml,image:tImage,text:tText,office:tOffice,gdocs:tGdocs,video:tVideo,audio:tAudio,flash:tFlash,object:tObject,pdf:tPdf,other:tOther},allowedPreviewTypes:['image','html','text','video','audio','flash','pdf','object'],previewTemplates:{},previewSettings:{image:{width:'auto',height:'auto','max-width':'100%','max-height':'100%'},html:{width:'213px',height:'160px'},text:{width:'213px',height:'160px'},office:{width:'213px',height:'160px'},gdocs:{width:'213px',height:'160px'},video:{width:'213px',height:'160px'},audio:{width:'100%',height:'30px'},flash:{width:'213px',height:'160px'},object:{width:'213px',height:'160px'},pdf:{width:'100%',height:'160px'},other:{width:'213px',height:'160px'}},previewSettingsSmall:{image:{width:'auto',height:'auto','max-width':'100%','max-height':'100%'},html:{width:'100%',height:'160px'},text:{width:'100%',height:'160px'},office:{width:'100%',height:'160px'},gdocs:{width:'100%',height:'160px'},video:{width:'100%',height:'auto'},audio:{width:'100%',height:'30px'},flash:{width:'100%',height:'auto'},object:{width:'100%',height:'auto'},pdf:{width:'100%',height:'160px'},other:{width:'100%',height:'160px'}},previewZoomSettings:{image:{width:'auto',height:'auto','max-width':'100%','max-height':'100%'},html:vDefaultDim,text:vDefaultDim,office:{width:'100%',height:'100%','max-width':'100%','min-height':'480px'},gdocs:{width:'100%',height:'100%','max-width':'100%','min-height':'480px'},video:{width:'auto',height:'100%','max-width':'100%'},audio:{width:'100%',height:'30px'},flash:{width:'auto',height:'480px'},object:{width:'auto',height:'100%','max-width':'100%','min-height':'480px'},pdf:vDefaultDim,other:{width:'auto',height:'100%','min-height':'480px'}},mimeTypeAliases:{'video/quicktime':'video/mp4'},fileTypeSettings:{image:function(vType,vName){return($h.compare(vType,'image.*')&&!$h.compare(vType,/(tiff?|wmf)$/i)||$h.compare(vName,/\.(gif|png|jpe?g)$/i));},html:function(vType,vName){return $h.compare(vType,'text/html')||$h.compare(vName,/\.(htm|html)$/i);},office:function(vType,vName){return $h.compare(vType,/(word|excel|powerpoint|office)$/i)||$h.compare(vName,/\.(docx?|xlsx?|pptx?|pps|potx?)$/i);},gdocs:function(vType,vName){return $h.compare(vType,/(word|excel|powerpoint|office|iwork-pages|tiff?)$/i)||$h.compare(vName,/\.(docx?|xlsx?|pptx?|pps|potx?|rtf|ods|odt|pages|ai|dxf|ttf|tiff?|wmf|e?ps)$/i);},text:function(vType,vName){return $h.compare(vType,'text.*')||$h.compare(vName,/\.(xml|javascript)$/i)||$h.compare(vName,/\.(txt|md|csv|nfo|ini|json|php|js|css)$/i);},video:function(vType,vName){return $h.compare(vType,'video.*')&&($h.compare(vType,/(ogg|mp4|mp?g|mov|webm|3gp)$/i)||$h.compare(vName,/\.(og?|mp4|webm|mp?g|mov|3gp)$/i));},audio:function(vType,vName){return $h.compare(vType,'audio.*')&&($h.compare(vName,/(ogg|mp3|mp?g|wav)$/i)||$h.compare(vName,/\.(og?|mp3|mp?g|wav)$/i));},flash:function(vType,vName){return $h.compare(vType,'application/x-shockwave-flash',true)||$h.compare(vName,/\.(swf)$/i);},pdf:function(vType,vName){return $h.compare(vType,'application/pdf',true)||$h.compare(vName,/\.(pdf)$/i);},object:function(){return true;},other:function(){return true;}},fileActionSettings:{showRemove:true,showUpload:true,showDownload:true,showZoom:true,showDrag:true,removeIcon:'',removeClass:'btn btn-sm btn-kv btn-default btn-outline-secondary',removeErrorClass:'btn btn-sm btn-kv btn-danger',removeTitle:'Remove file',uploadIcon:'',uploadClass:'btn btn-sm btn-kv btn-default btn-outline-secondary',uploadTitle:'Upload file',uploadRetryIcon:'',uploadRetryTitle:'Retry upload',downloadIcon:'',downloadClass:'btn btn-sm btn-kv btn-default btn-outline-secondary',downloadTitle:'Download file',zoomIcon:'',zoomClass:'btn btn-sm btn-kv btn-default btn-outline-secondary',zoomTitle:'View Details',dragIcon:'',dragClass:'text-info',dragTitle:'Move / Rearrange',dragSettings:{},indicatorNew:'',indicatorSuccess:'',indicatorError:'',indicatorLoading:'',indicatorPaused:'',indicatorNewTitle:'Not uploaded yet',indicatorSuccessTitle:'Uploaded',indicatorErrorTitle:'Upload Error',indicatorLoadingTitle:'Uploading ...',indicatorPausedTitle:'Upload Paused'}};$.each(self.defaults,function(key,setting){if(key==='allowedPreviewTypes'){if(self.allowedPreviewTypes===undefined){self.allowedPreviewTypes=setting;}return;}self[key]=$.extend(true,{},setting,self[key]);});self._initPreviewTemplates();},_initPreviewTemplates:function(){var self=this,tags=self.previewMarkupTags,tagBef,tagAft=tags.tagAfter;$.each(self.previewContentTemplates,function(key,value){if($h.isEmpty(self.previewTemplates[key])){tagBef=tags.tagBefore2;if(key==='generic'||key==='image'||key==='html'||key==='text'){tagBef=tags.tagBefore1;}if(self._isPdfRendered()&&key==='pdf'){tagBef=tagBef.replace('kv-file-content','kv-file-content kv-pdf-rendered');}self.previewTemplates[key]=tagBef+value+tagAft;}});},_initPreviewCache:function(){var self=this;self.previewCache={data:{},init:function(){var content=self.initialPreview;if(content.length>0&&!$h.isArray(content)){content=content.split(self.initialPreviewDelimiter);}self.previewCache.data={content:content,config:self.initialPreviewConfig,tags:self.initialPreviewThumbTags};},count:function(skipNull){if(!self.previewCache.data||!self.previewCache.data.content){return 0;}if(skipNull){var chk=self.previewCache.data.content.filter(function(n){return n!==null;});return chk.length;}return self.previewCache.data.content.length;},get:function(i,isDisabled){var ind='init_'+i,data=self.previewCache.data,config=data.config[i],fileId,content=data.content[i],previewId=self.previewInitId+'-'+ind,out,$tmp,cat,ftr,fname,ftype,frameClass,asData=$h.ifSet('previewAsData',config,self.initialPreviewAsData),a=config?{title:config.title||null,alt:config.alt||null}:{title:null,alt:null},parseTemplate=function(cat,dat,fn,ft,id,ftr,ind,fc,t){fc=' file-preview-initial '+$h.SORT_CSS+(fc?' '+fc:'');fileId=config&&config.fileId||'file_'+id;return self._generatePreviewTemplate(cat,dat,fn,ft,id,fileId,false,null,fc,ftr,ind,t,a,config&&config.zoomData||dat);};if(!content||!content.length){return'';}isDisabled=isDisabled===undefined?true:isDisabled;cat=$h.ifSet('type',config,self.initialPreviewFileType||'generic');fname=$h.ifSet('filename',config,$h.ifSet('caption',config));ftype=$h.ifSet('filetype',config,cat);ftr=self.previewCache.footer(i,isDisabled,(config&&config.size||null));frameClass=$h.ifSet('frameClass',config);if(asData){out=parseTemplate(cat,content,fname,ftype,previewId,ftr,ind,frameClass);}else{out=parseTemplate('generic',content,fname,ftype,previewId,ftr,ind,frameClass,cat).setTokens({'content':data.content[i]});}if(data.tags.length&&data.tags[i]){out=$h.replaceTags(out,data.tags[i]);}if(!$h.isEmpty(config)&&!$h.isEmpty(config.frameAttr)){$tmp=$(document.createElement('div')).html(out);$tmp.find('.file-preview-initial').attr(config.frameAttr);out=$tmp.html();$tmp.remove();}return out;},clean:function(data){data.content=$h.cleanArray(data.content);data.config=$h.cleanArray(data.config);data.tags=$h.cleanArray(data.tags);self.previewCache.data=data;},add:function(content,config,tags,append){var data=self.previewCache.data,index=content.length-1;if(!content||!content.length){return index;}if(!$h.isArray(content)){content=content.split(self.initialPreviewDelimiter);}if(append){index=data.content.push(content[0])-1;data.config[index]=config;data.tags[index]=tags;}else{data.content=content;data.config=config;data.tags=tags;}self.previewCache.clean(data);return index;},set:function(content,config,tags,append){var data=self.previewCache.data,i,chk;if(!content||!content.length){return;}if(!$h.isArray(content)){content=content.split(self.initialPreviewDelimiter);}chk=content.filter(function(n){return n!==null;});if(!chk.length){return;}if(data.content===undefined){data.content=[];}if(data.config===undefined){data.config=[];}if(data.tags===undefined){data.tags=[];}if(append){for(i=0;i'+msg+'':'
  • '+msg+'
  • ';if($error.find('ul').length===0){self._addError('
      '+e+'
    ');}else{$error.find('ul').append(e);}$error.fadeIn(800);self._raise(ev,[params,msg]);self._setValidationError('file-input-new');return true;},_showError:function(msg,params,event){var self=this,$error=self.$errorContainer,ev=event||'fileerror';params=params||{};params.reader=self.reader;self._addError(msg);$error.fadeIn(800);self._raise(ev,[params,msg]);if(!self.isAjaxUpload){self._clearFileInput();}self._setValidationError('file-input-new');self.$btnUpload.attr('disabled',true);return true;},_noFilesError:function(params){var self=this,label=self.minFileCount>1?self.filePlural:self.fileSingle,msg=self.msgFilesTooLess.replace('{n}',self.minFileCount).replace('{files}',label),$error=self.$errorContainer;self._addError(msg);self.isError=true;self._updateFileDetails(0);$error.fadeIn(800);self._raise('fileerror',[params,msg]);self._clearFileInput();self._setValidationError();},_parseError:function(operation,jqXHR,errorThrown,fileName){var self=this,errMsg=$.trim(errorThrown+''),textPre,text=jqXHR.responseJSON!==undefined&&jqXHR.responseJSON.error!==undefined?jqXHR.responseJSON.error:jqXHR.responseText;if(self.cancelling&&self.msgUploadAborted){errMsg=self.msgUploadAborted;}if(self.showAjaxErrorDetails&&text){text=$.trim(text.replace(/\n\s*\n/g,'\n'));textPre=text.length?'
    '+text+'
    ':'';errMsg+=errMsg?textPre:text;}if(!errMsg){errMsg=self.msgAjaxError.replace('{operation}',operation);}self.cancelling=false;return fileName?''+fileName+': '+errMsg:errMsg;},_parseFileType:function(type,name){var self=this,isValid,vType,cat,i,types=self.allowedPreviewTypes||[];if(type==='application/text-plain'){return'text';}for(i=0;i-1){ext=fname.split('.').pop();if(self.previewFileIconSettings){out=self.previewFileIconSettings[ext]||self.previewFileIconSettings[ext.toLowerCase()]||null;}if(self.previewFileExtSettings){$.each(self.previewFileExtSettings,function(key,func){if(self.previewFileIconSettings[key]&&func(ext)){out=self.previewFileIconSettings[key];return;}});}}return out;},_parseFilePreviewIcon:function(content,fname){var self=this,icn=self._getPreviewIcon(fname)||self.previewFileIcon,out=content;if(out.indexOf('{previewFileIcon}')>-1){out=out.setTokens({'previewFileIconClass':self.previewFileIconClass,'previewFileIcon':icn});}return out;},_raise:function(event,params){var self=this,e=$.Event(event);if(params!==undefined){self.$element.trigger(e,params);}else{self.$element.trigger(e);}if(e.isDefaultPrevented()||e.result===false){return false;}switch(event){case'filebatchuploadcomplete':case'filebatchuploadsuccess':case'fileuploaded':case'fileclear':case'filecleared':case'filereset':case'fileerror':case'filefoldererror':case'fileuploaderror':case'filebatchuploaderror':case'filedeleteerror':case'filecustomerror':case'filesuccessremove':break;default:if(!self.ajaxAborted){self.ajaxAborted=e.result;}break;}return true;},_listenFullScreen:function(isFullScreen){var self=this,$modal=self.$modal,$btnFull,$btnBord;if(!$modal||!$modal.length){return;}$btnFull=$modal&&$modal.find('.btn-fullscreen');$btnBord=$modal&&$modal.find('.btn-borderless');if(!$btnFull.length||!$btnBord.length){return;}$btnFull.removeClass('active').attr('aria-pressed','false');$btnBord.removeClass('active').attr('aria-pressed','false');if(isFullScreen){$btnFull.addClass('active').attr('aria-pressed','true');}else{$btnBord.addClass('active').attr('aria-pressed','true');}if($modal.hasClass('file-zoom-fullscreen')){self._maximizeZoomDialog();}else{if(isFullScreen){self._maximizeZoomDialog();}else{$btnBord.removeClass('active').attr('aria-pressed','false');}}},_listen:function(){var self=this,$el=self.$element,$form=self.$form,$cont=self.$container,fullScreenEvents;self._handler($el,'click',function(e){if($el.hasClass('file-no-browse')){if($el.data('zoneClicked')){$el.data('zoneClicked',false);}else{e.preventDefault();}}});self._handler($el,'change',$.proxy(self._change,self));if(self.showBrowse){self._handler(self.$btnFile,'click',$.proxy(self._browse,self));}self._handler($cont.find('.fileinput-remove:not([disabled])'),'click',$.proxy(self.clear,self));self._handler($cont.find('.fileinput-cancel'),'click',$.proxy(self.cancel,self));self._handler($cont.find('.fileinput-pause'),'click',$.proxy(self.pause,self));self._initDragDrop();self._handler($form,'reset',$.proxy(self.clear,self));if(!self.isAjaxUpload){self._handler($form,'submit',$.proxy(self._submitForm,self));}self._handler(self.$container.find('.fileinput-upload'),'click',$.proxy(self._uploadClick,self));self._handler($(window),'resize',function(){self._listenFullScreen(screen.width===window.innerWidth&&screen.height===window.innerHeight);});fullScreenEvents='webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange';self._handler($(document),fullScreenEvents,function(){self._listenFullScreen($h.checkFullScreen());});self._autoFitContent();self._initClickable();self._refreshPreview();},_autoFitContent:function(){var width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,self=this,config=width<400?(self.previewSettingsSmall||self.defaults.previewSettingsSmall):(self.previewSettings||self.defaults.previewSettings),sel;$.each(config,function(cat,settings){sel='.file-preview-frame .file-preview-'+cat;self.$preview.find(sel+'.kv-preview-data,'+sel+' .kv-preview-data').css(settings);});},_scanDroppedItems:function(item,files,path){path=path||'';var self=this,i,dirReader,readDir,errorHandler=function(e){self._log($h.logMessages.badDroppedFiles);self._log(e);};if(item.isFile){item.file(function(file){files.push(file);},errorHandler);}else{if(item.isDirectory){dirReader=item.createReader();readDir=function(){dirReader.readEntries(function(entries){if(entries&&entries.length>0){for(i=0;i-1;self._zoneDragDropInit(e);if(self.isDisabled||!hasFiles){e.originalEvent.dataTransfer.effectAllowed='none';e.originalEvent.dataTransfer.dropEffect='none';return;}if(self._raise('fileDragEnter',{'sourceEvent':e,'files':dataTransfer.types.Files})){$h.addCss(self.$dropZone,'file-highlighted');}},_zoneDragLeave:function(e){var self=this;self._zoneDragDropInit(e);if(self.isDisabled){return;}if(self._raise('fileDragLeave',{'sourceEvent':e})){self.$dropZone.removeClass('file-highlighted');}},_zoneDrop:function(e){var self=this,i,$el=self.$element,dataTransfer=e.originalEvent.dataTransfer,files=dataTransfer.files,items=dataTransfer.items,folders=$h.getDragDropFolders(items),processFiles=function(){if(!self.isAjaxUpload){self.changeTriggered=true;$el.get(0).files=files;setTimeout(function(){self.changeTriggered=false;$el.trigger('change'+self.namespace);},self.processDelay);}else{self._change(e,files);}self.$dropZone.removeClass('file-highlighted');};e.preventDefault();if(self.isDisabled||$h.isEmpty(files)){return;}if(!self._raise('fileDragDrop',{'sourceEvent':e,'files':files})){return;}if(folders>0){if(!self.isAjaxUpload){self._showFolderError(folders);return;}files=[];for(i=0;i.kv-file-content img');$zoomImg=self.$preview.find('#zoom-'+id+' >.kv-file-content img');self.setImageOrientation($img,$zoomImg,config.exif.Orientation,$thumb);}i++;});},_initPreview:function(isInit){var self=this,cap=self.initialCaption||'',out;if(!self.previewCache.count(true)){self._clearPreview();if(isInit){self._setCaption(cap);}else{self._initCaption();}return;}out=self.previewCache.out();cap=isInit&&self.initialCaption?self.initialCaption:out.caption;self._setPreviewContent(out.content);self._setInitThumbAttr();self._setCaption(cap);self._initSortable();if(!$h.isEmpty(out.content)){self.$container.removeClass('file-input-new');}self._initPreviewImageOrientations();},_getZoomButton:function(type){var self=this,label=self.previewZoomButtonIcons[type],css=self.previewZoomButtonClasses[type],title=' title="'+(self.previewZoomButtonTitles[type]||'')+'" ',params=title+(type==='close'?' data-dismiss="modal" aria-hidden="true"':'');if(type==='fullscreen'||type==='borderless'||type==='toggleheader'){params+=' data-toggle="button" aria-pressed="false" autocomplete="off"';}return'';},_getModalContent:function(){var self=this;return self._getLayoutTemplate('modal').setTokens({'rtl':self.rtl?' kv-rtl':'','zoomFrameClass':self.frameClass,'heading':self.msgZoomModalHeading,'prev':self._getZoomButton('prev'),'next':self._getZoomButton('next'),'toggleheader':self._getZoomButton('toggleheader'),'fullscreen':self._getZoomButton('fullscreen'),'borderless':self._getZoomButton('borderless'),'close':self._getZoomButton('close')});},_listenModalEvent:function(event){var self=this,$modal=self.$modal,getParams=function(e){return{sourceEvent:e,previewId:$modal.data('previewId'),modal:$modal};};$modal.on(event+'.bs.modal',function(e){var $btnFull=$modal.find('.btn-fullscreen'),$btnBord=$modal.find('.btn-borderless');self._raise('filezoom'+event,getParams(e));if(event==='shown'){$btnBord.removeClass('active').attr('aria-pressed','false');$btnFull.removeClass('active').attr('aria-pressed','false');if($modal.hasClass('file-zoom-fullscreen')){self._maximizeZoomDialog();if($h.checkFullScreen()){$btnFull.addClass('active').attr('aria-pressed','true');}else{$btnBord.addClass('active').attr('aria-pressed','true');}}}});},_initZoom:function(){var self=this,$dialog,modalMain=self._getLayoutTemplate('modalMain'),modalId='#'+$h.MODAL_ID;if(!self.showPreview){return;}self.$modal=$(modalId);if(!self.$modal||!self.$modal.length){$dialog=$(document.createElement('div')).html(modalMain).insertAfter(self.$container);self.$modal=$(modalId).insertBefore($dialog);$dialog.remove();}$h.initModal(self.$modal);self.$modal.html(self._getModalContent());$.each($h.MODAL_EVENTS,function(key,event){self._listenModalEvent(event);});},_initZoomButtons:function(){var self=this,previewId=self.$modal.data('previewId')||'',$first,$last,thumbs=self.getFrames().toArray(),len=thumbs.length,$prev=self.$modal.find('.btn-prev'),$next=self.$modal.find('.btn-next');if(thumbs.length<2){$prev.hide();$next.hide();return;}else{$prev.show();$next.show();}if(!len){return;}$first=$(thumbs[0]);$last=$(thumbs[len-1]);$prev.removeAttr('disabled');$next.removeAttr('disabled');if($first.length&&$first.attr('id')===previewId){$prev.attr('disabled',true);}if($last.length&&$last.attr('id')===previewId){$next.attr('disabled',true);}},_maximizeZoomDialog:function(){var self=this,$modal=self.$modal,$head=$modal.find('.modal-header:visible'),$foot=$modal.find('.modal-footer:visible'),$body=$modal.find('.modal-body'),h=$(window).height(),diff=0;$modal.addClass('file-zoom-fullscreen');if($head&&$head.length){h-=$head.outerHeight(true);}if($foot&&$foot.length){h-=$foot.outerHeight(true);}if($body&&$body.length){diff=$body.outerHeight(true)-$body.height();h-=diff;}$modal.find('.kv-zoom-body').height(h);},_resizeZoomDialog:function(fullScreen){var self=this,$modal=self.$modal,$btnFull=$modal.find('.btn-fullscreen'),$btnBord=$modal.find('.btn-borderless');if($modal.hasClass('file-zoom-fullscreen')){$h.toggleFullScreen(false);if(!fullScreen){if(!$btnFull.hasClass('active')){$modal.removeClass('file-zoom-fullscreen');self.$modal.find('.kv-zoom-body').css('height',self.zoomModalHeight);}else{$btnFull.removeClass('active').attr('aria-pressed','false');}}else{if(!$btnFull.hasClass('active')){$modal.removeClass('file-zoom-fullscreen');self._resizeZoomDialog(true);if($btnBord.hasClass('active')){$btnBord.removeClass('active').attr('aria-pressed','false');}}}}else{if(!fullScreen){self._maximizeZoomDialog();return;}$h.toggleFullScreen(true);}$modal.focus();},_setZoomContent:function($frame,animate){var self=this,$content,tmplt,body,title,$body,$dataEl,config,previewId=$frame.attr('id'),$zoomPreview=self.$preview.find('#zoom-'+previewId),$modal=self.$modal,$tmp,$btnFull=$modal.find('.btn-fullscreen'),$btnBord=$modal.find('.btn-borderless'),cap,size,$btnTogh=$modal.find('.btn-toggleheader');tmplt=$zoomPreview.attr('data-template')||'generic';$content=$zoomPreview.find('.kv-file-content');body=$content.length?$content.html():'';cap=$frame.data('caption')||'';size=$frame.data('size')||'';title=cap+' '+size;$modal.find('.kv-zoom-title').attr('title',$('
    ').html(title).text()).html(title);$body=$modal.find('.kv-zoom-body');$modal.removeClass('kv-single-content');if(animate){$tmp=$body.addClass('file-thumb-loading').clone().insertAfter($body);$body.html(body).hide();$tmp.fadeOut('fast',function(){$body.fadeIn('fast',function(){$body.removeClass('file-thumb-loading');});$tmp.remove();});}else{$body.html(body);}config=self.previewZoomSettings[tmplt];if(config){$dataEl=$body.find('.kv-preview-data');$h.addCss($dataEl,'file-zoom-detail');$.each(config,function(key,value){$dataEl.css(key,value);if(($dataEl.attr('width')&&key==='width')||($dataEl.attr('height')&&key==='height')){$dataEl.removeAttr(key);}});}$modal.data('previewId',previewId);self._handler($modal.find('.btn-prev'),'click',function(){self._zoomSlideShow('prev',previewId);});self._handler($modal.find('.btn-next'),'click',function(){self._zoomSlideShow('next',previewId);});self._handler($btnFull,'click',function(){self._resizeZoomDialog(true);});self._handler($btnBord,'click',function(){self._resizeZoomDialog(false);});self._handler($btnTogh,'click',function(){var $header=$modal.find('.modal-header'),$floatBar=$modal.find('.modal-body .floating-buttons'),ht,$actions=$header.find('.kv-zoom-actions'),resize=function(height){var $body=self.$modal.find('.kv-zoom-body'),h=self.zoomModalHeight;if($modal.hasClass('file-zoom-fullscreen')){h=$body.outerHeight(true);if(!height){h=h-$header.outerHeight(true);}}$body.css('height',height?h+height:h);};if($header.is(':visible')){ht=$header.outerHeight(true);$header.slideUp('slow',function(){$actions.find('.btn').appendTo($floatBar);resize(ht);});}else{$floatBar.find('.btn').appendTo($actions);$header.slideDown('slow',function(){resize();});}$modal.focus();});self._handler($modal,'keydown',function(e){var key=e.which||e.keyCode,$prev=$(this).find('.btn-prev'),$next=$(this).find('.btn-next'),vId=$(this).data('previewId'),vPrevKey=self.rtl?39:37,vNextKey=self.rtl?37:39;if(key===vPrevKey&&$prev.length&&!$prev.attr('disabled')){self._zoomSlideShow('prev',vId);}if(key===vNextKey&&$next.length&&!$next.attr('disabled')){self._zoomSlideShow('next',vId);}});},_zoomPreview:function($btn){var self=this,$frame,$modal=self.$modal;if(!$btn.length){throw'Cannot zoom to detailed preview!';}$h.initModal($modal);$modal.html(self._getModalContent());$frame=$btn.closest($h.FRAMES);self._setZoomContent($frame);$modal.modal('show');self._initZoomButtons();},_zoomSlideShow:function(dir,previewId){var self=this,$btn=self.$modal.find('.kv-zoom-actions .btn-'+dir),$targFrame,i,thumbs=self.getFrames().toArray(),len=thumbs.length,out;if($btn.attr('disabled')){return;}for(i=0;i=len||!thumbs[out]){return;}$targFrame=$(thumbs[out]);if($targFrame.length){self._setZoomContent($targFrame,true);}self._initZoomButtons();self._raise('filezoom'+dir,{'previewId':previewId,modal:self.$modal});},_initZoomButton:function(){var self=this;self.$preview.find('.kv-file-zoom').each(function(){var $el=$(this);self._handler($el,'click',function(){self._zoomPreview($el);});});},_inputFileCount:function(){return this.$element.get(0).files.length;},_refreshPreview:function(){var self=this,files;if((!self._inputFileCount()&&!self.isAjaxUpload)||!self.showPreview||!self.isPreviewable){return;}if(self.isAjaxUpload){if(self.fileManager.count()>0){files=$.extend(true,{},self.fileManager.stack);self.fileManager.clear();self._clearFileInput();}else{files=self.$element.get(0).files;}}else{files=self.$element.get(0).files;}if(files&&files.length){self.readFiles(files);self._setFileDropZoneTitle();}},_clearObjects:function($el){$el.find('video audio').each(function(){this.pause();$(this).remove();});$el.find('img object div').each(function(){$(this).remove();});},_clearFileInput:function(){var self=this,$el=self.$element,$srcFrm,$tmpFrm,$tmpEl;if(!self._inputFileCount()){return;}$srcFrm=$el.closest('form');$tmpFrm=$(document.createElement('form'));$tmpEl=$(document.createElement('div'));$el.before($tmpEl);if($srcFrm.length){$srcFrm.after($tmpFrm);}else{$tmpEl.after($tmpFrm);}$tmpFrm.append($el).trigger('reset');$tmpEl.before($el).remove();$tmpFrm.remove();},_resetUpload:function(){var self=this;self.uploadCache={content:[],config:[],tags:[],append:true};self.$btnUpload.removeAttr('disabled');self._setProgress(0);self.$progress.hide();self._resetErrors(false);self._initAjax();self.fileManager.clearImages();self._resetCanvas();self.cacheInitialPreview={};if(self.overwriteInitial){self.initialPreview=[];self.initialPreviewConfig=[];self.initialPreviewThumbTags=[];self.previewCache.data={content:[],config:[],tags:[]};}},_resetCanvas:function(){var self=this;if(self.canvas&&self.imageCanvasContext){self.imageCanvasContext.clearRect(0,0,self.canvas.width,self.canvas.height);}},_hasInitialPreview:function(){var self=this;return!self.overwriteInitial&&self.previewCache.count(true);},_resetPreview:function(){var self=this,out,cap;if(self.previewCache.count(true)){out=self.previewCache.out();self._setPreviewContent(out.content);self._setInitThumbAttr();cap=self.initialCaption?self.initialCaption:out.caption;self._setCaption(cap);}else{self._clearPreview();self._initCaption();}if(self.showPreview){self._initZoom();self._initSortable();}},_clearDefaultPreview:function(){var self=this;self.$preview.find('.file-default-preview').remove();},_validateDefaultPreview:function(){var self=this;if(!self.showPreview||$h.isEmpty(self.defaultPreviewContent)){return;}self._setPreviewContent('
    '+self.defaultPreviewContent+'
    ');self.$container.removeClass('file-input-new');self._initClickable();},_resetPreviewThumbs:function(isAjax){var self=this,out;if(isAjax){self._clearPreview();self.clearFileStack();return;}if(self._hasInitialPreview()){out=self.previewCache.out();self._setPreviewContent(out.content);self._setInitThumbAttr();self._setCaption(out.caption);self._initPreviewActions();}else{self._clearPreview();}},_getLayoutTemplate:function(t){var self=this,template=self.layoutTemplates[t];if($h.isEmpty(self.customLayoutTags)){return template;}return $h.replaceTags(template,self.customLayoutTags);},_getPreviewTemplate:function(t){var self=this,template=self.previewTemplates[t];if($h.isEmpty(self.customPreviewTags)){return template;}return $h.replaceTags(template,self.customPreviewTags);},_getOutData:function(formdata,jqXHR,responseData,filesData){var self=this;jqXHR=jqXHR||{};responseData=responseData||{};filesData=filesData||self.fileManager.list();return{formdata:formdata,files:filesData,filenames:self.filenames,filescount:self.getFilesCount(),extra:self._getExtraData(),response:responseData,reader:self.reader,jqXHR:jqXHR};},_getMsgSelected:function(n){var self=this,strFiles=n===1?self.fileSingle:self.filePlural;return n>0?self.msgSelected.replace('{n}',n).replace('{files}',strFiles):self.msgNoFilesSelected;},_getFrame:function(id){var self=this,$frame=$('#'+id);if(!$frame.length){self._log($h.logMessages.invalidThumb,{id:id});return null;}return $frame;},_getThumbs:function(css){css=css||'';return this.getFrames(':not(.file-preview-initial)'+css);},_getExtraData:function(fileId,index){var self=this,data=self.uploadExtraData;if(typeof self.uploadExtraData==='function'){data=self.uploadExtraData(fileId,index);}return data;},_initXhr:function(xhrobj,fileId,fileCount){var self=this,fm=self.fileManager,func=function(event){var pct=0,total=event.total,loaded=event.loaded||event.position,stats=fm.getUploadStats(fileId,loaded,total);if(event.lengthComputable&&!self.enableResumableUpload){pct=$h.round(loaded/total*100);}if(fileId){self._setFileUploadStats(fileId,pct,fileCount,stats);}else{self._setProgress(pct,null,null,self._getStats(stats));}self._raise('fileajaxprogress',[stats]);};if(xhrobj.upload){if(self.progressDelay){func=$h.debounce(func,self.progressDelay);}xhrobj.upload.addEventListener('progress',func,false);}return xhrobj;},_initAjaxSettings:function(){var self=this;self._ajaxSettings=$.extend(true,{},self.ajaxSettings);self._ajaxDeleteSettings=$.extend(true,{},self.ajaxDeleteSettings);},_mergeAjaxCallback:function(funcName,srcFunc,type){var self=this,settings=self._ajaxSettings,flag=self.mergeAjaxCallbacks,targFunc;if(type==='delete'){settings=self._ajaxDeleteSettings;flag=self.mergeAjaxDeleteCallbacks;}targFunc=settings[funcName];if(flag&&typeof targFunc==='function'){if(flag==='before'){settings[funcName]=function(){targFunc.apply(this,arguments);srcFunc.apply(this,arguments);};}else{settings[funcName]=function(){srcFunc.apply(this,arguments);targFunc.apply(this,arguments);};}}else{settings[funcName]=srcFunc;}},_ajaxSubmit:function(fnBefore,fnSuccess,fnComplete,fnError,formdata,fileId,index,vUrl){var self=this,settings,defaults,data,processQueue;if(!self._raise('filepreajax',[formdata,fileId,index])){return;}formdata.append('initialPreview',JSON.stringify(self.initialPreview));formdata.append('initialPreviewConfig',JSON.stringify(self.initialPreviewConfig));formdata.append('initialPreviewThumbTags',JSON.stringify(self.initialPreviewThumbTags));self._initAjaxSettings();self._mergeAjaxCallback('beforeSend',fnBefore);self._mergeAjaxCallback('success',fnSuccess);self._mergeAjaxCallback('complete',fnComplete);self._mergeAjaxCallback('error',fnError);vUrl=vUrl||self.uploadUrlThumb||self.uploadUrl;if(typeof vUrl==='function'){vUrl=vUrl();}data=self._getExtraData(fileId,index)||{};if(typeof data==='object'){$.each(data,function(key,value){formdata.append(key,value);});}defaults={xhr:function(){var xhrobj=$.ajaxSettings.xhr();return self._initXhr(xhrobj,fileId,self.fileManager.count());},url:self._encodeURI(vUrl),type:'POST',dataType:'json',data:formdata,cache:false,processData:false,contentType:false};settings=$.extend(true,{},defaults,self._ajaxSettings);self.ajaxQueue.push(settings);processQueue=function(){var config,xhr;if(self.ajaxCurrentThreads0){self.hasInitData=true;content=out.initialPreview||[];config=out.initialPreviewConfig||[];tags=out.initialPreviewThumbTags||[];append=out.append===undefined||out.append;if(content.length>0&&!$h.isArray(content)){content=content.split(self.initialPreviewDelimiter);}if(content.length){self._mergeArray('initialPreview',content);self._mergeArray('initialPreviewConfig',config);self._mergeArray('initialPreviewThumbTags',tags);}if($thumb!==undefined){if(!allFiles){index=self.previewCache.add(content[0],config[0],tags[0],append);data=self.previewCache.get(index,false);$div=$(document.createElement('div')).html(data).hide().insertAfter($thumb);$newCache=$div.find('.kv-zoom-cache');if($newCache&&$newCache.length){$newCache.insertAfter($thumb);}$thumb.fadeOut('slow',function(){var $newThumb=$div.find('.file-preview-frame');if($newThumb&&$newThumb.length){$newThumb.insertBefore($thumb).fadeIn('slow').css('display:inline-block');}self._initPreviewActions();self._clearFileInput();$h.cleanZoomCache(self.$preview.find('#zoom-'+$thumb.attr('id')));$thumb.remove();$div.remove();self._initSortable();});}else{i=$thumb.attr('data-fileindex');self.uploadCache.content[i]=content[0];self.uploadCache.config[i]=config[0]||[];self.uploadCache.tags[i]=tags[0]||[];self.uploadCache.append=append;}}else{self.previewCache.set(content,config,tags,append);self._initPreview();self._initPreviewActions();}}},_initSuccessThumbs:function(){var self=this;if(!self.showPreview){return;}self._getThumbs($h.FRAMES+'.file-preview-success').each(function(){var $thumb=$(this),$preview=self.$preview,$remove=$thumb.find('.kv-file-remove');$remove.removeAttr('disabled');self._handler($remove,'click',function(){var id=$thumb.attr('id'),out=self._raise('filesuccessremove',[id,$thumb.attr('data-fileindex')]);$h.cleanMemory($thumb);if(out===false){return;}$thumb.fadeOut('slow',function(){$h.cleanZoomCache($preview.find('#zoom-'+id));$thumb.remove();if(!self.getFrames().length){self.reset();}});});});},_updateInitialPreview:function(){var self=this,u=self.uploadCache,i,j,len=0,data=self.cacheInitialPreview;if(data&&data.content){len=data.content.length;}if(self.showPreview){self.previewCache.set(u.content,u.config,u.tags,u.append);if(len){for(i=0;i0||!$.isEmptyObject(self.uploadExtraData),uploadFailed,$prog,fnBefore,errMsg,fnSuccess,fnComplete,fnError,updateUploadLog,op=self.ajaxOperations.uploadThumb,fileObj=fm.getFile(id),params={id:previewId,index:i,fileId:id},fileName=self.fileManager.getFileName(id,true);if(self.enableResumableUpload){return;}if(self.showPreview){$thumb=self.fileManager.getThumb(id);$prog=$thumb.find('.file-thumb-progress');$btnUpload=$thumb.find('.kv-file-upload');$btnDelete=$thumb.find('.kv-file-remove');$prog.show();}if(count===0||!hasPostData||(self.showPreview&&$btnUpload&&$btnUpload.hasClass('disabled'))||self._abort(params)){return;}updateUploadLog=function(){if(!uploadFailed){fm.removeFile(id);}else{fm.errors.push(id);}fm.setProcessed(id);if(fm.isProcessed()){self.fileBatchCompleted=true;}};chkComplete=function(){var $initThumbs;if(!self.fileBatchCompleted){return;}setTimeout(function(){var triggerReset=fm.count()===0,errCount=fm.errors.length;self._updateInitialPreview();self.unlock(triggerReset);if(triggerReset){self._clearFileInput();}$initThumbs=self.$preview.find('.file-preview-initial');if(self.uploadAsync&&$initThumbs.length){$h.addCss($initThumbs,$h.SORT_CSS);self._initSortable();}self._raise('filebatchuploadcomplete',[fm.stack,self._getExtraData()]);if(!self.retryErrorUploads||errCount===0){fm.clear();}self._setProgress(101);self.ajaxAborted=false;},self.processDelay);};fnBefore=function(jqXHR){outData=self._getOutData(formdata,jqXHR);fm.initStats(id);self.fileBatchCompleted=false;if(!isBatch){self.ajaxAborted=false;}if(self.showPreview){if(!$thumb.hasClass('file-preview-success')){self._setThumbStatus($thumb,'Loading');$h.addCss($thumb,'file-uploading');}$btnUpload.attr('disabled',true);$btnDelete.attr('disabled',true);}if(!isBatch){self.lock();}if(fm.errors.indexOf(id)!==-1){delete fm.errors[id];}self._raise('filepreupload',[outData,previewId,i]);$.extend(true,params,outData);if(self._abort(params)){jqXHR.abort();if(!isBatch){self._setThumbStatus($thumb,'New');$thumb.removeClass('file-uploading');$btnUpload.removeAttr('disabled');$btnDelete.removeAttr('disabled');self.unlock();}self._setProgressCancelled();}};fnSuccess=function(data,textStatus,jqXHR){var pid=self.showPreview&&$thumb.attr('id')?$thumb.attr('id'):previewId;outData=self._getOutData(formdata,jqXHR,data);$.extend(true,params,outData);setTimeout(function(){if($h.isEmpty(data)||$h.isEmpty(data.error)){if(self.showPreview){self._setThumbStatus($thumb,'Success');$btnUpload.hide();self._initUploadSuccess(data,$thumb,isBatch);self._setProgress(101,$prog);}self._raise('fileuploaded',[outData,pid,i]);if(!isBatch){self.fileManager.remove($thumb);}else{updateUploadLog();}}else{uploadFailed=true;errMsg=self._parseError(op,jqXHR,self.msgUploadError,self.fileManager.getFileName(id));self._showFileError(errMsg,params);self._setPreviewError($thumb,true);if(!self.retryErrorUploads){$btnUpload.hide();}if(isBatch){updateUploadLog();}self._setProgress(101,$('#'+pid).find('.file-thumb-progress'),self.msgUploadError);}},self.processDelay);};fnComplete=function(){setTimeout(function(){if(self.showPreview){$btnUpload.removeAttr('disabled');$btnDelete.removeAttr('disabled');$thumb.removeClass('file-uploading');}if(!isBatch){self.unlock(false);self._clearFileInput();}else{chkComplete();}self._initSuccessThumbs();},self.processDelay);};fnError=function(jqXHR,textStatus,errorThrown){errMsg=self._parseError(op,jqXHR,errorThrown,self.fileManager.getFileName(id));uploadFailed=true;setTimeout(function(){if(isBatch){updateUploadLog();}self.fileManager.setProgress(id,100);self._setPreviewError($thumb,true);if(!self.retryErrorUploads){$btnUpload.hide();}$.extend(true,params,self._getOutData(formdata,jqXHR));self._setProgress(101,$prog,self.msgAjaxProgressError.replace('{operation}',op));self._setProgress(101,$thumb.find('.file-thumb-progress'),self.msgUploadError);self._showFileError(errMsg,params);},self.processDelay);};formdata.append(self.uploadFileAttr,fileObj.file,fileName);self._setUploadData(formdata,{fileId:id});self._ajaxSubmit(fnBefore,fnSuccess,fnComplete,fnError,formdata,id,i);},_uploadBatch:function(){var self=this,fm=self.fileManager,total=fm.total(),params={},fnBefore,fnSuccess,fnError,fnComplete,hasPostData=total>0||!$.isEmptyObject(self.uploadExtraData),errMsg,setAllUploaded,formdata=new FormData(),op=self.ajaxOperations.uploadBatch;if(total===0||!hasPostData||self._abort(params)){return;}setAllUploaded=function(){self.fileManager.clear();self._clearFileInput();};fnBefore=function(jqXHR){self.lock();fm.initStats();var outData=self._getOutData(formdata,jqXHR);self.ajaxAborted=false;if(self.showPreview){self._getThumbs().each(function(){var $thumb=$(this),$btnUpload=$thumb.find('.kv-file-upload'),$btnDelete=$thumb.find('.kv-file-remove');if(!$thumb.hasClass('file-preview-success')){self._setThumbStatus($thumb,'Loading');$h.addCss($thumb,'file-uploading');}$btnUpload.attr('disabled',true);$btnDelete.attr('disabled',true);});}self._raise('filebatchpreupload',[outData]);if(self._abort(outData)){jqXHR.abort();self._getThumbs().each(function(){var $thumb=$(this),$btnUpload=$thumb.find('.kv-file-upload'),$btnDelete=$thumb.find('.kv-file-remove');if($thumb.hasClass('file-preview-loading')){self._setThumbStatus($thumb,'New');$thumb.removeClass('file-uploading');}$btnUpload.removeAttr('disabled');$btnDelete.removeAttr('disabled');});self._setProgressCancelled();}};fnSuccess=function(data,textStatus,jqXHR){var outData=self._getOutData(formdata,jqXHR,data),key=0,$thumbs=self._getThumbs(':not(.file-preview-success)'),keys=$h.isEmpty(data)||$h.isEmpty(data.errorkeys)?[]:data.errorkeys;if($h.isEmpty(data)||$h.isEmpty(data.error)){self._raise('filebatchuploadsuccess',[outData]);setAllUploaded();if(self.showPreview){$thumbs.each(function(){var $thumb=$(this);self._setThumbStatus($thumb,'Success');$thumb.removeClass('file-uploading');$thumb.find('.kv-file-upload').hide().removeAttr('disabled');});self._initUploadSuccess(data);}else{self.reset();}self._setProgress(101);}else{if(self.showPreview){$thumbs.each(function(){var $thumb=$(this);$thumb.removeClass('file-uploading');$thumb.find('.kv-file-upload').removeAttr('disabled');$thumb.find('.kv-file-remove').removeAttr('disabled');if(keys.length===0||$.inArray(key,keys)!==-1){self._setPreviewError($thumb,true);if(!self.retryErrorUploads){$thumb.find('.kv-file-upload').hide();self.fileManager.remove($thumb);}}else{$thumb.find('.kv-file-upload').hide();self._setThumbStatus($thumb,'Success');self.fileManager.remove($thumb);}if(!$thumb.hasClass('file-preview-error')||self.retryErrorUploads){key++;}});self._initUploadSuccess(data);}errMsg=self._parseError(op,jqXHR,self.msgUploadError);self._showFileError(errMsg,outData,'filebatchuploaderror');self._setProgress(101,self.$progress,self.msgUploadError);}};fnComplete=function(){self.unlock();self._initSuccessThumbs();self._clearFileInput();self._raise('filebatchuploadcomplete',[self.fileManager.stack,self._getExtraData()]);};fnError=function(jqXHR,textStatus,errorThrown){var outData=self._getOutData(formdata,jqXHR);errMsg=self._parseError(op,jqXHR,errorThrown);self._showFileError(errMsg,outData,'filebatchuploaderror');self.uploadFileCount=total-1;if(!self.showPreview){return;}self._getThumbs().each(function(){var $thumb=$(this);$thumb.removeClass('file-uploading');if(self.fileManager.getFile($thumb.attr('data-fileid'))){self._setPreviewError($thumb);}});self._getThumbs().removeClass('file-uploading');self._getThumbs(' .kv-file-upload').removeAttr('disabled');self._getThumbs(' .kv-file-delete').removeAttr('disabled');self._setProgress(101,self.$progress,self.msgAjaxProgressError.replace('{operation}',op));};var ctr=0;$.each(self.fileManager.stack,function(key,data){if(!$h.isEmpty(data.file)){formdata.append(self.uploadFileAttr,data.file,(data.nameFmt||('untitled_'+ctr)));}ctr++;});self._ajaxSubmit(fnBefore,fnSuccess,fnComplete,fnError,formdata);},_uploadExtraOnly:function(){var self=this,params={},fnBefore,fnSuccess,fnComplete,fnError,formdata=new FormData(),errMsg,op=self.ajaxOperations.uploadExtra;if(self._abort(params)){return;}fnBefore=function(jqXHR){self.lock();var outData=self._getOutData(formdata,jqXHR);self._raise('filebatchpreupload',[outData]);self._setProgress(50);params.data=outData;params.xhr=jqXHR;if(self._abort(params)){jqXHR.abort();self._setProgressCancelled();}};fnSuccess=function(data,textStatus,jqXHR){var outData=self._getOutData(formdata,jqXHR,data);if($h.isEmpty(data)||$h.isEmpty(data.error)){self._raise('filebatchuploadsuccess',[outData]);self._clearFileInput();self._initUploadSuccess(data);self._setProgress(101);}else{errMsg=self._parseError(op,jqXHR,self.msgUploadError);self._showFileError(errMsg,outData,'filebatchuploaderror');}};fnComplete=function(){self.unlock();self._clearFileInput();self._raise('filebatchuploadcomplete',[self.fileManager.stack,self._getExtraData()]);};fnError=function(jqXHR,textStatus,errorThrown){var outData=self._getOutData(formdata,jqXHR);errMsg=self._parseError(op,jqXHR,errorThrown);params.data=outData;self._showFileError(errMsg,outData,'filebatchuploaderror');self._setProgress(101,self.$progress,self.msgAjaxProgressError.replace('{operation}',op));};self._ajaxSubmit(fnBefore,fnSuccess,fnComplete,fnError,formdata);},_deleteFileIndex:function($frame){var self=this,ind=$frame.attr('data-fileindex'),rev=self.reversePreviewOrder;if(ind.substring(0,5)==='init_'){ind=parseInt(ind.replace('init_',''));self.initialPreview=$h.spliceArray(self.initialPreview,ind,rev);self.initialPreviewConfig=$h.spliceArray(self.initialPreviewConfig,ind,rev);self.initialPreviewThumbTags=$h.spliceArray(self.initialPreviewThumbTags,ind,rev);self.getFrames().each(function(){var $nFrame=$(this),nInd=$nFrame.attr('data-fileindex');if(nInd.substring(0,5)==='init_'){nInd=parseInt(nInd.replace('init_',''));if(nInd>ind){nInd--;$nFrame.attr('data-fileindex','init_'+nInd);}}});if(self.uploadAsync||self.enableResumableUpload){self.cacheInitialPreview=self.getPreview();}}},_initFileActions:function(){var self=this,$preview=self.$preview;if(!self.showPreview){return;}self._initZoomButton();self.getFrames(' .kv-file-remove').each(function(){var $el=$(this),$frame=$el.closest($h.FRAMES),hasError,id=$frame.attr('id'),ind=$frame.attr('data-fileindex'),n,cap,status;self._handler($el,'click',function(){status=self._raise('filepreremove',[id,ind]);if(status===false||!self._validateMinCount()){return false;}hasError=$frame.hasClass('file-preview-error');$h.cleanMemory($frame);$frame.fadeOut('slow',function(){$h.cleanZoomCache($preview.find('#zoom-'+id));self.fileManager.remove($frame);self._clearObjects($frame);$frame.remove();if(id&&hasError){self.$errorContainer.find('li[data-thumb-id="'+id+'"]').fadeOut('fast',function(){$(this).remove();if(!self._errorsExist()){self._resetErrors();}});}self._clearFileInput();var chk=self.previewCache.count(true),len=self.fileManager.count(),file,hasThumb=self.showPreview&&self.getFrames().length;if(len===0&&chk===0&&!hasThumb){self.reset();}else{n=chk+len;if(n>1){cap=self._getMsgSelected(n);}else{file=self.fileManager.getFirstFile();cap=file?file.nameFmt:'_';}self._setCaption(cap);}self._raise('fileremoved',[id,ind]);});});});self.getFrames(' .kv-file-upload').each(function(){var $el=$(this);self._handler($el,'click',function(){var $frame=$el.closest($h.FRAMES),id=$frame.attr('data-fileid');self.$progress.hide();if($frame.hasClass('file-preview-error')&&!self.retryErrorUploads){return;}self._uploadSingle(self.fileManager.getIndex(id),id,false);});});},_initPreviewActions:function(){var self=this,$preview=self.$preview,deleteExtraData=self.deleteExtraData||{},btnRemove=$h.FRAMES+' .kv-file-remove',settings=self.fileActionSettings,origClass=settings.removeClass,errClass=settings.removeErrorClass,resetProgress=function(){var hasFiles=self.isAjaxUpload?self.previewCache.count(true):self._inputFileCount();if(!self.getFrames().length&&!hasFiles){self._setCaption('');self.reset();self.initialCaption='';}};self._initZoomButton();$preview.find(btnRemove).each(function(){var $el=$(this),vUrl=$el.data('url')||self.deleteUrl,vKey=$el.data('key'),errMsg,fnBefore,fnSuccess,fnError,op=self.ajaxOperations.deleteThumb;if($h.isEmpty(vUrl)||vKey===undefined){return;}if(typeof vUrl==='function'){vUrl=vUrl();}var $frame=$el.closest($h.FRAMES),cache=self.previewCache.data,settings,params,config,fileName,extraData,index=$frame.attr('data-fileindex');index=parseInt(index.replace('init_',''));config=$h.isEmpty(cache.config)&&$h.isEmpty(cache.config[index])?null:cache.config[index];extraData=$h.isEmpty(config)||$h.isEmpty(config.extra)?deleteExtraData:config.extra;fileName=config.filename||config.caption||'';if(typeof extraData==='function'){extraData=extraData();}params={id:$el.attr('id'),key:vKey,extra:extraData};fnBefore=function(jqXHR){self.ajaxAborted=false;self._raise('filepredelete',[vKey,jqXHR,extraData]);if(self._abort()){jqXHR.abort();}else{$el.removeClass(errClass);$h.addCss($frame,'file-uploading');$h.addCss($el,'disabled '+origClass);}};fnSuccess=function(data,textStatus,jqXHR){var n,cap;if(!$h.isEmpty(data)&&!$h.isEmpty(data.error)){params.jqXHR=jqXHR;params.response=data;errMsg=self._parseError(op,jqXHR,self.msgDeleteError,fileName);self._showFileError(errMsg,params,'filedeleteerror');$frame.removeClass('file-uploading');$el.removeClass('disabled '+origClass).addClass(errClass);resetProgress();return;}$frame.removeClass('file-uploading').addClass('file-deleted');$frame.fadeOut('slow',function(){index=parseInt(($frame.attr('data-fileindex')).replace('init_',''));self.previewCache.unset(index);self._deleteFileIndex($frame);n=self.previewCache.count(true);cap=n>0?self._getMsgSelected(n):'';self._setCaption(cap);self._raise('filedeleted',[vKey,jqXHR,extraData]);$h.cleanZoomCache($preview.find('#zoom-'+$frame.attr('id')));self._clearObjects($frame);$frame.remove();resetProgress();});};fnError=function(jqXHR,textStatus,errorThrown){var errMsg=self._parseError(op,jqXHR,errorThrown,fileName);params.jqXHR=jqXHR;params.response={};self._showFileError(errMsg,params,'filedeleteerror');$frame.removeClass('file-uploading');$el.removeClass('disabled '+origClass).addClass(errClass);resetProgress();};self._initAjaxSettings();self._mergeAjaxCallback('beforeSend',fnBefore,'delete');self._mergeAjaxCallback('success',fnSuccess,'delete');self._mergeAjaxCallback('error',fnError,'delete');settings=$.extend(true,{},{url:self._encodeURI(vUrl),type:'POST',dataType:'json',data:$.extend(true,{},{key:vKey},extraData)},self._ajaxDeleteSettings);self._handler($el,'click',function(){if(!self._validateMinCount()){return false;}self.ajaxAborted=false;self._raise('filebeforedelete',[vKey,extraData]);if(self.ajaxAborted instanceof Promise){self.ajaxAborted.then(function(result){if(!result){$.ajax(settings);}});}else{if(!self.ajaxAborted){$.ajax(settings);}}});});},_hideFileIcon:function(){var self=this;if(self.overwriteInitial){self.$captionContainer.removeClass('icon-visible');}},_showFileIcon:function(){var self=this;$h.addCss(self.$captionContainer,'icon-visible');},_getSize:function(bytes,sizes){var self=this,size=parseFloat(bytes),i,func=self.fileSizeGetter,out;if(!$.isNumeric(bytes)||!$.isNumeric(size)){return'';}if(typeof func==='function'){out=func(size);}else{if(size===0){out='0.00 B';}else{i=Math.floor(Math.log(size)/Math.log(1024));if(!sizes){sizes=['B','KB','MB','GB','TB','PB','EB','ZB','YB'];}out=(size/Math.pow(1024,i)).toFixed(2)*1+' '+sizes[i];}}return self._getLayoutTemplate('size').replace('{sizeText}',out);},_getFileType:function(ftype){var self=this;return self.mimeTypeAliases[ftype]||ftype;},_generatePreviewTemplate:function(cat,data,fname,ftype,previewId,fileId,isError,size,frameClass,foot,ind,templ,attrs,zoomData){var self=this,caption=self.slug(fname),prevContent,zoomContent='',styleAttribs='',screenW=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,config,newCat=self.preferIconicPreview?'other':cat,title=caption,alt=caption,footer=foot||self._renderFileFooter(cat,caption,size,'auto',isError),hasIconSetting=self._getPreviewIcon(fname),typeCss='type-default',forcePrevIcon=hasIconSetting&&self.preferIconicPreview,forceZoomIcon=hasIconSetting&&self.preferIconicZoomPreview,getContent;config=screenW<400?(self.previewSettingsSmall[newCat]||self.defaults.previewSettingsSmall[newCat]):(self.previewSettings[newCat]||self.defaults.previewSettings[newCat]);if(config){$.each(config,function(key,val){styleAttribs+=key+':'+val+';';});}getContent=function(c,d,zoom,frameCss){var id=zoom?'zoom-'+previewId:previewId,tmplt=self._getPreviewTemplate(c),css=(frameClass||'')+' '+frameCss;if(self.frameClass){css=self.frameClass+' '+css;}if(zoom){css=css.replace(' '+$h.SORT_CSS,'');}tmplt=self._parseFilePreviewIcon(tmplt,fname);if(c==='text'){d=$h.htmlEncode(d);}if(cat==='object'&&!ftype){$.each(self.defaults.fileTypeSettings,function(key,func){if(key==='object'||key==='other'){return;}if(func(fname,ftype)){typeCss='type-'+key;}});}if(!$h.isEmpty(attrs)){if(attrs.title!==undefined&&attrs.title!==null){title=attrs.title;}if(attrs.alt!==undefined&&attrs.alt!==null){title=attrs.alt;}}return tmplt.setTokens({'previewId':id,'caption':caption,'title':title,'alt':alt,'frameClass':css,'type':self._getFileType(ftype),'fileindex':ind,'fileid':fileId||'','typeCss':typeCss,'footer':footer,'data':d,'template':templ||cat,'style':styleAttribs?'style="'+styleAttribs+'"':''});};ind=ind||previewId.slice(previewId.lastIndexOf('-')+1);if(self.fileActionSettings.showZoom){zoomContent=getContent((forceZoomIcon?'other':cat),zoomData?zoomData:data,true,'kv-zoom-thumb');}zoomContent='\n'+self._getLayoutTemplate('zoomCache').replace('{zoomContent}',zoomContent);if(typeof self.sanitizeZoomCache==='function'){zoomContent=self.sanitizeZoomCache(zoomContent);}prevContent=getContent((forcePrevIcon?'other':cat),data,false,'kv-preview-thumb');return prevContent+zoomContent;},_addToPreview:function($preview,content){var self=this;return self.reversePreviewOrder?$preview.prepend(content):$preview.append(content);},_previewDefault:function(file,previewId,isDisabled){var self=this,$preview=self.$preview;if(!self.showPreview){return;}var fname=$h.getFileName(file),ftype=file?file.type:'',content,size=file.size||0,caption=self._getFileName(file,''),isError=isDisabled===true&&!self.isAjaxUpload,data=$h.createObjectURL(file),fileId=self.fileManager.getId(file);self._clearDefaultPreview();content=self._generatePreviewTemplate('other',data,fname,ftype,previewId,fileId,isError,size);self._addToPreview($preview,content);self._setThumbAttr(previewId,caption,size);if(isDisabled===true&&self.isAjaxUpload){self._setThumbStatus($('#'+previewId),'Error');}},canPreview:function(file){var self=this;if(!file||!self.showPreview||!self.$preview||!self.$preview.length){return false;}var name=file.name||'',type=file.type||'',size=(file.size||0)/1000,cat=self._parseFileType(type,name),allowedTypes,allowedMimes,allowedExts,skipPreview,types=self.allowedPreviewTypes,mimes=self.allowedPreviewMimeTypes,exts=self.allowedPreviewExtensions||[],dTypes=self.disabledPreviewTypes,dMimes=self.disabledPreviewMimeTypes,dExts=self.disabledPreviewExtensions||[],maxSize=self.maxFilePreviewSize&&parseFloat(self.maxFilePreviewSize)||0,expAllExt=new RegExp('\\.('+exts.join('|')+')$','i'),expDisExt=new RegExp('\\.('+dExts.join('|')+')$','i');allowedTypes=!types||types.indexOf(cat)!==-1;allowedMimes=!mimes||mimes.indexOf(type)!==-1;allowedExts=!exts.length||$h.compare(name,expAllExt);skipPreview=(dTypes&&dTypes.indexOf(cat)!==-1)||(dMimes&&dMimes.indexOf(type)!==-1)||(dExts.length&&$h.compare(name,expDisExt))||(maxSize&&!isNaN(maxSize)&&size>maxSize);return!skipPreview&&(allowedTypes||allowedMimes||allowedExts);},_previewFile:function(i,file,theFile,previewId,data,fileInfo){if(!this.showPreview){return;}var self=this,fname=$h.getFileName(file),ftype=fileInfo.type,caption=fileInfo.name,cat=self._parseFileType(ftype,fname),content,$preview=self.$preview,fsize=file.size||0,iData=(cat==='text'||cat==='html'||cat==='image')?theFile.target.result:data,fileId=self.fileManager.getId(file);if(cat==='html'&&self.purifyHtml&&window.DOMPurify){iData=window.DOMPurify.sanitize(iData);}content=self._generatePreviewTemplate(cat,iData,fname,ftype,previewId,fileId,false,fsize);self._clearDefaultPreview();self._addToPreview($preview,content);var $thumb=$preview.find('#'+previewId),$img=$thumb.find('img'),id=$thumb.attr('data-fileid');self._validateImageOrientation($img,file,previewId,id,caption,ftype,fsize,iData);self._setThumbAttr(previewId,caption,fsize);self._initSortable();},_setThumbAttr:function(id,caption,size){var self=this,$frame=$('#'+id);if($frame.length){size=size&&size>0?self._getSize(size):'';$frame.data({'caption':caption,'size':size});}},_setInitThumbAttr:function(){var self=this,data=self.previewCache.data,len=self.previewCache.count(true),config,caption,size,previewId;if(len===0){return;}for(var i=0;i&"']/g,'_');},_updateFileDetails:function(numFiles){var self=this,$el=self.$element,label,n,log,nFiles,file,name=($h.isIE(9)&&$h.findFileName($el.val()))||($el[0].files[0]&&$el[0].files[0].name);if(!name&&self.fileManager.count()>0){file=self.fileManager.getFirstFile();label=file.nameFmt;}else{label=name?self.slug(name):'_';}n=self.isAjaxUpload?self.fileManager.count():numFiles;nFiles=self.previewCache.count(true)+n;log=n===1?label:self._getMsgSelected(nFiles);if(self.isError){self.$previewContainer.removeClass('file-thumb-loading');self.$previewStatus.html('');self.$captionContainer.removeClass('icon-visible');}else{self._showFileIcon();}self._setCaption(log,self.isError);self.$container.removeClass('file-input-new file-input-ajax-new');if(arguments.length===1){self._raise('fileselect',[numFiles,label]);}if(self.previewCache.count(true)){self._initPreviewActions();}},_setThumbStatus:function($thumb,status){var self=this;if(!self.showPreview){return;}var icon='indicator'+status,msg=icon+'Title',css='file-preview-'+status.toLowerCase(),$indicator=$thumb.find('.file-upload-indicator'),config=self.fileActionSettings;$thumb.removeClass('file-preview-success file-preview-error file-preview-paused file-preview-loading');if(status==='Success'){$thumb.find('.file-drag-handle').remove();}$indicator.html(config[icon]);$indicator.attr('title',config[msg]);$thumb.addClass(css);if(status==='Error'&&!self.retryErrorUploads){$thumb.find('.kv-file-upload').attr('disabled',true);}},_setProgressCancelled:function(){var self=this;self._setProgress(101,self.$progress,self.msgCancelled);},_setProgress:function(p,$el,error,stats){var self=this;$el=$el||self.$progress;if(!$el.length){return;}var pct=Math.min(p,100),out,pctLimit=self.progressUploadThreshold,t=p<=100?self.progressTemplate:self.progressCompleteTemplate,template=pct<100?self.progressTemplate:(error?(self.paused?self.progressPauseTemplate:self.progressErrorTemplate):t);if(p>=100){stats='';}if(!$h.isEmpty(template)){if(pctLimit&&pct>pctLimit&&p<=100){out=template.setTokens({'percent':pctLimit,'status':self.msgUploadThreshold});}else{out=template.setTokens({'percent':pct,'status':(p>100?self.msgUploadEnd:pct+'%')});}stats=stats||'';out=out.setTokens({stats:stats});$el.html(out);if(error){$el.find('[role="progressbar"]').html(error);}}},_setFileDropZoneTitle:function(){var self=this,$zone=self.$container.find('.file-drop-zone'),title=self.dropZoneTitle,strFiles;if(self.isClickable){strFiles=$h.isEmpty(self.$element.attr('multiple'))?self.fileSingle:self.filePlural;title+=self.dropZoneClickTitle.replace('{files}',strFiles);}$zone.find('.'+self.dropZoneTitleClass).remove();if(!self.showPreview||$zone.length===0||self.fileManager.count()>0||!self.dropZoneEnabled||(!self.isAjaxUpload&&self.$element.files)){return;}if($zone.find($h.FRAMES).length===0&&$h.isEmpty(self.defaultPreviewContent)){$zone.prepend('
    '+title+'
    ');}self.$container.removeClass('file-input-new');$h.addCss(self.$container,'file-input-ajax-new');},_getStats:function(stats){var self=this,pendingTime,t;if(!self.showUploadStats||!stats||!stats.bitrate){return'';}t=self._getLayoutTemplate('stats');pendingTime=(!stats.elapsed||!stats.bps)?self.msgCalculatingTime:self.msgPendingTime.setTokens({time:$h.getElapsed(Math.ceil(stats.pendingBytes/stats.bps))});return t.setTokens({uploadSpeed:stats.bitrate,pendingTime:pendingTime});},_setResumableProgress:function(pct,stats,$thumb){var self=this,rm=self.resumableManager,obj=$thumb?rm:self,$prog=$thumb?$thumb.find('.file-thumb-progress'):null;if(obj.lastProgress===0){obj.lastProgress=pct;}if(pct0&&self._getFileCount(len-1)=limit:dim<=limit;if(isValid){return;}msg=self['msgImage'+type+chk].setTokens({'name':fname,'size':limit});self._showFileError(msg,params);self._setPreviewError($thumb);},_getExifObj:function(data){var self=this,exifObj=null,error=$h.logMessages.exifWarning;if(data.slice(0,23)!=='data:image/jpeg;base64,'&&data.slice(0,22)!=='data:image/jpg;base64,'){exifObj=null;return;}try{exifObj=window.piexif?window.piexif.load(data):null;}catch(err){exifObj=null;error=err&&err.message||'';}if(!exifObj){self._log($h.logMessages.badExifParser,{details:error});}return exifObj;},setImageOrientation:function($img,$zoomImg,value,$thumb){var self=this,invalidImg=!$img||!$img.length,invalidZoomImg=!$zoomImg||!$zoomImg.length,$mark,isHidden=false,$div,zoomOnly=invalidImg&&$thumb&&$thumb.attr('data-template')==='image',ev;if(invalidImg&&invalidZoomImg){return;}ev='load.fileinputimageorient';if(zoomOnly){$img=$zoomImg;$zoomImg=null;$img.css(self.previewSettings.image);$div=$(document.createElement('div')).appendTo($thumb.find('.kv-file-content'));$mark=$(document.createElement('span')).insertBefore($img);$img.css('visibility','hidden').removeClass('file-zoom-detail').appendTo($div);}else{isHidden=!$img.is(':visible');}$img.off(ev).on(ev,function(){if(isHidden){self.$preview.removeClass('hide-content');$thumb.find('.kv-file-content').css('visibility','hidden');}var img=$img.get(0),zoomImg=$zoomImg&&$zoomImg.length?$zoomImg.get(0):null,h=img.offsetHeight,w=img.offsetWidth,r=$h.getRotation(value);if(isHidden){$thumb.find('.kv-file-content').css('visibility','visible');self.$preview.addClass('hide-content');}$img.data('orientation',value);if(zoomImg){$zoomImg.data('orientation',value);}if(value<5){$h.setTransform(img,r);$h.setTransform(zoomImg,r);return;}var offsetAngle=Math.atan(w/h),origFactor=Math.sqrt(Math.pow(h,2)+Math.pow(w,2)),scale=!origFactor?1:(h/Math.cos(Math.PI/2+offsetAngle))/origFactor,s=' scale('+Math.abs(scale)+')';$h.setTransform(img,r+s);$h.setTransform(zoomImg,r+s);if(zoomOnly){$img.css('visibility','visible').insertAfter($mark).addClass('file-zoom-detail');$mark.remove();$div.remove();}});},_validateImageOrientation:function($img,file,previewId,fileId,caption,ftype,fsize,iData){var self=this,exifObj,value,autoOrientImage=self.autoOrientImage;exifObj=autoOrientImage?self._getExifObj(iData):null;value=exifObj?exifObj['0th'][piexif.ImageIFD.Orientation]:null;if(!value){self._validateImage(previewId,fileId,caption,ftype,fsize,iData,exifObj);return;}self.setImageOrientation($img,$('#zoom-'+previewId+' img'),value,$('#'+previewId));self._raise('fileimageoriented',{'$img':$img,'file':file});self._validateImage(previewId,fileId,caption,ftype,fsize,iData,exifObj);},_validateImage:function(previewId,fileId,fname,ftype,fsize,iData,exifObj){var self=this,$preview=self.$preview,params,w1,w2,$thumb=$preview.find('#'+previewId),i=$thumb.attr('data-fileindex'),$img=$thumb.find('img');fname=fname||'Untitled';$img.one('load',function(){w1=$thumb.width();w2=$preview.width();if(w1>w2){$img.css('width','100%');}params={ind:i,id:previewId,fileId:fileId};self._checkDimensions(i,'Small',$img,$thumb,fname,'Width',params);self._checkDimensions(i,'Small',$img,$thumb,fname,'Height',params);if(!self.resizeImage){self._checkDimensions(i,'Large',$img,$thumb,fname,'Width',params);self._checkDimensions(i,'Large',$img,$thumb,fname,'Height',params);}self._raise('fileimageloaded',[previewId]);self.fileManager.addImage(fileId,{ind:i,img:$img,thumb:$thumb,pid:previewId,typ:ftype,siz:fsize,validated:false,imgData:iData,exifObj:exifObj});$thumb.data('exif',exifObj);self._validateAllImages();}).one('error',function(){self._raise('fileimageloaderror',[previewId]);}).each(function(){if(this.complete){$(this).trigger('load');}else{if(this.error){$(this).trigger('error');}}});},_validateAllImages:function(){var self=this,counter={val:0},numImgs=self.fileManager.getImageCount(),fsize,minSize=self.resizeIfSizeMoreThan;if(numImgs!==self.fileManager.totalImages){return;}self._raise('fileimagesloaded');if(!self.resizeImage){return;}$.each(self.fileManager.loadedImages,function(id,config){if(!config.validated){fsize=config.siz;if(fsize&&fsize>minSize*1000){self._getResizedImage(id,config,counter,numImgs);}config.validated=true;}});},_getResizedImage:function(id,config,counter,numImgs){var self=this,img=$(config.img)[0],width=img.naturalWidth,height=img.naturalHeight,blob,ratio=1,maxWidth=self.maxImageWidth||width,maxHeight=self.maxImageHeight||height,isValidImage=!!(width&&height),chkWidth,chkHeight,canvas=self.imageCanvas,dataURI,context=self.imageCanvasContext,type=config.typ,pid=config.pid,ind=config.ind,$thumb=config.thumb,throwError,msg,exifObj=config.exifObj,exifStr,file,params,evParams;throwError=function(msg,params,ev){if(self.isAjaxUpload){self._showFileError(msg,params,ev);}else{self._showError(msg,params,ev);}self._setPreviewError($thumb);};file=self.fileManager.getFile(id);params={id:pid,'index':ind,fileId:id};evParams=[id,pid,ind];if(!file||!isValidImage||(width<=maxWidth&&height<=maxHeight)){if(isValidImage&&file){self._raise('fileimageresized',evParams);}counter.val++;if(counter.val===numImgs){self._raise('fileimagesresized');}if(!isValidImage){throwError(self.msgImageResizeError,params,'fileimageresizeerror');return;}}type=type||self.resizeDefaultImageType;chkWidth=width>maxWidth;chkHeight=height>maxHeight;if(self.resizePreference==='width'){ratio=chkWidth?maxWidth/width:(chkHeight?maxHeight/height:1);}else{ratio=chkHeight?maxHeight/height:(chkWidth?maxWidth/width:1);}self._resetCanvas();width*=ratio;height*=ratio;canvas.width=width;canvas.height=height;try{context.drawImage(img,0,0,width,height);dataURI=canvas.toDataURL(type,self.resizeQuality);if(exifObj){exifStr=window.piexif.dump(exifObj);dataURI=window.piexif.insert(exifStr,dataURI);}blob=$h.dataURI2Blob(dataURI);self.fileManager.setFile(id,blob);self._raise('fileimageresized',evParams);counter.val++;if(counter.val===numImgs){self._raise('fileimagesresized',[undefined,undefined]);}if(!(blob instanceof Blob)){throwError(self.msgImageResizeError,params,'fileimageresizeerror');}}catch(err){counter.val++;if(counter.val===numImgs){self._raise('fileimagesresized',[undefined,undefined]);}msg=self.msgImageResizeException.replace('{errors}',err.message);throwError(msg,params,'fileimageresizeexception');}},_initBrowse:function($container){var self=this,$el=self.$element;if(self.showBrowse){self.$btnFile=$container.find('.btn-file').append($el);}else{$el.appendTo($container).attr('tabindex',-1);$h.addCss($el,'file-no-browse');}},_initClickable:function(){var self=this,$zone,$tmpZone;if(!self.isClickable){return;}$zone=self.$dropZone;if(!self.isAjaxUpload){$tmpZone=self.$preview.find('.file-default-preview');if($tmpZone.length){$zone=$tmpZone;}}$h.addCss($zone,'clickable');$zone.attr('tabindex',-1);self._handler($zone,'click',function(e){var $tar=$(e.target);if(!$(self.elErrorContainer+':visible').length&&(!$tar.parents('.file-preview-thumbnails').length||$tar.parents('.file-default-preview').length)){self.$element.data('zoneClicked',true).trigger('click');$zone.blur();}});},_initCaption:function(){var self=this,cap=self.initialCaption||'';if(self.overwriteInitial||$h.isEmpty(cap)){self.$caption.val('');return false;}self._setCaption(cap);return true;},_setCaption:function(content,isError){var self=this,title,out,icon,n,cap,file;if(!self.$caption.length){return;}self.$captionContainer.removeClass('icon-visible');if(isError){title=$('
    '+self.msgValidationError+'
    ').text();n=self.fileManager.count();if(n){file=self.fileManager.getFirstFile();cap=n===1&&file?file.nameFmt:self._getMsgSelected(n);}else{cap=self._getMsgSelected(self.msgNo);}out=$h.isEmpty(content)?cap:content;icon=''+self.msgValidationErrorIcon+'';}else{if($h.isEmpty(content)){return;}title=$('
    '+content+'
    ').text();out=title;icon=self._getLayoutTemplate('fileIcon');}self.$captionContainer.addClass('icon-visible');self.$caption.attr('title',title).val(out);self.$captionIcon.html(icon);},_createContainer:function(){var self=this,attribs={'class':'file-input file-input-new'+(self.rtl?' kv-rtl':'')},$container=$(document.createElement('div')).attr(attribs).html(self._renderMain());$container.insertBefore(self.$element);self._initBrowse($container);if(self.theme){$container.addClass('theme-'+self.theme);}return $container;},_refreshContainer:function(){var self=this,$container=self.$container,$el=self.$element;$el.insertAfter($container);$container.html(self._renderMain());self._initBrowse($container);self._validateDisabled();},_validateDisabled:function(){var self=this;self.$caption.attr({readonly:self.isDisabled});},_renderMain:function(){var self=this,dropCss=self.dropZoneEnabled?' file-drop-zone':'file-drop-disabled',close=!self.showClose?'':self._getLayoutTemplate('close'),preview=!self.showPreview?'':self._getLayoutTemplate('preview').setTokens({'class':self.previewClass,'dropClass':dropCss}),css=self.isDisabled?self.captionClass+' file-caption-disabled':self.captionClass,caption=self.captionTemplate.setTokens({'class':css+' kv-fileinput-caption'});return self.mainTemplate.setTokens({'class':self.mainClass+(!self.showBrowse&&self.showCaption?' no-browse':''),'preview':preview,'close':close,'caption':caption,'upload':self._renderButton('upload'),'remove':self._renderButton('remove'),'cancel':self._renderButton('cancel'),'pause':self._renderButton('pause'),'browse':self._renderButton('browse')});},_renderButton:function(type){var self=this,tmplt=self._getLayoutTemplate('btnDefault'),css=self[type+'Class'],title=self[type+'Title'],icon=self[type+'Icon'],label=self[type+'Label'],status=self.isDisabled?' disabled':'',btnType='button';switch(type){case'remove':if(!self.showRemove){return'';}break;case'cancel':if(!self.showCancel){return'';}css+=' kv-hidden';break;case'pause':if(!self.showPause){return'';}css+=' kv-hidden';break;case'upload':if(!self.showUpload){return'';}if(self.isAjaxUpload&&!self.isDisabled){tmplt=self._getLayoutTemplate('btnLink').replace('{href}',self.uploadUrl);}else{btnType='submit';}break;case'browse':if(!self.showBrowse){return'';}tmplt=self._getLayoutTemplate('btnBrowse');break;default:return'';}css+=type==='browse'?' btn-file':' fileinput-'+type+' fileinput-'+type+'-button';if(!$h.isEmpty(label)){label=' '+label+'';}return tmplt.setTokens({'type':btnType,'css':css,'title':title,'status':status,'icon':icon,'label':label});},_renderThumbProgress:function(){var self=this;return'
    '+self.progressInfoTemplate.setTokens({percent:101,status:self.msgUploadBegin,stats:''})+'
    ';},_renderFileFooter:function(cat,caption,size,width,isError){var self=this,config=self.fileActionSettings,rem=config.showRemove,drg=config.showDrag,upl=config.showUpload,zoom=config.showZoom,out,params,template=self._getLayoutTemplate('footer'),tInd=self._getLayoutTemplate('indicator'),ind=isError?config.indicatorError:config.indicatorNew,title=isError?config.indicatorErrorTitle:config.indicatorNewTitle,indicator=tInd.setTokens({'indicator':ind,'indicatorTitle':title});size=self._getSize(size);params={type:cat,caption:caption,size:size,width:width,progress:'',indicator:indicator};if(self.isAjaxUpload){params.progress=self._renderThumbProgress();params.actions=self._renderFileActions(params,upl,false,rem,zoom,drg,false,false,false);}else{params.actions=self._renderFileActions(params,false,false,false,zoom,drg,false,false,false);}out=template.setTokens(params);out=$h.replaceTags(out,self.previewThumbTags);return out;},_renderFileActions:function(cfg,showUpl,showDwn,showDel,showZoom,showDrag,disabled,url,key,isInit,dUrl,dFile){var self=this;if(!cfg.type&&isInit){cfg.type='image';}if(self.enableResumableUpload){showUpl=false;}else{if(typeof showUpl==='function'){showUpl=showUpl(cfg);}}if(typeof showDwn==='function'){showDwn=showDwn(cfg);}if(typeof showDel==='function'){showDel=showDel(cfg);}if(typeof showZoom==='function'){showZoom=showZoom(cfg);}if(typeof showDrag==='function'){showDrag=showDrag(cfg);}if(!showUpl&&!showDwn&&!showDel&&!showZoom&&!showDrag){return'';}var vUrl=url===false?'':' data-url="'+url+'"',btnZoom='',btnDrag='',css,vKey=key===false?'':' data-key="'+key+'"',btnDelete='',btnUpload='',btnDownload='',template=self._getLayoutTemplate('actions'),config=self.fileActionSettings,otherButtons=self.otherActionButtons.setTokens({'dataKey':vKey,'key':key}),removeClass=disabled?config.removeClass+' disabled':config.removeClass;if(showDel){btnDelete=self._getLayoutTemplate('actionDelete').setTokens({'removeClass':removeClass,'removeIcon':config.removeIcon,'removeTitle':config.removeTitle,'dataUrl':vUrl,'dataKey':vKey,'key':key});}if(showUpl){btnUpload=self._getLayoutTemplate('actionUpload').setTokens({'uploadClass':config.uploadClass,'uploadIcon':config.uploadIcon,'uploadTitle':config.uploadTitle});}if(showDwn){btnDownload=self._getLayoutTemplate('actionDownload').setTokens({'downloadClass':config.downloadClass,'downloadIcon':config.downloadIcon,'downloadTitle':config.downloadTitle,'downloadUrl':dUrl||self.initialPreviewDownloadUrl});btnDownload=btnDownload.setTokens({'filename':dFile,'key':key});}if(showZoom){btnZoom=self._getLayoutTemplate('actionZoom').setTokens({'zoomClass':config.zoomClass,'zoomIcon':config.zoomIcon,'zoomTitle':config.zoomTitle});}if(showDrag&&isInit){css='drag-handle-init '+config.dragClass;btnDrag=self._getLayoutTemplate('actionDrag').setTokens({'dragClass':css,'dragTitle':config.dragTitle,'dragIcon':config.dragIcon});}return template.setTokens({'delete':btnDelete,'upload':btnUpload,'download':btnDownload,'zoom':btnZoom,'drag':btnDrag,'other':otherButtons});},_browse:function(e){var self=this;if(e&&e.isDefaultPrevented()||!self._raise('filebrowse')){return;}if(self.isError&&!self.isAjaxUpload){self.clear();}self.$captionContainer.focus();},_change:function(e){var self=this;if(self.changeTriggered){return;}var $el=self.$element,isDragDrop=arguments.length>1,isAjaxUpload=self.isAjaxUpload,tfiles,files=isDragDrop?arguments[1]:$el.get(0).files,total,maxCount=!isAjaxUpload&&$h.isEmpty($el.attr('multiple'))?1:self.maxFileCount,len,ctr=self.fileManager.count(),isSingleUpload=$h.isEmpty($el.attr('multiple')),flagSingle=(isSingleUpload&&ctr>0),throwError=function(mesg,file,previewId,index){var p1=$.extend(true,{},self._getOutData(null,{},{},files),{id:previewId,index:index}),p2={id:previewId,index:index,file:file,files:files};return isAjaxUpload?self._showFileError(mesg,p1):self._showError(mesg,p2);},maxCountCheck=function(n,m){var msg=self.msgFilesTooMany.replace('{m}',m).replace('{n}',n);self.isError=throwError(msg,null,null,null);self.$captionContainer.removeClass('icon-visible');self._setCaption('',true);self.$container.removeClass('file-input-new file-input-ajax-new');};self.reader=null;self._resetUpload();self._hideFileIcon();if(self.dropZoneEnabled){self.$container.find('.file-drop-zone .'+self.dropZoneTitleClass).remove();}if(!isAjaxUpload){if(e.target&&e.target.files===undefined){files=e.target.value?[{name:e.target.value.replace(/^.+\\/,'')}]:[];}else{files=e.target.files||{};}}tfiles=files;if($h.isEmpty(tfiles)||tfiles.length===0){if(!isAjaxUpload){self.clear();}self._raise('fileselectnone');return;}self._resetErrors();len=tfiles.length;total=self._getFileCount(isAjaxUpload?(self.fileManager.count()+len):len);if(maxCount>0&&total>maxCount){if(!self.autoReplace||len>maxCount){maxCountCheck((self.autoReplace&&len>maxCount?len:total),maxCount);return;}if(total>maxCount){self._resetPreviewThumbs(isAjaxUpload);}}else{if(!isAjaxUpload||flagSingle){self._resetPreviewThumbs(false);if(flagSingle){self.clearFileStack();}}else{if(isAjaxUpload&&ctr===0&&(!self.previewCache.count(true)||self.overwriteInitial)){self._resetPreviewThumbs(true);}}}self.readFiles(tfiles);},_abort:function(params){var self=this,data;if(self.ajaxAborted&&typeof self.ajaxAborted==='object'&&self.ajaxAborted.message!==undefined){data=$.extend(true,{},self._getOutData(null),params);data.abortData=self.ajaxAborted.data||{};data.abortMessage=self.ajaxAborted.message;self._setProgress(101,self.$progress,self.msgCancelled);self._showFileError(self.ajaxAborted.message,data,'filecustomerror');self.cancel();return true;}return!!self.ajaxAborted;},_resetFileStack:function(){var self=this,i=0;self._getThumbs().each(function(){var $thumb=$(this),ind=$thumb.attr('data-fileindex'),pid=$thumb.attr('id');if(ind==='-1'||ind===-1){return;}if(!self.fileManager.getFile($thumb.attr('data-fileid'))){$thumb.attr({'id':self.previewInitId+'-'+i,'data-fileindex':i});i++;}else{$thumb.attr({'id':'uploaded-'+$h.uniqId(),'data-fileindex':'-1'});}self.$preview.find('#zoom-'+pid).attr({'id':'zoom-'+$thumb.attr('id'),'data-fileindex':$thumb.attr('data-fileindex')});});},_isFileSelectionValid:function(cnt){var self=this;cnt=cnt||0;if(self.required&&!self.getFilesCount()){self.$errorContainer.html('');self._showFileError(self.msgFileRequired);return false;}if(self.minFileCount>0&&self._getFileCount(cnt)=numFiles){if(self.isAjaxUpload&&self.fileManager.count()>0){self._raise('filebatchselected',[self.fileManager.stack]);}else{self._raise('filebatchselected',[files]);}$container.removeClass('file-thumb-loading');$status.html('');return;}var node=ctr+i,previewId=previewInitId+'-'+node,file=files[i],fSizeKB,j,msg,$thumb,fnText=settings.text,fnImage=settings.image,fnHtml=settings.html,typ,chk,typ1,typ2,caption=self._getFileName(file,''),fileSize=(file&&file.size||0)/1000,fileExtExpr='',previewData=$h.createObjectURL(file),fileCount=0,strTypes='',fileId,func,knownTypes=0,isText,isHtml,isImage,txtFlag,processFileLoaded=function(){var msg=msgProgress.setTokens({'index':i+1,'files':numFiles,'percent':50,'name':caption});setTimeout(function(){$status.html(msg);self._updateFileDetails(numFiles);readFile(i+1);},self.processDelay);self._raise('fileloaded',[file,previewId,i,reader]);};if(!file){return;}fileId=self.fileManager.getId(file);if(typLen>0){for(j=0;j0&&fileSize>self.maxFileSize){msg=self.msgSizeTooLarge.setTokens({'name':caption,'size':fSizeKB,'maxSize':self.maxFileSize});throwError(msg,file,previewId,i,fileId);return;}if(self.minFileSize!==null&&fileSize<=$h.getNum(self.minFileSize)){msg=self.msgSizeTooSmall.setTokens({'name':caption,'size':fSizeKB,'minSize':self.minFileSize});throwError(msg,file,previewId,i,fileId);return;}if(!$h.isEmpty(fileTypes)&&$h.isArray(fileTypes)){for(j=0;j0){for(i=0;i0){for(i=0;i0)?self.initialCaption:'';self.$caption.attr('title','').val(cap);$h.addCss(self.$container,'file-input-new');self._validateDefaultPreview();}if(self.$container.find($h.FRAMES).length===0){if(!self._initCaption()){self.$captionContainer.removeClass('icon-visible');}}self._hideFileIcon();self.$captionContainer.focus();self._setFileDropZoneTitle();self._raise('filecleared');return self.$element;},reset:function(){var self=this;if(!self._raise('filereset')){return;}self.lastProgress=0;self._resetPreview();self.$container.find('.fileinput-filename').text('');$h.addCss(self.$container,'file-input-new');if(self.getFrames().length||self.dropZoneEnabled){self.$container.removeClass('file-input-new');}self.clearFileStack();self._setFileDropZoneTitle();return self.$element;},disable:function(){var self=this;self.isDisabled=true;self._raise('filedisabled');self.$element.attr('disabled','disabled');self.$container.find('.kv-fileinput-caption').addClass('file-caption-disabled');self.$container.find('.fileinput-remove, .fileinput-upload, .file-preview-frame button').attr('disabled',true);$h.addCss(self.$container.find('.btn-file'),'disabled');self._initDragDrop();return self.$element;},enable:function(){var self=this;self.isDisabled=false;self._raise('fileenabled');self.$element.removeAttr('disabled');self.$container.find('.kv-fileinput-caption').removeClass('file-caption-disabled');self.$container.find('.fileinput-remove, .fileinput-upload, .file-preview-frame button').removeAttr('disabled');self.$container.find('.btn-file').removeClass('disabled');self._initDragDrop();return self.$element;},upload:function(){var self=this,fm=self.fileManager,totLen=fm.count(),i,outData,len,hasExtraData=!$.isEmptyObject(self._getExtraData());if(!self.isAjaxUpload||self.isDisabled||!self._isFileSelectionValid(totLen)){return;}self.lastProgress=0;self._resetUpload();if(totLen===0&&!hasExtraData){self._showFileError(self.msgUploadEmpty);return;}self.cancelling=false;self.$progress.show();self.lock();len=fm.count();if(totLen===0&&hasExtraData){self._setProgress(2);self._uploadExtraOnly();return;}if(self.enableResumableUpload){return self.resume();}if(self.uploadAsync||self.enableResumableUpload){outData=self._getOutData(null);self._raise('filebatchpreupload',[outData]);self.fileBatchCompleted=false;self.uploadCache={content:[],config:[],tags:[],append:true};for(i=0;i
    ',next:'',toggleheader:'',fullscreen:'',borderless:'',close:''},previewZoomButtonClasses:{prev:'btn btn-navigate',next:'btn btn-navigate',toggleheader:'btn btn-sm btn-kv btn-default btn-outline-secondary',fullscreen:'btn btn-sm btn-kv btn-default btn-outline-secondary',borderless:'btn btn-sm btn-kv btn-default btn-outline-secondary',close:'btn btn-sm btn-kv btn-default btn-outline-secondary'},previewTemplates:{},previewContentTemplates:{},preferIconicPreview:false,preferIconicZoomPreview:false,allowedFileTypes:null,allowedFileExtensions:null,allowedPreviewTypes:undefined,allowedPreviewMimeTypes:null,allowedPreviewExtensions:null,disabledPreviewTypes:undefined,disabledPreviewExtensions:['msi','exe','com','zip','rar','app','vb','scr'],disabledPreviewMimeTypes:null,defaultPreviewContent:null,customLayoutTags:{},customPreviewTags:{},previewFileIcon:'',previewFileIconClass:'file-other-icon',previewFileIconSettings:{},previewFileExtSettings:{},buttonLabelClass:'hidden-xs',browseIcon:' ',browseClass:'btn btn-primary',removeIcon:'',removeClass:'btn btn-default btn-secondary',cancelIcon:'',cancelClass:'btn btn-default btn-secondary',pauseIcon:'',pauseClass:'btn btn-default btn-secondary',uploadIcon:'',uploadClass:'btn btn-default btn-secondary',uploadUrl:null,uploadUrlThumb:null,uploadAsync:true,uploadParamNames:{chunkCount:'chunkCount',chunkIndex:'chunkIndex',chunkSize:'chunkSize',chunkSizeStart:'chunkSizeStart',chunksUploaded:'chunksUploaded',fileBlob:'fileBlob',fileId:'fileId',fileName:'fileName',fileRelativePath:'fileRelativePath',fileSize:'fileSize',retryCount:'retryCount'},maxAjaxThreads:5,processDelay:100,queueDelay:10,progressDelay:0,enableResumableUpload:false,resumableUploadOptions:{fallback:null,testUrl:null,chunkSize:2*1024,maxThreads:4,maxRetries:3,showErrorLog:true},uploadExtraData:{},zoomModalHeight:480,minImageWidth:null,minImageHeight:null,maxImageWidth:null,maxImageHeight:null,resizeImage:false,resizePreference:'width',resizeQuality:0.92,resizeDefaultImageType:'image/jpeg',resizeIfSizeMoreThan:0,minFileSize:0,maxFileSize:0,maxFilePreviewSize:25600,minFileCount:0,maxFileCount:0,validateInitialCount:false,msgValidationErrorClass:'text-danger',msgValidationErrorIcon:' ',msgErrorClass:'file-error-message',progressThumbClass:'progress-bar progress-bar-striped active',progressClass:'progress-bar bg-success progress-bar-success progress-bar-striped active',progressInfoClass:'progress-bar bg-info progress-bar-info progress-bar-striped active',progressCompleteClass:'progress-bar bg-success progress-bar-success',progressPauseClass:'progress-bar bg-primary progress-bar-primary progress-bar-striped active',progressErrorClass:'progress-bar bg-danger progress-bar-danger',progressUploadThreshold:99,previewFileType:'image',elCaptionContainer:null,elCaptionText:null,elPreviewContainer:null,elPreviewImage:null,elPreviewStatus:null,elErrorContainer:null,errorCloseButton:$h.closeButton('kv-error-close'),slugCallback:null,dropZoneEnabled:true,dropZoneTitleClass:'file-drop-zone-title',fileActionSettings:{},otherActionButtons:'',textEncoding:'UTF-8',ajaxSettings:{},ajaxDeleteSettings:{},showAjaxErrorDetails:true,mergeAjaxCallbacks:false,mergeAjaxDeleteCallbacks:false,retryErrorUploads:true,reversePreviewOrder:false,usePdfRenderer:function(){var isIE11=!!window.MSInputMethodContext&&!!document.documentMode;return!!navigator.userAgent.match(/(iPod|iPhone|iPad|Android)/i)||isIE11;},pdfRendererUrl:'',pdfRendererTemplate:''};$.fn.fileinputLocales.en={fileSingle:'file',filePlural:'files',browseLabel:'Browse …',removeLabel:'Remove',removeTitle:'Clear all unprocessed files',cancelLabel:'Cancel',cancelTitle:'Abort ongoing upload',pauseLabel:'Pause',pauseTitle:'Pause ongoing upload',uploadLabel:'Upload',uploadTitle:'Upload selected files',msgNo:'No',msgNoFilesSelected:'No files selected',msgCancelled:'Cancelled',msgPaused:'Paused',msgPlaceholder:'Select {files}...',msgZoomModalHeading:'Detailed Preview',msgFileRequired:'You must select a file to upload.',msgSizeTooSmall:'File "{name}" ({size} KB) is too small and must be larger than {minSize} KB.',msgSizeTooLarge:'File "{name}" ({size} KB) exceeds maximum allowed upload size of {maxSize} KB.',msgFilesTooLess:'You must select at least {n} {files} to upload.',msgFilesTooMany:'Number of files selected for upload ({n}) exceeds maximum allowed limit of {m}.',msgFileNotFound:'File "{name}" not found!',msgFileSecured:'Security restrictions prevent reading the file "{name}".',msgFileNotReadable:'File "{name}" is not readable.',msgFilePreviewAborted:'File preview aborted for "{name}".',msgFilePreviewError:'An error occurred while reading the file "{name}".',msgInvalidFileName:'Invalid or unsupported characters in file name "{name}".',msgInvalidFileType:'Invalid type for file "{name}". Only "{types}" files are supported.',msgInvalidFileExtension:'Invalid extension for file "{name}". Only "{extensions}" files are supported.',msgFileTypes:{'image':'image','html':'HTML','text':'text','video':'video','audio':'audio','flash':'flash','pdf':'PDF','object':'object'},msgUploadAborted:'The file upload was aborted',msgUploadThreshold:'Processing...',msgUploadBegin:'Initializing...',msgUploadEnd:'Done',msgUploadResume:'Resuming upload...',msgUploadEmpty:'No valid data available for upload.',msgUploadError:'Upload Error',msgDeleteError:'Delete Error',msgProgressError:'Error',msgValidationError:'Validation Error',msgLoading:'Loading file {index} of {files} …',msgProgress:'Loading file {index} of {files} - {name} - {percent}% completed.',msgSelected:'{n} {files} selected',msgFoldersNotAllowed:'Drag & drop files only! {n} folder(s) dropped were skipped.',msgImageWidthSmall:'Width of image file "{name}" must be at least {size} px.',msgImageHeightSmall:'Height of image file "{name}" must be at least {size} px.',msgImageWidthLarge:'Width of image file "{name}" cannot exceed {size} px.',msgImageHeightLarge:'Height of image file "{name}" cannot exceed {size} px.',msgImageResizeError:'Could not get the image dimensions to resize.',msgImageResizeException:'Error while resizing the image.
    {errors}
    ',msgAjaxError:'Something went wrong with the {operation} operation. Please try again later!',msgAjaxProgressError:'{operation} failed',msgDuplicateFile:'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',msgResumableUploadRetriesExceeded:'Upload aborted beyond {max} retries for file {file}! Error Details:
    {error}
    ',msgPendingTime:'{time} remaining',msgCalculatingTime:'calculating time remaining',ajaxOperations:{deleteThumb:'file delete',uploadThumb:'file upload',uploadBatch:'batch file upload',uploadExtra:'form data upload'},dropZoneTitle:'Drag & drop files here …',dropZoneClickTitle:'
    (or click to select {files})',previewZoomButtonTitles:{prev:'View previous file',next:'View next file',toggleheader:'Toggle header',fullscreen:'Toggle full screen',borderless:'Toggle borderless mode',close:'Close detailed preview'}};$.fn.fileinputLocales.zh={fileSingle:'文件',filePlural:'个文件',browseLabel:'选择 …',removeLabel:'移除',removeTitle:'清除选中文件',cancelLabel:'取消',cancelTitle:'取消进行中的上传',pauseLabel:'Pause',pauseTitle:'Pause ongoing upload',uploadLabel:'上传',uploadTitle:'上传选中文件',msgNo:'没有',msgNoFilesSelected:'未选择文件',msgPaused:'Paused',msgCancelled:'取消',msgPlaceholder:'选择 {files}...',msgZoomModalHeading:'详细预览',msgFileRequired:'必须选择一个文件上传.',msgSizeTooSmall:'文件 "{name}" ({size} KB) 必须大于限定大小 {minSize} KB.',msgSizeTooLarge:'文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB.',msgFilesTooLess:'你必须选择最少 {n} {files} 来上传. ',msgFilesTooMany:'选择的上传文件个数 ({n}) 超出最大文件的限制个数 {m}.',msgFileNotFound:'文件 "{name}" 未找到!',msgFileSecured:'安全限制,为了防止读取文件 "{name}".',msgFileNotReadable:'文件 "{name}" 不可读.',msgFilePreviewAborted:'取消 "{name}" 的预览.',msgFilePreviewError:'读取 "{name}" 时出现了一个错误.',msgInvalidFileName:'文件名 "{name}" 包含非法字符.',msgInvalidFileType:'不正确的类型 "{name}". 只支持 "{types}" 类型的文件.',msgInvalidFileExtension:'不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.',msgFileTypes:{'image':'image','html':'HTML','text':'text','video':'video','audio':'audio','flash':'flash','pdf':'PDF','object':'object'},msgUploadAborted:'该文件上传被中止',msgUploadThreshold:'处理中...',msgUploadBegin:'正在初始化...',msgUploadEnd:'完成',msgUploadResume:'Resuming upload...',msgUploadEmpty:'无效的文件上传.',msgUploadError:'Upload Error',msgDeleteError:'Delete Error',msgProgressError:'上传出错',msgValidationError:'验证错误',msgLoading:'加载第 {index} 文件 共 {files} …',msgProgress:'加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.',msgSelected:'{n} {files} 选中',msgFoldersNotAllowed:'只支持拖拽文件! 跳过 {n} 拖拽的文件夹.',msgImageWidthSmall:'图像文件的"{name}"的宽度必须是至少{size}像素.',msgImageHeightSmall:'图像文件的"{name}"的高度必须至少为{size}像素.',msgImageWidthLarge:'图像文件"{name}"的宽度不能超过{size}像素.',msgImageHeightLarge:'图像文件"{name}"的高度不能超过{size}像素.',msgImageResizeError:'无法获取的图像尺寸调整。',msgImageResizeException:'调整图像大小时发生错误。
    {errors}
    ',msgAjaxError:'{operation} 发生错误. 请重试!',msgAjaxProgressError:'{operation} 失败',msgDuplicateFile:'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',msgResumableUploadRetriesExceeded:'Upload aborted beyond {max} retries for file {file}! Error Details:
    {error}
    ',msgPendingTime:'{time} remaining',msgCalculatingTime:'calculating time remaining',ajaxOperations:{deleteThumb:'删除文件',uploadThumb:'上传文件',uploadBatch:'批量上传',uploadExtra:'表单数据上传'},dropZoneTitle:'拖拽文件到这里 …
    支持多文件同时上传',dropZoneClickTitle:'
    (或点击{files}按钮选择文件)',fileActionSettings:{removeTitle:'删除文件',uploadTitle:'上传文件',downloadTitle:'下载文件',uploadRetryTitle:'重试',zoomTitle:'查看详情',dragTitle:'移动 / 重置',indicatorNewTitle:'没有上传',indicatorSuccessTitle:'上传',indicatorErrorTitle:'上传错误',indicatorPausedTitle:'Upload Paused',indicatorLoadingTitle:'上传 ...'},previewZoomButtonTitles:{prev:'预览上一个文件',next:'预览下一个文件',toggleheader:'缩放',fullscreen:'全屏',borderless:'无边界模式',close:'关闭当前预览'}};$.fn.fileinput.Constructor=FileInput;$(document).ready(function(){var $input=$('input.file[type=file]');if($input.length){$input.fileinput();}});})); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading-sm.gif b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading-sm.gif new file mode 100644 index 0000000000000000000000000000000000000000..44e3b7a0f702aa1d301468b1d6c1d74d45dfdfa4 GIT binary patch literal 2670 zcmb`Je@v5i9>LSr1(@@0hFth{;0&ijQR3npb})ArbBQ}PvxUrk9==i>-je&{`bYn0 zn)LJfykDR9({*{d^3^65#=>kEmYR~<(cUp}W8&ez9`;@Cv+TEYecW~T-rd+qu-ktq^cI?{N#Y-2bznz}@Wlou^?0COp;`YSDe?RQ|Tc54YcCq*3v~POu z=Q)qt<8AOhdGZ9Ce@UMNZ%`E#<|wqPl%!-T1wNGi6v$*^VoXMUfgA&)8H|&=avY{@ zJeN-^xjCUe&M)59EweXtoViM;a-1?pz|8ANLRhI=H=wp@r|+lJt@60`I1L>ikf9d z0~~r>SYAh`8ncKP#Y`em&991Ki+9$D<+Ah`h8ABLvp^+Tq&fmry95!A4*~{!r(W{r|twO<9E6hwX}% z)F~4zBCfrDD2L!G=moq=Ocm!kf(>!j#MWki`kE{G-BYoHbydNkr`YYfzkHJ}sdz&Z z8KyFYGObizP&mFNfL9$Pkl^BMW@H7Mj~&{~Y}&^@Em8az7i38?{{@hom-`@R{}EIl zuKr(+p!%I^SP+EozXRAQx&zv)Q;+jLkH^n1bF~-lxqi~zs6M>$2b`E?bDR1(oHROR zaB7GXUJ{zi)G5043^#qed;40J-ClCQog6(Hud5xphOP%&4#R>m7Bck%Y7iX-)s;GnT=AX8I6;x z*Ol?b-#BAm+c8m@;Zg6;uE=_2%jzUWr*x2ox8%paAn8qLY^bd(b;)ctlkU^fu=Vc3 zz;SN~k7AeP8RH2m;z z2CX1gkPsDhP~gugYVl&ptMm6Li~=Mu93%mmkyQ%qyHLgm8|ug3#{dSLkO}}pC4+2m z`Abd|+`DA@$4K%kR+rDRtj=pVseWU_SosF`XJ_(Mv(56PPTS5aAL87zteO7ON2zXW zXJVy1^(Mx0!G&0`_T@yc7N3_Iz0+VN*C^fuY4rdK8WyJhb56^W6%| zhv|@e@GJq}V9C%h00$|+q%bv<3=9s$WESlms9VW!FOl?MEbIgN3J@Vy2p1xL+O3%* z4%2yvY0~i3-n5pgHjU@SvC&L^4Rsa4mb2FHx-acsLminpiEGcb4^avWjB6bs?yxHv zFP>OoZm&@)|E$XG{cHFN;rjRP&k2G>fr0d>;EjE|0c(GfTT-1_oMa2pu0v=?C ziWR6(s{%i;LARh*1pqiF)TclTcn}}b?&(F5kHB?rd-LMljI3nO?V@)3zQ#dO-513t ztjcsEGqLW@n}vqVK-aY$rTULTyjJV(hyiVw^9O}%O%TO%-BuBoT7PVy_KKNUTkL36 z?~x1XsVjwnVnJz^Up>+9s|T|{G?2yf>OloQZy$sL`TErZnkDwpwn;{pv6^-mtgcw9 z_E@9A+pHJ039kOw(VR1!{Fzhc9qk-wO9+x3Qyrg@1UN60rpBE1jKy*kvzjY8GMB%rN zWSO@Pl7v*3SO+Q5wzobgsdpIf?Qr=duPeH-rgHWhu znosfxTsJ3QpXcCF1>~qGXs@ZJ zyw~IM73y!A^G>VZ8R)gNG&BU|KuYo)y+(NV^DdAFW5LeVJBBCMNfRtuR+y^ER&<(X zE7%B&e5#Z^`o7-@nEg_P~LI*N!rA^h{|;%@7gdIe0+9 zL6FPmK*NXRK=)=Qr!7yn1(?oIuvujqni9B8`-RfJ#pzQFR*0=zw6NbXTj0F1BLlZh zfVly?4JS*30beAWg%&SoyRsrS%M*Y;RQ^0c<0TpwHaFY zz6r{%O%_#7fe{VKyK@(naSJIeRCsx4aYAE48*ixFGRdMll6*@GUTc0%``>`o8j#V4 zg9*c-O~)LSJSTE&n6)s0!!ECt)zd(wL!wvC+k6wRhYtI}PTi7bt)^yIDG`AshjlL| qtmsHM!1PnVu#-b#!*qv!K4 select.bs-select-hidden, +select.selectpicker { + display: none !important; +} +.bootstrap-select { + width: 220px \0; + /*IE9 and below*/ + vertical-align: middle; +} +.bootstrap-select > .dropdown-toggle { + position: relative; + width: 100%; + text-align: right; + white-space: nowrap; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; +} +.bootstrap-select > .dropdown-toggle:after { + margin-top: -1px; +} +.bootstrap-select > .dropdown-toggle.bs-placeholder, +.bootstrap-select > .dropdown-toggle.bs-placeholder:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder:active { + color: #999; +} +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:active { + color: rgba(255, 255, 255, 0.5); +} +.bootstrap-select > select { + position: absolute !important; + bottom: 0; + left: 50%; + display: block !important; + width: 0.5px !important; + height: 100% !important; + padding: 0 !important; + opacity: 0 !important; + border: none; + z-index: 0 !important; +} +.bootstrap-select > select.mobile-device { + top: 0; + left: 0; + display: block !important; + width: 100% !important; + z-index: 2 !important; +} +.has-error .bootstrap-select .dropdown-toggle, +.error .bootstrap-select .dropdown-toggle, +.bootstrap-select.is-invalid .dropdown-toggle, +.was-validated .bootstrap-select .selectpicker:invalid + .dropdown-toggle { + border-color: #b94a48; +} +.bootstrap-select.is-valid .dropdown-toggle, +.was-validated .bootstrap-select .selectpicker:valid + .dropdown-toggle { + border-color: #28a745; +} +.bootstrap-select.fit-width { + width: auto !important; +} +.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) { + width: 220px; +} +.bootstrap-select > select.mobile-device:focus + .dropdown-toggle, +.bootstrap-select .dropdown-toggle:focus { + outline: thin dotted #333333 !important; + outline: 5px auto -webkit-focus-ring-color !important; + outline-offset: -2px; +} +.bootstrap-select.form-control { + margin-bottom: 0; + padding: 0; + border: none; + height: auto; +} +:not(.input-group) > .bootstrap-select.form-control:not([class*="col-"]) { + width: 100%; +} +.bootstrap-select.form-control.input-group-btn { + float: none; + z-index: auto; +} +.form-inline .bootstrap-select, +.form-inline .bootstrap-select.form-control:not([class*="col-"]) { + width: auto; +} +.bootstrap-select:not(.input-group-btn), +.bootstrap-select[class*="col-"] { + float: none; + display: inline-block; + margin-left: 0; +} +.bootstrap-select.dropdown-menu-right, +.bootstrap-select[class*="col-"].dropdown-menu-right, +.row .bootstrap-select[class*="col-"].dropdown-menu-right { + float: right; +} +.form-inline .bootstrap-select, +.form-horizontal .bootstrap-select, +.form-group .bootstrap-select { + margin-bottom: 0; +} +.form-group-lg .bootstrap-select.form-control, +.form-group-sm .bootstrap-select.form-control { + padding: 0; +} +.form-group-lg .bootstrap-select.form-control .dropdown-toggle, +.form-group-sm .bootstrap-select.form-control .dropdown-toggle { + height: 100%; + font-size: inherit; + line-height: inherit; + border-radius: inherit; +} +.bootstrap-select.form-control-sm .dropdown-toggle, +.bootstrap-select.form-control-lg .dropdown-toggle { + font-size: inherit; + line-height: inherit; + border-radius: inherit; +} +.bootstrap-select.form-control-sm .dropdown-toggle { + padding: 0.25rem 0.5rem; +} +.bootstrap-select.form-control-lg .dropdown-toggle { + padding: 0.5rem 1rem; +} +.form-inline .bootstrap-select .form-control { + width: 100%; +} +.bootstrap-select.disabled, +.bootstrap-select > .disabled { + cursor: not-allowed; +} +.bootstrap-select.disabled:focus, +.bootstrap-select > .disabled:focus { + outline: none !important; +} +.bootstrap-select.bs-container { + position: absolute; + top: 0; + left: 0; + height: 0 !important; + padding: 0 !important; +} +.bootstrap-select.bs-container .dropdown-menu { + z-index: 1060; +} +.bootstrap-select .dropdown-toggle .filter-option { + position: static; + top: 0; + left: 0; + float: left; + height: 100%; + width: 100%; + text-align: left; + overflow: hidden; + -webkit-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; +} +.bs3.bootstrap-select .dropdown-toggle .filter-option { + padding-right: inherit; +} +.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option { + position: absolute; + padding-top: inherit; + padding-bottom: inherit; + padding-left: inherit; + float: none; +} +.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner { + padding-right: inherit; +} +.bootstrap-select .dropdown-toggle .filter-option-inner-inner { + overflow: hidden; +} +.bootstrap-select .dropdown-toggle .filter-expand { + width: 0 !important; + float: left; + opacity: 0 !important; + overflow: hidden; +} +.bootstrap-select .dropdown-toggle .caret { + position: absolute; + top: 50%; + right: 12px; + margin-top: -2px; + vertical-align: middle; +} +.input-group .bootstrap-select.form-control .dropdown-toggle { + border-radius: inherit; +} +.bootstrap-select[class*="col-"] .dropdown-toggle { + width: 100%; +} +.bootstrap-select .dropdown-menu { + min-width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bootstrap-select .dropdown-menu > .inner:focus { + outline: none !important; +} +.bootstrap-select .dropdown-menu.inner { + position: static; + float: none; + border: 0; + padding: 0; + margin: 0; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; +} +.bootstrap-select .dropdown-menu li { + position: relative; +} +.bootstrap-select .dropdown-menu li.active small { + color: rgba(255, 255, 255, 0.5) !important; +} +.bootstrap-select .dropdown-menu li.disabled a { + cursor: not-allowed; +} +.bootstrap-select .dropdown-menu li a { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.bootstrap-select .dropdown-menu li a.opt { + position: relative; + padding-left: 2.25em; +} +.bootstrap-select .dropdown-menu li a span.check-mark { + display: none; +} +.bootstrap-select .dropdown-menu li a span.text { + display: inline-block; +} +.bootstrap-select .dropdown-menu li small { + padding-left: 0.5em; +} +.bootstrap-select .dropdown-menu .notify { + position: absolute; + bottom: 5px; + width: 96%; + margin: 0 2%; + min-height: 26px; + padding: 3px 5px; + background: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + pointer-events: none; + opacity: 0.9; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bootstrap-select .no-results { + padding: 3px; + background: #f5f5f5; + margin: 0 5px; + white-space: nowrap; +} +.bootstrap-select.fit-width .dropdown-toggle .filter-option { + position: static; + display: inline; + padding: 0; +} +.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner, +.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner { + display: inline; +} +.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before { + content: '\00a0'; +} +.bootstrap-select.fit-width .dropdown-toggle .caret { + position: static; + top: auto; + margin-top: -1px; +} +.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark { + position: absolute; + display: inline-block; + right: 15px; + top: 5px; +} +.bootstrap-select.show-tick .dropdown-menu li a span.text { + margin-right: 34px; +} +.bootstrap-select .bs-ok-default:after { + content: ''; + display: block; + width: 0.5em; + height: 1em; + border-style: solid; + border-width: 0 0.26em 0.26em 0; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle, +.bootstrap-select.show-menu-arrow.show > .dropdown-toggle { + z-index: 1061; +} +.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before { + content: ''; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid rgba(204, 204, 204, 0.2); + position: absolute; + bottom: -4px; + left: 9px; + display: none; +} +.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after { + content: ''; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + position: absolute; + bottom: -4px; + left: 10px; + display: none; +} +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before { + bottom: auto; + top: -4px; + border-top: 7px solid rgba(204, 204, 204, 0.2); + border-bottom: 0; +} +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after { + bottom: auto; + top: -4px; + border-top: 6px solid white; + border-bottom: 0; +} +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before { + right: 12px; + left: auto; +} +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after { + right: 13px; + left: auto; +} +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:before, +.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:before, +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:after, +.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:after { + display: block; +} +.bs-searchbox, +.bs-actionsbox, +.bs-donebutton { + padding: 4px 8px; +} +.bs-actionsbox { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bs-actionsbox .btn-group button { + width: 50%; +} +.bs-donebutton { + float: left; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bs-donebutton .btn-group button { + width: 100%; +} +.bs-searchbox + .bs-actionsbox { + padding: 0 8px 4px; +} +.bs-searchbox .form-control { + margin-bottom: 0; + width: 100%; + float: none; +} +/*# sourceMappingURL=bootstrap-select.css.map */ \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js new file mode 100644 index 000000000..c3ab3bfa4 --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js @@ -0,0 +1,3139 @@ +/*! + * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) + * + * Copyright 2012-2019 SnapAppointments, LLC + * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (root === undefined && window !== undefined) root = window; + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof module === 'object' && module.exports) { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +}(this, function (jQuery) { + +(function ($) { + 'use strict'; + + var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']; + + var uriAttrs = [ + 'background', + 'cite', + 'href', + 'itemtype', + 'longdesc', + 'poster', + 'src', + 'xlink:href' + ]; + + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + + var DefaultWhitelist = { + // Global attributes allowed on any supplied element below. + '*': ['class', 'dir', 'id', 'lang', 'role', 'tabindex', 'style', ARIA_ATTRIBUTE_PATTERN], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + } + + /** + * A pattern that recognizes a commonly useful subset of URLs that are safe. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi; + + /** + * A pattern that matches safe data URLs. Only matches image, video and audio types. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; + + function allowedAttribute (attr, allowedAttributeList) { + var attrName = attr.nodeName.toLowerCase() + + if ($.inArray(attrName, allowedAttributeList) !== -1) { + if ($.inArray(attrName, uriAttrs) !== -1) { + return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)) + } + + return true + } + + var regExp = $(allowedAttributeList).filter(function (index, value) { + return value instanceof RegExp + }) + + // Check if a regular expression validates the attribute. + for (var i = 0, l = regExp.length; i < l; i++) { + if (attrName.match(regExp[i])) { + return true + } + } + + return false + } + + function sanitizeHtml (unsafeElements, whiteList, sanitizeFn) { + if (sanitizeFn && typeof sanitizeFn === 'function') { + return sanitizeFn(unsafeElements); + } + + var whitelistKeys = Object.keys(whiteList); + + for (var i = 0, len = unsafeElements.length; i < len; i++) { + var elements = unsafeElements[i].querySelectorAll('*'); + + for (var j = 0, len2 = elements.length; j < len2; j++) { + var el = elements[j]; + var elName = el.nodeName.toLowerCase(); + + if (whitelistKeys.indexOf(elName) === -1) { + el.parentNode.removeChild(el); + + continue; + } + + var attributeList = [].slice.call(el.attributes); + var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); + + for (var k = 0, len3 = attributeList.length; k < len3; k++) { + var attr = attributeList[k]; + + if (!allowedAttribute(attr, whitelistedAttributes)) { + el.removeAttribute(attr.nodeName); + } + } + } + } + } + + // Polyfill for browsers with no classList support + // Remove in v2 + if (!('classList' in document.createElement('_'))) { + (function (view) { + if (!('Element' in view)) return; + + var classListProp = 'classList', + protoProp = 'prototype', + elemCtrProto = view.Element[protoProp], + objCtr = Object, + classListGetter = function () { + var $elem = $(this); + + return { + add: function (classes) { + classes = Array.prototype.slice.call(arguments).join(' '); + return $elem.addClass(classes); + }, + remove: function (classes) { + classes = Array.prototype.slice.call(arguments).join(' '); + return $elem.removeClass(classes); + }, + toggle: function (classes, force) { + return $elem.toggleClass(classes, force); + }, + contains: function (classes) { + return $elem.hasClass(classes); + } + } + }; + + if (objCtr.defineProperty) { + var classListPropDesc = { + get: classListGetter, + enumerable: true, + configurable: true + }; + try { + objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); + } catch (ex) { // IE 8 doesn't support enumerable:true + // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36 + // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected + if (ex.number === undefined || ex.number === -0x7FF5EC54) { + classListPropDesc.enumerable = false; + objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); + } + } + } else if (objCtr[protoProp].__defineGetter__) { + elemCtrProto.__defineGetter__(classListProp, classListGetter); + } + }(window)); + } + + var testElement = document.createElement('_'); + + testElement.classList.add('c1', 'c2'); + + if (!testElement.classList.contains('c2')) { + var _add = DOMTokenList.prototype.add, + _remove = DOMTokenList.prototype.remove; + + DOMTokenList.prototype.add = function () { + Array.prototype.forEach.call(arguments, _add.bind(this)); + } + + DOMTokenList.prototype.remove = function () { + Array.prototype.forEach.call(arguments, _remove.bind(this)); + } + } + + testElement.classList.toggle('c3', false); + + // Polyfill for IE 10 and Firefox <24, where classList.toggle does not + // support the second argument. + if (testElement.classList.contains('c3')) { + var _toggle = DOMTokenList.prototype.toggle; + + DOMTokenList.prototype.toggle = function (token, force) { + if (1 in arguments && !this.contains(token) === !force) { + return force; + } else { + return _toggle.call(this, token); + } + }; + } + + testElement = null; + + // shallow array comparison + function isEqual (array1, array2) { + return array1.length === array2.length && array1.every(function (element, index) { + return element === array2[index]; + }); + }; + + // + if (!String.prototype.startsWith) { + (function () { + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` + var defineProperty = (function () { + // IE 8 only supports `Object.defineProperty` on DOM elements + try { + var object = {}; + var $defineProperty = Object.defineProperty; + var result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }()); + var toString = {}.toString; + var startsWith = function (search) { + if (this == null) { + throw new TypeError(); + } + var string = String(this); + if (search && toString.call(search) == '[object RegExp]') { + throw new TypeError(); + } + var stringLength = string.length; + var searchString = String(search); + var searchLength = searchString.length; + var position = arguments.length > 1 ? arguments[1] : undefined; + // `ToInteger` + var pos = position ? Number(position) : 0; + if (pos != pos) { // better `isNaN` + pos = 0; + } + var start = Math.min(Math.max(pos, 0), stringLength); + // Avoid the `indexOf` call if no match is possible + if (searchLength + start > stringLength) { + return false; + } + var index = -1; + while (++index < searchLength) { + if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) { + return false; + } + } + return true; + }; + if (defineProperty) { + defineProperty(String.prototype, 'startsWith', { + 'value': startsWith, + 'configurable': true, + 'writable': true + }); + } else { + String.prototype.startsWith = startsWith; + } + }()); + } + + if (!Object.keys) { + Object.keys = function ( + o, // object + k, // key + r // result array + ) { + // initialize object and result + r = []; + // iterate over object keys + for (k in o) { + // fill result array with non-prototypical keys + r.hasOwnProperty.call(o, k) && r.push(k); + } + // return result + return r; + }; + } + + if (HTMLSelectElement && !HTMLSelectElement.prototype.hasOwnProperty('selectedOptions')) { + Object.defineProperty(HTMLSelectElement.prototype, 'selectedOptions', { + get: function () { + return this.querySelectorAll(':checked'); + } + }); + } + + function getSelectedOptions (select, ignoreDisabled) { + var selectedOptions = select.selectedOptions, + options = [], + opt; + + if (ignoreDisabled) { + for (var i = 0, len = selectedOptions.length; i < len; i++) { + opt = selectedOptions[i]; + + if (!(opt.disabled || opt.parentNode.tagName === 'OPTGROUP' && opt.parentNode.disabled)) { + options.push(opt); + } + } + + return options; + } + + return selectedOptions; + } + + // much faster than $.val() + function getSelectValues (select, selectedOptions) { + var value = [], + options = selectedOptions || select.selectedOptions, + opt; + + for (var i = 0, len = options.length; i < len; i++) { + opt = options[i]; + + if (!(opt.disabled || opt.parentNode.tagName === 'OPTGROUP' && opt.parentNode.disabled)) { + value.push(opt.value || opt.text); + } + } + + if (!select.multiple) { + return !value.length ? null : value[0]; + } + + return value; + } + + // set data-selected on select element if the value has been programmatically selected + // prior to initialization of bootstrap-select + // * consider removing or replacing an alternative method * + var valHooks = { + useDefault: false, + _set: $.valHooks.select.set + }; + + $.valHooks.select.set = function (elem, value) { + if (value && !valHooks.useDefault) $(elem).data('selected', true); + + return valHooks._set.apply(this, arguments); + }; + + var changedArguments = null; + + var EventIsSupported = (function () { + try { + new Event('change'); + return true; + } catch (e) { + return false; + } + })(); + + $.fn.triggerNative = function (eventName) { + var el = this[0], + event; + + if (el.dispatchEvent) { // for modern browsers & IE9+ + if (EventIsSupported) { + // For modern browsers + event = new Event(eventName, { + bubbles: true + }); + } else { + // For IE since it doesn't support Event constructor + event = document.createEvent('Event'); + event.initEvent(eventName, true, false); + } + + el.dispatchEvent(event); + } else if (el.fireEvent) { // for IE8 + event = document.createEventObject(); + event.eventType = eventName; + el.fireEvent('on' + eventName, event); + } else { + // fall back to jQuery.trigger + this.trigger(eventName); + } + }; + // + + function stringSearch (li, searchString, method, normalize) { + var stringTypes = [ + 'display', + 'subtext', + 'tokens' + ], + searchSuccess = false; + + for (var i = 0; i < stringTypes.length; i++) { + var stringType = stringTypes[i], + string = li[stringType]; + + if (string) { + string = string.toString(); + + // Strip HTML tags. This isn't perfect, but it's much faster than any other method + if (stringType === 'display') { + string = string.replace(/<[^>]+>/g, ''); + } + + if (normalize) string = normalizeToBase(string); + string = string.toUpperCase(); + + if (method === 'contains') { + searchSuccess = string.indexOf(searchString) >= 0; + } else { + searchSuccess = string.startsWith(searchString); + } + + if (searchSuccess) break; + } + } + + return searchSuccess; + } + + function toInteger (value) { + return parseInt(value, 10) || 0; + } + + // Borrowed from Lodash (_.deburr) + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' + }; + + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + + /** Used to compose unicode character classes. */ + var rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboMarksExtendedRange = '\\u1ab0-\\u1aff', + rsComboMarksSupplementRange = '\\u1dc0-\\u1dff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange + rsComboMarksExtendedRange + rsComboMarksSupplementRange; + + /** Used to compose unicode capture groups. */ + var rsCombo = '[' + rsComboRange + ']'; + + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); + + function deburrLetter (key) { + return deburredLetters[key]; + }; + + function normalizeToBase (string) { + string = string.toString(); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); + } + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function (map) { + var escaper = function (match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped. + var source = '(?:' + Object.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function (string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + + var htmlEscape = createEscaper(escapeMap); + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var keyCodeMap = { + 32: ' ', + 48: '0', + 49: '1', + 50: '2', + 51: '3', + 52: '4', + 53: '5', + 54: '6', + 55: '7', + 56: '8', + 57: '9', + 59: ';', + 65: 'A', + 66: 'B', + 67: 'C', + 68: 'D', + 69: 'E', + 70: 'F', + 71: 'G', + 72: 'H', + 73: 'I', + 74: 'J', + 75: 'K', + 76: 'L', + 77: 'M', + 78: 'N', + 79: 'O', + 80: 'P', + 81: 'Q', + 82: 'R', + 83: 'S', + 84: 'T', + 85: 'U', + 86: 'V', + 87: 'W', + 88: 'X', + 89: 'Y', + 90: 'Z', + 96: '0', + 97: '1', + 98: '2', + 99: '3', + 100: '4', + 101: '5', + 102: '6', + 103: '7', + 104: '8', + 105: '9' + }; + + var keyCodes = { + ESCAPE: 27, // KeyboardEvent.which value for Escape (Esc) key + ENTER: 13, // KeyboardEvent.which value for Enter key + SPACE: 32, // KeyboardEvent.which value for space key + TAB: 9, // KeyboardEvent.which value for tab key + ARROW_UP: 38, // KeyboardEvent.which value for up arrow key + ARROW_DOWN: 40 // KeyboardEvent.which value for down arrow key + } + + var version = { + success: false, + major: '3' + }; + + try { + version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.'); + version.major = version.full[0]; + version.success = true; + } catch (err) { + // do nothing + } + + var selectId = 0; + + var EVENT_KEY = '.bs.select'; + + var classNames = { + DISABLED: 'disabled', + DIVIDER: 'divider', + SHOW: 'open', + DROPUP: 'dropup', + MENU: 'dropdown-menu', + MENURIGHT: 'dropdown-menu-right', + MENULEFT: 'dropdown-menu-left', + // to-do: replace with more advanced template/customization options + BUTTONCLASS: 'btn-default', + POPOVERHEADER: 'popover-title', + ICONBASE: 'glyphicon', + TICKICON: 'glyphicon-ok' + } + + var Selector = { + MENU: '.' + classNames.MENU + } + + var elementTemplates = { + span: document.createElement('span'), + i: document.createElement('i'), + subtext: document.createElement('small'), + a: document.createElement('a'), + li: document.createElement('li'), + whitespace: document.createTextNode('\u00A0'), + fragment: document.createDocumentFragment() + } + + elementTemplates.a.setAttribute('role', 'option'); + elementTemplates.subtext.className = 'text-muted'; + + elementTemplates.text = elementTemplates.span.cloneNode(false); + elementTemplates.text.className = 'text'; + + elementTemplates.checkMark = elementTemplates.span.cloneNode(false); + + var REGEXP_ARROW = new RegExp(keyCodes.ARROW_UP + '|' + keyCodes.ARROW_DOWN); + var REGEXP_TAB_OR_ESCAPE = new RegExp('^' + keyCodes.TAB + '$|' + keyCodes.ESCAPE); + + var generateOption = { + li: function (content, classes, optgroup) { + var li = elementTemplates.li.cloneNode(false); + + if (content) { + if (content.nodeType === 1 || content.nodeType === 11) { + li.appendChild(content); + } else { + li.innerHTML = content; + } + } + + if (typeof classes !== 'undefined' && classes !== '') li.className = classes; + if (typeof optgroup !== 'undefined' && optgroup !== null) li.classList.add('optgroup-' + optgroup); + + return li; + }, + + a: function (text, classes, inline) { + var a = elementTemplates.a.cloneNode(true); + + if (text) { + if (text.nodeType === 11) { + a.appendChild(text); + } else { + a.insertAdjacentHTML('beforeend', text); + } + } + + if (typeof classes !== 'undefined' && classes !== '') a.className = classes; + if (version.major === '4') a.classList.add('dropdown-item'); + if (inline) a.setAttribute('style', inline); + + return a; + }, + + text: function (options, useFragment) { + var textElement = elementTemplates.text.cloneNode(false), + subtextElement, + iconElement; + + if (options.content) { + textElement.innerHTML = options.content; + } else { + textElement.textContent = options.text; + + if (options.icon) { + var whitespace = elementTemplates.whitespace.cloneNode(false); + + // need to use for icons in the button to prevent a breaking change + // note: switch to span in next major release + iconElement = (useFragment === true ? elementTemplates.i : elementTemplates.span).cloneNode(false); + iconElement.className = options.iconBase + ' ' + options.icon; + + elementTemplates.fragment.appendChild(iconElement); + elementTemplates.fragment.appendChild(whitespace); + } + + if (options.subtext) { + subtextElement = elementTemplates.subtext.cloneNode(false); + subtextElement.textContent = options.subtext; + textElement.appendChild(subtextElement); + } + } + + if (useFragment === true) { + while (textElement.childNodes.length > 0) { + elementTemplates.fragment.appendChild(textElement.childNodes[0]); + } + } else { + elementTemplates.fragment.appendChild(textElement); + } + + return elementTemplates.fragment; + }, + + label: function (options) { + var textElement = elementTemplates.text.cloneNode(false), + subtextElement, + iconElement; + + textElement.innerHTML = options.label; + + if (options.icon) { + var whitespace = elementTemplates.whitespace.cloneNode(false); + + iconElement = elementTemplates.span.cloneNode(false); + iconElement.className = options.iconBase + ' ' + options.icon; + + elementTemplates.fragment.appendChild(iconElement); + elementTemplates.fragment.appendChild(whitespace); + } + + if (options.subtext) { + subtextElement = elementTemplates.subtext.cloneNode(false); + subtextElement.textContent = options.subtext; + textElement.appendChild(subtextElement); + } + + elementTemplates.fragment.appendChild(textElement); + + return elementTemplates.fragment; + } + } + + var Selectpicker = function (element, options) { + var that = this; + + // bootstrap-select has been initialized - revert valHooks.select.set back to its original function + if (!valHooks.useDefault) { + $.valHooks.select.set = valHooks._set; + valHooks.useDefault = true; + } + + this.$element = $(element); + this.$newElement = null; + this.$button = null; + this.$menu = null; + this.options = options; + this.selectpicker = { + main: {}, + search: {}, + current: {}, // current changes if a search is in progress + view: {}, + keydown: { + keyHistory: '', + resetKeyHistory: { + start: function () { + return setTimeout(function () { + that.selectpicker.keydown.keyHistory = ''; + }, 800); + } + } + } + }; + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a + // data-attribute) + if (this.options.title === null) { + this.options.title = this.$element.attr('title'); + } + + // Format window padding + var winPad = this.options.windowPadding; + if (typeof winPad === 'number') { + this.options.windowPadding = [winPad, winPad, winPad, winPad]; + } + + // Expose public methods + this.val = Selectpicker.prototype.val; + this.render = Selectpicker.prototype.render; + this.refresh = Selectpicker.prototype.refresh; + this.setStyle = Selectpicker.prototype.setStyle; + this.selectAll = Selectpicker.prototype.selectAll; + this.deselectAll = Selectpicker.prototype.deselectAll; + this.destroy = Selectpicker.prototype.destroy; + this.remove = Selectpicker.prototype.remove; + this.show = Selectpicker.prototype.show; + this.hide = Selectpicker.prototype.hide; + + this.init(); + }; + + Selectpicker.VERSION = '1.13.10'; + + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. + Selectpicker.DEFAULTS = { + noneSelectedText: 'Nothing selected', + noneResultsText: 'No results matched {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? '{0} item selected' : '{0} items selected'; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' + ]; + }, + selectAllText: 'Select All', + deselectAllText: 'Deselect All', + doneButton: false, + doneButtonText: 'Close', + multipleSeparator: ', ', + styleBase: 'btn', + style: classNames.BUTTONCLASS, + size: 'auto', + title: null, + selectedTextFormat: 'values', + width: false, + container: false, + hideDisabled: false, + showSubtext: false, + showIcon: true, + showContent: true, + dropupAuto: true, + header: false, + liveSearch: false, + liveSearchPlaceholder: null, + liveSearchNormalize: false, + liveSearchStyle: 'contains', + actionsBox: false, + iconBase: classNames.ICONBASE, + tickIcon: classNames.TICKICON, + showTick: false, + template: { + caret: '' + }, + maxOptions: false, + mobile: false, + selectOnTab: false, + dropdownAlignRight: false, + windowPadding: 0, + virtualScroll: 600, + display: false, + sanitize: true, + sanitizeFn: null, + whiteList: DefaultWhitelist + }; + + Selectpicker.prototype = { + + constructor: Selectpicker, + + init: function () { + var that = this, + id = this.$element.attr('id'); + + selectId++; + this.selectId = 'bs-select-' + selectId; + + this.$element[0].classList.add('bs-select-hidden'); + + this.multiple = this.$element.prop('multiple'); + this.autofocus = this.$element.prop('autofocus'); + + if (this.$element[0].classList.contains('show-tick')) { + this.options.showTick = true; + } + + this.$newElement = this.createDropdown(); + this.$element + .after(this.$newElement) + .prependTo(this.$newElement); + + this.$button = this.$newElement.children('button'); + this.$menu = this.$newElement.children(Selector.MENU); + this.$menuInner = this.$menu.children('.inner'); + this.$searchbox = this.$menu.find('input'); + + this.$element[0].classList.remove('bs-select-hidden'); + + if (this.options.dropdownAlignRight === true) this.$menu[0].classList.add(classNames.MENURIGHT); + + if (typeof id !== 'undefined') { + this.$button.attr('data-id', id); + } + + this.checkDisabled(); + this.clickListener(); + + if (this.options.liveSearch) { + this.liveSearchListener(); + this.focusedParent = this.$searchbox[0]; + } else { + this.focusedParent = this.$menuInner[0]; + } + + this.setStyle(); + this.render(); + this.setWidth(); + if (this.options.container) { + this.selectPosition(); + } else { + this.$element.on('hide' + EVENT_KEY, function () { + if (that.isVirtual()) { + // empty menu on close + var menuInner = that.$menuInner[0], + emptyMenu = menuInner.firstChild.cloneNode(false); + + // replace the existing UL with an empty one - this is faster than $.empty() or innerHTML = '' + menuInner.replaceChild(emptyMenu, menuInner.firstChild); + menuInner.scrollTop = 0; + } + }); + } + this.$menu.data('this', this); + this.$newElement.data('this', this); + if (this.options.mobile) this.mobile(); + + this.$newElement.on({ + 'hide.bs.dropdown': function (e) { + that.$element.trigger('hide' + EVENT_KEY, e); + }, + 'hidden.bs.dropdown': function (e) { + that.$element.trigger('hidden' + EVENT_KEY, e); + }, + 'show.bs.dropdown': function (e) { + that.$element.trigger('show' + EVENT_KEY, e); + }, + 'shown.bs.dropdown': function (e) { + that.$element.trigger('shown' + EVENT_KEY, e); + } + }); + + if (that.$element[0].hasAttribute('required')) { + this.$element.on('invalid' + EVENT_KEY, function () { + that.$button[0].classList.add('bs-invalid'); + + that.$element + .on('shown' + EVENT_KEY + '.invalid', function () { + that.$element + .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened + .off('shown' + EVENT_KEY + '.invalid'); + }) + .on('rendered' + EVENT_KEY, function () { + // if select is no longer invalid, remove the bs-invalid class + if (this.validity.valid) that.$button[0].classList.remove('bs-invalid'); + that.$element.off('rendered' + EVENT_KEY); + }); + + that.$button.on('blur' + EVENT_KEY, function () { + that.$element.trigger('focus').trigger('blur'); + that.$button.off('blur' + EVENT_KEY); + }); + }); + } + + setTimeout(function () { + that.createLi(); + that.$element.trigger('loaded' + EVENT_KEY); + }); + }, + + createDropdown: function () { + // Options + // If we are multiple or showTick option is set, then add the show-tick class + var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '', + multiselectable = this.multiple ? ' aria-multiselectable="true"' : '', + inputGroup = '', + autofocus = this.autofocus ? ' autofocus' : ''; + + if (version.major < 4 && this.$element.parent().hasClass('input-group')) { + inputGroup = ' input-group-btn'; + } + + // Elements + var drop, + header = '', + searchbox = '', + actionsbox = '', + donebutton = ''; + + if (this.options.header) { + header = + '
    ' + + '' + + this.options.header + + '
    '; + } + + if (this.options.liveSearch) { + searchbox = + ''; + } + + if (this.multiple && this.options.actionsBox) { + actionsbox = + '
    ' + + '
    ' + + '' + + '' + + '
    ' + + '
    '; + } + + if (this.multiple && this.options.doneButton) { + donebutton = + '
    ' + + '
    ' + + '' + + '
    ' + + '
    '; + } + + drop = + ''; + + return $(drop); + }, + + setPositionData: function () { + this.selectpicker.view.canHighlight = []; + this.selectpicker.view.size = 0; + + for (var i = 0; i < this.selectpicker.current.data.length; i++) { + var li = this.selectpicker.current.data[i], + canHighlight = true; + + if (li.type === 'divider') { + canHighlight = false; + li.height = this.sizeInfo.dividerHeight; + } else if (li.type === 'optgroup-label') { + canHighlight = false; + li.height = this.sizeInfo.dropdownHeaderHeight; + } else { + li.height = this.sizeInfo.liHeight; + } + + if (li.disabled) canHighlight = false; + + this.selectpicker.view.canHighlight.push(canHighlight); + + if (canHighlight) { + this.selectpicker.view.size++; + li.posinset = this.selectpicker.view.size; + } + + li.position = (i === 0 ? 0 : this.selectpicker.current.data[i - 1].position) + li.height; + } + }, + + isVirtual: function () { + return (this.options.virtualScroll !== false) && (this.selectpicker.main.elements.length >= this.options.virtualScroll) || this.options.virtualScroll === true; + }, + + createView: function (isSearching, setSize, refresh) { + var that = this, + scrollTop = 0, + active = [], + selected, + prevActive; + + this.selectpicker.current = isSearching ? this.selectpicker.search : this.selectpicker.main; + + this.setPositionData(); + + if (setSize) { + if (refresh) { + scrollTop = this.$menuInner[0].scrollTop; + } else if (!that.multiple) { + var element = that.$element[0], + selectedIndex = (element.options[element.selectedIndex] || {}).liIndex; + + if (typeof selectedIndex === 'number' && that.options.size !== false) { + var selectedData = that.selectpicker.main.data[selectedIndex], + position = selectedData && selectedData.position; + + if (position) { + scrollTop = position - ((that.sizeInfo.menuInnerHeight + that.sizeInfo.liHeight) / 2); + } + } + } + } + + scroll(scrollTop, true); + + this.$menuInner.off('scroll.createView').on('scroll.createView', function (e, updateValue) { + if (!that.noScroll) scroll(this.scrollTop, updateValue); + that.noScroll = false; + }); + + function scroll (scrollTop, init) { + var size = that.selectpicker.current.elements.length, + chunks = [], + chunkSize, + chunkCount, + firstChunk, + lastChunk, + currentChunk, + prevPositions, + positionIsDifferent, + previousElements, + menuIsDifferent = true, + isVirtual = that.isVirtual(); + + that.selectpicker.view.scrollTop = scrollTop; + + if (isVirtual === true) { + // if an option that is encountered that is wider than the current menu width, update the menu width accordingly + if (that.sizeInfo.hasScrollBar && that.$menu[0].offsetWidth > that.sizeInfo.totalMenuWidth) { + that.sizeInfo.menuWidth = that.$menu[0].offsetWidth; + that.sizeInfo.totalMenuWidth = that.sizeInfo.menuWidth + that.sizeInfo.scrollBarWidth; + that.$menu.css('min-width', that.sizeInfo.menuWidth); + } + } + + chunkSize = Math.ceil(that.sizeInfo.menuInnerHeight / that.sizeInfo.liHeight * 1.5); // number of options in a chunk + chunkCount = Math.round(size / chunkSize) || 1; // number of chunks + + for (var i = 0; i < chunkCount; i++) { + var endOfChunk = (i + 1) * chunkSize; + + if (i === chunkCount - 1) { + endOfChunk = size; + } + + chunks[i] = [ + (i) * chunkSize + (!i ? 0 : 1), + endOfChunk + ]; + + if (!size) break; + + if (currentChunk === undefined && scrollTop <= that.selectpicker.current.data[endOfChunk - 1].position - that.sizeInfo.menuInnerHeight) { + currentChunk = i; + } + } + + if (currentChunk === undefined) currentChunk = 0; + + prevPositions = [that.selectpicker.view.position0, that.selectpicker.view.position1]; + + // always display previous, current, and next chunks + firstChunk = Math.max(0, currentChunk - 1); + lastChunk = Math.min(chunkCount - 1, currentChunk + 1); + + that.selectpicker.view.position0 = isVirtual === false ? 0 : (Math.max(0, chunks[firstChunk][0]) || 0); + that.selectpicker.view.position1 = isVirtual === false ? size : (Math.min(size, chunks[lastChunk][1]) || 0); + + positionIsDifferent = prevPositions[0] !== that.selectpicker.view.position0 || prevPositions[1] !== that.selectpicker.view.position1; + + if (that.activeIndex !== undefined) { + prevActive = that.selectpicker.main.elements[that.prevActiveIndex]; + active = that.selectpicker.main.elements[that.activeIndex]; + selected = that.selectpicker.main.elements[that.selectedIndex]; + + if (init) { + if (that.activeIndex !== that.selectedIndex) { + that.defocusItem(active); + } + that.activeIndex = undefined; + } + + if (that.activeIndex && that.activeIndex !== that.selectedIndex) { + that.defocusItem(selected); + } + } + + if (that.prevActiveIndex !== undefined && that.prevActiveIndex !== that.activeIndex && that.prevActiveIndex !== that.selectedIndex) { + that.defocusItem(prevActive); + } + + if (init || positionIsDifferent) { + previousElements = that.selectpicker.view.visibleElements ? that.selectpicker.view.visibleElements.slice() : []; + + if (isVirtual === false) { + that.selectpicker.view.visibleElements = that.selectpicker.current.elements; + } else { + that.selectpicker.view.visibleElements = that.selectpicker.current.elements.slice(that.selectpicker.view.position0, that.selectpicker.view.position1); + } + + that.setOptionStatus(); + + // if searching, check to make sure the list has actually been updated before updating DOM + // this prevents unnecessary repaints + if (isSearching || (isVirtual === false && init)) menuIsDifferent = !isEqual(previousElements, that.selectpicker.view.visibleElements); + + // if virtual scroll is disabled and not searching, + // menu should never need to be updated more than once + if ((init || isVirtual === true) && menuIsDifferent) { + var menuInner = that.$menuInner[0], + menuFragment = document.createDocumentFragment(), + emptyMenu = menuInner.firstChild.cloneNode(false), + marginTop, + marginBottom, + elements = that.selectpicker.view.visibleElements, + toSanitize = []; + + // replace the existing UL with an empty one - this is faster than $.empty() + menuInner.replaceChild(emptyMenu, menuInner.firstChild); + + for (var i = 0, visibleElementsLen = elements.length; i < visibleElementsLen; i++) { + var element = elements[i], + elText, + elementData; + + if (that.options.sanitize) { + elText = element.lastChild; + + if (elText) { + elementData = that.selectpicker.current.data[i + that.selectpicker.view.position0]; + + if (elementData && elementData.content && !elementData.sanitized) { + toSanitize.push(elText); + elementData.sanitized = true; + } + } + } + + menuFragment.appendChild(element); + } + + if (that.options.sanitize && toSanitize.length) { + sanitizeHtml(toSanitize, that.options.whiteList, that.options.sanitizeFn); + } + + if (isVirtual === true) { + marginTop = (that.selectpicker.view.position0 === 0 ? 0 : that.selectpicker.current.data[that.selectpicker.view.position0 - 1].position); + marginBottom = (that.selectpicker.view.position1 > size - 1 ? 0 : that.selectpicker.current.data[size - 1].position - that.selectpicker.current.data[that.selectpicker.view.position1 - 1].position); + + menuInner.firstChild.style.marginTop = marginTop + 'px'; + menuInner.firstChild.style.marginBottom = marginBottom + 'px'; + } else { + menuInner.firstChild.style.marginTop = 0; + menuInner.firstChild.style.marginBottom = 0; + } + + menuInner.firstChild.appendChild(menuFragment); + } + } + + that.prevActiveIndex = that.activeIndex; + + if (!that.options.liveSearch) { + that.$menuInner.trigger('focus'); + } else if (isSearching && init) { + var index = 0, + newActive; + + if (!that.selectpicker.view.canHighlight[index]) { + index = 1 + that.selectpicker.view.canHighlight.slice(1).indexOf(true); + } + + newActive = that.selectpicker.view.visibleElements[index]; + + that.defocusItem(that.selectpicker.view.currentActive); + + that.activeIndex = (that.selectpicker.current.data[index] || {}).index; + + that.focusItem(newActive); + } + } + + $(window) + .off('resize' + EVENT_KEY + '.' + this.selectId + '.createView') + .on('resize' + EVENT_KEY + '.' + this.selectId + '.createView', function () { + var isActive = that.$newElement.hasClass(classNames.SHOW); + + if (isActive) scroll(that.$menuInner[0].scrollTop); + }); + }, + + focusItem: function (li, liData, noStyle) { + if (li) { + liData = liData || this.selectpicker.main.data[this.activeIndex]; + var a = li.firstChild; + + if (a) { + a.setAttribute('aria-setsize', this.selectpicker.view.size); + a.setAttribute('aria-posinset', liData.posinset); + + if (noStyle !== true) { + this.focusedParent.setAttribute('aria-activedescendant', a.id); + li.classList.add('active'); + a.classList.add('active'); + } + } + } + }, + + defocusItem: function (li) { + if (li) { + li.classList.remove('active'); + if (li.firstChild) li.firstChild.classList.remove('active'); + } + }, + + setPlaceholder: function () { + var updateIndex = false; + + if (this.options.title && !this.multiple) { + if (!this.selectpicker.view.titleOption) this.selectpicker.view.titleOption = document.createElement('option'); + + // this option doesn't create a new
  • element, but does add a new option at the start, + // so startIndex should increase to prevent having to check every option for the bs-title-option class + updateIndex = true; + + var element = this.$element[0], + isSelected = false, + titleNotAppended = !this.selectpicker.view.titleOption.parentNode; + + if (titleNotAppended) { + // Use native JS to prepend option (faster) + this.selectpicker.view.titleOption.className = 'bs-title-option'; + this.selectpicker.view.titleOption.value = ''; + + // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option. + // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs, + // if so, the select will have the data-selected attribute + var $opt = $(element.options[element.selectedIndex]); + isSelected = $opt.attr('selected') === undefined && this.$element.data('selected') === undefined; + } + + if (titleNotAppended || this.selectpicker.view.titleOption.index !== 0) { + element.insertBefore(this.selectpicker.view.titleOption, element.firstChild); + } + + // Set selected *after* appending to select, + // otherwise the option doesn't get selected in IE + // set using selectedIndex, as setting the selected attr to true here doesn't work in IE11 + if (isSelected) element.selectedIndex = 0; + } + + return updateIndex; + }, + + createLi: function () { + var that = this, + iconBase = this.options.iconBase, + optionSelector = ':not([hidden]):not([data-hidden="true"])', + mainElements = [], + mainData = [], + widestOptionLength = 0, + optID = 0, + startIndex = this.setPlaceholder() ? 1 : 0; // append the titleOption if necessary and skip the first option in the loop + + if (this.options.hideDisabled) optionSelector += ':not(:disabled)'; + + if ((that.options.showTick || that.multiple) && !elementTemplates.checkMark.parentNode) { + elementTemplates.checkMark.className = iconBase + ' ' + that.options.tickIcon + ' check-mark'; + elementTemplates.a.appendChild(elementTemplates.checkMark); + } + + var selectOptions = this.$element[0].querySelectorAll('select > *' + optionSelector); + + function addDivider (config) { + var previousData = mainData[mainData.length - 1]; + + // ensure optgroup doesn't create back-to-back dividers + if ( + previousData && + previousData.type === 'divider' && + (previousData.optID || config.optID) + ) { + return; + } + + config = config || {}; + config.type = 'divider'; + + mainElements.push( + generateOption.li( + false, + classNames.DIVIDER, + (config.optID ? config.optID + 'div' : undefined) + ) + ); + + mainData.push(config); + } + + function addOption (option, config) { + config = config || {}; + + config.divider = option.getAttribute('data-divider') === 'true'; + + if (config.divider) { + addDivider({ + optID: config.optID + }); + } else { + var liIndex = mainData.length, + cssText = option.style.cssText, + inlineStyle = cssText ? htmlEscape(cssText) : '', + optionClass = (option.className || '') + (config.optgroupClass || ''); + + if (config.optID) optionClass = 'opt ' + optionClass; + + config.text = option.textContent; + + config.content = option.getAttribute('data-content'); + config.tokens = option.getAttribute('data-tokens'); + config.subtext = option.getAttribute('data-subtext'); + config.icon = option.getAttribute('data-icon'); + config.iconBase = iconBase; + + var textElement = generateOption.text(config); + var liElement = generateOption.li( + generateOption.a( + textElement, + optionClass, + inlineStyle + ), + '', + config.optID + ); + + if (liElement.firstChild) { + liElement.firstChild.id = that.selectId + '-' + liIndex; + } + + mainElements.push(liElement); + + option.liIndex = liIndex; + + config.display = config.content || config.text; + config.type = 'option'; + config.index = liIndex; + config.option = option; + config.disabled = config.disabled || option.disabled; + + mainData.push(config); + + var combinedLength = 0; + + // count the number of characters in the option - not perfect, but should work in most cases + if (config.display) combinedLength += config.display.length; + if (config.subtext) combinedLength += config.subtext.length; + // if there is an icon, ensure this option's width is checked + if (config.icon) combinedLength += 1; + + if (combinedLength > widestOptionLength) { + widestOptionLength = combinedLength; + + // guess which option is the widest + // use this when calculating menu width + // not perfect, but it's fast, and the width will be updating accordingly when scrolling + that.selectpicker.view.widestOption = mainElements[mainElements.length - 1]; + } + } + } + + function addOptgroup (index, selectOptions) { + var optgroup = selectOptions[index], + previous = selectOptions[index - 1], + next = selectOptions[index + 1], + options = optgroup.querySelectorAll('option' + optionSelector); + + if (!options.length) return; + + var config = { + label: htmlEscape(optgroup.label), + subtext: optgroup.getAttribute('data-subtext'), + icon: optgroup.getAttribute('data-icon'), + iconBase: iconBase + }, + optgroupClass = ' ' + (optgroup.className || ''), + headerIndex, + lastIndex; + + optID++; + + if (previous) { + addDivider({ optID: optID }); + } + + var labelElement = generateOption.label(config); + + mainElements.push( + generateOption.li(labelElement, 'dropdown-header' + optgroupClass, optID) + ); + + mainData.push({ + display: config.label, + subtext: config.subtext, + type: 'optgroup-label', + optID: optID + }); + + for (var j = 0, len = options.length; j < len; j++) { + var option = options[j]; + + if (j === 0) { + headerIndex = mainData.length - 1; + lastIndex = headerIndex + len; + } + + addOption(option, { + headerIndex: headerIndex, + lastIndex: lastIndex, + optID: optID, + optgroupClass: optgroupClass, + disabled: optgroup.disabled + }); + } + + if (next) { + addDivider({ optID: optID }); + } + } + + for (var len = selectOptions.length; startIndex < len; startIndex++) { + var item = selectOptions[startIndex]; + + if (item.tagName !== 'OPTGROUP') { + addOption(item, {}); + } else { + addOptgroup(startIndex, selectOptions); + } + } + + this.selectpicker.main.elements = mainElements; + this.selectpicker.main.data = mainData; + + this.selectpicker.current = this.selectpicker.main; + }, + + findLis: function () { + return this.$menuInner.find('.inner > li'); + }, + + render: function () { + // ensure titleOption is appended and selected (if necessary) before getting selectedOptions + this.setPlaceholder(); + + var that = this, + element = this.$element[0], + selectedOptions = getSelectedOptions(element, this.options.hideDisabled), + selectedCount = selectedOptions.length, + button = this.$button[0], + buttonInner = button.querySelector('.filter-option-inner-inner'), + multipleSeparator = document.createTextNode(this.options.multipleSeparator), + titleFragment = elementTemplates.fragment.cloneNode(false), + showCount, + countMax, + hasContent = false; + + button.classList.toggle('bs-placeholder', that.multiple ? !selectedCount : !getSelectValues(element, selectedOptions)); + + this.tabIndex(); + + if (this.options.selectedTextFormat === 'static') { + titleFragment = generateOption.text({ text: this.options.title }, true); + } else { + showCount = this.multiple && this.options.selectedTextFormat.indexOf('count') !== -1 && selectedCount > 1; + + // determine if the number of selected options will be shown (showCount === true) + if (showCount) { + countMax = this.options.selectedTextFormat.split('>'); + showCount = (countMax.length > 1 && selectedCount > countMax[1]) || (countMax.length === 1 && selectedCount >= 2); + } + + // only loop through all selected options if the count won't be shown + if (showCount === false) { + for (var selectedIndex = 0; selectedIndex < selectedCount; selectedIndex++) { + if (selectedIndex < 50) { + var option = selectedOptions[selectedIndex], + titleOptions = {}, + thisData = { + content: option.getAttribute('data-content'), + subtext: option.getAttribute('data-subtext'), + icon: option.getAttribute('data-icon') + }; + + if (this.multiple && selectedIndex > 0) { + titleFragment.appendChild(multipleSeparator.cloneNode(false)); + } + + if (option.title) { + titleOptions.text = option.title; + } else if (thisData.content && that.options.showContent) { + titleOptions.content = thisData.content.toString(); + hasContent = true; + } else { + if (that.options.showIcon) { + titleOptions.icon = thisData.icon; + titleOptions.iconBase = this.options.iconBase; + } + if (that.options.showSubtext && !that.multiple && thisData.subtext) titleOptions.subtext = ' ' + thisData.subtext; + titleOptions.text = option.textContent.trim(); + } + + titleFragment.appendChild(generateOption.text(titleOptions, true)); + } else { + break; + } + } + + // add ellipsis + if (selectedCount > 49) { + titleFragment.appendChild(document.createTextNode('...')); + } + } else { + var optionSelector = ':not([hidden]):not([data-hidden="true"]):not([data-divider="true"])'; + if (this.options.hideDisabled) optionSelector += ':not(:disabled)'; + + // If this is a multiselect, and selectedTextFormat is count, then show 1 of 2 selected, etc. + var totalCount = this.$element[0].querySelectorAll('select > option' + optionSelector + ', optgroup' + optionSelector + ' option' + optionSelector).length, + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedCount, totalCount) : this.options.countSelectedText; + + titleFragment = generateOption.text({ + text: tr8nText.replace('{0}', selectedCount.toString()).replace('{1}', totalCount.toString()) + }, true); + } + } + + if (this.options.title == undefined) { + // use .attr to ensure undefined is returned if title attribute is not set + this.options.title = this.$element.attr('title'); + } + + // If the select doesn't have a title, then use the default, or if nothing is set at all, use noneSelectedText + if (!titleFragment.childNodes.length) { + titleFragment = generateOption.text({ + text: typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText + }, true); + } + + // strip all HTML tags and trim the result, then unescape any escaped tags + button.title = titleFragment.textContent.replace(/<[^>]*>?/g, '').trim(); + + if (this.options.sanitize && hasContent) { + sanitizeHtml([titleFragment], that.options.whiteList, that.options.sanitizeFn); + } + + buttonInner.innerHTML = ''; + buttonInner.appendChild(titleFragment); + + if (version.major < 4 && this.$newElement[0].classList.contains('bs3-has-addon')) { + var filterExpand = button.querySelector('.filter-expand'), + clone = buttonInner.cloneNode(true); + + clone.className = 'filter-expand'; + + if (filterExpand) { + button.replaceChild(clone, filterExpand); + } else { + button.appendChild(clone); + } + } + + this.$element.trigger('rendered' + EVENT_KEY); + }, + + /** + * @param [style] + * @param [status] + */ + setStyle: function (newStyle, status) { + var button = this.$button[0], + newElement = this.$newElement[0], + style = this.options.style.trim(), + buttonClass; + + if (this.$element.attr('class')) { + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, '')); + } + + if (version.major < 4) { + newElement.classList.add('bs3'); + + if (newElement.parentNode.classList.contains('input-group') && + (newElement.previousElementSibling || newElement.nextElementSibling) && + (newElement.previousElementSibling || newElement.nextElementSibling).classList.contains('input-group-addon') + ) { + newElement.classList.add('bs3-has-addon'); + } + } + + if (newStyle) { + buttonClass = newStyle.trim(); + } else { + buttonClass = style; + } + + if (status == 'add') { + if (buttonClass) button.classList.add.apply(button.classList, buttonClass.split(' ')); + } else if (status == 'remove') { + if (buttonClass) button.classList.remove.apply(button.classList, buttonClass.split(' ')); + } else { + if (style) button.classList.remove.apply(button.classList, style.split(' ')); + if (buttonClass) button.classList.add.apply(button.classList, buttonClass.split(' ')); + } + }, + + liHeight: function (refresh) { + if (!refresh && (this.options.size === false || this.sizeInfo)) return; + + if (!this.sizeInfo) this.sizeInfo = {}; + + var newElement = document.createElement('div'), + menu = document.createElement('div'), + menuInner = document.createElement('div'), + menuInnerInner = document.createElement('ul'), + divider = document.createElement('li'), + dropdownHeader = document.createElement('li'), + li = document.createElement('li'), + a = document.createElement('a'), + text = document.createElement('span'), + header = this.options.header && this.$menu.find('.' + classNames.POPOVERHEADER).length > 0 ? this.$menu.find('.' + classNames.POPOVERHEADER)[0].cloneNode(true) : null, + search = this.options.liveSearch ? document.createElement('div') : null, + actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null, + doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null, + firstOption = this.$element.find('option')[0]; + + this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth; + + text.className = 'text'; + a.className = 'dropdown-item ' + (firstOption ? firstOption.className : ''); + newElement.className = this.$menu[0].parentNode.className + ' ' + classNames.SHOW; + newElement.style.width = this.sizeInfo.selectWidth + 'px'; + if (this.options.width === 'auto') menu.style.minWidth = 0; + menu.className = classNames.MENU + ' ' + classNames.SHOW; + menuInner.className = 'inner ' + classNames.SHOW; + menuInnerInner.className = classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : ''); + divider.className = classNames.DIVIDER; + dropdownHeader.className = 'dropdown-header'; + + text.appendChild(document.createTextNode('\u200b')); + a.appendChild(text); + li.appendChild(a); + dropdownHeader.appendChild(text.cloneNode(true)); + + if (this.selectpicker.view.widestOption) { + menuInnerInner.appendChild(this.selectpicker.view.widestOption.cloneNode(true)); + } + + menuInnerInner.appendChild(li); + menuInnerInner.appendChild(divider); + menuInnerInner.appendChild(dropdownHeader); + if (header) menu.appendChild(header); + if (search) { + var input = document.createElement('input'); + search.className = 'bs-searchbox'; + input.className = 'form-control'; + search.appendChild(input); + menu.appendChild(search); + } + if (actions) menu.appendChild(actions); + menuInner.appendChild(menuInnerInner); + menu.appendChild(menuInner); + if (doneButton) menu.appendChild(doneButton); + newElement.appendChild(menu); + + document.body.appendChild(newElement); + + var liHeight = li.offsetHeight, + dropdownHeaderHeight = dropdownHeader ? dropdownHeader.offsetHeight : 0, + headerHeight = header ? header.offsetHeight : 0, + searchHeight = search ? search.offsetHeight : 0, + actionsHeight = actions ? actions.offsetHeight : 0, + doneButtonHeight = doneButton ? doneButton.offsetHeight : 0, + dividerHeight = $(divider).outerHeight(true), + // fall back to jQuery if getComputedStyle is not supported + menuStyle = window.getComputedStyle ? window.getComputedStyle(menu) : false, + menuWidth = menu.offsetWidth, + $menu = menuStyle ? null : $(menu), + menuPadding = { + vert: toInteger(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + + toInteger(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + + toInteger(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + + toInteger(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')), + horiz: toInteger(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) + + toInteger(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) + + toInteger(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) + + toInteger(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth')) + }, + menuExtras = { + vert: menuPadding.vert + + toInteger(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + + toInteger(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2, + horiz: menuPadding.horiz + + toInteger(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) + + toInteger(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2 + }, + scrollBarWidth; + + menuInner.style.overflowY = 'scroll'; + + scrollBarWidth = menu.offsetWidth - menuWidth; + + document.body.removeChild(newElement); + + this.sizeInfo.liHeight = liHeight; + this.sizeInfo.dropdownHeaderHeight = dropdownHeaderHeight; + this.sizeInfo.headerHeight = headerHeight; + this.sizeInfo.searchHeight = searchHeight; + this.sizeInfo.actionsHeight = actionsHeight; + this.sizeInfo.doneButtonHeight = doneButtonHeight; + this.sizeInfo.dividerHeight = dividerHeight; + this.sizeInfo.menuPadding = menuPadding; + this.sizeInfo.menuExtras = menuExtras; + this.sizeInfo.menuWidth = menuWidth; + this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth; + this.sizeInfo.scrollBarWidth = scrollBarWidth; + this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight; + + this.setPositionData(); + }, + + getSelectPosition: function () { + var that = this, + $window = $(window), + pos = that.$newElement.offset(), + $container = $(that.options.container), + containerPos; + + if (that.options.container && $container.length && !$container.is('body')) { + containerPos = $container.offset(); + containerPos.top += parseInt($container.css('borderTopWidth')); + containerPos.left += parseInt($container.css('borderLeftWidth')); + } else { + containerPos = { top: 0, left: 0 }; + } + + var winPad = that.options.windowPadding; + + this.sizeInfo.selectOffsetTop = pos.top - containerPos.top - $window.scrollTop(); + this.sizeInfo.selectOffsetBot = $window.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - containerPos.top - winPad[2]; + this.sizeInfo.selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft(); + this.sizeInfo.selectOffsetRight = $window.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - containerPos.left - winPad[1]; + this.sizeInfo.selectOffsetTop -= winPad[0]; + this.sizeInfo.selectOffsetLeft -= winPad[3]; + }, + + setMenuSize: function (isAuto) { + this.getSelectPosition(); + + var selectWidth = this.sizeInfo.selectWidth, + liHeight = this.sizeInfo.liHeight, + headerHeight = this.sizeInfo.headerHeight, + searchHeight = this.sizeInfo.searchHeight, + actionsHeight = this.sizeInfo.actionsHeight, + doneButtonHeight = this.sizeInfo.doneButtonHeight, + divHeight = this.sizeInfo.dividerHeight, + menuPadding = this.sizeInfo.menuPadding, + menuInnerHeight, + menuHeight, + divLength = 0, + minHeight, + _minHeight, + maxHeight, + menuInnerMinHeight, + estimate; + + if (this.options.dropupAuto) { + // Get the estimated height of the menu without scrollbars. + // This is useful for smaller menus, where there might be plenty of room + // below the button without setting dropup, but we can't know + // the exact height of the menu until createView is called later + estimate = liHeight * this.selectpicker.current.elements.length + menuPadding.vert; + this.$newElement.toggleClass(classNames.DROPUP, this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && estimate + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot); + } + + if (this.options.size === 'auto') { + _minHeight = this.selectpicker.current.elements.length > 3 ? this.sizeInfo.liHeight * 3 + this.sizeInfo.menuExtras.vert - 2 : 0; + menuHeight = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert; + minHeight = _minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight; + menuInnerMinHeight = Math.max(_minHeight - menuPadding.vert, 0); + + if (this.$newElement.hasClass(classNames.DROPUP)) { + menuHeight = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert; + } + + maxHeight = menuHeight; + menuInnerHeight = menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert; + } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) { + for (var i = 0; i < this.options.size; i++) { + if (this.selectpicker.current.data[i].type === 'divider') divLength++; + } + + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert; + menuInnerHeight = menuHeight - menuPadding.vert; + maxHeight = menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight; + minHeight = menuInnerMinHeight = ''; + } + + if (this.options.dropdownAlignRight === 'auto') { + this.$menu.toggleClass(classNames.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < (this.sizeInfo.totalMenuWidth - selectWidth)); + } + + this.$menu.css({ + 'max-height': maxHeight + 'px', + 'overflow': 'hidden', + 'min-height': minHeight + 'px' + }); + + this.$menuInner.css({ + 'max-height': menuInnerHeight + 'px', + 'overflow-y': 'auto', + 'min-height': menuInnerMinHeight + 'px' + }); + + // ensure menuInnerHeight is always a positive number to prevent issues calculating chunkSize in createView + this.sizeInfo.menuInnerHeight = Math.max(menuInnerHeight, 1); + + if (this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight) { + this.sizeInfo.hasScrollBar = true; + this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth; + + this.$menu.css('min-width', this.sizeInfo.totalMenuWidth); + } + + if (this.dropdown && this.dropdown._popper) this.dropdown._popper.update(); + }, + + setSize: function (refresh) { + this.liHeight(refresh); + + if (this.options.header) this.$menu.css('padding-top', 0); + if (this.options.size === false) return; + + var that = this, + $window = $(window); + + this.setMenuSize(); + + if (this.options.liveSearch) { + this.$searchbox + .off('input.setMenuSize propertychange.setMenuSize') + .on('input.setMenuSize propertychange.setMenuSize', function () { + return that.setMenuSize(); + }); + } + + if (this.options.size === 'auto') { + $window + .off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize') + .on('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize', function () { + return that.setMenuSize(); + }); + } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) { + $window.off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize'); + } + + that.createView(false, true, refresh); + }, + + setWidth: function () { + var that = this; + + if (this.options.width === 'auto') { + requestAnimationFrame(function () { + that.$menu.css('min-width', '0'); + + that.$element.on('loaded' + EVENT_KEY, function () { + that.liHeight(); + that.setMenuSize(); + + // Get correct width if element is hidden + var $selectClone = that.$newElement.clone().appendTo('body'), + btnWidth = $selectClone.css('width', 'auto').children('button').outerWidth(); + + $selectClone.remove(); + + // Set width to whatever's larger, button title or longest option + that.sizeInfo.selectWidth = Math.max(that.sizeInfo.totalMenuWidth, btnWidth); + that.$newElement.css('width', that.sizeInfo.selectWidth + 'px'); + }); + }); + } else if (this.options.width === 'fit') { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', '').addClass('fit-width'); + } else if (this.options.width) { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', this.options.width); + } else { + // Remove inline min-width/width so width can be changed + this.$menu.css('min-width', ''); + this.$newElement.css('width', ''); + } + // Remove fit-width class if width is changed programmatically + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { + this.$newElement[0].classList.remove('fit-width'); + } + }, + + selectPosition: function () { + this.$bsContainer = $('
    '); + + var that = this, + $container = $(this.options.container), + pos, + containerPos, + actualHeight, + getPlacement = function ($element) { + var containerPosition = {}, + // fall back to dropdown's default display setting if display is not manually set + display = that.options.display || ( + // Bootstrap 3 doesn't have $.fn.dropdown.Constructor.Default + $.fn.dropdown.Constructor.Default ? $.fn.dropdown.Constructor.Default.display + : false + ); + + that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass(classNames.DROPUP, $element.hasClass(classNames.DROPUP)); + pos = $element.offset(); + + if (!$container.is('body')) { + containerPos = $container.offset(); + containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop(); + containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft(); + } else { + containerPos = { top: 0, left: 0 }; + } + + actualHeight = $element.hasClass(classNames.DROPUP) ? 0 : $element[0].offsetHeight; + + // Bootstrap 4+ uses Popper for menu positioning + if (version.major < 4 || display === 'static') { + containerPosition.top = pos.top - containerPos.top + actualHeight; + containerPosition.left = pos.left - containerPos.left; + } + + containerPosition.width = $element[0].offsetWidth; + + that.$bsContainer.css(containerPosition); + }; + + this.$button.on('click.bs.dropdown.data-api', function () { + if (that.isDisabled()) { + return; + } + + getPlacement(that.$newElement); + + that.$bsContainer + .appendTo(that.options.container) + .toggleClass(classNames.SHOW, !that.$button.hasClass(classNames.SHOW)) + .append(that.$menu); + }); + + $(window) + .off('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId) + .on('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId, function () { + var isActive = that.$newElement.hasClass(classNames.SHOW); + + if (isActive) getPlacement(that.$newElement); + }); + + this.$element.on('hide' + EVENT_KEY, function () { + that.$menu.data('height', that.$menu.height()); + that.$bsContainer.detach(); + }); + }, + + setOptionStatus: function (selectedOnly) { + var that = this; + + that.noScroll = false; + + if (that.selectpicker.view.visibleElements && that.selectpicker.view.visibleElements.length) { + for (var i = 0; i < that.selectpicker.view.visibleElements.length; i++) { + var liData = that.selectpicker.current.data[i + that.selectpicker.view.position0], + option = liData.option; + + if (option) { + if (selectedOnly !== true) { + that.setDisabled( + liData.index, + liData.disabled + ); + } + + that.setSelected( + liData.index, + option.selected + ); + } + } + } + }, + + /** + * @param {number} index - the index of the option that is being changed + * @param {boolean} selected - true if the option is being selected, false if being deselected + */ + setSelected: function (index, selected) { + var li = this.selectpicker.main.elements[index], + liData = this.selectpicker.main.data[index], + activeIndexIsSet = this.activeIndex !== undefined, + thisIsActive = this.activeIndex === index, + prevActive, + a, + // if current option is already active + // OR + // if the current option is being selected, it's NOT multiple, and + // activeIndex is undefined: + // - when the menu is first being opened, OR + // - after a search has been performed, OR + // - when retainActive is false when selecting a new option (i.e. index of the newly selected option is not the same as the current activeIndex) + keepActive = thisIsActive || (selected && !this.multiple && !activeIndexIsSet); + + liData.selected = selected; + + a = li.firstChild; + + if (selected) { + this.selectedIndex = index; + } + + li.classList.toggle('selected', selected); + + if (keepActive) { + this.focusItem(li, liData); + this.selectpicker.view.currentActive = li; + this.activeIndex = index; + } else { + this.defocusItem(li); + } + + if (a) { + a.classList.toggle('selected', selected); + + if (selected) { + a.setAttribute('aria-selected', true); + } else { + if (this.multiple) { + a.setAttribute('aria-selected', false); + } else { + a.removeAttribute('aria-selected'); + } + } + } + + if (!keepActive && !activeIndexIsSet && selected && this.prevActiveIndex !== undefined) { + prevActive = this.selectpicker.main.elements[this.prevActiveIndex]; + + this.defocusItem(prevActive); + } + }, + + /** + * @param {number} index - the index of the option that is being disabled + * @param {boolean} disabled - true if the option is being disabled, false if being enabled + */ + setDisabled: function (index, disabled) { + var li = this.selectpicker.main.elements[index], + a; + + this.selectpicker.main.data[index].disabled = disabled; + + a = li.firstChild; + + li.classList.toggle(classNames.DISABLED, disabled); + + if (a) { + if (version.major === '4') a.classList.toggle(classNames.DISABLED, disabled); + + if (disabled) { + a.setAttribute('aria-disabled', disabled); + a.setAttribute('tabindex', -1); + } else { + a.removeAttribute('aria-disabled'); + a.setAttribute('tabindex', 0); + } + } + }, + + isDisabled: function () { + return this.$element[0].disabled; + }, + + checkDisabled: function () { + var that = this; + + if (this.isDisabled()) { + this.$newElement[0].classList.add(classNames.DISABLED); + this.$button.addClass(classNames.DISABLED).attr('tabindex', -1).attr('aria-disabled', true); + } else { + if (this.$button[0].classList.contains(classNames.DISABLED)) { + this.$newElement[0].classList.remove(classNames.DISABLED); + this.$button.removeClass(classNames.DISABLED).attr('aria-disabled', false); + } + + if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) { + this.$button.removeAttr('tabindex'); + } + } + + this.$button.on('click', function () { + return !that.isDisabled(); + }); + }, + + tabIndex: function () { + if (this.$element.data('tabindex') !== this.$element.attr('tabindex') && + (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) { + this.$element.data('tabindex', this.$element.attr('tabindex')); + this.$button.attr('tabindex', this.$element.data('tabindex')); + } + + this.$element.attr('tabindex', -98); + }, + + clickListener: function () { + var that = this, + $document = $(document); + + $document.data('spaceSelect', false); + + this.$button.on('keyup', function (e) { + if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) { + e.preventDefault(); + $document.data('spaceSelect', false); + } + }); + + this.$newElement.on('show.bs.dropdown', function () { + if (version.major > 3 && !that.dropdown) { + that.dropdown = that.$button.data('bs.dropdown'); + that.dropdown._menu = that.$menu[0]; + } + }); + + this.$button.on('click.bs.dropdown.data-api', function () { + if (!that.$newElement.hasClass(classNames.SHOW)) { + that.setSize(); + } + }); + + function setFocus () { + if (that.options.liveSearch) { + that.$searchbox.trigger('focus'); + } else { + that.$menuInner.trigger('focus'); + } + } + + function checkPopperExists () { + if (that.dropdown && that.dropdown._popper && that.dropdown._popper.state.isCreated) { + setFocus(); + } else { + requestAnimationFrame(checkPopperExists); + } + } + + this.$element.on('shown' + EVENT_KEY, function () { + if (that.$menuInner[0].scrollTop !== that.selectpicker.view.scrollTop) { + that.$menuInner[0].scrollTop = that.selectpicker.view.scrollTop; + } + + if (version.major > 3) { + requestAnimationFrame(checkPopperExists); + } else { + setFocus(); + } + }); + + // ensure posinset and setsize are correct before selecting an option via a click + this.$menuInner.on('mouseenter', 'li a', function (e) { + var hoverLi = this.parentElement, + position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0, + index = Array.prototype.indexOf.call(hoverLi.parentElement.children, hoverLi), + hoverData = that.selectpicker.current.data[index + position0]; + + that.focusItem(hoverLi, hoverData, true); + }); + + this.$menuInner.on('click', 'li a', function (e, retainActive) { + var $this = $(this), + element = that.$element[0], + position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0, + clickedData = that.selectpicker.current.data[$this.parent().index() + position0], + clickedIndex = clickedData.index, + prevValue = getSelectValues(element), + prevIndex = element.selectedIndex, + prevOption = element.options[prevIndex], + triggerChange = true; + + // Don't close on multi choice menu + if (that.multiple && that.options.maxOptions !== 1) { + e.stopPropagation(); + } + + e.preventDefault(); + + // Don't run if the select is disabled + if (!that.isDisabled() && !$this.parent().hasClass(classNames.DISABLED)) { + var $options = that.$element.find('option'), + option = clickedData.option, + $option = $(option), + state = option.selected, + $optgroup = $option.parent('optgroup'), + $optgroupOptions = $optgroup.find('option'), + maxOptions = that.options.maxOptions, + maxOptionsGrp = $optgroup.data('maxOptions') || false; + + if (clickedIndex === that.activeIndex) retainActive = true; + + if (!retainActive) { + that.prevActiveIndex = that.activeIndex; + that.activeIndex = undefined; + } + + if (!that.multiple) { // Deselect all others if not multi select box + prevOption.selected = false; + option.selected = true; + that.setSelected(clickedIndex, true); + } else { // Toggle the one we have chosen if we are multi select. + option.selected = !state; + + that.setSelected(clickedIndex, !state); + $this.trigger('blur'); + + if (maxOptions !== false || maxOptionsGrp !== false) { + var maxReached = maxOptions < $options.filter(':selected').length, + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; + + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { + if (maxOptions && maxOptions == 1) { + $options.prop('selected', false); + $option.prop('selected', true); + + for (var i = 0; i < $options.length; i++) { + that.setSelected(i, false); + } + + that.setSelected(clickedIndex, true); + } else if (maxOptionsGrp && maxOptionsGrp == 1) { + $optgroup.find('option:selected').prop('selected', false); + $option.prop('selected', true); + + for (var i = 0; i < $optgroupOptions.length; i++) { + var option = $optgroupOptions[i]; + that.setSelected($options.index(option), false); + } + + that.setSelected(clickedIndex, true); + } else { + var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText, + maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText, + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), + $notify = $('
    '); + // If {var} is set in array, replace it + /** @deprecated */ + if (maxOptionsArr[2]) { + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); + } + + $option.prop('selected', false); + + that.$menu.append($notify); + + if (maxOptions && maxReached) { + $notify.append($('
    ' + maxTxt + '
    ')); + triggerChange = false; + that.$element.trigger('maxReached' + EVENT_KEY); + } + + if (maxOptionsGrp && maxReachedGrp) { + $notify.append($('
    ' + maxTxtGrp + '
    ')); + triggerChange = false; + that.$element.trigger('maxReachedGrp' + EVENT_KEY); + } + + setTimeout(function () { + that.setSelected(clickedIndex, false); + }, 10); + + $notify.delay(750).fadeOut(300, function () { + $(this).remove(); + }); + } + } + } + } + + if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) { + that.$button.trigger('focus'); + } else if (that.options.liveSearch) { + that.$searchbox.trigger('focus'); + } + + // Trigger select 'change' + if (triggerChange) { + if (that.multiple || prevIndex !== element.selectedIndex) { + // $option.prop('selected') is current option state (selected/unselected). prevValue is the value of the select prior to being changed. + changedArguments = [option.index, $option.prop('selected'), prevValue]; + that.$element + .triggerNative('change'); + } + } + } + }); + + this.$menu.on('click', 'li.' + classNames.DISABLED + ' a, .' + classNames.POPOVERHEADER + ', .' + classNames.POPOVERHEADER + ' :not(.close)', function (e) { + if (e.currentTarget == this) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch && !$(e.target).hasClass('close')) { + that.$searchbox.trigger('focus'); + } else { + that.$button.trigger('focus'); + } + } + }); + + this.$menuInner.on('click', '.divider, .dropdown-header', function (e) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch) { + that.$searchbox.trigger('focus'); + } else { + that.$button.trigger('focus'); + } + }); + + this.$menu.on('click', '.' + classNames.POPOVERHEADER + ' .close', function () { + that.$button.trigger('click'); + }); + + this.$searchbox.on('click', function (e) { + e.stopPropagation(); + }); + + this.$menu.on('click', '.actions-btn', function (e) { + if (that.options.liveSearch) { + that.$searchbox.trigger('focus'); + } else { + that.$button.trigger('focus'); + } + + e.preventDefault(); + e.stopPropagation(); + + if ($(this).hasClass('bs-select-all')) { + that.selectAll(); + } else { + that.deselectAll(); + } + }); + + this.$element + .on('change' + EVENT_KEY, function () { + that.render(); + that.$element.trigger('changed' + EVENT_KEY, changedArguments); + changedArguments = null; + }) + .on('focus' + EVENT_KEY, function () { + if (!that.options.mobile) that.$button.trigger('focus'); + }); + }, + + liveSearchListener: function () { + var that = this, + noResults = document.createElement('li'); + + this.$button.on('click.bs.dropdown.data-api', function () { + if (!!that.$searchbox.val()) { + that.$searchbox.val(''); + } + }); + + this.$searchbox.on('click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api', function (e) { + e.stopPropagation(); + }); + + this.$searchbox.on('input propertychange', function () { + var searchValue = that.$searchbox.val(); + + that.selectpicker.search.elements = []; + that.selectpicker.search.data = []; + + if (searchValue) { + var i, + searchMatch = [], + q = searchValue.toUpperCase(), + cache = {}, + cacheArr = [], + searchStyle = that._searchStyle(), + normalizeSearch = that.options.liveSearchNormalize; + + if (normalizeSearch) q = normalizeToBase(q); + + that._$lisSelected = that.$menuInner.find('.selected'); + + for (var i = 0; i < that.selectpicker.main.data.length; i++) { + var li = that.selectpicker.main.data[i]; + + if (!cache[i]) { + cache[i] = stringSearch(li, q, searchStyle, normalizeSearch); + } + + if (cache[i] && li.headerIndex !== undefined && cacheArr.indexOf(li.headerIndex) === -1) { + if (li.headerIndex > 0) { + cache[li.headerIndex - 1] = true; + cacheArr.push(li.headerIndex - 1); + } + + cache[li.headerIndex] = true; + cacheArr.push(li.headerIndex); + + cache[li.lastIndex + 1] = true; + } + + if (cache[i] && li.type !== 'optgroup-label') cacheArr.push(i); + } + + for (var i = 0, cacheLen = cacheArr.length; i < cacheLen; i++) { + var index = cacheArr[i], + prevIndex = cacheArr[i - 1], + li = that.selectpicker.main.data[index], + liPrev = that.selectpicker.main.data[prevIndex]; + + if (li.type !== 'divider' || (li.type === 'divider' && liPrev && liPrev.type !== 'divider' && cacheLen - 1 !== i)) { + that.selectpicker.search.data.push(li); + searchMatch.push(that.selectpicker.main.elements[index]); + } + } + + that.activeIndex = undefined; + that.noScroll = true; + that.$menuInner.scrollTop(0); + that.selectpicker.search.elements = searchMatch; + that.createView(true); + + if (!searchMatch.length) { + noResults.className = 'no-results'; + noResults.innerHTML = that.options.noneResultsText.replace('{0}', '"' + htmlEscape(searchValue) + '"'); + that.$menuInner[0].firstChild.appendChild(noResults); + } + } else { + that.$menuInner.scrollTop(0); + that.createView(false); + } + }); + }, + + _searchStyle: function () { + return this.options.liveSearchStyle || 'contains'; + }, + + val: function (value) { + var element = this.$element[0]; + + if (typeof value !== 'undefined') { + var prevValue = getSelectValues(element); + + changedArguments = [null, null, prevValue]; + + this.$element + .val(value) + .trigger('changed' + EVENT_KEY, changedArguments); + + if (this.$newElement.hasClass(classNames.SHOW)) { + if (this.multiple) { + this.setOptionStatus(true); + } else { + var liSelectedIndex = (element.options[element.selectedIndex] || {}).liIndex; + + if (typeof liSelectedIndex === 'number') { + this.setSelected(this.selectedIndex, false); + this.setSelected(liSelectedIndex, true); + } + } + } + + this.render(); + + changedArguments = null; + + return this.$element; + } else { + return this.$element.val(); + } + }, + + changeAll: function (status) { + if (!this.multiple) return; + if (typeof status === 'undefined') status = true; + + var element = this.$element[0], + previousSelected = 0, + currentSelected = 0, + prevValue = getSelectValues(element); + + element.classList.add('bs-select-hidden'); + + for (var i = 0, len = this.selectpicker.current.elements.length; i < len; i++) { + var liData = this.selectpicker.current.data[i], + option = liData.option; + + if (option && !liData.disabled && liData.type !== 'divider') { + if (liData.selected) previousSelected++; + option.selected = status; + if (status) currentSelected++; + } + } + + element.classList.remove('bs-select-hidden'); + + if (previousSelected === currentSelected) return; + + this.setOptionStatus(); + + changedArguments = [null, null, prevValue]; + + this.$element + .triggerNative('change'); + }, + + selectAll: function () { + return this.changeAll(true); + }, + + deselectAll: function () { + return this.changeAll(false); + }, + + toggle: function (e) { + e = e || window.event; + + if (e) e.stopPropagation(); + + this.$button.trigger('click.bs.dropdown.data-api'); + }, + + keydown: function (e) { + var $this = $(this), + isToggle = $this.hasClass('dropdown-toggle'), + $parent = isToggle ? $this.closest('.dropdown') : $this.closest(Selector.MENU), + that = $parent.data('this'), + $items = that.findLis(), + index, + isActive, + liActive, + activeLi, + offset, + updateScroll = false, + downOnTab = e.which === keyCodes.TAB && !isToggle && !that.options.selectOnTab, + isArrowKey = REGEXP_ARROW.test(e.which) || downOnTab, + scrollTop = that.$menuInner[0].scrollTop, + isVirtual = that.isVirtual(), + position0 = isVirtual === true ? that.selectpicker.view.position0 : 0; + + isActive = that.$newElement.hasClass(classNames.SHOW); + + if ( + !isActive && + ( + isArrowKey || + (e.which >= 48 && e.which <= 57) || + (e.which >= 96 && e.which <= 105) || + (e.which >= 65 && e.which <= 90) + ) + ) { + that.$button.trigger('click.bs.dropdown.data-api'); + + if (that.options.liveSearch) { + that.$searchbox.trigger('focus'); + return; + } + } + + if (e.which === keyCodes.ESCAPE && isActive) { + e.preventDefault(); + that.$button.trigger('click.bs.dropdown.data-api').trigger('focus'); + } + + if (isArrowKey) { // if up or down + if (!$items.length) return; + + liActive = that.selectpicker.main.elements[that.activeIndex]; + index = liActive ? Array.prototype.indexOf.call(liActive.parentElement.children, liActive) : -1; + + if (index !== -1) { + that.defocusItem(liActive); + } + + if (e.which === keyCodes.ARROW_UP) { // up + if (index !== -1) index--; + if (index + position0 < 0) index += $items.length; + + if (!that.selectpicker.view.canHighlight[index + position0]) { + index = that.selectpicker.view.canHighlight.slice(0, index + position0).lastIndexOf(true) - position0; + if (index === -1) index = $items.length - 1; + } + } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down + index++; + if (index + position0 >= that.selectpicker.view.canHighlight.length) index = 0; + + if (!that.selectpicker.view.canHighlight[index + position0]) { + index = index + 1 + that.selectpicker.view.canHighlight.slice(index + position0 + 1).indexOf(true); + } + } + + e.preventDefault(); + + var liActiveIndex = position0 + index; + + if (e.which === keyCodes.ARROW_UP) { // up + // scroll to bottom and highlight last option + if (position0 === 0 && index === $items.length - 1) { + that.$menuInner[0].scrollTop = that.$menuInner[0].scrollHeight; + + liActiveIndex = that.selectpicker.current.elements.length - 1; + } else { + activeLi = that.selectpicker.current.data[liActiveIndex]; + offset = activeLi.position - activeLi.height; + + updateScroll = offset < scrollTop; + } + } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down + // scroll to top and highlight first option + if (index === 0) { + that.$menuInner[0].scrollTop = 0; + + liActiveIndex = 0; + } else { + activeLi = that.selectpicker.current.data[liActiveIndex]; + offset = activeLi.position - that.sizeInfo.menuInnerHeight; + + updateScroll = offset > scrollTop; + } + } + + liActive = that.selectpicker.current.elements[liActiveIndex]; + + that.activeIndex = that.selectpicker.current.data[liActiveIndex].index; + + that.focusItem(liActive); + + that.selectpicker.view.currentActive = liActive; + + if (updateScroll) that.$menuInner[0].scrollTop = offset; + + if (that.options.liveSearch) { + that.$searchbox.trigger('focus'); + } else { + $this.trigger('focus'); + } + } else if ( + (!$this.is('input') && !REGEXP_TAB_OR_ESCAPE.test(e.which)) || + (e.which === keyCodes.SPACE && that.selectpicker.keydown.keyHistory) + ) { + var searchMatch, + matches = [], + keyHistory; + + e.preventDefault(); + + that.selectpicker.keydown.keyHistory += keyCodeMap[e.which]; + + if (that.selectpicker.keydown.resetKeyHistory.cancel) clearTimeout(that.selectpicker.keydown.resetKeyHistory.cancel); + that.selectpicker.keydown.resetKeyHistory.cancel = that.selectpicker.keydown.resetKeyHistory.start(); + + keyHistory = that.selectpicker.keydown.keyHistory; + + // if all letters are the same, set keyHistory to just the first character when searching + if (/^(.)\1+$/.test(keyHistory)) { + keyHistory = keyHistory.charAt(0); + } + + // find matches + for (var i = 0; i < that.selectpicker.current.data.length; i++) { + var li = that.selectpicker.current.data[i], + hasMatch; + + hasMatch = stringSearch(li, keyHistory, 'startsWith', true); + + if (hasMatch && that.selectpicker.view.canHighlight[i]) { + matches.push(li.index); + } + } + + if (matches.length) { + var matchIndex = 0; + + $items.removeClass('active').find('a').removeClass('active'); + + // either only one key has been pressed or they are all the same key + if (keyHistory.length === 1) { + matchIndex = matches.indexOf(that.activeIndex); + + if (matchIndex === -1 || matchIndex === matches.length - 1) { + matchIndex = 0; + } else { + matchIndex++; + } + } + + searchMatch = matches[matchIndex]; + + activeLi = that.selectpicker.main.data[searchMatch]; + + if (scrollTop - activeLi.position > 0) { + offset = activeLi.position - activeLi.height; + updateScroll = true; + } else { + offset = activeLi.position - that.sizeInfo.menuInnerHeight; + // if the option is already visible at the current scroll position, just keep it the same + updateScroll = activeLi.position > scrollTop + that.sizeInfo.menuInnerHeight; + } + + liActive = that.selectpicker.main.elements[searchMatch]; + + that.activeIndex = matches[matchIndex]; + + that.focusItem(liActive); + + if (liActive) liActive.firstChild.focus(); + + if (updateScroll) that.$menuInner[0].scrollTop = offset; + + $this.trigger('focus'); + } + } + + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. + if ( + isActive && + ( + (e.which === keyCodes.SPACE && !that.selectpicker.keydown.keyHistory) || + e.which === keyCodes.ENTER || + (e.which === keyCodes.TAB && that.options.selectOnTab) + ) + ) { + if (e.which !== keyCodes.SPACE) e.preventDefault(); + + if (!that.options.liveSearch || e.which !== keyCodes.SPACE) { + that.$menuInner.find('.active a').trigger('click', true); // retain active class + $this.trigger('focus'); + + if (!that.options.liveSearch) { + // Prevent screen from scrolling if the user hits the spacebar + e.preventDefault(); + // Fixes spacebar selection of dropdown items in FF & IE + $(document).data('spaceSelect', true); + } + } + } + }, + + mobile: function () { + this.$element[0].classList.add('mobile-device'); + }, + + refresh: function () { + // update options if data attributes have been changed + var config = $.extend({}, this.options, this.$element.data()); + this.options = config; + + this.checkDisabled(); + this.setStyle(); + this.render(); + this.createLi(); + this.setWidth(); + + this.setSize(true); + + this.$element.trigger('refreshed' + EVENT_KEY); + }, + + hide: function () { + this.$newElement.hide(); + }, + + show: function () { + this.$newElement.show(); + }, + + remove: function () { + this.$newElement.remove(); + this.$element.remove(); + }, + + destroy: function () { + this.$newElement.before(this.$element).remove(); + + if (this.$bsContainer) { + this.$bsContainer.remove(); + } else { + this.$menu.remove(); + } + + this.$element + .off(EVENT_KEY) + .removeData('selectpicker') + .removeClass('bs-select-hidden selectpicker'); + + $(window).off(EVENT_KEY + '.' + this.selectId); + } + }; + + // SELECTPICKER PLUGIN DEFINITION + // ============================== + function Plugin (option) { + // get the args of the outer function.. + var args = arguments; + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them + // to get lost/corrupted in android 2.3 and IE9 #715 #775 + var _option = option; + + [].shift.apply(args); + + // if the version was not set successfully + if (!version.success) { + // try to retreive it again + try { + version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.'); + } catch (err) { + // fall back to use BootstrapVersion if set + if (Selectpicker.BootstrapVersion) { + version.full = Selectpicker.BootstrapVersion.split(' ')[0].split('.'); + } else { + version.full = [version.major, '0', '0']; + + console.warn( + 'There was an issue retrieving Bootstrap\'s version. ' + + 'Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. ' + + 'If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.', + err + ); + } + } + + version.major = version.full[0]; + version.success = true; + } + + if (version.major === '4') { + // some defaults need to be changed if using Bootstrap 4 + // check to see if they have already been manually changed before forcing them to update + var toUpdate = []; + + if (Selectpicker.DEFAULTS.style === classNames.BUTTONCLASS) toUpdate.push({ name: 'style', className: 'BUTTONCLASS' }); + if (Selectpicker.DEFAULTS.iconBase === classNames.ICONBASE) toUpdate.push({ name: 'iconBase', className: 'ICONBASE' }); + if (Selectpicker.DEFAULTS.tickIcon === classNames.TICKICON) toUpdate.push({ name: 'tickIcon', className: 'TICKICON' }); + + classNames.DIVIDER = 'dropdown-divider'; + classNames.SHOW = 'show'; + classNames.BUTTONCLASS = 'btn-light'; + classNames.POPOVERHEADER = 'popover-header'; + classNames.ICONBASE = ''; + classNames.TICKICON = 'bs-ok-default'; + + for (var i = 0; i < toUpdate.length; i++) { + var option = toUpdate[i]; + Selectpicker.DEFAULTS[option.name] = classNames[option.className]; + } + } + + var value; + var chain = this.each(function () { + var $this = $(this); + if ($this.is('select')) { + var data = $this.data('selectpicker'), + options = typeof _option == 'object' && _option; + + if (!data) { + var dataAttributes = $this.data(); + + for (var dataAttr in dataAttributes) { + if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) { + delete dataAttributes[dataAttr]; + } + } + + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, dataAttributes, options); + config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), dataAttributes.template, options.template); + $this.data('selectpicker', (data = new Selectpicker(this, config))); + } else if (options) { + for (var i in options) { + if (options.hasOwnProperty(i)) { + data.options[i] = options[i]; + } + } + } + + if (typeof _option == 'string') { + if (data[_option] instanceof Function) { + value = data[_option].apply(data, args); + } else { + value = data.options[_option]; + } + } + } + }); + + if (typeof value !== 'undefined') { + // noinspection JSUnusedAssignment + return value; + } else { + return chain; + } + } + + var old = $.fn.selectpicker; + $.fn.selectpicker = Plugin; + $.fn.selectpicker.Constructor = Selectpicker; + + // SELECTPICKER NO CONFLICT + // ======================== + $.fn.selectpicker.noConflict = function () { + $.fn.selectpicker = old; + return this; + }; + + $(document) + .off('keydown.bs.dropdown.data-api') + .on('keydown' + EVENT_KEY, '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', Selectpicker.prototype.keydown) + .on('focusin.modal', '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', function (e) { + e.stopPropagation(); + }); + + // SELECTPICKER DATA-API + // ===================== + $(window).on('load' + EVENT_KEY + '.data-api', function () { + $('.selectpicker').each(function () { + var $selectpicker = $(this); + Plugin.call($selectpicker, $selectpicker.data()); + }) + }); +})(jQuery); + + +})); +//# sourceMappingURL=bootstrap-select.js.map \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css new file mode 100644 index 000000000..579ee12c2 --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) + * + * Copyright 2012-2019 SnapAppointments, LLC + * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) + */.bootstrap-select>select.bs-select-hidden,select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\0;vertical-align:middle}.bootstrap-select>.dropdown-toggle{position:relative;width:100%;text-align:right;white-space:nowrap;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.bootstrap-select>.dropdown-toggle:after{margin-top:-1px}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:#999}.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:hover{color:rgba(255,255,255,.5)}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none;z-index:0!important}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2!important}.bootstrap-select.is-invalid .dropdown-toggle,.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle,.was-validated .bootstrap-select .selectpicker:invalid+.dropdown-toggle{border-color:#b94a48}.bootstrap-select.is-valid .dropdown-toggle,.was-validated .bootstrap-select .selectpicker:valid+.dropdown-toggle{border-color:#28a745}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus,.bootstrap-select>select.mobile-device:focus+.dropdown-toggle{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none;height:auto}:not(.input-group)>.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{float:none;z-index:auto}.form-inline .bootstrap-select,.form-inline .bootstrap-select.form-control:not([class*=col-]){width:auto}.bootstrap-select:not(.input-group-btn),.bootstrap-select[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.dropdown-menu-right,.bootstrap-select[class*=col-].dropdown-menu-right,.row .bootstrap-select[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select,.form-horizontal .bootstrap-select,.form-inline .bootstrap-select{margin-bottom:0}.form-group-lg .bootstrap-select.form-control,.form-group-sm .bootstrap-select.form-control{padding:0}.form-group-lg .bootstrap-select.form-control .dropdown-toggle,.form-group-sm .bootstrap-select.form-control .dropdown-toggle{height:100%;font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-lg .dropdown-toggle,.bootstrap-select.form-control-sm .dropdown-toggle{font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-sm .dropdown-toggle{padding:.25rem .5rem}.bootstrap-select.form-control-lg .dropdown-toggle{padding:.5rem 1rem}.form-inline .bootstrap-select .form-control{width:100%}.bootstrap-select.disabled,.bootstrap-select>.disabled{cursor:not-allowed}.bootstrap-select.disabled:focus,.bootstrap-select>.disabled:focus{outline:0!important}.bootstrap-select.bs-container{position:absolute;top:0;left:0;height:0!important;padding:0!important}.bootstrap-select.bs-container .dropdown-menu{z-index:1060}.bootstrap-select .dropdown-toggle .filter-option{position:static;top:0;left:0;float:left;height:100%;width:100%;text-align:left;overflow:hidden;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.bs3.bootstrap-select .dropdown-toggle .filter-option{padding-right:inherit}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option{position:absolute;padding-top:inherit;padding-bottom:inherit;padding-left:inherit;float:none}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner{padding-right:inherit}.bootstrap-select .dropdown-toggle .filter-option-inner-inner{overflow:hidden}.bootstrap-select .dropdown-toggle .filter-expand{width:0!important;float:left;opacity:0!important;overflow:hidden}.bootstrap-select .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.input-group .bootstrap-select.form-control .dropdown-toggle{border-radius:inherit}.bootstrap-select[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu>.inner:focus{outline:0!important}.bootstrap-select .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select .dropdown-menu li{position:relative}.bootstrap-select .dropdown-menu li.active small{color:rgba(255,255,255,.5)!important}.bootstrap-select .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select .dropdown-menu li a span.check-mark{display:none}.bootstrap-select .dropdown-menu li a span.text{display:inline-block}.bootstrap-select .dropdown-menu li small{padding-left:.5em}.bootstrap-select .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.fit-width .dropdown-toggle .filter-option{position:static;display:inline;padding:0}.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner{display:inline}.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before{content:'\00a0'}.bootstrap-select.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark{position:absolute;display:inline-block;right:15px;top:5px}.bootstrap-select.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select .bs-ok-default:after{content:'';display:block;width:.5em;height:1em;border-style:solid;border-width:0 .26em .26em 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before{bottom:auto;top:-4px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after{bottom:auto;top:-4px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:before,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.js b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.js new file mode 100644 index 000000000..058acb90e --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.js @@ -0,0 +1,9 @@ +/*! + * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) + * + * Copyright 2012-2019 SnapAppointments, LLC + * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) + */ + +!function(e,t){void 0===e&&void 0!==window&&(e=window),"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery")):t(e.jQuery)}(this,function(e){!function(z){"use strict";var d=["sanitize","whiteList","sanitizeFn"],r=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],e={"*":["class","dir","id","lang","role","tabindex","style",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},l=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,a=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function v(e,t){var i=e.nodeName.toLowerCase();if(-1!==z.inArray(i,t))return-1===z.inArray(i,r)||Boolean(e.nodeValue.match(l)||e.nodeValue.match(a));for(var s=z(t).filter(function(e,t){return t instanceof RegExp}),n=0,o=s.length;n]+>/g,"")),s&&(a=w(a)),a=a.toUpperCase(),o="contains"===i?0<=a.indexOf(t):a.startsWith(t)))break}return o}function A(e){return parseInt(e,10)||0}z.fn.triggerNative=function(e){var t,i=this[0];i.dispatchEvent?(u?t=new Event(e,{bubbles:!0}):(t=document.createEvent("Event")).initEvent(e,!0,!1),i.dispatchEvent(t)):i.fireEvent?((t=document.createEventObject()).eventType=e,i.fireEvent("on"+e,t)):this.trigger(e)};var f={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"},m=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,g=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\u1ab0-\\u1aff\\u1dc0-\\u1dff]","g");function b(e){return f[e]}function w(e){return(e=e.toString())&&e.replace(m,b).replace(g,"")}var I,x,$,y,S,E=(I={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},x=function(e){return I[e]},$="(?:"+Object.keys(I).join("|")+")",y=RegExp($),S=RegExp($,"g"),function(e){return e=null==e?"":""+e,y.test(e)?e.replace(S,x):e}),C={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"A",66:"B",67:"C",68:"D",69:"E",70:"F",71:"G",72:"H",73:"I",74:"J",75:"K",76:"L",77:"M",78:"N",79:"O",80:"P",81:"Q",82:"R",83:"S",84:"T",85:"U",86:"V",87:"W",88:"X",89:"Y",90:"Z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"},L=27,N=13,D=32,H=9,B=38,W=40,M={success:!1,major:"3"};try{M.full=(z.fn.dropdown.Constructor.VERSION||"").split(" ")[0].split("."),M.major=M.full[0],M.success=!0}catch(e){}var R=0,U=".bs.select",j={DISABLED:"disabled",DIVIDER:"divider",SHOW:"open",DROPUP:"dropup",MENU:"dropdown-menu",MENURIGHT:"dropdown-menu-right",MENULEFT:"dropdown-menu-left",BUTTONCLASS:"btn-default",POPOVERHEADER:"popover-title",ICONBASE:"glyphicon",TICKICON:"glyphicon-ok"},V={MENU:"."+j.MENU},F={span:document.createElement("span"),i:document.createElement("i"),subtext:document.createElement("small"),a:document.createElement("a"),li:document.createElement("li"),whitespace:document.createTextNode("\xa0"),fragment:document.createDocumentFragment()};F.a.setAttribute("role","option"),F.subtext.className="text-muted",F.text=F.span.cloneNode(!1),F.text.className="text",F.checkMark=F.span.cloneNode(!1);var _=new RegExp(B+"|"+W),G=new RegExp("^"+H+"$|"+L),q=function(e,t,i){var s=F.li.cloneNode(!1);return e&&(1===e.nodeType||11===e.nodeType?s.appendChild(e):s.innerHTML=e),void 0!==t&&""!==t&&(s.className=t),null!=i&&s.classList.add("optgroup-"+i),s},K=function(e,t,i){var s=F.a.cloneNode(!0);return e&&(11===e.nodeType?s.appendChild(e):s.insertAdjacentHTML("beforeend",e)),void 0!==t&&""!==t&&(s.className=t),"4"===M.major&&s.classList.add("dropdown-item"),i&&s.setAttribute("style",i),s},Y=function(e,t){var i,s,n=F.text.cloneNode(!1);if(e.content)n.innerHTML=e.content;else{if(n.textContent=e.text,e.icon){var o=F.whitespace.cloneNode(!1);(s=(!0===t?F.i:F.span).cloneNode(!1)).className=e.iconBase+" "+e.icon,F.fragment.appendChild(s),F.fragment.appendChild(o)}e.subtext&&((i=F.subtext.cloneNode(!1)).textContent=e.subtext,n.appendChild(i))}if(!0===t)for(;0'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1,windowPadding:0,virtualScroll:600,display:!1,sanitize:!0,sanitizeFn:null,whiteList:e},J.prototype={constructor:J,init:function(){var i=this,e=this.$element.attr("id");R++,this.selectId="bs-select-"+R,this.$element[0].classList.add("bs-select-hidden"),this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$element[0].classList.contains("show-tick")&&(this.options.showTick=!0),this.$newElement=this.createDropdown(),this.$element.after(this.$newElement).prependTo(this.$newElement),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(V.MENU),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),this.$element[0].classList.remove("bs-select-hidden"),!0===this.options.dropdownAlignRight&&this.$menu[0].classList.add(j.MENURIGHT),void 0!==e&&this.$button.attr("data-id",e),this.checkDisabled(),this.clickListener(),this.options.liveSearch?(this.liveSearchListener(),this.focusedParent=this.$searchbox[0]):this.focusedParent=this.$menuInner[0],this.setStyle(),this.render(),this.setWidth(),this.options.container?this.selectPosition():this.$element.on("hide"+U,function(){if(i.isVirtual()){var e=i.$menuInner[0],t=e.firstChild.cloneNode(!1);e.replaceChild(t,e.firstChild),e.scrollTop=0}}),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on({"hide.bs.dropdown":function(e){i.$element.trigger("hide"+U,e)},"hidden.bs.dropdown":function(e){i.$element.trigger("hidden"+U,e)},"show.bs.dropdown":function(e){i.$element.trigger("show"+U,e)},"shown.bs.dropdown":function(e){i.$element.trigger("shown"+U,e)}}),i.$element[0].hasAttribute("required")&&this.$element.on("invalid"+U,function(){i.$button[0].classList.add("bs-invalid"),i.$element.on("shown"+U+".invalid",function(){i.$element.val(i.$element.val()).off("shown"+U+".invalid")}).on("rendered"+U,function(){this.validity.valid&&i.$button[0].classList.remove("bs-invalid"),i.$element.off("rendered"+U)}),i.$button.on("blur"+U,function(){i.$element.trigger("focus").trigger("blur"),i.$button.off("blur"+U)})}),setTimeout(function(){i.createLi(),i.$element.trigger("loaded"+U)})},createDropdown:function(){var e=this.multiple||this.options.showTick?" show-tick":"",t=this.multiple?' aria-multiselectable="true"':"",i="",s=this.autofocus?" autofocus":"";M.major<4&&this.$element.parent().hasClass("input-group")&&(i=" input-group-btn");var n,o="",r="",l="",a="";return this.options.header&&(o='
    '+this.options.header+"
    "),this.options.liveSearch&&(r=''),this.multiple&&this.options.actionsBox&&(l='
    "),this.multiple&&this.options.doneButton&&(a='
    "),n='",z(n)},setPositionData:function(){this.selectpicker.view.canHighlight=[];for(var e=this.selectpicker.view.size=0;e=this.options.virtualScroll||!0===this.options.virtualScroll},createView:function(A,e,t){var L,N,D=this,i=0,H=[];if(this.selectpicker.current=A?this.selectpicker.search:this.selectpicker.main,this.setPositionData(),e)if(t)i=this.$menuInner[0].scrollTop;else if(!D.multiple){var s=D.$element[0],n=(s.options[s.selectedIndex]||{}).liIndex;if("number"==typeof n&&!1!==D.options.size){var o=D.selectpicker.main.data[n],r=o&&o.position;r&&(i=r-(D.sizeInfo.menuInnerHeight+D.sizeInfo.liHeight)/2)}}function l(e,t){var i,s,n,o,r,l,a,c,d,h,p=D.selectpicker.current.elements.length,u=[],f=!0,m=D.isVirtual();D.selectpicker.view.scrollTop=e,!0===m&&D.sizeInfo.hasScrollBar&&D.$menu[0].offsetWidth>D.sizeInfo.totalMenuWidth&&(D.sizeInfo.menuWidth=D.$menu[0].offsetWidth,D.sizeInfo.totalMenuWidth=D.sizeInfo.menuWidth+D.sizeInfo.scrollBarWidth,D.$menu.css("min-width",D.sizeInfo.menuWidth)),i=Math.ceil(D.sizeInfo.menuInnerHeight/D.sizeInfo.liHeight*1.5),s=Math.round(p/i)||1;for(var v=0;vp-1?0:D.selectpicker.current.data[p-1].position-D.selectpicker.current.data[D.selectpicker.view.position1-1].position,I.firstChild.style.marginTop=b+"px",w+"px"):I.firstChild.style.marginTop=0,I.firstChild.appendChild(x)}if(D.prevActiveIndex=D.activeIndex,D.options.liveSearch){if(A&&t){var z,T=0;D.selectpicker.view.canHighlight[T]||(T=1+D.selectpicker.view.canHighlight.slice(1).indexOf(!0)),z=D.selectpicker.view.visibleElements[T],D.defocusItem(D.selectpicker.view.currentActive),D.activeIndex=(D.selectpicker.current.data[T]||{}).index,D.focusItem(z)}}else D.$menuInner.trigger("focus")}l(i,!0),this.$menuInner.off("scroll.createView").on("scroll.createView",function(e,t){D.noScroll||l(this.scrollTop,t),D.noScroll=!1}),z(window).off("resize"+U+"."+this.selectId+".createView").on("resize"+U+"."+this.selectId+".createView",function(){D.$newElement.hasClass(j.SHOW)&&l(D.$menuInner[0].scrollTop)})},focusItem:function(e,t,i){if(e){t=t||this.selectpicker.main.data[this.activeIndex];var s=e.firstChild;s&&(s.setAttribute("aria-setsize",this.selectpicker.view.size),s.setAttribute("aria-posinset",t.posinset),!0!==i&&(this.focusedParent.setAttribute("aria-activedescendant",s.id),e.classList.add("active"),s.classList.add("active")))}},defocusItem:function(e){e&&(e.classList.remove("active"),e.firstChild&&e.firstChild.classList.remove("active"))},setPlaceholder:function(){var e=!1;if(this.options.title&&!this.multiple){this.selectpicker.view.titleOption||(this.selectpicker.view.titleOption=document.createElement("option")),e=!0;var t=this.$element[0],i=!1,s=!this.selectpicker.view.titleOption.parentNode;if(s)this.selectpicker.view.titleOption.className="bs-title-option",this.selectpicker.view.titleOption.value="",i=void 0===z(t.options[t.selectedIndex]).attr("selected")&&void 0===this.$element.data("selected");(s||0!==this.selectpicker.view.titleOption.index)&&t.insertBefore(this.selectpicker.view.titleOption,t.firstChild),i&&(t.selectedIndex=0)}return e},createLi:function(){var c=this,f=this.options.iconBase,m=':not([hidden]):not([data-hidden="true"])',v=[],g=[],d=0,b=0,e=this.setPlaceholder()?1:0;this.options.hideDisabled&&(m+=":not(:disabled)"),!c.options.showTick&&!c.multiple||F.checkMark.parentNode||(F.checkMark.className=f+" "+c.options.tickIcon+" check-mark",F.a.appendChild(F.checkMark));var t=this.$element[0].querySelectorAll("select > *"+m);function w(e){var t=g[g.length-1];t&&"divider"===t.type&&(t.optID||e.optID)||((e=e||{}).type="divider",v.push(q(!1,j.DIVIDER,e.optID?e.optID+"div":void 0)),g.push(e))}function I(e,t){if((t=t||{}).divider="true"===e.getAttribute("data-divider"),t.divider)w({optID:t.optID});else{var i=g.length,s=e.style.cssText,n=s?E(s):"",o=(e.className||"")+(t.optgroupClass||"");t.optID&&(o="opt "+o),t.text=e.textContent,t.content=e.getAttribute("data-content"),t.tokens=e.getAttribute("data-tokens"),t.subtext=e.getAttribute("data-subtext"),t.icon=e.getAttribute("data-icon"),t.iconBase=f;var r=Y(t),l=q(K(r,o,n),"",t.optID);l.firstChild&&(l.firstChild.id=c.selectId+"-"+i),v.push(l),e.liIndex=i,t.display=t.content||t.text,t.type="option",t.index=i,t.option=e,t.disabled=t.disabled||e.disabled,g.push(t);var a=0;t.display&&(a+=t.display.length),t.subtext&&(a+=t.subtext.length),t.icon&&(a+=1),d li")},render:function(){this.setPlaceholder();var e,t,i=this,s=this.$element[0],n=function(e,t){var i,s=e.selectedOptions,n=[];if(t){for(var o=0,r=s.length;o")).length&&o>t[1]||1===t.length&&2<=o),!1===e){for(var h=0;h option"+m+", optgroup"+m+" option"+m).length,g="function"==typeof this.options.countSelectedText?this.options.countSelectedText(o,v):this.options.countSelectedText;c=Y({text:g.replace("{0}",o.toString()).replace("{1}",v.toString())},!0)}if(null==this.options.title&&(this.options.title=this.$element.attr("title")),c.childNodes.length||(c=Y({text:void 0!==this.options.title?this.options.title:this.options.noneSelectedText},!0)),r.title=c.textContent.replace(/<[^>]*>?/g,"").trim(),this.options.sanitize&&d&&P([c],i.options.whiteList,i.options.sanitizeFn),l.innerHTML="",l.appendChild(c),M.major<4&&this.$newElement[0].classList.contains("bs3-has-addon")){var b=r.querySelector(".filter-expand"),w=l.cloneNode(!0);w.className="filter-expand",b?r.replaceChild(w,b):r.appendChild(w)}this.$element.trigger("rendered"+U)},setStyle:function(e,t){var i,s=this.$button[0],n=this.$newElement[0],o=this.options.style.trim();this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,"")),M.major<4&&(n.classList.add("bs3"),n.parentNode.classList.contains("input-group")&&(n.previousElementSibling||n.nextElementSibling)&&(n.previousElementSibling||n.nextElementSibling).classList.contains("input-group-addon")&&n.classList.add("bs3-has-addon")),i=e?e.trim():o,"add"==t?i&&s.classList.add.apply(s.classList,i.split(" ")):"remove"==t?i&&s.classList.remove.apply(s.classList,i.split(" ")):(o&&s.classList.remove.apply(s.classList,o.split(" ")),i&&s.classList.add.apply(s.classList,i.split(" ")))},liHeight:function(e){if(e||!1!==this.options.size&&!this.sizeInfo){this.sizeInfo||(this.sizeInfo={});var t=document.createElement("div"),i=document.createElement("div"),s=document.createElement("div"),n=document.createElement("ul"),o=document.createElement("li"),r=document.createElement("li"),l=document.createElement("li"),a=document.createElement("a"),c=document.createElement("span"),d=this.options.header&&0this.sizeInfo.menuExtras.vert&&l+this.sizeInfo.menuExtras.vert+50>this.sizeInfo.selectOffsetBot)),"auto"===this.options.size)n=3this.options.size){for(var g=0;gthis.sizeInfo.selectOffsetRight&&this.sizeInfo.selectOffsetRightthis.sizeInfo.menuInnerHeight&&(this.sizeInfo.hasScrollBar=!0,this.sizeInfo.totalMenuWidth=this.sizeInfo.menuWidth+this.sizeInfo.scrollBarWidth,this.$menu.css("min-width",this.sizeInfo.totalMenuWidth)),this.dropdown&&this.dropdown._popper&&this.dropdown._popper.update()},setSize:function(e){if(this.liHeight(e),this.options.header&&this.$menu.css("padding-top",0),!1!==this.options.size){var t=this,i=z(window);this.setMenuSize(),this.options.liveSearch&&this.$searchbox.off("input.setMenuSize propertychange.setMenuSize").on("input.setMenuSize propertychange.setMenuSize",function(){return t.setMenuSize()}),"auto"===this.options.size?i.off("resize"+U+"."+this.selectId+".setMenuSize scroll"+U+"."+this.selectId+".setMenuSize").on("resize"+U+"."+this.selectId+".setMenuSize scroll"+U+"."+this.selectId+".setMenuSize",function(){return t.setMenuSize()}):this.options.size&&"auto"!=this.options.size&&this.selectpicker.current.elements.length>this.options.size&&i.off("resize"+U+"."+this.selectId+".setMenuSize scroll"+U+"."+this.selectId+".setMenuSize"),t.createView(!1,!0,e)}},setWidth:function(){var i=this;"auto"===this.options.width?requestAnimationFrame(function(){i.$menu.css("min-width","0"),i.$element.on("loaded"+U,function(){i.liHeight(),i.setMenuSize();var e=i.$newElement.clone().appendTo("body"),t=e.css("width","auto").children("button").outerWidth();e.remove(),i.sizeInfo.selectWidth=Math.max(i.sizeInfo.totalMenuWidth,t),i.$newElement.css("width",i.sizeInfo.selectWidth+"px")})}):"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width","")),this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement[0].classList.remove("fit-width")},selectPosition:function(){this.$bsContainer=z('
    ');var s,n,o,r=this,l=z(this.options.container),e=function(e){var t={},i=r.options.display||!!z.fn.dropdown.Constructor.Default&&z.fn.dropdown.Constructor.Default.display;r.$bsContainer.addClass(e.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass(j.DROPUP,e.hasClass(j.DROPUP)),s=e.offset(),l.is("body")?n={top:0,left:0}:((n=l.offset()).top+=parseInt(l.css("borderTopWidth"))-l.scrollTop(),n.left+=parseInt(l.css("borderLeftWidth"))-l.scrollLeft()),o=e.hasClass(j.DROPUP)?0:e[0].offsetHeight,(M.major<4||"static"===i)&&(t.top=s.top-n.top+o,t.left=s.left-n.left),t.width=e[0].offsetWidth,r.$bsContainer.css(t)};this.$button.on("click.bs.dropdown.data-api",function(){r.isDisabled()||(e(r.$newElement),r.$bsContainer.appendTo(r.options.container).toggleClass(j.SHOW,!r.$button.hasClass(j.SHOW)).append(r.$menu))}),z(window).off("resize"+U+"."+this.selectId+" scroll"+U+"."+this.selectId).on("resize"+U+"."+this.selectId+" scroll"+U+"."+this.selectId,function(){r.$newElement.hasClass(j.SHOW)&&e(r.$newElement)}),this.$element.on("hide"+U,function(){r.$menu.data("height",r.$menu.height()),r.$bsContainer.detach()})},setOptionStatus:function(e){var t=this;if(t.noScroll=!1,t.selectpicker.view.visibleElements&&t.selectpicker.view.visibleElements.length)for(var i=0;i
    ');$[2]&&(y=y.replace("{var}",$[2][1"+y+"
    ")),d=!1,C.$element.trigger("maxReached"+U)),b&&I&&(E.append(z("
    "+S+"
    ")),d=!1,C.$element.trigger("maxReachedGrp"+U)),setTimeout(function(){C.setSelected(r,!1)},10),E.delay(750).fadeOut(300,function(){z(this).remove()})}}}else c.selected=!1,p.selected=!0,C.setSelected(r,!0);!C.multiple||C.multiple&&1===C.options.maxOptions?C.$button.trigger("focus"):C.options.liveSearch&&C.$searchbox.trigger("focus"),d&&(C.multiple||a!==s.selectedIndex)&&(T=[p.index,u.prop("selected"),l],C.$element.triggerNative("change"))}}),this.$menu.on("click","li."+j.DISABLED+" a, ."+j.POPOVERHEADER+", ."+j.POPOVERHEADER+" :not(.close)",function(e){e.currentTarget==this&&(e.preventDefault(),e.stopPropagation(),C.options.liveSearch&&!z(e.target).hasClass("close")?C.$searchbox.trigger("focus"):C.$button.trigger("focus"))}),this.$menuInner.on("click",".divider, .dropdown-header",function(e){e.preventDefault(),e.stopPropagation(),C.options.liveSearch?C.$searchbox.trigger("focus"):C.$button.trigger("focus")}),this.$menu.on("click","."+j.POPOVERHEADER+" .close",function(){C.$button.trigger("click")}),this.$searchbox.on("click",function(e){e.stopPropagation()}),this.$menu.on("click",".actions-btn",function(e){C.options.liveSearch?C.$searchbox.trigger("focus"):C.$button.trigger("focus"),e.preventDefault(),e.stopPropagation(),z(this).hasClass("bs-select-all")?C.selectAll():C.deselectAll()}),this.$element.on("change"+U,function(){C.render(),C.$element.trigger("changed"+U,T),T=null}).on("focus"+U,function(){C.options.mobile||C.$button.trigger("focus")})},liveSearchListener:function(){var u=this,f=document.createElement("li");this.$button.on("click.bs.dropdown.data-api",function(){u.$searchbox.val()&&u.$searchbox.val("")}),this.$searchbox.on("click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api",function(e){e.stopPropagation()}),this.$searchbox.on("input propertychange",function(){var e=u.$searchbox.val();if(u.selectpicker.search.elements=[],u.selectpicker.search.data=[],e){var t=[],i=e.toUpperCase(),s={},n=[],o=u._searchStyle(),r=u.options.liveSearchNormalize;r&&(i=w(i)),u._$lisSelected=u.$menuInner.find(".selected");for(var l=0;l=a.selectpicker.view.canHighlight.length&&(t=0),a.selectpicker.view.canHighlight[t+f]||(t=t+1+a.selectpicker.view.canHighlight.slice(t+f+1).indexOf(!0))),e.preventDefault();var m=f+t;e.which===B?0===f&&t===c.length-1?(a.$menuInner[0].scrollTop=a.$menuInner[0].scrollHeight,m=a.selectpicker.current.elements.length-1):d=(o=(n=a.selectpicker.current.data[m]).position-n.height)u+a.sizeInfo.menuInnerHeight),s=a.selectpicker.main.elements[v],a.activeIndex=b[x],a.focusItem(s),s&&s.firstChild.focus(),d&&(a.$menuInner[0].scrollTop=o),r.trigger("focus")}}i&&(e.which===D&&!a.selectpicker.keydown.keyHistory||e.which===N||e.which===H&&a.options.selectOnTab)&&(e.which!==D&&e.preventDefault(),a.options.liveSearch&&e.which===D||(a.$menuInner.find(".active a").trigger("click",!0),r.trigger("focus"),a.options.liveSearch||(e.preventDefault(),z(document).data("spaceSelect",!0))))}},mobile:function(){this.$element[0].classList.add("mobile-device")},refresh:function(){var e=z.extend({},this.options,this.$element.data());this.options=e,this.checkDisabled(),this.setStyle(),this.render(),this.createLi(),this.setWidth(),this.setSize(!0),this.$element.trigger("refreshed"+U)},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(U).removeData("selectpicker").removeClass("bs-select-hidden selectpicker"),z(window).off(U+"."+this.selectId)}};var X=z.fn.selectpicker;z.fn.selectpicker=Q,z.fn.selectpicker.Constructor=J,z.fn.selectpicker.noConflict=function(){return z.fn.selectpicker=X,this},z(document).off("keydown.bs.dropdown.data-api").on("keydown"+U,'.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input',J.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input',function(e){e.stopPropagation()}),z(window).on("load"+U+".data-api",function(){z(".selectpicker").each(function(){var e=z(this);Q.call(e,e.data())})})}(e)}); +//# sourceMappingURL=bootstrap-select.min.js.map \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js new file mode 100644 index 000000000..6861d5ff7 --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js @@ -0,0 +1,321 @@ +/** + * 基于bootstrap-table-fixed-columns修改 + * 支持左右列冻结、支持固定高度 + * Copyright (c) 2019 ruoyi + */ +(function ($) { + 'use strict'; + + $.extend($.fn.bootstrapTable.defaults, { + fixedColumns: false, + fixedNumber: 1, + rightFixedColumns: false, + rightFixedNumber: 1 + }); + + var BootstrapTable = $.fn.bootstrapTable.Constructor, + _initHeader = BootstrapTable.prototype.initHeader, + _initBody = BootstrapTable.prototype.initBody, + _resetView = BootstrapTable.prototype.resetView; + + BootstrapTable.prototype.initFixedColumns = function () { + this.timeoutHeaderColumns_ = 0; + this.timeoutBodyColumns_ = 0; + if (this.options.fixedColumns) { + this.$fixedHeader = $([ + '
    ', + '', + '', + '
    ', + '
    '].join('')); + + this.$fixedHeader.find('table').attr('class', this.$el.attr('class')); + this.$fixedHeaderColumns = this.$fixedHeader.find('thead'); + this.$tableHeader.before(this.$fixedHeader); + + this.$fixedBody = $([ + '
    ', + '', + '', + '
    ', + '
    '].join('')); + + this.$fixedBody.find('table').attr('class', this.$el.attr('class')); + this.$fixedBodyColumns = this.$fixedBody.find('tbody'); + this.$tableBody.before(this.$fixedBody); + } + if (this.options.rightFixedColumns) { + this.$rightfixedBody = $([ + '
    ', + '', + '', + '', + '
    ', + '
    '].join('')); + this.$rightfixedBody.find('table').attr('class', this.$el.attr('class')); + this.$rightfixedHeaderColumns = this.$rightfixedBody.find('thead'); + this.$rightfixedBodyColumns = this.$rightfixedBody.find('tbody'); + this.$tableBody.before(this.$rightfixedBody); + if (this.options.fixedColumns) { + $('.right-fixed-table-columns').attr('style','right:0px;'); + } + } + }; + + BootstrapTable.prototype.initHeader = function () { + _initHeader.apply(this, Array.prototype.slice.apply(arguments)); + + if (!this.options.fixedColumns && !this.options.rightFixedColumns){ + return; + } + this.initFixedColumns(); + + var $ltr = this.$header.find('tr:eq(0)').clone(true), + $rtr = this.$header.find('tr:eq(0)').clone(), + $lths = $ltr.clone(true).find('th'), + $rths = $rtr.clone().find('th'); + + $ltr.html(''); + $rtr.html(''); + //右边列冻结 + if (this.options.rightFixedColumns) { + for (var i = 0; i < this.options.rightFixedNumber; i++) { + $rtr.append($rths.eq($rths.length - this.options.rightFixedNumber + i).clone()); + } + this.$rightfixedHeaderColumns.html('').append($rtr); + } + + //左边列冻结 + if (this.options.fixedColumns) { + for (var i = 0; i < this.options.fixedNumber; i++) { + $ltr.append($lths.eq(i).clone(true)); + } + this.$fixedHeaderColumns.html('').append($ltr); + this.$selectAll = $ltr.find('[name="btSelectAll"]'); + this.$selectAll.on('click', function () { + var checked = $(this).prop('checked'); + $(".left-fixed-body-columns input[name=btSelectItem]").filter(':enabled').prop('checked', checked); + $('.fixed-table-body input[name=btSelectItem]').closest('tr').removeClass('selected'); + }); + } + }; + + BootstrapTable.prototype.initBody = function () { + _initBody.apply(this, Array.prototype.slice.apply(arguments)); + + if (!this.options.fixedColumns && !this.options.rightFixedColumns) { + return; + } + + var that = this; + if (this.options.fixedColumns) { + this.$fixedBodyColumns.html(''); + this.$body.find('> tr[data-index]').each(function () { + var $tr = $(this).clone(true), + $tds = $tr.clone(true).find('td'); + + $tr.html(''); + for (var i = 0; i < that.options.fixedNumber; i++) { + $tr.append($tds.eq(i).clone(true)); + } + that.$fixedBodyColumns.append($tr); + }); + } + if (this.options.rightFixedColumns) { + this.$rightfixedBodyColumns.html(''); + this.$body.find('> tr[data-index]').each(function () { + var $tr = $(this).clone(), + $tds = $tr.clone().find('td'); + + $tr.html(''); + for (var i = 0; i < that.options.rightFixedNumber; i++) { + var indexTd = $tds.length - that.options.rightFixedNumber + i; + var oldTd = $tds.eq(indexTd); + var fixTd = oldTd.clone(); + var buttons = fixTd.find('button'); + //事件转移:冻结列里面的事件转移到实际按钮的事件 + buttons.each(function (key, item) { + $(item).click(function () { + that.$body.find("tr[data-index=" + $tr.attr('data-index') + "] td:eq(" + indexTd + ") button:eq(" + key + ")").click(); + }); + }); + $tr.append(fixTd); + } + that.$rightfixedBodyColumns.append($tr); + }); + } + }; + + BootstrapTable.prototype.resetView = function () { + _resetView.apply(this, Array.prototype.slice.apply(arguments)); + + if (!this.options.fixedColumns && !this.options.rightFixedColumns) { + return; + } + + clearTimeout(this.timeoutHeaderColumns_); + this.timeoutHeaderColumns_ = setTimeout($.proxy(this.fitHeaderColumns, this), this.$el.is(':hidden') ? 100 : 0); + + clearTimeout(this.timeoutBodyColumns_); + this.timeoutBodyColumns_ = setTimeout($.proxy(this.fitBodyColumns, this), this.$el.is(':hidden') ? 100 : 0); + }; + + BootstrapTable.prototype.fitHeaderColumns = function () { + var that = this, + visibleFields = this.getVisibleFields(), + headerWidth = 0; + if (that.options.fixedColumns) { + this.$body.find('tr:first-child:not(.no-records-found) > *').each(function (i) { + var $this = $(this), + index = i; + + if (i >= that.options.fixedNumber) { + return false; + } + + if (that.options.detailView && !that.options.cardView) { + index = i - 1; + } + that.$fixedHeader.find('thead th[data-field="' + visibleFields[index] + '"]') + .find('.fht-cell').width($this.innerWidth()); + headerWidth += $this.outerWidth(); + }); + this.$fixedHeader.width(headerWidth + 2).show(); + } + if (that.options.rightFixedColumns) { + headerWidth = 0; + var totalLength = $("#" + table.options.id).find('th').length; + this.$body.find('tr:first-child:not(.no-records-found) > *').each(function (i) { + var $this = $(this), + index = totalLength - i - 1; + + if (i >= that.options.rightFixedNumber) { + return false; + } + headerWidth += $("#" + table.options.id).find("tr:first-child>th").eq(index).width(); + }); + this.$rightfixedBody.width(headerWidth - 1).show(); + } + }; + + BootstrapTable.prototype.fitBodyColumns = function () { + var that = this, + top = -(parseInt(this.$el.css('margin-top'))), + height = this.$tableBody.height(); + + if (that.options.fixedColumns) { + if (!this.$body.find('> tr[data-index]').length) { + this.$fixedBody.hide(); + return; + } + + if (!this.options.height) { + top = this.$fixedHeader.height()- 1; + height = height - top; + } + + this.$fixedBody.css({ + width: this.$fixedHeader.width(), + height: height, + top: top + 1 + }).show(); + + var bsHeight = $("#" + table.options.id).find("tr").eq(1).height(); + var fixedHeight = $("#" + table.options.id).parent().prev().find("tr").eq(1).height(); + var resizeHeight = bsHeight > fixedHeight ? bsHeight: fixedHeight; + this.$body.find('> tr').each(function (i) { + that.$fixedBody.find('tr:eq(' + i + ')').height(i == 0 ? resizeHeight - 1 : resizeHeight); + $("#" + table.options.id).find('tbody>tr:eq(' + i + ')').height(resizeHeight); + var thattds = this; + that.$fixedBody.find('tr:eq(' + i + ')').find('td').each(function (j) { + $(this).width($($(thattds).find('td')[j]).width() + 1); + }); + }); + + $("#" + table.options.id).on("check.bs.table uncheck.bs.table", function (e, rows, $element) { + var index= $element.data('index'); + $(this).find('.bs-checkbox').find('input[data-index="' + index + '"]').prop("checked", true); + var selectFixedItem = $('.left-fixed-body-columns input[name=btSelectItem]'); + var checkAll = selectFixedItem.filter(':enabled').length && + selectFixedItem.filter(':enabled').length === + selectFixedItem.filter(':enabled').filter(':checked').length; + $(".left-fixed-table-columns input[name=btSelectAll]").prop('checked', checkAll); + $('.fixed-table-body input[name=btSelectItem]').closest('tr').removeClass('selected'); + }); + + $("#" + table.options.id).off('click', '.fixed-table-body').on('click', '.th-inner', function (event) { + $.each(that.$fixedHeader.find('th'), function (i, th) { + $(th).find('.sortable').removeClass('desc asc').addClass('both'); + }); + }); + + // events + this.$fixedHeader.off('click', '.th-inner').on('click', '.th-inner', function (event) { + var target = $(this); + var $this = event.type === "keypress" ? $(event.currentTarget) : $(event.currentTarget).parent(), $this_ = that.$header.find('th').eq($this.index()); + + var sortOrder = ""; + if (table.options.sortName === $this.data('field')) { + sortOrder = table.options.sortOrder === 'asc' ? 'desc' : 'asc'; + } else { + sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc'; + } + table.options.sortOrder = sortOrder; + var sortName = $this.data('sortName') ? $this.data('sortName') : $this.data('field'); + if (target.parent().data().sortable) { + $.each(that.$fixedHeader.find('th'), function (i, th) { + $(th).find('.sortable').removeClass('desc asc').addClass(($(th).data('field') === sortName || $(th).data('sortName') === sortName) ? sortOrder : 'both'); + }); + } + }); + + this.$tableBody.on('scroll', function () { + that.$fixedBody.find('table').css('top', -$(this).scrollTop()); + }); + this.$body.find('> tr[data-index]').off('hover').hover(function () { + var index = $(this).data('index'); + that.$fixedBody.find('tr[data-index="' + index + '"]').addClass('hover'); + }, function () { + var index = $(this).data('index'); + that.$fixedBody.find('tr[data-index="' + index + '"]').removeClass('hover'); + }); + this.$fixedBody.find('tr[data-index]').off('hover').hover(function () { + var index = $(this).data('index'); + that.$body.find('tr[data-index="' + index + '"]').addClass('hover'); + }, function () { + var index = $(this).data('index'); + that.$body.find('> tr[data-index="' + index + '"]').removeClass('hover'); + }); + } + if (that.options.rightFixedColumns) { + if (!this.$body.find('> tr[data-index]').length) { + this.$rightfixedBody.hide(); + return; + } + + this.$body.find('> tr').each(function (i) { + that.$rightfixedBody.find('tbody tr:eq(' + i + ')').height($(this).height()); + }); + + //// events + this.$tableBody.on('scroll', function () { + that.$rightfixedBody.find('table').css('top', -$(this).scrollTop()); + }); + this.$body.find('> tr[data-index]').off('hover').hover(function () { + var index = $(this).data('index'); + that.$rightfixedBody.find('tr[data-index="' + index + '"]').addClass('hover'); + }, function () { + var index = $(this).data('index'); + that.$rightfixedBody.find('tr[data-index="' + index + '"]').removeClass('hover'); + }); + this.$rightfixedBody.find('tr[data-index]').off('hover').hover(function () { + var index = $(this).data('index'); + that.$body.find('tr[data-index="' + index + '"]').addClass('hover'); + }, function () { + var index = $(this).data('index'); + that.$body.find('> tr[data-index="' + index + '"]').removeClass('hover'); + }); + } + }; + +})(jQuery); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css new file mode 100644 index 000000000..80135e0da --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css @@ -0,0 +1,663 @@ +/*! X-editable - v1.5.1 +* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery +* http://github.com/vitalets/x-editable +* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */ +.editableform { + margin-bottom: 0; /* overwrites bootstrap margin */ +} + +.editableform .control-group { + margin-bottom: 0; /* overwrites bootstrap margin */ + white-space: nowrap; /* prevent wrapping buttons on new line */ + line-height: 20px; /* overwriting bootstrap line-height. See #133 */ +} + +/* + BS3 width:1005 for inputs breaks editable form in popup + See: https://github.com/vitalets/x-editable/issues/393 +*/ +.editableform .form-control { + width: auto; +} + +.editable-buttons { + display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */ + vertical-align: top; + margin-left: 7px; + /* inline-block emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-buttons.editable-buttons-bottom { + display: block; + margin-top: 7px; + margin-left: 0; +} + +.editable-input { + vertical-align: top; + display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */ + width: auto; /* bootstrap-responsive has width: 100% that breakes layout */ + white-space: normal; /* reset white-space decalred in parent*/ + /* display-inline emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-buttons .editable-cancel { + margin-left: 7px; +} + +/*for jquery-ui buttons need set height to look more pretty*/ +.editable-buttons button.ui-button-icon-only { + height: 24px; + width: 30px; +} + +.editableform-loading { + background: url('loading.gif') center center no-repeat; + height: 25px; + width: auto; + min-width: 25px; +} + +.editable-inline .editableform-loading { + background-position: left 5px; +} + + .editable-error-block { + max-width: 300px; + margin: 5px 0 0 0; + width: auto; + white-space: normal; +} + +/*add padding for jquery ui*/ +.editable-error-block.ui-state-error { + padding: 3px; +} + +.editable-error { + color: red; +} + +/* ---- For specific types ---- */ + +.editableform .editable-date { + padding: 0; + margin: 0; + float: left; +} + +/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */ +.editable-inline .add-on .icon-th { + margin-top: 3px; + margin-left: 1px; +} + + +/* checklist vertical alignment */ +.editable-checklist label input[type="checkbox"], +.editable-checklist label span { + vertical-align: middle; + margin: 0; +} + +.editable-checklist label { + white-space: nowrap; +} + +/* set exact width of textarea to fit buttons toolbar */ +.editable-wysihtml5 { + width: 566px; + height: 250px; +} + +/* clear button shown as link in date inputs */ +.editable-clear { + clear: both; + font-size: 0.9em; + text-decoration: none; + text-align: right; +} + +/* IOS-style clear button for text inputs */ +.editable-clear-x { + background: url('clear.png') center center no-repeat; + display: block; + width: 13px; + height: 13px; + position: absolute; + opacity: 0.6; + z-index: 100; + + top: 50%; + right: 6px; + margin-top: -6px; + +} + +.editable-clear-x:hover { + opacity: 1; +} + +.editable-pre-wrapped { + white-space: pre-wrap; +} +.editable-container.editable-popup { + max-width: none !important; /* without this rule poshytip/tooltip does not stretch */ +} + +.editable-container.popover { + width: auto; /* without this rule popover does not stretch */ +} + +.editable-container.editable-inline { + display: inline-block; + vertical-align: middle; + width: auto; + /* inline-block emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-container.ui-widget { + font-size: inherit; /* jqueryui widget font 1.1em too big, overwrite it */ + z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */ +} +.editable-click, +a.editable-click, +a.editable-click:hover { + text-decoration: none; + border-bottom: dashed 1px #0088cc; +} + +.editable-click.editable-disabled, +a.editable-click.editable-disabled, +a.editable-click.editable-disabled:hover { + color: #585858; + cursor: default; + border-bottom: none; +} + +.editable-empty, .editable-empty:hover, .editable-empty:focus{ + font-style: italic; + color: #DD1144; + /* border-bottom: none; */ + text-decoration: none; +} + +.editable-unsaved { + font-weight: bold; +} + +.editable-unsaved:after { +/* content: '*'*/ +} + +.editable-bg-transition { + -webkit-transition: background-color 1400ms ease-out; + -moz-transition: background-color 1400ms ease-out; + -o-transition: background-color 1400ms ease-out; + -ms-transition: background-color 1400ms ease-out; + transition: background-color 1400ms ease-out; +} + +/*see https://github.com/vitalets/x-editable/issues/139 */ +.form-horizontal .editable +{ + padding-top: 5px; + display:inline-block; +} + + +/*! + * Datepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.datepicker { + padding: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + direction: ltr; + /*.dow { + border-top: 1px solid #ddd !important; + }*/ + +} +.datepicker-inline { + width: 220px; +} +.datepicker.datepicker-rtl { + direction: rtl; +} +.datepicker.datepicker-rtl table tr td span { + float: right; +} +.datepicker-dropdown { + top: 0; + left: 0; +} +.datepicker-dropdown:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 6px; +} +.datepicker-dropdown:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 7px; +} +.datepicker > div { + display: none; +} +.datepicker.days div.datepicker-days { + display: block; +} +.datepicker.months div.datepicker-months { + display: block; +} +.datepicker.years div.datepicker-years { + display: block; +} +.datepicker table { + margin: 0; +} +.datepicker td, +.datepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border: none; +} +.table-striped .datepicker table tr td, +.table-striped .datepicker table tr th { + background-color: transparent; +} +.datepicker table tr td.day:hover { + background: #eeeeee; + cursor: pointer; +} +.datepicker table tr td.old, +.datepicker table tr td.new { + color: #999999; +} +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover { + background: none; + color: #999999; + cursor: default; +} +.datepicker table tr td.today, +.datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:hover { + background-color: #fde19a; + background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); + background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); + background-image: linear-gradient(top, #fdd49a, #fdf59a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); + border-color: #fdf59a #fdf59a #fbed50; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #000; +} +.datepicker table tr td.today:hover, +.datepicker table tr td.today:hover:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today:hover.disabled, +.datepicker table tr td.today.disabled.disabled, +.datepicker table tr td.today.disabled:hover.disabled, +.datepicker table tr td.today[disabled], +.datepicker table tr td.today:hover[disabled], +.datepicker table tr td.today.disabled[disabled], +.datepicker table tr td.today.disabled:hover[disabled] { + background-color: #fdf59a; +} +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active { + background-color: #fbf069 \9; +} +.datepicker table tr td.today:hover:hover { + color: #000; +} +.datepicker table tr td.today.active:hover { + color: #fff; +} +.datepicker table tr td.range, +.datepicker table tr td.range:hover, +.datepicker table tr td.range.disabled, +.datepicker table tr td.range.disabled:hover { + background: #eeeeee; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.datepicker table tr td.range.today, +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today.disabled:hover { + background-color: #f3d17a; + background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a); + background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a)); + background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a); + background-image: -o-linear-gradient(top, #f3c17a, #f3e97a); + background-image: linear-gradient(top, #f3c17a, #f3e97a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0); + border-color: #f3e97a #f3e97a #edde34; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today:hover:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today:hover.disabled, +.datepicker table tr td.range.today.disabled.disabled, +.datepicker table tr td.range.today.disabled:hover.disabled, +.datepicker table tr td.range.today[disabled], +.datepicker table tr td.range.today:hover[disabled], +.datepicker table tr td.range.today.disabled[disabled], +.datepicker table tr td.range.today.disabled:hover[disabled] { + background-color: #f3e97a; +} +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active { + background-color: #efe24b \9; +} +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + background-color: #9e9e9e; + background-image: -moz-linear-gradient(top, #b3b3b3, #808080); + background-image: -ms-linear-gradient(top, #b3b3b3, #808080); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080)); + background-image: -webkit-linear-gradient(top, #b3b3b3, #808080); + background-image: -o-linear-gradient(top, #b3b3b3, #808080); + background-image: linear-gradient(top, #b3b3b3, #808080); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0); + border-color: #808080 #808080 #595959; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected:hover:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected:hover.disabled, +.datepicker table tr td.selected.disabled.disabled, +.datepicker table tr td.selected.disabled:hover.disabled, +.datepicker table tr td.selected[disabled], +.datepicker table tr td.selected:hover[disabled], +.datepicker table tr td.selected.disabled[disabled], +.datepicker table tr td.selected.disabled:hover[disabled] { + background-color: #808080; +} +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active { + background-color: #666666 \9; +} +.datepicker table tr td.active, +.datepicker table tr td.active:hover, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active.disabled:hover { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.active:hover, +.datepicker table tr td.active:hover:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active:hover.disabled, +.datepicker table tr td.active.disabled.disabled, +.datepicker table tr td.active.disabled:hover.disabled, +.datepicker table tr td.active[disabled], +.datepicker table tr td.active:hover[disabled], +.datepicker table tr td.active.disabled[disabled], +.datepicker table tr td.active.disabled:hover[disabled] { + background-color: #0044cc; +} +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active { + background-color: #003399 \9; +} +.datepicker table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.datepicker table tr td span:hover { + background: #eeeeee; +} +.datepicker table tr td span.disabled, +.datepicker table tr td span.disabled:hover { + background: none; + color: #999999; + cursor: default; +} +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active:hover:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active:hover.disabled, +.datepicker table tr td span.active.disabled.disabled, +.datepicker table tr td span.active.disabled:hover.disabled, +.datepicker table tr td span.active[disabled], +.datepicker table tr td span.active:hover[disabled], +.datepicker table tr td span.active.disabled[disabled], +.datepicker table tr td span.active.disabled:hover[disabled] { + background-color: #0044cc; +} +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active { + background-color: #003399 \9; +} +.datepicker table tr td span.old, +.datepicker table tr td span.new { + color: #999999; +} +.datepicker th.datepicker-switch { + width: 145px; +} +.datepicker thead tr:first-child th, +.datepicker tfoot tr th { + cursor: pointer; +} +.datepicker thead tr:first-child th:hover, +.datepicker tfoot tr th:hover { + background: #eeeeee; +} +.datepicker .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; +} +.datepicker thead tr:first-child th.cw { + cursor: default; + background-color: transparent; +} +.input-append.date .add-on i, +.input-prepend.date .add-on i { + display: block; + cursor: pointer; + width: 16px; + height: 16px; +} +.input-daterange input { + text-align: center; +} +.input-daterange input:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-daterange input:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-daterange .add-on { + display: inline-block; + width: auto; + min-width: 16px; + height: 18px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + vertical-align: middle; + background-color: #eeeeee; + border: 1px solid #ccc; + margin-left: -5px; + margin-right: -5px; +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js new file mode 100644 index 000000000..ec9cf3e5f --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js @@ -0,0 +1,7 @@ +/*! X-editable - v1.5.1 +* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery +* http://github.com/vitalets/x-editable +* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */ +!function(a){"use strict";var b=function(b,c){this.options=a.extend({},a.fn.editableform.defaults,c),this.$div=a(b),this.options.scope||(this.options.scope=this)};b.prototype={constructor:b,initInput:function(){this.input=this.options.input,this.value=this.input.str2value(this.options.value),this.input.prerender()},initTemplate:function(){this.$form=a(a.fn.editableform.template)},initButtons:function(){var b=this.$form.find(".editable-buttons");b.append(a.fn.editableform.buttons),"bottom"===this.options.showbuttons&&b.addClass("editable-buttons-bottom")},render:function(){this.$loading=a(a.fn.editableform.loading),this.$div.empty().append(this.$loading),this.initTemplate(),this.options.showbuttons?this.initButtons():this.$form.find(".editable-buttons").remove(),this.showLoading(),this.isSaving=!1,this.$div.triggerHandler("rendering"),this.initInput(),this.$form.find("div.editable-input").append(this.input.$tpl),this.$div.append(this.$form),a.when(this.input.render()).then(a.proxy(function(){if(this.options.showbuttons||this.input.autosubmit(),this.$form.find(".editable-cancel").click(a.proxy(this.cancel,this)),this.input.error)this.error(this.input.error),this.$form.find(".editable-submit").attr("disabled",!0),this.input.$input.attr("disabled",!0),this.$form.submit(function(a){a.preventDefault()});else{this.error(!1),this.input.$input.removeAttr("disabled"),this.$form.find(".editable-submit").removeAttr("disabled");var b=null===this.value||void 0===this.value||""===this.value?this.options.defaultValue:this.value;this.input.value2input(b),this.$form.submit(a.proxy(this.submit,this))}this.$div.triggerHandler("rendered"),this.showForm(),this.input.postrender&&this.input.postrender()},this))},cancel:function(){this.$div.triggerHandler("cancel")},showLoading:function(){var a,b;this.$form?(a=this.$form.outerWidth(),b=this.$form.outerHeight(),a&&this.$loading.width(a),b&&this.$loading.height(b),this.$form.hide()):(a=this.$loading.parent().width(),a&&this.$loading.width(a)),this.$loading.show()},showForm:function(a){this.$loading.hide(),this.$form.show(),a!==!1&&this.input.activate(),this.$div.triggerHandler("show")},error:function(b){var c,d=this.$form.find(".control-group"),e=this.$form.find(".editable-error-block");if(b===!1)d.removeClass(a.fn.editableform.errorGroupClass),e.removeClass(a.fn.editableform.errorBlockClass).empty().hide();else{if(b){c=(""+b).split("\n");for(var f=0;f").text(c[f]).html();b=c.join("
    ")}d.addClass(a.fn.editableform.errorGroupClass),e.addClass(a.fn.editableform.errorBlockClass).html(b).show()}},submit:function(b){b.stopPropagation(),b.preventDefault();var c=this.input.input2value(),d=this.validate(c);if("object"===a.type(d)&&void 0!==d.newValue){if(c=d.newValue,this.input.value2input(c),"string"==typeof d.msg)return this.error(d.msg),this.showForm(),void 0}else if(d)return this.error(d),this.showForm(),void 0;if(!this.options.savenochange&&this.input.value2str(c)==this.input.value2str(this.value))return this.$div.triggerHandler("nochange"),void 0;var e=this.input.value2submit(c);this.isSaving=!0,a.when(this.save(e)).done(a.proxy(function(a){this.isSaving=!1;var b="function"==typeof this.options.success?this.options.success.call(this.options.scope,a,c):null;return b===!1?(this.error(!1),this.showForm(!1),void 0):"string"==typeof b?(this.error(b),this.showForm(),void 0):(b&&"object"==typeof b&&b.hasOwnProperty("newValue")&&(c=b.newValue),this.error(!1),this.value=c,this.$div.triggerHandler("save",{newValue:c,submitValue:e,response:a}),void 0)},this)).fail(a.proxy(function(a){this.isSaving=!1;var b;b="function"==typeof this.options.error?this.options.error.call(this.options.scope,a,c):"string"==typeof a?a:a.responseText||a.statusText||"Unknown error!",this.error(b),this.showForm()},this))},save:function(b){this.options.pk=a.fn.editableutils.tryParseJson(this.options.pk,!0);var c,d="function"==typeof this.options.pk?this.options.pk.call(this.options.scope):this.options.pk,e=!!("function"==typeof this.options.url||this.options.url&&("always"===this.options.send||"auto"===this.options.send&&null!==d&&void 0!==d));return e?(this.showLoading(),c={name:this.options.name||"",value:b,pk:d},"function"==typeof this.options.params?c=this.options.params.call(this.options.scope,c):(this.options.params=a.fn.editableutils.tryParseJson(this.options.params,!0),a.extend(c,this.options.params)),"function"==typeof this.options.url?this.options.url.call(this.options.scope,c):a.ajax(a.extend({url:this.options.url,data:c,type:"POST"},this.options.ajaxOptions))):void 0},validate:function(a){return void 0===a&&(a=this.value),"function"==typeof this.options.validate?this.options.validate.call(this.options.scope,a):void 0},option:function(a,b){a in this.options&&(this.options[a]=b),"value"===a&&this.setValue(b)},setValue:function(a,b){this.value=b?this.input.str2value(a):a,this.$form&&this.$form.is(":visible")&&this.input.value2input(this.value)}},a.fn.editableform=function(c){var d=arguments;return this.each(function(){var e=a(this),f=e.data("editableform"),g="object"==typeof c&&c;f||e.data("editableform",f=new b(this,g)),"string"==typeof c&&f[c].apply(f,Array.prototype.slice.call(d,1))})},a.fn.editableform.Constructor=b,a.fn.editableform.defaults={type:"text",url:null,params:null,name:null,pk:null,value:null,defaultValue:null,send:"auto",validate:null,success:null,error:null,ajaxOptions:null,showbuttons:!0,scope:null,savenochange:!1},a.fn.editableform.template='
    ',a.fn.editableform.loading='
    ',a.fn.editableform.buttons='',a.fn.editableform.errorGroupClass=null,a.fn.editableform.errorBlockClass="editable-error",a.fn.editableform.engine="jquery"}(window.jQuery),function(a){"use strict";a.fn.editableutils={inherit:function(a,b){var c=function(){};c.prototype=b.prototype,a.prototype=new c,a.prototype.constructor=a,a.superclass=b.prototype},setCursorPosition:function(a,b){if(a.setSelectionRange)a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",b),c.select()}},tryParseJson:function(a,b){if("string"==typeof a&&a.length&&a.match(/^[\{\[].*[\}\]]$/))if(b)try{a=new Function("return "+a)()}catch(c){}finally{return a}else a=new Function("return "+a)();return a},sliceObj:function(b,c,d){var e,f,g={};if(!a.isArray(c)||!c.length)return g;for(var h=0;h").text(b).html()},itemsByValue:function(b,c,d){if(!c||null===b)return[];if("function"!=typeof d){var e=d||"value";d=function(a){return a[e]}}var f=a.isArray(b),g=[],h=this;return a.each(c,function(c,e){if(e.children)g=g.concat(h.itemsByValue(b,e.children,d));else if(f)a.grep(b,function(a){return a==(e&&"object"==typeof e?d(e):e)}).length&&g.push(e);else{var i=e&&"object"==typeof e?d(e):e;b==i&&g.push(e)}}),g},createInput:function(b){var c,d,e,f=b.type;return"date"===f&&("inline"===b.mode?a.fn.editabletypes.datefield?f="datefield":a.fn.editabletypes.dateuifield&&(f="dateuifield"):a.fn.editabletypes.date?f="date":a.fn.editabletypes.dateui&&(f="dateui"),"date"!==f||a.fn.editabletypes.date||(f="combodate")),"datetime"===f&&"inline"===b.mode&&(f="datetimefield"),"wysihtml5"!==f||a.fn.editabletypes[f]||(f="textarea"),"function"==typeof a.fn.editabletypes[f]?(c=a.fn.editabletypes[f],d=this.sliceObj(b,this.objectKeys(c.defaults)),e=new c(d)):(a.error("Unknown type: "+f),!1)},supportsTransitions:function(){var a=document.body||document.documentElement,b=a.style,c="transition",d=["Moz","Webkit","Khtml","O","ms"];if("string"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e"),this.tip().is(this.innerCss)?this.tip().append(this.$form):this.tip().find(this.innerCss).append(this.$form),this.renderForm()},hide:function(a){if(this.tip()&&this.tip().is(":visible")&&this.$element.hasClass("editable-open")){if(this.$form.data("editableform").isSaving)return this.delayedHide={reason:a},void 0;this.delayedHide=!1,this.$element.removeClass("editable-open"),this.innerHide(),this.$element.triggerHandler("hidden",a||"manual")}},innerShow:function(){},innerHide:function(){},toggle:function(a){this.container()&&this.tip()&&this.tip().is(":visible")?this.hide():this.show(a)},setPosition:function(){},save:function(a,b){this.$element.triggerHandler("save",b),this.hide("save")},option:function(a,b){this.options[a]=b,a in this.containerOptions?(this.containerOptions[a]=b,this.setContainerOption(a,b)):(this.formOptions[a]=b,this.$form&&this.$form.editableform("option",a,b))},setContainerOption:function(a,b){this.call("option",a,b)},destroy:function(){this.hide(),this.innerDestroy(),this.$element.off("destroyed"),this.$element.removeData("editableContainer")},innerDestroy:function(){},closeOthers:function(b){a(".editable-open").each(function(c,d){if(d!==b&&!a(d).find(b).length){var e=a(d),f=e.data("editableContainer");f&&("cancel"===f.options.onblur?e.data("editableContainer").hide("onblur"):"submit"===f.options.onblur&&e.data("editableContainer").tip().find("form").submit())}})},activate:function(){this.tip&&this.tip().is(":visible")&&this.$form&&this.$form.data("editableform").input.activate()}},a.fn.editableContainer=function(d){var e=arguments;return this.each(function(){var f=a(this),g="editableContainer",h=f.data(g),i="object"==typeof d&&d,j="inline"===i.mode?c:b;h||f.data(g,h=new j(this,i)),"string"==typeof d&&h[d].apply(h,Array.prototype.slice.call(e,1))})},a.fn.editableContainer.Popup=b,a.fn.editableContainer.Inline=c,a.fn.editableContainer.defaults={value:null,placement:"top",autohide:!0,onblur:"cancel",anim:!1,mode:"popup"},jQuery.event.special.destroyed={remove:function(a){a.handler&&a.handler()}}}(window.jQuery),function(a){"use strict";a.extend(a.fn.editableContainer.Inline.prototype,a.fn.editableContainer.Popup.prototype,{containerName:"editableform",innerCss:".editable-inline",containerClass:"editable-container editable-inline",initContainer:function(){this.$tip=a(""),this.options.anim||(this.options.anim=0)},splitOptions:function(){this.containerOptions={},this.formOptions=this.options},tip:function(){return this.$tip},innerShow:function(){this.$element.hide(),this.tip().insertAfter(this.$element).show()},innerHide:function(){this.$tip.hide(this.options.anim,a.proxy(function(){this.$element.show(),this.innerDestroy()},this))},innerDestroy:function(){this.tip()&&this.tip().empty().remove()}})}(window.jQuery),function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.editable.defaults,c,a.fn.editableutils.getConfigData(this.$element)),this.options.selector?this.initLive():this.init(),this.options.highlight&&!a.fn.editableutils.supportsTransitions()&&(this.options.highlight=!1)};b.prototype={constructor:b,init:function(){var b,c=!1;if(this.options.name=this.options.name||this.$element.attr("id"),this.options.scope=this.$element[0],this.input=a.fn.editableutils.createInput(this.options),this.input){switch(void 0===this.options.value||null===this.options.value?(this.value=this.input.html2value(a.trim(this.$element.html())),c=!0):(this.options.value=a.fn.editableutils.tryParseJson(this.options.value,!0),this.value="string"==typeof this.options.value?this.input.str2value(this.options.value):this.options.value),this.$element.addClass("editable"),"textarea"===this.input.type&&this.$element.addClass("editable-pre-wrapped"),"manual"!==this.options.toggle?(this.$element.addClass("editable-click"),this.$element.on(this.options.toggle+".editable",a.proxy(function(a){if(this.options.disabled||a.preventDefault(),"mouseenter"===this.options.toggle)this.show();else{var b="click"!==this.options.toggle;this.toggle(b)}},this))):this.$element.attr("tabindex",-1),"function"==typeof this.options.display&&(this.options.autotext="always"),this.options.autotext){case"always":b=!0;break;case"auto":b=!a.trim(this.$element.text()).length&&null!==this.value&&void 0!==this.value&&!c;break;default:b=!1}a.when(b?this.render():!0).then(a.proxy(function(){this.options.disabled?this.disable():this.enable(),this.$element.triggerHandler("init",this)},this))}},initLive:function(){var b=this.options.selector;this.options.selector=!1,this.options.autotext="never",this.$element.on(this.options.toggle+".editable",b,a.proxy(function(b){var c=a(b.target);c.data("editable")||(c.hasClass(this.options.emptyclass)&&c.empty(),c.editable(this.options).trigger(b))},this))},render:function(a){return this.options.display!==!1?this.input.value2htmlFinal?this.input.value2html(this.value,this.$element[0],this.options.display,a):"function"==typeof this.options.display?this.options.display.call(this.$element[0],this.value,a):this.input.value2html(this.value,this.$element[0]):void 0},enable:function(){this.options.disabled=!1,this.$element.removeClass("editable-disabled"),this.handleEmpty(this.isEmpty),"manual"!==this.options.toggle&&"-1"===this.$element.attr("tabindex")&&this.$element.removeAttr("tabindex")},disable:function(){this.options.disabled=!0,this.hide(),this.$element.addClass("editable-disabled"),this.handleEmpty(this.isEmpty),this.$element.attr("tabindex",-1)},toggleDisabled:function(){this.options.disabled?this.enable():this.disable()},option:function(b,c){return b&&"object"==typeof b?(a.each(b,a.proxy(function(b,c){this.option(a.trim(b),c)},this)),void 0):(this.options[b]=c,"disabled"===b?c?this.disable():this.enable():("value"===b&&this.setValue(c),this.container&&this.container.option(b,c),this.input.option&&this.input.option(b,c),void 0))},handleEmpty:function(b){this.options.display!==!1&&(this.isEmpty=void 0!==b?b:"function"==typeof this.input.isEmpty?this.input.isEmpty(this.$element):""===a.trim(this.$element.html()),this.options.disabled?this.isEmpty&&(this.$element.empty(),this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass)):this.isEmpty?(this.$element.html(this.options.emptytext),this.options.emptyclass&&this.$element.addClass(this.options.emptyclass)):this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass))},show:function(b){if(!this.options.disabled){if(this.container){if(this.container.tip().is(":visible"))return}else{var c=a.extend({},this.options,{value:this.value,input:this.input});this.$element.editableContainer(c),this.$element.on("save.internal",a.proxy(this.save,this)),this.container=this.$element.data("editableContainer")}this.container.show(b)}},hide:function(){this.container&&this.container.hide()},toggle:function(a){this.container&&this.container.tip().is(":visible")?this.hide():this.show(a)},save:function(a,b){if(this.options.unsavedclass){var c=!1;c=c||"function"==typeof this.options.url,c=c||this.options.display===!1,c=c||void 0!==b.response,c=c||this.options.savenochange&&this.input.value2str(this.value)!==this.input.value2str(b.newValue),c?this.$element.removeClass(this.options.unsavedclass):this.$element.addClass(this.options.unsavedclass)}if(this.options.highlight){var d=this.$element,e=d.css("background-color");d.css("background-color",this.options.highlight),setTimeout(function(){"transparent"===e&&(e=""),d.css("background-color",e),d.addClass("editable-bg-transition"),setTimeout(function(){d.removeClass("editable-bg-transition")},1700)},10)}this.setValue(b.newValue,!1,b.response)},validate:function(){return"function"==typeof this.options.validate?this.options.validate.call(this,this.value):void 0},setValue:function(b,c,d){this.value=c?this.input.str2value(b):b,this.container&&this.container.option("value",this.value),a.when(this.render(d)).then(a.proxy(function(){this.handleEmpty()},this))},activate:function(){this.container&&this.container.activate()},destroy:function(){this.disable(),this.container&&this.container.destroy(),this.input.destroy(),"manual"!==this.options.toggle&&(this.$element.removeClass("editable-click"),this.$element.off(this.options.toggle+".editable")),this.$element.off("save.internal"),this.$element.removeClass("editable editable-open editable-disabled"),this.$element.removeData("editable")}},a.fn.editable=function(c){var d={},e=arguments,f="editable";switch(c){case"validate":return this.each(function(){var b,c=a(this),e=c.data(f);e&&(b=e.validate())&&(d[e.options.name]=b)}),d;case"getValue":return 2===arguments.length&&arguments[1]===!0?d=this.eq(0).data(f).value:this.each(function(){var b=a(this),c=b.data(f);c&&void 0!==c.value&&null!==c.value&&(d[c.options.name]=c.input.value2submit(c.value))}),d;case"submit":var g=arguments[1]||{},h=this,i=this.editable("validate");if(a.isEmptyObject(i)){var j={};if(1===h.length){var k=h.data("editable"),l={name:k.options.name||"",value:k.input.value2submit(k.value),pk:"function"==typeof k.options.pk?k.options.pk.call(k.options.scope):k.options.pk};"function"==typeof k.options.params?l=k.options.params.call(k.options.scope,l):(k.options.params=a.fn.editableutils.tryParseJson(k.options.params,!0),a.extend(l,k.options.params)),j={url:k.options.url,data:l,type:"POST"},g.success=g.success||k.options.success,g.error=g.error||k.options.error}else{var m=this.editable("getValue");j={url:g.url,data:m,type:"POST"}}j.success="function"==typeof g.success?function(a){g.success.call(h,a,g)}:a.noop,j.error="function"==typeof g.error?function(){g.error.apply(h,arguments)}:a.noop,g.ajaxOptions&&a.extend(j,g.ajaxOptions),g.data&&a.extend(j.data,g.data),a.ajax(j)}else"function"==typeof g.error&&g.error.call(h,i);return this}return this.each(function(){var d=a(this),g=d.data(f),h="object"==typeof c&&c;return h&&h.selector?(g=new b(this,h),void 0):(g||d.data(f,g=new b(this,h)),"string"==typeof c&&g[c].apply(g,Array.prototype.slice.call(e,1)),void 0)})},a.fn.editable.defaults={type:"text",disabled:!1,toggle:"click",emptytext:"Empty",autotext:"auto",value:null,display:null,emptyclass:"editable-empty",unsavedclass:"editable-unsaved",selector:null,highlight:"#FFFF80"}}(window.jQuery),function(a){"use strict";a.fn.editabletypes={};var b=function(){};b.prototype={init:function(b,c,d){this.type=b,this.options=a.extend({},d,c)},prerender:function(){this.$tpl=a(this.options.tpl),this.$input=this.$tpl,this.$clear=null,this.error=null},render:function(){},value2html:function(b,c){a(c)[this.options.escape?"text":"html"](a.trim(b))},html2value:function(b){return a("
    ").html(b).text()},value2str:function(a){return a},str2value:function(a){return a},value2submit:function(a){return a},value2input:function(a){this.$input.val(a)},input2value:function(){return this.$input.val()},activate:function(){this.$input.is(":visible")&&this.$input.focus()},clear:function(){this.$input.val(null)},escape:function(b){return a("
    ").text(b).html()},autosubmit:function(){},destroy:function(){},setClass:function(){this.options.inputclass&&this.$input.addClass(this.options.inputclass)},setAttr:function(a){void 0!==this.options[a]&&null!==this.options[a]&&this.$input.attr(a,this.options[a])},option:function(a,b){this.options[a]=b}},b.defaults={tpl:"",inputclass:null,escape:!0,scope:null,showbuttons:!0},a.extend(a.fn.editabletypes,{abstractinput:b})}(window.jQuery),function(a){"use strict";var b=function(){};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){var b=a.Deferred();return this.error=null,this.onSourceReady(function(){this.renderList(),b.resolve()},function(){this.error=this.options.sourceError,b.resolve()}),b.promise()},html2value:function(){return null},value2html:function(b,c,d,e){var f=a.Deferred(),g=function(){"function"==typeof d?d.call(c,b,this.sourceData,e):this.value2htmlFinal(b,c),f.resolve()};return null===b?g.call(this):this.onSourceReady(g,function(){f.resolve()}),f.promise()},onSourceReady:function(b,c){var d;if(a.isFunction(this.options.source)?(d=this.options.source.call(this.options.scope),this.sourceData=null):d=this.options.source,this.options.sourceCache&&a.isArray(this.sourceData))return b.call(this),void 0;try{d=a.fn.editableutils.tryParseJson(d,!1)}catch(e){return c.call(this),void 0}if("string"==typeof d){if(this.options.sourceCache){var f,g=d;if(a(document).data(g)||a(document).data(g,{}),f=a(document).data(g),f.loading===!1&&f.sourceData)return this.sourceData=f.sourceData,this.doPrepend(),b.call(this),void 0;if(f.loading===!0)return f.callbacks.push(a.proxy(function(){this.sourceData=f.sourceData,this.doPrepend(),b.call(this)},this)),f.err_callbacks.push(a.proxy(c,this)),void 0;f.loading=!0,f.callbacks=[],f.err_callbacks=[]}var h=a.extend({url:d,type:"get",cache:!1,dataType:"json",success:a.proxy(function(d){f&&(f.loading=!1),this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(f&&(f.sourceData=this.sourceData,a.each(f.callbacks,function(){this.call()})),this.doPrepend(),b.call(this)):(c.call(this),f&&a.each(f.err_callbacks,function(){this.call()}))},this),error:a.proxy(function(){c.call(this),f&&(f.loading=!1,a.each(f.err_callbacks,function(){this.call()}))},this)},this.options.sourceOptions);a.ajax(h)}else this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(this.doPrepend(),b.call(this)):c.call(this)},doPrepend:function(){null!==this.options.prepend&&void 0!==this.options.prepend&&(a.isArray(this.prependData)||(a.isFunction(this.options.prepend)&&(this.options.prepend=this.options.prepend.call(this.options.scope)),this.options.prepend=a.fn.editableutils.tryParseJson(this.options.prepend,!0),"string"==typeof this.options.prepend&&(this.options.prepend={"":this.options.prepend}),this.prependData=this.makeArray(this.options.prepend)),a.isArray(this.prependData)&&a.isArray(this.sourceData)&&(this.sourceData=this.prependData.concat(this.sourceData)))},renderList:function(){},value2htmlFinal:function(){},makeArray:function(b){var c,d,e,f,g=[];if(!b||"string"==typeof b)return null;if(a.isArray(b)){f=function(a,b){return d={value:a,text:b},c++>=2?!1:void 0};for(var h=0;h1&&(e.children&&(e.children=this.makeArray(e.children)),g.push(e))):g.push({value:e,text:e})}else a.each(b,function(a,b){g.push({value:a,text:b})});return g},option:function(a,b){this.options[a]=b,"source"===a&&(this.sourceData=null),"prepend"===a&&(this.prependData=null)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{source:null,prepend:!1,sourceError:"Error when loading list",sourceCache:!0,sourceOptions:null}),a.fn.editabletypes.list=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("text",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.renderClear(),this.setClass(),this.setAttr("placeholder")},activate:function(){this.$input.is(":visible")&&(this.$input.focus(),a.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.toggleClear&&this.toggleClear())},renderClear:function(){this.options.clear&&(this.$clear=a(''),this.$input.after(this.$clear).css("padding-right",24).keyup(a.proxy(function(b){if(!~a.inArray(b.keyCode,[40,38,9,13,27])){clearTimeout(this.t);var c=this;this.t=setTimeout(function(){c.toggleClear(b)},100)}},this)).parent().css("position","relative"),this.$clear.click(a.proxy(this.clear,this)))},postrender:function(){},toggleClear:function(){if(this.$clear){var a=this.$input.val().length,b=this.$clear.is(":visible");a&&!b&&this.$clear.show(),!a&&b&&this.$clear.hide()}},clear:function(){this.$clear.hide(),this.$input.val("").focus()}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'',placeholder:null,clear:!0}),a.fn.editabletypes.text=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("textarea",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.setClass(),this.setAttr("placeholder"),this.setAttr("rows"),this.$input.keydown(function(b){b.ctrlKey&&13===b.which&&a(this).closest("form").submit()})},activate:function(){a.fn.editabletypes.text.prototype.activate.call(this)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:"",inputclass:"input-large",placeholder:null,rows:7}),a.fn.editabletypes.textarea=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("select",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.list),a.extend(b.prototype,{renderList:function(){this.$input.empty();var b=function(c,d){var e;if(a.isArray(d))for(var f=0;f",e),d[f].children))):(e.value=d[f].value,d[f].disabled&&(e.disabled=!0),c.append(a("
  • ' + this.valueToHTML(value, level + 1); + if (numProps > 1) { + output += ','; + } + output += '
  • '; + numProps--; + } + if (hasContents) { + collapsible = level === 0 ? '' : ' collapsible'; + return "[
      " + output + "
    ]"; + } else { + return '[ ]'; + } + }; + + JSONFormatter.prototype.objectToHTML = function(object, level) { + var collapsible, hasContents, numProps, output, prop, value; + if (level == null) { + level = 0; + } + hasContents = false; + output = ''; + numProps = 0; + for (prop in object) { + numProps++; + } + for (prop in object) { + value = object[prop]; + hasContents = true; + output += "
  • \"" + (this.jsString(prop)) + "\": " + (this.valueToHTML(value, level + 1)); + if (numProps > 1) { + output += ','; + } + output += '
  • '; + numProps--; + } + if (hasContents) { + collapsible = level === 0 ? '' : ' collapsible'; + return "{
      " + output + "
    }"; + } else { + return '{ }'; + } + }; + + JSONFormatter.prototype.jsonToHTML = function(json) { + return "
    " + (this.valueToHTML(json)) + "
    "; + }; + + return JSONFormatter; + + })(); + (typeof module !== "undefined" && module !== null) && (module.exports = JSONFormatter); + Collapser = { + bindEvent: function(item, collapsed) { + var collapser; + collapser = document.createElement('div'); + collapser.className = 'collapser'; + collapser.innerHTML = collapsed ? '+' : '-'; + collapser.addEventListener('click', (function(_this) { + return function(event) { + return _this.toggle(event.target); + }; + })(this)); + item.insertBefore(collapser, item.firstChild); + if (collapsed) { + return this.collapse(collapser); + } + }, + expand: function(collapser) { + var ellipsis, target; + target = this.collapseTarget(collapser); + ellipsis = target.parentNode.getElementsByClassName('ellipsis')[0]; + target.parentNode.removeChild(ellipsis); + target.style.display = ''; + return collapser.innerHTML = '-'; + }, + collapse: function(collapser) { + var ellipsis, target; + target = this.collapseTarget(collapser); + target.style.display = 'none'; + ellipsis = document.createElement('span'); + ellipsis.className = 'ellipsis'; + ellipsis.innerHTML = ' … '; + target.parentNode.insertBefore(ellipsis, target); + return collapser.innerHTML = '+'; + }, + toggle: function(collapser) { + var target; + target = this.collapseTarget(collapser); + if (target.style.display === 'none') { + return this.expand(collapser); + } else { + return this.collapse(collapser); + } + }, + collapseTarget: function(collapser) { + var target, targets; + targets = collapser.parentNode.getElementsByClassName('collapsible'); + if (!targets.length) { + return; + } + return target = targets[0]; + } + }; + $ = jQuery; + JSONView = { + collapse: function(el) { + if (el.innerHTML === '-') { + return Collapser.collapse(el); + } + }, + expand: function(el) { + if (el.innerHTML === '+') { + return Collapser.expand(el); + } + }, + toggle: function(el) { + return Collapser.toggle(el); + } + }; + return $.fn.JSONView = function() { + var args, defaultOptions, formatter, json, method, options, outputDoc; + args = arguments; + if (JSONView[args[0]] != null) { + method = args[0]; + return this.each(function() { + var $this, level; + $this = $(this); + if (args[1] != null) { + level = args[1]; + return $this.find(".jsonview .collapsible.level" + level).siblings('.collapser').each(function() { + return JSONView[method](this); + }); + } else { + return $this.find('.jsonview > ul > li > .collapsible').siblings('.collapser').each(function() { + return JSONView[method](this); + }); + } + }); + } else { + json = args[0]; + options = args[1] || {}; + defaultOptions = { + collapsed: false, + nl2br: false + }; + options = $.extend(defaultOptions, options); + formatter = new JSONFormatter({ + nl2br: options.nl2br + }); + if (Object.prototype.toString.call(json) === '[object String]') { + json = JSON.parse(json); + } + outputDoc = formatter.jsonToHTML(json); + return this.each(function() { + var $this, item, items, _i, _len, _results; + $this = $(this); + $this.html(outputDoc); + items = $this[0].getElementsByClassName('collapsible'); + _results = []; + for (_i = 0, _len = items.length; _i < _len; _i++) { + item = items[_i]; + if (item.parentNode.nodeName === 'LI') { + _results.push(Collapser.bindEvent(item.parentNode, options.collapsed)); + } else { + _results.push(void 0); + } + } + return _results; + }); + } + }; +})(jQuery); diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/layer/theme/moon/default.png b/ruoyi-admin/src/main/resources/static/ajax/libs/layer/theme/moon/default.png new file mode 100644 index 0000000000000000000000000000000000000000..77dfaf3090f063501c8123bdc99aa048aab6d3b2 GIT binary patch literal 7563 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 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.hide(),this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(m(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var 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_}); + + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['exports', 'echarts'], factory); + } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') { + // CommonJS + factory(exports, require('echarts')); + } else { + // Browser globals + factory({}, root.echarts); + } +}(this, function (exports, echarts) { + var log = function (msg) { + if (typeof console !== 'undefined') { + console && console.error && console.error(msg); + } + } + if (!echarts) { + log('ECharts is not Loaded'); + return; + } + if (!echarts.registerMap) { + log('ECharts Map is not loaded') + return; + } + echarts.registerMap('china', {"type":"FeatureCollection","features":[{"id":"710000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@°Ü¯Û"],["@@ƛĴÕƊÉɼģºðʀ\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ"],["@@\\p|WoYG¿¥I†j@¢"],["@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I"],["@@ÆEE—„kWqë @œ"],["@@fced"]],"encodeOffsets":[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]]]},"properties":{"cp":[121.509062,25.044332],"name":"台湾","childNum":6}},{"id":"130000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e"],["@@U`Ts¿m‚"],["@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧˏfŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgƊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|ǰ…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃ͚¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\tŽa\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\mĆJfl@c̬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®Vйd^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qáµ§š™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚"]],"encodeOffsets":[[[119712,40641]],[[121616,39981]],[[116462,37237]]]},"properties":{"cp":[114.502461,38.045474],"name":"河北","childNum":3}},{"id":"140000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz"],"encodeOffsets":[[116874,41716]]},"properties":{"cp":[112.549248,37.857014],"name":"山西","childNum":1}},{"id":"150000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@Č^â£Ăh–šĖMÈÄw‚\\fŦ°W ¢¾luŸD„wŠ\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ–›¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–R붛ijʕ…Œů`çõh]y»ǃŸǛҤxÒm~zf}pf|ÜroÈzrKÈĵSƧ„ż؜Ġu¦ö"],["@@sKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚǏĞGȖƴƀj`ĢçĶāàŃºē̃ĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTĞªŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFǜƌXƲąo½Ę‘\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ż؛Ç@Vu»A—ylßí¹ĵê…ÝlISò³C¹Ìâ„²i¶’Ìoú^H“²CǜңDŽ z¼g^èöŰ_‹‚–†IJĕꄜ}gÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉ™Š³MEˆĸÅĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot×¶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ÈˆÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µ"]],"encodeOffsets":[[[127444,52594]],[[113793,40312]]]},"properties":{"cp":[111.670801,40.818311],"name":"内蒙古","childNum":2}},{"id":"210000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@L–Ž@@s™a"],["@@MnNm"],["@@d‚c"],["@@eÀ‚C@b‚“‰"],["@@f‡…Xwkbr–Ä`qg"],["@@^jtW‘Q"],["@@~ Y]c"],["@@G`ĔN^_¿Z‚ÃM"],["@@iX¶B‹Y"],["@@„YƒZ"],["@@L_{Epf"],["@@^WqCT\\"],["@@\\[“‹§t|”¤_"],["@@m`n_"],["@@Ïxnj{q_×^Giip"],["@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\ÀøíDm¦ÎbŨab‰œaĘ\\ľã‚¸a˜tÎSƐ´©v\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA"]],"encodeOffsets":[[[123686,41445]],[[126019,40435]],[[124393,40128]],[[126117,39963]],[[125322,40140]],[[126686,40700]],[[126041,40374]],[[125584,40168]],[[125453,40165]],[[125362,40214]],[[125280,40291]],[[125774,39997]],[[125976,40496]],[[125822,39993]],[[125509,40217]],[[122731,40949]]]},"properties":{"cp":[123.429096,41.796767],"name":"辽宁","childNum":16}},{"id":"220000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG"],"encodeOffsets":[[130196,42528]]},"properties":{"cp":[125.3245,43.886841],"name":"吉林","childNum":1}},{"id":"230000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@ƨƒĶTLÇyqpÇÛqe{~oyen}s‰`q‡iXG”ù]Ëp½“©lɇÁp]Þñ´FÔ^f‘äîºkà˜z¼BUvÈ@"],["@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tޏĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\kzţ¦šnņäÔVĂîά|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]"]],"encodeOffsets":[[[127123,51780]],[[134456,44547]]]},"properties":{"cp":[126.642464,45.756967],"name":"黑龙江","childNum":2}},{"id":"320000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@cþÅPiŠ`ZŸRu¥É\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@ƹhågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ"],"encodeOffsets":[[121740,32276]]},"properties":{"cp":[118.767413,32.041544],"name":"江苏","childNum":1}},{"id":"330000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@E^dQ]K"],["@@jX^j‡"],["@@sfŠbU‡"],["@@qP\\xz[ck"],["@@‘Rƒ¢‚FX}°[s_"],["@@Cbœ\\—}"],["@@e|v\\la{u"],["@@v~u}"],["@@QxÂF¯}"],["@@¹nŒvÞs¯o"],["@@rSkUEj"],["@@bi­ZŒP"],["@@p[}INf"],["@@À¿€"],["@@¹dnbŒ…"],["@@rSŸBnR"],["@@g~h}"],["@@FlEk"],["@@OdPc"],["@@v[u\\"],["@@FjâL~wyoo~›sµL–\\"],["@@¬e¹aNˆ"],["@@\\nÔ¡q]L³ë\\ÿ®ŒQ֎"],["@@ÊA­©[¬"],["@@KxŒv­"],["@@@hlIk]"],["@@pW{o||j"],["@@Md|_mC"],["@@¢…X£ÏylD¼XˆtH"],["@@hlÜ[LykAvyfw^Ež›¤"],["@@fp¤Mus“R"],["@@®_ma~•LÁ¬šZ"],["@@iM„xZ"],["@@ZcYd"],["@@Z~dOSo|A¿qZv"],["@@@`”EN¡v"],["@@|–TY{"],["@@@n@m"],["@@XWkCT\\"],["@@ºwšZRkĕWO¢"],["@@™X®±Grƪ\\ÔáXq{‹"],["@@ůTG°ĄLHm°UC‹"],["@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВj碷ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈÚœĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst"],["@@o\\V’zRZ}y"],["@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™"]],"encodeOffsets":[[[125592,31553]],[[125785,31436]],[[125729,31431]],[[125513,31380]],[[125223,30438]],[[125115,30114]],[[124815,29155]],[[124419,28746]],[[124095,28635]],[[124005,28609]],[[125000,30713]],[[125111,30698]],[[125078,30682]],[[125150,30684]],[[124014,28103]],[[125008,31331]],[[125411,31468]],[[125329,31479]],[[125626,30916]],[[125417,30956]],[[125254,30976]],[[125199,30997]],[[125095,31058]],[[125083,30915]],[[124885,31015]],[[125218,30798]],[[124867,30838]],[[124755,30788]],[[124802,30809]],[[125267,30657]],[[125218,30578]],[[125200,30562]],[[124968,30474]],[[125167,30396]],[[124955,29879]],[[124714,29781]],[[124762,29462]],[[124325,28754]],[[123990,28459]],[[125366,31477]],[[125115,30363]],[[125369,31139]],[[122495,31878]],[[125329,30690]],[[125192,30787]]]},"properties":{"cp":[120.153576,30.287459],"name":"浙江","childNum":45}},{"id":"340000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@^iuLX^"],["@@‚e©Ehl"],["@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜÆ¶ĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆßŽF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴ˶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´"]],"encodeOffsets":[[[121722,32278]],[[119475,30423]],[[119168,35472]]]},"properties":{"cp":[117.283042,31.86119],"name":"安徽","childNum":3}},{"id":"350000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@“zht´‡]"],["@@aj^~ĆG—©O"],["@@ed¨„C}}i"],["@@@vˆPGsQ"],["@@‰sBz‚ddW]Q"],["@@SލQ“{"],["@@NŽVucW"],["@@qptBAq"],["@@‰’¸[mu"],["@@Q\\pD]_"],["@@jSwUadpF"],["@@eXª~ƒ•"],["@@AjvFso"],["@@fT–›_Çí\\Ÿ™—v|ba¦jZÆy€°"],["@@IjJi"],["@@wJI€ˆxš«¼AoNe{M­"],["@@K‰±¡Óˆ”ČäeZ"],["@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\_"]],"encodeOffsets":[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[122887,26845]],[[122808,26762]],[[122568,25912]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[123388,27005]],[[122450,26243]],[[122578,25962]],[[121255,25103]],[[120987,24903]],[[122339,25802]],[[121042,25093]],[[122439,26024]]]},"properties":{"cp":[119.306239,26.075302],"name":"福建","childNum":18}},{"id":"360000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ĢĨƐgÂMD~ņªe^\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗ⼋mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\˜„L‚‘²"],"encodeOffsets":[[116689,26234]]},"properties":{"cp":[115.892151,28.676493],"name":"江西","childNum":1}},{"id":"370000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@Xjd]{K"],["@@itbFHy"],["@@HlGk"],["@@T‚ŒGŸy"],["@@K¬˜•‹U"],["@@WdXc"],["@@PtOs"],["@@•LnXhc"],["@@ppVƒu]Or"],["@@cdzAUa"],["@@udRhnCI‡"],["@@ˆoIƒpR„"],["@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞÆ„LĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌǜbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐ˹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~ݏY’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuٌg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ"]],"encodeOffsets":[[[123806,39303]],[[123821,39266]],[[123742,39256]],[[123702,39203]],[[123649,39066]],[[123847,38933]],[[123580,38839]],[[123894,37288]],[[123043,36624]],[[123344,38676]],[[123522,38857]],[[123628,38858]],[[118260,36742]]]},"properties":{"cp":[117.000923,36.675807],"name":"山东","childNum":13}},{"id":"410000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\d\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\ÀœEhŽİgÞē X¼Pk–„|m"],"encodeOffsets":[[118256,37017]]},"properties":{"cp":[113.665412,34.757975],"name":"河南","childNum":1}},{"id":"420000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@AB‚"],["@@lskt"],["@@¾«}{ra®pîÃ\\™›{øCŠËyyB±„b\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙæŠšŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYЧHK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆ̶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤"]],"encodeOffsets":[[[113712,34000]],[[115612,30507]],[[113649,34054]]]},"properties":{"cp":[114.298572,30.584355],"name":"湖北","childNum":3}},{"id":"430000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@—n„FTs"],["@@ßÅÆá‰½ÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–̾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M"],["@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJβSÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUоÅ‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPᜣEXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\Ĕ[N¥ˀmĎă’J\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎۃƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ"]],"encodeOffsets":[[[115640,30489]],[[112543,27312]],[[116690,26230]]]},"properties":{"cp":[112.982279,28.19409],"name":"湖南","childNum":3}},{"id":"440000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@QdˆAua"],["@@ƒlxDLo"],["@@sbhNLo"],["@@Ă āŸ"],["@@WltO[["],["@@Krœ]S"],["@@e„„I]y"],["@@I|„Mym"],["@@ƒÛ³LSŒž¼Y"],["@@nvºB–ëui©`¾"],["@@zdšÛ›Jw®"],["@@†°…¯"],["@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o"],["@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh"],["@@‹¶Ý’Ì‚vmĞh­ı‡Q"],["@@HœŠdSjĒ¢D}war…“u«ZqadYM"],["@@elŒ\\LqqU"],["@@~rMo\\"],["@@f„^ƒC"],["@@øPªoj÷ÍÝħXČx”°Q¨ıXNv"],["@@gÇƳˆŽˆ”oˆŠˆ[~tly"],["@@E–ÆC¿‘"],["@@OŽP"],["@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéƌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i"]],"encodeOffsets":[[[117381,22988]],[[116552,22934]],[[116790,22617]],[[116973,22545]],[[116444,22536]],[[116931,22515]],[[116496,22490]],[[116453,22449]],[[113301,21439]],[[118726,21604]],[[118709,21486]],[[113210,20816]],[[115482,22082]],[[113171,21585]],[[113199,21590]],[[115232,22102]],[[115739,22373]],[[115134,22184]],[[113056,21175]],[[119573,21271]],[[119957,24020]],[[115859,22356]],[[116561,22649]],[[116285,22746]]]},"properties":{"cp":[113.280637,23.125178],"name":"广东","childNum":24}},{"id":"450000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@H– TQ§•A"],["@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloޤ™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆÌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FϼĹ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•E쉕E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢Jî¶²"]],"encodeOffsets":[[[111707,21520]],[[107619,25527]]]},"properties":{"cp":[108.320004,22.82402],"name":"广西","childNum":2}},{"id":"460000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ "],"encodeOffsets":[[112750,20508]]},"properties":{"cp":[110.33119,20.031971],"name":"海南","childNum":1}},{"id":"510000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@LqKr"],["@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iǰÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZްIä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºT£ڿœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`Šz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\Z{åû^›"]],"encodeOffsets":[[[108815,30935]],[[110617,31811]]]},"properties":{"cp":[104.065735,30.659462],"name":"四川","childNum":2}},{"id":"520000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@†G\\†lY£‘in"],["@@q‚|ˆ‚mc¯tχVSÎ"],["@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\}—ƒG®u\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒh޶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KгŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}ޱžGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝÆ€‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½"]],"encodeOffsets":[[[112158,27383]],[[112105,27474]],[[112095,27476]]]},"properties":{"cp":[106.713478,26.578343],"name":"贵州","childNum":3}},{"id":"530000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèÆ¶StǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyސ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSᝑ³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\μģUsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`"],"encodeOffsets":[[104636,22969]]},"properties":{"cp":[102.712251,25.040609],"name":"云南","childNum":1}},{"id":"540000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@hžľxŽŖ‰xƒÒVކºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|٘¦Avަw`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdЉªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀݦ¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVе‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£à貋ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæÅ„hnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„ǰ¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûŠìÖT¬¸^}Ìsòd´_އKgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxжF”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\†qR›Ą©"],"encodeOffsets":[[90849,37210]]},"properties":{"cp":[91.132212,29.660361],"name":"西藏","childNum":1}},{"id":"610000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OϹS|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cϰÂ[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~ЦUbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj"],"encodeOffsets":[[110234,38774]]},"properties":{"cp":[108.948024,34.263161],"name":"陕西","childNum":1}},{"id":"620000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@VuUv"],["@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBаaZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\a­‹Q\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aйcčecÇN•ĊãÁ\\蝗dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]A챝‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\h¹¶v†·À|\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮްƝ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK"]],"encodeOffsets":[[[108619,36299]],[[108589,36341]]]},"properties":{"cp":[103.823557,36.058039],"name":"甘肃","childNum":2}},{"id":"630000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@InJm"],["@@CƒÆ½OŃĦsΰ~dz¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNΌĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoᣟÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Ó祖•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSò뚣˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\ijŬű”YÂÿ¬jĖqŽßbЏ•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňb̰ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\ªÚŒU\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\oäõ–F礻Ŷ×h¹]Clـ\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌζƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg"]],"encodeOffsets":[[[105308,37219]],[[95370,40081]]]},"properties":{"cp":[101.778916,36.623178],"name":"青海","childNum":2}},{"id":"640000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\âÙH\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßR͌X¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀ˾iİbjÕ"],["@@mfwěwMrŢªv@G‰"]],"encodeOffsets":[[[109366,40242]],[[108600,36303]]]},"properties":{"cp":[106.278179,38.46637],"name":"宁夏","childNum":2}},{"id":"650000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@QØĔ²X¨”~ǘBºjʐߨvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZ̓èH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYw獃{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~Ꝛf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\ªÑò˜Üìc\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆÂšońéŒGš\\”¼C°ÌƁn´nxšÊOĨ’ہƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FއRěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ"],"encodeOffsets":[[88824,50096]]},"properties":{"cp":[87.617733,43.792818],"name":"新疆","childNum":1}},{"id":"110000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`й­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwڍUd®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\‡¥A¨Ï‘Ѩj¯ŠX\\¯œMK‘pA³[H…īu}}"],"encodeOffsets":[[120023,41045]]},"properties":{"cp":[116.405285,39.904989],"name":"北京","childNum":1}},{"id":"120000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~"],"encodeOffsets":[[120237,41215]]},"properties":{"cp":[117.190182,39.125596],"name":"天津","childNum":1}},{"id":"310000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@ɧư¬EpƸÁxc‡"],["@@©„ªƒ"],["@@”MA‹‘š"],["@@Qp݁E§ÉC¾"],["@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó"],["@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį"]],"encodeOffsets":[[[124702,32062]],[[124547,32200]],[[124808,31991]],[[124726,32110]],[[124903,32376]],[[124438,32149]]]},"properties":{"cp":[121.472644,31.231706],"name":"上海","childNum":6}},{"id":"500000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\ÂoVnŽÓØÍ™²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\¨\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBЦzG¸rHe‚„N\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN"],["@@ifjN@s"]],"encodeOffsets":[[[109628,30765]],[[111725,31320]]]},"properties":{"cp":[106.504962,29.533155],"name":"重庆","childNum":2}},{"id":"810000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@AlBk"],["@@mŽn"],["@@EpFo"],["@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKްä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc"],["@@rMUw‡AS®€e"]],"encodeOffsets":[[[117111,23002]],[[117072,22876]],[[117045,22887]],[[116975,23082]],[[116882,22747]]]},"properties":{"cp":[114.173355,22.320048],"name":"香港","childNum":5}},{"id":"820000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@kÊd°å§s"],"encodeOffsets":[[116279,22639]]},"properties":{"cp":[113.54909,22.198951],"name":"澳门","childNum":1}}],"UTF8Encoding":true}); +})); \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/report/peity/jquery.peity.min.js b/ruoyi-admin/src/main/resources/static/ajax/libs/report/peity/jquery.peity.min.js new file mode 100644 index 000000000..085b72507 --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/report/peity/jquery.peity.min.js @@ -0,0 +1,13 @@ +// Peity jQuery plugin version 2.0.3 +// (c) 2014 Ben Pickles +// +// http://benpickles.github.io/peity +// +// Released under MIT license. +(function(e,q,h){var o=function(a,b){var c=q.createElementNS("http://www.w3.org/2000/svg",a);e.each(b,function(a,b){c.setAttribute(a,b)});return c},t="createElementNS"in q&&o("svg",{}).createSVGRect,r=1/(window.devicePixelRatio||1),j=e.fn.peity=function(a,b){t&&this.each(function(){var c=e(this),d=c.data("peity");if(d)a&&(d.type=a),e.extend(d.opts,b);else{var f=j.defaults[a],g={};e.each(c.data(),function(a,b){a in f&&(g[a]=b)});var h=e.extend({},f,g,b),d=new s(c,a,h);c.change(function(){d.draw()}).data("peity", + d)}d.draw()});return this},s=function(a,b,c){this.$el=a;this.type=b;this.opts=c},m=s.prototype;m.draw=function(){j.graphers[this.type].call(this,this.opts)};m.fill=function(){var a=this.opts.fill,b=a;e.isFunction(b)||(b=function(b,d){return a[d%a.length]});return b};m.prepare=function(a,b){var c;this.svg?c=e(this.svg).empty():(this.svg=o("svg",{"class":"peity"}),this.$el.hide().after(this.svg),c=e(this.svg).data("peity",this));this.svg.setAttribute("height",b);this.svg.setAttribute("width",a);return c}; + m.values=function(){return e.map(this.$el.text().split(this.opts.delimiter),function(a){return parseFloat(a)})};j.defaults={};j.graphers={};j.register=function(a,b,c){this.defaults[a]=b;this.graphers[a]=c};j.register("pie",{delimiter:null,diameter:16,fill:["#ff9900","#fff4dd","#ffc66e"]},function(a){if(!a.delimiter){var b=this.$el.text().match(/[^0-9\.]/);a.delimiter=b?b[0]:","}b=this.values();if("/"==a.delimiter)var c=b[0],b=[c,h.max(0,b[1]-c)];for(var d=0,c=b.length,f=0;de?1:0,1,q,r,"Z"].join(" ")});i=l}k.setAttribute("fill",j.call(this,n,d,b));this.svg.appendChild(k)}}});j.register("line",{delimiter:",",fill:"#c6d9fd",height:16,max:null, + min:0,stroke:"#4d89f9",strokeWidth:1,width:32},function(a){var b=this.values();1==b.length&&b.push(b[0]);for(var c=h.max.apply(h,b.concat([a.max])),d=h.min.apply(h,b.concat([a.min])),f=this.prepare(a.width,a.height),g=f.width(),f=f.height()-a.strokeWidth,e=g/(b.length-1),c=c-d,j=0==c?f:f/c,m=f+d*j,c=[0,m],i=0;i=d&&0k&&(l+=k,k=-k);n=o("rect",{fill:m.call(this,n,i,b),x:i*g,y:l,width:g-a,height:k});this.svg.appendChild(n)}})})(jQuery,document,Math); diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/report/sparkline/jquery.sparkline.min.js b/ruoyi-admin/src/main/resources/static/ajax/libs/report/sparkline/jquery.sparkline.min.js new file mode 100644 index 000000000..3477d16e5 --- /dev/null +++ b/ruoyi-admin/src/main/resources/static/ajax/libs/report/sparkline/jquery.sparkline.min.js @@ -0,0 +1,5 @@ +/* jquery.sparkline 2.1.2 - http://omnipotent.net/jquery.sparkline/ + ** Licensed under the New BSD License - see above site for details */ + +(function(a,b,c){(function(a){typeof define=="function"&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.sparkline&&a(jQuery)})(function(d){"use strict";var e={},f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L=0;f=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:c,normalRangeMax:c,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:c,chartRangeMax:c,chartRangeMinX:c,chartRangeMaxX:c,tooltipFormat:new h(' {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:c,nullColor:c,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,colorMap:c,tooltipFormat:new h(' {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new h(' {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:c,thresholdValue:0,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,tooltipFormat:new h("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:c,tooltipFormat:new h("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new h(' {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:c,targetColor:"#4a2",chartRangeMax:c,chartRangeMin:c,tooltipFormat:new h("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},E='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',g=function(){var a,b;return a=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(a.prototype=d.extend(new arguments[0],arguments[arguments.length-1]),a._super=arguments[0].prototype):a.prototype=arguments[arguments.length-1],arguments.length>2&&(b=Array.prototype.slice.call(arguments,1,-1),b.unshift(a.prototype),d.extend.apply(d,b))):a.prototype=arguments[0],a.prototype.cls=a,a},d.SPFormatClass=h=g({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(a,b){this.format=a,this.fclass=b},render:function(a,b,d){var e=this,f=a,g,h,i,j,k;return this.format.replace(this.fre,function(){var a;return h=arguments[1],i=arguments[3],g=e.precre.exec(h),g?(k=g[2],h=g[1]):k=!1,j=f[h],j===c?"":i&&b&&b[i]?(a=b[i],a.get?b[i].get(j)||j:b[i][j]||j):(n(j)&&(d.get("numberFormatter")?j=d.get("numberFormatter")(j):j=s(j,k,d.get("numberDigitGroupCount"),d.get("numberDigitGroupSep"),d.get("numberDecimalMark"))),j)})}}),d.spformat=function(a,b){return new h(a,b)},i=function(a,b,c){return ac?c:a},j=function(a,c){var d;return c===2?(d=b.floor(a.length/2),a.length%2?a[d]:(a[d-1]+a[d])/2):a.length%2?(d=(a.length*c+c)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1]):(d=(a.length*c+2)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1])},k=function(a){var b;switch(a){case"undefined":a=c;break;case"null":a=null;break;case"true":a=!0;break;case"false":a=!1;break;default:b=parseFloat(a),a==b&&(a=b)}return a},l=function(a){var b,c=[];for(b=a.length;b--;)c[b]=k(a[b]);return c},m=function(a,b){var c,d,e=[];for(c=0,d=a.length;c0;h-=c)a.splice(h,0,e);return a.join("")},o=function(a,b,c){var d;for(d=b.length;d--;){if(c&&b[d]===null)continue;if(b[d]!==a)return!1}return!0},p=function(a){var b=0,c;for(c=a.length;c--;)b+=typeof a[c]=="number"?a[c]:0;return b},r=function(a){return d.isArray(a)?a:[a]},q=function(b){var c;a.createStyleSheet?a.createStyleSheet().cssText=b:(c=a.createElement("style"),c.type="text/css",a.getElementsByTagName("head")[0].appendChild(c),c[typeof a.body.style.WebkitAppearance=="string"?"innerText":"innerHTML"]=b)},d.fn.simpledraw=function(b,e,f,g){var h,i;if(f&&(h=this.data("_jqs_vcanvas")))return h;if(d.fn.sparkline.canvas===!1)return!1;if(d.fn.sparkline.canvas===c){var j=a.createElement("canvas");if(!j.getContext||!j.getContext("2d")){if(!a.namespaces||!!a.namespaces.v)return d.fn.sparkline.canvas=!1,!1;a.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),d.fn.sparkline.canvas=function(a,b,c,d){return new J(a,b,c)}}else d.fn.sparkline.canvas=function(a,b,c,d){return new I(a,b,c,d)}}return b===c&&(b=d(this).innerWidth()),e===c&&(e=d(this).innerHeight()),h=d.fn.sparkline.canvas(b,e,this,g),i=d(this).data("_jqs_mhandler"),i&&i.registerCanvas(h),h},d.fn.cleardraw=function(){var a=this.data("_jqs_vcanvas");a&&a.reset()},d.RangeMapClass=t=g({init:function(a){var b,c,d=[];for(b in a)a.hasOwnProperty(b)&&typeof b=="string"&&b.indexOf(":")>-1&&(c=b.split(":"),c[0]=c[0].length===0?-Infinity:parseFloat(c[0]),c[1]=c[1].length===0?Infinity:parseFloat(c[1]),c[2]=a[b],d.push(c));this.map=a,this.rangelist=d||!1},get:function(a){var b=this.rangelist,d,e,f;if((f=this.map[a])!==c)return f;if(b)for(d=b.length;d--;){e=b[d];if(e[0]<=a&&e[1]>=a)return e[2]}return c}}),d.range_map=function(a){return new t(a)},u=g({init:function(a,b){var c=d(a);this.$el=c,this.options=b,this.currentPageX=0,this.currentPageY=0,this.el=a,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!b.get("disableTooltips"),this.highlightEnabled=!b.get("disableHighlight")},registerSparkline:function(a){this.splist.push(a),this.over&&this.updateDisplay()},registerCanvas:function(a){var b=d(a.canvas);this.canvas=a,this.$canvas=b,b.mouseenter(d.proxy(this.mouseenter,this)),b.mouseleave(d.proxy(this.mouseleave,this)),b.click(d.proxy(this.mouseclick,this))},reset:function(a){this.splist=[],this.tooltip&&a&&(this.tooltip.remove(),this.tooltip=c)},mouseclick:function(a){var b=d.Event("sparklineClick");b.originalEvent=a,b.sparklines=this.splist,this.$el.trigger(b)},mouseenter:function(b){d(a.body).unbind("mousemove.jqs"),d(a.body).bind("mousemove.jqs",d.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=b.pageX,this.currentPageY=b.pageY,this.currentEl=b.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new v(this.options),this.tooltip.updatePosition(b.pageX,b.pageY)),this.updateDisplay()},mouseleave:function(){d(a.body).unbind("mousemove.jqs");var b=this.splist,c=b.length,e=!1,f,g;this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null);for(g=0;g