commit ea82eb02963b3661078ab5cae870e8ddc0051888 Author: lishenfeng Date: Mon Dec 30 13:46:25 2024 +0800 init(): 初始化 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..44e168b --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +node_modules/ +/.pnp +.pnp.js +unpackage/ + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +yarn.lock +build.7z diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..07d9281 --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,23 @@ +{ + // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version" : "0.0", + "configurations" : [ + { + "app-plus" : { + "launchtype" : "local" + }, + "default" : { + "launchtype" : "local" + }, + "mp-weixin" : { + "launchtype" : "local" + }, + "type" : "uniCloud" + }, + { + "playground" : "standard", + "type" : "uni-app:app-android" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..fe5bd20 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.formatOnSave": true, + "editor.formatOnPaste": true +} \ No newline at end of file diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..1f25d15 --- /dev/null +++ b/App.vue @@ -0,0 +1,117 @@ + + + diff --git a/compent/formZdy/index.vue b/compent/formZdy/index.vue new file mode 100644 index 0000000..b9140c7 --- /dev/null +++ b/compent/formZdy/index.vue @@ -0,0 +1,97 @@ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..b507463 --- /dev/null +++ b/index.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + +
+ + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..cc81e61 --- /dev/null +++ b/main.js @@ -0,0 +1,56 @@ +// #ifndef VUE3 +import Vue from 'vue' +import uView from '@/uni_modules/uview-ui' +Vue.use(uView) +import App from './App' +import { + $http +} from '@escook/request-miniprogram' +Vue.config.productionTip = false +uni.$http = $http +$http.baseUrl = 'http://local.gunshiiot.com:18083' +// 请求拦截器 +$http.beforeRequest = function (options) { + if (options.url.indexOf('/doLogin') == -1) { + options.header = { + 'Authorization': 'Bearer ' + uni.getStorageSync('Gs-Token') + } + } +} +// 响应拦截器 +$http.afterRequest = function (options) { + if (options.data.code == 405) { + uni.redirectTo({ + url: '/pages/login/login' + }) + } + // uni.hideLoading() +} +uni.$showMsg = function (title = '数据请求失败了', duration = 1500) { + return uni.showToast({ + title, + duration, + icon: 'none' + }) +} +Vue.config.productionTip = false +App.mpType = 'app' + +const app = new Vue({ + ...App +}) +app.$mount() +// #endif + +// #ifdef VUE3 +import { + createSSRApp +} from 'vue' +import App from './App.vue' +export function createApp() { + const app = createSSRApp(App) + return { + app + } +} +// #endif \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..49baf01 --- /dev/null +++ b/manifest.json @@ -0,0 +1,127 @@ +{ + "name" : "檀树岗水库", + "appid" : "__UNI__33ED56F", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : 1, + "transformPx" : false, + "app-plus" : { + /* 5+App特有相关 */ + "usingComponents" : true, + "nvueCompiler" : "uni-app", + "nvueStyleCompiler" : "uni-app", + "runmode" : "liberate", + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + "modules" : { + "VideoPlayer" : {}, + "Messaging" : {}, + "Camera" : {}, + "Maps" : {}, + "Contacts" : {} + }, + /* 模块配置 */ + "distribute" : { + /* 应用发布信息 */ + "android" : { + /* android打包配置 */ + "packagename" : "com.gunshi.tsg", + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios" : { + "dSYMs" : false + }, + /* ios打包配置 */ + "sdkConfigs" : { + "ad" : {}, + "maps" : { + "amap" : { + "name" : "4799ff37874e604a22b910b44ca948e5", + "appkey_ios" : "755dafdf984df7a1609fb30f6861bd17", + "appkey_android" : "755dafdf984df7a1609fb30f6861bd17" + } + } + }, + "splashscreen" : { + "androidStyle" : "common" + }, + "icons" : { + "android" : { + "hdpi" : "unpackage/res/icons/72x72.png", + "xhdpi" : "unpackage/res/icons/96x96.png", + "xxhdpi" : "unpackage/res/icons/144x144.png", + "xxxhdpi" : "unpackage/res/icons/192x192.png" + }, + "ios" : { + "appstore" : "unpackage/res/icons/1024x1024.png", + "ipad" : { + "app" : "unpackage/res/icons/76x76.png", + "app@2x" : "unpackage/res/icons/152x152.png", + "notification" : "unpackage/res/icons/20x20.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "proapp@2x" : "unpackage/res/icons/167x167.png", + "settings" : "unpackage/res/icons/29x29.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "spotlight" : "unpackage/res/icons/40x40.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png" + }, + "iphone" : { + "app@2x" : "unpackage/res/icons/120x120.png", + "app@3x" : "unpackage/res/icons/180x180.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "notification@3x" : "unpackage/res/icons/60x60.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "settings@3x" : "unpackage/res/icons/87x87.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "spotlight@3x" : "unpackage/res/icons/120x120.png" + } + } + } + } + }, + /* SDK配置 */ + "quickapp" : {}, + /* 快应用特有相关 */ + "mp-weixin" : { + /* 小程序特有相关 */ + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "vueVersion" : "2", + "h5" : { + "template" : "template.html", + "sdkConfigs" : { + "maps" : { + "amap" : { + "key" : "4799ff37874e604a22b910b44ca948e5", + "securityJsCode" : "", + "serviceHost" : "" + } + } + } + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2ec47bb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,428 @@ +{ + "name": "tsg-app", + "version": "1.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "@escook/request-miniprogram": "^0.2.1", + "crypto-js": "^4.2.0", + "echarts": "^4.9.0", + "es6-promise": "^4.2.8", + "flv.js": "^1.6.2", + "moment": "^2.30.1", + "ol": "^10.2.1" + } + }, + "node_modules/@amap/amap-jsapi-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz", + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==" + }, + "node_modules/@escook/request-miniprogram": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/@escook/request-miniprogram/-/request-miniprogram-0.2.1.tgz", + "integrity": "sha512-ueWV5YsaEm/ycQZuEjMiA88GFMhfBQSjy9GrP9omy4xAQajkGTbYIlnhzsDfWzRPmRC1fKmAiKMrCVcgS+SHcQ==" + }, + "node_modules/@petamoriken/float16": { + "version": "3.8.7", + "resolved": "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.8.7.tgz", + "integrity": "sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA==" + }, + "node_modules/@types/rbush": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/@types/rbush/-/rbush-3.0.3.tgz", + "integrity": "sha512-lX55lR0iYCgapxD3IrgujpQA1zDxwZI5qMRelKvmKAsSMplFVr7wmMpG7/6+Op2tjrgEex8o3vjg8CRDrRNYxg==" + }, + "node_modules/color-name": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color-parse": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/color-parse/-/color-parse-2.0.2.tgz", + "integrity": "sha512-eCtOz5w5ttWIUcaKLiktF+DxZO1R9KLNY/xhbV6CkhM7sR3GhVghmt6X6yOnzeaM24po+Z9/S1apbXMwA3Iepw==", + "dependencies": { + "color-name": "^2.0.0" + } + }, + "node_modules/color-rgba": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/color-rgba/-/color-rgba-3.0.0.tgz", + "integrity": "sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==", + "dependencies": { + "color-parse": "^2.0.0", + "color-space": "^2.0.0" + } + }, + "node_modules/color-space": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-space/-/color-space-2.0.1.tgz", + "integrity": "sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA==" + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "node_modules/earcut": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/earcut/-/earcut-3.0.0.tgz", + "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==" + }, + "node_modules/echarts": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz", + "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==", + "dependencies": { + "zrender": "4.3.2" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/flv.js": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/flv.js/-/flv.js-1.6.2.tgz", + "integrity": "sha512-xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==", + "dependencies": { + "es6-promise": "^4.2.8", + "webworkify-webpack": "^2.1.5" + } + }, + "node_modules/geotiff": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/geotiff/-/geotiff-2.1.3.tgz", + "integrity": "sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==", + "dependencies": { + "@petamoriken/float16": "^3.4.7", + "lerc": "^3.0.0", + "pako": "^2.0.4", + "parse-headers": "^2.0.2", + "quick-lru": "^6.1.1", + "web-worker": "^1.2.0", + "xml-utils": "^1.0.2", + "zstddec": "^0.1.0" + }, + "engines": { + "node": ">=10.19" + } + }, + "node_modules/lerc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lerc/-/lerc-3.0.0.tgz", + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==" + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/ol": { + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/ol/-/ol-10.2.1.tgz", + "integrity": "sha512-2bB/y2vEnmzjqynP0NA7Cp8k86No3Psn63Dueicep3E3i09axWRVIG5IS/bylEAGfWQx0QXD/uljkyFoY60Wig==", + "dependencies": { + "@types/rbush": "3.0.3", + "color-rgba": "^3.0.0", + "color-space": "^2.0.1", + "earcut": "^3.0.0", + "geotiff": "^2.0.7", + "pbf": "4.0.1", + "rbush": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openlayers" + } + }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "node_modules/pbf": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pbf/-/pbf-4.0.1.tgz", + "integrity": "sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==", + "dependencies": { + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, + "node_modules/protocol-buffers-schema": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" + }, + "node_modules/quick-lru": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-6.1.2.tgz", + "integrity": "sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==" + }, + "node_modules/rbush": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/rbush/-/rbush-4.0.1.tgz", + "integrity": "sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==", + "dependencies": { + "quickselect": "^3.0.0" + } + }, + "node_modules/resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "dependencies": { + "protocol-buffers-schema": "^3.3.1" + } + }, + "node_modules/web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==" + }, + "node_modules/webworkify-webpack": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz", + "integrity": "sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw==" + }, + "node_modules/xml-utils": { + "version": "1.10.1", + "resolved": "https://registry.npmmirror.com/xml-utils/-/xml-utils-1.10.1.tgz", + "integrity": "sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==" + }, + "node_modules/zrender": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz", + "integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==" + }, + "node_modules/zstddec": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/zstddec/-/zstddec-0.1.0.tgz", + "integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==" + } + }, + "dependencies": { + "@amap/amap-jsapi-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz", + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==" + }, + "@escook/request-miniprogram": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/@escook/request-miniprogram/-/request-miniprogram-0.2.1.tgz", + "integrity": "sha512-ueWV5YsaEm/ycQZuEjMiA88GFMhfBQSjy9GrP9omy4xAQajkGTbYIlnhzsDfWzRPmRC1fKmAiKMrCVcgS+SHcQ==" + }, + "@petamoriken/float16": { + "version": "3.8.7", + "resolved": "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.8.7.tgz", + "integrity": "sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA==" + }, + "@types/rbush": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/@types/rbush/-/rbush-3.0.3.tgz", + "integrity": "sha512-lX55lR0iYCgapxD3IrgujpQA1zDxwZI5qMRelKvmKAsSMplFVr7wmMpG7/6+Op2tjrgEex8o3vjg8CRDrRNYxg==" + }, + "color-name": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==" + }, + "color-parse": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/color-parse/-/color-parse-2.0.2.tgz", + "integrity": "sha512-eCtOz5w5ttWIUcaKLiktF+DxZO1R9KLNY/xhbV6CkhM7sR3GhVghmt6X6yOnzeaM24po+Z9/S1apbXMwA3Iepw==", + "requires": { + "color-name": "^2.0.0" + } + }, + "color-rgba": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/color-rgba/-/color-rgba-3.0.0.tgz", + "integrity": "sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==", + "requires": { + "color-parse": "^2.0.0", + "color-space": "^2.0.0" + } + }, + "color-space": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-space/-/color-space-2.0.1.tgz", + "integrity": "sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA==" + }, + "crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "earcut": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/earcut/-/earcut-3.0.0.tgz", + "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==" + }, + "echarts": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz", + "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==", + "requires": { + "zrender": "4.3.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "flv.js": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/flv.js/-/flv.js-1.6.2.tgz", + "integrity": "sha512-xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==", + "requires": { + "es6-promise": "^4.2.8", + "webworkify-webpack": "^2.1.5" + } + }, + "geotiff": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/geotiff/-/geotiff-2.1.3.tgz", + "integrity": "sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==", + "requires": { + "@petamoriken/float16": "^3.4.7", + "lerc": "^3.0.0", + "pako": "^2.0.4", + "parse-headers": "^2.0.2", + "quick-lru": "^6.1.1", + "web-worker": "^1.2.0", + "xml-utils": "^1.0.2", + "zstddec": "^0.1.0" + } + }, + "lerc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lerc/-/lerc-3.0.0.tgz", + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==" + }, + "moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" + }, + "ol": { + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/ol/-/ol-10.2.1.tgz", + "integrity": "sha512-2bB/y2vEnmzjqynP0NA7Cp8k86No3Psn63Dueicep3E3i09axWRVIG5IS/bylEAGfWQx0QXD/uljkyFoY60Wig==", + "requires": { + "@types/rbush": "3.0.3", + "color-rgba": "^3.0.0", + "color-space": "^2.0.1", + "earcut": "^3.0.0", + "geotiff": "^2.0.7", + "pbf": "4.0.1", + "rbush": "^4.0.0" + } + }, + "pako": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "pbf": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pbf/-/pbf-4.0.1.tgz", + "integrity": "sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==", + "requires": { + "resolve-protobuf-schema": "^2.1.0" + } + }, + "protocol-buffers-schema": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" + }, + "quick-lru": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-6.1.2.tgz", + "integrity": "sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==" + }, + "quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==" + }, + "rbush": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/rbush/-/rbush-4.0.1.tgz", + "integrity": "sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==", + "requires": { + "quickselect": "^3.0.0" + } + }, + "resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "requires": { + "protocol-buffers-schema": "^3.3.1" + } + }, + "web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==" + }, + "webworkify-webpack": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz", + "integrity": "sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw==" + }, + "xml-utils": { + "version": "1.10.1", + "resolved": "https://registry.npmmirror.com/xml-utils/-/xml-utils-1.10.1.tgz", + "integrity": "sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==" + }, + "zrender": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz", + "integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==" + }, + "zstddec": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/zstddec/-/zstddec-0.1.0.tgz", + "integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1076917 --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "@escook/request-miniprogram": "^0.2.1", + "crypto-js": "^4.2.0", + "echarts": "^4.9.0", + "es6-promise": "^4.2.8", + "flv.js": "^1.6.2", + "moment": "^2.30.1", + "ol": "^10.2.1" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..05fad4b --- /dev/null +++ b/pages.json @@ -0,0 +1,284 @@ +{ + "easycom": { + "^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue" + }, + "pages": [{ + "path": "pages/login/login", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/upgrade/index", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "app-plus": { + "bounce": "none", + "animationType": "none", + "background": "transparent" + } + } + }, + + { + "path": "pages/xcrw/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/xcrw/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/stlljk/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/spjk/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/spjk/spbf/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/aqjc/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/homeIndex/index", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true, + "app-plus": { + "pullToRefresh": { + "support": true, + "style": "default", + "offset": "70px" + } + } + } + }, + + { + "path": "pages/mypage/mypage", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/zhjs/index", + "style": { + "navigationBarTitleText": "", + "app-plus": { + "titleNView": false, + "subNVues": [ + { + "id": "drawer", + "path": "pages/zhjs/subnvue/index.nvue", + "style": { + "position": "absolute", + "width": "100%", + "height": "100%" + } + } + ] + } + } + }, + { + "path": "pages/sjc/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/wtcl/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/wxyh/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/wxyh/formZdy/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/xcrw/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/wtcl/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/xcrw/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/personInfo/personInfo", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/modifyPassword/modifyPassword", + "style": { + "navigationBarTitleText": "" + } + }, + + { + "path": "pages/wxyh/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/wtcl/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/wtcl/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/yj/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/yj/detail/qxyj", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/yj/detail/wyyj", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/yj/detail/aiyj", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/messageList/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/messageList/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/skInfo/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/skInfo/waterDatail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/ylzList/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/sws/detail/index", + "style": { + "navigationBarTitleText": "" + } + } + ], + "usingComponents": { + "map": "/uni_modules/@dcloudio/uni-map/components/uni-map/uni-map" + }, + + "tabBar": { + "color": "#333333", + "selectedColor": "#59A7FF", + "list": [{ + "pagePath": "pages/homeIndex/index", + "iconPath": "/static/tabs/home.png", + "selectedIconPath": "static/tabs/home2.png", + "text": "首页" + }, + { + "pagePath": "pages/mypage/mypage", + "iconPath": "/static/images/my2_icon@2x.png", + "selectedIconPath": "static/images/my2_icon@2x2.png", + "text": "我的" + } + ] + }, + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8", + "backgroundColorTop": "transparent", + "navigationStyle": "custom", + "app-plus": { + "background": "#efeff4" + } + }, + "subPackages": [{ + "root": "subpkg", + "pages": [{ + "path": "rainDetail/rainDetail" + }] + }], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8", + "backgroundColorTop": "transparent", + "navigationStyle": "custom", + "app-plus": { + "background": "#efeff4" + } + } +} \ No newline at end of file diff --git a/pages/addressBook/addressBook.vue b/pages/addressBook/addressBook.vue new file mode 100644 index 0000000..02120d9 --- /dev/null +++ b/pages/addressBook/addressBook.vue @@ -0,0 +1,329 @@ + + + + + diff --git a/pages/addressBook/follow.vue b/pages/addressBook/follow.vue new file mode 100644 index 0000000..de2078d --- /dev/null +++ b/pages/addressBook/follow.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/pages/addressBook/myDept.vue b/pages/addressBook/myDept.vue new file mode 100644 index 0000000..ea38bfd --- /dev/null +++ b/pages/addressBook/myDept.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/pages/aqjc/dataUrl/index.js b/pages/aqjc/dataUrl/index.js new file mode 100644 index 0000000..4a8df17 --- /dev/null +++ b/pages/aqjc/dataUrl/index.js @@ -0,0 +1,3 @@ +export const imageUrl060 = 'data:image/png;base64,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30SVrXFWVZh7TI53zVOqmBymn29Re9uore3rCnVvCvb7haqevFU/76NWwGH74i4FHt/NM9rDzJbWZRcF1zeolfFyqna8V/OKutdyezP7V4HQNzRGJ88io73v+3th6RAzG6rnG+fGGtSu1gX4j5vZ5gqV0zyggBgAANQMHTXIzHVQaZ20RXPnznXHVs26d+8+4rvvvutdUVHRQEHq9Do0v7Sbc9RVho6aMWPGx2qp+7WO14/T8eSpOn4eojnvq7v9LwAAAABUmTJ2JbBYaa7wbW89qc01v+fFxTxJN4KirOyPPxOdFHxNCK6PdIppSbua/saMTXmIXlpvRsxtf3rMHD5RsPhAwiq7K6isp4pOF5QepdseUPvXPROCwddU9Xmwd103tehdJ2UTJ+gEXUsF2C5o+zDYprvNrKl+3kLPwW89vL62daLa9BbST23QXGvi4xXCztbz/kntgefr65d635TKYXrs+wvc/w4Kqtcq4bYUo4Fa7LZRa2XfbJ08na0KCwAAsOg00kCww3QcHKlI+uy72mqrjerTp487fnx13LhxJ7366quratn5dWkamubNm8/da6+9Xr3nnntWmTt3bmcNpjtZgwf7KBjdzFvlDXVieXIxm5e03MyWSbl9KVoMA3XGQn3+BgAAi4jXwbLKEY4Ci5+LVe32jiopDyz2A3zaH58gHK1J2qgiNa1atqXm+HQVqad413dRFesyah92YDCHq2t1OyW4ry6q7tw0wz5wI/GfUHvekKtg3a3A+rconNsvw2N10uu/pgLcURnWWdSOUdviqTV0+/ZXda3PnUx9dNFuFgAAdV6mKlGZqwFx7rhuh549e366/vrrn68pDJ4dMWLEqe+99177atyht2iu/X46Rswy136SpqrqHJiyjJsn/uClllpqdOPGjS9v0KBBk59//rlL7969h3fo0OHTJ5544t0pU6Ys5S3v2g3fpuPr1gpJXUVtQ93++WI2L6mbomPDhNvK9T653szmVfN21SWr6xi71FroNf28lu7bNjX4c9Piwg2SuSDokAQAAKoR4SiAPFqZ2XU60eICu/PYe//jRH2QvDfmto5FVKsOTgg8fZupMvLUSmx3G7XWfT7j8g+rChYAAGBxk7dK9GMdH9+rLhouzDtgpZVWunubbbZZWfPEu+Bw/nfffTeyrKxsi/Hjxw9r2bKlm5Jhfv369VtU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' +export const imageUrl090 ='data:image/png;base64,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' +export const rule = 'data:image/png;base64,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' \ No newline at end of file diff --git a/pages/aqjc/index.vue b/pages/aqjc/index.vue new file mode 100644 index 0000000..9c97c48 --- /dev/null +++ b/pages/aqjc/index.vue @@ -0,0 +1,421 @@ + + + + + \ No newline at end of file diff --git a/pages/aqjc/jcsjTable.vue b/pages/aqjc/jcsjTable.vue new file mode 100644 index 0000000..63d5954 --- /dev/null +++ b/pages/aqjc/jcsjTable.vue @@ -0,0 +1,120 @@ + + + + + \ No newline at end of file diff --git a/pages/aqjc/jrxOptions.js b/pages/aqjc/jrxOptions.js new file mode 100644 index 0000000..d7d8216 --- /dev/null +++ b/pages/aqjc/jrxOptions.js @@ -0,0 +1,325 @@ + +import { imageUrl060,imageUrl090,rule } from './dataUrl' + +export default function jrxOptions(data = {}, type = "1") { + const yMin = type == "1" ? 70 : type == "2" ? 70 : 70; + const yMax = type == "1" ? 154 : type == "2" ? 150 : 150; + const type1 = ["SY05", "SY06", "SY07", "SY08"] + const type2 = ["SY09","SY10","SY11","SY12"] + const alltype = type == "1" ? type1 : type == "2" ? type2 : type2; + // 字体颜色 + const textColor = '#666' + const imageUrl = type == "1" ? imageUrl060: + type == "2" ? imageUrl090 : imageUrl090; + const xValue = type == "1" ? (((data?.rz - 99) + 1.1 * 13) / 1.1): + type == "2" ? (((data?.rz - 99) + 1 * 14) / 1) : (((data?.rz - 99) + 1 * 14) / 1) + const rz = data?.rz ? + [[xValue, data?.rz], [0, data?.rz], ] : + [] + const rz1 = data?.rz ? + type == "1" ? + [[0, 99], [13, 99], [xValue, data?.rz]]: + type == "2" ? + [[0, 99], [14, 99], [xValue, data?.rz]] + : [[0, 99], [14, 99], [xValue, data?.rz]] + : + [] + const gz1 = data[alltype[0]] ? + type == "1" ? [[51.6, 85], [51.6, data[alltype[0]]]] : + type == "2" ? [[47.5, 85], [47.5, data[alltype[0]]]] : + [[47.5, 158], [85, data[alltype[0]]]] + : []; + const gz2 = data[alltype[1]] ? + type == "1" ? [[53.6, 85], [53.6, data[alltype[1]]]] : + type == "2" ? [[49.5, 85], [49.5, data[alltype[1]]]] : + [[53.6, 158], [53.6, data[alltype[1]]]] : + []; + + const gz3 = data[alltype[2]] ? + type == "1" ? [[72.5, 90], [72.5, data[alltype[2]]]] : + type == "2" ? [[66.5, 90], [66.5, data[alltype[2]]]] : + [[73, 161], [73, data[alltype[2]]]] : []; + + const gz4 = data[alltype[3]] ? + type == "1" ? [[84.5, 96], [84.5, data[alltype[3]]]] : + type == "2" ? [[77, 96], [77, data[alltype[3]]]] : + [[85, 166], [85, data[alltype[3]]]] : []; + + const line = data?.rz ? + type == "1" ? + [ + [xValue, data?.rz], + [51.6, data[alltype[0]]], + [53.6, data[alltype[1]]], + [72.5, data[alltype[2]]], + [84.5, data[alltype[3]]] + ] : + type == "2" ? + [ + [xValue, data?.rz], + [47.5, data[alltype[0]]], + [49.5, data[alltype[1]]], + [66.5, data[alltype[2]]], + [77, data[alltype[3]]] + ] : + [ + [xValue, data?.rz], + [51.6, data[alltype[0]]], + [53.6, data[alltype[1]]], + [73, data[alltype[2]]], + [85, data[alltype[3]]] + ] + : [] + let eopts = { + toolbox: { + show: true, + feature: { + saveAsImage: { + show: true, + excludeComponents: ['toolbox'], + pixelRatio: 2, + name:"测值图" + }, + }, + right: "10%", + top:"4%" + }, + graphic: [ + { + type: 'image', + left: '5%', + top: 0, + bottom:0, + z: 1, + bounding: 'raw', + style: { + image: imageUrl, + width: 1310, + height: 380 + } + }, + { + type: 'image', + // id: 'background', + left: '5%', + bottom:"5%", + z: 1, + bounding: 'all', + style: { + image: rule, + width: 10, + height: 450 + } + } + ], + grid: { + top: '0%', + left: '2%', + right: '5%', + bottom: '0%', + containLabel: true + }, + xAxis: { + min: 0, + max:100, + axisLabel: { + show:false, + // 坐标轴字体颜色 + color: textColor, + fontSize: 18 + }, + axisLine: { + show:false, + lineStyle: { + color: textColor + } + }, + axisTick: { + // y轴刻度线 + show: false + }, + splitLine: { + // 网格 + show: false + }, + boundaryGap: false + }, + yAxis: { + type: 'value', + min: yMin, + max: yMax, + interval:5, + // data:[155,160,180,190,210], + nameTextStyle: { + color: '#333', + fontSize: 18, + padding: [0, 0, 0, 80] + }, + axisLabel: { + // 坐标轴字体颜色 + color: textColor, + fontSize: 18, + showMinLabel: false, + showMaxLabel: false + }, + axisLine: { + show: false + }, + axisTick: { + // y轴刻度线 + show: false + }, + splitLine: { + // 网格 + show: false, + lineStyle: { + color: '#CCCCCC', + type: 'dashed' + } + } + }, + } + let chartData = { + series: [ + // 和大坝坡面重合的线 斜率为0.75 + { + + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#fff' + }, + lineStyle: { + color: '#fff' + }, + areaStyle: { + origin: "end", + color: 'rgba(0, 128, 255, 0.3)' // 设置区域填充颜色 + }, + data:[...rz,...rz1] + + }, + { + + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF' + }, + markPoint: { + data: [{ type: 'max',x:"20%", coord: [xValue, data?.rz] }], + symbol: 'pin', + symbolSize: [30, 10], + itemStyle: { + color: '#fff', // 标注点颜色 + borderColor: '#ffa500', // 标注点边框颜色 + borderWidth: 0 // 标注点边框宽度 + }, + label: { + show: true, // 是否显示标签 + formatter: "库水位" +data?.rz + "m", // 标签格式 + color: '#5487FF', // 标签文字颜色 + fontSize: 12, // 标签文字大小 + } + }, + data:rz + }, + { + + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF' + }, + data:rz1 + }, + // 管位 + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF', + width:6 + }, + data: gz1 + }, + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF', + width:6 + }, + data: gz2 + }, + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF', + width:6 + }, + data: gz3 + }, + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF', + width:6 + }, + data: gz4 + }, + // 管位连接线 + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF', + }, + data: line + }, + ] + } + return { + eopts, + chartData + } +} \ No newline at end of file diff --git a/pages/forewarning/forewarning.vue b/pages/forewarning/forewarning.vue new file mode 100644 index 0000000..4024425 --- /dev/null +++ b/pages/forewarning/forewarning.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/pages/forewarning/hd.vue b/pages/forewarning/hd.vue new file mode 100644 index 0000000..c74d60c --- /dev/null +++ b/pages/forewarning/hd.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/pages/forewarning/sh.vue b/pages/forewarning/sh.vue new file mode 100644 index 0000000..f1661fa --- /dev/null +++ b/pages/forewarning/sh.vue @@ -0,0 +1,328 @@ + + + + + diff --git a/pages/forewarning/shInformation/shInformation.vue b/pages/forewarning/shInformation/shInformation.vue new file mode 100644 index 0000000..0903de9 --- /dev/null +++ b/pages/forewarning/shInformation/shInformation.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/pages/forewarning/sk.vue b/pages/forewarning/sk.vue new file mode 100644 index 0000000..cc8fb2f --- /dev/null +++ b/pages/forewarning/sk.vue @@ -0,0 +1,262 @@ + + + + + diff --git a/pages/gqzq/detail/index.vue b/pages/gqzq/detail/index.vue new file mode 100644 index 0000000..7d355e1 --- /dev/null +++ b/pages/gqzq/detail/index.vue @@ -0,0 +1,306 @@ + + + diff --git a/pages/gqzq/gqxx.vue b/pages/gqzq/gqxx.vue new file mode 100644 index 0000000..72feaa2 --- /dev/null +++ b/pages/gqzq/gqxx.vue @@ -0,0 +1,521 @@ + + + diff --git a/pages/gqzq/gqxx/gqxx.vue b/pages/gqzq/gqxx/gqxx.vue new file mode 100644 index 0000000..4de06cb --- /dev/null +++ b/pages/gqzq/gqxx/gqxx.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/gqzq/gqxx/qk.vue b/pages/gqzq/gqxx/qk.vue new file mode 100644 index 0000000..d9ef469 --- /dev/null +++ b/pages/gqzq/gqxx/qk.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/pages/gqzq/gqxx/qkForm.vue b/pages/gqzq/gqxx/qkForm.vue new file mode 100644 index 0000000..f8e22d9 --- /dev/null +++ b/pages/gqzq/gqxx/qkForm.vue @@ -0,0 +1,301 @@ + + + + + diff --git a/pages/gqzq/gqxx/xq.vue b/pages/gqzq/gqxx/xq.vue new file mode 100644 index 0000000..37be643 --- /dev/null +++ b/pages/gqzq/gqxx/xq.vue @@ -0,0 +1,332 @@ + + + + + diff --git a/pages/gqzq/gqxx/xqForm.vue b/pages/gqzq/gqxx/xqForm.vue new file mode 100644 index 0000000..ad6ad37 --- /dev/null +++ b/pages/gqzq/gqxx/xqForm.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/pages/gqzq/index.vue b/pages/gqzq/index.vue new file mode 100644 index 0000000..055146e --- /dev/null +++ b/pages/gqzq/index.vue @@ -0,0 +1,122 @@ + + + diff --git a/pages/gqzq/zqxx.vue b/pages/gqzq/zqxx.vue new file mode 100644 index 0000000..1521c89 --- /dev/null +++ b/pages/gqzq/zqxx.vue @@ -0,0 +1,392 @@ + + + diff --git a/pages/gqzq/zqxx/form.vue b/pages/gqzq/zqxx/form.vue new file mode 100644 index 0000000..37a5224 --- /dev/null +++ b/pages/gqzq/zqxx/form.vue @@ -0,0 +1,352 @@ + + + + + diff --git a/pages/gqzq/zqxx/table.vue b/pages/gqzq/zqxx/table.vue new file mode 100644 index 0000000..fabd5cb --- /dev/null +++ b/pages/gqzq/zqxx/table.vue @@ -0,0 +1,320 @@ + + + + + diff --git a/pages/gqzq/zqxx/zqxx.vue b/pages/gqzq/zqxx/zqxx.vue new file mode 100644 index 0000000..ffa87b0 --- /dev/null +++ b/pages/gqzq/zqxx/zqxx.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/pages/hdDetail/hdDetail.vue b/pages/hdDetail/hdDetail.vue new file mode 100644 index 0000000..a3b2240 --- /dev/null +++ b/pages/hdDetail/hdDetail.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/pages/hdDetail/jcsj/chartOption.js b/pages/hdDetail/jcsj/chartOption.js new file mode 100644 index 0000000..1407b80 --- /dev/null +++ b/pages/hdDetail/jcsj/chartOption.js @@ -0,0 +1,242 @@ + +import echarts from 'echarts/lib/echarts'; + +export default function DrpOption(data=[],wrz,grz) { + const maxVal = Math.max(...data.map(obj => obj.drp)) + const maxSw = Math.max(...data.map(obj => obj.z)) + const minSw = Math.min(...data.map(obj => obj.z)) + const maxLl = Math.max(...data.map(obj => obj.tq)) + const minLl = Math.min(...data.map(obj => obj.tq)) + console.log("maxLl",wrz,grz); + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: [ + { + top: "13%", + left: "10%", + right: "8%", + width: '80%', + height: '35%' + }, + { + bottom: "5%", + left: "10%", + right: "8%", + width: '80%', + height: '35%' + }, + ], + legend: { + // 显示图例 + show: true, + // 图例的位置 + data: ['警戒水位', '危险水位', "降雨量", "水位", "转换流量"], + left:3, + right:0, + itemWidth:16, + }, + xAxis: [ + { + gridIndex: 0, + type: 'category', + data: data.map(o => o.tm).reverse(), + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + show:false, + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5, + } + }, + axisTick: { + show: false, + }, + }, + { + gridIndex: 1, + type: 'category', + data: data.map(o => o.tm.substr("2020-".length,11)), + inverse: true, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + formatter: val => val.substr('2020-'.length, 11) + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5, + } + }, + axisTick: { + show: false, + }, + } + ], + yAxis: [ + { + inverse: true, + gridIndex: 0, + type: 'value', + position: 'left', + name: "降雨量(mm)", + nameLocation: "start", + axisLabel: { + color: '#333', + fontSize: 12, + }, + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: 0, + max: maxVal + }, + { + gridIndex: 1, + type: 'value', + position: 'left', + name: "水位(m)", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: minSw, + max: maxSw + }, + { + gridIndex: 1, + type: 'value', + position: 'right', + name: "流量(m³/s)", + splitLine: { + show: false, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: minLl, + max: maxLl + } + ], + } + let chartData = { + series: [ + + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '危险水位', + type: 'line', + color: "#D9001B", + lineStyle: { + type: "dashed" + }, + data: data.map(o => grz), + symbol: 'none' // 设置标记点为'none',即去掉圆点 + }, + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '警戒水位', + type: 'line', + color: "#F59A23", + barWidth: '60%', + data: data.map(o => wrz), + lineStyle: { + type: "dashed" + }, + symbol: 'none' // 设置标记点为'none',即去掉圆点 + }, + { + name: '降雨量', + type: 'bar', + barWidth: '60%', + data: data.map(o => o.drp).reverse(), + itemStyle: { + color: "#007AFD", + }, + label: { + show: false, + }, + + }, + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '水位', + type: 'line', + symbol: 'none', + color: "#0AE0B5", + label: { + show: false, + }, + data: data.map(o => o.z ? o.z.toFixed(2) : null), + }, + { + xAxisIndex: 1, + yAxisIndex: 2, + name: '转换流量', + type: 'line', + color: "#007AFD", + symbol: 'none', + showSymbol: false, + label: { + show: false, + }, + data: data.map(o => o.tq), + } + ] + } + return { + eopts, + chartData + } +} diff --git a/pages/hdDetail/jcsj/jcsj.vue b/pages/hdDetail/jcsj/jcsj.vue new file mode 100644 index 0000000..9c91d98 --- /dev/null +++ b/pages/hdDetail/jcsj/jcsj.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/pages/hdDetail/jcsj/jcsjTable.vue b/pages/hdDetail/jcsj/jcsjTable.vue new file mode 100644 index 0000000..7dc4abb --- /dev/null +++ b/pages/hdDetail/jcsj/jcsjTable.vue @@ -0,0 +1,110 @@ + + + + + \ No newline at end of file diff --git a/pages/hdDetail/spjk/spjk.vue b/pages/hdDetail/spjk/spjk.vue new file mode 100644 index 0000000..49ce5bf --- /dev/null +++ b/pages/hdDetail/spjk/spjk.vue @@ -0,0 +1,127 @@ + + + + + + diff --git a/pages/hdDetail/tjsj/tjsj.vue b/pages/hdDetail/tjsj/tjsj.vue new file mode 100644 index 0000000..67fbd81 --- /dev/null +++ b/pages/hdDetail/tjsj/tjsj.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/pages/hdDetail/zbyq/resList.vue b/pages/hdDetail/zbyq/resList.vue new file mode 100644 index 0000000..d40603e --- /dev/null +++ b/pages/hdDetail/zbyq/resList.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/hdDetail/zbyq/zbyq.vue b/pages/hdDetail/zbyq/zbyq.vue new file mode 100644 index 0000000..c137a05 --- /dev/null +++ b/pages/hdDetail/zbyq/zbyq.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/pages/homeIndex/chartOption.js b/pages/homeIndex/chartOption.js new file mode 100644 index 0000000..4016e27 --- /dev/null +++ b/pages/homeIndex/chartOption.js @@ -0,0 +1,100 @@ + +import echarts from 'echarts/lib/echarts'; +import moment from 'moment'; + +export default function DrpOption(data=[]) { + const maxY = Math.max(...data.map(item => item.sumDrp)) + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: { + x: 18, + y: 24, + x2: 28, + y2: 36, + borderWidth: 0, + bottom: '10%', + left: '8%', + width: '90%', + }, + calculable: true, + xAxis: [ + { + type: 'category', + data: data.map(o => moment(o.time).format("HH:mm")), + splitLine: { + show: false + }, + axisLabel: { + color: '#bbb', + fontSize: 14, + overflow: 'truncate', + }, + axisLine: { + lineStyle: { + color: '#dfdfdf', + width: 0.5 + } + }, + axisTick: { + show: false + } + } + ], + yAxis: [ + { + type: 'value', + position: 'left', + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#bbb', + fontSize: 10, + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: 0, + max:maxY + } + ], + // dataZoom: [ + // { + // type: 'slider', // 设置为滑动条类型 + // xAxisIndex: 0, // 指定控制第一个 x 轴 + // start: 0, // 初始窗口的起始位置(百分比) + // end: 100, // 初始窗口的结束位置(百分比) + + // } + // ], + } + let chartData = { + series: [ + { + name: '面雨量(mm)', + type: 'bar', + barWidth: '60%', + data: data.map(o => o.sumDrp), + itemStyle: { + normal: { + color: "#6395f9" + } + } + } + ] + } + return { + eopts, + chartData + } +} diff --git a/pages/homeIndex/index.vue b/pages/homeIndex/index.vue new file mode 100644 index 0000000..5645265 --- /dev/null +++ b/pages/homeIndex/index.vue @@ -0,0 +1,424 @@ + + + + + \ No newline at end of file diff --git a/pages/login/login.vue b/pages/login/login.vue new file mode 100644 index 0000000..23f0da3 --- /dev/null +++ b/pages/login/login.vue @@ -0,0 +1,231 @@ + + + + + \ No newline at end of file diff --git a/pages/messageList/detail/index.vue b/pages/messageList/detail/index.vue new file mode 100644 index 0000000..be33575 --- /dev/null +++ b/pages/messageList/detail/index.vue @@ -0,0 +1,146 @@ + + + + + \ No newline at end of file diff --git a/pages/messageList/index.vue b/pages/messageList/index.vue new file mode 100644 index 0000000..fb8880e --- /dev/null +++ b/pages/messageList/index.vue @@ -0,0 +1,219 @@ + + + + + \ No newline at end of file diff --git a/pages/modifyPassword/modifyPassword.vue b/pages/modifyPassword/modifyPassword.vue new file mode 100644 index 0000000..27aa503 --- /dev/null +++ b/pages/modifyPassword/modifyPassword.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/pages/mypage/compents/wtcl/detail/index.vue b/pages/mypage/compents/wtcl/detail/index.vue new file mode 100644 index 0000000..0dae1a9 --- /dev/null +++ b/pages/mypage/compents/wtcl/detail/index.vue @@ -0,0 +1,231 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/wtcl/index.vue b/pages/mypage/compents/wtcl/index.vue new file mode 100644 index 0000000..60a87c2 --- /dev/null +++ b/pages/mypage/compents/wtcl/index.vue @@ -0,0 +1,201 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/wxyh/formZdy/formBottom.vue b/pages/mypage/compents/wxyh/formZdy/formBottom.vue new file mode 100644 index 0000000..fa5d820 --- /dev/null +++ b/pages/mypage/compents/wxyh/formZdy/formBottom.vue @@ -0,0 +1,95 @@ + + + \ No newline at end of file diff --git a/pages/mypage/compents/wxyh/formZdy/formTop.vue b/pages/mypage/compents/wxyh/formZdy/formTop.vue new file mode 100644 index 0000000..5a1a4d8 --- /dev/null +++ b/pages/mypage/compents/wxyh/formZdy/formTop.vue @@ -0,0 +1,38 @@ + + + \ No newline at end of file diff --git a/pages/mypage/compents/wxyh/formZdy/index.vue b/pages/mypage/compents/wxyh/formZdy/index.vue new file mode 100644 index 0000000..00218b8 --- /dev/null +++ b/pages/mypage/compents/wxyh/formZdy/index.vue @@ -0,0 +1,75 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/wxyh/index.vue b/pages/mypage/compents/wxyh/index.vue new file mode 100644 index 0000000..7bcb8f9 --- /dev/null +++ b/pages/mypage/compents/wxyh/index.vue @@ -0,0 +1,178 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/xcrw/detail/dbForm.vue b/pages/mypage/compents/xcrw/detail/dbForm.vue new file mode 100644 index 0000000..b79fc9e --- /dev/null +++ b/pages/mypage/compents/xcrw/detail/dbForm.vue @@ -0,0 +1,305 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/xcrw/detail/formZdy.vue b/pages/mypage/compents/xcrw/detail/formZdy.vue new file mode 100644 index 0000000..1b49a2a --- /dev/null +++ b/pages/mypage/compents/xcrw/detail/formZdy.vue @@ -0,0 +1,147 @@ + + + \ No newline at end of file diff --git a/pages/mypage/compents/xcrw/detail/index.vue b/pages/mypage/compents/xcrw/detail/index.vue new file mode 100644 index 0000000..052fae1 --- /dev/null +++ b/pages/mypage/compents/xcrw/detail/index.vue @@ -0,0 +1,231 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/xcrw/index.vue b/pages/mypage/compents/xcrw/index.vue new file mode 100644 index 0000000..c98ae60 --- /dev/null +++ b/pages/mypage/compents/xcrw/index.vue @@ -0,0 +1,199 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/mypage.vue b/pages/mypage/mypage.vue new file mode 100644 index 0000000..0c5bfee --- /dev/null +++ b/pages/mypage/mypage.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/pages/orderFeedback/fk.vue b/pages/orderFeedback/fk.vue new file mode 100644 index 0000000..7d508ec --- /dev/null +++ b/pages/orderFeedback/fk.vue @@ -0,0 +1,175 @@ + + + + + diff --git a/pages/orderFeedback/orderFeedback.vue b/pages/orderFeedback/orderFeedback.vue new file mode 100644 index 0000000..3149db9 --- /dev/null +++ b/pages/orderFeedback/orderFeedback.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/pages/orderFeedback/orderInformation.vue b/pages/orderFeedback/orderInformation.vue new file mode 100644 index 0000000..508ea12 --- /dev/null +++ b/pages/orderFeedback/orderInformation.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/pages/orderFeedback/zl.vue b/pages/orderFeedback/zl.vue new file mode 100644 index 0000000..fb52b3c --- /dev/null +++ b/pages/orderFeedback/zl.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/pages/personInfo/personInfo.vue b/pages/personInfo/personInfo.vue new file mode 100644 index 0000000..867cc1d --- /dev/null +++ b/pages/personInfo/personInfo.vue @@ -0,0 +1,235 @@ + + + + + \ No newline at end of file diff --git a/pages/rain/Table.vue b/pages/rain/Table.vue new file mode 100644 index 0000000..ca3af03 --- /dev/null +++ b/pages/rain/Table.vue @@ -0,0 +1,114 @@ + + + + + \ No newline at end of file diff --git a/pages/rain/rain.vue b/pages/rain/rain.vue new file mode 100644 index 0000000..ac2e2e4 --- /dev/null +++ b/pages/rain/rain.vue @@ -0,0 +1,550 @@ + + + + + \ No newline at end of file diff --git a/pages/rainDetail/jcsj/chartOption.js b/pages/rainDetail/jcsj/chartOption.js new file mode 100644 index 0000000..de204d9 --- /dev/null +++ b/pages/rainDetail/jcsj/chartOption.js @@ -0,0 +1,181 @@ + +import echarts from 'echarts/lib/echarts'; + +export default function DrpOption(echartData) { + let totalDrp = 0; + const DRPLEVEL = [10, 20, 50, 100, 250]; + const maxVal = DRPLEVEL.find(o => o > totalDrp); + const xMaxVal = echartData?.actual ? DRPLEVEL.find(o => { + let max = Math.max(...echartData?.actual || []) + return o > max + }):maxVal + // const xMaxVal = Math.ceil(Math.max(...echartData.actual)) + 2 + const yMaxVal = echartData?.actual ? DRPLEVEL.find(o => { + let max = Math.max(...echartData?.total) + return o > max + }): maxVal + let eopts = { + tooltip: { + trigger: 'axis' + }, + grid:{ + x: 40, + y: 30, + x2: 30, + y2: 28, + borderWidth: 0 + }, + legend: { + // 显示图例 + show: true, + // 图例的位置 + data: ['实测', '累计'] + }, + calculable: true, + xAxis: [ + { + type: 'category', + // data: echartData?.time.map(item => item.substr('2020--'.length)), + data: echartData?.time, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + format: 'xAxisFormat' + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5, + } + }, + axisTick: { + show: false, + }, + } + ], + yAxis: [ + { + type: 'value', + position: 'left', + name:"雨量mm", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: 0, + max: xMaxVal + }, + { + type: 'value', + position: 'right', + name:"累计mm", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: 0, + max: yMaxVal + } + ] + } + let chartData = { + series: [ + { + name: '实测', + type: 'bar', + barWidth: '60%', + data: echartData?.actual, + itemStyle: { + normal: { + barBorderRadius: [3, 3, 0, 0], + color: new echarts.graphic.LinearGradient( + 0, 0, 0, 1, + [ + { offset: 0, color: '#3876cd' }, + { offset: 0.5, color: '#45b4e7' }, + { offset: 1, color: '#54ffff' } + ] + ), + }, + }, + label: { + show: false, + }, + markPoint: { + data: [ + { type: 'max', name: '最大值', symbol: 'circle', symbolSize: 1, symbolOffset: [0, -12] }, + ] + }, + }, + { + yAxisIndex: 1, + name: '累计', + type: 'line', + showSymbol: false, + label: { + show: false, + }, + data: echartData?.total, + lineStyle: { + normal: { + width: 1, + } + }, + areaStyle: { + normal: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ + offset: 0, + color: 'rgba(3, 194, 236, 0.3)' + }, { + offset: 0.8, + color: 'rgba(3, 194, 236, 0)' + } + ], false), + shadowColor: 'rgba(0, 0, 0, 0.1)', + shadowBlur: 10 + } + }, + itemStyle: { + normal: { + color: '#03C2EC' + } + }, + } + ] + } + return { + eopts, + chartData + } +} diff --git a/pages/rainDetail/jcsj/jcsj.vue b/pages/rainDetail/jcsj/jcsj.vue new file mode 100644 index 0000000..f3383de --- /dev/null +++ b/pages/rainDetail/jcsj/jcsj.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/pages/rainDetail/jcsj/jcsjTable.vue b/pages/rainDetail/jcsj/jcsjTable.vue new file mode 100644 index 0000000..eec7c05 --- /dev/null +++ b/pages/rainDetail/jcsj/jcsjTable.vue @@ -0,0 +1,91 @@ + + + + + \ No newline at end of file diff --git a/pages/rainDetail/rainDetail.vue b/pages/rainDetail/rainDetail.vue new file mode 100644 index 0000000..5fc5ccc --- /dev/null +++ b/pages/rainDetail/rainDetail.vue @@ -0,0 +1,102 @@ + + + + + \ No newline at end of file diff --git a/pages/rainDetail/tjsj/tjsj.vue b/pages/rainDetail/tjsj/tjsj.vue new file mode 100644 index 0000000..0773cae --- /dev/null +++ b/pages/rainDetail/tjsj/tjsj.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/pages/rainDetail/zbyq/resList.vue b/pages/rainDetail/zbyq/resList.vue new file mode 100644 index 0000000..d40603e --- /dev/null +++ b/pages/rainDetail/zbyq/resList.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/rainDetail/zbyq/zbyq.vue b/pages/rainDetail/zbyq/zbyq.vue new file mode 100644 index 0000000..16567ee --- /dev/null +++ b/pages/rainDetail/zbyq/zbyq.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/pages/sjc/index.vue b/pages/sjc/index.vue new file mode 100644 index 0000000..c3618c4 --- /dev/null +++ b/pages/sjc/index.vue @@ -0,0 +1,80 @@ + + + \ No newline at end of file diff --git a/pages/sjc/slTable.vue b/pages/sjc/slTable.vue new file mode 100644 index 0000000..2aab934 --- /dev/null +++ b/pages/sjc/slTable.vue @@ -0,0 +1,94 @@ + + + + + \ No newline at end of file diff --git a/pages/sjc/zsyTable.vue b/pages/sjc/zsyTable.vue new file mode 100644 index 0000000..2498672 --- /dev/null +++ b/pages/sjc/zsyTable.vue @@ -0,0 +1,97 @@ + + + + + \ No newline at end of file diff --git a/pages/sjc/zwyTable.vue b/pages/sjc/zwyTable.vue new file mode 100644 index 0000000..4200d3b --- /dev/null +++ b/pages/sjc/zwyTable.vue @@ -0,0 +1,98 @@ + + + + + \ No newline at end of file diff --git a/pages/skDetail/jcsj/chartOption.js b/pages/skDetail/jcsj/chartOption.js new file mode 100644 index 0000000..55836f0 --- /dev/null +++ b/pages/skDetail/jcsj/chartOption.js @@ -0,0 +1,261 @@ + +import echarts from 'echarts/lib/echarts'; + +export default function DrpOption( + data, + afsltdz, + flLowLimLev, + desFloodLev, + calFloodLev) { + const maxVal = Math.max(...data.map(obj => obj.drp)) + const maxSw = Math.ceil(Math.max(...data.map(obj => obj.rz))) + const minSw = Math.floor(Math.min(...data.map(obj => obj.rz))) + const maxKr = Math.max(...data.map(obj => obj.w)) + const minKr = Math.min(...data.map(obj => obj.w)) + console.log('desFloodLev',desFloodLev); + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: [ + { + top: "13%", + left: "10%", + right: "8%", + width: '80%', + height: '35%' + }, + { + bottom: "5%", + left: "10%", + right: "8%", + width: '80%', + height: '35%' + }, + ], + legend: { + // 显示图例 + show: true, + // 图例的位置 + data: ["校核水位", '设计水位', '汛限水位', '降雨量', '水位', '库容'], + left:0, + right:0, + itemWidth:10, + padding:0 + }, + xAxis: [ + { + gridIndex: 0, + type: 'category', + data: data.map(o => o.tm).reverse(), + + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + show: false + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5 + } + }, + axisTick: { + show: false + } + }, + { + gridIndex: 1, + type: 'category', + data: data.map(o => o.tm.substr("2020-".length,11)), + inverse: true, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + formatter: val => val.substr('2020-'.length, 11) + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5 + } + }, + axisTick: { + show: false + } + } + ], + yAxis: [ + { + inverse: true, + gridIndex: 0, + type: 'value', + position: 'left', + name: '降雨量(mm)', + nameLocation: 'start', + axisLabel: { + color: '#333', + fontSize: 12 + }, + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: 0, + max: maxVal + }, + { + gridIndex: 1, + type: 'value', + position: 'left', + name: '水位(m)', + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minSw, + max: maxSw + }, + { + gridIndex: 1, + type: 'value', + position: 'right', + name: '库容(万m³)', + splitLine: { + show: false, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minKr, + max: maxKr + } + ], + } + let chartData = { + series: [ + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '校核水位', + type: 'line', + color: '#D9001B', + lineStyle: { + type: 'dashed' + }, + data: data.map(o => calFloodLev), + symbol: 'none' // 设置标记点为'none',即去掉圆点 + }, + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '设计水位', + type: 'line', + color: '#F59A23', + data: data.map(o => desFloodLev), + lineStyle: { + type: 'dashed' + }, + symbol: 'none' // 设置标记点为'none',即去掉圆点 + }, + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '汛限水位', + type: 'line', + color: '#FDDC9F', + data: data.map(o => { + return flLowLimLev + }), + lineStyle: { + type: 'dashed' + }, + symbol: 'none' // 设置标记点为'none',即去掉圆点 + }, + { + name: '降雨量', + type: 'bar', + barWidth: '60%', + data: data.map(o => o.drp).reverse(), + itemStyle: { + color: '#007AFD' + }, + label: { + show: false + } + }, + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '水位', + type: 'line', + symbol: 'none', + color: '#0AE0B5', + label: { + show: false + }, + data: data.map(o => o.rz ? o.rz.toFixed(2):null ) + }, + { + xAxisIndex: 1, + yAxisIndex: 2, + name: '库容', + type: 'line', + color: '#007AFD', + symbol: 'none', + showSymbol: false, + label: { + show: false + }, + data: data.map(o => o.w) + } + ], + } + return { + eopts, + chartData + } +} + diff --git a/pages/skDetail/jcsj/jcsj.vue b/pages/skDetail/jcsj/jcsj.vue new file mode 100644 index 0000000..516c11b --- /dev/null +++ b/pages/skDetail/jcsj/jcsj.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/pages/skDetail/jcsj/jcsjTable.vue b/pages/skDetail/jcsj/jcsjTable.vue new file mode 100644 index 0000000..618abca --- /dev/null +++ b/pages/skDetail/jcsj/jcsjTable.vue @@ -0,0 +1,126 @@ + + + + + \ No newline at end of file diff --git a/pages/skDetail/skDetail.vue b/pages/skDetail/skDetail.vue new file mode 100644 index 0000000..9bb17ea --- /dev/null +++ b/pages/skDetail/skDetail.vue @@ -0,0 +1,161 @@ + + + + + \ No newline at end of file diff --git a/pages/skDetail/spjk/spjk.vue b/pages/skDetail/spjk/spjk.vue new file mode 100644 index 0000000..4489113 --- /dev/null +++ b/pages/skDetail/spjk/spjk.vue @@ -0,0 +1,131 @@ + + + + + + + diff --git a/pages/skDetail/tjsj/tjsj.vue b/pages/skDetail/tjsj/tjsj.vue new file mode 100644 index 0000000..421b451 --- /dev/null +++ b/pages/skDetail/tjsj/tjsj.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/pages/skDetail/txjc/txjc.vue b/pages/skDetail/txjc/txjc.vue new file mode 100644 index 0000000..a0ba14e --- /dev/null +++ b/pages/skDetail/txjc/txjc.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/pages/skDetail/zbyq/resList.vue b/pages/skDetail/zbyq/resList.vue new file mode 100644 index 0000000..d40603e --- /dev/null +++ b/pages/skDetail/zbyq/resList.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/skDetail/zbyq/zbyq.vue b/pages/skDetail/zbyq/zbyq.vue new file mode 100644 index 0000000..c137a05 --- /dev/null +++ b/pages/skDetail/zbyq/zbyq.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/pages/skDetail/zrtx/card.vue b/pages/skDetail/zrtx/card.vue new file mode 100644 index 0000000..70237b9 --- /dev/null +++ b/pages/skDetail/zrtx/card.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/pages/skDetail/zrtx/zrtx.vue b/pages/skDetail/zrtx/zrtx.vue new file mode 100644 index 0000000..ed57b85 --- /dev/null +++ b/pages/skDetail/zrtx/zrtx.vue @@ -0,0 +1,59 @@ + + + + + \ No newline at end of file diff --git a/pages/skInfo/detail/basicInfo.vue b/pages/skInfo/detail/basicInfo.vue new file mode 100644 index 0000000..acac657 --- /dev/null +++ b/pages/skInfo/detail/basicInfo.vue @@ -0,0 +1,111 @@ + + + \ No newline at end of file diff --git a/pages/skInfo/detail/index.vue b/pages/skInfo/detail/index.vue new file mode 100644 index 0000000..414cf59 --- /dev/null +++ b/pages/skInfo/detail/index.vue @@ -0,0 +1,106 @@ + + + + + \ No newline at end of file diff --git a/pages/skInfo/detail/jcxx.vue b/pages/skInfo/detail/jcxx.vue new file mode 100644 index 0000000..376d888 --- /dev/null +++ b/pages/skInfo/detail/jcxx.vue @@ -0,0 +1,373 @@ + + + \ No newline at end of file diff --git a/pages/skInfo/detail/krqx/chartOptions.js b/pages/skInfo/detail/krqx/chartOptions.js new file mode 100644 index 0000000..76efa7e --- /dev/null +++ b/pages/skInfo/detail/krqx/chartOptions.js @@ -0,0 +1,80 @@ +import {GetInterval} from "../../../../utils/tools" +export default function DrpOption(data) { + const maxVal = Math.ceil(Math.max(...data.map(obj => obj.rz))) + const minVal = Math.floor(Math.min(...data.map(obj => obj.rz))) + const maxValX = Math.max(...data.map(obj => obj.w)) + const minValX = Math.min(...data.map(obj => obj.w)) + let arr = [] + + data.forEach(item=>{ + arr.push([item.w,item.rz]) + }) + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: [ + { + top: "12%", + left: "12%", + right: "18%", + bottom: "8%" + }, + ], + xAxis: [ + { + name: "库容(万m³)", + nameGap: 5, + type: 'value', + min:Math.floor(minValX / 5) *5, + max:Math.ceil(maxValX / 5) *5, + interval:GetInterval(minValX,maxValX), + data: data.map(o => o.w), + splitLine: { + show: false + }, + } + ], + yAxis: [ + { + type: 'value', + name: "库水位(m)", + minInterval:1, + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: true + }, + axisTick: { + show: true, + }, + min: minVal, + max: maxVal + } + ], + }; + let chartData = { + series: [ + { + type: 'line', + color: "#007AFD", + data: arr, + smooth: true + }, + ] + }; + return { + eopts, + chartData + } +} \ No newline at end of file diff --git a/pages/skInfo/detail/krqx/index.vue b/pages/skInfo/detail/krqx/index.vue new file mode 100644 index 0000000..77a2c1c --- /dev/null +++ b/pages/skInfo/detail/krqx/index.vue @@ -0,0 +1,68 @@ + + + \ No newline at end of file diff --git a/pages/skInfo/detail/krqx/jcsjTable.vue b/pages/skInfo/detail/krqx/jcsjTable.vue new file mode 100644 index 0000000..dd7a4bd --- /dev/null +++ b/pages/skInfo/detail/krqx/jcsjTable.vue @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/pages/skInfo/detail/myMap.vue b/pages/skInfo/detail/myMap.vue new file mode 100644 index 0000000..dbfe3db --- /dev/null +++ b/pages/skInfo/detail/myMap.vue @@ -0,0 +1,31 @@ +//MyVideo组件 +//自行封装一个组件,利用iframe实现 + + + \ No newline at end of file diff --git a/pages/skInfo/detail/tzcs.vue b/pages/skInfo/detail/tzcs.vue new file mode 100644 index 0000000..a94ade0 --- /dev/null +++ b/pages/skInfo/detail/tzcs.vue @@ -0,0 +1,232 @@ + + + \ No newline at end of file diff --git a/pages/skInfo/index.vue b/pages/skInfo/index.vue new file mode 100644 index 0000000..a2a802b --- /dev/null +++ b/pages/skInfo/index.vue @@ -0,0 +1,188 @@ + + + + + \ No newline at end of file diff --git a/pages/skInfo/waterDatail/index.vue b/pages/skInfo/waterDatail/index.vue new file mode 100644 index 0000000..74c59cb --- /dev/null +++ b/pages/skInfo/waterDatail/index.vue @@ -0,0 +1,138 @@ + + + \ No newline at end of file diff --git a/pages/skInfo/waterDatail/jcOptions.js b/pages/skInfo/waterDatail/jcOptions.js new file mode 100644 index 0000000..76980ac --- /dev/null +++ b/pages/skInfo/waterDatail/jcOptions.js @@ -0,0 +1,166 @@ + +import echarts from 'echarts/lib/echarts'; +import { format } from 'echarts/lib/export'; +export default function DrpOption(data,num) { + const minL = Math.floor(Math.min(...data?.map(s => s.q))); + const maxL = Math.ceil(Math.max(...data?.map(s => s.q))); + const minS = Math.floor(Math.min(...data?.map(s => s.v))); + const maxS = Math.ceil(Math.max(...data?.map(s => s.v))); + let eopts = { + title: { + text: `时段总水量:${num.value}${num.unit}m³`, + top: "0%", + right: "12%", + textStyle: { + fontWeight: "normal", + fontSize:14 + } + }, + tooltip: { + trigger: 'axis', + }, + grid: { + top: '20%', + left: '7%', + right: '11%', + bottom: '10%', + borderWidth: 0 + }, + legend: { + show: true, + top: "8%", + }, + calculable: true, + xAxis: [ + { + type: 'category', + data: data?.map(item => item.tm), + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 14, + // formatter: val => val.substr(0,'2020-11-11 11:11'.length) + format:"waterXaxis" + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5, + } + }, + axisTick: { + show: false, + }, + } + ], + yAxis: [ + { + type: 'value', + position: 'left', + name: "流量(m³/s)", + nameTextStyle: { + padding: [0, 0, 0, 30] + }, + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: minL, + max: maxL + // max: xMaxVal + }, + { + type: 'value', + position: 'right', + name:"水量(m³)", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: minS - 1, + max: maxS + } + ], + }; + let chartData = { + series: [ + + { + name:'流量', + type:'line', + smooth: true, + showSymbol: false, + symbol: false, + itemStyle: { + normal: { + color: "#FAC858", + } + }, + lineStyle: { + normal: { + width: 3, + shadowColor: 'rgba(0,0,0,0.4)', + shadowBlur: 10, + shadowOffsetY: 10 + } + }, + markPoint: { + data: [{ + name: '最大值', + type: 'max', + }], + }, + data: data?.map(s => s.q), + }, + { + name: '水量', + type: 'bar', + yAxisIndex:1, + barWidth: '10%', + data: data?.map(s => s.v), + itemStyle: { + normal: { + color:"#5773c7" + }, + }, + label: { + show: false, + }, + }, + ] + }; + return { + eopts, + chartData + } +} \ No newline at end of file diff --git a/pages/skInfo/waterDatail/jcTable.vue b/pages/skInfo/waterDatail/jcTable.vue new file mode 100644 index 0000000..9e5fa96 --- /dev/null +++ b/pages/skInfo/waterDatail/jcTable.vue @@ -0,0 +1,97 @@ + + + + + \ No newline at end of file diff --git a/pages/spjk/index.vue b/pages/spjk/index.vue new file mode 100644 index 0000000..9df3a0b --- /dev/null +++ b/pages/spjk/index.vue @@ -0,0 +1,121 @@ + + + + \ No newline at end of file diff --git a/pages/spjk/spbf/index.vue b/pages/spjk/spbf/index.vue new file mode 100644 index 0000000..204f36c --- /dev/null +++ b/pages/spjk/spbf/index.vue @@ -0,0 +1,222 @@ + + + + + + + diff --git a/pages/staticData.js b/pages/staticData.js new file mode 100644 index 0000000..927690a --- /dev/null +++ b/pages/staticData.js @@ -0,0 +1,270 @@ + + +export default { + 0:[{ + name: "所在河流(水系)名称", + key: "rvName" + }, + { + name: "倒水全流域面积(km²)", + key: "basArea" + }, + + { + name: "坝址以上流域面积(km²)", + key: "watShedArea" + }, + { + name: "坝址以上主河床长度(km)", + key: "watRiverLen" + }, + { + name: "坝址以上主河床平均坡降(‰)", + key: "watRiverSlope" + }, + { + name: "多处平均降雨量(mm)", + key: "annualAvgDrp" + }, + { + name: "设计洪水标准及洪峰流量(m³/s)", + key: "desFloodPeakFlow" + }, + { + name: "校核洪水标准及洪峰流量(m³/s)", + key: "calFloodPeakFlow" + }, + { + name: "校核洪水位(m)", + key: "calFloodLev" + }, + { + name: "设计洪水位(m)", + key: "desFloodLev" + }, + { + name: "正常蓄水位(m)", + key: "normWatLev" + }, + { + name: "死水位(m)", + key: "deadLev" + }, + { + name: "汛期限制水位(m)", + key: "flLowLimLev" + }, + { + name: "总库容(万m³)", + key: "totCap" + }, + + { + name: "调洪库容(万m³)", + key: "storFlCap" + }, + + { + name: "兴利库容(万m³)", + key: "benResCap" + }, + { + name: "死库容(万m³)", + key: "deadCap" + }, + + { + name: "工程规模", + key: "engScal" + }, + { + name: "设计灌溉面积(亩)", + key: 'designIrrArea' + }, + { + name: "保护人口(人)", + key: 'protectPopulation' + }, + { + name: "保护农田(亩)", + key: 'protectFarmland' + }, + { + name: "地震基本烈度", + key: 'seismicIntensity' + }, + { + name: "地震动参数设计值", + key: 'seismicParm' + }, + ], + 1: [ + { + name: "坝顶高程(m)", + key:"damTopElev" + }, + { + name: "坝顶长度(m)", + key:"damTopLen" + }, + { + name: "坝顶宽度(m)", + key:"damTopWid" + }, + { + name: "最大坝高(m)", + key:"damMaxHeig" + } + ], + 2: [ + { + name: "坝顶高程(m)", + key:"damTopElev" + }, + { + name: "坝顶长度(m)", + key:"damTopLen" + }, + { + name: "坝顶宽度(m)", + key:"damTopWid" + }, + { + name: "最大坝高(m)", + key:"damMaxHeig" + } + ], + 3: [ + { + name: "堰鼎样式", + key:"crestType" + }, + { + name: "地基特性", + key:"foundCharacter" + }, + { + name: "溢流堰顶高程(m)", + key:"crestEle" + }, + { + name: "溢流堰净宽(m)", + key:"netWidth" + }, + { + name: "消能形式", + key:"elimMethod" + }, + { + name: "校验洪水下泄流量(m³/s)", + key:"caliQ" + }, + { + name: "设计洪水下泄流量(m³/s)", + key:"desQ" + }, + { + name: "消能防冲下泄流量(m³/s)", + key:"elimQ" + } + ], + 4: [ + { + name: "型式", + key:"buildType" + }, + { + name: "地基特性", + key:"foundCharacter" + }, + { + name: "进口地板高程(m)", + key:"inletEle" + }, + { + name: "断面尺寸(m)", + key:"sectionSize" + }, + { + name: "洞长(m)", + key:"tunnelLen" + }, + { + name: "设计流量(m³/s)", + key:"desQ" + }, + { + name: "进口闸门型式", + key:"valveType" + }, + { + name: "进口启闭机型式", + key:"ocType" + } + ], + 5: [ + { + name: "型式", + key:"buildType" + }, + { + name: "衬砌型式", + key:"liningType" + }, + { + name: "地基特性", + key:"foundCharacter" + }, + { + name: "进口地板高程(m)", + key:"inletEle" + }, + { + name: "断面尺寸(m)", + key:"sectionSize" + }, + { + name: "洞长(m)", + key:"tunnelLen" + }, + { + name: "设计流量(m³/s)", + key:"desQ" + }, + { + name: "进口闸门型式", + key:"valveType" + }, + { + name: "进口启闭机型式", + key:"ocType" + } + ], + 6: [ + { + name: "坝顶高程(m)", + key:"damTopElev" + }, + { + name: "坝顶长度(m)", + key:"damTopLen" + }, + { + name: "坝顶宽度(m)", + key:"damTopWid" + }, + { + name: "最大坝高(m)", + key:"damMaxHeig" + } + ],7: [ + { + name: "防汛路长度(m)", + key:"floodRoadLen" + }, + { + name: "路面宽度(m)", + key:"roadWidth" + }, + ], +} \ No newline at end of file diff --git a/pages/stlljk/chartOption.js b/pages/stlljk/chartOption.js new file mode 100644 index 0000000..9f08ce0 --- /dev/null +++ b/pages/stlljk/chartOption.js @@ -0,0 +1,145 @@ +import "echarts/extension/bmap/bmap" + + +export default function drpOption (obj) { + const data = obj.list; + const monthsData = obj.chart + console.log(data,monthsData); + const maxQ = Math.ceil(Math.max(...data.map(obj => { + return obj?.q ? obj?.q:0 + }))) + const minQ = Math.floor(Math.min(...data.map(obj => { + return obj?.q? obj?.q :300 + }))) + const monthsX = Object.keys(monthsData); + const res = monthsX.map(item => { + const result = data?.map(s => { + const momth = s.tm.substr("2024-0".length, "2024-0".length - 5); + if (momth == String(item)) { + return [s.tm,monthsData[item]] + } else { + return [] + } + }) + return result + }) + const data1 = res.map(s => s.filter(o => o.length > 0)).filter(o => o.length > 0) + const lines = data1.map((item, index, c) => ({ + type: 'line', + markLine: { + symbol:"none", + lineStyle: { + type: "dotted", + color: "#47daff", + width: 3 + }, + label: { + show: true, + position:"middle", + color: "#47daff", + distance: 5, + format: "stMonth" + }, + data: [ + [{ coord: [item[0][0], item[0][1]] },{coord:[item[item.length - 1][0],item[item.length - 1][1]]}] + ] + } + })) + + let eopts = { + tooltip: { + trigger: 'axis' + }, + grid: [ + { + top: '10%', + left: '11%', + right: '5%', + bottom:"12%" + // width: '80%', + // height: '35%' + }, + ], + legend: { + // 显示图例 + show: true, + top: '-1%', + }, + + xAxis: [ + { + type: 'category', + data: data.map(o => o.tm), + inverse: true, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + format:"stList" + }, + axisLine: { + lineStyle: { + color: '#000', + width: 0.5 + } + }, + axisTick: { + show: false + } + } + ], + yAxis: [ + { + type: 'value', + // gridIndex:0, + position: 'left', + name: '生态流量(m³/s)', + splitLine: { + show: true, + lineStyle: { + color: '#000', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minQ, + max: maxQ + }, + ], + } + let chartData = { + series: [ + { + name: '生态流量(m³/s)', + type: 'line', + symbol: 'none', + color: '#4fa2ea', + smooth:true, + label: { + show: false + }, + data: data.map(o => o.q) + }, + ...lines + ] + } + return { + eopts, + chartData + } +} + + + diff --git a/pages/stlljk/index.vue b/pages/stlljk/index.vue new file mode 100644 index 0000000..5556c97 --- /dev/null +++ b/pages/stlljk/index.vue @@ -0,0 +1,214 @@ + + + + + + diff --git a/pages/stlljk/index1.vue b/pages/stlljk/index1.vue new file mode 100644 index 0000000..d056301 --- /dev/null +++ b/pages/stlljk/index1.vue @@ -0,0 +1,57 @@ + + \ No newline at end of file diff --git a/pages/stlljk/jcsjTable.vue b/pages/stlljk/jcsjTable.vue new file mode 100644 index 0000000..743368d --- /dev/null +++ b/pages/stlljk/jcsjTable.vue @@ -0,0 +1,111 @@ + + + + + \ No newline at end of file diff --git a/pages/sws/detail/chartOption.js b/pages/sws/detail/chartOption.js new file mode 100644 index 0000000..2025991 --- /dev/null +++ b/pages/sws/detail/chartOption.js @@ -0,0 +1,139 @@ + +import echarts from 'echarts/lib/echarts'; + +export default function DrpOption( + data, +) { + const maxVal = Math.max(...data.map(obj => obj.drp)) + const maxSw = Math.ceil(Math.max(...data.map(obj => obj.rz))) + const minSw = Math.floor(Math.min(...data.map(obj => obj.rz))) + const maxKr = Math.max(...data.map(obj => obj.w)) + const minKr = Math.min(...data.map(obj => obj.w)) + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: { + bottom: "8%", + left: "10%", + right: "8%", + width: '80%', + height: '80%' + }, + legend: { + // 显示图例 + show: false, + }, + xAxis: [ + { + type: 'category', + data: data.map(o => o.tm.substr("2020-".length,11)), + inverse: true, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + formatter: val => val.substr('2020-'.length, 11) + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5 + } + }, + axisTick: { + show: false + } + } + ] + + , + yAxis: [ + { + type: 'value', + position: 'left', + name: '水位(m)', + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minSw, + max: maxSw + }, + { + type: 'value', + position: 'right', + name: '库容(万m³)', + splitLine: { + show: false, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minKr, + max: maxKr + } + ], + } + let chartData = { + series: [ + { + + // yAxisIndex: 0, + name: '水位', + type: 'line', + symbol: 'none', + color: '#0AE0B5', + label: { + show: false + }, + data: data.map(o => o.rz ? o.rz.toFixed(2):null ) + }, + { + yAxisIndex: 1, + name: '库容', + type: 'line', + color: '#007AFD', + symbol: 'none', + showSymbol: false, + label: { + show: false + }, + data: data.map(o => o.w) + } + ], + } + return { + eopts, + chartData + } +} + diff --git a/pages/sws/detail/index.vue b/pages/sws/detail/index.vue new file mode 100644 index 0000000..063e93d --- /dev/null +++ b/pages/sws/detail/index.vue @@ -0,0 +1,140 @@ + + + + + \ No newline at end of file diff --git a/pages/sws/detail/jcTable.vue b/pages/sws/detail/jcTable.vue new file mode 100644 index 0000000..a6237de --- /dev/null +++ b/pages/sws/detail/jcTable.vue @@ -0,0 +1,97 @@ + + + + + \ No newline at end of file diff --git a/pages/sws/index.vue b/pages/sws/index.vue new file mode 100644 index 0000000..94c53f1 --- /dev/null +++ b/pages/sws/index.vue @@ -0,0 +1,96 @@ + + + + + \ No newline at end of file diff --git a/pages/upgrade/index.vue b/pages/upgrade/index.vue new file mode 100644 index 0000000..d65f800 --- /dev/null +++ b/pages/upgrade/index.vue @@ -0,0 +1,276 @@ + + + + + + \ No newline at end of file diff --git a/pages/utils/dicType.js b/pages/utils/dicType.js new file mode 100644 index 0000000..7c98997 --- /dev/null +++ b/pages/utils/dicType.js @@ -0,0 +1,43 @@ + +export function repDict(e) { + let name="" + if(e=="1"){ + name="行政责任人" + }else if(e=="2"){ + name="技术责任人" + }else if(e=="3"){ + name="巡查责任人" + }else if(e=="4"){ + name="主管部门责任人" + }else if(e=="5"){ + name="管理单位责任人" + } + return name +} + +// 县,乡镇判断 +export function disType(e) { + let type; + if (e.endsWith('000000000')) { + type = 1; + } else{ + type = 0; + } + return type; +} + +// 响应等级判断 +// 县,乡镇判断 +export function level(e) { + let name; + if (e == 1) { + name = "Ⅰ级"; + } else if (e == 2) { + name = "Ⅱ级"; + } else if (e == 3) { + name = "Ⅲ级"; + } else if (e == 4) { + name = "Ⅳ级"; + } + return name +} diff --git a/pages/utils/tool.js b/pages/utils/tool.js new file mode 100644 index 0000000..15f69a0 --- /dev/null +++ b/pages/utils/tool.js @@ -0,0 +1,89 @@ +export function restm (e) { + let index = '' + if (e == '8') { + index = 0 + } else if (e == '9') { + index = 1 + } else if (e == '10') { + index = 2 + } else if (e == '11') { + index = 3 + } else if (e == '12') { + index = 4 + } else if (e == '13') { + index = 5 + } else if (e == '14') { + index = 6 + } else if (e == '15') { + index = 7 + } else if (e == '16') { + index = 8 + } else if (e == '17') { + index = 9 + } else if (e == '18') { + index = 10 + } else if (e == '19') { + index = 11 + } else if (e == '20') { + index = 12 + } else if (e == '21') { + index = 13 + } else if (e == '22') { + index = 14 + } else if (e == '23') { + index = 15 + } else if (e == '0') { + index = 16 + } else if (e == '1') { + index = 17 + } else if (e == '2') { + index = 18 + } else if (e == '3') { + index = 19 + } else if (e == '4') { + index = 20 + } else if (e == '5') { + index = 21 + } else if (e == '6') { + index = 22 + } else if (e == '7') { + index = 23 + } + return index +} +export const adnmZhen = adcd => { + if (!adcd || !nameMap) { + return undefined + } + if (adcd.endsWith('000000000')) { + return undefined + } else if (adcd.endsWith('000000')) { + return nameMap[adcd] + } + return nameMap[`${adcd.substr(0, 9)}000000`] +} + +export const fileChange = (file) => { + let blob = new Blob([file]); + let url = window.URL.createObjectURL(blob); + console.log("url",url); + + return url +} + +export function numberFormat(value) { + let param = {} + let k = 10000 + let sizes = ['', '万', '亿', '万亿'] + let i + if (value < k) { + param.value = value + param.unit = '' + } else { + i = Math.floor(Math.log(value) / Math.log(k)); + param.value = ((value / Math.pow(k, i))).toFixed(2); + param.unit = sizes[i]; + } + console.log(param) + return param; +} diff --git a/pages/utils/upgrade.js b/pages/utils/upgrade.js new file mode 100644 index 0000000..a226c70 --- /dev/null +++ b/pages/utils/upgrade.js @@ -0,0 +1,90 @@ +/** + * @description H5+下载App + * @param downloadUrl:App下载链接 + * @param progressCallBack:下载进度回调 + */ +export const downloadApp = (downloadUrl, progressCallBack = () => { },) => { + return new Promise((resolve, reject) => { + //创建下载任务 + const downloadTask = plus.downloader.createDownload(downloadUrl, { + method: "GET" + }, (task, status) => { + if (status == 200) { //下载成功 + resolve(task.filename) + + } else { + reject('fail') + uni.showToast({ + title: '下载失败', + duration: 1500, + icon: "none" + }); + } + }) + //监听下载过程 + downloadTask.addEventListener("statechanged", (task, status) => { + switch (task.state) { + case 1: // 开始 + break; + case 2: //已连接到服务器 + break; + case 3: // 已接收到数据 + let hasProgress = task.totalSize && task.totalSize > 0 //是否能获取到App大小 + if (hasProgress) { + let current = parseInt(100 * task.downloadedSize / task.totalSize); //获取下载进度百分比 + progressCallBack(current) + } + break; + case 4: // 下载完成 + break; + } + }); + //开始执行下载 + downloadTask.start(); + }) + + +} +/** + * @description H5+安装APP + * @param fileName:app文件名 + * @param callBack:安装成功回调 + */ +export const installApp = (fileName, callBack = () => {}) => { + //注册广播监听app安装情况 + onInstallListening(callBack); + //开始安装 + plus.runtime.install(plus.io.convertLocalFileSystemURL(fileName), {}, () => { + //成功跳转到安装界面 + }, function(error) { + uni.showToast({ + title: '安装失败', + duration: 1500, + icon: "none" + }); + }) + +} +/** + * @description 注册广播监听APP是否安装成功 + * @param callBack:安装成功回调函数 + */ +const onInstallListening = (callBack = () => {}) => { + + let mainActivity = plus.android.runtimeMainActivity(); //获取activity + //生成广播接收器 + let receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', { + onReceive: (context, intent) => { //接收广播回调 + plus.android.importClass(intent); + mainActivity.unregisterReceiver(receiver); //取消监听 + callBack() + } + }); + let IntentFilter = plus.android.importClass('android.content.IntentFilter'); + let Intent = plus.android.importClass('android.content.Intent'); + let filter = new IntentFilter(); + filter.addAction(Intent.ACTION_PACKAGE_ADDED); //监听APP安装 + filter.addDataScheme("package"); + mainActivity.registerReceiver(receiver, filter); //注册广播 + +} \ No newline at end of file diff --git a/pages/water/hdWater/hdWater.vue b/pages/water/hdWater/hdWater.vue new file mode 100644 index 0000000..8709808 --- /dev/null +++ b/pages/water/hdWater/hdWater.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/pages/water/hdWater/table.vue b/pages/water/hdWater/table.vue new file mode 100644 index 0000000..0fc00c7 --- /dev/null +++ b/pages/water/hdWater/table.vue @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file diff --git a/pages/water/skWater/skWater.vue b/pages/water/skWater/skWater.vue new file mode 100644 index 0000000..74eaa5b --- /dev/null +++ b/pages/water/skWater/skWater.vue @@ -0,0 +1,155 @@ + + + + + diff --git a/pages/water/skWater/table.vue b/pages/water/skWater/table.vue new file mode 100644 index 0000000..6305936 --- /dev/null +++ b/pages/water/skWater/table.vue @@ -0,0 +1,135 @@ + + + + + \ No newline at end of file diff --git a/pages/water/water.vue b/pages/water/water.vue new file mode 100644 index 0000000..72e49ec --- /dev/null +++ b/pages/water/water.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/pages/wtcl/detail/index.vue b/pages/wtcl/detail/index.vue new file mode 100644 index 0000000..2652216 --- /dev/null +++ b/pages/wtcl/detail/index.vue @@ -0,0 +1,308 @@ + + + + + \ No newline at end of file diff --git a/pages/wtcl/index.vue b/pages/wtcl/index.vue new file mode 100644 index 0000000..14059cd --- /dev/null +++ b/pages/wtcl/index.vue @@ -0,0 +1,198 @@ + + + + + \ No newline at end of file diff --git a/pages/wxyh/formZdy/formBottom.vue b/pages/wxyh/formZdy/formBottom.vue new file mode 100644 index 0000000..7106c7f --- /dev/null +++ b/pages/wxyh/formZdy/formBottom.vue @@ -0,0 +1,174 @@ + + + \ No newline at end of file diff --git a/pages/wxyh/formZdy/formTop.vue b/pages/wxyh/formZdy/formTop.vue new file mode 100644 index 0000000..9c32fd5 --- /dev/null +++ b/pages/wxyh/formZdy/formTop.vue @@ -0,0 +1,34 @@ + + + \ No newline at end of file diff --git a/pages/wxyh/index.vue b/pages/wxyh/index.vue new file mode 100644 index 0000000..942246d --- /dev/null +++ b/pages/wxyh/index.vue @@ -0,0 +1,82 @@ + + + + + \ No newline at end of file diff --git a/pages/xcrw/detail/dbForm.vue b/pages/xcrw/detail/dbForm.vue new file mode 100644 index 0000000..421a94e --- /dev/null +++ b/pages/xcrw/detail/dbForm.vue @@ -0,0 +1,460 @@ + + + + + \ No newline at end of file diff --git a/pages/xcrw/detail/formZdy.vue b/pages/xcrw/detail/formZdy.vue new file mode 100644 index 0000000..1b49a2a --- /dev/null +++ b/pages/xcrw/detail/formZdy.vue @@ -0,0 +1,147 @@ + + + \ No newline at end of file diff --git a/pages/xcrw/detail/index.vue b/pages/xcrw/detail/index.vue new file mode 100644 index 0000000..c5992da --- /dev/null +++ b/pages/xcrw/detail/index.vue @@ -0,0 +1,264 @@ + + + + + \ No newline at end of file diff --git a/pages/xcrw/index.vue b/pages/xcrw/index.vue new file mode 100644 index 0000000..f3e0aa0 --- /dev/null +++ b/pages/xcrw/index.vue @@ -0,0 +1,204 @@ + + + + + \ No newline at end of file diff --git a/pages/xxsb/dsfrom.vue b/pages/xxsb/dsfrom.vue new file mode 100644 index 0000000..c9f69da --- /dev/null +++ b/pages/xxsb/dsfrom.vue @@ -0,0 +1,762 @@ + + + + + diff --git a/pages/xxsb/from.vue b/pages/xxsb/from.vue new file mode 100644 index 0000000..2d6d68a --- /dev/null +++ b/pages/xxsb/from.vue @@ -0,0 +1,682 @@ + + + + + diff --git a/pages/xxsb/fromSeverity.vue b/pages/xxsb/fromSeverity.vue new file mode 100644 index 0000000..fc62a53 --- /dev/null +++ b/pages/xxsb/fromSeverity.vue @@ -0,0 +1,656 @@ + + + + + diff --git a/pages/xxsb/index.vue b/pages/xxsb/index.vue new file mode 100644 index 0000000..77e6ed1 --- /dev/null +++ b/pages/xxsb/index.vue @@ -0,0 +1,91 @@ + + + diff --git a/pages/xxsb/map.vue b/pages/xxsb/map.vue new file mode 100644 index 0000000..7ca83e4 --- /dev/null +++ b/pages/xxsb/map.vue @@ -0,0 +1,124 @@ + + + diff --git a/pages/yj/detail/aiyj.vue b/pages/yj/detail/aiyj.vue new file mode 100644 index 0000000..ab638f3 --- /dev/null +++ b/pages/yj/detail/aiyj.vue @@ -0,0 +1,129 @@ + + + + + \ No newline at end of file diff --git a/pages/yj/detail/qxyj.vue b/pages/yj/detail/qxyj.vue new file mode 100644 index 0000000..e55d4d9 --- /dev/null +++ b/pages/yj/detail/qxyj.vue @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file diff --git a/pages/yj/detail/wyyj.vue b/pages/yj/detail/wyyj.vue new file mode 100644 index 0000000..b84badb --- /dev/null +++ b/pages/yj/detail/wyyj.vue @@ -0,0 +1,140 @@ + + + + + \ No newline at end of file diff --git a/pages/yj/index.vue b/pages/yj/index.vue new file mode 100644 index 0000000..26fa544 --- /dev/null +++ b/pages/yj/index.vue @@ -0,0 +1,152 @@ + + + + + \ No newline at end of file diff --git a/pages/ylzList/detail/barOptions.js b/pages/ylzList/detail/barOptions.js new file mode 100644 index 0000000..bb17ecf --- /dev/null +++ b/pages/ylzList/detail/barOptions.js @@ -0,0 +1,48 @@ +import echarts from 'echarts/lib/echarts'; +export default function DrpOption(data) { + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: { + x: 40, + y: 30, + x2: 30, + y2: 28, + // borderWidth: 0 + }, + legend: { + // 显示图例 + show: true, + + }, + xAxis: [ + { + type: 'category', + data: ["1h","2h"], + } + ], + yAxis: { + type: 'value', + axisLabel: { + // format: 'projectFormat' + formatter:'{value} mm' + } + }, + }; + let chartData = { + series: [{ + name: '降雨量', + type: 'bar', + barWidth: '60%', + data: [6, 8], + itemStyle: { + color:"#6395fa" + } + }, ] + }; + return { + eopts, + chartData + } +} \ No newline at end of file diff --git a/pages/ylzList/detail/index.vue b/pages/ylzList/detail/index.vue new file mode 100644 index 0000000..91a3041 --- /dev/null +++ b/pages/ylzList/detail/index.vue @@ -0,0 +1,274 @@ + + + + \ No newline at end of file diff --git a/pages/ylzList/detail/jcOptions.js b/pages/ylzList/detail/jcOptions.js new file mode 100644 index 0000000..571b918 --- /dev/null +++ b/pages/ylzList/detail/jcOptions.js @@ -0,0 +1,186 @@ +import echarts from 'echarts/lib/echarts'; +export default function DrpOption(echartData) { + + let totalDrp = 0; + const DRPLEVEL = [10, 20, 50, 100, 250]; + const maxVal = DRPLEVEL.find(o => o > totalDrp); + const xMaxVal = echartData ?.actual ? DRPLEVEL.find(o => { + let max = Math.max(...echartData ?.actual || []) + return o > max + }) : maxVal + // const xMaxVal = Math.ceil(Math.max(...echartData.actual)) + 2 + const yMaxVal = echartData ?.actual ? DRPLEVEL.find(o => { + let max = Math.max(...echartData ?.total) + return o > max + }) : maxVal + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: { + x: 40, + y: 30, + x2: 30, + y2: 28, + borderWidth: 0 + }, + legend: { + // 显示图例 + show: true, + // 图例的位置 + data: ['实测', '累计'] + }, + calculable: true, + xAxis: [{ + type: 'category', + data: echartData.time, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + format: "jcDataFormat" + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5, + } + }, + axisTick: { + show: false, + }, + }], + yAxis: [{ + type: 'value', + position: 'left', + name: "雨量mm", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: 0, + max: xMaxVal + }, + { + type: 'value', + position: 'right', + name: "累计mm", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: 0, + max: yMaxVal + } + ], + }; + let chartData = { + series: [{ + name: '实测', + type: 'bar', + barWidth: '60%', + data: echartData.actual, + itemStyle: { + normal: { + barBorderRadius: [3, 3, 0, 0], + color: new echarts.graphic.LinearGradient( + 0, 0, 0, 1, + [{ + offset: 0, + color: '#3876cd' + }, + { + offset: 0.5, + color: '#45b4e7' + }, + { + offset: 1, + color: '#54ffff' + } + ] + ), + }, + }, + label: { + show: false, + }, + markPoint: { + data: [{ + type: 'max', + name: '最大值', + symbol: 'circle', + symbolSize: 1, + symbolOffset: [0, -12] + }, ] + }, + }, + { + yAxisIndex: 1, + name: '累计', + type: 'line', + showSymbol: false, + label: { + show: false, + }, + data: echartData.total, + lineStyle: { + normal: { + width: 1, + } + }, + areaStyle: { + normal: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ + offset: 0, + color: 'rgba(3, 194, 236, 0.3)' + }, { + offset: 0.8, + color: 'rgba(3, 194, 236, 0)' + }], false), + shadowColor: 'rgba(0, 0, 0, 0.1)', + shadowBlur: 10 + } + }, + itemStyle: { + normal: { + color: '#03C2EC' + } + }, + } + ] + }; + return { + eopts, + chartData + } +} \ No newline at end of file diff --git a/pages/ylzList/detail/jcTable.vue b/pages/ylzList/detail/jcTable.vue new file mode 100644 index 0000000..6687c1b --- /dev/null +++ b/pages/ylzList/detail/jcTable.vue @@ -0,0 +1,89 @@ + + + + + \ No newline at end of file diff --git a/pages/ylzList/detail/tjsjTable.vue b/pages/ylzList/detail/tjsjTable.vue new file mode 100644 index 0000000..c9ff3d8 --- /dev/null +++ b/pages/ylzList/detail/tjsjTable.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/pages/ylzList/index.vue b/pages/ylzList/index.vue new file mode 100644 index 0000000..cd33830 --- /dev/null +++ b/pages/ylzList/index.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/pages/zhjs/index.vue b/pages/zhjs/index.vue new file mode 100644 index 0000000..0fd65f6 --- /dev/null +++ b/pages/zhjs/index.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/pages/zhjs/index1.vue b/pages/zhjs/index1.vue new file mode 100644 index 0000000..e80155d --- /dev/null +++ b/pages/zhjs/index1.vue @@ -0,0 +1,62 @@ + + + diff --git a/pages/zhjs/subnvue/index.nvue b/pages/zhjs/subnvue/index.nvue new file mode 100644 index 0000000..47572e8 --- /dev/null +++ b/pages/zhjs/subnvue/index.nvue @@ -0,0 +1,508 @@ + + + + \ No newline at end of file diff --git a/static/c1.png b/static/c1.png new file mode 100644 index 0000000..9d38fdc Binary files /dev/null and b/static/c1.png differ diff --git a/static/c2.png b/static/c2.png new file mode 100644 index 0000000..ce956d7 Binary files /dev/null and b/static/c2.png differ diff --git a/static/c3.png b/static/c3.png new file mode 100644 index 0000000..216202a Binary files /dev/null and b/static/c3.png differ diff --git a/static/c4.png b/static/c4.png new file mode 100644 index 0000000..fb8b477 Binary files /dev/null and b/static/c4.png differ diff --git a/static/c5.png b/static/c5.png new file mode 100644 index 0000000..310bfb1 Binary files /dev/null and b/static/c5.png differ diff --git a/static/c6.png b/static/c6.png new file mode 100644 index 0000000..c3c45d8 Binary files /dev/null and b/static/c6.png differ diff --git a/static/c7.png b/static/c7.png new file mode 100644 index 0000000..a1e7390 Binary files /dev/null and b/static/c7.png differ diff --git a/static/c8.png b/static/c8.png new file mode 100644 index 0000000..c32633c Binary files /dev/null and b/static/c8.png differ diff --git a/static/c9.png b/static/c9.png new file mode 100644 index 0000000..51bcf6a Binary files /dev/null and b/static/c9.png differ diff --git a/static/customicons.css b/static/customicons.css new file mode 100644 index 0000000..14ed5fa --- /dev/null +++ b/static/customicons.css @@ -0,0 +1,20 @@ +@font-face { + font-family: "customicons"; /* Project id 2878519 */ + src:url('/static/customicons.ttf') format('truetype'); +} + +.customicons { + font-family: "customicons" !important; +} + +.youxi:before { + content: "\e60e"; +} + +.wenjian:before { + content: "\e60f"; +} + +.zhuanfa:before { + content: "\e610"; +} diff --git a/static/customicons.ttf b/static/customicons.ttf new file mode 100644 index 0000000..a3c8ab9 Binary files /dev/null and b/static/customicons.ttf differ diff --git a/static/empty.png b/static/empty.png new file mode 100644 index 0000000..9acfed6 Binary files /dev/null and b/static/empty.png differ diff --git a/static/h5Player/h5player.min.js b/static/h5Player/h5player.min.js new file mode 100644 index 0000000..3675c9b --- /dev/null +++ b/static/h5Player/h5player.min.js @@ -0,0 +1,313 @@ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n,i=t();for(n in i)("object"==typeof exports?exports:e)[n]=i[n]}}(window,function(){return n=[function(e,t,ls){!function(us){var ds;//! moment.js +//! version : 2.29.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +us.exports=function(){"use strict";var t,r;function l(){return t.apply(null,arguments)}function e(e){t=e}function s(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function o(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function u(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function d(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;else{var t;for(t in e)if(u(e,t))return false;return true}}function a(e){return e===void 0}function h(e){return typeof e==="number"||Object.prototype.toString.call(e)==="[object Number]"}function c(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function i(e,t){var n=[],i;for(i=0;i>>0,i;for(i=0;i0)for(n=0;n=0;return(a?n?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+i}var O=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,I=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,W={},H={};function j(e,t,n,i){var r=i;if(typeof i==="string")r=function(){return this[i]()};if(e)H[e]=r;if(t)H[t[0]]=function(){return x(r.apply(this,arguments),t[1],t[2])};if(n)H[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),e)}}function F(e){if(e.match(/\[[\s\S]/))return e.replace(/^\[|\]$/g,"");return e.replace(/\\/g,"")}function B(i){var r=i.match(O),e,a;for(e=0,a=r.length;e=0&&I.test(e)){e=e.replace(I,i);I.lastIndex=0;n-=1}return e}var z={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function V(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];if(t||!n)return t;this._longDateFormat[e]=n.match(O).map(function(e){if(e==="MMMM"||e==="MM"||e==="DD"||e==="dddd")return e.slice(1);return e}).join("");return this._longDateFormat[e]}var G="Invalid date";function J(){return this._invalidDate}var q="%d",K=/\d{1,2}/;function X(e){return this._ordinal.replace("%d",e)}var Z={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function $(e,t,n,i){var r=this._relativeTime[n];return E(r)?r(e,t,n,i):r.replace(/%d/i,e)}function Q(e,t){var n=this._relativeTime[e>0?"future":"past"];return E(n)?n(t):n.replace(/%s/i,t)}var ee={};function te(e,t){var n=e.toLowerCase();ee[n]=ee[n+"s"]=ee[t]=e}function ne(e){return typeof e==="string"?ee[e]||ee[e.toLowerCase()]:undefined}function ie(e){var t={},n,i;for(i in e)if(u(e,i)){n=ne(i);if(n)t[n]=e[i]}return t}var re={};function ae(e,t){re[e]=t}function se(e){var t=[],n;for(n in e)if(u(e,n))t.push({unit:n,priority:re[n]});t.sort(function(e,t){return e.priority-t.priority});return t}function oe(e){return e%4===0&&e%100!==0||e%400===0}function ue(e){if(e<0)return Math.ceil(e)||0;else return Math.floor(e)}function de(e){var t=+e,n=0;if(t!==0&&isFinite(t))n=ue(t);return n}function le(t,n){return function(e){if(e!=null){ce(this,t,e);l.updateOffset(this,n);return this}else return he(this,t)}}function he(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function ce(e,t,n){if(e.isValid()&&!isNaN(n))if(t==="FullYear"&&oe(e.year())&&e.month()===1&&e.date()===29){n=de(n);e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),$e(n,e.month()))}else e._d["set"+(e._isUTC?"UTC":"")+t](n)}function _e(e){e=ne(e);if(E(this[e]))return this[e]();return this}function fe(e,t){if(typeof e==="object"){e=ie(e);var n=se(e),i;for(i=0;i68?1900:2e3)};var mt=le("FullYear",true);function pt(){return oe(this.year())}function yt(e,t,n,i,r,a,s){var o;if(e<100&&e>=0){o=new Date(e+400,t,n,i,r,a,s);if(isFinite(o.getFullYear()))o.setFullYear(e)}else o=new Date(e,t,n,i,r,a,s);return o}function vt(e){var t,n;if(e<100&&e>=0){n=Array.prototype.slice.call(arguments);n[0]=e+400;t=new Date(Date.UTC.apply(null,n));if(isFinite(t.getUTCFullYear()))t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function gt(e,t,n){var i=7+t-n,r=(7+vt(e,0,i).getUTCDay()-t)%7;return-r+i-1}function Mt(e,t,n,i,r){var a=(7+n-i)%7,s=gt(e,i,r),o=1+7*(t-1)+a+s,u,d;if(o<=0){u=e-1;d=ft(u)+o}else if(o>ft(e)){u=e+1;d=o-ft(e)}else{u=e;d=o}return{year:u,dayOfYear:d}}function Lt(e,t,n){var i=gt(e.year(),t,n),r=Math.floor((e.dayOfYear()-i-1)/7)+1,a,s;if(r<1){s=e.year()-1;a=r+St(s,t,n)}else if(r>St(e.year(),t,n)){a=r-St(e.year(),t,n);s=e.year()+1}else{s=e.year();a=r}return{week:a,year:s}}function St(e,t,n){var i=gt(e,t,n),r=gt(e+1,t,n);return(ft(e)-i+r)/7}function kt(e){return Lt(e,this._week.dow,this._week.doy).week}j("w",["ww",2],"wo","week"),j("W",["WW",2],"Wo","isoWeek"),te("week","w"),te("isoWeek","W"),ae("week",5),ae("isoWeek",5),Ae("w",Me),Ae("ww",Me,pe),Ae("W",Me),Ae("WW",Me,pe),je(["w","ww","W","WW"],function(e,t,n,i){t[i.substr(0,1)]=de(e)});var bt={dow:0,doy:6};function wt(){return this._week.dow}function Dt(){return this._week.doy}function Tt(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function Et(e){var t=Lt(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}function Yt(e,t){if(typeof e!=="string")return e;if(!isNaN(e))return parseInt(e,10);e=t.weekdaysParse(e);if(typeof e==="number")return e;return null}function Pt(e,t){if(typeof e==="string")return t.weekdaysParse(e)%7||7;return isNaN(e)?null:e}function Ct(e,t){return e.slice(t,7).concat(e.slice(0,t))}j("d",0,"do","day"),j("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),j("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),j("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),j("e",0,0,"weekday"),j("E",0,0,"isoWeekday"),te("day","d"),te("weekday","e"),te("isoWeekday","E"),ae("day",11),ae("weekday",11),ae("isoWeekday",11),Ae("d",Me),Ae("e",Me),Ae("E",Me),Ae("dd",function(e,t){return t.weekdaysMinRegex(e)}),Ae("ddd",function(e,t){return t.weekdaysShortRegex(e)}),Ae("dddd",function(e,t){return t.weekdaysRegex(e)}),je(["dd","ddd","dddd"],function(e,t,n,i){var r=n._locale.weekdaysParse(e,i,n._strict);if(r!=null)t.d=r;else m(n).invalidWeekday=e}),je(["d","e","E"],function(e,t,n,i){t[i]=de(e)});var Rt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),At="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ot=Ce,It=Ce,Wt=Ce;function Ht(e,t){var n=s(this._weekdays)?this._weekdays:this._weekdays[e&&e!==true&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===true?Ct(n,this._week.dow):e?n[e.day()]:n}function jt(e){return e===true?Ct(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Ft(e){return e===true?Ct(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Bt(e,t,n){var i,r,a,s=e.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(i=0;i<7;++i){a=f([2e3,1]).day(i);this._minWeekdaysParse[i]=this.weekdaysMin(a,"").toLocaleLowerCase();this._shortWeekdaysParse[i]=this.weekdaysShort(a,"").toLocaleLowerCase();this._weekdaysParse[i]=this.weekdays(a,"").toLocaleLowerCase()}}if(n)if(t==="dddd"){r=Xe.call(this._weekdaysParse,s);return r!==-1?r:null}else if(t==="ddd"){r=Xe.call(this._shortWeekdaysParse,s);return r!==-1?r:null}else{r=Xe.call(this._minWeekdaysParse,s);return r!==-1?r:null}else if(t==="dddd"){r=Xe.call(this._weekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._shortWeekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._minWeekdaysParse,s);return r!==-1?r:null}else if(t==="ddd"){r=Xe.call(this._shortWeekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._weekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._minWeekdaysParse,s);return r!==-1?r:null}else{r=Xe.call(this._minWeekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._weekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._shortWeekdaysParse,s);return r!==-1?r:null}}function Ut(e,t,n){var i,r,a;if(this._weekdaysParseExact)return Bt.call(this,e,t,n);if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[]}for(i=0;i<7;i++){r=f([2e3,1]).day(i);if(n&&!this._fullWeekdaysParse[i]){this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i");this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i");this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")}if(!this._weekdaysParse[i]){a="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,"");this._weekdaysParse[i]=new RegExp(a.replace(".",""),"i")}if(n&&t==="dddd"&&this._fullWeekdaysParse[i].test(e))return i;else if(n&&t==="ddd"&&this._shortWeekdaysParse[i].test(e))return i;else if(n&&t==="dd"&&this._minWeekdaysParse[i].test(e))return i;else if(!n&&this._weekdaysParse[i].test(e))return i}}function Nt(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();if(e!=null){e=Yt(e,this.localeData());return this.add(e-t,"d")}else return t}function zt(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function Vt(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=Pt(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function Gt(e){if(this._weekdaysParseExact){if(!u(this,"_weekdaysRegex"))Kt.call(this);if(e)return this._weekdaysStrictRegex;else return this._weekdaysRegex}else{if(!u(this,"_weekdaysRegex"))this._weekdaysRegex=Ot;return this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex}}function Jt(e){if(this._weekdaysParseExact){if(!u(this,"_weekdaysRegex"))Kt.call(this);if(e)return this._weekdaysShortStrictRegex;else return this._weekdaysShortRegex}else{if(!u(this,"_weekdaysShortRegex"))this._weekdaysShortRegex=It;return this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}function qt(e){if(this._weekdaysParseExact){if(!u(this,"_weekdaysRegex"))Kt.call(this);if(e)return this._weekdaysMinStrictRegex;else return this._weekdaysMinRegex}else{if(!u(this,"_weekdaysMinRegex"))this._weekdaysMinRegex=Wt;return this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function Kt(){function e(e,t){return t.length-e.length}var t=[],n=[],i=[],r=[],a,s,o,u,d;for(a=0;a<7;a++){s=f([2e3,1]).day(a);o=Ie(this.weekdaysMin(s,""));u=Ie(this.weekdaysShort(s,""));d=Ie(this.weekdays(s,""));t.push(o);n.push(u);i.push(d);r.push(o);r.push(u);r.push(d)}t.sort(e);n.sort(e);i.sort(e);r.sort(e);this._weekdaysRegex=new RegExp("^("+r.join("|")+")","i");this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i");this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i");this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function Xt(){return this.hours()%12||12}function Zt(){return this.hours()||24}function $t(e,t){j(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Qt(e,t){return t._meridiemParse}function en(e){return(e+"").toLowerCase().charAt(0)==="p"}j("H",["HH",2],0,"hour"),j("h",["hh",2],0,Xt),j("k",["kk",2],0,Zt),j("hmm",0,0,function(){return""+Xt.apply(this)+x(this.minutes(),2)}),j("hmmss",0,0,function(){return""+Xt.apply(this)+x(this.minutes(),2)+x(this.seconds(),2)}),j("Hmm",0,0,function(){return""+this.hours()+x(this.minutes(),2)}),j("Hmmss",0,0,function(){return""+this.hours()+x(this.minutes(),2)+x(this.seconds(),2)}),$t("a",true),$t("A",false),te("hour","h"),ae("hour",13),Ae("a",Qt),Ae("A",Qt),Ae("H",Me),Ae("h",Me),Ae("k",Me),Ae("HH",Me,pe),Ae("hh",Me,pe),Ae("kk",Me,pe),Ae("hmm",Le),Ae("hmmss",Se),Ae("Hmm",Le),Ae("Hmmss",Se),He(["H","HH"],ze),He(["k","kk"],function(e,t,n){var i=de(e);t[ze]=i===24?0:i}),He(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e);n._meridiem=e}),He(["h","hh"],function(e,t,n){t[ze]=de(e);m(n).bigHour=true}),He("hmm",function(e,t,n){var i=e.length-2;t[ze]=de(e.substr(0,i));t[Ve]=de(e.substr(i));m(n).bigHour=true}),He("hmmss",function(e,t,n){var i=e.length-4,r=e.length-2;t[ze]=de(e.substr(0,i));t[Ve]=de(e.substr(i,2));t[Ge]=de(e.substr(r));m(n).bigHour=true}),He("Hmm",function(e,t,n){var i=e.length-2;t[ze]=de(e.substr(0,i));t[Ve]=de(e.substr(i))}),He("Hmmss",function(e,t,n){var i=e.length-4,r=e.length-2;t[ze]=de(e.substr(0,i));t[Ve]=de(e.substr(i,2));t[Ge]=de(e.substr(r))});var tn,nn=le("Hours",true);function rn(e,t,n){if(e>11)return n?"pm":"PM";else return n?"am":"AM"}var an={calendar:R,longDateFormat:z,invalidDate:G,ordinal:q,dayOfMonthOrdinalParse:K,relativeTime:Z,months:Qe,monthsShort:et,week:bt,weekdays:Rt,weekdaysMin:xt,weekdaysShort:At,meridiemParse:/[ap]\.?m?\.?/i},sn={},on={},un;function dn(e,t){var n,i=Math.min(e.length,t.length);for(n=0;n0){r=cn(a.slice(0,n).join("-"));if(r)return r;if(i&&i.length>=n&&dn(a,i)>=n-1)break;n--}t++}return un}function cn(t){var e=null,n;if(sn[t]===undefined&&typeof us!=="undefined"&&us&&us.exports)try{e=un._abbr;n=ds;ls(285)("./"+t);_n(e)}catch(e){sn[t]=null}return sn[t]}function _n(e,t){var n;if(e){if(a(t))n=pn(e);else n=fn(e,t);if(n)un=n;else if(typeof console!=="undefined"&&console.warn)console.warn("Locale "+e+" not found. Did you forget to load it?")}return un._abbr}function fn(e,t){if(t!==null){var n,i=an;t.abbr=e;if(sn[e]!=null){T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change "+"an existing locale. moment.defineLocale(localeName, "+"config) should only be used for creating a new locale "+"See http://momentjs.com/guides/#/warnings/define-locale/ for more info.");i=sn[e]._config}else if(t.parentLocale!=null)if(sn[t.parentLocale]!=null)i=sn[t.parentLocale]._config;else{n=cn(t.parentLocale);if(n!=null)i=n._config;else{if(!on[t.parentLocale])on[t.parentLocale]=[];on[t.parentLocale].push({name:e,config:t});return null}}sn[e]=new C(P(i,t));if(on[e])on[e].forEach(function(e){fn(e.name,e.config)});_n(e);return sn[e]}else{delete sn[e];return null}}function mn(e,t){if(t!=null){var n,i,r=an;if(sn[e]!=null&&sn[e].parentLocale!=null)sn[e].set(P(sn[e]._config,t));else{i=cn(e);if(i!=null)r=i._config;t=P(r,t);if(i==null)t.abbr=e;n=new C(t);n.parentLocale=sn[e];sn[e]=n}_n(e)}else if(sn[e]!=null)if(sn[e].parentLocale!=null){sn[e]=sn[e].parentLocale;if(e===_n())_n(e)}else if(sn[e]!=null)delete sn[e];return sn[e]}function pn(e){var t;if(e&&e._locale&&e._locale._abbr)e=e._locale._abbr;if(!e)return un;if(!s(e)){t=cn(e);if(t)return t;e=[e]}return hn(e)}function yn(){return D(sn)}function vn(e){var t,n=e._a;if(n&&m(e).overflow===-2){t=n[Ue]<0||n[Ue]>11?Ue:n[Ne]<1||n[Ne]>$e(n[Be],n[Ue])?Ne:n[ze]<0||n[ze]>24||n[ze]===24&&(n[Ve]!==0||n[Ge]!==0||n[Je]!==0)?ze:n[Ve]<0||n[Ve]>59?Ve:n[Ge]<0||n[Ge]>59?Ge:n[Je]<0||n[Je]>999?Je:-1;if(m(e)._overflowDayOfYear&&(tNe))t=Ne;if(m(e)._overflowWeeks&&t===-1)t=qe;if(m(e)._overflowWeekday&&t===-1)t=Ke;m(e).overflow=t}return e}var gn=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Mn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ln=/Z|[+-]\d\d(?::?\d\d)?/,Sn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,false],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,false],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,false],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,false],["YYYY",/\d{4}/,false]],kn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],bn=/^\/?Date\((-?\d+)/i,wn=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Dn={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Tn(e){var t,n,i=e._i,r=gn.exec(i)||Mn.exec(i),a,s,o,u;if(r){m(e).iso=true;for(t=0,n=Sn.length;tft(s)||e._dayOfYear===0)m(e)._overflowDayOfYear=true;n=vt(s,0,e._dayOfYear);e._a[Ue]=n.getUTCMonth();e._a[Ne]=n.getUTCDate()}for(t=0;t<3&&e._a[t]==null;++t)e._a[t]=i[t]=r[t];for(;t<7;t++)e._a[t]=i[t]=e._a[t]==null?t===2?1:0:e._a[t];if(e._a[ze]===24&&e._a[Ve]===0&&e._a[Ge]===0&&e._a[Je]===0){e._nextDay=true;e._a[ze]=0}e._d=(e._useUTC?vt:yt).apply(null,i);a=e._useUTC?e._d.getUTCDay():e._d.getDay();if(e._tzm!=null)e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm);if(e._nextDay)e._a[ze]=24;if(e._w&&typeof e._w.d!=="undefined"&&e._w.d!==a)m(e).weekdayMismatch=true}function Hn(e){var t,n,i,r,a,s,o,u,d;t=e._w;if(t.GG!=null||t.W!=null||t.E!=null){a=1;s=4;n=On(t.GG,e._a[Be],Lt(Jn(),1,4).year);i=On(t.W,1);r=On(t.E,1);if(r<1||r>7)u=true}else{a=e._locale._week.dow;s=e._locale._week.doy;d=Lt(Jn(),a,s);n=On(t.gg,e._a[Be],d.year);i=On(t.w,d.week);if(t.d!=null){r=t.d;if(r<0||r>6)u=true}else if(t.e!=null){r=t.e+a;if(t.e<0||t.e>6)u=true}else r=a}if(i<1||i>St(n,a,s))m(e)._overflowWeeks=true;else if(u!=null)m(e)._overflowWeekday=true;else{o=Mt(n,i,r,a,s);e._a[Be]=o.year;e._dayOfYear=o.dayOfYear}}function jn(e){if(e._f===l.ISO_8601){Tn(e);return}if(e._f===l.RFC_2822){An(e);return}e._a=[];m(e).empty=true;var t=""+e._i,n,i,r,a,s,o=t.length,u=0,d;r=N(e._f,e._locale).match(O)||[];for(n=0;n0)m(e).unusedInput.push(s);t=t.slice(t.indexOf(i)+i.length);u+=i.length}if(H[a]){if(i)m(e).empty=false;else m(e).unusedTokens.push(a);Fe(a,i,e)}else if(e._strict&&!i)m(e).unusedTokens.push(a)}m(e).charsLeftOver=o-u;if(t.length>0)m(e).unusedInput.push(t);if(e._a[ze]<=12&&m(e).bigHour===true&&e._a[ze]>0)m(e).bigHour=undefined;m(e).parsedDateParts=e._a.slice(0);m(e).meridiem=e._meridiem;e._a[ze]=Fn(e._locale,e._a[ze],e._meridiem);d=m(e).era;if(d!==null)e._a[Be]=e._locale.erasConvertYear(d,e._a[Be]);Wn(e);vn(e)}function Fn(e,t,n){var i;if(n==null)return t;if(e.meridiemHour!=null)return e.meridiemHour(t,n);else if(e.isPM!=null){i=e.isPM(n);if(i&&t<12)t+=12;if(!i&&t===12)t=0;return t}else return t}function Bn(e){var t,n,i,r,a,s,o=false;if(e._f.length===0){m(e).invalidFormat=true;e._d=new Date(NaN);return}for(r=0;rthis?this:e;else return y()});function Xn(e,t){var n,i;if(t.length===1&&s(t[0]))t=t[0];if(!t.length)return Jn();n=t[0];for(i=1;ithis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Mi(){if(!a(this._isDSTShifted))return this._isDSTShifted;var e={},t;M(e,this);e=zn(e);if(e._a){t=e._isUTC?f(e._a):Jn(e._a);this._isDSTShifted=this.isValid()&&oi(e._a,t.toArray())>0}else this._isDSTShifted=false;return this._isDSTShifted}function Li(){return this.isValid()?!this._isUTC:false}function Si(){return this.isValid()?this._isUTC:false}function ki(){return this.isValid()?this._isUTC&&this._offset===0:false}l.updateOffset=function(){};var bi=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,wi=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Di(e,t){var n=e,i=null,r,a,s;if(ai(e))n={ms:e._milliseconds,d:e._days,M:e._months};else if(h(e)||!isNaN(+e)){n={};if(t)n[t]=+e;else n.milliseconds=+e}else if(i=bi.exec(e)){r=i[1]==="-"?-1:1;n={y:0,d:de(i[Ne])*r,h:de(i[ze])*r,m:de(i[Ve])*r,s:de(i[Ge])*r,ms:de(si(i[Je]*1e3))*r}}else if(i=wi.exec(e)){r=i[1]==="-"?-1:1;n={y:Ti(i[2],r),M:Ti(i[3],r),w:Ti(i[4],r),d:Ti(i[5],r),h:Ti(i[6],r),m:Ti(i[7],r),s:Ti(i[8],r)}}else if(n==null)n={};else if(typeof n==="object"&&("from"in n||"to"in n)){s=Yi(Jn(n.from),Jn(n.to));n={};n.ms=s.milliseconds;n.M=s.months}a=new ri(n);if(ai(e)&&u(e,"_locale"))a._locale=e._locale;if(ai(e)&&u(e,"_isValid"))a._isValid=e._isValid;return a}function Ti(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Ei(e,t){var n={};n.months=t.month()-e.month()+(t.year()-e.year())*12;if(e.clone().add(n.months,"M").isAfter(t))--n.months;n.milliseconds=+t-+e.clone().add(n.months,"M");return n}function Yi(e,t){var n;if(!(e.isValid()&&t.isValid()))return{milliseconds:0,months:0};t=hi(t,e);if(e.isBefore(t))n=Ei(e,t);else{n=Ei(t,e);n.milliseconds=-n.milliseconds;n.months=-n.months}return n}function Pi(r,a){return function(e,t){var n,i;if(t!==null&&!isNaN(+t)){T(a,"moment()."+a+"(period, number) is deprecated. Please use moment()."+a+"(number, period). "+"See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.");i=e;e=t;t=i}n=Di(e,t);Ci(this,n,r);return this}}function Ci(e,t,n,i){var r=t._milliseconds,a=si(t._days),s=si(t._months);if(!e.isValid())return;i=i==null?true:i;if(s)ut(e,he(e,"Month")+s*n);if(a)ce(e,"Date",he(e,"Date")+a*n);if(r)e._d.setTime(e._d.valueOf()+r*n);if(i)l.updateOffset(e,a||s)}Di.fn=ri.prototype,Di.invalid=ii;var Ri=Pi(1,"add"),Ai=Pi(-1,"subtract");function xi(e){return typeof e==="string"||e instanceof String}function Oi(e){return S(e)||c(e)||xi(e)||h(e)||Wi(e)||Ii(e)||e===null||e===undefined}function Ii(e){var t=o(e)&&!d(e),n=false,i=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],r,a;for(r=0;rn.valueOf();else return n.valueOf()9999)return U(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ");if(E(Date.prototype.toISOString))if(t)return this.toDate().toISOString();else return new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",U(n,"Z"));return U(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function $i(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,i,r,a;if(!this.isLocal()){e=this.utcOffset()===0?"moment.utc":"moment.parseZone";t="Z"}n="["+e+'("]';i=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";r="-MM-DD[T]HH:mm:ss.SSS";a=t+'[")]';return this.format(n+i+r+a)}function Qi(e){if(!e)e=this.isUtc()?l.defaultFormatUtc:l.defaultFormat;var t=U(this,e);return this.localeData().postformat(t)}function er(e,t){if(this.isValid()&&(S(e)&&e.isValid()||Jn(e).isValid()))return Di({to:this,from:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function tr(e){return this.from(Jn(),e)}function nr(e,t){if(this.isValid()&&(S(e)&&e.isValid()||Jn(e).isValid()))return Di({from:this,to:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function ir(e){return this.to(Jn(),e)}function rr(e){var t;if(e===undefined)return this._locale._abbr;else{t=pn(e);if(t!=null)this._locale=t;return this}}l.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",l.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ar=b("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){if(e===undefined)return this.localeData();else return this.locale(e)});function sr(){return this._locale}var or=1e3,ur=60*or,dr=60*ur,lr=(365*400+97)*24*dr;function hr(e,t){return(e%t+t)%t}function cr(e,t,n){if(e<100&&e>=0)return new Date(e+400,t,n)-lr;else return new Date(e,t,n).valueOf()}function _r(e,t,n){if(e<100&&e>=0)return Date.UTC(e+400,t,n)-lr;else return Date.UTC(e,t,n)}function fr(e){var t,n;e=ne(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?_r:cr;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf();t-=hr(t+(this._isUTC?0:this.utcOffset()*ur),dr);break;case"minute":t=this._d.valueOf();t-=hr(t,ur);break;case"second":t=this._d.valueOf();t-=hr(t,or);break}this._d.setTime(t);l.updateOffset(this,true);return this}function mr(e){var t,n;e=ne(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?_r:cr;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf();t+=dr-hr(t+(this._isUTC?0:this.utcOffset()*ur),dr)-1;break;case"minute":t=this._d.valueOf();t+=ur-hr(t,ur)-1;break;case"second":t=this._d.valueOf();t+=or-hr(t,or)-1;break}this._d.setTime(t);l.updateOffset(this,true);return this}function pr(){return this._d.valueOf()-(this._offset||0)*6e4}function yr(){return Math.floor(this.valueOf()/1e3)}function vr(){return new Date(this.valueOf())}function gr(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Mr(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Lr(){return this.isValid()?this.toISOString():null}function Sr(){return p(this)}function kr(){return _({},m(this))}function br(){return m(this).overflow}function wr(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Dr(e,t){var n,i,r,a=this._eras||pn("en")._eras;for(n=0,i=a.length;n=0)return a[i]}}function Er(e,t){var n=e.since<=e.until?+1:-1;if(t===undefined)return l(e.since).year();else return l(e.since).year()+(t-e.offset)*n}function Yr(){var e,t,n,i=this.localeData().eras();for(e=0,t=i.length;ea)t=a;return Kr.call(this,e,t,n,i,r)}}function Kr(e,t,n,i,r){var a=Mt(e,t,n,i,r),s=vt(a.year,0,a.dayOfYear);this.year(s.getUTCFullYear());this.month(s.getUTCMonth());this.date(s.getUTCDate());return this}function Xr(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}j("N",0,0,"eraAbbr"),j("NN",0,0,"eraAbbr"),j("NNN",0,0,"eraAbbr"),j("NNNN",0,0,"eraName"),j("NNNNN",0,0,"eraNarrow"),j("y",["y",1],"yo","eraYear"),j("y",["yy",2],0,"eraYear"),j("y",["yyy",3],0,"eraYear"),j("y",["yyyy",4],0,"eraYear"),Ae("N",Ir),Ae("NN",Ir),Ae("NNN",Ir),Ae("NNNN",Wr),Ae("NNNNN",Hr),He(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,i){var r=n._locale.erasParse(e,i,n._strict);if(r)m(n).era=r;else m(n).invalidEra=e}),Ae("y",De),Ae("yy",De),Ae("yyy",De),Ae("yyyy",De),Ae("yo",jr),He(["y","yy","yyy","yyyy"],Be),He(["yo"],function(e,t,n,i){var r;if(n._locale._eraYearOrdinalRegex)r=e.match(n._locale._eraYearOrdinalRegex);if(n._locale.eraYearOrdinalParse)t[Be]=n._locale.eraYearOrdinalParse(e,r);else t[Be]=parseInt(e,10)}),j(0,["gg",2],0,function(){return this.weekYear()%100}),j(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Br("gggg","weekYear"),Br("ggggg","weekYear"),Br("GGGG","isoWeekYear"),Br("GGGGG","isoWeekYear"),te("weekYear","gg"),te("isoWeekYear","GG"),ae("weekYear",1),ae("isoWeekYear",1),Ae("G",Te),Ae("g",Te),Ae("GG",Me,pe),Ae("gg",Me,pe),Ae("GGGG",be,ve),Ae("gggg",be,ve),Ae("GGGGG",we,ge),Ae("ggggg",we,ge),je(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,i){t[i.substr(0,2)]=de(e)}),je(["gg","GG"],function(e,t,n,i){t[i]=l.parseTwoDigitYear(e)}),j("Q",0,"Qo","quarter"),te("quarter","Q"),ae("quarter",7),Ae("Q",me),He("Q",function(e,t){t[Ue]=(de(e)-1)*3}),j("D",["DD",2],"Do","date"),te("date","D"),ae("date",9),Ae("D",Me),Ae("DD",Me,pe),Ae("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),He(["D","DD"],Ne),He("Do",function(e,t){t[Ne]=de(e.match(Me)[0])});var Zr=le("Date",true);function $r(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}j("DDD",["DDDD",3],"DDDo","dayOfYear"),te("dayOfYear","DDD"),ae("dayOfYear",4),Ae("DDD",ke),Ae("DDDD",ye),He(["DDD","DDDD"],function(e,t,n){n._dayOfYear=de(e)}),j("m",["mm",2],0,"minute"),te("minute","m"),ae("minute",14),Ae("m",Me),Ae("mm",Me,pe),He(["m","mm"],Ve);var Qr=le("Minutes",false);j("s",["ss",2],0,"second"),te("second","s"),ae("second",15),Ae("s",Me),Ae("ss",Me,pe),He(["s","ss"],Ge);var ea=le("Seconds",false),ta,na;for(j("S",0,0,function(){return~~(this.millisecond()/100)}),j(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),j(0,["SSS",3],0,"millisecond"),j(0,["SSSS",4],0,function(){return this.millisecond()*10}),j(0,["SSSSS",5],0,function(){return this.millisecond()*100}),j(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),j(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),j(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),j(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),te("millisecond","ms"),ae("millisecond",16),Ae("S",ke,me),Ae("SS",ke,pe),Ae("SSS",ke,ye),ta="SSSS";ta.length<=9;ta+="S")Ae(ta,De);function ia(e,t){t[Je]=de(("0."+e)*1e3)}for(ta="S";ta.length<=9;ta+="S")He(ta,ia);function ra(){return this._isUTC?"UTC":""}function aa(){return this._isUTC?"Coordinated Universal Time":""}na=le("Milliseconds",false),j("z",0,0,"zoneAbbr"),j("zz",0,0,"zoneName");var sa=L.prototype;if(sa.add=Ri,sa.calendar=Fi,sa.clone=Bi,sa.diff=qi,sa.endOf=mr,sa.format=Qi,sa.from=er,sa.fromNow=tr,sa.to=nr,sa.toNow=ir,sa.get=_e,sa.invalidAt=br,sa.isAfter=Ui,sa.isBefore=Ni,sa.isBetween=zi,sa.isSame=Vi,sa.isSameOrAfter=Gi,sa.isSameOrBefore=Ji,sa.isValid=Sr,sa.lang=ar,sa.locale=rr,sa.localeData=sr,sa.max=Kn,sa.min=qn,sa.parsingFlags=kr,sa.set=fe,sa.startOf=fr,sa.subtract=Ai,sa.toArray=gr,sa.toObject=Mr,sa.toDate=vr,sa.toISOString=Zi,sa.inspect=$i,typeof Symbol!=="undefined"&&Symbol.for!=null)sa[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"};function oa(e){return Jn(e*1e3)}function ua(){return Jn.apply(null,arguments).parseZone()}function da(e){return e}sa.toJSON=Lr,sa.toString=Xi,sa.unix=yr,sa.valueOf=pr,sa.creationData=wr,sa.eraName=Yr,sa.eraNarrow=Pr,sa.eraAbbr=Cr,sa.eraYear=Rr,sa.year=mt,sa.isLeapYear=pt,sa.weekYear=Ur,sa.isoWeekYear=Nr,sa.quarter=sa.quarters=Xr,sa.month=dt,sa.daysInMonth=lt,sa.week=sa.weeks=Tt,sa.isoWeek=sa.isoWeeks=Et,sa.weeksInYear=Gr,sa.weeksInWeekYear=Jr,sa.isoWeeksInYear=zr,sa.isoWeeksInISOWeekYear=Vr,sa.date=Zr,sa.day=sa.days=Nt,sa.weekday=zt,sa.isoWeekday=Vt,sa.dayOfYear=$r,sa.hour=sa.hours=nn,sa.minute=sa.minutes=Qr,sa.second=sa.seconds=ea,sa.millisecond=sa.milliseconds=na,sa.utcOffset=_i,sa.utc=mi,sa.local=pi,sa.parseZone=yi,sa.hasAlignedHourOffset=vi,sa.isDST=gi,sa.isLocal=Li,sa.isUtcOffset=Si,sa.isUtc=ki,sa.isUTC=ki,sa.zoneAbbr=ra,sa.zoneName=aa,sa.dates=b("dates accessor is deprecated. Use date instead.",Zr),sa.months=b("months accessor is deprecated. Use month instead",dt),sa.years=b("years accessor is deprecated. Use year instead",mt),sa.zone=b("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",fi),sa.isDSTShifted=b("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Mi);var la=C.prototype;function ha(e,t,n,i){var r=pn(),a=f().set(i,t);return r[n](a,e)}function ca(e,t,n){if(h(e)){t=e;e=undefined}e=e||"";if(t!=null)return ha(e,t,n,"month");var i,r=[];for(i=0;i<12;i++)r[i]=ha(e,i,n,"month");return r}function _a(e,t,n,i){if(typeof e==="boolean"){if(h(t)){n=t;t=undefined}t=t||""}else{t=e;n=t;e=false;if(h(t)){n=t;t=undefined}t=t||""}var r=pn(),a=e?r._week.dow:0,s,o=[];if(n!=null)return ha(t,(n+a)%7,i,"day");for(s=0;s<7;s++)o[s]=ha(t,(s+a)%7,i,"day");return o}function fa(e,t){return ca(e,t,"months")}function ma(e,t){return ca(e,t,"monthsShort")}function pa(e,t,n){return _a(e,t,n,"weekdays")}function ya(e,t,n){return _a(e,t,n,"weekdaysShort")}function va(e,t,n){return _a(e,t,n,"weekdaysMin")}la.calendar=A,la.longDateFormat=V,la.invalidDate=J,la.ordinal=X,la.preparse=da,la.postformat=da,la.relativeTime=$,la.pastFuture=Q,la.set=Y,la.eras=Dr,la.erasParse=Tr,la.erasConvertYear=Er,la.erasAbbrRegex=xr,la.erasNameRegex=Ar,la.erasNarrowRegex=Or,la.months=rt,la.monthsShort=at,la.monthsParse=ot,la.monthsRegex=ct,la.monthsShortRegex=ht,la.week=kt,la.firstDayOfYear=Dt,la.firstDayOfWeek=wt,la.weekdays=Ht,la.weekdaysMin=Ft,la.weekdaysShort=jt,la.weekdaysParse=Ut,la.weekdaysRegex=Gt,la.weekdaysShortRegex=Jt,la.weekdaysMinRegex=qt,la.isPM=en,la.meridiem=rn,_n("en",{eras:[{since:"0001-01-01",until:+Infinity,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-Infinity,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=de(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}}),l.lang=b("moment.lang is deprecated. Use moment.locale instead.",_n),l.langData=b("moment.langData is deprecated. Use moment.localeData instead.",pn);var ga=Math.abs;function Ma(){var e=this._data;this._milliseconds=ga(this._milliseconds);this._days=ga(this._days);this._months=ga(this._months);e.milliseconds=ga(e.milliseconds);e.seconds=ga(e.seconds);e.minutes=ga(e.minutes);e.hours=ga(e.hours);e.months=ga(e.months);e.years=ga(e.years);return this}function La(e,t,n,i){var r=Di(t,n);e._milliseconds+=i*r._milliseconds;e._days+=i*r._days;e._months+=i*r._months;return e._bubble()}function Sa(e,t){return La(this,e,t,1)}function ka(e,t){return La(this,e,t,-1)}function ba(e){if(e<0)return Math.floor(e);else return Math.ceil(e)}function wa(){var e=this._milliseconds,t=this._days,n=this._months,i=this._data,r,a,s,o,u;if(!(e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0)){e+=ba(Ta(n)+t)*864e5;t=0;n=0}i.milliseconds=e%1e3;r=ue(e/1e3);i.seconds=r%60;a=ue(r/60);i.minutes=a%60;s=ue(a/60);i.hours=s%24;t+=ue(s/24);u=ue(Da(t));n+=u;t-=ba(Ta(u));o=ue(n/12);n%=12;i.days=t;i.months=n;i.years=o;return this}function Da(e){return e*4800/146097}function Ta(e){return e*146097/4800}function Ea(e){if(!this.isValid())return NaN;var t,n,i=this._milliseconds;e=ne(e);if(e==="month"||e==="quarter"||e==="year"){t=this._days+i/864e5;n=this._months+Da(t);switch(e){case"month":return n;case"quarter":return n/3;case"year":return n/12}}else{t=this._days+Math.round(Ta(this._months));switch(e){case"week":return t/7+i/6048e5;case"day":return t+i/864e5;case"hour":return t*24+i/36e5;case"minute":return t*1440+i/6e4;case"second":return t*86400+i/1e3;case"millisecond":return Math.floor(t*864e5)+i;default:throw new Error("Unknown unit "+e)}}}function Ya(){if(!this.isValid())return NaN;return this._milliseconds+this._days*864e5+this._months%12*2592e6+de(this._months/12)*31536e6}function Pa(e){return function(){return this.as(e)}}var Ca=Pa("ms"),Ra=Pa("s"),Aa=Pa("m"),xa=Pa("h"),Oa=Pa("d"),Ia=Pa("w"),Wa=Pa("M"),Ha=Pa("Q"),ja=Pa("y");function Fa(){return Di(this)}function Ba(e){e=ne(e);return this.isValid()?this[e+"s"]():NaN}function Ua(e){return function(){return this.isValid()?this._data[e]:NaN}}var Na=Ua("milliseconds"),za=Ua("seconds"),Va=Ua("minutes"),Ga=Ua("hours"),Ja=Ua("days"),qa=Ua("months"),Ka=Ua("years");function Xa(){return ue(this.days()/7)}var Za=Math.round,$a={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Qa(e,t,n,i,r){return r.relativeTime(t||1,!!n,e,i)}function es(e,t,n,i){var r=Di(e).abs(),a=Za(r.as("s")),s=Za(r.as("m")),o=Za(r.as("h")),u=Za(r.as("d")),d=Za(r.as("M")),l=Za(r.as("w")),h=Za(r.as("y")),c=a<=n.ss&&["s",a]||a0;c[4]=i;return Qa.apply(null,c)}function ts(e){if(e===undefined)return Za;if(typeof e==="function"){Za=e;return true}return false}function ns(e,t){if($a[e]===undefined)return false;if(t===undefined)return $a[e];$a[e]=t;if(e==="s")$a.ss=t-1;return true}function is(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=false,i=$a,r,a;if(typeof e==="object"){t=e;e=false}if(typeof e==="boolean")n=e;if(typeof t==="object"){i=Object.assign({},$a,t);if(t.s!=null&&t.ss==null)i.ss=t.s-1}r=this.localeData();a=es(this,!n,i,r);if(n)a=r.pastFuture(+this,a);return r.postformat(a)}var rs=Math.abs;function as(e){return(e>0)-(e<0)||+e}function ss(){if(!this.isValid())return this.localeData().invalidDate();var e=rs(this._milliseconds)/1e3,t=rs(this._days),n=rs(this._months),i,r,a,s,o=this.asSeconds(),u,d,l,h;if(!o)return"P0D";i=ue(e/60);r=ue(i/60);e%=60;i%=60;a=ue(n/12);n%=12;s=e?e.toFixed(3).replace(/\.?0+$/,""):"";u=o<0?"-":"";d=as(this._months)!==as(o)?"-":"";l=as(this._days)!==as(o)?"-":"";h=as(this._milliseconds)!==as(o)?"-":"";return u+"P"+(a?d+a+"Y":"")+(n?d+n+"M":"")+(t?l+t+"D":"")+(r||i||e?"T":"")+(r?h+r+"H":"")+(i?h+i+"M":"")+(e?h+s+"S":"")}var os=ri.prototype;return os.isValid=ni,os.abs=Ma,os.add=Sa,os.subtract=ka,os.as=Ea,os.asMilliseconds=Ca,os.asSeconds=Ra,os.asMinutes=Aa,os.asHours=xa,os.asDays=Oa,os.asWeeks=Ia,os.asMonths=Wa,os.asQuarters=Ha,os.asYears=ja,os.valueOf=Ya,os._bubble=wa,os.clone=Fa,os.get=Ba,os.milliseconds=Na,os.seconds=za,os.minutes=Va,os.hours=Ga,os.days=Ja,os.weeks=Xa,os.months=qa,os.years=Ka,os.humanize=is,os.toISOString=ss,os.toString=ss,os.toJSON=ss,os.locale=rr,os.localeData=sr,os.toIsoString=b("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ss),os.lang=ar,j("X",0,0,"unix"),j("x",0,0,"valueOf"),Ae("x",Te),Ae("X",Pe),He("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)}),He("x",function(e,t,n){n._d=new Date(de(e))}), +//! moment.js +l.version="2.29.1",e(Jn),l.fn=sa,l.min=Zn,l.max=$n,l.now=Qn,l.utc=f,l.unix=oa,l.months=fa,l.isDate=c,l.locale=_n,l.invalid=y,l.duration=Di,l.isMoment=S,l.weekdays=pa,l.parseZone=ua,l.localeData=pn,l.isDuration=ai,l.monthsShort=ma,l.weekdaysMin=va,l.defineLocale=fn,l.updateLocale=mn,l.locales=yn,l.weekdaysShort=ya,l.normalizeUnits=ne,l.relativeTimeRounding=ts,l.relativeTimeThreshold=ns,l.calendarFormat=ji,l.prototype=sa,l.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},l}()}.call(this,ls(284)(e))},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";t.__esModule=!0;var i,r=n(92),a=(i=r)&&i.__esModule?i:{default:i};function s(e,t){for(var n=0;n ",i=1;i ";s.ENABLE_CALLBACK&&s.emitter.emit("log","error",n),s.ENABLE_ERROR&&(console.error?console.error(n):console.warn?console.warn(n):console.log(n))}},{key:"i",value:function(e){e&&!s.FORCE_GLOBAL_TAG||(e=s.GLOBAL_TAG);for(var t=[].concat(Array.prototype.slice.call(arguments)),n="["+e+"] > ",i=1;i ";s.ENABLE_CALLBACK&&s.emitter.emit("log","info",n),s.ENABLE_INFO&&(console.info?console.info(n):console.log(n))}},{key:"w",value:function(e){e&&!s.FORCE_GLOBAL_TAG||(e=s.GLOBAL_TAG);for(var t=[].concat(Array.prototype.slice.call(arguments)),n="["+e+"] > ",i=1;i ";s.ENABLE_CALLBACK&&s.emitter.emit("log","warn",n),s.ENABLE_WARN&&(console.warn?console.warn(n):console.log(n))}},{key:"d",value:function(e){e&&!s.FORCE_GLOBAL_TAG||(e=s.GLOBAL_TAG);for(var t=[].concat(Array.prototype.slice.call(arguments)),n="["+e+"] > ",i=1;i ";s.ENABLE_CALLBACK&&s.emitter.emit("log","debug",n),s.ENABLE_DEBUG&&(console.debug?console.debug(n):console.log(n))}},{key:"v",value:function(e){e&&!s.FORCE_GLOBAL_TAG||(e=s.GLOBAL_TAG);for(var t=[].concat(Array.prototype.slice.call(arguments)),n="["+e+"] > ",i=1;i ";s.ENABLE_CALLBACK&&s.emitter.emit("log","verbose",n),s.ENABLE_VERBOSE&&console.log(n)}}]),r=s;function s(){(0,i.default)(this,s)}r.GLOBAL_TAG="flv.js",r.FORCE_GLOBAL_TAG=!1,r.ENABLE_ERROR=!0,r.ENABLE_INFO=!0,r.ENABLE_WARN=!0,r.ENABLE_DEBUG=!0,r.ENABLE_VERBOSE=!0,r.ENABLE_CALLBACK=!1,r.emitter=new n.default,t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NotImplementedException=t.InvalidArgumentException=t.IllegalStateException=t.RuntimeException=void 0;var i=u(n(24)),r=u(n(25)),a=u(n(26)),s=u(n(1)),o=u(n(2));function u(e){return e&&e.__esModule?e:{default:e}}n=t.RuntimeException=((0,o.default)(d,[{key:"toString",value:function(){return this.name+": "+this.message}},{key:"name",get:function(){return"RuntimeException"}},{key:"message",get:function(){return this._message}}]),d);function d(e){(0,s.default)(this,d),this._message=e}t.IllegalStateException=((0,a.default)(l,n),(0,o.default)(l,[{key:"name",get:function(){return"IllegalStateException"}}]),l);function l(e){return(0,s.default)(this,l),(0,r.default)(this,(l.__proto__||(0,i.default)(l)).call(this,e))}t.InvalidArgumentException=((0,a.default)(h,n),(0,o.default)(h,[{key:"name",get:function(){return"InvalidArgumentException"}}]),h);function h(e){return(0,s.default)(this,h),(0,r.default)(this,(h.__proto__||(0,i.default)(h)).call(this,e))}t.NotImplementedException=((0,a.default)(c,n),(0,o.default)(c,[{key:"name",get:function(){return"NotImplementedException"}}]),c);function c(e){return(0,s.default)(this,c),(0,r.default)(this,(c.__proto__||(0,i.default)(c)).call(this,e))}},function(e,t,n){var i=n(53)("wks"),r=n(40),a=n(5).Symbol,s="function"==typeof a;(e.exports=function(e){return i[e]||(i[e]=s&&a[e]||(s?a:r)("Symbol."+e))}).store=i},function(e,t,n){var i=n(16),r=n(76),a=n(50),s=Object.defineProperty;t.f=n(11)?Object.defineProperty:function(e,t,n){if(i(e),t=a(t,!0),i(n),r)try{return s(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports=!n(19)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){"use strict";t.__esModule=!0;var i=s(n(273)),r=s(n(275)),a="function"==typeof r.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":typeof e};function s(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof r.default&&"symbol"===a(i.default)?function(e){return void 0===e?"undefined":a(e)}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":void 0===e?"undefined":a(e)}},function(e,t,n){"use strict";var i="object"==typeof Reflect?Reflect:null,u=i&&"function"==typeof i.apply?i.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};var r=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)},a=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(o,u){return new Promise(function(e,t){function n(e){o.removeListener(u,i),t(e)}function i(){"function"==typeof o.removeListener&&o.removeListener("error",n),e([].slice.call(arguments))}var r,a,s;p(o,u,i,{once:!0}),"error"!==u&&(a=n,s={once:!0},"function"==typeof(r=o).on&&p(r,"error",a,s))})},(s.EventEmitter=s).prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var o=10;function d(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function h(e,t,n,i){var r,a;return d(n),void 0===(r=e._events)?(r=e._events=Object.create(null),e._eventsCount=0):(void 0!==r.newListener&&(e.emit("newListener",t,n.listener||n),r=e._events),a=r[t]),void 0===a?(a=r[t]=n,++e._eventsCount):("function"==typeof a?a=r[t]=i?[n,a]:[a,n]:i?a.unshift(n):a.push(n),0<(n=l(e))&&a.length>n&&!a.warned&&(a.warned=!0,(n=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit")).name="MaxListenersExceededWarning",n.emitter=e,n.type=t,n.count=a.length,n=n,console&&console.warn&&console.warn(n))),e}function c(e,t,n){e={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},t=function(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}.bind(e);return t.listener=n,e.wrapFn=t}function _(e,t,n){e=e._events;if(void 0===e)return[];t=e[t];return void 0===t?[]:"function"==typeof t?n?[t.listener||t]:[t]:n?function(e){for(var t=new Array(e.length),n=0;n=e.length?{value:void 0,done:!0}:(t=i(e,t),this._i+=t.length,{value:t,done:!1})})},function(e,t,n){function i(){}var r=n(16),a=n(248),s=n(54),o=n(52)("IE_PROTO"),u="prototype",d=function(){var e=n(49)("iframe"),t=s.length;for(e.style.display="none",n(79).appendChild(e),e.src="javascript:",(e=e.contentWindow.document).open(),e.write(" + + + +
+ + + \ No newline at end of file diff --git a/static/images/060.png b/static/images/060.png new file mode 100644 index 0000000..77466a8 Binary files /dev/null and b/static/images/060.png differ diff --git a/static/images/090.png b/static/images/090.png new file mode 100644 index 0000000..f8aa37e Binary files /dev/null and b/static/images/090.png differ diff --git a/static/images/092.png b/static/images/092.png new file mode 100644 index 0000000..468670f Binary files /dev/null and b/static/images/092.png differ diff --git a/static/images/bg_img.png b/static/images/bg_img.png new file mode 100644 index 0000000..9422fa5 Binary files /dev/null and b/static/images/bg_img.png differ diff --git a/static/images/dept.png b/static/images/dept.png new file mode 100644 index 0000000..18abebc Binary files /dev/null and b/static/images/dept.png differ diff --git a/static/images/deptItem.png b/static/images/deptItem.png new file mode 100644 index 0000000..70a80bc Binary files /dev/null and b/static/images/deptItem.png differ diff --git a/static/images/fd.png b/static/images/fd.png new file mode 100644 index 0000000..e4d51c0 Binary files /dev/null and b/static/images/fd.png differ diff --git a/static/images/filter.png b/static/images/filter.png new file mode 100644 index 0000000..77536d3 Binary files /dev/null and b/static/images/filter.png differ diff --git a/static/images/first.jpg b/static/images/first.jpg new file mode 100644 index 0000000..78bdf62 Binary files /dev/null and b/static/images/first.jpg differ diff --git a/static/images/follow.png b/static/images/follow.png new file mode 100644 index 0000000..ecbc23a Binary files /dev/null and b/static/images/follow.png differ diff --git a/static/images/home.png b/static/images/home.png new file mode 100644 index 0000000..021b1cd Binary files /dev/null and b/static/images/home.png differ diff --git a/static/images/home1.png b/static/images/home1.png new file mode 100644 index 0000000..538ae02 Binary files /dev/null and b/static/images/home1.png differ diff --git a/static/images/home2.png b/static/images/home2.png new file mode 100644 index 0000000..538ae02 Binary files /dev/null and b/static/images/home2.png differ diff --git a/static/images/icon.png b/static/images/icon.png new file mode 100644 index 0000000..50c5ab9 Binary files /dev/null and b/static/images/icon.png differ diff --git a/static/images/info.png b/static/images/info.png new file mode 100644 index 0000000..69e2537 Binary files /dev/null and b/static/images/info.png differ diff --git a/static/images/loc.png b/static/images/loc.png new file mode 100644 index 0000000..87fbacf Binary files /dev/null and b/static/images/loc.png differ diff --git a/static/images/my.png b/static/images/my.png new file mode 100644 index 0000000..6f14af4 Binary files /dev/null and b/static/images/my.png differ diff --git a/static/images/my1.png b/static/images/my1.png new file mode 100644 index 0000000..dca8451 Binary files /dev/null and b/static/images/my1.png differ diff --git a/static/images/my2_icon@2x.png b/static/images/my2_icon@2x.png new file mode 100644 index 0000000..5a76d5c Binary files /dev/null and b/static/images/my2_icon@2x.png differ diff --git a/static/images/my2_icon@2x2.png b/static/images/my2_icon@2x2.png new file mode 100644 index 0000000..b953974 Binary files /dev/null and b/static/images/my2_icon@2x2.png differ diff --git a/static/images/password.png b/static/images/password.png new file mode 100644 index 0000000..a6a4eac Binary files /dev/null and b/static/images/password.png differ diff --git a/static/images/phone_icon@2x.png b/static/images/phone_icon@2x.png new file mode 100644 index 0000000..d4bf6f3 Binary files /dev/null and b/static/images/phone_icon@2x.png differ diff --git a/static/images/phone_icon@2x2.png b/static/images/phone_icon@2x2.png new file mode 100644 index 0000000..cbcdf53 Binary files /dev/null and b/static/images/phone_icon@2x2.png differ diff --git a/static/images/play.svg b/static/images/play.svg new file mode 100644 index 0000000..2422dc0 --- /dev/null +++ b/static/images/play.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/images/ruler.png b/static/images/ruler.png new file mode 100644 index 0000000..2cf88a1 Binary files /dev/null and b/static/images/ruler.png differ diff --git a/static/images/second.jpg b/static/images/second.jpg new file mode 100644 index 0000000..b7b9595 Binary files /dev/null and b/static/images/second.jpg differ diff --git a/static/images/sx.png b/static/images/sx.png new file mode 100644 index 0000000..f4a5630 Binary files /dev/null and b/static/images/sx.png differ diff --git a/static/images/u8.png b/static/images/u8.png new file mode 100644 index 0000000..3bf82a6 Binary files /dev/null and b/static/images/u8.png differ diff --git a/static/images/up.png b/static/images/up.png new file mode 100644 index 0000000..a852557 Binary files /dev/null and b/static/images/up.png differ diff --git a/static/images/upgrade.png b/static/images/upgrade.png new file mode 100644 index 0000000..243ea25 Binary files /dev/null and b/static/images/upgrade.png differ diff --git a/static/images/video.svg b/static/images/video.svg new file mode 100644 index 0000000..8420ec9 --- /dev/null +++ b/static/images/video.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/images/wtcl1.png b/static/images/wtcl1.png new file mode 100644 index 0000000..f8fc492 Binary files /dev/null and b/static/images/wtcl1.png differ diff --git a/static/images/wxyh1.png b/static/images/wxyh1.png new file mode 100644 index 0000000..cb9ea32 Binary files /dev/null and b/static/images/wxyh1.png differ diff --git a/static/images/xcrw1.png b/static/images/xcrw1.png new file mode 100644 index 0000000..1631480 Binary files /dev/null and b/static/images/xcrw1.png differ diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000..b5771e2 Binary files /dev/null and b/static/logo.png differ diff --git a/static/logo1.png b/static/logo1.png new file mode 100644 index 0000000..02334f0 Binary files /dev/null and b/static/logo1.png differ diff --git a/static/logoc.png b/static/logoc.png new file mode 100644 index 0000000..05d2b77 Binary files /dev/null and b/static/logoc.png differ diff --git a/static/tabs/add.png b/static/tabs/add.png new file mode 100644 index 0000000..036e72d Binary files /dev/null and b/static/tabs/add.png differ diff --git a/static/tabs/anquan1.png b/static/tabs/anquan1.png new file mode 100644 index 0000000..eb17df5 Binary files /dev/null and b/static/tabs/anquan1.png differ diff --git a/static/tabs/anquan2.png b/static/tabs/anquan2.png new file mode 100644 index 0000000..a55646d Binary files /dev/null and b/static/tabs/anquan2.png differ diff --git a/static/tabs/aqjc.png b/static/tabs/aqjc.png new file mode 100644 index 0000000..6f9d57a Binary files /dev/null and b/static/tabs/aqjc.png differ diff --git a/static/tabs/bigImg.png b/static/tabs/bigImg.png new file mode 100644 index 0000000..abd2e84 Binary files /dev/null and b/static/tabs/bigImg.png differ diff --git a/static/tabs/chartcolumn@2x.png b/static/tabs/chartcolumn@2x.png new file mode 100644 index 0000000..ddb5621 Binary files /dev/null and b/static/tabs/chartcolumn@2x.png differ diff --git a/static/tabs/dingwei.png b/static/tabs/dingwei.png new file mode 100644 index 0000000..735b7a6 Binary files /dev/null and b/static/tabs/dingwei.png differ diff --git a/static/tabs/dw-icon.png b/static/tabs/dw-icon.png new file mode 100644 index 0000000..6833c3b Binary files /dev/null and b/static/tabs/dw-icon.png differ diff --git a/static/tabs/fdt1.png b/static/tabs/fdt1.png new file mode 100644 index 0000000..0d6a4b3 Binary files /dev/null and b/static/tabs/fdt1.png differ diff --git a/static/tabs/fdt2.png b/static/tabs/fdt2.png new file mode 100644 index 0000000..f299684 Binary files /dev/null and b/static/tabs/fdt2.png differ diff --git a/static/tabs/gongqing.png b/static/tabs/gongqing.png new file mode 100644 index 0000000..9b8ac60 Binary files /dev/null and b/static/tabs/gongqing.png differ diff --git a/static/tabs/gongqing2.png b/static/tabs/gongqing2.png new file mode 100644 index 0000000..7d2e62d Binary files /dev/null and b/static/tabs/gongqing2.png differ diff --git a/static/tabs/home.png b/static/tabs/home.png new file mode 100644 index 0000000..021b1cd Binary files /dev/null and b/static/tabs/home.png differ diff --git a/static/tabs/home1.png b/static/tabs/home1.png new file mode 100644 index 0000000..538ae02 Binary files /dev/null and b/static/tabs/home1.png differ diff --git a/static/tabs/home2.png b/static/tabs/home2.png new file mode 100644 index 0000000..538ae02 Binary files /dev/null and b/static/tabs/home2.png differ diff --git a/static/tabs/ld.png b/static/tabs/ld.png new file mode 100644 index 0000000..530a559 Binary files /dev/null and b/static/tabs/ld.png differ diff --git a/static/tabs/my2_icon@2x.png b/static/tabs/my2_icon@2x.png new file mode 100644 index 0000000..5a76d5c Binary files /dev/null and b/static/tabs/my2_icon@2x.png differ diff --git a/static/tabs/my2_icon@2x2.png b/static/tabs/my2_icon@2x2.png new file mode 100644 index 0000000..b953974 Binary files /dev/null and b/static/tabs/my2_icon@2x2.png differ diff --git a/static/tabs/noData1.png b/static/tabs/noData1.png new file mode 100644 index 0000000..418e9c5 Binary files /dev/null and b/static/tabs/noData1.png differ diff --git a/static/tabs/phone_icon@2x.png b/static/tabs/phone_icon@2x.png new file mode 100644 index 0000000..d4bf6f3 Binary files /dev/null and b/static/tabs/phone_icon@2x.png differ diff --git a/static/tabs/phone_icon@2x2.png b/static/tabs/phone_icon@2x2.png new file mode 100644 index 0000000..cbcdf53 Binary files /dev/null and b/static/tabs/phone_icon@2x2.png differ diff --git a/static/tabs/shenliu1.png b/static/tabs/shenliu1.png new file mode 100644 index 0000000..3300c8e Binary files /dev/null and b/static/tabs/shenliu1.png differ diff --git a/static/tabs/shenliu1.svg b/static/tabs/shenliu1.svg new file mode 100644 index 0000000..968452a --- /dev/null +++ b/static/tabs/shenliu1.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/tabs/shenliu2.png b/static/tabs/shenliu2.png new file mode 100644 index 0000000..61e0106 Binary files /dev/null and b/static/tabs/shenliu2.png differ diff --git a/static/tabs/shenliu2.svg b/static/tabs/shenliu2.svg new file mode 100644 index 0000000..7e69837 --- /dev/null +++ b/static/tabs/shenliu2.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/tabs/shuiku1.png b/static/tabs/shuiku1.png new file mode 100644 index 0000000..d2d5c53 Binary files /dev/null and b/static/tabs/shuiku1.png differ diff --git a/static/tabs/shuiku2.png b/static/tabs/shuiku2.png new file mode 100644 index 0000000..7da70dd Binary files /dev/null and b/static/tabs/shuiku2.png differ diff --git a/static/tabs/shuiyu1.png b/static/tabs/shuiyu1.png new file mode 100644 index 0000000..88bca23 Binary files /dev/null and b/static/tabs/shuiyu1.png differ diff --git a/static/tabs/shuiyu2.png b/static/tabs/shuiyu2.png new file mode 100644 index 0000000..cdc350a Binary files /dev/null and b/static/tabs/shuiyu2.png differ diff --git a/static/tabs/sl1.png b/static/tabs/sl1.png new file mode 100644 index 0000000..69aae89 Binary files /dev/null and b/static/tabs/sl1.png differ diff --git a/static/tabs/sl2.png b/static/tabs/sl2.png new file mode 100644 index 0000000..53a315b Binary files /dev/null and b/static/tabs/sl2.png differ diff --git a/static/tabs/slt.jpg b/static/tabs/slt.jpg new file mode 100644 index 0000000..fba9617 Binary files /dev/null and b/static/tabs/slt.jpg differ diff --git a/static/tabs/spjk.png b/static/tabs/spjk.png new file mode 100644 index 0000000..bb1c779 Binary files /dev/null and b/static/tabs/spjk.png differ diff --git a/static/tabs/stlljk.png b/static/tabs/stlljk.png new file mode 100644 index 0000000..cae6a1c Binary files /dev/null and b/static/tabs/stlljk.png differ diff --git a/static/tabs/sxt1.png b/static/tabs/sxt1.png new file mode 100644 index 0000000..22cc126 Binary files /dev/null and b/static/tabs/sxt1.png differ diff --git a/static/tabs/sxt2.png b/static/tabs/sxt2.png new file mode 100644 index 0000000..0ad59d9 Binary files /dev/null and b/static/tabs/sxt2.png differ diff --git a/static/tabs/tc.png b/static/tabs/tc.png new file mode 100644 index 0000000..d7b5046 Binary files /dev/null and b/static/tabs/tc.png differ diff --git a/static/tabs/touxiang.png b/static/tabs/touxiang.png new file mode 100644 index 0000000..088f260 Binary files /dev/null and b/static/tabs/touxiang.png differ diff --git a/static/tabs/water.png b/static/tabs/water.png new file mode 100644 index 0000000..1080a75 Binary files /dev/null and b/static/tabs/water.png differ diff --git a/static/tabs/water2.png b/static/tabs/water2.png new file mode 100644 index 0000000..982ffeb Binary files /dev/null and b/static/tabs/water2.png differ diff --git a/static/tabs/weix.png b/static/tabs/weix.png new file mode 100644 index 0000000..8daaa20 Binary files /dev/null and b/static/tabs/weix.png differ diff --git a/static/tabs/wtcl.png b/static/tabs/wtcl.png new file mode 100644 index 0000000..996874c Binary files /dev/null and b/static/tabs/wtcl.png differ diff --git a/static/tabs/wxyh.png b/static/tabs/wxyh.png new file mode 100644 index 0000000..2cd3ab5 Binary files /dev/null and b/static/tabs/wxyh.png differ diff --git a/static/tabs/xcrw.png b/static/tabs/xcrw.png new file mode 100644 index 0000000..1030c0c Binary files /dev/null and b/static/tabs/xcrw.png differ diff --git a/static/tabs/xingzhuang.png b/static/tabs/xingzhuang.png new file mode 100644 index 0000000..e4d785c Binary files /dev/null and b/static/tabs/xingzhuang.png differ diff --git a/static/tabs/xingzhuang2.png b/static/tabs/xingzhuang2.png new file mode 100644 index 0000000..677a369 Binary files /dev/null and b/static/tabs/xingzhuang2.png differ diff --git a/static/tabs/xinxi_icon@2x.png b/static/tabs/xinxi_icon@2x.png new file mode 100644 index 0000000..5700dcb Binary files /dev/null and b/static/tabs/xinxi_icon@2x.png differ diff --git a/static/tabs/xinxi_icon@2x2.png b/static/tabs/xinxi_icon@2x2.png new file mode 100644 index 0000000..7e4aed8 Binary files /dev/null and b/static/tabs/xinxi_icon@2x2.png differ diff --git a/static/tabs/yhd1.png b/static/tabs/yhd1.png new file mode 100644 index 0000000..2278116 Binary files /dev/null and b/static/tabs/yhd1.png differ diff --git a/static/tabs/yhd2.png b/static/tabs/yhd2.png new file mode 100644 index 0000000..a2e264e Binary files /dev/null and b/static/tabs/yhd2.png differ diff --git a/static/tabs/yl1.png b/static/tabs/yl1.png new file mode 100644 index 0000000..ed5910b Binary files /dev/null and b/static/tabs/yl1.png differ diff --git a/static/tabs/yl2.png b/static/tabs/yl2.png new file mode 100644 index 0000000..a4395c3 Binary files /dev/null and b/static/tabs/yl2.png differ diff --git a/static/tabs/yujing_icon@2x.png b/static/tabs/yujing_icon@2x.png new file mode 100644 index 0000000..84b1183 Binary files /dev/null and b/static/tabs/yujing_icon@2x.png differ diff --git a/static/tabs/yujing_icon@2x2.png b/static/tabs/yujing_icon@2x2.png new file mode 100644 index 0000000..24d73e5 Binary files /dev/null and b/static/tabs/yujing_icon@2x2.png differ diff --git a/static/tabs/zhjs.png b/static/tabs/zhjs.png new file mode 100644 index 0000000..8021be2 Binary files /dev/null and b/static/tabs/zhjs.png differ diff --git a/static/tabs/zhuba1.png b/static/tabs/zhuba1.png new file mode 100644 index 0000000..2c427bc Binary files /dev/null and b/static/tabs/zhuba1.png differ diff --git a/static/tabs/zhuba2.png b/static/tabs/zhuba2.png new file mode 100644 index 0000000..aa38c4d Binary files /dev/null and b/static/tabs/zhuba2.png differ diff --git a/static/tabs/zshenya1.png b/static/tabs/zshenya1.png new file mode 100644 index 0000000..2baa41e Binary files /dev/null and b/static/tabs/zshenya1.png differ diff --git a/static/tabs/zshenya2.png b/static/tabs/zshenya2.png new file mode 100644 index 0000000..98cd8fb Binary files /dev/null and b/static/tabs/zshenya2.png differ diff --git a/static/tabs/zweiyi1.png b/static/tabs/zweiyi1.png new file mode 100644 index 0000000..3a99fcf Binary files /dev/null and b/static/tabs/zweiyi1.png differ diff --git a/static/tabs/zweiyi2.png b/static/tabs/zweiyi2.png new file mode 100644 index 0000000..3da9a04 Binary files /dev/null and b/static/tabs/zweiyi2.png differ diff --git a/static/uni.png b/static/uni.png new file mode 100644 index 0000000..8e3a80f Binary files /dev/null and b/static/uni.png differ diff --git a/subpkg/rainDetail/rainDetail.vue b/subpkg/rainDetail/rainDetail.vue new file mode 100644 index 0000000..2248022 --- /dev/null +++ b/subpkg/rainDetail/rainDetail.vue @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/template.html b/template.html new file mode 100644 index 0000000..b9298b7 --- /dev/null +++ b/template.html @@ -0,0 +1,28 @@ + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + + + + + + + + + +
+ + + diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..d4c7d1b --- /dev/null +++ b/uni.scss @@ -0,0 +1,3 @@ +@import '@/uni_modules/uview-ui/theme.scss'; +@import '@/uni_modules/uni-scss/variables.scss'; +/* uni.scss */ diff --git a/uni_modules/qiun-data-charts/changelog.md b/uni_modules/qiun-data-charts/changelog.md new file mode 100644 index 0000000..4d470a4 --- /dev/null +++ b/uni_modules/qiun-data-charts/changelog.md @@ -0,0 +1,320 @@ +## 2.5.0-20230101(2023-01-01) +- 秋云图表组件 修改条件编译顺序,确保uniapp的cli方式的项目依赖不完整时可以正常显示 +- 秋云图表组件 恢复props属性directory的使用,以修复vue3项目中,开启echarts后,echarts目录识别错误的bug +- uCharts.js 修复区域图、混合图只有一个数据时图表显示不正确的bug +- uCharts.js 修复折线图、区域图中时间轴类别图表tooltip指示点显示不正确的bug +- uCharts.js 修复x轴使用labelCount时,并且boundaryGap = 'justify' 并且关闭Y轴显示的时候,最后一个坐标值不显示的bug +- uCharts.js 修复折线图只有一组数据时 ios16 渲染颜色不正确的bug +- uCharts.js 修复玫瑰图半径显示不正确的bug +- uCharts.js 柱状图、山峰图增加正负图功能,y轴网格如果需要显示0轴则由 min max 及 splitNumber 确定,后续版本优化自动显示0轴 +- uCharts.js 柱状图column增加 opts.extra.column.labelPosition,数据标签位置,有效值为 outside外部, insideTop内顶部, center内中间, bottom内底部 +- uCharts.js 雷达图radar增加 opts.extra.radar.labelShow,否显示各项标识文案是,默认true +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.boxPadding,提示窗边框填充距离,默认3px +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.fontSize,提示窗字体大小配置,默认13px +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.lineHeight,提示窗文字行高,默认20px +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.legendShow,是否显示左侧图例,默认true +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.legendShape,图例形状,图例标识样式,有效值为 auto自动跟随图例, diamond◆, circle●, triangle▲, square■, rect▬, line- +- uCharts.js 标记线markLine增加 opts.extra.markLine.labelFontSize,字体大小配置,默认13px +- uCharts.js 标记线markLine增加 opts.extra.markLine.labelPadding,标签边框内填充距离,默认6px +- uCharts.js 折线图line增加 opts.extra.line.linearType,渐变色类型,可选值 none关闭渐变色,custom 自定义渐变色。使用自定义渐变色时请赋值serie.linearColor作为颜色值 +- uCharts.js 折线图line增加 serie.linearColor,渐变色数组,格式为2维数组[起始位置,颜色值],例如[[0,'#0EE2F8'],[0.3,'#2BDCA8'],[0.6,'#1890FF'],[1,'#9A60B4']] +- uCharts.js 折线图line增加 opts.extra.line.onShadow,是否开启折线阴影,开启后请赋值serie.setShadow阴影设置 +- uCharts.js 折线图line增加 serie.setShadow,阴影配置,格式为4位数组:[offsetX,offsetY,blur,color] +- uCharts.js 折线图line增加 opts.extra.line.animation,动画效果方向,可选值为vertical 垂直动画效果,horizontal 水平动画效果 +- uCharts.js X轴xAxis增加 opts.xAxis.lineHeight,X轴字体行高,默认20px +- uCharts.js X轴xAxis增加 opts.xAxis.marginTop,X轴文字距离轴线的距离,默认0px +- uCharts.js X轴xAxis增加 opts.xAxis.title,当前X轴标题 +- uCharts.js X轴xAxis增加 opts.xAxis.titleFontSize,标题字体大小,默认13px +- uCharts.js X轴xAxis增加 opts.xAxis.titleOffsetY,标题纵向偏移距离,负数为向上偏移,正数向下偏移 +- uCharts.js X轴xAxis增加 opts.xAxis.titleOffsetX,标题横向偏移距离,负数为向左偏移,正数向右偏移 +- uCharts.js X轴xAxis增加 opts.xAxis.titleFontColor,标题字体颜色,默认#666666 + +## 报错TypeError: Cannot read properties of undefined (reading 'length') +- 如果是uni-modules版本组件,请先登录HBuilderX账号; +- 在HBuilderX中的manifest.json,点击重新获取uniapp的appid,或者删除appid重新粘贴,重新运行; +- 如果是cli项目请使用码云上的非uniCloud版本组件; +- 或者添加uniCloud的依赖; +- 或者使用原生uCharts; +## 2.4.5-20221130(2022-11-30) +- uCharts.js 优化tooltip当文字很多变为左侧显示时,如果画布仍显显示不下,提示框错位置变为以左侧0位置起画 +- uCharts.js 折线图修复特殊情况下只有单点数据,并改变线宽后点变为圆形的bug +- uCharts.js 修复Y轴disabled启用后无效并报错的bug +- uCharts.js 修复仪表盘起始结束角度特殊情况下显示不正确的bug +- uCharts.js 雷达图新增参数 opts.extra.radar.radius , 自定义雷达图半径 +- uCharts.js 折线图、区域图增加tooltip指示点,opts.extra.line.activeType/opts.extra.area.activeType,可选值"none"不启用激活指示点,"hollow"空心点模式,"solid"实心点模式 +## 2.4.4-20221102(2022-11-02) +- 秋云图表组件 修复使用echarts时reload、reshow无法调用重新渲染的bug,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/40) +- 秋云图表组件 修复使用echarts时,初始化时宽高不正确的bug,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/42) +- 秋云图表组件 修复uniapp的h5使用history模式时,无法加载echarts的bug +- 秋云图表组件 小程序端@complete、@scrollLeft、@scrollRight、@getTouchStart、@getTouchMove、@getTouchEnd事件增加opts参数传出,方便一些特殊需求的交互获取数据。 + +- uCharts.js 修复calTooltipYAxisData方法内formatter格式化方法未与y轴方法同步的问题,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/43) +- uCharts.js 地图新增参数opts.series[i].fillOpacity,以透明度方式来设置颜色过度效果,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/38) +- uCharts.js 地图新增参数opts.extra.map.active,是否启用点击激活变色 +- uCharts.js 地图新增参数opts.extra.map.activeTextColor,是否启用点击激活变色 +- uCharts.js 地图新增渲染完成事件renderComplete +- uCharts.js 漏斗图修复当部分数据相同时tooltip提示窗点击错误的bug +- uCharts.js 漏斗图新增参数series.data[i].centerText 居中标签文案 +- uCharts.js 漏斗图新增参数series.data[i].centerTextSize 居中标签文案字体大小,默认opts.fontSize +- uCharts.js 漏斗图新增参数series.data[i].centerTextColor 居中标签文案字体颜色,默认#FFFFFF +- uCharts.js 漏斗图新增参数opts.extra.funnel.minSize 最小值的最小宽度,默认0 +- uCharts.js 进度条新增参数opts.extra.arcbar.direction,动画方向,可选值为cw顺时针、ccw逆时针 +- uCharts.js 混合图新增参数opts.extra.mix.line.width,折线的宽度,默认2 +- uCharts.js 修复tooltip开启horizentalLine水平横线标注时,图表显示错位的bug +- uCharts.js 优化tooltip当文字很多变为左侧显示时,如果画布仍显显示不下,提示框错位置变为以左侧0位置起画 +- uCharts.js 修复开启滚动条后X轴文字超出绘图区域后的隐藏逻辑 +- uCharts.js 柱状图、条状图修复堆叠模式不能通过{value,color}赋值单个柱子颜色的问题 +- uCharts.js 气泡图修复不识别series.textSize和series.textColor的bug + +## 报错TypeError: Cannot read properties of undefined (reading 'length') +1. 如果是uni-modules版本组件,请先登录HBuilderX账号; +2. 在HBuilderX中的manifest.json,点击重新获取uniapp的appid,或者删除appid重新粘贴,重新运行; +3. 如果是cli项目请使用码云上的非uniCloud版本组件; +4. 或者添加uniCloud的依赖; +5. 或者使用原生uCharts; +## 2.4.3-20220505(2022-05-05) +- 秋云图表组件 修复开启canvas2d后将series赋值为空数组显示加载图标时,再次赋值后画布闪动的bug +- 秋云图表组件 修复升级hbx最新版后ECharts的highlight方法报错的bug +- uCharts.js 雷达图新增参数opts.extra.radar.gridEval,数据点位网格抽希,默认1 +- uCharts.js 雷达图新增参数opts.extra.radar.axisLabel, 是否显示刻度点值,默认false +- uCharts.js 雷达图新增参数opts.extra.radar.axisLabelTofix,刻度点值小数位数,默认0 +- uCharts.js 雷达图新增参数opts.extra.radar.labelPointShow,是否显示末端刻度圆点,默认false +- uCharts.js 雷达图新增参数opts.extra.radar.labelPointRadius,刻度圆点的半径,默认3 +- uCharts.js 雷达图新增参数opts.extra.radar.labelPointColor,刻度圆点的颜色,默认#cccccc +- uCharts.js 雷达图新增参数opts.extra.radar.linearType,渐变色类型,可选值"none"关闭渐变,"custom"开启渐变 +- uCharts.js 雷达图新增参数opts.extra.radar.customColor,自定义渐变颜色,数组类型对应series的数组长度以匹配不同series颜色的不同配色方案,例如["#FA7D8D", "#EB88E2"] +- uCharts.js 雷达图优化支持series.textColor、series.textSize属性 +- uCharts.js 柱状图中温度计式图标,优化支持全圆角类型,修复边框有缝隙的bug,详见官网【演示】中的温度计图表 +- uCharts.js 柱状图新增参数opts.extra.column.activeWidth,当前点击柱状图的背景宽度,默认一个单元格单位 +- uCharts.js 混合图增加opts.extra.mix.area.gradient 区域图是否开启渐变色 +- uCharts.js 混合图增加opts.extra.mix.area.opacity 区域图透明度,默认0.2 +- uCharts.js 饼图、圆环图、玫瑰图、漏斗图,增加opts.series[0].data[i].labelText,自定义标签文字,避免formatter格式化的繁琐,详见官网【演示】中的饼图 +- uCharts.js 饼图、圆环图、玫瑰图、漏斗图,增加opts.series[0].data[i].labelShow,自定义是否显示某一个指示标签,避免因饼图类别太多导致标签重复或者居多导致图形变形的问题,详见官网【演示】中的饼图 +- uCharts.js 增加opts.series[i].legendText/opts.series[0].data[i].legendText(与series.name同级)自定义图例显示文字的方法 +- uCharts.js 优化X轴、Y轴formatter格式化方法增加形参,统一为fromatter:function(value,index,opts){} +- uCharts.js 修复横屏模式下无法使用双指缩放方法的bug +- uCharts.js 修复当只有一条数据或者多条数据值相等的时候Y轴自动计算的最大值错误的bug +- 【官网模板】增加外部自定义图例与图表交互的例子,[点击跳转](https://www.ucharts.cn/v2/#/layout/info?id=2) + +## 注意:非unimodules 版本如因更新 hbx 至 3.4.7 导致报错如下,请到码云更新非 unimodules 版本组件,[点击跳转](https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6) +> Error in callback for immediate watcher "uchartsOpts": "SyntaxError: Unexpected token u in JSON at position 0" +## 2.4.2-20220421(2022-04-21) +- 秋云图表组件 修复HBX升级3.4.6.20220420版本后echarts报错的问题 +## 2.4.2-20220420(2022-04-20) +## 重要!此版本uCharts新增了很多功能,修复了诸多已知问题 +- 秋云图表组件 新增onzoom开启双指缩放功能(仅uCharts),前提需要直角坐标系类图表类型,并且ontouch为true、opts.enableScroll为true,详见实例项目K线图 +- 秋云图表组件 新增optsWatch是否监听opts变化,关闭optsWatch后,动态修改opts不会触发图表重绘 +- 秋云图表组件 修复开启canvas2d功能后,动态更新数据后画布闪动的bug +- 秋云图表组件 去除directory属性,改为自动获取echarts.min.js路径(升级不受影响) +- 秋云图表组件 增加getImage()方法及@getImage事件,通过ref调用getImage()方法获,触发@getImage事件获取当前画布的base64图片文件流。 +- 秋云图表组件 支付宝、字节跳动、飞书、快手小程序支持开启canvas2d同层渲染设置。 +- 秋云图表组件 新增加【非uniCloud】版本组件,避免有些不需要uniCloud的使用组件发布至小程序需要提交隐私声明问题,请到码云[【非uniCloud版本】](https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6),或npm[【非uniCloud版本】](https://www.npmjs.com/package/@qiun/uni-ucharts)下载使用。 +- uCharts.js 新增dobuleZoom双指缩放功能 +- uCharts.js 新增山峰图type="mount",数据格式为饼图类格式,不需要传入categories,具体详见新版官网在线演示 +- uCharts.js 修复折线图当数据中存在null时tooltip报错的bug +- uCharts.js 修复饼图类当画布比较小时自动计算的半径是负数报错的bug +- uCharts.js 统一各图表类型的series.formatter格式化方法的形参为(val, index, series, opts),方便格式化时有更多参数可用 +- uCharts.js 标记线功能增加labelText自定义显示文字,增加labelAlign标签显示位置(左侧或右侧),增加标签显示位置微调labelOffsetX、labelOffsetY +- uCharts.js 修复条状图当数值很小时开启圆角后样式错误的bug +- uCharts.js 修复X轴开启disabled后,X轴仍占用空间的bug +- uCharts.js 修复X轴开启滚动条并且开启rotateLabel后,X轴文字与滚动条重叠的bug +- uCharts.js 增加X轴rotateAngle文字旋转自定义角度,取值范围(-90至90) +- uCharts.js 修复地图文字标签层级显示不正确的bug +- uCharts.js 修复饼图、圆环图、玫瑰图当数据全部为0的时候不显示数据标签的bug +- uCharts.js 修复当opts.padding上边距为0时,Y轴顶部刻度标签位置不正确的bug + +## 另外我们还开发了各大原生小程序组件,已发布至码云和npm +[https://gitee.com/uCharts/uCharts](https://gitee.com/uCharts/uCharts) +[https://www.npmjs.com/~qiun](https://www.npmjs.com/~qiun) + +## 对于原生uCharts文档我们已上线新版官方网站,详情点击下面链接进入官网 +[https://www.uCharts.cn/v2/](https://www.ucharts.cn/v2/) +## 2.3.7-20220122(2022-01-22) +## 重要!使用vue3编译,请使用cli模式并升级至最新依赖,HbuilderX编译需要使用3.3.8以上版本 +- uCharts.js 修复uni-app平台组件模式使用vue3编译到小程序报错的bug。 +## 2.3.7-20220118(2022-01-18) +## 注意,使用vue3的前提是需要3.3.8.20220114-alpha版本的HBuilder! +## 2.3.67-20220118(2022-01-18) +- 秋云图表组件 组件初步支持vue3,全端编译会有些问题,具体详见下面修改: +1. 小程序端运行时,在uni_modules文件夹的qiun-data-charts.js中搜索 new uni_modules_qiunDataCharts_js_sdk_uCharts_uCharts.uCharts,将.uCharts去掉。 +2. 小程序端发行时,在uni_modules文件夹的qiun-data-charts.js中搜索 new e.uCharts,将.uCharts去掉,变为 new e。 +3. 如果觉得上述步骤比较麻烦,如果您的项目只编译到小程序端,可以修改u-charts.js最后一行导出方式,将 export default uCharts;变更为 export default { uCharts: uCharts }; 这样变更后,H5和App端的renderjs会有问题,请开发者自行选择。(此问题非组件问题,请等待DC官方修复Vue3的小程序端) +## 2.3.6-20220111(2022-01-11) +- 秋云图表组件 修改组件 props 属性中的 background 默认值为 rgba(0,0,0,0) +## 2.3.6-20211201(2021-12-01) +- uCharts.js 修复bar条状图开启圆角模式时,值很小时圆角渲染错误的bug +## 2.3.5-20211014(2021-10-15) +- uCharts.js 增加vue3的编译支持(仅原生uCharts,qiun-data-charts组件后续会支持,请关注更新) +## 2.3.4-20211012(2021-10-12) +- 秋云图表组件 修复 mac os x 系统 mouseover 事件丢失的 bug +## 2.3.3-20210706(2021-07-06) +- uCharts.js 增加雷达图开启数据点值(opts.dataLabel)的显示 +## 2.3.2-20210627(2021-06-27) +- 秋云图表组件 修复tooltipCustom个别情况下传值不正确报错TypeError: Cannot read property 'name' of undefined的bug +## 2.3.1-20210616(2021-06-16) +- uCharts.js 修复圆角柱状图使用4角圆角时,当数值过大时不正确的bug +## 2.3.0-20210612(2021-06-12) +- uCharts.js 【重要】uCharts增加nvue兼容,可在nvue项目中使用gcanvas组件渲染uCharts,[详见码云uCharts-demo-nvue](https://gitee.com/uCharts/uCharts) +- 秋云图表组件 增加tapLegend属性,是否开启图例点击交互事件 +- 秋云图表组件 getIndex事件中增加返回uCharts实例中的opts参数,以便在页面中调用参数 +- 示例项目 pages/other/other.vue增加app端自定义tooltip的方法,详见showOptsTooltip方法 +## 2.2.1-20210603(2021-06-03) +- uCharts.js 修复饼图、圆环图、玫瑰图,当起始角度不为0时,tooltip位置不准确的bug +- uCharts.js 增加温度计式柱状图开启顶部半圆形的配置 +## 2.2.0-20210529(2021-05-29) +- uCharts.js 增加条状图type="bar" +- 示例项目 pages/ucharts/ucharts.vue增加条状图的demo +## 2.1.7-20210524(2021-05-24) +- uCharts.js 修复大数据量模式下曲线图不平滑的bug +## 2.1.6-20210523(2021-05-23) +- 秋云图表组件 修复小程序端开启滚动条更新数据后滚动条位置不符合预期的bug +## 2.1.5-2021051702(2021-05-17) +- uCharts.js 修复自定义Y轴min和max值为0时不能正确显示的bug +## 2.1.5-20210517(2021-05-17) +- uCharts.js 修复Y轴自定义min和max时,未按指定的最大值最小值显示坐标轴刻度的bug +## 2.1.4-20210516(2021-05-16) +- 秋云图表组件 优化onWindowResize防抖方法 +- 秋云图表组件 修复APP端uCharts更新数据时,清空series显示loading图标后再显示图表,图表抖动的bug +- uCharts.js 修复开启canvas2d后,x轴、y轴、series自定义字体大小未按比例缩放的bug +- 示例项目 修复format-e.vue拼写错误导致app端使用uCharts渲染图表 +## 2.1.3-20210513(2021-05-13) +- 秋云图表组件 修改uCharts变更chartData数据为updateData方法,支持带滚动条的数据动态打点 +- 秋云图表组件 增加onWindowResize防抖方法 fix by ど誓言,如尘般染指流年づ +- 秋云图表组件 H5或者APP变更chartData数据显示loading图表时,原数据闪现的bug +- 秋云图表组件 props增加errorReload禁用错误点击重新加载的方法 +- uCharts.js 增加tooltip显示category(x轴对应点位)标题的功能,opts.extra.tooltip.showCategory,默认为false +- uCharts.js 修复mix混合图只有柱状图时,tooltip的分割线显示位置不正确的bug +- uCharts.js 修复开启滚动条,图表在拖动中动态打点,滚动条位置不正确的bug +- uCharts.js 修复饼图类数据格式为echarts数据格式,series为空数组报错的bug +- 示例项目 修改uCharts.js更新到v2.1.2版本后,@getIndex方法获取索引值变更为e.currentIndex.index +- 示例项目 pages/updata/updata.vue增加滚动条拖动更新(数据动态打点)的demo +- 示例项目 pages/other/other.vue增加errorReload禁用错误点击重新加载的demo +## 2.1.2-20210509(2021-05-09) +秋云图表组件 修复APP端初始化时就传入chartData或lacaldata不显示图表的bug +## 2.1.1-20210509(2021-05-09) +- 秋云图表组件 变更ECharts的eopts配置在renderjs内执行,支持在config-echarts.js配置文件内写function配置。 +- 秋云图表组件 修复APP端报错Prop being mutated: "onmouse"错误的bug。 +- 秋云图表组件 修复APP端报错Error: Not Found:Page[6][-1,27] at view.umd.min.js:1的bug。 +## 2.1.0-20210507(2021-05-07) +- 秋云图表组件 修复初始化时就有数据或者数据更新的时候loading加载动画闪动的bug +- uCharts.js 修复x轴format方法categories为字符串类型时返回NaN的bug +- uCharts.js 修复series.textColor、legend.fontColor未执行全局默认颜色的bug +## 2.1.0-20210506(2021-05-06) +- 秋云图表组件 修复极个别情况下报错item.properties undefined的bug +- 秋云图表组件 修复极个别情况下关闭加载动画reshow不起作用,无法显示图表的bug +- 示例项目 pages/ucharts/ucharts.vue 增加时间轴折线图(type="tline")、时间轴区域图(type="tarea")、散点图(type="scatter")、气泡图demo(type="bubble")、倒三角形漏斗图(opts.extra.funnel.type="triangle")、金字塔形漏斗图(opts.extra.funnel.type="pyramid") +- 示例项目 pages/format-u/format-u.vue 增加X轴format格式化示例 +- uCharts.js 升级至v2.1.0版本 +- uCharts.js 修复 玫瑰图面积模式点击tooltip位置不正确的bug +- uCharts.js 修复 玫瑰图点击图例,只剩一个类别显示空白的bug +- uCharts.js 修复 饼图类图点击图例,其他图表tooltip位置某些情况下不准的bug +- uCharts.js 修复 x轴为矢量轴(时间轴)情况下,点击tooltip位置不正确的bug +- uCharts.js 修复 词云图获取点击索引偶尔不准的bug +- uCharts.js 增加 直角坐标系图表X轴format格式化方法(原生uCharts.js用法请使用formatter) +- uCharts.js 增加 漏斗图扩展配置,倒三角形(opts.extra.funnel.type="triangle"),金字塔形(opts.extra.funnel.type="pyramid") +- uCharts.js 增加 散点图(opts.type="scatter")、气泡图(opts.type="bubble") +- 后期计划 完善散点图、气泡图,增加markPoints标记点,增加横向条状图。 +## 2.0.0-20210502(2021-05-02) +- uCharts.js 修复词云图获取点击索引不正确的bug +## 2.0.0-20210501(2021-05-01) +- 秋云图表组件 修复QQ小程序、百度小程序在关闭动画效果情况下,v-for循环使用图表,显示不正确的bug +## 2.0.0-20210426(2021-04-26) +- 秋云图表组件 修复QQ小程序不支持canvas2d的bug +- 秋云图表组件 修复钉钉小程序某些情况点击坐标计算错误的bug +- uCharts.js 增加 extra.column.categoryGap 参数,柱状图类每个category点位(X轴点)柱子组之间的间距 +- uCharts.js 增加 yAxis.data[i].titleOffsetY 参数,标题纵向偏移距离,负数为向上偏移,正数向下偏移 +- uCharts.js 增加 yAxis.data[i].titleOffsetX 参数,标题横向偏移距离,负数为向左偏移,正数向右偏移 +- uCharts.js 增加 extra.gauge.labelOffset 参数,仪表盘标签文字径向便宜距离,默认13px +## 2.0.0-20210422-2(2021-04-22) +秋云图表组件 修复 formatterAssign 未判断 args[key] == null 的情况导致栈溢出的 bug +## 2.0.0-20210422(2021-04-22) +- 秋云图表组件 修复H5、APP、支付宝小程序、微信小程序canvas2d模式下横屏模式的bug +## 2.0.0-20210421(2021-04-21) +- uCharts.js 修复多行图例的情况下,图例在上方或者下方时,图例float为左侧或者右侧时,第二行及以后的图例对齐方式不正确的bug +## 2.0.0-20210420(2021-04-20) +- 秋云图表组件 修复微信小程序开启canvas2d模式后,windows版微信小程序不支持canvas2d模式的bug +- 秋云图表组件 修改非uni_modules版本为v2.0版本qiun-data-charts组件 +## 2.0.0-20210419(2021-04-19) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 修复混合图中柱状图单独设置颜色不生效的bug +- uCharts.js 修复多Y轴单独设置fontSize时,开启canvas2d后,未对应放大字体的bug +## 2.0.0-20210418(2021-04-18) +- 秋云图表组件 增加directory配置,修复H5端history模式下如果发布到二级目录无法正确加载echarts.min.js的bug +## 2.0.0-20210416(2021-04-16) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复APP端某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员 +- 示例项目 修复APP端v-for循环某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员 +- uCharts.js 修复非直角坐标系tooltip提示窗右侧超出未变换方向显示的bug +## 2.0.0-20210415(2021-04-15) +- 秋云图表组件 修复H5端发布到二级目录下echarts无法加载的bug +- 秋云图表组件 修复某些情况下echarts.off('finished')移除监听事件报错的bug +## 2.0.0-20210414(2021-04-14) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复H5端在cli项目下ECharts引用地址错误的bug +- 示例项目 增加ECharts的formatter用法的示例(详见示例项目format-e.vue) +- uCharts.js 增加圆环图中心背景色的配置extra.ring.centerColor +- uCharts.js 修复微信小程序安卓端柱状图开启透明色后显示不正确的bug +## 2.0.0-20210413(2021-04-13) +- 秋云图表组件 修复百度小程序多个图表真机未能正确获取根元素dom尺寸的bug +- 秋云图表组件 修复百度小程序横屏模式方向不正确的bug +- 秋云图表组件 修改ontouch时,@getTouchStart@getTouchMove@getTouchEnd的触发条件 +- uCharts.js 修复饼图类数据格式series属性不生效的bug +- uCharts.js 增加时序区域图 详见示例项目中ucharts.vue +## 2.0.0-20210412-2(2021-04-12) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX。如仍不好用,请重启电脑,此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复uCharts在APP端横屏模式下不能正确渲染的bug +- 示例项目 增加ECharts柱状图渐变色、圆角柱状图、横向柱状图(条状图)的示例 +## 2.0.0-20210412(2021-04-12) +- 秋云图表组件 修复created中判断echarts导致APP端无法识别,改回mounted中判断echarts初始化 +- uCharts.js 修复2d模式下series.textOffset未乘像素比的bug +## 2.0.0-20210411(2021-04-11) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册组件,请重启HBuilderX,并清空小程序开发者工具缓存。 +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 折线图区域图增加connectNulls断点续连的功能,详见示例项目中ucharts.vue +- 秋云图表组件 变更初始化方法为created,变更type2d默认值为true,优化2d模式下组件初始化后dom获取不到的bug +- 秋云图表组件 修复左右布局时,右侧图表点击坐标错误的bug,修复tooltip柱状图自定义颜色显示object的bug +## 2.0.0-20210410(2021-04-10) +- 修复左右布局时,右侧图表点击坐标错误的bug,修复柱状图自定义颜色tooltip显示object的bug +- 增加标记线及柱状图自定义颜色的demo +## 2.0.0-20210409(2021-04-08) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn) +## 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 修复钉钉小程序百度小程序measureText不准确的bug,修复2d模式下饼图类activeRadius为按比例放大的bug +- 修复组件在支付宝小程序端点击位置不准确的bug +## 2.0.0-20210408(2021-04-07) +- 修复组件在支付宝小程序端不能显示的bug(目前支付宝小程不能点击交互,后续修复) +- uCharts.js 修复高分屏下柱状图类,圆弧进度条 自定义宽度不能按比例放大的bug +## 2.0.0-20210407(2021-04-06) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn) +## 增加 通过tofix和unit快速格式化y轴的demo add by `howcode` +## 增加 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +## 2.0.0-20210406(2021-04-05) +# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页 +## 2.0.0(2021-04-05) +# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页 diff --git a/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue b/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue new file mode 100644 index 0000000..5678f7d --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue @@ -0,0 +1,1618 @@ + + + + + + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue b/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue new file mode 100644 index 0000000..b15b19f --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue new file mode 100644 index 0000000..b701394 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue new file mode 100644 index 0000000..7541b31 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue new file mode 100644 index 0000000..8e14db3 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue new file mode 100644 index 0000000..77c55b7 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue new file mode 100644 index 0000000..cb93a55 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue @@ -0,0 +1,229 @@ + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue b/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue new file mode 100644 index 0000000..7789060 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js new file mode 100644 index 0000000..509bb36 --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js @@ -0,0 +1,471 @@ +/* + * uCharts® + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 + * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts®官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +// 通用配置项 + +// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性 +const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; + +const cfe = { + //demotype为自定义图表类型 + "type": ["pie", "ring", "rose", "funnel", "line", "column", "area", "radar", "gauge","candle","demotype"], + //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型例如最后的"demotype" + "categories": ["line", "column", "area", "radar", "gauge", "candle","demotype"], + //instance为实例变量承载属性,option为eopts承载属性,不要删除 + "instance": {}, + "option": {}, + //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换 + "formatter":{ + "tooltipDemo1":function(res){ + let result = '' + for (let i in res) { + if (i == 0) { + result += res[i].axisValueLabel + '年销售额' + } + let value = '--' + if (res[i].data !== null) { + value = res[i].data + } + // #ifdef H5 + result += '\n' + res[i].seriesName + ':' + value + ' 万元' + // #endif + + // #ifdef APP-PLUS + result += '
' + res[i].marker + res[i].seriesName + ':' + value + ' 万元' + // #endif + } + return result; + }, + legendFormat:function(name){ + return "自定义图例+"+name; + }, + "xAxisFormat": function (value) { + return value.substr('2020--'.length, 11) + }, + "projectFormat":function (value) { + return value + 'mm'; + }, + "stList": function (val) + { + let value = val.substr('2020-'.length, 11) + var ret = "";//拼接加\n返回的类目项 + var maxLength = 6;//每项显示文字个数 + var valLength = value.length;//X轴类目项的文字个数 + var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数 + if (rowN > 1)//如果类目项的文字大于5, + { + for (var i = 0; i < rowN; i++) { + var temp = "";//每次截取的字符串 + var start = i * maxLength;//开始截取的位置 + var end = start + maxLength;//结束截取的位置 + //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧 + temp = value.substring(start, end) + "\n"; + ret += temp; //凭借最终的字符串 + } + return ret; + } + else { + return value; + } + }, + "stMonth":function(value){ + let months = value.data.coord[0].substr("2024-0".length, "2024-0".length - 5); + let val = value.data.coord[1] + return `${months}月核定生态流量${val}m³/s` + }, + "jcDataFormat": function (val) { + return val.substr('2020-'.length, 11) + }, + "yhidden": function (value, index, axis) { + console.log("axis",axis); + + if (index === 0 || index === axis.data.length - 1) { + return '' + } else { + return value + } + }, + "waterXaxis": function (val) { + return val.substr(0,'2020-11-11 11:11'.length) + }, + yAxisFormatDemo:function (value, index) { + return value + '元'; + }, + seriesFormatDemo:function(res){ + return res.name + '年' + res.value + '元'; + } + }, + //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在eopts参数,会将demotype与eopts中option合并后渲染图表。 + "demotype":{ + "color": color, + //在这里填写echarts的option即可 + + }, + //下面是自定义配置,请添加项目所需的通用配置 + "column": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'bar', + "data": [], + "barwidth": 20, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "line": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'line', + "data": [], + "barwidth": 20, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "area": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'line', + "data": [], + "areaStyle": {}, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "pie": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "grid": { + "top": 40, + "bottom": 30, + "right": 15, + "left": 15 + }, + "legend": { + "bottom": 'left', + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": '50%', + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "ring": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "grid": { + "top": 40, + "bottom": 30, + "right": 15, + "left": 15 + }, + "legend": { + "bottom": 'left', + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": ['40%', '70%'], + "avoidLabelOverlap": false, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + "labelLine": { + "show": true + }, + }, + }, + "rose": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "legend": { + "top": 'bottom' + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": "55%", + "center": ['50%', '50%'], + "roseType": 'area', + }, + }, + "funnel": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item', + "formatter": "{b} : {c}%" + }, + "legend": { + "top": 'bottom' + }, + "seriesTemplate": { + "name": '', + "type": 'funnel', + "left": '10%', + "top": 60, + "bottom": 60, + "width": '80%', + "min": 0, + "max": 100, + "minSize": '0%', + "maxSize": '100%', + "sort": 'descending', + "gap": 2, + "label": { + "show": true, + "position": 'inside' + }, + "labelLine": { + "length": 10, + "lineStyle": { + "width": 1, + "type": 'solid' + } + }, + "itemStyle": { + "bordercolor": '#fff', + "borderwidth": 1 + }, + "emphasis": { + "label": { + "fontSize": 20 + } + }, + "data": [], + }, + }, + "gauge": { + "color": color, + "tooltip": { + "formatter": '{a}
{b} : {c}%' + }, + "seriesTemplate": { + "name": '业务指标', + "type": 'gauge', + "detail": {"formatter": '{value}%'}, + "data": [{"value": 50, "name": '完成率'}] + }, + }, + "candle": { + "xAxis": { + "data": [] + }, + "yAxis": {}, + "color": color, + "title": { + "text": '' + }, + "dataZoom": [{ + "type": 'inside', + "xAxisIndex": [0, 1], + "start": 10, + "end": 100 + }, + { + "show": true, + "xAxisIndex": [0, 1], + "type": 'slider', + "bottom": 10, + "start": 10, + "end": 100 + } + ], + "seriesTemplate": { + "name": '', + "type": 'k', + "data": [], + }, + } +} + +export default cfe; \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js new file mode 100644 index 0000000..17b28b3 --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js @@ -0,0 +1,606 @@ +/* + * uCharts® + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 + * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts®官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性 +const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; + +//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改 +const formatDateTime = (timeStamp, returnType)=>{ + var date = new Date(); + date.setTime(timeStamp * 1000); + var y = date.getFullYear(); + var m = date.getMonth() + 1; + m = m < 10 ? ('0' + m) : m; + var d = date.getDate(); + d = d < 10 ? ('0' + d) : d; + var h = date.getHours(); + h = h < 10 ? ('0' + h) : h; + var minute = date.getMinutes(); + var second = date.getSeconds(); + minute = minute < 10 ? ('0' + minute) : minute; + second = second < 10 ? ('0' + second) : second; + if(returnType == 'full'){return y + '-' + m + '-' + d + ' '+ h +':' + minute + ':' + second;} + if(returnType == 'y-m-d'){return y + '-' + m + '-' + d;} + if(returnType == 'h:m'){return h +':' + minute;} + if(returnType == 'h:m:s'){return h +':' + minute +':' + second;} + return [y, m, d, h, minute, second]; +} + +const cfu = { + //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可 + "type":["pie","ring","rose","word","funnel","map","arcbar","line","column","mount","bar","area","radar","gauge","candle","mix","tline","tarea","scatter","bubble","demotype"], + "range":["饼状图","圆环图","玫瑰图","词云图","漏斗图","地图","圆弧进度条","折线图","柱状图","山峰图","条状图","区域图","雷达图","仪表盘","K线图","混合图","时间轴折线","时间轴区域","散点图","气泡图","自定义类型"], + //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype" + //自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories + "categories":["line","column","mount","bar","area","radar","gauge","candle","mix","demotype"], + //instance为实例变量承载属性,不要删除 + "instance":{}, + //option为opts及eopts承载属性,不要删除 + "option":{}, + //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换 + "formatter":{ + "yAxisDemo1":function(val, index, opts){return val+'元'}, + "yAxisDemo2":function(val, index, opts){return val.toFixed(2)}, + "xAxisDemo1":function(val, index, opts){return val+'年';}, + "xAxisDemo2":function(val, index, opts){return formatDateTime(val,'h:m')}, + "seriesDemo1":function(val, index, series, opts){return val+'元'}, + "tooltipDemo1":function(item, category, index, opts){ + if(index==0){ + return '随便用'+item.data+'年' + }else{ + return '其他我没改'+item.data+'天' + } + }, + "pieDemo":function(val, index, series, opts){ + if(index !== undefined){ + return series[index].name+':'+series[index].data+'元' + } + }, + }, + //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。 + "demotype":{ + //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置 + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "line": { + "type": "curve", + "width": 2 + }, + } + }, + //下面是自定义配置,请添加项目所需的通用配置 + "pie":{ + "type": "pie", + "color": color, + "padding": [5,5,5,5], + "extra": { + "pie": { + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": true, + "borderWidth": 3, + "borderColor": "#FFFFFF" + }, + } + }, + "ring":{ + "type": "ring", + "color": color, + "padding": [5,5,5,5], + "rotate": false, + "dataLabel": true, + "legend": { + "show": true, + "position": "right", + "lineHeight": 25, + }, + "title": { + "name": "收益率", + "fontSize": 15, + "color": "#666666" + }, + "subtitle": { + "name": "70%", + "fontSize": 25, + "color": "#7cb5ec" + }, + "extra": { + "ring": { + "ringWidth":30, + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": true, + "borderWidth": 3, + "borderColor": "#FFFFFF" + }, + }, + }, + "rose":{ + "type": "rose", + "color": color, + "padding": [5,5,5,5], + "legend": { + "show": true, + "position": "left", + "lineHeight": 25, + }, + "extra": { + "rose": { + "type": "area", + "minRadius": 50, + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": false, + "borderWidth": 2, + "borderColor": "#FFFFFF" + }, + } + }, + "word":{ + "type": "word", + "color": color, + "extra": { + "word": { + "type": "normal", + "autoColors": false + } + } + }, + "funnel":{ + "type": "funnel", + "color": color, + "padding": [15,15,0,15], + "extra": { + "funnel": { + "activeOpacity": 0.3, + "activeWidth": 10, + "border": true, + "borderWidth": 2, + "borderColor": "#FFFFFF", + "fillOpacity": 1, + "labelAlign": "right" + }, + } + }, + "map":{ + "type": "map", + "color": color, + "padding": [0,0,0,0], + "dataLabel": true, + "extra": { + "map": { + "border": true, + "borderWidth": 1, + "borderColor": "#666666", + "fillOpacity": 0.6, + "activeBorderColor": "#F04864", + "activeFillColor": "#FACC14", + "activeFillOpacity": 1 + }, + } + }, + "arcbar":{ + "type": "arcbar", + "color": color, + "title": { + "name": "百分比", + "fontSize": 25, + "color": "#00FF00" + }, + "subtitle": { + "name": "默认标题", + "fontSize": 15, + "color": "#666666" + }, + "extra": { + "arcbar": { + "type": "default", + "width": 12, + "backgroundColor": "#E9E9E9", + "startAngle": 0.75, + "endAngle": 0.25, + "gap": 2 + } + } + }, + "line":{ + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "line": { + "type": "straight", + "width": 2, + "activeType": "hollow" + }, + } + }, + "tline":{ + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": false, + "boundaryGap":"justify", + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + "data":[ + { + "min":0, + "max":80 + } + ] + }, + "legend": { + }, + "extra": { + "line": { + "type": "curve", + "width": 2, + "activeType": "hollow" + }, + } + }, + "tarea":{ + "type": "area", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + "boundaryGap":"justify", + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + "data":[ + { + "min":0, + "max":80 + } + ] + }, + "legend": { + }, + "extra": { + "area": { + "type": "curve", + "opacity": 0.2, + "addLine": true, + "width": 2, + "gradient": true, + "activeType": "hollow" + }, + } + }, + "column":{ + "type": "column", + "color": color, + "padding": [15,15,0,5], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "data":[{"min":0}] + }, + "legend": { + }, + "extra": { + "column": { + "type": "group", + "width": 30, + "activeBgColor": "#000000", + "activeBgOpacity": 0.08 + }, + } + }, + "mount":{ + "type": "mount", + "color": color, + "padding": [15,15,0,5], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "data":[{"min":0}] + }, + "legend": { + }, + "extra": { + "mount": { + "type": "mount", + "widthRatio": 1.5, + }, + } + }, + "bar":{ + "type": "bar", + "color": color, + "padding": [15,30,0,5], + "xAxis": { + "boundaryGap":"justify", + "disableGrid":false, + "min":0, + "axisLine":false + }, + "yAxis": { + }, + "legend": { + }, + "extra": { + "bar": { + "type": "group", + "width": 30, + "meterBorde": 1, + "meterFillColor": "#FFFFFF", + "activeBgColor": "#000000", + "activeBgOpacity": 0.08 + }, + } + }, + "area":{ + "type": "area", + "color": color, + "padding": [15,15,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "area": { + "type": "straight", + "opacity": 0.2, + "addLine": true, + "width": 2, + "gradient": false, + "activeType": "hollow" + }, + } + }, + "radar":{ + "type": "radar", + "color": color, + "padding": [5,5,5,5], + "dataLabel": false, + "legend": { + "show": true, + "position": "right", + "lineHeight": 25, + }, + "extra": { + "radar": { + "gridType": "radar", + "gridColor": "#CCCCCC", + "gridCount": 3, + "opacity": 0.2, + "max": 200, + "labelShow": true + }, + } + }, + "gauge":{ + "type": "gauge", + "color": color, + "title": { + "name": "66Km/H", + "fontSize": 25, + "color": "#2fc25b", + "offsetY": 50 + }, + "subtitle": { + "name": "实时速度", + "fontSize": 15, + "color": "#1890ff", + "offsetY": -50 + }, + "extra": { + "gauge": { + "type": "default", + "width": 30, + "labelColor": "#666666", + "startAngle": 0.75, + "endAngle": 0.25, + "startNumber": 0, + "endNumber": 100, + "labelFormat": "", + "splitLine": { + "fixRadius": 0, + "splitNumber": 10, + "width": 30, + "color": "#FFFFFF", + "childNumber": 5, + "childWidth": 12 + }, + "pointer": { + "width": 24, + "color": "auto" + } + } + } + }, + "candle":{ + "type": "candle", + "color": color, + "padding": [15,15,0,15], + "enableScroll": true, + "enableMarkLine": true, + "dataLabel": false, + "xAxis": { + "labelCount": 4, + "itemCount": 40, + "disableGrid": true, + "gridColor": "#CCCCCC", + "gridType": "solid", + "dashLength": 4, + "scrollShow": true, + "scrollAlign": "left", + "scrollColor": "#A6A6A6", + "scrollBackgroundColor": "#EFEBEF" + }, + "yAxis": { + }, + "legend": { + }, + "extra": { + "candle": { + "color": { + "upLine": "#f04864", + "upFill": "#f04864", + "downLine": "#2fc25b", + "downFill": "#2fc25b" + }, + "average": { + "show": true, + "name": ["MA5","MA10","MA30"], + "day": [5,10,20], + "color": ["#1890ff","#2fc25b","#facc14"] + } + }, + "markLine": { + "type": "dash", + "dashLength": 5, + "data": [ + { + "value": 2150, + "lineColor": "#f04864", + "showLabel": true + }, + { + "value": 2350, + "lineColor": "#f04864", + "showLabel": true + } + ] + } + } + }, + "mix":{ + "type": "mix", + "color": color, + "padding": [15,15,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "disabled": false, + "disableGrid": false, + "splitNumber": 5, + "gridType": "dash", + "dashLength": 4, + "gridColor": "#CCCCCC", + "padding": 10, + "showTitle": true, + "data": [] + }, + "legend": { + }, + "extra": { + "mix": { + "column": { + "width": 20 + } + }, + } + }, + "scatter":{ + "type": "scatter", + "color":color, + "padding":[15,15,0,15], + "dataLabel":false, + "xAxis": { + "disableGrid": false, + "gridType":"dash", + "splitNumber":5, + "boundaryGap":"justify", + "min":0 + }, + "yAxis": { + "disableGrid": false, + "gridType":"dash", + }, + "legend": { + }, + "extra": { + "scatter": { + }, + } + }, + "bubble":{ + "type": "bubble", + "color":color, + "padding":[15,15,0,15], + "xAxis": { + "disableGrid": false, + "gridType":"dash", + "splitNumber":5, + "boundaryGap":"justify", + "min":0, + "max":250 + }, + "yAxis": { + "disableGrid": false, + "gridType":"dash", + "data":[{ + "min":0, + "max":150 + }] + }, + "legend": { + }, + "extra": { + "bubble": { + "border":2, + "opacity": 0.5, + }, + } + } +} + +export default cfu; \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md b/uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md new file mode 100644 index 0000000..d307ba3 --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md @@ -0,0 +1,5 @@ +# uCharts JSSDK说明 +1、如不使用uCharts组件,可直接引用u-charts.js,打包编译后会`自动压缩`,压缩后体积约为`120kb`。 +2、如果120kb的体积仍需压缩,请手到uCharts官网通过在线定制选择您需要的图表。 +3、config-ucharts.js为uCharts组件的用户配置文件,升级前请`自行备份config-ucharts.js`文件,以免被强制覆盖。 +4、config-echarts.js为ECharts组件的用户配置文件,升级前请`自行备份config-echarts.js`文件,以免被强制覆盖。 \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js new file mode 100644 index 0000000..f78bde5 --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js @@ -0,0 +1,7706 @@ +/* + * uCharts (R) + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台 + * Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts (R) 官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +'use strict'; + +var config = { + version: 'v2.5.0-20230101', + yAxisWidth: 15, + xAxisHeight: 22, + padding: [10, 10, 10, 10], + rotate: false, + fontSize: 13, + fontColor: '#666666', + dataPointShape: ['circle', 'circle', 'circle', 'circle'], + color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'], + linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'], + pieChartLinePadding: 15, + pieChartTextPadding: 5, + titleFontSize: 20, + subtitleFontSize: 15, + radarLabelTextMargin: 13, +}; + +var assign = function(target, ...varArgs) { + if (target == null) { + throw new TypeError('[uCharts] Cannot convert undefined or null to object'); + } + if (!varArgs || varArgs.length <= 0) { + return target; + } + // 深度合并对象 + function deepAssign(obj1, obj2) { + for (let key in obj2) { + obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ? + deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key]; + } + return obj1; + } + varArgs.forEach(val => { + target = deepAssign(target, val); + }); + return target; +}; + +var util = { + toFixed: function toFixed(num, limit) { + limit = limit || 2; + if (this.isFloat(num)) { + num = num.toFixed(limit); + } + return num; + }, + isFloat: function isFloat(num) { + return num % 1 !== 0; + }, + approximatelyEqual: function approximatelyEqual(num1, num2) { + return Math.abs(num1 - num2) < 1e-10; + }, + isSameSign: function isSameSign(num1, num2) { + return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2; + }, + isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) { + return this.isSameSign(p1.x, p2.x); + }, + isCollision: function isCollision(obj1, obj2) { + obj1.end = {}; + obj1.end.x = obj1.start.x + obj1.width; + obj1.end.y = obj1.start.y - obj1.height; + obj2.end = {}; + obj2.end.x = obj2.start.x + obj2.width; + obj2.end.y = obj2.start.y - obj2.height; + var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y; + return !flag; + } +}; + +//兼容H5点击事件 +function getH5Offset(e) { + e.mp = { + changedTouches: [] + }; + e.mp.changedTouches.push({ + x: e.offsetX, + y: e.offsetY + }); + return e; +} + +// hex 转 rgba +function hexToRgb(hexValue, opc) { + var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + var hex = hexValue.replace(rgx, function(m, r, g, b) { + return r + r + g + g + b + b; + }); + var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + var r = parseInt(rgb[1], 16); + var g = parseInt(rgb[2], 16); + var b = parseInt(rgb[3], 16); + return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')'; +} + +function findRange(num, type, limit) { + if (isNaN(num)) { + throw new Error('[uCharts] series数据需为Number格式'); + } + limit = limit || 10; + type = type ? type : 'upper'; + var multiple = 1; + while (limit < 1) { + limit *= 10; + multiple *= 10; + } + if (type === 'upper') { + num = Math.ceil(num * multiple); + } else { + num = Math.floor(num * multiple); + } + while (num % limit !== 0) { + if (type === 'upper') { + if (num == num + 1) { //修复数据值过大num++无效的bug by 向日葵 @xrk_jy + break; + } + num++; + } else { + num--; + } + } + return num / multiple; +} + +function calCandleMA(dayArr, nameArr, colorArr, kdata) { + let seriesTemp = []; + for (let k = 0; k < dayArr.length; k++) { + let seriesItem = { + data: [], + name: nameArr[k], + color: colorArr[k] + }; + for (let i = 0, len = kdata.length; i < len; i++) { + if (i < dayArr[k]) { + seriesItem.data.push(null); + continue; + } + let sum = 0; + for (let j = 0; j < dayArr[k]; j++) { + sum += kdata[i - j][1]; + } + seriesItem.data.push(+(sum / dayArr[k]).toFixed(3)); + } + seriesTemp.push(seriesItem); + } + return seriesTemp; +} + +function calValidDistance(self, distance, chartData, config, opts) { + var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3]; + var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1); + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + dataChartWidth += (opts.extra.mount.widthRatio - 1)*chartData.eachSpacing; + } + var validDistance = distance; + if (distance >= 0) { + validDistance = 0; + self.uevent.trigger('scrollLeft'); + self.scrollOption.position = 'left' + opts.xAxis.scrollPosition = 'left'; + } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) { + validDistance = dataChartAreaWidth - dataChartWidth; + self.uevent.trigger('scrollRight'); + self.scrollOption.position = 'right' + opts.xAxis.scrollPosition = 'right'; + } else { + self.scrollOption.position = distance + opts.xAxis.scrollPosition = distance; + } + return validDistance; +} + +function isInAngleRange(angle, startAngle, endAngle) { + function adjust(angle) { + while (angle < 0) { + angle += 2 * Math.PI; + } + while (angle > 2 * Math.PI) { + angle -= 2 * Math.PI; + } + return angle; + } + angle = adjust(angle); + startAngle = adjust(startAngle); + endAngle = adjust(endAngle); + if (startAngle > endAngle) { + endAngle += 2 * Math.PI; + if (angle < startAngle) { + angle += 2 * Math.PI; + } + } + return angle >= startAngle && angle <= endAngle; +} + +function createCurveControlPoints(points, i) { + function isNotMiddlePoint(points, i) { + if (points[i - 1] && points[i + 1]) { + return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, + points[i + 1].y); + } else { + return false; + } + } + function isNotMiddlePointX(points, i) { + if (points[i - 1] && points[i + 1]) { + return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x, + points[i + 1].x); + } else { + return false; + } + } + var a = 0.2; + var b = 0.2; + var pAx = null; + var pAy = null; + var pBx = null; + var pBy = null; + if (i < 1) { + pAx = points[0].x + (points[1].x - points[0].x) * a; + pAy = points[0].y + (points[1].y - points[0].y) * a; + } else { + pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a; + pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a; + } + + if (i > points.length - 3) { + var last = points.length - 1; + pBx = points[last].x - (points[last].x - points[last - 1].x) * b; + pBy = points[last].y - (points[last].y - points[last - 1].y) * b; + } else { + pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b; + pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b; + } + if (isNotMiddlePoint(points, i + 1)) { + pBy = points[i + 1].y; + } + if (isNotMiddlePoint(points, i)) { + pAy = points[i].y; + } + if (isNotMiddlePointX(points, i + 1)) { + pBx = points[i + 1].x; + } + if (isNotMiddlePointX(points, i)) { + pAx = points[i].x; + } + if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) { + pAy = points[i].y; + } + if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) { + pBy = points[i + 1].y; + } + if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) { + pAx = points[i].x; + } + if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) { + pBx = points[i + 1].x; + } + return { + ctrA: { + x: pAx, + y: pAy + }, + ctrB: { + x: pBx, + y: pBy + } + }; +} + + +function convertCoordinateOrigin(x, y, center) { + return { + x: center.x + x, + y: center.y - y + }; +} + +function avoidCollision(obj, target) { + if (target) { + // is collision test + while (util.isCollision(obj, target)) { + if (obj.start.x > 0) { + obj.start.y--; + } else if (obj.start.x < 0) { + obj.start.y++; + } else { + if (obj.start.y > 0) { + obj.start.y++; + } else { + obj.start.y--; + } + } + } + } + return obj; +} + +function fixPieSeries(series, opts, config){ + let pieSeriesArr = []; + if(series.length>0 && series[0].data.constructor.toString().indexOf('Array') > -1){ + opts._pieSeries_ = series; + let oldseries = series[0].data; + for (var i = 0; i < oldseries.length; i++) { + oldseries[i].formatter = series[0].formatter; + oldseries[i].data = oldseries[i].value; + pieSeriesArr.push(oldseries[i]); + } + opts.series = pieSeriesArr; + }else{ + pieSeriesArr = series; + } + return pieSeriesArr; +} + +function fillSeries(series, opts, config) { + var index = 0; + for (var i = 0; i < series.length; i++) { + let item = series[i]; + if (!item.color) { + item.color = config.color[index]; + index = (index + 1) % config.color.length; + } + if (!item.linearIndex) { + item.linearIndex = i; + } + if (!item.index) { + item.index = 0; + } + if (!item.type) { + item.type = opts.type; + } + if (typeof item.show == "undefined") { + item.show = true; + } + if (!item.type) { + item.type = opts.type; + } + if (!item.pointShape) { + item.pointShape = "circle"; + } + if (!item.legendShape) { + switch (item.type) { + case 'line': + item.legendShape = "line"; + break; + case 'column': + case 'bar': + item.legendShape = "rect"; + break; + case 'area': + case 'mount': + item.legendShape = "triangle"; + break; + default: + item.legendShape = "circle"; + } + } + } + return series; +} + +function fillCustomColor(linearType, customColor, series, config) { + var newcolor = customColor || []; + if (linearType == 'custom' && newcolor.length == 0 ) { + newcolor = config.linearColor; + } + if (linearType == 'custom' && newcolor.length < series.length) { + let chazhi = series.length - newcolor.length; + for (var i = 0; i < chazhi; i++) { + newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]); + } + } + return newcolor; +} + +function getDataRange(minData, maxData) { + var limit = 0; + var range = maxData - minData; + if (range >= 10000) { + limit = 1000; + } else if (range >= 1000) { + limit = 100; + } else if (range >= 100) { + limit = 10; + } else if (range >= 10) { + limit = 5; + } else if (range >= 1) { + limit = 1; + } else if (range >= 0.1) { + limit = 0.1; + } else if (range >= 0.01) { + limit = 0.01; + } else if (range >= 0.001) { + limit = 0.001; + } else if (range >= 0.0001) { + limit = 0.0001; + } else if (range >= 0.00001) { + limit = 0.00001; + } else { + limit = 0.000001; + } + return { + minRange: findRange(minData, 'lower', limit), + maxRange: findRange(maxData, 'upper', limit) + }; +} + +function measureText(text, fontSize, context) { + var width = 0; + text = String(text); + // #ifdef MP-ALIPAY || MP-BAIDU || APP-NVUE + context = false; + // #endif + if (context !== false && context !== undefined && context.setFontSize && context.measureText) { + context.setFontSize(fontSize); + return context.measureText(text).width; + } else { + var text = text.split(''); + for (let i = 0; i < text.length; i++) { + let item = text[i]; + if (/[a-zA-Z]/.test(item)) { + width += 7; + } else if (/[0-9]/.test(item)) { + width += 5.5; + } else if (/\./.test(item)) { + width += 2.7; + } else if (/-/.test(item)) { + width += 3.25; + } else if (/:/.test(item)) { + width += 2.5; + } else if (/[\u4e00-\u9fa5]/.test(item)) { + width += 10; + } else if (/\(|\)/.test(item)) { + width += 3.73; + } else if (/\s/.test(item)) { + width += 2.5; + } else if (/%/.test(item)) { + width += 8; + } else { + width += 10; + } + } + return width * fontSize / 10; + } +} + +function dataCombine(series) { + return series.reduce(function(a, b) { + return (a.data ? a.data : a).concat(b.data); + }, []); +} + +function dataCombineStack(series, len) { + var sum = new Array(len); + for (var j = 0; j < sum.length; j++) { + sum[j] = 0; + } + for (var i = 0; i < series.length; i++) { + for (var j = 0; j < sum.length; j++) { + sum[j] += series[i].data[j]; + } + } + return series.reduce(function(a, b) { + return (a.data ? a.data : a).concat(b.data).concat(sum); + }, []); +} + +function getTouches(touches, opts, e) { + let x, y; + if (touches.clientX) { + if (opts.rotate) { + y = opts.height - touches.clientX * opts.pix; + x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix; + } else { + x = touches.clientX * opts.pix; + y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix; + } + } else { + if (opts.rotate) { + y = opts.height - touches.x * opts.pix; + x = touches.y * opts.pix; + } else { + x = touches.x * opts.pix; + y = touches.y * opts.pix; + } + } + return { + x: x, + y: y + } +} + +function getSeriesDataItem(series, index, group) { + var data = []; + var newSeries = []; + var indexIsArr = index.constructor.toString().indexOf('Array') > -1; + if(indexIsArr){ + let tempSeries = filterSeries(series); + for (var i = 0; i < group.length; i++) { + newSeries.push(tempSeries[group[i]]); + } + }else{ + newSeries = series; + }; + for (let i = 0; i < newSeries.length; i++) { + let item = newSeries[i]; + let tmpindex = -1; + if(indexIsArr){ + tmpindex = index[i]; + }else{ + tmpindex = index; + } + if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) { + let seriesItem = {}; + seriesItem.color = item.color; + seriesItem.type = item.type; + seriesItem.style = item.style; + seriesItem.pointShape = item.pointShape; + seriesItem.disableLegend = item.disableLegend; + seriesItem.legendShape = item.legendShape; + seriesItem.name = item.name; + seriesItem.show = item.show; + seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex]; + data.push(seriesItem); + } + } + return data; +} + +function getMaxTextListLength(list, fontSize, context) { + var lengthList = list.map(function(item) { + return measureText(item, fontSize, context); + }); + return Math.max.apply(null, lengthList); +} + +function getRadarCoordinateSeries(length) { + var eachAngle = 2 * Math.PI / length; + var CoordinateSeries = []; + for (var i = 0; i < length; i++) { + CoordinateSeries.push(eachAngle * i); + } + return CoordinateSeries.map(function(item) { + return -1 * item + Math.PI / 2; + }); +} + +function getToolTipData(seriesData, opts, index, group, categories) { + var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {}; + var calPoints = opts.chartData.calPoints?opts.chartData.calPoints:[]; + let points = {}; + if(group.length > 0){ + let filterPoints = []; + for (let i = 0; i < group.length; i++) { + filterPoints.push(calPoints[group[i]]) + } + points = filterPoints[0][index[0]]; + }else{ + for (let i = 0; i < calPoints.length; i++) { + if(calPoints[i][index]){ + points = calPoints[i][index]; + break; + } + } + }; + var textList = seriesData.map(function(item) { + let titleText = null; + if (opts.categories && opts.categories.length>0) { + titleText = categories[index]; + }; + return { + text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data, + color: item.color, + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + }); + var offset = { + x: Math.round(points.x), + y: Math.round(points.y) + }; + return { + textList: textList, + offset: offset + }; +} + +function getMixToolTipData(seriesData, opts, index, categories) { + var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2; + var textList = seriesData.map(function(item) { + return { + text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data, + color: item.color, + disableLegend: item.disableLegend ? true : false, + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + }); + textList = textList.filter(function(item) { + if (item.disableLegend !== true) { + return item; + } + }); + var offset = { + x: Math.round(points), + y: 0 + }; + return { + textList: textList, + offset: offset + }; +} + +function getCandleToolTipData(series, seriesData, opts, index, categories, extra) { + var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {}; + var calPoints = opts.chartData.calPoints; + let upColor = extra.color.upFill; + let downColor = extra.color.downFill; + //颜色顺序为开盘,收盘,最低,最高 + let color = [upColor, upColor, downColor, upColor]; + var textList = []; + seriesData.map(function(item) { + if (index == 0) { + if (item.data[1] - item.data[0] < 0) { + color[1] = downColor; + } else { + color[1] = upColor; + } + } else { + if (item.data[0] < series[index - 1][1]) { + color[0] = downColor; + } + if (item.data[1] < item.data[0]) { + color[1] = downColor; + } + if (item.data[2] > series[index - 1][1]) { + color[2] = upColor; + } + if (item.data[3] < series[index - 1][1]) { + color[3] = downColor; + } + } + let text1 = { + text: '开盘:' + item.data[0], + color: color[0], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + let text2 = { + text: '收盘:' + item.data[1], + color: color[1], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + let text3 = { + text: '最低:' + item.data[2], + color: color[2], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + let text4 = { + text: '最高:' + item.data[3], + color: color[3], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + textList.push(text1, text2, text3, text4); + }); + var validCalPoints = []; + var offset = { + x: 0, + y: 0 + }; + for (let i = 0; i < calPoints.length; i++) { + let points = calPoints[i]; + if (typeof points[index] !== 'undefined' && points[index] !== null) { + validCalPoints.push(points[index]); + } + } + offset.x = Math.round(validCalPoints[0][0].x); + return { + textList: textList, + offset: offset + }; +} + +function filterSeries(series) { + let tempSeries = []; + for (let i = 0; i < series.length; i++) { + if (series[i].show == true) { + tempSeries.push(series[i]) + } + } + return tempSeries; +} + +function findCurrentIndex(currentPoints, calPoints, opts, config) { + var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var current={ index:-1, group:[] }; + var spacing = opts.chartData.eachSpacing / 2; + let xAxisPoints = []; + if (calPoints && calPoints.length > 0) { + if (!opts.categories) { + spacing = 0; + }else{ + for (let i = 1; i < opts.chartData.xAxisPoints.length; i++) { + xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing); + } + if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') { + xAxisPoints = opts.chartData.xAxisPoints; + } + } + if (isInExactChartArea(currentPoints, opts, config)) { + if (!opts.categories) { + let timePoints = Array(calPoints.length); + for (let i = 0; i < calPoints.length; i++) { + timePoints[i] = Array(calPoints[i].length) + for (let j = 0; j < calPoints[i].length; j++) { + timePoints[i][j] = (Math.abs(calPoints[i][j].x - currentPoints.x)); + } + }; + let pointValue = Array(timePoints.length); + let pointIndex = Array(timePoints.length); + for (let i = 0; i < timePoints.length; i++) { + pointValue[i] = Math.min.apply(null, timePoints[i]); + pointIndex[i] = timePoints[i].indexOf(pointValue[i]); + } + let minValue = Math.min.apply(null, pointValue); + current.index = []; + for (let i = 0; i < pointValue.length; i++) { + if(pointValue[i] == minValue){ + current.group.push(i); + current.index.push(pointIndex[i]); + } + }; + }else{ + xAxisPoints.forEach(function(item, index) { + if (currentPoints.x + offset + spacing > item) { + current.index = index; + } + }); + } + } + } + return current; +} + +function findBarChartCurrentIndex(currentPoints, calPoints, opts, config) { + var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var current={ index:-1, group:[] }; + var spacing = opts.chartData.eachSpacing / 2; + let yAxisPoints = opts.chartData.yAxisPoints; + if (calPoints && calPoints.length > 0) { + if (isInExactChartArea(currentPoints, opts, config)) { + yAxisPoints.forEach(function(item, index) { + if (currentPoints.y + offset + spacing > item) { + current.index = index; + } + }); + } + } + return current; +} + +function findLegendIndex(currentPoints, legendData, opts) { + let currentIndex = -1; + let gap = 0; + if (isInExactLegendArea(currentPoints, legendData.area)) { + let points = legendData.points; + let index = -1; + for (let i = 0, len = points.length; i < len; i++) { + let item = points[i]; + for (let j = 0; j < item.length; j++) { + index += 1; + let area = item[j]['area']; + if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) { + currentIndex = index; + break; + } + } + } + return currentIndex; + } + return currentIndex; +} + +function isInExactLegendArea(currentPoints, area) { + return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y; +} + +function isInExactChartArea(currentPoints, opts, config) { + return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2]; +} + +function findRadarChartCurrentIndex(currentPoints, radarData, count) { + var eachAngleArea = 2 * Math.PI / count; + var currentIndex = -1; + if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) { + var fixAngle = function fixAngle(angle) { + if (angle < 0) { + angle += 2 * Math.PI; + } + if (angle > 2 * Math.PI) { + angle -= 2 * Math.PI; + } + return angle; + }; + var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x); + angle = -1 * angle; + if (angle < 0) { + angle += 2 * Math.PI; + } + var angleList = radarData.angleList.map(function(item) { + item = fixAngle(-1 * item); + return item; + }); + angleList.forEach(function(item, index) { + var rangeStart = fixAngle(item - eachAngleArea / 2); + var rangeEnd = fixAngle(item + eachAngleArea / 2); + if (rangeEnd < rangeStart) { + rangeEnd += 2 * Math.PI; + } + if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) { + currentIndex = index; + } + }); + } + return currentIndex; +} + +function findFunnelChartCurrentIndex(currentPoints, funnelData) { + var currentIndex = -1; + for (var i = 0, len = funnelData.series.length; i < len; i++) { + var item = funnelData.series[i]; + if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findWordChartCurrentIndex(currentPoints, wordData) { + var currentIndex = -1; + for (var i = 0, len = wordData.length; i < len; i++) { + var item = wordData[i]; + if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findMapChartCurrentIndex(currentPoints, opts) { + var currentIndex = -1; + var cData = opts.chartData.mapData; + var data = opts.series; + var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset); + var poi = [tmp.x, tmp.y]; + for (var i = 0, len = data.length; i < len; i++) { + var item = data[i].geometry.coordinates; + if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findRoseChartCurrentIndex(currentPoints, pieData, opts) { + var currentIndex = -1; + var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius); + if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { + var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); + angle = -angle; + if(opts.extra.rose && opts.extra.rose.offsetAngle){ + angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180; + } + for (var i = 0, len = series.length; i < len; i++) { + if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) { + currentIndex = i; + break; + } + } + } + return currentIndex; +} + +function findPieChartCurrentIndex(currentPoints, pieData, opts) { + var currentIndex = -1; + var series = getPieDataPoints(pieData.series); + if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { + var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); + angle = -angle; + if(opts.extra.pie && opts.extra.pie.offsetAngle){ + angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180; + } + if(opts.extra.ring && opts.extra.ring.offsetAngle){ + angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180; + } + for (var i = 0, len = series.length; i < len; i++) { + if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) { + currentIndex = i; + break; + } + } + } + return currentIndex; +} + +function isInExactPieChartArea(currentPoints, center, radius) { + return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2); +} + + +function splitPoints(points,eachSeries) { + var newPoints = []; + var items = []; + points.forEach(function(item, index) { + if(eachSeries.connectNulls){ + if (item !== null) { + items.push(item); + } + }else{ + if (item !== null) { + items.push(item); + } else { + if (items.length) { + newPoints.push(items); + } + items = []; + } + } + + }); + if (items.length) { + newPoints.push(items); + } + return newPoints; +} + + +function calLegendData(series, opts, config, chartData, context) { + let legendData = { + area: { + start: { + x: 0, + y: 0 + }, + end: { + x: 0, + y: 0 + }, + width: 0, + height: 0, + wholeWidth: 0, + wholeHeight: 0 + }, + points: [], + widthArr: [], + heightArr: [] + }; + if (opts.legend.show === false) { + chartData.legendData = legendData; + return legendData; + } + let padding = opts.legend.padding * opts.pix; + let margin = opts.legend.margin * opts.pix; + let fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize; + let shapeWidth = 15 * opts.pix; + let shapeRight = 5 * opts.pix; + let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize); + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + let legendList = []; + let widthCount = 0; + let widthCountArr = []; + let currentRow = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + const legendText = item.legendText ? item.legendText : item.name; + let itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix; + if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) { + legendList.push(currentRow); + widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix); + widthCount = itemWidth; + currentRow = [item]; + } else { + widthCount += itemWidth; + currentRow.push(item); + } + } + if (currentRow.length) { + legendList.push(currentRow); + widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix); + legendData.widthArr = widthCountArr; + let legendWidth = Math.max.apply(null, widthCountArr); + switch (opts.legend.float) { + case 'left': + legendData.area.start.x = opts.area[3]; + legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding; + break; + case 'right': + legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding; + legendData.area.end.x = opts.width - opts.area[1]; + break; + default: + legendData.area.start.x = (opts.width - legendWidth) / 2 - padding; + legendData.area.end.x = (opts.width + legendWidth) / 2 + padding; + } + legendData.area.width = legendWidth + 2 * padding; + legendData.area.wholeWidth = legendWidth + 2 * padding; + legendData.area.height = legendList.length * lineHeight + 2 * padding; + legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin; + legendData.points = legendList; + } + } else { + let len = series.length; + let maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding; + let maxLength = Math.min(Math.floor(maxHeight / lineHeight), len); + legendData.area.height = maxLength * lineHeight + padding * 2; + legendData.area.wholeHeight = maxLength * lineHeight + padding * 2; + switch (opts.legend.float) { + case 'top': + legendData.area.start.y = opts.area[0] + margin; + legendData.area.end.y = opts.area[0] + margin + legendData.area.height; + break; + case 'bottom': + legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height; + legendData.area.end.y = opts.height - opts.area[2] - margin; + break; + default: + legendData.area.start.y = (opts.height - legendData.area.height) / 2; + legendData.area.end.y = (opts.height + legendData.area.height) / 2; + } + let lineNum = len % maxLength === 0 ? len / maxLength : Math.floor((len / maxLength) + 1); + let currentRow = []; + for (let i = 0; i < lineNum; i++) { + let temp = series.slice(i * maxLength, i * maxLength + maxLength); + currentRow.push(temp); + } + legendData.points = currentRow; + if (currentRow.length) { + for (let i = 0; i < currentRow.length; i++) { + let item = currentRow[i]; + let maxWidth = 0; + for (let j = 0; j < item.length; j++) { + let itemWidth = shapeWidth + shapeRight + measureText(item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix; + if (itemWidth > maxWidth) { + maxWidth = itemWidth; + } + } + legendData.widthArr.push(maxWidth); + legendData.heightArr.push(item.length * lineHeight + padding * 2); + } + let legendWidth = 0 + for (let i = 0; i < legendData.widthArr.length; i++) { + legendWidth += legendData.widthArr[i]; + } + legendData.area.width = legendWidth - opts.legend.itemGap * opts.pix + 2 * padding; + legendData.area.wholeWidth = legendData.area.width + padding; + } + } + switch (opts.legend.position) { + case 'top': + legendData.area.start.y = opts.area[0] + margin; + legendData.area.end.y = opts.area[0] + margin + legendData.area.height; + break; + case 'bottom': + legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin; + legendData.area.end.y = opts.height - opts.area[2] - margin; + break; + case 'left': + legendData.area.start.x = opts.area[3]; + legendData.area.end.x = opts.area[3] + legendData.area.width; + break; + case 'right': + legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width; + legendData.area.end.x = opts.width - opts.area[1]; + break; + } + chartData.legendData = legendData; + return legendData; +} + +function calCategoriesData(categories, opts, config, eachSpacing, context) { + var result = { + angle: 0, + xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix + }; + var fontSize = opts.xAxis.fontSize * opts.pix; + var categoriesTextLenth = categories.map(function(item,index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item,index,opts) : item; + return measureText(String(xitem), fontSize, context); + }); + var maxTextLength = Math.max.apply(this, categoriesTextLenth); + if (opts.xAxis.rotateLabel == true) { + result.angle = opts.xAxis.rotateAngle * Math.PI / 180; + let tempHeight = opts.xAxis.marginTop * opts.pix * 2 + Math.abs(maxTextLength * Math.sin(result.angle)) + tempHeight = tempHeight < fontSize + opts.xAxis.marginTop * opts.pix * 2 ? tempHeight + opts.xAxis.marginTop * opts.pix * 2 : tempHeight; + result.xAxisHeight = tempHeight; + } + if (opts.enableScroll && opts.xAxis.scrollShow) { + result.xAxisHeight += 6 * opts.pix; + } + if (opts.xAxis.disabled){ + result.xAxisHeight = 0; + } + return result; +} + +function getXAxisTextList(series, opts, config, stack) { + var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1; + var data; + if (stack == 'stack') { + data = dataCombineStack(series, opts.categories.length); + } else { + data = dataCombine(series); + } + var sorted = []; + // remove null from data + data = data.filter(function(item) { + //return item !== null; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + return item !== null; + } else { + return item.value !== null; + } + } else { + return item !== null; + } + }); + data.map(function(item) { + if (typeof item === 'object') { + if (item.constructor.toString().indexOf('Array') > -1) { + if (opts.type == 'candle') { + item.map(function(subitem) { + sorted.push(subitem); + }) + } else { + sorted.push(item[0]); + } + } else { + sorted.push(item.value); + } + } else { + sorted.push(item); + } + }) + + var minData = 0; + var maxData = 0; + if (sorted.length > 0) { + minData = Math.min.apply(this, sorted); + maxData = Math.max.apply(this, sorted); + } + //为了兼容v1.9.0之前的项目 + if (index > -1) { + if (typeof opts.xAxis.data[index].min === 'number') { + minData = Math.min(opts.xAxis.data[index].min, minData); + } + if (typeof opts.xAxis.data[index].max === 'number') { + maxData = Math.max(opts.xAxis.data[index].max, maxData); + } + } else { + if (typeof opts.xAxis.min === 'number') { + minData = Math.min(opts.xAxis.min, minData); + } + if (typeof opts.xAxis.max === 'number') { + maxData = Math.max(opts.xAxis.max, maxData); + } + } + if (minData === maxData) { + var rangeSpan = maxData || 10; + maxData += rangeSpan; + } + //var dataRange = getDataRange(minData, maxData); + var minRange = minData; + var maxRange = maxData; + var range = []; + var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber; + for (var i = 0; i <= opts.xAxis.splitNumber; i++) { + range.push(minRange + eachRange * i); + } + return range; +} + +function calXAxisData(series, opts, config, context) { + //堆叠图重算Y轴 + var columnstyle = assign({}, { + type: "" + }, opts.extra.bar); + var result = { + angle: 0, + xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix + }; + result.ranges = getXAxisTextList(series, opts, config, columnstyle.type); + result.rangesFormat = result.ranges.map(function(item) { + //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2); + item = util.toFixed(item, 2); + return item; + }); + var xAxisScaleValues = result.ranges.map(function(item) { + // 如果刻度值是浮点数,则保留两位小数 + item = util.toFixed(item, 2); + // 若有自定义格式则调用自定义的格式化函数 + //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item; + return item; + }); + result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config)); + // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\结束点以及总长 + var eachSpacing = result.eachSpacing; + var textLength = xAxisScaleValues.map(function(item) { + return measureText(item, opts.xAxis.fontSize * opts.pix, context); + }); + if (opts.xAxis.disabled === true) { + result.xAxisHeight = 0; + } + return result; +} + +function getRadarDataPoints(angleList, center, radius, series, opts) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var radarOption = opts.extra.radar || {}; + radarOption.max = radarOption.max || 0; + var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series))); + var data = []; + for (let i = 0; i < series.length; i++) { + let each = series[i]; + let listItem = {}; + listItem.color = each.color; + listItem.legendShape = each.legendShape; + listItem.pointShape = each.pointShape; + listItem.data = []; + each.data.forEach(function(item, index) { + let tmp = {}; + tmp.angle = angleList[index]; + tmp.proportion = item / maxData; + tmp.value = item; + tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center); + listItem.data.push(tmp); + }); + data.push(listItem); + } + return data; +} + +function getPieDataPoints(series, radius) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + var count = 0; + var _start_ = 0; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + count += item.data; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (count === 0) { + item._proportion_ = 1 / series.length * process; + } else { + item._proportion_ = item.data / count * process; + } + item._radius_ = radius; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item._start_ = _start_; + _start_ += 2 * item._proportion_ * Math.PI; + } + return series; +} + +function getFunnelDataPoints(series, radius, option, eachSpacing) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + for (let i = 0; i < series.length; i++) { + if(option.type == 'funnel'){ + series[i].radius = series[i].data / series[0].data * radius * process; + }else{ + series[i].radius = (eachSpacing * (series.length - i)) / (eachSpacing * series.length) * radius * process; + } + series[i]._proportion_ = series[i].data / series[0].data; + } + // if(option.type !== 'pyramid'){ + // series.reverse(); + // } + return series; +} + +function getRoseDataPoints(series, type, minRadius, radius) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var count = 0; + var _start_ = 0; + var dataArr = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + count += item.data; + dataArr.push(item.data); + } + var minData = Math.min.apply(null, dataArr); + var maxData = Math.max.apply(null, dataArr); + var radiusLength = radius - minRadius; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (count === 0) { + item._proportion_ = 1 / series.length * process; + item._rose_proportion_ = 1 / series.length * process; + } else { + item._proportion_ = item.data / count * process; + if(type == 'area'){ + item._rose_proportion_ = 1 / series.length * process; + }else{ + item._rose_proportion_ = item.data / count * process; + } + } + item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData)) || radius; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item._start_ = _start_; + _start_ += 2 * item._rose_proportion_ * Math.PI; + } + return series; +} + +function getArcbarDataPoints(series, arcbarOption) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + if (process == 1) { + process = 0.999999; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + let totalAngle; + if (arcbarOption.type == 'circle') { + totalAngle = 2; + } else { + if(arcbarOption.direction == 'ccw'){ + if (arcbarOption.startAngle < arcbarOption.endAngle) { + totalAngle = 2 + arcbarOption.startAngle - arcbarOption.endAngle; + } else { + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + }else{ + if (arcbarOption.endAngle < arcbarOption.startAngle) { + totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle; + } else { + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + } + } + item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle; + if(arcbarOption.direction == 'ccw'){ + item._proportion_ = arcbarOption.startAngle - totalAngle * item.data * process ; + } + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getGaugeArcbarDataPoints(series, arcbarOption) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + if (process == 1) { + process = 0.999999; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + let totalAngle; + if (arcbarOption.type == 'circle') { + totalAngle = 2; + } else { + if (arcbarOption.endAngle < arcbarOption.startAngle) { + totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle; + } else { + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + } + item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle; + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getGaugeAxisPoints(categories, startAngle, endAngle) { + let totalAngle; + if (endAngle < startAngle) { + totalAngle = 2 + endAngle - startAngle; + } else { + totalAngle = startAngle - endAngle; + } + let tempStartAngle = startAngle; + for (let i = 0; i < categories.length; i++) { + categories[i].value = categories[i].value === null ? 0 : categories[i].value; + categories[i]._startAngle_ = tempStartAngle; + categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle; + if (categories[i]._endAngle_ >= 2) { + categories[i]._endAngle_ = categories[i]._endAngle_ % 2; + } + tempStartAngle = categories[i]._endAngle_; + } + return categories; +} + +function getGaugeDataPoints(series, categories, gaugeOption) { + let process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (gaugeOption.pointer.color == 'auto') { + for (let i = 0; i < categories.length; i++) { + if (item.data <= categories[i].value) { + item.color = categories[i].color; + break; + } + } + } else { + item.color = gaugeOption.pointer.color; + } + let totalAngle; + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle; + item._oldAngle_ = gaugeOption.oldAngle; + if (gaugeOption.oldAngle < gaugeOption.endAngle) { + item._oldAngle_ += 2; + } + if (item.data >= gaugeOption.oldData) { + item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle; + } else { + item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process; + } + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getPieTextMaxLength(series, config, context, opts) { + series = getPieDataPoints(series); + let maxLength = 0; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%'; + maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context)); + } + return maxLength; +} + +function fixColumeData(points, eachSpacing, columnLen, index, config, opts) { + return points.map(function(item) { + if (item === null) { + return null; + } + var seriesGap = 0; + var categoryGap = 0; + if (opts.type == 'mix') { + seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0; + categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0; + } else { + seriesGap = opts.extra.column.seriesGap * opts.pix || 0; + categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + } + seriesGap = Math.min(seriesGap, eachSpacing / columnLen) + categoryGap = Math.min(categoryGap, eachSpacing / columnLen) + item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen); + if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix); + } + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap); + return item; + }); +} + +function fixBarData(points, eachSpacing, columnLen, index, config, opts) { + return points.map(function(item) { + if (item === null) { + return null; + } + var seriesGap = 0; + var categoryGap = 0; + seriesGap = opts.extra.bar.seriesGap * opts.pix || 0; + categoryGap = opts.extra.bar.categoryGap * opts.pix || 0; + seriesGap = Math.min(seriesGap, eachSpacing / columnLen) + categoryGap = Math.min(categoryGap, eachSpacing / columnLen) + item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen); + if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) { + item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap); + return item; + }); +} + +function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) { + var categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + return points.map(function(item) { + if (item === null) { + return null; + } + item.width = eachSpacing - 2 * categoryGap; + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (index > 0) { + item.width -= border; + } + return item; + }); +} + +function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) { + var categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + return points.map(function(item, indexn) { + if (item === null) { + return null; + } + item.width = Math.ceil(eachSpacing - 2 * categoryGap); + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + return item; + }); +} + +function fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) { + var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0; + return points.map(function(item, indexn) { + if (item === null) { + return null; + } + item.width = Math.ceil(eachSpacing - 2 * categoryGap); + if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) { + item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + return item; + }); +} + +function getXAxisPoints(categories, opts, config) { + var spacingValid = opts.width - opts.area[1] - opts.area[3]; + var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length; + if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') { + dataCount -= 1; + } + var widthRatio = 0; + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + widthRatio = opts.extra.mount.widthRatio - 1; + dataCount += widthRatio; + } + var eachSpacing = spacingValid / dataCount; + var xAxisPoints = []; + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + categories.forEach(function(item, index) { + xAxisPoints.push(startX + widthRatio / 2 * eachSpacing + index * eachSpacing); + }); + if (opts.xAxis.boundaryGap !== 'justify') { + if (opts.enableScroll === true) { + xAxisPoints.push(startX + widthRatio * eachSpacing + categories.length * eachSpacing); + } else { + xAxisPoints.push(endX); + } + } + return { + xAxisPoints: xAxisPoints, + startX: startX, + endX: endX, + eachSpacing: eachSpacing + }; +} + +function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var cPoints = []; + item.forEach(function(items, indexs) { + var point = {}; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + var value = items.value || items; + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + cPoints.push(point); + }); + points.push(cPoints); + } + }); + return points; +} + +function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var boundaryGap = 'center'; + if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' ) { + boundaryGap = opts.xAxis.boundaryGap; + } + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + let xranges, xminRange, xmaxRange; + xranges = [].concat(opts.chartData.xAxisData.ranges); + xminRange = xranges.shift(); + xmaxRange = xranges.pop(); + value = item[1]; + point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange); + if(opts.type == 'bubble'){ + point.r = item[2]; + point.t = item[3]; + } + } else { + value = item.value; + } + } + if (boundaryGap == 'center') { + point.x += eachSpacing / 2; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - height - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process){ + var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; + var boundaryGap = opts.xAxis.boundaryGap; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + if(lineOption.animation == 'vertical'){ + point.x = xAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + let xranges, xminRange, xmaxRange; + xranges = [].concat(opts.chartData.xAxisData.ranges); + xminRange = xranges.shift(); + xmaxRange = xranges.pop(); + value = item[1]; + point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange); + } else { + value = item.value; + } + } + if (boundaryGap == 'center') { + point.x += eachSpacing / 2; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - height - opts.area[2]; + points.push(point); + }else{ + point.x = xAxisPoints[0] + eachSpacing * index * process; + var value = item; + if (boundaryGap == 'center') { + point.x += eachSpacing / 2; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + point.y = opts.height - height - opts.area[2]; + points.push(point); + } + } + }); + return points; +} + +function getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process){ + var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + let xranges, xminRange, xmaxRange; + xranges = [].concat(opts.chartData.xAxisData.ranges); + xminRange = xranges.shift(); + xmaxRange = xranges.pop(); + value = item[1]; + point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange); + } else { + value = item.value; + } + } + point.x += eachSpacing / 2; + var height = validHeight * (value * process - minRange) / (maxRange - minRange); + point.y = opts.height - height - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints) { + var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + var mountWidth = eachSpacing * mountOption.widthRatio; + series.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + point.x += eachSpacing / 2; + var value = item.data; + var height = validHeight * (value * process - minRange) / (maxRange - minRange); + point.y = opts.height - height - opts.area[2]; + point.value = value; + point.width = mountWidth; + points.push(point); + } + }); + return points; +} + +function getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.y = yAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value; + } + var height = validWidth * (value - minRange) / (maxRange - minRange); + height *= process; + point.height = height; + point.value = value; + point.x = height + opts.area[3]; + points.push(point); + } + }); + return points; +} + +function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) { + var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + + if (seriesIndex > 0) { + var value = 0; + for (let i = 0; i <= seriesIndex; i++) { + value += stackSeries[i].data[index]; + } + var value0 = value - item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = validHeight * (value0 - minRange) / (maxRange - minRange); + } else { + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = 0; + } + var heightc = height0; + height *= process; + heightc *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + point.y0 = opts.height - Math.round(heightc) - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) { + var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; + var points = []; + var validHeight = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.y = yAxisPoints[index]; + if (seriesIndex > 0) { + var value = 0; + for (let i = 0; i <= seriesIndex; i++) { + value += stackSeries[i].data[index]; + } + var value0 = value - item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = validHeight * (value0 - minRange) / (maxRange - minRange); + } else { + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = 0; + } + var heightc = height0; + height *= process; + heightc *= process; + point.height = height - heightc; + point.x = opts.area[3] + height; + point.x0 = opts.area[3] + heightc; + points.push(point); + } + }); + return points; +} + +function getYAxisTextList(series, opts, config, stack, yData) { + var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1; + var data; + if (stack == 'stack') { + data = dataCombineStack(series, opts.categories.length); + } else { + data = dataCombine(series); + } + var sorted = []; + // remove null from data + data = data.filter(function(item) { + //return item !== null; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + return item !== null; + } else { + return item.value !== null; + } + } else { + return item !== null; + } + }); + data.map(function(item) { + if (typeof item === 'object') { + if (item.constructor.toString().indexOf('Array') > -1) { + if (opts.type == 'candle') { + item.map(function(subitem) { + sorted.push(subitem); + }) + } else { + sorted.push(item[1]); + } + } else { + sorted.push(item.value); + } + } else { + sorted.push(item); + } + }) + var minData = yData.min || 0; + var maxData = yData.max || 0; + if (sorted.length > 0) { + minData = Math.min.apply(this, sorted); + maxData = Math.max.apply(this, sorted); + } + if (minData === maxData) { + if(maxData == 0){ + maxData = 10; + }else{ + minData = 0; + } + } + var dataRange = getDataRange(minData, maxData); + var minRange = (yData.min === undefined || yData.min === null) ? dataRange.minRange : yData.min; + var maxRange = (yData.max === undefined || yData.max === null) ? dataRange.maxRange : yData.max; + var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber; + var range = []; + for (var i = 0; i <= opts.yAxis.splitNumber; i++) { + range.push(minRange + eachRange * i); + } + return range.reverse(); +} + +function calYAxisData(series, opts, config, context) { + //堆叠图重算Y轴 + var columnstyle = assign({}, { + type: "" + }, opts.extra.column); + //如果是多Y轴,重新计算 + var YLength = opts.yAxis.data.length; + var newSeries = new Array(YLength); + if (YLength > 0) { + for (let i = 0; i < YLength; i++) { + newSeries[i] = []; + for (let j = 0; j < series.length; j++) { + if (series[j].index == i) { + newSeries[i].push(series[j]); + } + } + } + var rangesArr = new Array(YLength); + var rangesFormatArr = new Array(YLength); + var yAxisWidthArr = new Array(YLength); + + for (let i = 0; i < YLength; i++) { + let yData = opts.yAxis.data[i]; + //如果总开关不显示,强制每个Y轴为不显示 + if (opts.yAxis.disabled == true) { + yData.disabled = true; + } + if(yData.type === 'categories'){ + if(!yData.formatter){ + yData.formatter = (val,index,opts) => {return val + (yData.unit || '')}; + } + yData.categories = yData.categories || opts.categories; + rangesArr[i] = yData.categories; + }else{ + if(!yData.formatter){ + yData.formatter = (val,index,opts) => {return util.toFixed(val, yData.tofix || 0) + (yData.unit || '')}; + } + rangesArr[i] = getYAxisTextList(newSeries[i], opts, config, columnstyle.type, yData, i); + } + let yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize; + yAxisWidthArr[i] = { + position: yData.position ? yData.position : 'left', + width: 0 + }; + rangesFormatArr[i] = rangesArr[i].map(function(items,index) { + items = yData.formatter(items,index,opts); + yAxisWidthArr[i].width = Math.max(yAxisWidthArr[i].width, measureText(items, yAxisFontSizes, context) + 5); + return items; + }); + let calibration = yData.calibration ? 4 * opts.pix : 0; + yAxisWidthArr[i].width += calibration + 3 * opts.pix; + if (yData.disabled === true) { + yAxisWidthArr[i].width = 0; + } + } + } else { + var rangesArr = new Array(1); + var rangesFormatArr = new Array(1); + var yAxisWidthArr = new Array(1); + if(opts.type === 'bar'){ + rangesArr[0] = opts.categories; + if(!opts.yAxis.formatter){ + opts.yAxis.formatter = (val,index,opts) => {return val + (opts.yAxis.unit || '')} + } + }else{ + if(!opts.yAxis.formatter){ + opts.yAxis.formatter = (val,index,opts) => {return val.toFixed(opts.yAxis.tofix ) + (opts.yAxis.unit || '')} + } + rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {}); + } + yAxisWidthArr[0] = { + position: 'left', + width: 0 + }; + var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize; + rangesFormatArr[0] = rangesArr[0].map(function(item,index) { + item = opts.yAxis.formatter(item,index,opts); + yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5); + return item; + }); + yAxisWidthArr[0].width += 3 * opts.pix; + if (opts.yAxis.disabled === true) { + yAxisWidthArr[0] = { + position: 'left', + width: 0 + }; + opts.yAxis.data[0] = { + disabled: true + }; + } else { + opts.yAxis.data[0] = { + disabled: false, + position: 'left', + max: opts.yAxis.max, + min: opts.yAxis.min, + formatter: opts.yAxis.formatter + }; + if(opts.type === 'bar'){ + opts.yAxis.data[0].categories = opts.categories; + opts.yAxis.data[0].type = 'categories'; + } + } + } + return { + rangesFormat: rangesFormatArr, + ranges: rangesArr, + yAxisWidth: yAxisWidthArr + }; +} + +function calTooltipYAxisData(point, series, opts, config, eachSpacing) { + let ranges = [].concat(opts.chartData.yAxisData.ranges); + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let minAxis = opts.area[0]; + let items = []; + for (let i = 0; i < ranges.length; i++) { + let maxVal = Math.max.apply(this, ranges[i]); + let minVal = Math.min.apply(this, ranges[i]); + let item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid; + item = opts.yAxis.data && opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item, i, opts) : item.toFixed(0); + items.push(String(item)) + } + return items; +} + +function calMarkLineData(points, opts) { + let minRange, maxRange; + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + for (let i = 0; i < points.length; i++) { + points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0; + let range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]); + minRange = range.pop(); + maxRange = range.shift(); + let height = spacingValid * (points[i].value - minRange) / (maxRange - minRange); + points[i].y = opts.height - Math.round(height) - opts.area[2]; + } + return points; +} + +function contextRotate(context, opts) { + if (opts.rotateLock !== true) { + context.translate(opts.height, 0); + context.rotate(90 * Math.PI / 180); + } else if (opts._rotate_ !== true) { + context.translate(opts.height, 0); + context.rotate(90 * Math.PI / 180); + opts._rotate_ = true; + } +} + +function drawPointShape(points, color, shape, context, opts) { + context.beginPath(); + if (opts.dataPointShapeType == 'hollow') { + context.setStrokeStyle(color); + context.setFillStyle(opts.background); + context.setLineWidth(2 * opts.pix); + } else { + context.setStrokeStyle("#ffffff"); + context.setFillStyle(color); + context.setLineWidth(1 * opts.pix); + } + if (shape === 'diamond') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'none') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); +} + +function drawActivePoint(points, color, shape, context, opts, option, seriesIndex) { + if(!opts.tooltip){ + return + } + if(opts.tooltip.group.length>0 && opts.tooltip.group.includes(seriesIndex) == false){ + return + } + var pointIndex = typeof opts.tooltip.index === 'number' ? opts.tooltip.index : opts.tooltip.index[opts.tooltip.group.indexOf(seriesIndex)]; + context.beginPath(); + if (option.activeType == 'hollow') { + context.setStrokeStyle(color); + context.setFillStyle(opts.background); + context.setLineWidth(2 * opts.pix); + } else { + context.setStrokeStyle("#ffffff"); + context.setFillStyle(color); + context.setLineWidth(1 * opts.pix); + } + if (shape === 'diamond') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index ) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index) { + context.moveTo(item.x + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'none') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); +} + +function drawRingTitle(opts, config, context, center) { + var titlefontSize = opts.title.fontSize || config.titleFontSize; + var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize; + var title = opts.title.name || ''; + var subtitle = opts.subtitle.name || ''; + var titleFontColor = opts.title.color || opts.fontColor; + var subtitleFontColor = opts.subtitle.color || opts.fontColor; + var titleHeight = title ? titlefontSize : 0; + var subtitleHeight = subtitle ? subtitlefontSize : 0; + var margin = 5; + if (subtitle) { + var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context); + var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX|| 0) * opts.pix ; + var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix; + if (title) { + startY += (titleHeight * opts.pix + margin) / 2; + } + context.beginPath(); + context.setFontSize(subtitlefontSize * opts.pix); + context.setFillStyle(subtitleFontColor); + context.fillText(subtitle, startX, startY); + context.closePath(); + context.stroke(); + } + if (title) { + var _textWidth = measureText(title, titlefontSize * opts.pix, context); + var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0); + var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix; + if (subtitle) { + _startY -= (subtitleHeight * opts.pix + margin) / 2; + } + context.beginPath(); + context.setFontSize(titlefontSize * opts.pix); + context.setFillStyle(titleFontColor); + context.fillText(title, _startX, _startY); + context.closePath(); + context.stroke(); + } +} + +function drawPointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + if (data[index].constructor.toString().indexOf('Array')>-1) { + value = data[index][1]; + } else { + value = data[index].value + } + } + var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value; + context.setTextAlign('center'); + context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + } + }); +} + +function drawColumePointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + var Position = opts.extra.column.labelPosition; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + if (data[index].constructor.toString().indexOf('Array')>-1) { + value = data[index][1]; + } else { + value = data[index].value + } + } + var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value; + context.setTextAlign('center'); + var startY = item.y - 4 * opts.pix + textOffset * opts.pix; + if(item.y > series.zeroPoints){ + startY = item.y + textOffset * opts.pix + fontSize; + } + if(Position == 'insideTop'){ + startY = item.y + fontSize + textOffset * opts.pix; + if(item.y > series.zeroPoints){ + startY = item.y - textOffset * opts.pix - 4 * opts.pix; + } + } + if(Position == 'center'){ + startY = item.y + textOffset * opts.pix + (opts.height - opts.area[2] - item.y + fontSize)/2; + if(series.zeroPoints < opts.height - opts.area[2]){ + startY = item.y + textOffset * opts.pix + (series.zeroPoints - item.y + fontSize)/2; + } + if(item.y > series.zeroPoints){ + startY = item.y - textOffset * opts.pix - (item.y - series.zeroPoints - fontSize)/2; + } + if(opts.extra.column.type == 'stack'){ + startY = item.y + textOffset * opts.pix + (item.y0 - item.y + fontSize)/2; + } + } + if(Position == 'bottom'){ + startY = opts.height - opts.area[2] + textOffset * opts.pix - 4 * opts.pix; + if(series.zeroPoints < opts.height - opts.area[2]){ + startY = series.zeroPoints + textOffset * opts.pix - 4 * opts.pix; + } + if(item.y > series.zeroPoints){ + startY = series.zeroPoints - textOffset * opts.pix + fontSize + 2 * opts.pix; + } + if(opts.extra.column.type == 'stack'){ + startY = item.y0 + textOffset * opts.pix - 4 * opts.pix; + } + } + context.fillText(String(formatVal), item.x, startY); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + } + }); +} + +function drawMountPointText(points, series, config, context, opts, zeroPoints) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + var Position = opts.extra.mount.labelPosition; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series[index].textColor || opts.fontColor); + var value = item.value + var formatVal = series[index].formatter ? series[index].formatter(value,index,series,opts) : value; + context.setTextAlign('center'); + var startY = item.y - 4 * opts.pix + textOffset * opts.pix; + if(item.y > zeroPoints){ + startY = item.y + textOffset * opts.pix + fontSize; + } + context.fillText(String(formatVal), item.x, startY); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + } + }); +} + +function drawBarPointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + value = data[index].value ; + } + var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value; + context.setTextAlign('left'); + context.fillText(String(formatVal), item.x + 4 * opts.pix , item.y + fontSize / 2 - 3 ); + context.closePath(); + context.stroke(); + } + }); +} + +function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) { + radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix; + radius = radius < 10 ? 10 : radius; + let totalAngle; + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let totalNumber = gaugeOption.endNumber - gaugeOption.startNumber; + let splitNumber = totalNumber / gaugeOption.splitLine.splitNumber; + let nowAngle = gaugeOption.startAngle; + let nowNumber = gaugeOption.startNumber; + for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { + var pos = { + x: radius * Math.cos(nowAngle * Math.PI), + y: radius * Math.sin(nowAngle * Math.PI) + }; + var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber,i,opts) : nowNumber; + pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2; + pos.y += centerPosition.y; + var startX = pos.x; + var startY = pos.y; + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(gaugeOption.labelColor || opts.fontColor); + context.fillText(labelText, startX, startY + config.fontSize / 2); + context.closePath(); + context.stroke(); + nowAngle += splitAngle; + if (nowAngle >= 2) { + nowAngle = nowAngle % 2; + } + nowNumber += splitNumber; + } +} + +function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) { + var radarOption = opts.extra.radar || {}; + angleList.forEach(function(angle, index) { + if(radarOption.labelPointShow === true && opts.categories[index] !== ''){ + var posPoint = { + x: radius * Math.cos(angle), + y: radius * Math.sin(angle) + }; + var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition); + context.setFillStyle(radarOption.labelPointColor); + context.beginPath(); + context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false); + context.closePath(); + context.fill(); + } + if(radarOption.labelShow === true){ + var pos = { + x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle), + y: (radius + config.radarLabelTextMargin * opts.pix) * Math.sin(angle) + }; + var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition); + var startX = posRelativeCanvas.x; + var startY = posRelativeCanvas.y; + if (util.approximatelyEqual(pos.x, 0)) { + startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2; + } else if (pos.x < 0) { + startX -= measureText(opts.categories[index] || '', config.fontSize, context); + } + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(radarOption.labelColor || opts.fontColor); + context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2); + context.closePath(); + context.stroke(); + } + }); + +} + +function drawPieText(series, opts, config, context, radius, center) { + var lineRadius = config.pieChartLinePadding; + var textObjectCollection = []; + var lastTextObject = null; + var seriesConvert = series.map(function(item,index) { + var text = item.formatter ? item.formatter(item,index,series,opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%'; + text = item.labelText ? item.labelText : text; + var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2); + if (item._rose_proportion_) { + arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2); + } + var color = item.color; + var radius = item._radius_; + return { + arc: arc, + text: text, + color: color, + radius: radius, + textColor: item.textColor, + textSize: item.textSize, + labelShow: item.labelShow + }; + }); + for (let i = 0; i < seriesConvert.length; i++) { + let item = seriesConvert[i]; + // line end + let orginX1 = Math.cos(item.arc) * (item.radius + lineRadius); + let orginY1 = Math.sin(item.arc) * (item.radius + lineRadius); + // line start + let orginX2 = Math.cos(item.arc) * item.radius; + let orginY2 = Math.sin(item.arc) * item.radius; + // text start + let orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding; + let orginY3 = orginY1; + let textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context); + let startY = orginY3; + if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, { + x: orginX3 + })) { + if (orginX3 > 0) { + startY = Math.min(orginY3, lastTextObject.start.y); + } else if (orginX1 < 0) { + startY = Math.max(orginY3, lastTextObject.start.y); + } else { + if (orginY3 > 0) { + startY = Math.max(orginY3, lastTextObject.start.y); + } else { + startY = Math.min(orginY3, lastTextObject.start.y); + } + } + } + if (orginX3 < 0) { + orginX3 -= textWidth; + } + let textObject = { + lineStart: { + x: orginX2, + y: orginY2 + }, + lineEnd: { + x: orginX1, + y: orginY1 + }, + start: { + x: orginX3, + y: startY + }, + width: textWidth, + height: config.fontSize, + text: item.text, + color: item.color, + textColor: item.textColor, + textSize: item.textSize + }; + lastTextObject = avoidCollision(textObject, lastTextObject); + textObjectCollection.push(lastTextObject); + } + for (let i = 0; i < textObjectCollection.length; i++) { + if(seriesConvert[i].labelShow === false){ + continue; + } + let item = textObjectCollection[i]; + let lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center); + let lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center); + let textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center); + context.setLineWidth(1 * opts.pix); + context.setFontSize(item.textSize * opts.pix || config.fontSize); + context.beginPath(); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + let curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x; + let textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5; + context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(textPosition.x + item.width, textPosition.y); + context.arc(curveStartX, textPosition.y, 2 * opts.pix, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(item.textSize * opts.pix || config.fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(item.text, textStartX, textPosition.y + 3); + context.closePath(); + context.stroke(); + context.closePath(); + } +} + +function drawToolTipSplitLine(offsetX, opts, config, context) { + var toolTipOption = opts.extra.tooltip || {}; + toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType; + toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength; + var startY = opts.area[0]; + var endY = opts.height - opts.area[2]; + if (toolTipOption.gridType == 'dash') { + context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); + } + context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(offsetX, startY); + context.lineTo(offsetX, endY); + context.stroke(); + context.setLineDash([]); + if (toolTipOption.xAxisLabel) { + let labelText = opts.categories[opts.tooltip.index]; + context.setFontSize(config.fontSize); + let textWidth = measureText(labelText, config.fontSize, context); + let textX = offsetX - 0.5 * textWidth; + let textY = endY + 2 * opts.pix; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); + context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); + context.setLineWidth(1 * opts.pix); + context.rect(textX - toolTipOption.boxPadding * opts.pix, textY, textWidth + 2 * toolTipOption.boxPadding * opts.pix, config.fontSize + 2 * toolTipOption.boxPadding * opts.pix); + context.closePath(); + context.stroke(); + context.fill(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor); + context.fillText(String(labelText), textX, textY + toolTipOption.boxPadding * opts.pix + config.fontSize); + context.closePath(); + context.stroke(); + } +} + +function drawMarkLine(opts, config, context) { + let markLineOption = assign({}, { + type: 'solid', + dashLength: 4, + data: [] + }, opts.extra.markLine); + let startX = opts.area[3]; + let endX = opts.width - opts.area[1]; + let points = calMarkLineData(markLineOption.data, opts); + for (let i = 0; i < points.length; i++) { + let item = assign({}, { + lineColor: '#DE4A42', + showLabel: false, + labelFontSize: 13, + labelPadding: 6, + labelFontColor: '#666666', + labelBgColor: '#DFE8FF', + labelBgOpacity: 0.8, + labelAlign: 'left', + labelOffsetX: 0, + labelOffsetY: 0, + }, points[i]); + if (markLineOption.type == 'dash') { + context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]); + } + context.setStrokeStyle(item.lineColor); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(startX, item.y); + context.lineTo(endX, item.y); + context.stroke(); + context.setLineDash([]); + if (item.showLabel) { + let fontSize = item.labelFontSize * opts.pix; + let labelText = item.labelText ? item.labelText : item.value; + context.setFontSize(fontSize); + let textWidth = measureText(labelText, fontSize, context); + let bgWidth = textWidth + item.labelPadding * opts.pix * 2; + let bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1]; + bgStartX += item.labelOffsetX; + let bgStartY = item.y - 0.5 * fontSize - item.labelPadding * opts.pix; + bgStartY += item.labelOffsetY; + let textX = bgStartX + item.labelPadding * opts.pix; + let textY = item.y; + context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity)); + context.setStrokeStyle(item.labelBgColor); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.rect(bgStartX, bgStartY, bgWidth, fontSize + 2 * item.labelPadding * opts.pix); + context.closePath(); + context.stroke(); + context.fill(); + context.setFontSize(fontSize); + context.setTextAlign('left'); + context.setFillStyle(item.labelFontColor); + context.fillText(String(labelText), textX, bgStartY + fontSize + item.labelPadding * opts.pix/2); + context.stroke(); + context.setTextAlign('left'); + } + } +} + +function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) { + var toolTipOption = assign({}, { + gridType: 'solid', + dashLength: 4 + }, opts.extra.tooltip); + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + if (toolTipOption.gridType == 'dash') { + context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); + } + context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(startX, opts.tooltip.offset.y); + context.lineTo(endX, opts.tooltip.offset.y); + context.stroke(); + context.setLineDash([]); + if (toolTipOption.yAxisLabel) { + let boxPadding = toolTipOption.boxPadding * opts.pix; + let labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing); + let widthArr = opts.chartData.yAxisData.yAxisWidth; + let tStartLeft = opts.area[3]; + let tStartRight = opts.width - opts.area[1]; + for (let i = 0; i < labelText.length; i++) { + context.setFontSize(toolTipOption.fontSize * opts.pix); + let textWidth = measureText(labelText[i], toolTipOption.fontSize * opts.pix, context); + let bgStartX, bgEndX, bgWidth; + if (widthArr[i].position == 'left') { + bgStartX = tStartLeft - (textWidth + boxPadding * 2) - 2 * opts.pix; + bgEndX = Math.max(bgStartX, bgStartX + textWidth + boxPadding * 2); + } else { + bgStartX = tStartRight + 2 * opts.pix; + bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + boxPadding * 2); + } + bgWidth = bgEndX - bgStartX; + let textX = bgStartX + (bgWidth - textWidth) / 2; + let textY = opts.tooltip.offset.y; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); + context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); + context.setLineWidth(1 * opts.pix); + context.rect(bgStartX, textY - 0.5 * config.fontSize - boxPadding, bgWidth, config.fontSize + 2 * boxPadding); + context.closePath(); + context.stroke(); + context.fill(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor); + context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize); + context.closePath(); + context.stroke(); + if (widthArr[i].position == 'left') { + tStartLeft -= (widthArr[i].width + opts.yAxis.padding * opts.pix); + } else { + tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix; + } + } + } +} + +function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { + var toolTipOption = assign({}, { + activeBgColor: '#000000', + activeBgOpacity: 0.08, + activeWidth: eachSpacing + }, opts.extra.column); + toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth; + var startY = opts.area[0]; + var endY = opts.height - opts.area[2]; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity)); + context.rect(offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY); + context.closePath(); + context.fill(); + context.setFillStyle("#FFFFFF"); +} + +function drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { + var toolTipOption = assign({}, { + activeBgColor: '#000000', + activeBgOpacity: 0.08 + }, opts.extra.bar); + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity)); + context.rect( startX ,offsetX - eachSpacing / 2 , endX - startX,eachSpacing); + context.closePath(); + context.fill(); + context.setFillStyle("#FFFFFF"); +} + + +function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) { + var toolTipOption = assign({}, { + showBox: true, + showArrow: true, + showCategory: false, + bgColor: '#000000', + bgOpacity: 0.7, + borderColor: '#000000', + borderWidth: 0, + borderRadius: 0, + borderOpacity: 0.7, + boxPadding: 3, + fontColor: '#FFFFFF', + fontSize: 13, + lineHeight: 20, + legendShow: true, + legendShape: 'auto', + splitLine: true, + }, opts.extra.tooltip); + if(toolTipOption.showCategory==true && opts.categories){ + textList.unshift({text:opts.categories[opts.tooltip.index],color:null}) + } + var fontSize = toolTipOption.fontSize * opts.pix; + var lineHeight = toolTipOption.lineHeight * opts.pix; + var boxPadding = toolTipOption.boxPadding * opts.pix; + var legendWidth = fontSize; + var legendMarginRight = 5 * opts.pix; + if(toolTipOption.legendShow == false){ + legendWidth = 0; + legendMarginRight = 0; + } + var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0; + var isOverRightBorder = false; + if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') { + if (toolTipOption.splitLine == true) { + drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context); + } + } + offset = assign({ + x: 0, + y: 0 + }, offset); + offset.y -= 8 * opts.pix; + var textWidth = textList.map(function(item) { + return measureText(item.text, fontSize, context); + }); + var toolTipWidth = legendWidth + legendMarginRight + 4 * boxPadding + Math.max.apply(null, textWidth); + var toolTipHeight = 2 * boxPadding + textList.length * lineHeight; + if (toolTipOption.showBox == false) { + return + } + // if beyond the right border + if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) { + isOverRightBorder = true; + } + if (toolTipHeight + offset.y > opts.height) { + offset.y = opts.height - toolTipHeight; + } + // draw background rect + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.bgColor, toolTipOption.bgOpacity)); + context.setLineWidth(toolTipOption.borderWidth * opts.pix); + context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity)); + var radius = toolTipOption.borderRadius; + if (isOverRightBorder) { + // 增加左侧仍然超出的判断 + if(toolTipWidth + arrowWidth > opts.width){ + offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width) + } + if(toolTipWidth > offset.x){ + offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width) + } + if (toolTipOption.showArrow) { + context.moveTo(offset.x, offset.y + 10 * opts.pix); + context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix); + } + context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false); + context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius, + Math.PI / 2, Math.PI, false); + context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false); + context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false); + if (toolTipOption.showArrow) { + context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix); + context.lineTo(offset.x, offset.y + 10 * opts.pix); + } + } else { + if (toolTipOption.showArrow) { + context.moveTo(offset.x, offset.y + 10 * opts.pix); + context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix); + } + context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false); + context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0, + false); + context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0, + Math.PI / 2, false); + context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false); + if (toolTipOption.showArrow) { + context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix); + context.lineTo(offset.x, offset.y + 10 * opts.pix); + } + } + context.closePath(); + context.fill(); + if (toolTipOption.borderWidth > 0) { + context.stroke(); + } + // draw legend + if(toolTipOption.legendShow){ + textList.forEach(function(item, index) { + if (item.color !== null) { + context.beginPath(); + context.setFillStyle(item.color); + var startX = offset.x + arrowWidth + 2 * boxPadding; + var startY = offset.y + (lineHeight - fontSize) / 2 + lineHeight * index + boxPadding + 1; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding; + } + switch (item.legendShape) { + case 'line': + context.moveTo(startX, startY + 0.5 * legendWidth - 2 * opts.pix); + context.fillRect(startX, startY + 0.5 * legendWidth - 2 * opts.pix, legendWidth, 4 * opts.pix); + break; + case 'triangle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + break; + case 'diamond': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + break; + case 'circle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth); + context.arc(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth, 5 * opts.pix, 0, 2 * Math.PI); + break; + case 'rect': + context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + break; + case 'square': + context.moveTo(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + context.fillRect(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix); + break; + default: + context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + } + context.closePath(); + context.fill(); + } + }); + } + + // draw text list + textList.forEach(function(item, index) { + var startX = offset.x + arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight; + } + var startY = offset.y + lineHeight * index + (lineHeight - fontSize)/2 - 1 + boxPadding + fontSize; + context.beginPath(); + context.setFontSize(fontSize); + context.setTextBaseline('normal'); + context.setFillStyle(toolTipOption.fontColor); + context.fillText(item.text, startX, startY); + context.closePath(); + context.stroke(); + }); +} + +function drawColumnDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let columnOption = assign({}, { + type: 'group', + width: eachSpacing / 2, + meterBorder: 4, + meterFillColor: '#FFFFFF', + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + labelPosition: 'outside' + }, opts.extra.column); + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + } + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing); + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + + // 计算0轴坐标 + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange); + let zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2]; + eachSeries.zeroPoints = zeroPoints; + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process); + var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(tooltipPoints); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + //fix issues/I27B1N yyoinge & Joeshu + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const top = item.y > zeroPoints ? zeroPoints : item.y; + const width = item.width; + const height = Math.abs(zeroPoints - item.y); + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + if(item.y > zeroPoints){ + columnOption.barBorderRadius = [0, 0,width / 2, width / 2]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.lineTo(startX, zeroPoints); + context.lineTo(startX, item.y); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + //context.stroke(); + context.fill(); + } + }; + break; + case 'stack': + // 绘制堆叠数据图 + var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(points); + points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + context.beginPath(); + var fillColor = item.color || eachSeries.color; + var startX = item.x - item.width / 2 + 1; + var height = opts.height - item.y - opts.area[2]; + var height0 = opts.height - item.y0 - opts.area[2]; + if (seriesIndex > 0) { + height -= height0; + } + context.setFillStyle(fillColor); + context.moveTo(startX, item.y); + context.fillRect(startX, item.y, item.width, height); + context.closePath(); + context.fill(); + } + }; + break; + case 'meter': + // 绘制温度计数据图 + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + //画背景颜色 + context.beginPath(); + if (seriesIndex == 0 && columnOption.meterBorder > 0) { + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(columnOption.meterBorder * opts.pix); + } + if(seriesIndex == 0){ + context.setFillStyle(columnOption.meterFillColor); + }else{ + context.setFillStyle(item.color || eachSeries.color); + } + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const top = item.y; + const width = item.width; + const height = zeroPoints - item.y; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + context.fill(); + }else{ + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.lineTo(startX, zeroPoints); + context.lineTo(startX, item.y); + context.fill(); + } + if (seriesIndex == 0 && columnOption.meterBorder > 0) { + context.closePath(); + context.stroke(); + } + } + } + break; + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + drawColumePointText(points, eachSeries, config, context, opts); + break; + case 'stack': + var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + drawColumePointText(points, eachSeries, config, context, opts); + break; + case 'meter': + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawColumePointText(points, eachSeries, config, context, opts); + break; + } + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawMountDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let mountOption = assign({}, { + type: 'mount', + widthRatio: 1, + borderWidth: 1, + barBorderCircle: false, + barBorderRadius: [], + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.mount); + mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio; + mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio; + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + } + mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config); + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[0]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + + // 计算0轴坐标 + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange); + let zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2]; + + var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process); + switch (mountOption.type) { + case 'bar': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4) || mountOption.barBorderCircle === true) { + const left = startX; + const top = item.y > zeroPoints ? zeroPoints : item.y; + const width = item.width; + const height = Math.abs(zeroPoints - item.y); + if (mountOption.barBorderCircle) { + mountOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + if(item.y > zeroPoints){ + mountOption.barBorderRadius = [0, 0,width / 2, width / 2]; + } + let [r0, r1, r2, r3] = mountOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.lineTo(startX, zeroPoints); + context.lineTo(startX, item.y); + } + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.closePath(); + context.stroke(); + } + context.fill(); + } + }; + break; + case 'triangle': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + context.moveTo(startX, zeroPoints); + context.lineTo(item.x, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.stroke(); + } + context.fill(); + } + }; + break; + case 'mount': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + context.moveTo(startX, zeroPoints); + context.bezierCurveTo(item.x - item.width/4, zeroPoints, item.x - item.width/4, item.y, item.x, item.y); + context.bezierCurveTo(item.x + item.width/4, item.y, item.x + item.width/4, zeroPoints, startX + item.width, zeroPoints); + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.stroke(); + } + context.fill(); + } + }; + break; + case 'sharp': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + context.moveTo(startX, zeroPoints); + context.quadraticCurveTo(item.x - 0, zeroPoints - height/4, item.x, item.y); + context.quadraticCurveTo(item.x + 0, zeroPoints - height/4, startX + item.width, zeroPoints) + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.stroke(); + } + context.fill(); + } + }; + break; + } + + if (opts.dataLabel !== false && process === 1) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[0]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process); + drawMountPointText(points, series, config, context, opts, zeroPoints); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: points, + eachSpacing: eachSpacing + }; +} + +function drawBarDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let yAxisPoints = []; + let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/opts.categories.length; + for (let i = 0; i < opts.categories.length; i++) { + yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i); + } + let columnOption = assign({}, { + type: 'group', + width: eachSpacing / 2, + meterBorder: 4, + meterFillColor: '#FFFFFF', + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.bar); + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = yAxisPoints.length + 2; + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing); + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.xAxisData.ranges); + maxRange = ranges.pop(); + minRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process); + var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(tooltipPoints); + points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + //fix issues/I27B1N yyoinge & Joeshu + if (item !== null && i > leftNum && i < rightNum) { + //var startX = item.x - item.width / 2; + var startX = opts.area[3]; + var startY = item.y - item.width / 2; + var height = item.height; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, item.x, item.y); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const width = item.width; + const top = item.y - item.width / 2; + const height = item.height; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + + context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2); + context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0); + context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2); + context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, startY); + context.lineTo(item.x, startY); + context.lineTo(item.x, startY + item.width); + context.lineTo(startX, startY + item.width); + context.lineTo(startX, startY); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + //context.stroke(); + context.fill(); + } + }; + break; + case 'stack': + // 绘制堆叠数据图 + var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(points); + points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + context.beginPath(); + var fillColor = item.color || eachSeries.color; + var startX = item.x0; + context.setFillStyle(fillColor); + context.moveTo(startX, item.y - item.width/2); + context.fillRect(startX, item.y - item.width/2, item.height , item.width); + context.closePath(); + context.fill(); + } + }; + break; + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.xAxisData.ranges); + maxRange = ranges.pop(); + minRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process); + points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts); + drawBarPointText(points, eachSeries, config, context, opts); + break; + case 'stack': + var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + drawBarPointText(points, eachSeries, config, context, opts); + break; + } + }); + } + return { + yAxisPoints: yAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawCandleDataPoints(series, seriesMA, opts, config, context) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var candleOption = assign({}, { + color: {}, + average: {} + }, opts.extra.candle); + candleOption.color = assign({}, { + upLine: '#f04864', + upFill: '#f04864', + downLine: '#2fc25b', + downFill: '#2fc25b' + }, candleOption.color); + candleOption.average = assign({}, { + show: false, + name: [], + day: [], + color: config.color + }, candleOption.average); + opts.extra.candle = candleOption; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + //画均线 + if (candleOption.average.show || seriesMA) { //Merge pull request !12 from 邱贵翔 + seriesMA.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + var splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(1); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, + item.y); + } + } + context.moveTo(points[0].x, points[0].y); + } + context.closePath(); + context.stroke(); + } + }); + } + //画K线 + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + var splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList[0].length; i++) { + if (i > leftNum && i < rightNum) { + let item = splitPointList[0][i]; + context.beginPath(); + //如果上涨 + if (data[i][1] - data[i][0] > 0) { + context.setStrokeStyle(candleOption.color.upLine); + context.setFillStyle(candleOption.color.upFill); + context.setLineWidth(1 * opts.pix); + context.moveTo(item[3].x, item[3].y); //顶点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点 + context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[2].x, item[2].y); //底点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点 + context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.moveTo(item[3].x, item[3].y); //顶点 + } else { + context.setStrokeStyle(candleOption.color.downLine); + context.setFillStyle(candleOption.color.downFill); + context.setLineWidth(1 * opts.pix); + context.moveTo(item[3].x, item[3].y); //顶点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点 + context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[2].x, item[2].y); //底点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点 + context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.moveTo(item[3].x, item[3].y); //顶点 + } + context.closePath(); + context.fill(); + context.stroke(); + } + } + }); + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawAreaDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var areaOption = assign({}, { + type: 'straight', + opacity: 0.2, + addLine: false, + width: 2, + gradient: false, + activeType: 'none' + }, opts.extra.area); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let endY = opts.height - opts.area[2]; + let calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + let data = eachSeries.data; + let points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + let splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + // 绘制区域数 + context.beginPath(); + context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + if (areaOption.gradient) { + let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]); + gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + } else { + context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + } + context.setLineWidth(areaOption.width * opts.pix); + if (points.length > 1) { + let firstPoint = points[0]; + let lastPoint = points[points.length - 1]; + context.moveTo(firstPoint.x, firstPoint.y); + let startPoint = 0; + if (areaOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + let ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (areaOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (areaOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + let item = points[0]; + context.moveTo(item.x - eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, endY); + // context.lineTo(item.x - eachSpacing / 2, endY); + // context.moveTo(item.x - eachSpacing / 2, item.y); + } + context.closePath(); + context.fill(); + //画连线 + if (areaOption.addLine) { + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(areaOption.width * opts.pix); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + if (areaOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + let ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (areaOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (areaOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.moveTo(points[0].x, points[0].y); + } + context.stroke(); + context.setLineDash([]); + } + } + //画点 + if (opts.dataPointShape !== false) { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, areaOption,seriesIndex); + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawScatterDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var scatterOption = assign({}, { + type: 'circle' + }, opts.extra.scatter); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setFillStyle(eachSeries.color); + context.setLineWidth(1 * opts.pix); + var shape = eachSeries.pointShape; + if (shape === 'diamond') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'triangle') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); + }); + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawBubbleDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var bubbleOption = assign({}, { + opacity: 1, + border:2 + }, opts.extra.bubble); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(bubbleOption.border * opts.pix); + context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity)); + points.forEach(function(item, index) { + context.moveTo(item.x + item.r, item.y); + context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false); + }); + context.closePath(); + context.fill(); + context.stroke(); + + if (opts.dataLabel !== false && process === 1) { + points.forEach(function(item, index) { + context.beginPath(); + var fontSize = eachSeries.textSize * opts.pix || config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(eachSeries.textColor || "#FFFFFF"); + context.setTextAlign('center'); + context.fillText(String(item.t), item.x, item.y + fontSize/2); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + }); + } + }); + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawLineDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var lineOption = assign({}, { + type: 'straight', + width: 2, + activeType: 'none', + linearType: 'none', + onShadow: false, + animation: 'vertical', + }, opts.extra.line); + lineOption.width *= opts.pix; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + // 这段很神奇的代码用于解决ios16的setStrokeStyle失效的bug + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.moveTo(-10000, -10000); + context.lineTo(-10001, -10001); + context.stroke(); + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process); + calPoints.push(points); + var splitPointList = splitPoints(points,eachSeries); + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + var strokeColor = eachSeries.color; + if (lineOption.linearType !== 'none' && eachSeries.linearColor && eachSeries.linearColor.length > 0) { + var grd = context.createLinearGradient(opts.chartData.xAxisData.startX, opts.height/2, opts.chartData.xAxisData.endX, opts.height/2); + for (var i = 0; i < eachSeries.linearColor.length; i++) { + grd.addColorStop(eachSeries.linearColor[i][0], hexToRgb(eachSeries.linearColor[i][1], 1)); + } + strokeColor = grd + } + context.setStrokeStyle(strokeColor); + if (lineOption.onShadow == true && eachSeries.setShadow && eachSeries.setShadow.length > 0) { + context.setShadow(eachSeries.setShadow[0], eachSeries.setShadow[1], eachSeries.setShadow[2], eachSeries.setShadow[3]); + }else{ + context.setShadow(0, 0, 0, 'rgba(0,0,0,0)'); + } + context.setLineWidth(lineOption.width); + splitPointList.forEach(function(points, index) { + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + if (lineOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (lineOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (lineOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.moveTo(points[0].x, points[0].y); + } + }); + context.stroke(); + context.setLineDash([]); + if (opts.dataPointShape !== false) { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, lineOption); + }); + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawMixDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let columnOption = assign({}, { + width: eachSpacing / 2, + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.mix.column); + let areaOption = assign({}, { + opacity: 0.2, + gradient: false + }, opts.extra.mix.area); + let lineOption = assign({}, { + width: 2 + }, opts.extra.mix.line); + let endY = opts.height - opts.area[2]; + let calPoints = []; + var columnIndex = 0; + var columnLength = 0; + series.forEach(function(eachSeries, seriesIndex) { + if (eachSeries.type == 'column') { + columnLength += 1; + } + }); + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + // 绘制柱状数据图 + if (eachSeries.type == 'column') { + points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle) { + const left = startX; + const top = item.y; + const width = item.width; + const height = opts.height - opts.area[2] - item.y; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, opts.height - opts.area[2]); + context.lineTo(startX, opts.height - opts.area[2]); + context.lineTo(startX, item.y); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + context.fill(); + } + } + columnIndex += 1; + } + //绘制区域图数据 + if (eachSeries.type == 'area') { + let splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + // 绘制区域数据 + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + if (areaOption.gradient) { + let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]); + gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + } else { + context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + } + context.setLineWidth(2 * opts.pix); + if (points.length > 1) { + var firstPoint = points[0]; + let lastPoint = points[points.length - 1]; + context.moveTo(firstPoint.x, firstPoint.y); + let startPoint = 0; + if (eachSeries.style === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } else { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + let item = points[0]; + context.moveTo(item.x - eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, endY); + // context.lineTo(item.x - eachSpacing / 2, endY); + // context.moveTo(item.x - eachSpacing / 2, item.y); + } + context.closePath(); + context.fill(); + } + } + // 绘制折线数据图 + if (eachSeries.type == 'line') { + var splitPointList = splitPoints(points,eachSeries); + splitPointList.forEach(function(points, index) { + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(lineOption.width * opts.pix); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + if (eachSeries.style == 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, + item.x, item.y); + } + } + } else { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + } + } + context.moveTo(points[0].x, points[0].y); + } + context.stroke(); + context.setLineDash([]); + }); + } + // 绘制点数据图 + if (eachSeries.type == 'point') { + eachSeries.addPoint = true; + } + if (eachSeries.addPoint == true && eachSeries.type !== 'column') { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + }); + if (opts.dataLabel !== false && process === 1) { + var columnIndex = 0; + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + if (eachSeries.type !== 'column') { + drawPointText(points, eachSeries, config, context, opts); + } else { + points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); + drawPointText(points, eachSeries, config, context, opts); + columnIndex += 1; + } + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing, + } +} + + +function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) { + var toolTipOption = opts.extra.tooltip || {}; + if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'mount' || opts.type == 'candle' || opts.type == 'mix')) { + drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints); + } + context.restore(); + +} + +function drawXAxis(categories, opts, config, context) { + + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + startX = xAxisData.startX, + endX = xAxisData.endX, + eachSpacing = xAxisData.eachSpacing; + var boundaryGap = 'center'; + if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area'|| opts.type == 'scatter' || opts.type == 'bubble') { + boundaryGap = opts.xAxis.boundaryGap; + } + var startY = opts.height - opts.area[2]; + var endY = opts.area[0]; + + //绘制滚动条 + if (opts.enableScroll && opts.xAxis.scrollShow) { + var scrollY = opts.height - opts.area[2] + config.xAxisHeight; + var scrollScreenWidth = endX - startX; + var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1); + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + scrollTotalWidth += (opts.extra.mount.widthRatio - 1)*eachSpacing; + } + var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth; + var scrollLeft = 0; + if (opts._scrollDistance_) { + scrollLeft = -opts._scrollDistance_ * (scrollScreenWidth) / scrollTotalWidth; + } + context.beginPath(); + context.setLineCap('round'); + context.setLineWidth(6 * opts.pix); + context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF"); + context.moveTo(startX, scrollY); + context.lineTo(endX, scrollY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.setLineCap('round'); + context.setLineWidth(6 * opts.pix); + context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6"); + context.moveTo(startX + scrollLeft, scrollY); + context.lineTo(startX + scrollLeft + scrollWidth, scrollY); + context.stroke(); + context.closePath(); + context.setLineCap('butt'); + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + //绘制X轴刻度线 + if (opts.xAxis.calibration === true) { + context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); + context.setLineCap('butt'); + context.setLineWidth(1 * opts.pix); + xAxisPoints.forEach(function(item, index) { + if (index > 0) { + context.beginPath(); + context.moveTo(item - eachSpacing / 2, startY); + context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix); + context.closePath(); + context.stroke(); + } + }); + } + //绘制X轴网格 + if (opts.xAxis.disableGrid !== true) { + context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); + context.setLineCap('butt'); + context.setLineWidth(1 * opts.pix); + if (opts.xAxis.gridType == 'dash') { + context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]); + } + opts.xAxis.gridEval = opts.xAxis.gridEval || 1; + xAxisPoints.forEach(function(item, index) { + if (index % opts.xAxis.gridEval == 0) { + context.beginPath(); + context.moveTo(item, startY); + context.lineTo(item, endY); + context.stroke(); + } + }); + context.setLineDash([]); + } + //绘制X轴文案 + if (opts.xAxis.disabled !== true) { + // 对X轴列表做抽稀处理 + //默认全部显示X轴标签 + let maxXAxisListLength = categories.length; + //如果设置了X轴单屏数量 + if (opts.xAxis.labelCount) { + //如果设置X轴密度 + if (opts.xAxis.itemCount) { + maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount); + } else { + maxXAxisListLength = opts.xAxis.labelCount; + } + maxXAxisListLength -= 1; + } + + let ratio = Math.ceil(categories.length / maxXAxisListLength); + + let newCategories = []; + let cgLength = categories.length; + for (let i = 0; i < cgLength; i++) { + if (i % ratio !== 0) { + newCategories.push(""); + } else { + newCategories.push(categories[i]); + } + } + newCategories[cgLength - 1] = categories[cgLength - 1]; + var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize; + if (config._xAxisTextAngle_ === 0) { + newCategories.forEach(function(item, index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item,index,opts) : item; + var offset = -measureText(String(xitem), xAxisFontSize, context) / 2; + if (boundaryGap == 'center') { + offset += eachSpacing / 2; + } + var scrollHeight = 0; + if (opts.xAxis.scrollShow) { + scrollHeight = 6 * opts.pix; + } + // 如果在主视图区域内 + var _scrollDistance_ = opts._scrollDistance_ || 0; + var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index]; + if((truePoints - Math.abs(_scrollDistance_)) >= (opts.area[3] - 1) && (truePoints - Math.abs(_scrollDistance_)) <= (opts.width - opts.area[1] + 1)){ + context.beginPath(); + context.setFontSize(xAxisFontSize); + context.setFillStyle(opts.xAxis.fontColor || opts.fontColor); + context.fillText(String(xitem), xAxisPoints[index] + offset, startY + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.fontSize) * opts.pix / 2 + opts.xAxis.fontSize * opts.pix); + context.closePath(); + context.stroke(); + } + }); + } else { + newCategories.forEach(function(item, index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item; + // 如果在主视图区域内 + var _scrollDistance_ = opts._scrollDistance_ || 0; + var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index]; + if((truePoints - Math.abs(_scrollDistance_)) >= (opts.area[3] - 1) && (truePoints - Math.abs(_scrollDistance_)) <= (opts.width - opts.area[1] + 1)){ + context.save(); + context.beginPath(); + context.setFontSize(xAxisFontSize); + context.setFillStyle(opts.xAxis.fontColor || opts.fontColor); + var textWidth = measureText(String(xitem), xAxisFontSize, context); + var offsetX = xAxisPoints[index]; + if (boundaryGap == 'center') { + offsetX = xAxisPoints[index] + eachSpacing / 2; + } + var scrollHeight = 0; + if (opts.xAxis.scrollShow) { + scrollHeight = 6 * opts.pix; + } + var offsetY = startY + opts.xAxis.marginTop * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_)); + if(opts.xAxis.rotateAngle < 0){ + offsetX -= xAxisFontSize / 2; + textWidth = 0; + }else{ + offsetX += xAxisFontSize / 2; + textWidth = -textWidth; + } + context.translate(offsetX, offsetY); + context.rotate(-1 * config._xAxisTextAngle_); + context.fillText(String(xitem), textWidth , 0 ); + context.closePath(); + context.stroke(); + context.restore(); + } + }); + } + } + context.restore(); + + //画X轴标题 + if (opts.xAxis.title) { + context.beginPath(); + context.setFontSize(opts.xAxis.titleFontSize * opts.pix); + context.setFillStyle(opts.xAxis.titleFontColor); + context.fillText(String(opts.xAxis.title), opts.width - opts.area[1] + opts.xAxis.titleOffsetX * opts.pix,opts.height - opts.area[2] + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.titleFontSize) * opts.pix / 2 + (opts.xAxis.titleFontSize + opts.xAxis.titleOffsetY) * opts.pix); + context.closePath(); + context.stroke(); + } + + //绘制X轴轴线 + if (opts.xAxis.axisLine) { + context.beginPath(); + context.setStrokeStyle(opts.xAxis.axisLineColor); + context.setLineWidth(1 * opts.pix); + context.moveTo(startX, opts.height - opts.area[2]); + context.lineTo(endX, opts.height - opts.area[2]); + context.stroke(); + } +} + +function drawYAxisGrid(categories, opts, config, context) { + if (opts.yAxis.disableGrid === true) { + return; + } + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let eachSpacing = spacingValid / opts.yAxis.splitNumber; + let startX = opts.area[3]; + let xAxisPoints = opts.chartData.xAxisData.xAxisPoints, + xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing; + let TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1); + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1 ){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + TotalWidth += (opts.extra.mount.widthRatio - 1) * xAxiseachSpacing; + } + let endX = startX + TotalWidth; + let points = []; + let startY = 1 + if (opts.xAxis.axisLine === false) { + startY = 0 + } + for (let i = startY; i < opts.yAxis.splitNumber + 1; i++) { + points.push(opts.height - opts.area[2] - eachSpacing * i); + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + if (opts.yAxis.gridType == 'dash') { + context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]); + } + context.setStrokeStyle(opts.yAxis.gridColor); + context.setLineWidth(1 * opts.pix); + points.forEach(function(item, index) { + context.beginPath(); + context.moveTo(startX, item); + context.lineTo(endX, item); + context.stroke(); + }); + context.setLineDash([]); + context.restore(); +} + +function drawYAxis(series, opts, config, context) { + if (opts.yAxis.disabled === true) { + return; + } + var spacingValid = opts.height - opts.area[0] - opts.area[2]; + var eachSpacing = spacingValid / opts.yAxis.splitNumber; + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + var endY = opts.height - opts.area[2]; + // set YAxis background + context.beginPath(); + context.setFillStyle(opts.background); + if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') { + context.fillRect(0, 0, startX, endY + 2 * opts.pix); + } + if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') { + context.fillRect(endX, 0, opts.width, endY + 2 * opts.pix); + } + context.closePath(); + context.stroke(); + + let tStartLeft = opts.area[3]; + let tStartRight = opts.width - opts.area[1]; + let tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2; + if (opts.yAxis.data) { + for (let i = 0; i < opts.yAxis.data.length; i++) { + let yData = opts.yAxis.data[i]; + var points = []; + if(yData.type === 'categories'){ + for (let i = 0; i <= yData.categories.length; i++) { + points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * i); + } + }else{ + for (let i = 0; i <= opts.yAxis.splitNumber; i++) { + points.push(opts.area[0] + eachSpacing * i); + } + } + if (yData.disabled !== true) { + let rangesFormat = opts.chartData.yAxisData.rangesFormat[i]; + let yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize; + let yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i]; + let textAlign = yData.textAlign || "right"; + //画Y轴刻度及文案 + rangesFormat.forEach(function(item, index) { + var pos = points[index]; + context.beginPath(); + context.setFontSize(yAxisFontSize); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(yData.axisLineColor || '#cccccc'); + context.setFillStyle(yData.fontColor || opts.fontColor); + let tmpstrat = 0; + let gapwidth = 4 * opts.pix; + if (yAxisWidth.position == 'left') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartLeft, pos); + context.lineTo(tStartLeft - 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + //画文字 + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartLeft - yAxisWidth.width + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartLeft - gapwidth + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartLeft - yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + + } else if (yAxisWidth.position == 'right') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartRight, pos); + context.lineTo(tStartRight + 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartRight + gapwidth + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartRight + yAxisWidth.width + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartRight + yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + } else if (yAxisWidth.position == 'center') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartCenter, pos); + context.lineTo(tStartCenter - 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + //画文字 + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartCenter - yAxisWidth.width + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartCenter - gapwidth + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartCenter - yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + } + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + }); + //画Y轴轴线 + if (yData.axisLine !== false) { + context.beginPath(); + context.setStrokeStyle(yData.axisLineColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + if (yAxisWidth.position == 'left') { + context.moveTo(tStartLeft, opts.height - opts.area[2]); + context.lineTo(tStartLeft, opts.area[0]); + } else if (yAxisWidth.position == 'right') { + context.moveTo(tStartRight, opts.height - opts.area[2]); + context.lineTo(tStartRight, opts.area[0]); + } else if (yAxisWidth.position == 'center') { + context.moveTo(tStartCenter, opts.height - opts.area[2]); + context.lineTo(tStartCenter, opts.area[0]); + } + context.stroke(); + } + //画Y轴标题 + if (opts.yAxis.showTitle) { + let titleFontSize = yData.titleFontSize * opts.pix || config.fontSize; + let title = yData.title; + context.beginPath(); + context.setFontSize(titleFontSize); + context.setFillStyle(yData.titleFontColor || opts.fontColor); + if (yAxisWidth.position == 'left') { + context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } else if (yAxisWidth.position == 'right') { + context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } else if (yAxisWidth.position == 'center') { + context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } + context.closePath(); + context.stroke(); + } + if (yAxisWidth.position == 'left') { + tStartLeft -= (yAxisWidth.width + opts.yAxis.padding * opts.pix); + } else { + tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix; + } + } + } + } + +} + +function drawLegend(series, opts, config, context, chartData) { + if (opts.legend.show === false) { + return; + } + let legendData = chartData.legendData; + let legendList = legendData.points; + let legendArea = legendData.area; + let padding = opts.legend.padding * opts.pix; + let fontSize = opts.legend.fontSize * opts.pix; + let shapeWidth = 15 * opts.pix; + let shapeRight = 5 * opts.pix; + let itemGap = opts.legend.itemGap * opts.pix; + let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize); + //画背景及边框 + context.beginPath(); + context.setLineWidth(opts.legend.borderWidth * opts.pix); + context.setStrokeStyle(opts.legend.borderColor); + context.setFillStyle(opts.legend.backgroundColor); + context.moveTo(legendArea.start.x, legendArea.start.y); + context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height); + context.closePath(); + context.fill(); + context.stroke(); + legendList.forEach(function(itemList, listIndex) { + let width = 0; + let height = 0; + width = legendData.widthArr[listIndex]; + height = legendData.heightArr[listIndex]; + let startX = 0; + let startY = 0; + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + switch (opts.legend.float) { + case 'left': + startX = legendArea.start.x + padding; + break; + case 'right': + startX = legendArea.start.x + legendArea.width - width; + break; + default: + startX = legendArea.start.x + (legendArea.width - width) / 2; + } + startY = legendArea.start.y + padding + listIndex * lineHeight; + } else { + if (listIndex == 0) { + width = 0; + } else { + width = legendData.widthArr[listIndex - 1]; + } + startX = legendArea.start.x + padding + width; + startY = legendArea.start.y + padding + (legendArea.height - height) / 2; + } + context.setFontSize(config.fontSize); + for (let i = 0; i < itemList.length; i++) { + let item = itemList[i]; + item.area = [0, 0, 0, 0]; + item.area[0] = startX; + item.area[1] = startY; + item.area[3] = startY + lineHeight; + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor); + context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor); + switch (item.legendShape) { + case 'line': + context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix); + break; + case 'triangle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + break; + case 'diamond': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + break; + case 'circle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight); + context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI); + break; + case 'rect': + context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + break; + case 'square': + context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix); + break; + case 'none': + break; + default: + context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + } + context.closePath(); + context.fill(); + context.stroke(); + startX += shapeWidth + shapeRight; + let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2; + const legendText = item.legendText ? item.legendText : item.name; + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor); + context.fillText(legendText, startX, startY + fontTrans); + context.closePath(); + context.stroke(); + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + startX += measureText(legendText, fontSize, context) + itemGap; + item.area[2] = startX; + } else { + item.area[2] = startX + measureText(legendText, fontSize, context) + itemGap;; + startX -= shapeWidth + shapeRight; + startY += lineHeight; + } + } + }); +} + +function drawPieDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var pieOption = assign({}, { + activeOpacity: 0.5, + activeRadius: 10, + offsetAngle: 0, + labelWidth: 15, + ringWidth: 30, + customRadius: 0, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + centerColor: '#FFFFFF', + linearType: 'none', + customColor: [], + }, opts.type == "pie" ? opts.extra.pie : opts.extra.ring); + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + if (config.pieChartLinePadding == 0) { + config.pieChartLinePadding = pieOption.activeRadius * opts.pix; + } + + var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding); + radius = radius < 10 ? 10 : radius; + if (pieOption.customRadius > 0) { + radius = pieOption.customRadius * opts.pix; + } + series = getPieDataPoints(series, radius, process); + var activeRadius = pieOption.activeRadius * opts.pix; + pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config); + series = series.map(function(eachSeries) { + eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180; + return eachSeries; + }); + series.forEach(function(eachSeries, seriesIndex) { + if (opts.tooltip) { + if (opts.tooltip.index == seriesIndex) { + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5)); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + } + } + context.beginPath(); + context.setLineWidth(pieOption.borderWidth * opts.pix); + context.lineJoin = "round"; + context.setStrokeStyle(pieOption.borderColor); + var fillcolor = eachSeries.color; + if (pieOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_) + } + grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(1, hexToRgb(eachSeries.color, 1)) + fillcolor = grd + } + context.setFillStyle(fillcolor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (pieOption.border == true) { + context.stroke(); + } + }); + if (opts.type === 'ring') { + var innerPieWidth = radius * 0.6; + if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) { + innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix); + } + context.beginPath(); + context.setFillStyle(pieOption.centerColor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + } + if (opts.dataLabel !== false && process === 1) { + drawPieText(series, opts, config, context, radius, centerPosition); + } + if (process === 1 && opts.type === 'ring') { + drawRingTitle(opts, config, context, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawRoseDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var roseOption = assign({}, { + type: 'area', + activeOpacity: 0.5, + activeRadius: 10, + offsetAngle: 0, + labelWidth: 15, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + linearType: 'none', + customColor: [], + }, opts.extra.rose); + if (config.pieChartLinePadding == 0) { + config.pieChartLinePadding = roseOption.activeRadius * opts.pix; + } + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding); + radius = radius < 10 ? 10 : radius; + var minRadius = roseOption.minRadius || radius * 0.5; + if(radius < minRadius){ + radius = minRadius + 10; + } + series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process); + var activeRadius = roseOption.activeRadius * opts.pix; + roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config); + series = series.map(function(eachSeries) { + eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180; + return eachSeries; + }); + series.forEach(function(eachSeries, seriesIndex) { + if (opts.tooltip) { + if (opts.tooltip.index == seriesIndex) { + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5)); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI); + context.closePath(); + context.fill(); + } + } + context.beginPath(); + context.setLineWidth(roseOption.borderWidth * opts.pix); + context.lineJoin = "round"; + context.setStrokeStyle(roseOption.borderColor); + var fillcolor = eachSeries.color; + if (roseOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_) + } + grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(1, hexToRgb(eachSeries.color, 1)) + fillcolor = grd + } + context.setFillStyle(fillcolor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (roseOption.border == true) { + context.stroke(); + } + }); + + if (opts.dataLabel !== false && process === 1) { + drawPieText(series, opts, config, context, radius, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawArcbarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var arcbarOption = assign({}, { + startAngle: 0.75, + endAngle: 0.25, + type: 'default', + direction: 'cw', + lineCap: 'round', + width: 12 , + gap: 2 , + linearType: 'none', + customColor: [], + }, opts.extra.arcbar); + series = getArcbarDataPoints(series, arcbarOption, process); + var centerPosition; + if (arcbarOption.centerX || arcbarOption.centerY) { + centerPosition = { + x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2, + y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2 + }; + } else { + centerPosition = { + x: opts.width / 2, + y: opts.height / 2 + }; + } + var radius; + if (arcbarOption.radius) { + radius = arcbarOption.radius; + } else { + radius = Math.min(centerPosition.x, centerPosition.y); + radius -= 5 * opts.pix; + radius -= arcbarOption.width / 2; + } + radius = radius < 10 ? 10 : radius; + arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config); + + for (let i = 0; i < series.length; i++) { + let eachSeries = series[i]; + //背景颜色 + context.setLineWidth(arcbarOption.width * opts.pix); + context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9'); + context.setLineCap(arcbarOption.lineCap); + context.beginPath(); + if (arcbarOption.type == 'default') { + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, arcbarOption.direction == 'ccw'); + } else { + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, arcbarOption.direction == 'ccw'); + } + context.stroke(); + //进度条 + var fillColor = eachSeries.color + if(arcbarOption.linearType == 'custom'){ + var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y); + grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(0, hexToRgb(eachSeries.color, 1)) + fillColor = grd; + } + context.setLineWidth(arcbarOption.width * opts.pix); + context.setStrokeStyle(fillColor); + context.setLineCap(arcbarOption.lineCap); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, arcbarOption.direction == 'ccw'); + context.stroke(); + } + drawRingTitle(opts, config, context, centerPosition); + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawGaugeDataPoints(categories, series, opts, config, context) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var gaugeOption = assign({}, { + type: 'default', + startAngle: 0.75, + endAngle: 0.25, + width: 15, + labelOffset:13, + splitLine: { + fixRadius: 0, + splitNumber: 10, + width: 15, + color: '#FFFFFF', + childNumber: 5, + childWidth: 5 + }, + pointer: { + width: 15, + color: 'auto' + } + }, opts.extra.gauge); + if (gaugeOption.oldAngle == undefined) { + gaugeOption.oldAngle = gaugeOption.startAngle; + } + if (gaugeOption.oldData == undefined) { + gaugeOption.oldData = 0; + } + categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle); + var centerPosition = { + x: opts.width / 2, + y: opts.height / 2 + }; + var radius = Math.min(centerPosition.x, centerPosition.y); + radius -= 5 * opts.pix; + radius -= gaugeOption.width / 2; + radius = radius < 10 ? 10 : radius; + var innerRadius = radius - gaugeOption.width; + var totalAngle = 0; + //判断仪表盘的样式:default百度样式,progress新样式 + if (gaugeOption.type == 'progress') { + //## 第一步画中心圆形背景和进度条背景 + //中心圆形背景 + var pieRadius = radius - gaugeOption.width * 3; + context.beginPath(); + let gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius); + //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径) + gradient.addColorStop('0', hexToRgb(series[0].color, 0.3)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false); + context.fill(); + //画进度条背景 + context.setLineWidth(gaugeOption.width); + context.setStrokeStyle(hexToRgb(series[0].color, 0.3)); + context.setLineCap('round'); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false); + context.stroke(); + //## 第二步画刻度线 + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber; + let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius; + let endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + let len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; + let proc = series[0].data * process; + for (let i = 0; i < len; i++) { + context.beginPath(); + //刻度线随进度变色 + if (proc > (i / len)) { + context.setStrokeStyle(hexToRgb(series[0].color, 1)); + } else { + context.setStrokeStyle(hexToRgb(series[0].color, 0.3)); + } + context.setLineWidth(3 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(endX, 0); + context.stroke(); + context.rotate(childAngle * Math.PI); + } + context.restore(); + //## 第三步画进度条 + series = getGaugeArcbarDataPoints(series, gaugeOption, process); + context.setLineWidth(gaugeOption.width); + context.setStrokeStyle(series[0].color); + context.setLineCap('round'); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false); + context.stroke(); + //## 第四步画指针 + let pointerRadius = radius - gaugeOption.width * 2.5; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((series[0]._proportion_ - 1) * Math.PI); + context.beginPath(); + context.setLineWidth(gaugeOption.width / 3); + let gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6); + gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0)); + gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1)); + gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0)); + context.setStrokeStyle(gradient3); + context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false); + context.stroke(); + context.beginPath(); + context.setLineWidth(1); + context.setStrokeStyle(series[0].color); + context.setFillStyle(series[0].color); + context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4); + context.stroke(); + context.fill(); + context.restore(); + //default百度样式 + } else { + //画背景 + context.setLineWidth(gaugeOption.width); + context.setLineCap('butt'); + for (let i = 0; i < categories.length; i++) { + let eachCategories = categories[i]; + context.beginPath(); + context.setStrokeStyle(eachCategories.color); + context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false); + context.stroke(); + } + context.save(); + //画刻度线 + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber; + let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius; + let endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width; + let childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth; + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { + context.beginPath(); + context.setStrokeStyle(gaugeOption.splitLine.color); + context.setLineWidth(2 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(endX, 0); + context.stroke(); + context.rotate(splitAngle * Math.PI); + } + context.restore(); + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + for (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) { + context.beginPath(); + context.setStrokeStyle(gaugeOption.splitLine.color); + context.setLineWidth(1 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(childendX, 0); + context.stroke(); + context.rotate(childAngle * Math.PI); + } + context.restore(); + //画指针 + series = getGaugeDataPoints(series, categories, gaugeOption, process); + for (let i = 0; i < series.length; i++) { + let eachSeries = series[i]; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((eachSeries._proportion_ - 1) * Math.PI); + context.beginPath(); + context.setFillStyle(eachSeries.color); + context.moveTo(gaugeOption.pointer.width, 0); + context.lineTo(0, -gaugeOption.pointer.width / 2); + context.lineTo(-innerRadius, 0); + context.lineTo(0, gaugeOption.pointer.width / 2); + context.lineTo(gaugeOption.pointer.width, 0); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFillStyle('#FFFFFF'); + context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false); + context.fill(); + context.restore(); + } + if (opts.dataLabel !== false) { + drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context); + } + } + //画仪表盘标题,副标题 + drawRingTitle(opts, config, context, centerPosition); + if (process === 1 && opts.type === 'gauge') { + opts.extra.gauge.oldAngle = series[0]._proportion_; + opts.extra.gauge.oldData = series[0].data; + } + return { + center: centerPosition, + radius: radius, + innerRadius: innerRadius, + categories: categories, + totalAngle: totalAngle + }; +} + +function drawRadarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var radarOption = assign({}, { + gridColor: '#cccccc', + gridType: 'radar', + gridEval:1, + axisLabel:false, + axisLabelTofix:0, + labelShow:true, + labelColor:'#666666', + labelPointShow:false, + labelPointRadius:3, + labelPointColor:'#cccccc', + opacity: 0.2, + gridCount: 3, + border:false, + borderWidth:2, + linearType: 'none', + customColor: [], + }, opts.extra.radar); + var coordinateAngle = getRadarCoordinateSeries(opts.categories.length); + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + var xr = (opts.width - opts.area[1] - opts.area[3]) / 2 + var yr = (opts.height - opts.area[0] - opts.area[2]) / 2 + var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin); + radius -= config.radarLabelTextMargin * opts.pix; + radius = radius < 10 ? 10 : radius; + radius = radarOption.radius ? radarOption.radius : radius; + // 画分割线 + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(radarOption.gridColor); + coordinateAngle.forEach(function(angle,index) { + var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition); + context.moveTo(centerPosition.x, centerPosition.y); + if (index % radarOption.gridEval == 0) { + context.lineTo(pos.x, pos.y); + } + }); + context.stroke(); + context.closePath(); + + // 画背景网格 + var _loop = function _loop(i) { + var startPos = {}; + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(radarOption.gridColor); + if (radarOption.gridType == 'radar') { + coordinateAngle.forEach(function(angle, index) { + var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / + radarOption.gridCount * i * Math.sin(angle), centerPosition); + if (index === 0) { + startPos = pos; + context.moveTo(pos.x, pos.y); + } else { + context.lineTo(pos.x, pos.y); + } + }); + context.lineTo(startPos.x, startPos.y); + } else { + var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition); + context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false); + } + context.stroke(); + context.closePath(); + }; + for (var i = 1; i <= radarOption.gridCount; i++) { + _loop(i); + } + radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config); + var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process); + radarDataPoints.forEach(function(eachSeries, seriesIndex) { + // 绘制区域数据 + context.beginPath(); + context.setLineWidth(radarOption.borderWidth * opts.pix); + context.setStrokeStyle(eachSeries.color); + + var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity); + if (radarOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, radius) + } + grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity)) + grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity)) + fillcolor = grd + } + + context.setFillStyle(fillcolor); + eachSeries.data.forEach(function(item, index) { + if (index === 0) { + context.moveTo(item.position.x, item.position.y); + } else { + context.lineTo(item.position.x, item.position.y); + } + }); + context.closePath(); + context.fill(); + if(radarOption.border === true){ + context.stroke(); + } + context.closePath(); + if (opts.dataPointShape !== false) { + var points = eachSeries.data.map(function(item) { + return item.position; + }); + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + }); + // 画刻度值 + if(radarOption.axisLabel === true){ + const maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series))); + const stepLength = radius / radarOption.gridCount; + const fontSize = opts.fontSize * opts.pix; + context.setFontSize(fontSize); + context.setFillStyle(opts.fontColor); + context.setTextAlign('left'); + for (var i = 0; i < radarOption.gridCount + 1; i++) { + let label = i * maxData / radarOption.gridCount; + label = label.toFixed(radarOption.axisLabelTofix); + context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2); + } + } + + // draw label text + drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context); + + // draw dataLabel + if (opts.dataLabel !== false && process === 1) { + radarDataPoints.forEach(function(eachSeries, seriesIndex) { + context.beginPath(); + var fontSize = eachSeries.textSize * opts.pix || config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(eachSeries.textColor || opts.fontColor); + eachSeries.data.forEach(function(item, index) { + //如果是中心点垂直的上下点位 + if(Math.abs(item.position.x - centerPosition.x)<2){ + //如果在上面 + if(item.position.y < centerPosition.y){ + context.setTextAlign('center'); + context.fillText(item.value, item.position.x, item.position.y - 4); + }else{ + context.setTextAlign('center'); + context.fillText(item.value, item.position.x, item.position.y + fontSize + 2); + } + }else{ + //如果在左侧 + if(item.position.x < centerPosition.x){ + context.setTextAlign('right'); + context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2); + }else{ + context.setTextAlign('left'); + context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2); + } + } + }); + context.closePath(); + context.stroke(); + }); + context.setTextAlign('left'); + } + + return { + center: centerPosition, + radius: radius, + angleList: coordinateAngle + }; +} + +// 经纬度转墨卡托 +function lonlat2mercator(longitude, latitude) { + var mercator = Array(2); + var x = longitude * 20037508.34 / 180; + var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180); + y = y * 20037508.34 / 180; + mercator[0] = x; + mercator[1] = y; + return mercator; +} + +// 墨卡托转经纬度 +function mercator2lonlat(longitude, latitude) { + var lonlat = Array(2) + var x = longitude / 20037508.34 * 180; + var y = latitude / 20037508.34 * 180; + y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2); + lonlat[0] = x; + lonlat[1] = y; + return lonlat; +} + +function getBoundingBox(data) { + var bounds = {},coords; + bounds.xMin = 180; + bounds.xMax = 0; + bounds.yMin = 90; + bounds.yMax = 0 + for (var i = 0; i < data.length; i++) { + var coorda = data[i].geometry.coordinates + for (var k = 0; k < coorda.length; k++) { + coords = coorda[k]; + if (coords.length == 1) { + coords = coords[0] + } + for (var j = 0; j < coords.length; j++) { + var longitude = coords[j][0]; + var latitude = coords[j][1]; + var point = { + x: longitude, + y: latitude + } + bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x; + bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x; + bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y; + bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y; + } + } + } + return bounds; +} + +function coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) { + return { + x: (longitude - bounds.xMin) * scale + xoffset, + y: (bounds.yMax - latitude) * scale + yoffset + }; +} + +function pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) { + return { + x: (pointX - xoffset) / scale + bounds.xMin, + y: bounds.yMax - (pointY - yoffset) / scale + }; +} + +function isRayIntersectsSegment(poi, s_poi, e_poi) { + if (s_poi[1] == e_poi[1]) { + return false; + } + if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) { + return false; + } + if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) { + return false; + } + if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) { + return false; + } + if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) { + return false; + } + if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) { + return false; + } + let xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]); + if (xseg < poi[0]) { + return false; + } else { + return true; + } +} + +function isPoiWithinPoly(poi, poly, mercator) { + let sinsc = 0; + for (let i = 0; i < poly.length; i++) { + let epoly = poly[i][0]; + if (poly.length == 1) { + epoly = poly[i][0] + } + for (let j = 0; j < epoly.length - 1; j++) { + let s_poi = epoly[j]; + let e_poi = epoly[j + 1]; + if (mercator) { + s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]); + e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]); + } + if (isRayIntersectsSegment(poi, s_poi, e_poi)) { + sinsc += 1; + } + } + } + if (sinsc % 2 == 1) { + return true; + } else { + return false; + } +} + +function drawMapDataPoints(series, opts, config, context) { + var mapOption = assign({}, { + border: true, + mercator: false, + borderWidth: 1, + active:true, + borderColor: '#666666', + fillOpacity: 0.6, + activeBorderColor: '#f04864', + activeFillColor: '#facc14', + activeFillOpacity: 1 + }, opts.extra.map); + var coords, point; + var data = series; + var bounds = getBoundingBox(data); + if (mapOption.mercator) { + var max = lonlat2mercator(bounds.xMax, bounds.yMax) + var min = lonlat2mercator(bounds.xMin, bounds.yMin) + bounds.xMax = max[0] + bounds.yMax = max[1] + bounds.xMin = min[0] + bounds.yMin = min[1] + } + var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin); + var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin); + var scale = xScale < yScale ? xScale : yScale; + var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale; + var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale; + for (var i = 0; i < data.length; i++) { + context.beginPath(); + context.setLineWidth(mapOption.borderWidth * opts.pix); + context.setStrokeStyle(mapOption.borderColor); + context.setFillStyle(hexToRgb(series[i].color, series[i].fillOpacity||mapOption.fillOpacity)); + if (mapOption.active == true && opts.tooltip) { + if (opts.tooltip.index == i) { + context.setStrokeStyle(mapOption.activeBorderColor); + context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity)); + } + } + var coorda = data[i].geometry.coordinates + for (var k = 0; k < coorda.length; k++) { + coords = coorda[k]; + if (coords.length == 1) { + coords = coords[0] + } + for (var j = 0; j < coords.length; j++) { + var gaosi = Array(2); + if (mapOption.mercator) { + gaosi = lonlat2mercator(coords[j][0], coords[j][1]) + } else { + gaosi = coords[j] + } + point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset) + if (j === 0) { + context.beginPath(); + context.moveTo(point.x, point.y); + } else { + context.lineTo(point.x, point.y); + } + } + context.fill(); + if (mapOption.border == true) { + context.stroke(); + } + } + } + if (opts.dataLabel == true) { + for (var i = 0; i < data.length; i++) { + var centerPoint = data[i].properties.centroid; + if (centerPoint) { + if (mapOption.mercator) { + centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]) + } + point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset); + let fontSize = data[i].textSize * opts.pix || config.fontSize; + let fontColor = data[i].textColor || opts.fontColor; + if(mapOption.active && mapOption.activeTextColor && opts.tooltip && opts.tooltip.index == i){ + fontColor = mapOption.activeTextColor; + } + let text = data[i].properties.name; + context.beginPath(); + context.setFontSize(fontSize) + context.setFillStyle(fontColor) + context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2); + context.closePath(); + context.stroke(); + } + } + } + opts.chartData.mapData = { + bounds: bounds, + scale: scale, + xoffset: xoffset, + yoffset: yoffset, + mercator: mapOption.mercator + } + drawToolTipBridge(opts, config, context, 1); + context.draw(); +} + +function normalInt(min, max, iter) { + iter = iter == 0 ? 1 : iter; + var arr = []; + for (var i = 0; i < iter; i++) { + arr[i] = Math.random(); + }; + return Math.floor(arr.reduce(function(i, j) { + return i + j + }) / iter * (max - min)) + min; +}; + +function collisionNew(area, points, width, height) { + var isIn = false; + for (let i = 0; i < points.length; i++) { + if (points[i].area) { + if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) { + if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) { + isIn = true; + break; + } else { + isIn = false; + } + } else { + isIn = true; + break; + } + } + } + return isIn; +}; + +function getWordCloudPoint(opts, type, context) { + let points = opts.series; + switch (type) { + case 'normal': + for (let i = 0; i < points.length; i++) { + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + let x, y; + let area; + let breaknum = 0; + while (true) { + breaknum++; + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + + opts.height / 2 + ]; + let isCollision = collisionNew(area, points, opts.width, opts.height); + if (!isCollision) break; + if (breaknum == 1000) { + area = [-100, -100, -100, -100]; + break; + } + }; + points[i].area = area; + } + break; + case 'vertical': + function Spin() { + //获取均匀随机值,是否旋转,旋转的概率为(1-0.5) + if (Math.random() > 0.7) { + return true; + } else { + return false + }; + }; + for (let i = 0; i < points.length; i++) { + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + let isSpin = Spin(); + let x, y, area, areav; + let breaknum = 0; + while (true) { + breaknum++; + let isCollision; + if (isSpin) { + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [y - 5 - tWidth + opts.width / 2, (-x - 5 + opts.height / 2), y + 5 + opts.width / 2, (-x + tHeight + 5 + opts.height / 2)]; + areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-x + tHeight + 5 + opts.height / 2) - 5, (opts.height / 2 - opts.width / 2) + (y - 5 - tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-x + tHeight + 5 + opts.height / 2) + tHeight, (opts.height / 2 - opts.width / 2) + (y - 5 - tWidth + opts.width / 2) + tWidth + 5]; + isCollision = collisionNew(areav, points, opts.height, opts.width); + } else { + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2]; + isCollision = collisionNew(area, points, opts.width, opts.height); + } + if (!isCollision) break; + if (breaknum == 1000) { + area = [-1000, -1000, -1000, -1000]; + break; + } + }; + if (isSpin) { + points[i].area = areav; + points[i].areav = area; + } else { + points[i].area = area; + } + points[i].rotate = isSpin; + }; + break; + } + return points; +} + +function drawWordCloudDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let wordOption = assign({}, { + type: 'normal', + autoColors: true + }, opts.extra.word); + if (!opts.chartData.wordCloudData) { + opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context); + } + context.beginPath(); + context.setFillStyle(opts.background); + context.rect(0, 0, opts.width, opts.height); + context.fill(); + context.save(); + let points = opts.chartData.wordCloudData; + context.translate(opts.width / 2, opts.height / 2); + for (let i = 0; i < points.length; i++) { + context.save(); + if (points[i].rotate) { + context.rotate(90 * Math.PI / 180); + } + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + context.beginPath(); + context.setStrokeStyle(points[i].color); + context.setFillStyle(points[i].color); + context.setFontSize(tHeight); + if (points[i].rotate) { + if (points[i].areav[0] > 0) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process); + } else { + context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process); + } + } else { + context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process); + } + } + } else { + if (points[i].area[0] > 0) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process); + } else { + context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process); + } + } else { + context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process); + } + } + } + context.stroke(); + context.restore(); + } + context.restore(); +} + +function drawFunnelDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let funnelOption = assign({}, { + type:'funnel', + activeWidth: 10, + activeOpacity: 0.3, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + fillOpacity: 1, + minSize: 0, + labelAlign: 'right', + linearType: 'none', + customColor: [], + }, opts.extra.funnel); + let eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length; + let centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.height - opts.area[2] + }; + let activeWidth = funnelOption.activeWidth * opts.pix; + let radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth); + let seriesNew = getFunnelDataPoints(series, radius, funnelOption, eachSpacing, process); + context.save(); + context.translate(centerPosition.x, centerPosition.y); + funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config); + if(funnelOption.type == 'pyramid'){ + for (let i = 0; i < seriesNew.length; i++) { + if (i == seriesNew.length -1) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(-activeWidth, -eachSpacing); + context.lineTo(-seriesNew[i].radius - activeWidth, 0); + context.lineTo(seriesNew[i].radius + activeWidth, 0); + context.lineTo(activeWidth, -eachSpacing); + context.lineTo(-activeWidth, -eachSpacing); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, -eachSpacing); + context.lineTo(-seriesNew[i].radius, 0); + context.lineTo(seriesNew[i].radius, 0); + context.lineTo(0, -eachSpacing); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } else { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i].radius - activeWidth, 0); + context.lineTo(-seriesNew[i + 1].radius - activeWidth, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius + activeWidth, -eachSpacing); + context.lineTo(seriesNew[i].radius + activeWidth, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i].radius, 0); + context.lineTo(-seriesNew[i + 1].radius, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius, -eachSpacing); + context.lineTo(seriesNew[i].radius, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } + context.translate(0, -eachSpacing) + } + }else{ + context.translate(0, - (seriesNew.length - 1) * eachSpacing); + for (let i = 0; i < seriesNew.length; i++) { + if (i == seriesNew.length - 1) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(-activeWidth - funnelOption.minSize/2, 0); + context.lineTo(-seriesNew[i].radius - activeWidth, -eachSpacing); + context.lineTo(seriesNew[i].radius + activeWidth, -eachSpacing); + context.lineTo(activeWidth + funnelOption.minSize/2, 0); + context.lineTo(-activeWidth - funnelOption.minSize/2, 0); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing, centerPosition.x + seriesNew[i].radius, centerPosition.y ]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-funnelOption.minSize/2, 0); + context.lineTo(-seriesNew[i].radius, -eachSpacing); + context.lineTo(seriesNew[i].radius, -eachSpacing); + context.lineTo(funnelOption.minSize/2, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } else { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i + 1].radius - activeWidth, 0); + context.lineTo(-seriesNew[i].radius - activeWidth, -eachSpacing); + context.lineTo(seriesNew[i].radius + activeWidth, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius + activeWidth, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (seriesNew.length - i), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * (seriesNew.length - i - 1)]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i + 1].radius, 0); + context.lineTo(-seriesNew[i].radius, -eachSpacing); + context.lineTo(seriesNew[i].radius, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } + context.translate(0, eachSpacing) + } + } + + context.restore(); + if (opts.dataLabel !== false && process === 1) { + drawFunnelText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition); + } + if (process === 1) { + drawFunnelCenterText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: seriesNew + }; +} + +function drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) { + for (let i = 0; i < series.length; i++) { + let item = series[i]; + if(item.labelShow === false){ + continue; + } + let startX, endX, startY, fontSize; + let text = item.formatter ? item.formatter(item,i,series,opts) : util.toFixed(item._proportion_ * 100) + '%'; + text = item.labelText ? item.labelText : text; + if (labelAlign == 'right') { + if (i == series.length -1) { + startX = (item.funnelArea[2] + centerPosition.x) / 2; + } else { + startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2; + } + endX = startX + activeWidth * 2; + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix; + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.beginPath(); + context.moveTo(startX, startY); + context.lineTo(endX, startY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(endX, startY); + context.arc(endX, startY, 2 * opts.pix, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(text, endX + 5, startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } + if (labelAlign == 'left') { + if (i == series.length -1) { + startX = (item.funnelArea[0] + centerPosition.x) / 2; + } else { + startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2; + } + endX = startX - activeWidth * 2; + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix; + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.beginPath(); + context.moveTo(startX, startY); + context.lineTo(endX, startY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(endX, startY); + context.arc(endX, startY, 2, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } + } +} + +function drawFunnelCenterText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) { + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let startY, fontSize; + if (item.centerText) { + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.centerTextSize * opts.pix || opts.fontSize * opts.pix; + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.centerTextColor || "#FFFFFF"); + context.fillText(item.centerText, centerPosition.x - measureText(item.centerText, fontSize, context) / 2, startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } + } +} + + +function drawCanvas(opts, context) { + context.save(); + context.translate(0, 0.5); + context.restore(); + context.draw(); +} + +var Timing = { + easeIn: function easeIn(pos) { + return Math.pow(pos, 3); + }, + easeOut: function easeOut(pos) { + return Math.pow(pos - 1, 3) + 1; + }, + easeInOut: function easeInOut(pos) { + if ((pos /= 0.5) < 1) { + return 0.5 * Math.pow(pos, 3); + } else { + return 0.5 * (Math.pow(pos - 2, 3) + 2); + } + }, + linear: function linear(pos) { + return pos; + } +}; + +function Animation(opts) { + this.isStop = false; + opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration; + opts.timing = opts.timing || 'easeInOut'; + var delay = 17; + function createAnimationFrame() { + if (typeof setTimeout !== 'undefined') { + return function(step, delay) { + setTimeout(function() { + var timeStamp = +new Date(); + step(timeStamp); + }, delay); + }; + } else if (typeof requestAnimationFrame !== 'undefined') { + return requestAnimationFrame; + } else { + return function(step) { + step(null); + }; + } + }; + var animationFrame = createAnimationFrame(); + var startTimeStamp = null; + var _step = function step(timestamp) { + if (timestamp === null || this.isStop === true) { + opts.onProcess && opts.onProcess(1); + opts.onAnimationFinish && opts.onAnimationFinish(); + return; + } + if (startTimeStamp === null) { + startTimeStamp = timestamp; + } + if (timestamp - startTimeStamp < opts.duration) { + var process = (timestamp - startTimeStamp) / opts.duration; + var timingFunction = Timing[opts.timing]; + process = timingFunction(process); + opts.onProcess && opts.onProcess(process); + animationFrame(_step, delay); + } else { + opts.onProcess && opts.onProcess(1); + opts.onAnimationFinish && opts.onAnimationFinish(); + } + }; + _step = _step.bind(this); + animationFrame(_step, delay); +} + +Animation.prototype.stop = function() { + this.isStop = true; +}; + +function drawCharts(type, opts, config, context) { + var _this = this; + var series = opts.series; + //兼容ECharts饼图类数据格式 + if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') { + series = fixPieSeries(series, opts, config); + } + var categories = opts.categories; + if (type === 'mount') { + categories = []; + for (let j = 0; j < series.length; j++) { + if(series[j].show !== false) categories.push(series[j].name) + } + opts.categories = categories; + } + series = fillSeries(series, opts, config); + var duration = opts.animation ? opts.duration : 0; + _this.animationInstance && _this.animationInstance.stop(); + var seriesMA = null; + if (type == 'candle') { + let average = assign({}, opts.extra.candle.average); + if (average.show) { + seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data); + seriesMA = fillSeries(seriesMA, opts, config); + opts.seriesMA = seriesMA; + } else if (opts.seriesMA) { + seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config); + } else { + seriesMA = series; + } + } else { + seriesMA = series; + } + /* 过滤掉show=false的series */ + opts._series_ = series = filterSeries(series); + //重新计算图表区域 + opts.area = new Array(4); + //复位绘图区域 + for (let j = 0; j < 4; j++) { + opts.area[j] = opts.padding[j] * opts.pix; + } + //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域 + var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context), + legendHeight = _calLegendData.area.wholeHeight, + legendWidth = _calLegendData.area.wholeWidth; + + switch (opts.legend.position) { + case 'top': + opts.area[0] += legendHeight; + break; + case 'bottom': + opts.area[2] += legendHeight; + break; + case 'left': + opts.area[3] += legendWidth; + break; + case 'right': + opts.area[1] += legendWidth; + break; + } + + let _calYAxisData = {}, + yAxisWidth = 0; + if (opts.type === 'line' || opts.type === 'column'|| opts.type === 'mount' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') { + _calYAxisData = calYAxisData(series, opts, config, context); + yAxisWidth = _calYAxisData.yAxisWidth; + //如果显示Y轴标题 + if (opts.yAxis.showTitle) { + let maxTitleHeight = 0; + for (let i = 0; i < opts.yAxis.data.length; i++) { + maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize) + } + opts.area[0] += maxTitleHeight; + } + let rightIndex = 0, + leftIndex = 0; + //计算主绘图区域左右位置 + for (let i = 0; i < yAxisWidth.length; i++) { + if (yAxisWidth[i].position == 'left') { + if (leftIndex > 0) { + opts.area[3] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix; + } else { + opts.area[3] += yAxisWidth[i].width; + } + leftIndex += 1; + } else if (yAxisWidth[i].position == 'right') { + if (rightIndex > 0) { + opts.area[1] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix; + } else { + opts.area[1] += yAxisWidth[i].width; + } + rightIndex += 1; + } + } + } else { + config.yAxisWidth = yAxisWidth; + } + opts.chartData.yAxisData = _calYAxisData; + + if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') { + opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config); + let _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context), + xAxisHeight = _calCategoriesData.xAxisHeight, + angle = _calCategoriesData.angle; + config.xAxisHeight = xAxisHeight; + config._xAxisTextAngle_ = angle; + opts.area[2] += xAxisHeight; + opts.chartData.categoriesData = _calCategoriesData; + } else { + if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') { + opts.chartData.xAxisData = calXAxisData(series, opts, config, context); + categories = opts.chartData.xAxisData.rangesFormat; + let _calCategoriesData = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context), + xAxisHeight = _calCategoriesData.xAxisHeight, + angle = _calCategoriesData.angle; + config.xAxisHeight = xAxisHeight; + config._xAxisTextAngle_ = angle; + opts.area[2] += xAxisHeight; + opts.chartData.categoriesData = _calCategoriesData; + } else { + opts.chartData.xAxisData = { + xAxisPoints: [] + }; + } + } + + //计算右对齐偏移距离 + if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) { + let offsetLeft = 0, + xAxisPoints = opts.chartData.xAxisData.xAxisPoints, + startX = opts.chartData.xAxisData.startX, + endX = opts.chartData.xAxisData.endX, + eachSpacing = opts.chartData.xAxisData.eachSpacing; + let totalWidth = eachSpacing * (xAxisPoints.length - 1); + let screenWidth = endX - startX; + offsetLeft = screenWidth - totalWidth; + _this.scrollOption.currentOffset = offsetLeft; + _this.scrollOption.startTouchX = offsetLeft; + _this.scrollOption.distance = 0; + _this.scrollOption.lastMoveTime = 0; + opts._scrollDistance_ = offsetLeft; + } + + if (type === 'pie' || type === 'ring' || type === 'rose') { + config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts); + } + + switch (type) { + case 'word': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawWordCloudDataPoints(series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'map': + context.clearRect(0, 0, opts.width, opts.height); + drawMapDataPoints(series, opts, config, context); + setTimeout(()=>{ + this.uevent.trigger('renderComplete'); + },50) + break; + case 'funnel': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'line': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process), + xAxisPoints = _drawLineDataPoints.xAxisPoints, + calPoints = _drawLineDataPoints.calPoints, + eachSpacing = _drawLineDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'scatter': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process), + xAxisPoints = _drawScatterDataPoints.xAxisPoints, + calPoints = _drawScatterDataPoints.calPoints, + eachSpacing = _drawScatterDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'bubble': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process), + xAxisPoints = _drawBubbleDataPoints.xAxisPoints, + calPoints = _drawBubbleDataPoints.calPoints, + eachSpacing = _drawBubbleDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'mix': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process), + xAxisPoints = _drawMixDataPoints.xAxisPoints, + calPoints = _drawMixDataPoints.calPoints, + eachSpacing = _drawMixDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'column': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process), + xAxisPoints = _drawColumnDataPoints.xAxisPoints, + calPoints = _drawColumnDataPoints.calPoints, + eachSpacing = _drawColumnDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'mount': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process), + xAxisPoints = _drawMountDataPoints.xAxisPoints, + calPoints = _drawMountDataPoints.calPoints, + eachSpacing = _drawMountDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'bar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawXAxis(categories, opts, config, context); + var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process), + yAxisPoints = _drawBarDataPoints.yAxisPoints, + calPoints = _drawBarDataPoints.calPoints, + eachSpacing = _drawBarDataPoints.eachSpacing; + opts.chartData.yAxisPoints = yAxisPoints; + opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'area': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process), + xAxisPoints = _drawAreaDataPoints.xAxisPoints, + calPoints = _drawAreaDataPoints.calPoints, + eachSpacing = _drawAreaDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'ring': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'pie': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'rose': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'radar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'arcbar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'gauge': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'candle': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process), + xAxisPoints = _drawCandleDataPoints.xAxisPoints, + calPoints = _drawCandleDataPoints.calPoints, + eachSpacing = _drawCandleDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + if (seriesMA) { + drawLegend(seriesMA, opts, config, context, opts.chartData); + } else { + drawLegend(opts.series, opts, config, context, opts.chartData); + } + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + } +} + +function uChartsEvent() { + this.events = {}; +} + +uChartsEvent.prototype.addEventListener = function(type, listener) { + this.events[type] = this.events[type] || []; + this.events[type].push(listener); +}; + +uChartsEvent.prototype.delEventListener = function(type) { + this.events[type] = []; +}; + +uChartsEvent.prototype.trigger = function() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + var type = args[0]; + var params = args.slice(1); + if (!!this.events[type]) { + this.events[type].forEach(function(listener) { + try { + listener.apply(null, params); + } catch (e) { + //console.log('[uCharts] '+e); + } + }); + } +}; + +var uCharts = function uCharts(opts) { + opts.pix = opts.pixelRatio ? opts.pixelRatio : 1; + opts.fontSize = opts.fontSize ? opts.fontSize : 13; + opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor; + if (opts.background == "" || opts.background == "none") { + opts.background = "#FFFFFF" + } + opts.title = assign({}, opts.title); + opts.subtitle = assign({}, opts.subtitle); + opts.duration = opts.duration ? opts.duration : 1000; + opts.yAxis = assign({}, { + data: [], + showTitle: false, + disabled: false, + disableGrid: false, + gridSet: 'number', + splitNumber: 5, + gridType: 'solid', + dashLength: 4 * opts.pix, + gridColor: '#cccccc', + padding: 10, + fontColor: '#666666' + }, opts.yAxis); + opts.xAxis = assign({}, { + rotateLabel: false, + rotateAngle:45, + disabled: false, + disableGrid: false, + splitNumber: 5, + calibration:false, + fontColor: '#666666', + fontSize: 13, + lineHeight: 20, + marginTop: 0, + gridType: 'solid', + dashLength: 4, + scrollAlign: 'left', + boundaryGap: 'center', + axisLine: true, + axisLineColor: '#cccccc', + titleFontSize: 13, + titleOffsetY: 0, + titleOffsetX: 0, + titleFontColor: '#666666' + }, opts.xAxis); + opts.xAxis.scrollPosition = opts.xAxis.scrollAlign; + opts.legend = assign({}, { + show: true, + position: 'bottom', + float: 'center', + backgroundColor: 'rgba(0,0,0,0)', + borderColor: 'rgba(0,0,0,0)', + borderWidth: 0, + padding: 5, + margin: 5, + itemGap: 10, + fontSize: opts.fontSize, + lineHeight: opts.fontSize, + fontColor: opts.fontColor, + formatter: {}, + hiddenColor: '#CECECE' + }, opts.legend); + opts.extra = assign({ + tooltip:{ + legendShape: 'auto' + } + }, opts.extra); + opts.rotate = opts.rotate ? true : false; + opts.animation = opts.animation ? true : false; + opts.rotate = opts.rotate ? true : false; + opts.canvas2d = opts.canvas2d ? true : false; + + let config$$1 = assign({}, config); + config$$1.color = opts.color ? opts.color : config$$1.color; + if (opts.type == 'pie') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + if (opts.type == 'ring') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + if (opts.type == 'rose') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix; + + //屏幕旋转 + config$$1.rotate = opts.rotate; + if (opts.rotate) { + let tempWidth = opts.width; + let tempHeight = opts.height; + opts.width = tempHeight; + opts.height = tempWidth; + } + + //适配高分屏 + opts.padding = opts.padding ? opts.padding : config$$1.padding; + config$$1.yAxisWidth = config.yAxisWidth * opts.pix; + config$$1.fontSize = opts.fontSize * opts.pix; + config$$1.titleFontSize = config.titleFontSize * opts.pix; + config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix; + if(!opts.context){ + throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!'); + } + this.context = opts.context; + if (!this.context.setTextAlign) { + this.context.setStrokeStyle = function(e) { + return this.strokeStyle = e; + } + this.context.setLineWidth = function(e) { + return this.lineWidth = e; + } + this.context.setLineCap = function(e) { + return this.lineCap = e; + } + this.context.setFontSize = function(e) { + return this.font = e + "px sans-serif"; + } + this.context.setFillStyle = function(e) { + return this.fillStyle = e; + } + this.context.setTextAlign = function(e) { + return this.textAlign = e; + } + this.context.setTextBaseline = function(e) { + return this.textBaseline = e; + } + this.context.setShadow = function(offsetX,offsetY,blur,color) { + this.shadowColor = color; + this.shadowOffsetX = offsetX; + this.shadowOffsetY = offsetY; + this.shadowBlur = blur; + } + this.context.draw = function() {} + } + //兼容NVUEsetLineDash + if(!this.context.setLineDash){ + this.context.setLineDash = function(e) {} + } + opts.chartData = {}; + this.uevent = new uChartsEvent(); + this.scrollOption = { + currentOffset: 0, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + this.opts = opts; + this.config = config$$1; + drawCharts.call(this, opts.type, opts, config$$1, this.context); +}; + +uCharts.prototype.updateData = function() { + let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + this.opts = assign({}, this.opts, data); + this.opts.updateData = true; + let scrollPosition = data.scrollPosition || 'current'; + switch (scrollPosition) { + case 'current': + this.opts._scrollDistance_ = this.scrollOption.currentOffset; + break; + case 'left': + this.opts._scrollDistance_ = 0; + this.scrollOption = { + currentOffset: 0, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + break; + case 'right': + let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context), yAxisWidth = _calYAxisData.yAxisWidth; + this.config.yAxisWidth = yAxisWidth; + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let totalWidth = eachSpacing * (xAxisPoints.length - 1); + let screenWidth = endX - startX; + offsetLeft = screenWidth - totalWidth; + this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: offsetLeft, + distance: 0, + lastMoveTime: 0 + }; + this.opts._scrollDistance_ = offsetLeft; + break; + } + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +uCharts.prototype.zoom = function() { + var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount; + if (this.opts.enableScroll !== true) { + console.log('[uCharts] 请启用滚动条后使用') + return; + } + //当前屏幕中间点 + let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2); + this.opts.animation = false; + this.opts.xAxis.itemCount = val.itemCount; + //重新计算x轴偏移距离 + let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context), + yAxisWidth = _calYAxisData.yAxisWidth; + this.config.yAxisWidth = yAxisWidth; + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), + xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let centerLeft = eachSpacing * centerPoint; + let screenWidth = endX - startX; + let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1); + offsetLeft = screenWidth / 2 - centerLeft; + if (offsetLeft > 0) { + offsetLeft = 0; + } + if (offsetLeft < MaxLeft) { + offsetLeft = MaxLeft; + } + this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts); + this.opts._scrollDistance_ = offsetLeft; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +uCharts.prototype.dobuleZoom = function(e) { + if (this.opts.enableScroll !== true) { + console.log('[uCharts] 请启用滚动条后使用') + return; + } + const tcs = e.changedTouches; + if (tcs.length < 2) { + return; + } + for (var i = 0; i < tcs.length; i++) { + tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX; + tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY; + } + const ntcs = [getTouches(tcs[0], this.opts, e),getTouches(tcs[1], this.opts, e)]; + const xlength = Math.abs(ntcs[0].x - ntcs[1].x); + // 记录初始的两指之间的数据 + if(!this.scrollOption.moveCount){ + let cts0 = {changedTouches:[{x:tcs[0].x,y:this.opts.area[0] / this.opts.pix + 2}]}; + let cts1 = {changedTouches:[{x:tcs[1].x,y:this.opts.area[0] / this.opts.pix + 2}]}; + if(this.opts.rotate){ + cts0 = {changedTouches:[{x:this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,y:tcs[0].y}]}; + cts1 = {changedTouches:[{x:this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,y:tcs[1].y}]}; + } + const moveCurrent1 = this.getCurrentDataIndex(cts0).index; + const moveCurrent2 = this.getCurrentDataIndex(cts1).index; + const moveCount = Math.abs(moveCurrent1 - moveCurrent2); + this.scrollOption.moveCount = moveCount; + this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2); + this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2); + return; + } + + let currentEachSpacing = xlength / this.scrollOption.moveCount; + let itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing; + itemCount = itemCount <= 2 ? 2 : itemCount; + itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount; + this.opts.animation = false; + this.opts.xAxis.itemCount = itemCount; + // 重新计算滚动条偏移距离 + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), + xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let currentLeft = eachSpacing * this.scrollOption.moveCurrent1; + let screenWidth = endX - startX; + let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1); + offsetLeft = -currentLeft+Math.min(ntcs[0].x,ntcs[1].x)-this.opts.area[3]-eachSpacing; + if (offsetLeft > 0) { + offsetLeft = 0; + } + if (offsetLeft < MaxLeft) { + offsetLeft = MaxLeft; + } + this.scrollOption.currentOffset= offsetLeft; + this.scrollOption.startTouchX= 0; + this.scrollOption.distance=0; + calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts); + this.opts._scrollDistance_ = offsetLeft; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +} + +uCharts.prototype.stopAnimation = function() { + this.animationInstance && this.animationInstance.stop(); +}; + +uCharts.prototype.addEventListener = function(type, listener) { + this.uevent.addEventListener(type, listener); +}; + +uCharts.prototype.delEventListener = function(type) { + this.uevent.delEventListener(type); +}; + +uCharts.prototype.getCurrentDataIndex = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + let _touches$ = getTouches(touches, this.opts, e); + if (this.opts.type === 'pie' || this.opts.type === 'ring') { + return findPieChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.pieData, this.opts); + } else if (this.opts.type === 'rose') { + return findRoseChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.pieData, this.opts); + } else if (this.opts.type === 'radar') { + return findRadarChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.radarData, this.opts.categories.length); + } else if (this.opts.type === 'funnel') { + return findFunnelChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.funnelData); + } else if (this.opts.type === 'map') { + return findMapChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts); + } else if (this.opts.type === 'word') { + return findWordChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.wordCloudData); + } else if (this.opts.type === 'bar') { + return findBarChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); + } else { + return findCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); + } + } + return -1; +}; + +uCharts.prototype.getLegendDataIndex = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + let _touches$ = getTouches(touches, this.opts, e); + return findLegendIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.legendData); + } + return -1; +}; + +uCharts.prototype.touchLegend = function(e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + var _touches$ = getTouches(touches, this.opts, e); + var index = this.getLegendDataIndex(e); + if (index >= 0) { + if (this.opts.type == 'candle') { + this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show; + } else { + this.opts.series[index].show = !this.opts.series[index].show; + } + this.opts.animation = option.animation ? true : false; + this.opts._scrollDistance_ = this.scrollOption.currentOffset; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); + } + } + +}; + +uCharts.prototype.showToolTip = function(e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (!touches) { + console.log("[uCharts] 未获取到event坐标信息"); + } + var _touches$ = getTouches(touches, this.opts, e); + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1 || index.length>0) { + var seriesData = getSeriesDataItem(this.opts.series, index, current.group); + if (seriesData.length !== 0) { + var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList !== undefined ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index, + group: current.group + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'mount') { + var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, opts._series_[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: opts.chartData.calPoints[index].x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'bar') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1 || index.length>0) { + var seriesData = getSeriesDataItem(this.opts.series, index, current.group); + if (seriesData.length !== 0) { + var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.x = _touches$.x; + opts.tooltip = { + textList: option.textList !== undefined ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'mix') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option), + textList = _getMixToolTipData.textList, + offset = _getMixToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'candle') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, opts._series_[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'map') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, this.opts.series[index]); + seriesData.name = seriesData.properties.name + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + opts.updateData = false; + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'word') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, this.opts.series[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + opts.updateData = false; + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'radar') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var textList = seriesData.map((item) => { + return { + text: option.formatter ? option.formatter(item, this.opts.categories[index], index, this.opts) : item.name + ': ' + item.data, + color: item.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : this.opts.extra.tooltip.legendShape + }; + }); + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } +}; + +uCharts.prototype.translate = function(distance) { + this.scrollOption = { + currentOffset: distance, + startTouchX: distance, + distance: 0, + lastMoveTime: 0 + }; + let opts = assign({}, this.opts, { + _scrollDistance_: distance, + animation: false + }); + drawCharts.call(this, this.opts.type, opts, this.config, this.context); +}; + +uCharts.prototype.scrollStart = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + var _touches$ = getTouches(touches, this.opts, e); + if (touches && this.opts.enableScroll === true) { + this.scrollOption.startTouchX = _touches$.x; + } +}; + +uCharts.prototype.scroll = function(e) { + if (this.scrollOption.lastMoveTime === 0) { + this.scrollOption.lastMoveTime = Date.now(); + } + let Limit = this.opts.touchMoveLimit || 60; + let currMoveTime = Date.now(); + let duration = currMoveTime - this.scrollOption.lastMoveTime; + if (duration < Math.floor(1000 / Limit)) return; + if (this.scrollOption.startTouchX == 0) return; + this.scrollOption.lastMoveTime = currMoveTime; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches && this.opts.enableScroll === true) { + var _touches$ = getTouches(touches, this.opts, e); + var _distance; + _distance = _touches$.x - this.scrollOption.startTouchX; + var currentOffset = this.scrollOption.currentOffset; + var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts); + this.scrollOption.distance = _distance = validDistance - currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset + _distance, + animation: false + }); + this.opts = opts; + drawCharts.call(this, opts.type, opts, this.config, this.context); + return currentOffset + _distance; + } +}; + +uCharts.prototype.scrollEnd = function(e) { + if (this.opts.enableScroll === true) { + var _scrollOption = this.scrollOption, + currentOffset = _scrollOption.currentOffset, + distance = _scrollOption.distance; + this.scrollOption.currentOffset = currentOffset + distance; + this.scrollOption.distance = 0; + this.scrollOption.moveCount = 0; + } +}; + +export default uCharts; \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js new file mode 100644 index 0000000..0902ecd --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js @@ -0,0 +1,18 @@ +/* + * uCharts (R) + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台 + * Copyright (C) 2021 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts (R) 官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ +"use strict";var config={version:"v2.5.0-20230101",yAxisWidth:15,xAxisHeight:22,padding:[10,10,10,10],rotate:false,fontSize:13,fontColor:"#666666",dataPointShape:["circle","circle","circle","circle"],color:["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"],linearColor:["#0EE2F8","#2BDCA8","#FA7D8D","#EB88E2","#2AE3A0","#0EE2F8","#EB88E2","#6773E3","#F78A85"],pieChartLinePadding:15,pieChartTextPadding:5,titleFontSize:20,subtitleFontSize:15,radarLabelTextMargin:13};var assign=function(e,...t){if(e==null){throw new TypeError("[uCharts] Cannot convert undefined or null to object")}if(!t||t.length<=0){return e}function i(e,a){for(let t in a){e[t]=e[t]&&e[t].toString()==="[object Object]"?i(e[t],a[t]):e[t]=a[t]}return e}t.forEach(t=>{e=i(e,t)});return e};var util={toFixed:function t(e,a){a=a||2;if(this.isFloat(e)){e=e.toFixed(a)}return e},isFloat:function t(e){return e%1!==0},approximatelyEqual:function t(e,a){return Math.abs(e-a)<1e-10},isSameSign:function t(e,a){return Math.abs(e)===e&&Math.abs(a)===a||Math.abs(e)!==e&&Math.abs(a)!==a},isSameXCoordinateArea:function t(e,a){return this.isSameSign(e.x,a.x)},isCollision:function t(e,a){e.end={};e.end.x=e.start.x+e.width;e.end.y=e.start.y-e.height;a.end={};a.end.x=a.start.x+a.width;a.end.y=a.start.y-a.height;var i=a.start.x>e.end.x||a.end.xe.start.y||a.start.y1){if(r.extra.mount.widthRatio>2)r.extra.mount.widthRatio=2;n+=(r.extra.mount.widthRatio-1)*a.eachSpacing}var l=e;if(e>=0){l=0;t.uevent.trigger("scrollLeft");t.scrollOption.position="left";r.xAxis.scrollPosition="left"}else if(Math.abs(e)>=n-o){l=o-n;t.uevent.trigger("scrollRight");t.scrollOption.position="right";r.xAxis.scrollPosition="right"}else{t.scrollOption.position=e;r.xAxis.scrollPosition=e}return l}function isInAngleRange(t,e,a){function i(t){while(t<0){t+=2*Math.PI}while(t>2*Math.PI){t-=2*Math.PI}return t}t=i(t);e=i(e);a=i(a);if(e>a){a+=2*Math.PI;if(t=e&&t<=a}function createCurveControlPoints(t,e){function a(t,e){if(t[e-1]&&t[e+1]){return t[e].y>=Math.max(t[e-1].y,t[e+1].y)||t[e].y<=Math.min(t[e-1].y,t[e+1].y)}else{return false}}function c(t,e){if(t[e-1]&&t[e+1]){return t[e].x>=Math.max(t[e-1].x,t[e+1].x)||t[e].x<=Math.min(t[e-1].x,t[e+1].x)}else{return false}}var i=.2;var r=.2;var o=null;var n=null;var l=null;var s=null;if(e<1){o=t[0].x+(t[1].x-t[0].x)*i;n=t[0].y+(t[1].y-t[0].y)*i}else{o=t[e].x+(t[e+1].x-t[e-1].x)*i;n=t[e].y+(t[e+1].y-t[e-1].y)*i}if(e>t.length-3){var h=t.length-1;l=t[h].x-(t[h].x-t[h-1].x)*r;s=t[h].y-(t[h].y-t[h-1].y)*r}else{l=t[e+1].x-(t[e+2].x-t[e].x)*r;s=t[e+1].y-(t[e+2].y-t[e].y)*r}if(a(t,e+1)){s=t[e+1].y}if(a(t,e)){n=t[e].y}if(c(t,e+1)){l=t[e+1].x}if(c(t,e)){o=t[e].x}if(n>=Math.max(t[e].y,t[e+1].y)||n<=Math.min(t[e].y,t[e+1].y)){n=t[e].y}if(s>=Math.max(t[e].y,t[e+1].y)||s<=Math.min(t[e].y,t[e+1].y)){s=t[e+1].y}if(o>=Math.max(t[e].x,t[e+1].x)||o<=Math.min(t[e].x,t[e+1].x)){o=t[e].x}if(l>=Math.max(t[e].x,t[e+1].x)||l<=Math.min(t[e].x,t[e+1].x)){l=t[e+1].x}return{ctrA:{x:o,y:n},ctrB:{x:l,y:s}}}function convertCoordinateOrigin(t,e,a){return{x:a.x+t,y:a.y-e}}function avoidCollision(t,e){if(e){while(util.isCollision(t,e)){if(t.start.x>0){t.start.y--}else if(t.start.x<0){t.start.y++}else{if(t.start.y>0){t.start.y++}else{t.start.y--}}}}return t}function fixPieSeries(e,a,t){let i=[];if(e.length>0&&e[0].data.constructor.toString().indexOf("Array")>-1){a._pieSeries_=e;let t=e[0].data;for(var r=0;r=1e4){a=1e3}else if(i>=1e3){a=100}else if(i>=100){a=10}else if(i>=10){a=5}else if(i>=1){a=1}else if(i>=.1){a=.1}else if(i>=.01){a=.01}else if(i>=.001){a=.001}else if(i>=1e-4){a=1e-4}else if(i>=1e-5){a=1e-5}else{a=1e-6}return{minRange:findRange(t,"lower",a),maxRange:findRange(e,"upper",a)}}function measureText(a,t,e){var i=0;a=String(a);e=false;if(e!==false&&e!==undefined&&e.setFontSize&&e.measureText){e.setFontSize(t);return e.measureText(a).width}else{var a=a.split("");for(let e=0;e-1;if(n){let t=filterSeries(e);for(var l=0;l5&&arguments[5]!==undefined?arguments[5]:{};var l=a.chartData.calPoints?a.chartData.calPoints:[];let s={};if(r.length>0){let e=[];for(let t=0;t0){e=o[i]}return{text:n.formatter?n.formatter(t,e,i,a):t.name+": "+t.data,color:t.color,legendShape:a.extra.tooltip.legendShape=="auto"?t.legendShape:a.extra.tooltip.legendShape}});var h={x:Math.round(s.x),y:Math.round(s.y)};return{textList:e,offset:h}}function getMixToolTipData(t,e,a,i){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var o=e.chartData.xAxisPoints[a]+e.chartData.eachSpacing/2;var n=t.map(function(t){return{text:r.formatter?r.formatter(t,i[a],a,e):t.name+": "+t.data,color:t.color,disableLegend:t.disableLegend?true:false,legendShape:e.extra.tooltip.legendShape=="auto"?t.legendShape:e.extra.tooltip.legendShape}});n=n.filter(function(t){if(t.disableLegend!==true){return t}});var l={x:Math.round(o),y:0};return{textList:n,offset:l}}function getCandleToolTipData(o,e,n,l,i,t){var r=arguments.length>6&&arguments[6]!==undefined?arguments[6]:{};var a=n.chartData.calPoints;let s=t.color.upFill;let h=t.color.downFill;let c=[s,s,h,s];var d=[];e.map(function(t){if(l==0){if(t.data[1]-t.data[0]<0){c[1]=h}else{c[1]=s}}else{if(t.data[0]o[l-1][1]){c[2]=s}if(t.data[3]4&&arguments[4]!==undefined?arguments[4]:0;var l={index:-1,group:[]};var i=e.chartData.eachSpacing/2;let r=[];if(n&&n.length>0){if(!e.categories){i=0}else{for(let t=1;tt){l.index=e}})}}}return l}function findBarChartCurrentIndex(a,t,e,i){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:0;var o={index:-1,group:[]};var n=e.chartData.eachSpacing/2;let l=e.chartData.yAxisPoints;if(t&&t.length>0){if(isInExactChartArea(a,e,i)){l.forEach(function(t,e){if(a.y+r+n>t){o.index=e}})}}return o}function findLegendIndex(o,t,e){let n=-1;let l=0;if(isInExactLegendArea(o,t.area)){let i=t.points;let r=-1;for(let t=0,e=i.length;tt[0]-l&&o.xt[1]-l&&o.ye.start.x&&t.xe.start.y&&t.y=e.area[3]-10&&t.y>=e.area[0]&&t.y<=e.height-e.area[2]}function findRadarChartCurrentIndex(t,e,a){var r=2*Math.PI/a;var o=-1;if(isInExactPieChartArea(t,e.center,e.radius)){var n=function t(e){if(e<0){e+=2*Math.PI}if(e>2*Math.PI){e-=2*Math.PI}return e};var l=Math.atan2(e.center.y-t.y,t.x-e.center.x);l=-1*l;if(l<0){l+=2*Math.PI}var i=e.angleList.map(function(t){t=n(-1*t);return t});i.forEach(function(t,e){var a=n(t-r/2);var i=n(t+r/2);if(i=a&&l<=i||l+2*Math.PI>=a&&l+2*Math.PI<=i){o=e}})}return o}function findFunnelChartCurrentIndex(t,e){var a=-1;for(var i=0,r=e.series.length;io.funnelArea[0]&&t.xo.funnelArea[1]&&t.yo.area[0]&&t.xo.area[1]&&t.ys.width-s.area[1]-s.area[3]){i.push(n);o.push(r-s.legend.itemGap*s.pix);r=e;n=[t]}else{r+=e;n.push(t)}}if(n.length){i.push(n);o.push(r-s.legend.itemGap*s.pix);c.widthArr=o;let t=Math.max.apply(null,o);switch(s.legend.float){case"left":c.area.start.x=s.area[3];c.area.end.x=s.area[3]+t+2*d;break;case"right":c.area.start.x=s.width-s.area[1]-t-2*d;c.area.end.x=s.width-s.area[1];break;default:c.area.start.x=(s.width-t)/2-d;c.area.end.x=(s.width+t)/2+d}c.area.width=t+2*d;c.area.wholeWidth=t+2*d;c.area.height=i.length*u+2*d;c.area.wholeHeight=i.length*u+2*d+2*x;c.points=i}}else{let t=l.length;let e=s.height-s.area[0]-s.area[2]-2*x-2*d;let a=Math.min(Math.floor(e/u),t);c.area.height=a*u+d*2;c.area.wholeHeight=a*u+d*2;switch(s.legend.float){case"top":c.area.start.y=s.area[0]+x;c.area.end.y=s.area[0]+x+c.area.height;break;case"bottom":c.area.start.y=s.height-s.area[2]-x-c.area.height;c.area.end.y=s.height-s.area[2]-x;break;default:c.area.start.y=(s.height-c.area.height)/2;c.area.end.y=(s.height+c.area.height)/2}let i=t%a===0?t/a:Math.floor(t/a+1);let r=[];for(let e=0;ei){i=t}}c.widthArr.push(i);c.heightArr.push(a.length*u+d*2)}let e=0;for(let t=0;t4&&arguments[4]!==undefined?arguments[4]:-1;var i;if(c=="stack"){i=dataCombineStack(t,e.categories.length)}else{i=dataCombine(t)}var r=[];i=i.filter(function(t){if(typeof t==="object"&&t!==null){if(t.constructor.toString().indexOf("Array")>-1){return t!==null}else{return t.value!==null}}else{return t!==null}});i.map(function(t){if(typeof t==="object"){if(t.constructor.toString().indexOf("Array")>-1){if(e.type=="candle"){t.map(function(t){r.push(t)})}else{r.push(t[0])}}else{r.push(t.value)}}else{r.push(t)}});var o=0;var n=0;if(r.length>0){o=Math.min.apply(this,r);n=Math.max.apply(this,r)}if(a>-1){if(typeof e.xAxis.data[a].min==="number"){o=Math.min(e.xAxis.data[a].min,o)}if(typeof e.xAxis.data[a].max==="number"){n=Math.max(e.xAxis.data[a].max,n)}}else{if(typeof e.xAxis.min==="number"){o=Math.min(e.xAxis.min,o)}if(typeof e.xAxis.max==="number"){n=Math.max(e.xAxis.max,n)}}if(o===n){var d=n||10;n+=d}var l=o;var x=n;var f=[];var p=(x-l)/e.xAxis.splitNumber;for(var s=0;s<=e.xAxis.splitNumber;s++){f.push(l+p*s)}return f}function calXAxisData(t,e,a,i){var r=assign({},{type:""},e.extra.bar);var o={angle:0,xAxisHeight:e.xAxis.lineHeight*e.pix+e.xAxis.marginTop*e.pix};o.ranges=getXAxisTextList(t,e,a,r.type);o.rangesFormat=o.ranges.map(function(t){t=util.toFixed(t,2);return t});var n=o.ranges.map(function(t){t=util.toFixed(t,2);return t});o=Object.assign(o,getXAxisPoints(n,e,a));var l=o.eachSpacing;var s=n.map(function(t){return measureText(t,e.xAxis.fontSize*e.pix,i)});if(e.xAxis.disabled===true){o.xAxisHeight=0}return o}function getRadarDataPoints(r,o,n,a,t){var l=arguments.length>5&&arguments[5]!==undefined?arguments[5]:1;var e=t.extra.radar||{};e.max=e.max||0;var s=Math.max(e.max,Math.max.apply(null,dataCombine(a)));var h=[];for(let e=0;e2&&arguments[2]!==undefined?arguments[2]:1;var o=0;var n=0;for(let e=0;e4&&arguments[4]!==undefined?arguments[4]:1;for(let t=0;t4&&arguments[4]!==undefined?arguments[4]:1;var l=0;var s=0;var h=[];for(let e=0;e2&&arguments[2]!==undefined?arguments[2]:1;if(o==1){o=.999999}for(let a=0;a=2){t._proportion_=t._proportion_%2}}return i}function getGaugeArcbarDataPoints(i,r){var o=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1;if(o==1){o=.999999}for(let a=0;a=2){t._proportion_=t._proportion_%2}}return i}function getGaugeAxisPoints(e,a,t){let i;if(t=2){e[t]._endAngle_=e[t]._endAngle_%2}r=e[t]._endAngle_}return e}function getGaugeDataPoints(i,r,o){let n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:1;for(let a=0;a=o.oldData){e._proportion_=(e._endAngle_-e._oldAngle_)*n+o.oldAngle}else{e._proportion_=e._oldAngle_-(e._oldAngle_-e._endAngle_)*n}if(e._proportion_>=2){e._proportion_=e._proportion_%2}}return i}function getPieTextMaxLength(i,r,o,n){i=getPieDataPoints(i);let l=0;for(let a=0;a0){t.width=Math.min(t.width,+n.extra.mix.column.width*n.pix)}if(n.extra.column&&n.extra.column.width&&+n.extra.column.width>0){t.width=Math.min(t.width,+n.extra.column.width*n.pix)}if(t.width<=0){t.width=1}t.x+=(o+.5-r/2)*(t.width+e);return t})}function fixBarData(t,i,r,o,e,n){return t.map(function(t){if(t===null){return null}var e=0;var a=0;e=n.extra.bar.seriesGap*n.pix||0;a=n.extra.bar.categoryGap*n.pix||0;e=Math.min(e,i/r);a=Math.min(a,i/r);t.width=Math.ceil((i-2*a-e*(r-1))/r);if(n.extra.bar&&n.extra.bar.width&&+n.extra.bar.width>0){t.width=Math.min(t.width,+n.extra.bar.width*n.pix)}if(t.width<=0){t.width=1}t.y+=(o+.5-r/2)*(t.width+e);return t})}function fixColumeMeterData(t,e,a,i,r,o,n){var l=o.extra.column.categoryGap*o.pix||0;return t.map(function(t){if(t===null){return null}t.width=e-2*l;if(o.extra.column&&o.extra.column.width&&+o.extra.column.width>0){t.width=Math.min(t.width,+o.extra.column.width*o.pix)}if(i>0){t.width-=n}return t})}function fixColumeStackData(t,a,e,i,r,o,n){var l=o.extra.column.categoryGap*o.pix||0;return t.map(function(t,e){if(t===null){return null}t.width=Math.ceil(a-2*l);if(o.extra.column&&o.extra.column.width&&+o.extra.column.width>0){t.width=Math.min(t.width,+o.extra.column.width*o.pix)}if(t.width<=0){t.width=1}return t})}function fixBarStackData(t,a,e,i,r,o,n){var l=o.extra.bar.categoryGap*o.pix||0;return t.map(function(t,e){if(t===null){return null}t.width=Math.ceil(a-2*l);if(o.extra.bar&&o.extra.bar.width&&+o.extra.bar.width>0){t.width=Math.min(t.width,+o.extra.bar.width*o.pix)}if(t.width<=0){t.width=1}return t})}function getXAxisPoints(t,e,h){var a=e.width-e.area[1]-e.area[3];var i=e.enableScroll?Math.min(e.xAxis.itemCount,t.length):t.length;if((e.type=="line"||e.type=="area"||e.type=="scatter"||e.type=="bubble"||e.type=="bar")&&i>1&&e.xAxis.boundaryGap=="justify"){i-=1}var r=0;if(e.type=="mount"&&e.extra&&e.extra.mount&&e.extra.mount.widthRatio&&e.extra.mount.widthRatio>1){if(e.extra.mount.widthRatio>2)e.extra.mount.widthRatio=2;r=e.extra.mount.widthRatio-1;i+=r}var o=a/i;var n=[];var l=e.area[3];var s=e.width-e.area[1];t.forEach(function(t,e){n.push(l+r/2*o+e*o)});if(e.xAxis.boundaryGap!=="justify"){if(e.enableScroll===true){n.push(l+r*o+t.length*o)}else{n.push(s)}}return{xAxisPoints:n,startX:l,endX:s,eachSpacing:o}}function getCandleDataPoints(t,l,s,h,c,d,a){var x=arguments.length>7&&arguments[7]!==undefined?arguments[7]:1;var e=[];var f=d.height-d.area[0]-d.area[2];t.forEach(function(t,o){if(t===null){e.push(null)}else{var n=[];t.forEach(function(t,e){var a={};a.x=h[o]+Math.round(c/2);var i=t.value||t;var r=f*(i-l)/(s-l);r*=x;a.y=d.height-Math.round(r)-d.area[2];n.push(a)});e.push(n)}});return e}function getDataPoints(t,a,n,l,s,h,e){var c=arguments.length>7&&arguments[7]!==undefined?arguments[7]:1;var d="center";if(h.type=="line"||h.type=="area"||h.type=="scatter"||h.type=="bubble"){d=h.xAxis.boundaryGap}var x=[];var f=h.height-h.area[0]-h.area[2];var p=h.width-h.area[1]-h.area[3];t.forEach(function(i,t){if(i===null){x.push(null)}else{var r={};r.color=i.color;r.x=l[t];var o=i;if(typeof i==="object"&&i!==null){if(i.constructor.toString().indexOf("Array")>-1){let t,e,a;t=[].concat(h.chartData.xAxisData.ranges);e=t.shift();a=t.pop();o=i[1];r.x=h.area[3]+p*(i[0]-e)/(a-e);if(h.type=="bubble"){r.r=i[2];r.t=i[3]}}else{o=i.value}}if(d=="center"){r.x+=s/2}var e=f*(o-a)/(n-a);e*=c;r.y=h.height-e-h.area[2];x.push(r)}});return x}function getLineDataPoints(t,a,n,l,s,h,e,p,c){var c=arguments.length>8&&arguments[8]!==undefined?arguments[8]:1;var d=h.xAxis.boundaryGap;var x=[];var f=h.height-h.area[0]-h.area[2];var u=h.width-h.area[1]-h.area[3];t.forEach(function(i,t){if(i===null){x.push(null)}else{var r={};r.color=i.color;if(p.animation=="vertical"){r.x=l[t];var o=i;if(typeof i==="object"&&i!==null){if(i.constructor.toString().indexOf("Array")>-1){let t,e,a;t=[].concat(h.chartData.xAxisData.ranges);e=t.shift();a=t.pop();o=i[1];r.x=h.area[3]+u*(i[0]-e)/(a-e)}else{o=i.value}}if(d=="center"){r.x+=s/2}var e=f*(o-a)/(n-a);e*=c;r.y=h.height-e-h.area[2];x.push(r)}else{r.x=l[0]+s*t*c;var o=i;if(d=="center"){r.x+=s/2}var e=f*(o-a)/(n-a);r.y=h.height-e-h.area[2];x.push(r)}}});return x}function getColumnDataPoints(t,a,n,l,s,h,e,i,c){var c=arguments.length>8&&arguments[8]!==undefined?arguments[8]:1;var d=[];var x=h.height-h.area[0]-h.area[2];var f=h.width-h.area[1]-h.area[3];t.forEach(function(i,t){if(i===null){d.push(null)}else{var r={};r.color=i.color;r.x=l[t];var o=i;if(typeof i==="object"&&i!==null){if(i.constructor.toString().indexOf("Array")>-1){let t,e,a;t=[].concat(h.chartData.xAxisData.ranges);e=t.shift();a=t.pop();o=i[1];r.x=h.area[3]+f*(i[0]-e)/(a-e)}else{o=i.value}}r.x+=s/2;var e=x*(o*c-a)/(n-a);r.y=h.height-e-h.area[2];d.push(r)}});return d}function getMountDataPoints(t,o,n,l,s,h,e,a){var c=arguments.length>8&&arguments[8]!==undefined?arguments[8]:1;var d=[];var x=h.height-h.area[0]-h.area[2];var i=h.width-h.area[1]-h.area[3];var f=s*e.widthRatio;t.forEach(function(t,e){if(t===null){d.push(null)}else{var a={};a.color=t.color;a.x=l[e];a.x+=s/2;var i=t.data;var r=x*(i*c-o)/(n-o);a.y=h.height-r-h.area[2];a.value=i;a.width=f;d.push(a)}});return d}function getBarDataPoints(t,o,n,l,e,s,a){var h=arguments.length>7&&arguments[7]!==undefined?arguments[7]:1;var c=[];var i=s.height-s.area[0]-s.area[2];var d=s.width-s.area[1]-s.area[3];t.forEach(function(t,e){if(t===null){c.push(null)}else{var a={};a.color=t.color;a.y=l[e];var i=t;if(typeof t==="object"&&t!==null){i=t.value}var r=d*(i-o)/(n-o);r*=h;a.height=r;a.value=i;a.x=r+s.area[3];c.push(a)}});return c}function getStackDataPoints(t,s,h,c,g,d,e,x,y){var f=arguments.length>9&&arguments[9]!==undefined?arguments[9]:1;var p=[];var u=d.height-d.area[0]-d.area[2];t.forEach(function(t,e){if(t===null){p.push(null)}else{var a={};a.color=t.color;a.x=c[e]+Math.round(g/2);if(x>0){var i=0;for(let t=0;t<=x;t++){i+=y[t].data[e]}var r=i-t;var o=u*(i-s)/(h-s);var n=u*(r-s)/(h-s)}else{var i=t;if(typeof t==="object"&&t!==null){i=t.value}var o=u*(i-s)/(h-s);var n=0}var l=n;o*=f;l*=f;a.y=d.height-Math.round(o)-d.area[2];a.y0=d.height-Math.round(l)-d.area[2];p.push(a)}});return p}function getBarStackDataPoints(t,s,h,c,e,d,a,x,g){var f=arguments.length>9&&arguments[9]!==undefined?arguments[9]:1;var p=[];var u=d.width-d.area[1]-d.area[3];t.forEach(function(t,e){if(t===null){p.push(null)}else{var a={};a.color=t.color;a.y=c[e];if(x>0){var i=0;for(let t=0;t<=x;t++){i+=g[t].data[e]}var r=i-t;var o=u*(i-s)/(h-s);var n=u*(r-s)/(h-s)}else{var i=t;if(typeof t==="object"&&t!==null){i=t.value}var o=u*(i-s)/(h-s);var n=0}var l=n;o*=f;l*=f;a.height=o-l;a.x=d.area[3]+o;a.x0=d.area[3]+l;p.push(a)}});return p}function getYAxisTextList(t,e,h,c,a){var d=arguments.length>5&&arguments[5]!==undefined?arguments[5]:-1;var i;if(c=="stack"){i=dataCombineStack(t,e.categories.length)}else{i=dataCombine(t)}var r=[];i=i.filter(function(t){if(typeof t==="object"&&t!==null){if(t.constructor.toString().indexOf("Array")>-1){return t!==null}else{return t.value!==null}}else{return t!==null}});i.map(function(t){if(typeof t==="object"){if(t.constructor.toString().indexOf("Array")>-1){if(e.type=="candle"){t.map(function(t){r.push(t)})}else{r.push(t[1])}}else{r.push(t.value)}}else{r.push(t)}});var o=a.min||0;var n=a.max||0;if(r.length>0){o=Math.min.apply(this,r);n=Math.max.apply(this,r)}if(o===n){if(n==0){n=10}else{o=0}}var l=getDataRange(o,n);var x=a.min===undefined||a.min===null?l.minRange:a.min;var f=a.max===undefined||a.max===null?l.maxRange:a.max;var p=(f-x)/e.yAxis.splitNumber;var u=[];for(var s=0;s<=e.yAxis.splitNumber;s++){u.push(x+p*s)}return u.reverse()}function calYAxisData(a,o,e,n){var l=assign({},{type:""},o.extra.column);var t=o.yAxis.data.length;var s=new Array(t);if(t>0){for(let e=0;e{return t+(i.unit||"")}}i.categories=i.categories||o.categories;h[r]=i.categories}else{if(!i.formatter){i.formatter=(t,e,a)=>{return util.toFixed(t,i.tofix||0)+(i.unit||"")}}h[r]=getYAxisTextList(s[r],o,e,l.type,i,r)}let a=i.fontSize*o.pix||e.fontSize;d[r]={position:i.position?i.position:"left",width:0};c[r]=h[r].map(function(t,e){t=i.formatter(t,e,o);d[r].width=Math.max(d[r].width,measureText(t,a,n)+5);return t});let t=i.calibration?4*o.pix:0;d[r].width+=t+3*o.pix;if(i.disabled===true){d[r].width=0}}}else{var h=new Array(1);var c=new Array(1);var d=new Array(1);if(o.type==="bar"){h[0]=o.categories;if(!o.yAxis.formatter){o.yAxis.formatter=(t,e,a)=>{return t+(a.yAxis.unit||"")}}}else{if(!o.yAxis.formatter){o.yAxis.formatter=(t,e,a)=>{return t.toFixed(a.yAxis.tofix)+(a.yAxis.unit||"")}}h[0]=getYAxisTextList(a,o,e,l.type,{})}d[0]={position:"left",width:0};var i=o.yAxis.fontSize*o.pix||e.fontSize;c[0]=h[0].map(function(t,e){t=o.yAxis.formatter(t,e,o);d[0].width=Math.max(d[0].width,measureText(t,i,n)+5);return t});d[0].width+=3*o.pix;if(o.yAxis.disabled===true){d[0]={position:"left",width:0};o.yAxis.data[0]={disabled:true}}else{o.yAxis.data[0]={disabled:false,position:"left",max:o.yAxis.max,min:o.yAxis.min,formatter:o.yAxis.formatter};if(o.type==="bar"){o.yAxis.data[0].categories=o.categories;o.yAxis.data[0].type="categories"}}}return{rangesFormat:c,ranges:h,yAxisWidth:d}}function calTooltipYAxisData(r,t,o,e,a){let n=[].concat(o.chartData.yAxisData.ranges);let l=o.height-o.area[0]-o.area[2];let s=o.area[0];let h=[];for(let i=0;i0&&r.tooltip.group.includes(n)==false){return}var l=typeof r.tooltip.index==="number"?r.tooltip.index:r.tooltip.index[r.tooltip.group.indexOf(n)];i.beginPath();if(o.activeType=="hollow"){i.setStrokeStyle(e);i.setFillStyle(r.background);i.setLineWidth(2*r.pix)}else{i.setStrokeStyle("#ffffff");i.setFillStyle(e);i.setLineWidth(1*r.pix)}if(a==="diamond"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x,t.y-4.5);i.lineTo(t.x-4.5,t.y);i.lineTo(t.x,t.y+4.5);i.lineTo(t.x+4.5,t.y);i.lineTo(t.x,t.y-4.5)}})}else if(a==="circle"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x+2.5*r.pix,t.y);i.arc(t.x,t.y,3*r.pix,0,2*Math.PI,false)}})}else if(a==="square"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x-3.5,t.y-3.5);i.rect(t.x-3.5,t.y-3.5,7,7)}})}else if(a==="triangle"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x,t.y-4.5);i.lineTo(t.x-4.5,t.y+4.5);i.lineTo(t.x+4.5,t.y+4.5);i.lineTo(t.x,t.y-4.5)}})}else if(a==="none"){return}i.closePath();i.fill();i.stroke()}function drawRingTitle(t,e,a,i){var r=t.title.fontSize||e.titleFontSize;var o=t.subtitle.fontSize||e.subtitleFontSize;var n=t.title.name||"";var l=t.subtitle.name||"";var c=t.title.color||t.fontColor;var d=t.subtitle.color||t.fontColor;var x=n?r:0;var f=l?o:0;var s=5;if(l){var p=measureText(l,o*t.pix,a);var u=i.x-p/2+(t.subtitle.offsetX||0)*t.pix;var h=i.y+o*t.pix/2+(t.subtitle.offsetY||0)*t.pix;if(n){h+=(x*t.pix+s)/2}a.beginPath();a.setFontSize(o*t.pix);a.setFillStyle(d);a.fillText(l,u,h);a.closePath();a.stroke()}if(n){var g=measureText(n,r*t.pix,a);var y=i.x-g/2+(t.title.offsetX||0);var v=i.y+r*t.pix/2+(t.title.offsetY||0)*t.pix;if(l){v-=(f*t.pix+s)/2}a.beginPath();a.setFontSize(r*t.pix);a.setFillStyle(c);a.fillText(n,y,v);a.closePath();a.stroke()}}function drawPointText(t,o,n,l,s){var h=o.data;var c=o.textOffset?o.textOffset:0;t.forEach(function(t,e){if(t!==null){l.beginPath();var a=o.textSize?o.textSize*s.pix:n.fontSize;l.setFontSize(a);l.setFillStyle(o.textColor||s.fontColor);var i=h[e];if(typeof h[e]==="object"&&h[e]!==null){if(h[e].constructor.toString().indexOf("Array")>-1){i=h[e][1]}else{i=h[e].value}}var r=o.formatter?o.formatter(i,e,o,s):i;l.setTextAlign("center");l.fillText(String(r),t.x,t.y-4+c*s.pix);l.closePath();l.stroke();l.setTextAlign("left")}})}function drawColumePointText(t,n,l,s,h){var c=n.data;var d=n.textOffset?n.textOffset:0;var x=h.extra.column.labelPosition;t.forEach(function(t,e){if(t!==null){s.beginPath();var a=n.textSize?n.textSize*h.pix:l.fontSize;s.setFontSize(a);s.setFillStyle(n.textColor||h.fontColor);var i=c[e];if(typeof c[e]==="object"&&c[e]!==null){if(c[e].constructor.toString().indexOf("Array")>-1){i=c[e][1]}else{i=c[e].value}}var r=n.formatter?n.formatter(i,e,n,h):i;s.setTextAlign("center");var o=t.y-4*h.pix+d*h.pix;if(t.y>n.zeroPoints){o=t.y+d*h.pix+a}if(x=="insideTop"){o=t.y+a+d*h.pix;if(t.y>n.zeroPoints){o=t.y-d*h.pix-4*h.pix}}if(x=="center"){o=t.y+d*h.pix+(h.height-h.area[2]-t.y+a)/2;if(n.zeroPointsn.zeroPoints){o=t.y-d*h.pix-(t.y-n.zeroPoints-a)/2}if(h.extra.column.type=="stack"){o=t.y+d*h.pix+(t.y0-t.y+a)/2}}if(x=="bottom"){o=h.height-h.area[2]+d*h.pix-4*h.pix;if(n.zeroPointsn.zeroPoints){o=n.zeroPoints-d*h.pix+a+2*h.pix}if(h.extra.column.type=="stack"){o=t.y0+d*h.pix-4*h.pix}}s.fillText(String(r),t.x,o);s.closePath();s.stroke();s.setTextAlign("left")}})}function drawMountPointText(t,n,l,s,h,c){var e=n.data;var d=n.textOffset?n.textOffset:0;var a=h.extra.mount.labelPosition;t.forEach(function(t,e){if(t!==null){s.beginPath();var a=n[e].textSize?n[e].textSize*h.pix:l.fontSize;s.setFontSize(a);s.setFillStyle(n[e].textColor||h.fontColor);var i=t.value;var r=n[e].formatter?n[e].formatter(i,e,n,h):i;s.setTextAlign("center");var o=t.y-4*h.pix+d*h.pix;if(t.y>c){o=t.y+d*h.pix+a}s.fillText(String(r),t.x,o);s.closePath();s.stroke();s.setTextAlign("left")}})}function drawBarPointText(t,o,n,l,s){var h=o.data;var e=o.textOffset?o.textOffset:0;t.forEach(function(t,e){if(t!==null){l.beginPath();var a=o.textSize?o.textSize*s.pix:n.fontSize;l.setFontSize(a);l.setFillStyle(o.textColor||s.fontColor);var i=h[e];if(typeof h[e]==="object"&&h[e]!==null){i=h[e].value}var r=o.formatter?o.formatter(i,e,o,s):i;l.setTextAlign("left");l.fillText(String(r),t.x+4*s.pix,t.y+a/2-3);l.closePath();l.stroke()}})}function drawGaugeLabel(e,a,i,r,o,n){a-=e.width/2+e.labelOffset*r.pix;a=a<10?10:a;let t;if(e.endAngle=2){l=l%2}s+=x}}function drawRadarLabel(t,s,h,c,d,x){var f=c.extra.radar||{};t.forEach(function(t,e){if(f.labelPointShow===true&&c.categories[e]!==""){var a={x:s*Math.cos(t),y:s*Math.sin(t)};var i=convertCoordinateOrigin(a.x,a.y,h);x.setFillStyle(f.labelPointColor);x.beginPath();x.arc(i.x,i.y,f.labelPointRadius*c.pix,0,2*Math.PI,false);x.closePath();x.fill()}if(f.labelShow===true){var r={x:(s+d.radarLabelTextMargin*c.pix)*Math.cos(t),y:(s+d.radarLabelTextMargin*c.pix)*Math.sin(t)};var o=convertCoordinateOrigin(r.x,r.y,h);var n=o.x;var l=o.y;if(util.approximatelyEqual(r.x,0)){n-=measureText(c.categories[e]||"",d.fontSize,x)/2}else if(r.x<0){n-=measureText(c.categories[e]||"",d.fontSize,x)}x.beginPath();x.setFontSize(d.fontSize);x.setFillStyle(f.labelColor||c.fontColor);x.fillText(c.categories[e]||"",n,l+d.fontSize/2);x.closePath();x.stroke()}})}function drawPieText(n,d,x,f,t,l){var p=x.pieChartLinePadding;var u=[];var g=null;var y=n.map(function(t,e){var a=t.formatter?t.formatter(t,e,n,d):util.toFixed(t._proportion_.toFixed(4)*100)+"%";a=t.labelText?t.labelText:a;var i=2*Math.PI-(t._start_+2*Math.PI*t._proportion_/2);if(t._rose_proportion_){i=2*Math.PI-(t._start_+2*Math.PI*t._rose_proportion_/2)}var r=t.color;var o=t._radius_;return{arc:i,text:a,color:r,radius:o,textColor:t.textColor,textSize:t.textSize,labelShow:t.labelShow}});for(let c=0;c=0?e+x.pieChartTextPadding:e-x.pieChartTextPadding;let n=a;let l=measureText(t.text,t.textSize*d.pix||x.fontSize,f);let s=n;if(g&&util.isSameXCoordinateArea(g.start,{x:o})){if(o>0){s=Math.min(n,g.start.y)}else if(e<0){s=Math.max(n,g.start.y)}else{if(n>0){s=Math.max(n,g.start.y)}else{s=Math.min(n,g.start.y)}}}if(o<0){o-=l}let h={lineStart:{x:i,y:r},lineEnd:{x:e,y:a},start:{x:o,y:s},width:l,height:x.fontSize,text:t.text,color:t.color,textColor:t.textColor,textSize:t.textSize};g=avoidCollision(h,g);u.push(g)}for(let n=0;nr?r:o.activeWidth;var n=e.area[0];var l=e.height-e.area[2];i.beginPath();i.setFillStyle(hexToRgb(o.activeBgColor,o.activeBgOpacity));i.rect(t-o.activeWidth/2,n,o.activeWidth,l-n);i.closePath();i.fill();i.setFillStyle("#FFFFFF")}function drawBarToolTipSplitArea(t,e,a,i,r){var o=assign({},{activeBgColor:"#000000",activeBgOpacity:.08},e.extra.bar);var n=e.area[3];var l=e.width-e.area[1];i.beginPath();i.setFillStyle(hexToRgb(o.activeBgColor,o.activeBgOpacity));i.rect(n,t-r/2,l-n,r);i.closePath();i.fill();i.setFillStyle("#FFFFFF")}function drawToolTip(e,r,o,a,n,i,f){var l=assign({},{showBox:true,showArrow:true,showCategory:false,bgColor:"#000000",bgOpacity:.7,borderColor:"#000000",borderWidth:0,borderRadius:0,borderOpacity:.7,boxPadding:3,fontColor:"#FFFFFF",fontSize:13,lineHeight:20,legendShow:true,legendShape:"auto",splitLine:true},o.extra.tooltip);if(l.showCategory==true&&o.categories){e.unshift({text:o.categories[o.tooltip.index],color:null})}var s=l.fontSize*o.pix;var p=l.lineHeight*o.pix;var h=l.boxPadding*o.pix;var c=s;var u=5*o.pix;if(l.legendShow==false){c=0;u=0}var d=l.showArrow?8*o.pix:0;var g=false;if(o.type=="line"||o.type=="mount"||o.type=="area"||o.type=="candle"||o.type=="mix"){if(l.splitLine==true){drawToolTipSplitLine(o.tooltip.offset.x,o,a,n)}}r=assign({x:0,y:0},r);r.y-=8*o.pix;var y=e.map(function(t){return measureText(t.text,s,n)});var x=c+u+4*h+Math.max.apply(null,y);var v=2*h+e.length*p;if(l.showBox==false){return}if(r.x-Math.abs(o._scrollDistance_||0)+d+x>o.width){g=true}if(v+r.y>o.height){r.y=o.height-v}n.beginPath();n.setFillStyle(hexToRgb(l.bgColor,l.bgOpacity));n.setLineWidth(l.borderWidth*o.pix);n.setStrokeStyle(hexToRgb(l.borderColor,l.borderOpacity));var t=l.borderRadius;if(g){if(x+d>o.width){r.x=o.width+Math.abs(o._scrollDistance_||0)+d+(x-o.width)}if(x>r.x){r.x=o.width+Math.abs(o._scrollDistance_||0)+d+(x-o.width)}if(l.showArrow){n.moveTo(r.x,r.y+10*o.pix);n.lineTo(r.x-d,r.y+10*o.pix+5*o.pix)}n.arc(r.x-d-t,r.y+v-t,t,0,Math.PI/2,false);n.arc(r.x-d-Math.round(x)+t,r.y+v-t,t,Math.PI/2,Math.PI,false);n.arc(r.x-d-Math.round(x)+t,r.y+t,t,-Math.PI,-Math.PI/2,false);n.arc(r.x-d-t,r.y+t,t,-Math.PI/2,0,false);if(l.showArrow){n.lineTo(r.x-d,r.y+10*o.pix-5*o.pix);n.lineTo(r.x,r.y+10*o.pix)}}else{if(l.showArrow){n.moveTo(r.x,r.y+10*o.pix);n.lineTo(r.x+d,r.y+10*o.pix-5*o.pix)}n.arc(r.x+d+t,r.y+t,t,-Math.PI,-Math.PI/2,false);n.arc(r.x+d+Math.round(x)-t,r.y+t,t,-Math.PI/2,0,false);n.arc(r.x+d+Math.round(x)-t,r.y+v-t,t,0,Math.PI/2,false);n.arc(r.x+d+t,r.y+v-t,t,Math.PI/2,Math.PI,false);if(l.showArrow){n.lineTo(r.x+d,r.y+10*o.pix+5*o.pix);n.lineTo(r.x,r.y+10*o.pix)}}n.closePath();n.fill();if(l.borderWidth>0){n.stroke()}if(l.legendShow){e.forEach(function(t,e){if(t.color!==null){n.beginPath();n.setFillStyle(t.color);var a=r.x+d+2*h;var i=r.y+(p-s)/2+p*e+h+1;if(g){a=r.x-x-d+2*h}switch(t.legendShape){case"line":n.moveTo(a,i+.5*c-2*o.pix);n.fillRect(a,i+.5*c-2*o.pix,c,4*o.pix);break;case"triangle":n.moveTo(a+7.5*o.pix,i+.5*c-5*o.pix);n.lineTo(a+2.5*o.pix,i+.5*c+5*o.pix);n.lineTo(a+12.5*o.pix,i+.5*c+5*o.pix);n.lineTo(a+7.5*o.pix,i+.5*c-5*o.pix);break;case"diamond":n.moveTo(a+7.5*o.pix,i+.5*c-5*o.pix);n.lineTo(a+2.5*o.pix,i+.5*c);n.lineTo(a+7.5*o.pix,i+.5*c+5*o.pix);n.lineTo(a+12.5*o.pix,i+.5*c);n.lineTo(a+7.5*o.pix,i+.5*c-5*o.pix);break;case"circle":n.moveTo(a+7.5*o.pix,i+.5*c);n.arc(a+7.5*o.pix,i+.5*c,5*o.pix,0,2*Math.PI);break;case"rect":n.moveTo(a,i+.5*c-5*o.pix);n.fillRect(a,i+.5*c-5*o.pix,15*o.pix,10*o.pix);break;case"square":n.moveTo(a+2*o.pix,i+.5*c-5*o.pix);n.fillRect(a+2*o.pix,i+.5*c-5*o.pix,10*o.pix,10*o.pix);break;default:n.moveTo(a,i+.5*c-5*o.pix);n.fillRect(a,i+.5*c-5*o.pix,15*o.pix,10*o.pix)}n.closePath();n.fill()}})}e.forEach(function(t,e){var a=r.x+d+2*h+c+u;if(g){a=r.x-x-d+2*h+c+u}var i=r.y+p*e+(p-s)/2-1+h+s;n.beginPath();n.setFontSize(s);n.setTextBaseline("normal");n.setFillStyle(l.fontColor);n.fillText(t.text,a,i);n.closePath();n.stroke()})}function drawColumnDataPoints(T,b,S,w){let A=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let t=b.chartData.xAxisData,P=t.xAxisPoints,C=t.eachSpacing;let D=assign({},{type:"group",width:C/2,meterBorder:4,meterFillColor:"#FFFFFF",barBorderCircle:false,barBorderRadius:[],seriesGap:2,linearType:"none",linearOpacity:1,customColor:[],colorStop:0,labelPosition:"outside"},b.extra.column);let M=[];w.save();let L=-2;let F=P.length+2;if(b._scrollDistance_&&b._scrollDistance_!==0&&b.enableScroll===true){w.translate(b._scrollDistance_,0);L=Math.floor(-b._scrollDistance_/C)-2;F=L+b.xAxis.itemCount+4}if(b.tooltip&&b.tooltip.textList&&b.tooltip.textList.length&&A===1){drawToolTipSplitArea(b.tooltip.offset.x,b,S,w,C)}D.customColor=fillCustomColor(D.linearType,D.customColor,T,S);T.forEach(function(a,i){let e,t,o;e=[].concat(b.chartData.yAxisData.ranges[a.index]);t=e.pop();o=e.shift();let x=b.height-b.area[0]-b.area[2];let f=x*(0-t)/(o-t);let n=b.height-Math.round(f)-b.area[2];a.zeroPoints=n;var p=a.data;switch(D.type){case"group":var r=getColumnDataPoints(p,t,o,P,C,b,S,n,A);var u=getStackDataPoints(p,t,o,P,C,b,S,i,T,A);M.push(u);r=fixColumeData(r,C,T.length,i,S,b);for(let t=0;tL&&tn?n:o.y;const d=o.width;const s=Math.abs(n-o.y);if(D.barBorderCircle){D.barBorderRadius=[d/2,d/2,0,0]}if(o.y>n){D.barBorderRadius=[0,0,d/2,d/2]}let[t,e,a,i]=D.barBorderRadius;let r=Math.min(d/2,s/2);t=t>r?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;w.arc(h+t,c+t,t,-Math.PI,-Math.PI/2);w.arc(h+d-e,c+e,e,-Math.PI/2,0);w.arc(h+d-a,c+s-a,a,0,Math.PI/2);w.arc(h+i,c+s-i,i,Math.PI/2,Math.PI)}else{w.moveTo(l,o.y);w.lineTo(l+o.width,o.y);w.lineTo(l+o.width,n);w.lineTo(l,n);w.lineTo(l,o.y);w.setLineWidth(1);w.setStrokeStyle(y)}w.setFillStyle(g);w.closePath();w.fill()}};break;case"stack":var r=getStackDataPoints(p,t,o,P,C,b,S,i,T,A);M.push(r);r=fixColumeStackData(r,C,T.length,i,S,b,T);for(let e=0;eL&&e0){s-=m}w.setFillStyle(g);w.moveTo(l,t.y);w.fillRect(l,t.y,t.width,s);w.closePath();w.fill()}};break;case"meter":var r=getDataPoints(p,t,o,P,C,b,S,A);M.push(r);r=fixColumeMeterData(r,C,T.length,i,S,b,D.meterBorder);for(let t=0;tL&&t0){w.setStrokeStyle(a.color);w.setLineWidth(D.meterBorder*b.pix)}if(i==0){w.setFillStyle(D.meterFillColor)}else{w.setFillStyle(o.color||a.color)}var l=o.x-o.width/2;var s=b.height-o.y-b.area[2];if(D.barBorderRadius&&D.barBorderRadius.length===4||D.barBorderCircle===true){const h=l;const c=o.y;const d=o.width;const s=n-o.y;if(D.barBorderCircle){D.barBorderRadius=[d/2,d/2,0,0]}let[t,e,a,i]=D.barBorderRadius;let r=Math.min(d/2,s/2);t=t>r?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;w.arc(h+t,c+t,t,-Math.PI,-Math.PI/2);w.arc(h+d-e,c+e,e,-Math.PI/2,0);w.arc(h+d-a,c+s-a,a,0,Math.PI/2);w.arc(h+i,c+s-i,i,Math.PI/2,Math.PI);w.fill()}else{w.moveTo(l,o.y);w.lineTo(l+o.width,o.y);w.lineTo(l+o.width,n);w.lineTo(l,n);w.lineTo(l,o.y);w.fill()}if(i==0&&D.meterBorder>0){w.closePath();w.stroke()}}}break}});if(b.dataLabel!==false&&A===1){T.forEach(function(t,e){let a,i,r;a=[].concat(b.chartData.yAxisData.ranges[t.index]);i=a.pop();r=a.shift();var o=t.data;switch(D.type){case"group":var n=getColumnDataPoints(o,i,r,P,C,b,S,A);n=fixColumeData(n,C,T.length,e,S,b);drawColumePointText(n,t,S,w,b);break;case"stack":var n=getStackDataPoints(o,i,r,P,C,b,S,e,T,A);drawColumePointText(n,t,S,w,b);break;case"meter":var n=getDataPoints(o,i,r,P,C,b,S,A);drawColumePointText(n,t,S,w,b);break}})}w.restore();return{xAxisPoints:P,calPoints:M,eachSpacing:C}}function drawMountDataPoints(i,r,o,n){let f=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let t=r.chartData.xAxisData,p=t.xAxisPoints,l=t.eachSpacing;let s=assign({},{type:"mount",widthRatio:1,borderWidth:1,barBorderCircle:false,barBorderRadius:[],linearType:"none",linearOpacity:1,customColor:[],colorStop:0},r.extra.mount);s.widthRatio=s.widthRatio<=0?0:s.widthRatio;s.widthRatio=s.widthRatio>=2?2:s.widthRatio;let e=[];n.save();let u=-2;let g=p.length+2;if(r._scrollDistance_&&r._scrollDistance_!==0&&r.enableScroll===true){n.translate(r._scrollDistance_,0);u=Math.floor(-r._scrollDistance_/l)-2;g=u+r.xAxis.itemCount+4}s.customColor=fillCustomColor(s.linearType,s.customColor,i,o);let y,v,m;y=[].concat(r.chartData.yAxisData.ranges[0]);v=y.pop();m=y.shift();let T=r.height-r.area[0]-r.area[2];let b=T*(0-v)/(m-v);let h=r.height-Math.round(b)-r.area[2];var c=getMountDataPoints(i,v,m,p,l,r,s,h,f);switch(s.type){case"bar":for(let t=0;tu&&th?h:o.y;const C=o.width;const S=Math.abs(h-o.y);if(s.barBorderCircle){s.barBorderRadius=[C/2,C/2,0,0]}if(o.y>h){s.barBorderRadius=[0,0,C/2,C/2]}let[t,e,a,i]=s.barBorderRadius;let r=Math.min(C/2,S/2);t=t>r?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;n.arc(A+t,P+t,t,-Math.PI,-Math.PI/2);n.arc(A+C-e,P+e,e,-Math.PI/2,0);n.arc(A+C-a,P+S-a,a,0,Math.PI/2);n.arc(A+i,P+S-i,i,Math.PI/2,Math.PI)}else{n.moveTo(d,o.y);n.lineTo(d+o.width,o.y);n.lineTo(d+o.width,h);n.lineTo(d,h);n.lineTo(d,o.y)}n.setStrokeStyle(w);n.setFillStyle(a);if(s.borderWidth>0){n.setLineWidth(s.borderWidth*r.pix);n.closePath();n.stroke()}n.fill()}};break;case"triangle":for(let e=0;eu&&e0){n.setLineWidth(s.borderWidth*r.pix);n.stroke()}n.fill()}};break;case"mount":for(let e=0;eu&&e0){n.setLineWidth(s.borderWidth*r.pix);n.stroke()}n.fill()}};break;case"sharp":for(let e=0;eu&&e0){n.setLineWidth(s.borderWidth*r.pix);n.stroke()}n.fill()}};break}if(r.dataLabel!==false&&f===1){let t,e,a;t=[].concat(r.chartData.yAxisData.ranges[0]);e=t.pop();a=t.shift();var c=getMountDataPoints(i,e,a,p,l,r,s,h,f);drawMountPointText(c,i,o,n,r,h)}n.restore();return{xAxisPoints:p,calPoints:c,eachSpacing:l}}function drawBarDataPoints(y,v,m,T){let b=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let S=[];let w=(v.height-v.area[0]-v.area[2])/v.categories.length;for(let t=0;tC&&tr?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;T.arc(g+i,c+i,i,-Math.PI,-Math.PI/2);T.arc(o.x-t,c+t,t,-Math.PI/2,0);T.arc(o.x-e,c+h-e,e,0,Math.PI/2);T.arc(g+a,c+h-a,a,Math.PI/2,Math.PI)}else{T.moveTo(n,r);T.lineTo(o.x,r);T.lineTo(o.x,r+o.width);T.lineTo(n,r+o.width);T.lineTo(n,r);T.setLineWidth(1);T.setStrokeStyle(u)}T.setFillStyle(l);T.closePath();T.fill()}};break;case"stack":var i=getBarStackDataPoints(x,e,d,S,w,v,m,t,y,b);P.push(i);i=fixBarStackData(i,w,y.length,t,m,v,y);for(let e=0;eC&&e5&&arguments[5]!==undefined?arguments[5]:1;var s=assign({},{color:{},average:{}},h.extra.candle);s.color=assign({},{upLine:"#f04864",upFill:"#f04864",downLine:"#2fc25b",downFill:"#2fc25b"},s.color);s.average=assign({},{show:false,name:[],day:[],color:c.color},s.average);h.extra.candle=s;let a=h.chartData.xAxisData,x=a.xAxisPoints,f=a.eachSpacing;let y=[];d.save();let p=-2;let v=x.length+2;let u=0;let m=h.width+f;if(h._scrollDistance_&&h._scrollDistance_!==0&&h.enableScroll===true){d.translate(h._scrollDistance_,0);p=Math.floor(-h._scrollDistance_/f)-2;v=p+h.xAxis.itemCount+4;u=-h._scrollDistance_-f*2+h.area[3];m=u+(h.xAxis.itemCount+4)*f}if(s.average.show||t){t.forEach(function(e,t){let a,i,r;a=[].concat(h.chartData.yAxisData.ranges[e.index]);i=a.pop();r=a.shift();var o=e.data;var n=getDataPoints(o,i,r,x,f,h,c,g);var l=splitPoints(n,e);for(let t=0;tu){d.moveTo(t.x,t.y);a=1}if(e>0&&t.x>u&&t.xp&&e0){d.setStrokeStyle(s.color.upLine);d.setFillStyle(s.color.upFill);d.setLineWidth(1*h.pix);d.moveTo(t[3].x,t[3].y);d.lineTo(t[1].x,t[1].y);d.lineTo(t[1].x-f/4,t[1].y);d.lineTo(t[0].x-f/4,t[0].y);d.lineTo(t[0].x,t[0].y);d.lineTo(t[2].x,t[2].y);d.lineTo(t[0].x,t[0].y);d.lineTo(t[0].x+f/4,t[0].y);d.lineTo(t[1].x+f/4,t[1].y);d.lineTo(t[1].x,t[1].y);d.moveTo(t[3].x,t[3].y)}else{d.setStrokeStyle(s.color.downLine);d.setFillStyle(s.color.downFill);d.setLineWidth(1*h.pix);d.moveTo(t[3].x,t[3].y);d.lineTo(t[0].x,t[0].y);d.lineTo(t[0].x-f/4,t[0].y);d.lineTo(t[1].x-f/4,t[1].y);d.lineTo(t[1].x,t[1].y);d.lineTo(t[2].x,t[2].y);d.lineTo(t[1].x,t[1].y);d.lineTo(t[1].x+f/4,t[1].y);d.lineTo(t[0].x+f/4,t[0].y);d.lineTo(t[0].x,t[0].y);d.moveTo(t[3].x,t[3].y)}d.closePath();d.fill();d.stroke()}}});d.restore();return{xAxisPoints:x,calPoints:y,eachSpacing:f}}function drawAreaDataPoints(t,s,h,c){var d=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var x=assign({},{type:"straight",opacity:.2,addLine:false,width:2,gradient:false,activeType:"none"},s.extra.area);let e=s.chartData.xAxisData,f=e.xAxisPoints,p=e.eachSpacing;let y=s.height-s.area[2];let v=[];c.save();let u=0;let g=s.width+p;if(s._scrollDistance_&&s._scrollDistance_!==0&&s.enableScroll===true){c.translate(s._scrollDistance_,0);u=-s._scrollDistance_-p*2+s.area[3];g=u+(s.xAxis.itemCount+4)*p}t.forEach(function(e,t){let a,i,r;a=[].concat(s.chartData.yAxisData.ranges[e.index]);i=a.pop();r=a.shift();let o=e.data;let n=getDataPoints(o,i,r,f,p,s,h,d);v.push(n);let l=splitPoints(n,e);for(let t=0;t1){let t=r[0];let e=r[r.length-1];c.moveTo(t.x,t.y);let i=0;if(x.type==="curve"){for(let a=0;au){c.moveTo(e.x,e.y);i=1}if(a>0&&e.x>u&&e.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.xu){c.moveTo(e.x,e.y);i=1}if(a>0&&e.x>u&&e.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.x4&&arguments[4]!==undefined?arguments[4]:1;var i=assign({},{type:"circle"},s.extra.scatter);let e=s.chartData.xAxisData,x=e.xAxisPoints,f=e.eachSpacing;var r=[];c.save();let a=0;let o=s.width+f;if(s._scrollDistance_&&s._scrollDistance_!==0&&s.enableScroll===true){c.translate(s._scrollDistance_,0);a=-s._scrollDistance_-f*2+s.area[3];o=a+(s.xAxis.itemCount+4)*f}t.forEach(function(t,e){let a,i,r;a=[].concat(s.chartData.yAxisData.ranges[t.index]);i=a.pop();r=a.shift();var o=t.data;var n=getDataPoints(o,i,r,x,f,s,h,d);c.beginPath();c.setStrokeStyle(t.color);c.setFillStyle(t.color);c.setLineWidth(1*s.pix);var l=t.pointShape;if(l==="diamond"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x,t.y-4.5);c.lineTo(t.x-4.5,t.y);c.lineTo(t.x,t.y+4.5);c.lineTo(t.x+4.5,t.y);c.lineTo(t.x,t.y-4.5)}})}else if(l==="circle"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x+2.5*s.pix,t.y);c.arc(t.x,t.y,3*s.pix,0,2*Math.PI,false)}})}else if(l==="square"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x-3.5,t.y-3.5);c.rect(t.x-3.5,t.y-3.5,7,7)}})}else if(l==="triangle"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x,t.y-4.5);c.lineTo(t.x-4.5,t.y+4.5);c.lineTo(t.x+4.5,t.y+4.5);c.lineTo(t.x,t.y-4.5)}})}else if(l==="triangle"){return}c.closePath();c.fill();c.stroke()});if(s.dataLabel!==false&&d===1){t.forEach(function(t,e){let a,i,r;a=[].concat(s.chartData.yAxisData.ranges[t.index]);i=a.pop();r=a.shift();var o=t.data;var n=getDataPoints(o,i,r,x,f,s,h,d);drawPointText(n,t,h,c,s)})}c.restore();return{xAxisPoints:x,calPoints:r,eachSpacing:f}}function drawBubbleDataPoints(a,l,s,h){var c=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var d=assign({},{opacity:1,border:2},l.extra.bubble);let t=l.chartData.xAxisData,x=t.xAxisPoints,f=t.eachSpacing;var i=[];h.save();let e=0;let r=l.width+f;if(l._scrollDistance_&&l._scrollDistance_!==0&&l.enableScroll===true){h.translate(l._scrollDistance_,0);e=-l._scrollDistance_-f*2+l.area[3];r=e+(l.xAxis.itemCount+4)*f}a.forEach(function(i,t){let e,a,r;e=[].concat(l.chartData.yAxisData.ranges[i.index]);a=e.pop();r=e.shift();var o=i.data;var n=getDataPoints(o,a,r,x,f,l,s,c);h.beginPath();h.setStrokeStyle(i.color);h.setLineWidth(d.border*l.pix);h.setFillStyle(hexToRgb(i.color,d.opacity));n.forEach(function(t,e){h.moveTo(t.x+t.r,t.y);h.arc(t.x,t.y,t.r*l.pix,0,2*Math.PI,false)});h.closePath();h.fill();h.stroke();if(l.dataLabel!==false&&c===1){n.forEach(function(t,e){h.beginPath();var a=i.textSize*l.pix||s.fontSize;h.setFontSize(a);h.setFillStyle(i.textColor||"#FFFFFF");h.setTextAlign("center");h.fillText(String(t.t),t.x,t.y+a/2);h.closePath();h.stroke();h.setTextAlign("left")})}});h.restore();return{xAxisPoints:x,calPoints:i,eachSpacing:f}}function drawLineDataPoints(t,d,x,f){var p=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var u=assign({},{type:"straight",width:2,activeType:"none",linearType:"none",onShadow:false,animation:"vertical"},d.extra.line);u.width*=d.pix;let e=d.chartData.xAxisData,g=e.xAxisPoints,y=e.eachSpacing;var T=[];f.save();let v=0;let m=d.width+y;if(d._scrollDistance_&&d._scrollDistance_!==0&&d.enableScroll===true){f.translate(d._scrollDistance_,0);v=-d._scrollDistance_-y*2+d.area[3];m=v+(d.xAxis.itemCount+4)*y}t.forEach(function(e,c){f.beginPath();f.setStrokeStyle(e.color);f.moveTo(-1e4,-1e4);f.lineTo(-10001,-10001);f.stroke();let t,a,i;t=[].concat(d.chartData.yAxisData.ranges[e.index]);a=t.pop();i=t.shift();var r=e.data;var o=getLineDataPoints(r,a,i,g,y,d,x,u,p);T.push(o);var n=splitPoints(o,e);if(e.lineType=="dash"){let t=e.dashLength?e.dashLength:8;t*=d.pix;f.setLineDash([t,t])}f.beginPath();var l=e.color;if(u.linearType!=="none"&&e.linearColor&&e.linearColor.length>0){var s=f.createLinearGradient(d.chartData.xAxisData.startX,d.height/2,d.chartData.xAxisData.endX,d.height/2);for(var h=0;h0){f.setShadow(e.setShadow[0],e.setShadow[1],e.setShadow[2],e.setShadow[3])}else{f.setShadow(0,0,0,"rgba(0,0,0,0)")}f.setLineWidth(u.width);n.forEach(function(i,t){if(i.length===1){f.moveTo(i[0].x,i[0].y)}else{f.moveTo(i[0].x,i[0].y);let a=0;if(u.type==="curve"){for(let e=0;ev){f.moveTo(t.x,t.y);a=1}if(e>0&&t.x>v&&t.xv){f.moveTo(t.x,t.y);a=1}if(e>0&&t.x>v&&t.xv){f.moveTo(t.x,t.y);a=1}if(e>0&&t.x>v&&t.x4&&arguments[4]!==undefined?arguments[4]:1;let e=v.chartData.xAxisData,b=e.xAxisPoints,S=e.eachSpacing;let w=assign({},{width:S/2,barBorderCircle:false,barBorderRadius:[],seriesGap:2,linearType:"none",linearOpacity:1,customColor:[],colorStop:0},v.extra.mix.column);let A=assign({},{opacity:.2,gradient:false},v.extra.mix.area);let M=assign({},{width:2},v.extra.mix.line);let L=v.height-v.area[2];let F=[];var _=0;var k=0;t.forEach(function(t,e){if(t.type=="column"){k+=1}});T.save();let R=-2;let I=b.length+2;let P=0;let C=v.width+S;if(v._scrollDistance_&&v._scrollDistance_!==0&&v.enableScroll===true){T.translate(v._scrollDistance_,0);R=Math.floor(-v._scrollDistance_/S)-2;I=R+v.xAxis.itemCount+4;P=-v._scrollDistance_-S*2+v.area[3];C=P+(v.xAxis.itemCount+4)*S}w.customColor=fillCustomColor(w.linearType,w.customColor,t,m);t.forEach(function(n,t){let o,x,f;o=[].concat(v.chartData.yAxisData.ranges[n.index]);x=o.pop();f=o.shift();var p=n.data;var a=getDataPoints(p,x,f,b,S,v,m,D);F.push(a);if(n.type=="column"){a=fixColumeData(a,S,k,_,m,v);for(let t=0;tR&&tr?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;T.arc(h+t,c+t,t,-Math.PI,-Math.PI/2);T.arc(h+d-e,c+e,e,-Math.PI/2,0);T.arc(h+d-a,c+s-a,a,0,Math.PI/2);T.arc(h+i,c+s-i,i,Math.PI/2,Math.PI)}else{T.moveTo(l,o.y);T.lineTo(l+o.width,o.y);T.lineTo(l+o.width,v.height-v.area[2]);T.lineTo(l,v.height-v.area[2]);T.lineTo(l,o.y);T.setLineWidth(1);T.setStrokeStyle(u)}T.setFillStyle(e);T.closePath();T.fill()}}_+=1}if(n.type=="area"){let e=splitPoints(a,n);for(let t=0;t1){var r=i[0];let t=i[i.length-1];T.moveTo(r.x,r.y);let a=0;if(n.style==="curve"){for(let e=0;eP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.xP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.xP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.xP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.x1){if(h.extra.mount.widthRatio>2)h.extra.mount.widthRatio=2;l+=(h.extra.mount.widthRatio-1)*f}var s=n*n/l;var y=0;if(h._scrollDistance_){y=-h._scrollDistance_*n/l}d.beginPath();d.setLineCap("round");d.setLineWidth(6*h.pix);d.setStrokeStyle(h.xAxis.scrollBackgroundColor||"#EFEBEF");d.moveTo(t,o);d.lineTo(a,o);d.stroke();d.closePath();d.beginPath();d.setLineCap("round");d.setLineWidth(6*h.pix);d.setStrokeStyle(h.xAxis.scrollColor||"#A6A6A6");d.moveTo(t+y,o);d.lineTo(t+y+s,o);d.stroke();d.closePath();d.setLineCap("butt")}d.save();if(h._scrollDistance_&&h._scrollDistance_!==0){d.translate(h._scrollDistance_,0)}if(h.xAxis.calibration===true){d.setStrokeStyle(h.xAxis.gridColor||"#cccccc");d.setLineCap("butt");d.setLineWidth(1*h.pix);x.forEach(function(t,e){if(e>0){d.beginPath();d.moveTo(t-f/2,u);d.lineTo(t-f/2,u+3*h.pix);d.closePath();d.stroke()}})}if(h.xAxis.disableGrid!==true){d.setStrokeStyle(h.xAxis.gridColor||"#cccccc");d.setLineCap("butt");d.setLineWidth(1*h.pix);if(h.xAxis.gridType=="dash"){d.setLineDash([h.xAxis.dashLength*h.pix,h.xAxis.dashLength*h.pix])}h.xAxis.gridEval=h.xAxis.gridEval||1;x.forEach(function(t,e){if(e%h.xAxis.gridEval==0){d.beginPath();d.moveTo(t,u);d.lineTo(t,i);d.stroke()}});d.setLineDash([])}if(h.xAxis.disabled!==true){let t=r.length;if(h.xAxis.labelCount){if(h.xAxis.itemCount){t=Math.ceil(r.length/h.xAxis.itemCount*h.xAxis.labelCount)}else{t=h.xAxis.labelCount}t-=1}let e=Math.ceil(r.length/t);let a=[];let i=r.length;for(let t=0;t=h.area[3]-1&&n-Math.abs(o)<=h.width-h.area[1]+1){d.beginPath();d.setFontSize(g);d.setFillStyle(h.xAxis.fontColor||h.fontColor);d.fillText(String(a),x[e]+i,u+h.xAxis.marginTop*h.pix+(h.xAxis.lineHeight-h.xAxis.fontSize)*h.pix/2+h.xAxis.fontSize*h.pix);d.closePath();d.stroke()}})}else{a.forEach(function(t,e){var a=h.xAxis.formatter?h.xAxis.formatter(t):t;var i=h._scrollDistance_||0;var r=p=="center"?x[e]+f/2:x[e];if(r-Math.abs(i)>=h.area[3]-1&&r-Math.abs(i)<=h.width-h.area[1]+1){d.save();d.beginPath();d.setFontSize(g);d.setFillStyle(h.xAxis.fontColor||h.fontColor);var o=measureText(String(a),g,d);var n=x[e];if(p=="center"){n=x[e]+f/2}var l=0;if(h.xAxis.scrollShow){l=6*h.pix}var s=u+h.xAxis.marginTop*h.pix+g-g*Math.abs(Math.sin(c._xAxisTextAngle_));if(h.xAxis.rotateAngle<0){n-=g/2;o=0}else{n+=g/2;o=-o}d.translate(n,s);d.rotate(-1*c._xAxisTextAngle_);d.fillText(String(a),o,0);d.closePath();d.stroke();d.restore()}})}}d.restore();if(h.xAxis.title){d.beginPath();d.setFontSize(h.xAxis.titleFontSize*h.pix);d.setFillStyle(h.xAxis.titleFontColor);d.fillText(String(h.xAxis.title),h.width-h.area[1]+h.xAxis.titleOffsetX*h.pix,h.height-h.area[2]+h.xAxis.marginTop*h.pix+(h.xAxis.lineHeight-h.xAxis.titleFontSize)*h.pix/2+(h.xAxis.titleFontSize+h.xAxis.titleOffsetY)*h.pix);d.closePath();d.stroke()}if(h.xAxis.axisLine){d.beginPath();d.setStrokeStyle(h.xAxis.axisLineColor);d.setLineWidth(1*h.pix);d.moveTo(t,h.height-h.area[2]);d.lineTo(a,h.height-h.area[2]);d.stroke()}}function drawYAxisGrid(c,e,d,a){if(e.yAxis.disableGrid===true){return}let t=e.height-e.area[0]-e.area[2];let i=t/e.yAxis.splitNumber;let r=e.area[3];let o=e.chartData.xAxisData.xAxisPoints,n=e.chartData.xAxisData.eachSpacing;let l=n*(o.length-1);if(e.type=="mount"&&e.extra&&e.extra.mount&&e.extra.mount.widthRatio&&e.extra.mount.widthRatio>1){if(e.extra.mount.widthRatio>2)e.extra.mount.widthRatio=2;l+=(e.extra.mount.widthRatio-1)*n}let x=r+l;let s=[];let h=1;if(e.xAxis.axisLine===false){h=0}for(let t=h;t4&&arguments[4]!==undefined?arguments[4]:1;var n=assign({},{activeOpacity:.5,activeRadius:10,offsetAngle:0,labelWidth:15,ringWidth:30,customRadius:0,border:false,borderWidth:2,borderColor:"#FFFFFF",centerColor:"#FFFFFF",linearType:"none",customColor:[]},r.type=="pie"?r.extra.pie:r.extra.ring);var l={x:r.area[3]+(r.width-r.area[1]-r.area[3])/2,y:r.area[0]+(r.height-r.area[0]-r.area[2])/2};if(e.pieChartLinePadding==0){e.pieChartLinePadding=n.activeRadius*r.pix}var i=Math.min((r.width-r.area[1]-r.area[3])/2-e.pieChartLinePadding-e.pieChartTextPadding-e._pieTextMaxLength_,(r.height-r.area[0]-r.area[2])/2-e.pieChartLinePadding-e.pieChartTextPadding);i=i<10?10:i;if(n.customRadius>0){i=n.customRadius*r.pix}t=getPieDataPoints(t,i,a);var h=n.activeRadius*r.pix;n.customColor=fillCustomColor(n.linearType,n.customColor,t,e);t=t.map(function(t){t._start_+=n.offsetAngle*Math.PI/180;return t});t.forEach(function(t,e){if(r.tooltip){if(r.tooltip.index==e){o.beginPath();o.setFillStyle(hexToRgb(t.color,n.activeOpacity||.5));o.moveTo(l.x,l.y);o.arc(l.x,l.y,t._radius_+h,t._start_,t._start_+2*t._proportion_*Math.PI);o.closePath();o.fill()}}o.beginPath();o.setLineWidth(n.borderWidth*r.pix);o.lineJoin="round";o.setStrokeStyle(n.borderColor);var a=t.color;if(n.linearType=="custom"){var i;if(o.createCircularGradient){i=o.createCircularGradient(l.x,l.y,t._radius_)}else{i=o.createRadialGradient(l.x,l.y,0,l.x,l.y,t._radius_)}i.addColorStop(0,hexToRgb(n.customColor[t.linearIndex],1));i.addColorStop(1,hexToRgb(t.color,1));a=i}o.setFillStyle(a);o.moveTo(l.x,l.y);o.arc(l.x,l.y,t._radius_,t._start_,t._start_+2*t._proportion_*Math.PI);o.closePath();o.fill();if(n.border==true){o.stroke()}});if(r.type==="ring"){var s=i*.6;if(typeof n.ringWidth==="number"&&n.ringWidth>0){s=Math.max(0,i-n.ringWidth*r.pix)}o.beginPath();o.setFillStyle(n.centerColor);o.moveTo(l.x,l.y);o.arc(l.x,l.y,s,0,2*Math.PI);o.closePath();o.fill()}if(r.dataLabel!==false&&a===1){drawPieText(t,r,e,o,i,l)}if(a===1&&r.type==="ring"){drawRingTitle(r,e,o,l)}return{center:l,radius:i,series:t}}function drawRoseDataPoints(t,r,e,o){var a=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var n=assign({},{type:"area",activeOpacity:.5,activeRadius:10,offsetAngle:0,labelWidth:15,border:false,borderWidth:2,borderColor:"#FFFFFF",linearType:"none",customColor:[]},r.extra.rose);if(e.pieChartLinePadding==0){e.pieChartLinePadding=n.activeRadius*r.pix}var l={x:r.area[3]+(r.width-r.area[1]-r.area[3])/2,y:r.area[0]+(r.height-r.area[0]-r.area[2])/2};var i=Math.min((r.width-r.area[1]-r.area[3])/2-e.pieChartLinePadding-e.pieChartTextPadding-e._pieTextMaxLength_,(r.height-r.area[0]-r.area[2])/2-e.pieChartLinePadding-e.pieChartTextPadding);i=i<10?10:i;var s=n.minRadius||i*.5;if(i4&&arguments[4]!==undefined?arguments[4]:1;var o=assign({},{startAngle:.75,endAngle:.25,type:"default",direction:"cw",lineCap:"round",width:12,gap:2,linearType:"none",customColor:[]},i.extra.arcbar);a=getArcbarDataPoints(a,o,e);var n;if(o.centerX||o.centerY){n={x:o.centerX?o.centerX:i.width/2,y:o.centerY?o.centerY:i.height/2}}else{n={x:i.width/2,y:i.height/2}}var l;if(o.radius){l=o.radius}else{l=Math.min(n.x,n.y);l-=5*i.pix;l-=o.width/2}l=l<10?10:l;o.customColor=fillCustomColor(o.linearType,o.customColor,a,t);for(let e=0;e5&&arguments[5]!==undefined?arguments[5]:1;var f=assign({},{type:"default",startAngle:.75,endAngle:.25,width:15,labelOffset:13,splitLine:{fixRadius:0,splitNumber:10,width:15,color:"#FFFFFF",childNumber:5,childWidth:5},pointer:{width:15,color:"auto"}},c.extra.gauge);if(f.oldAngle==undefined){f.oldAngle=f.startAngle}if(f.oldData==undefined){f.oldData=0}n=getGaugeAxisPoints(n,f.startAngle,f.endAngle);var p={x:c.width/2,y:c.height/2};var u=Math.min(p.x,p.y);u-=5*c.pix;u-=f.width/2;u=u<10?10:u;var g=u-f.width;var y=0;if(f.type=="progress"){var v=u-f.width*3;d.beginPath();let t=d.createLinearGradient(p.x,p.y-v,p.x,p.y+v);t.addColorStop("0",hexToRgb(h[0].color,.3));t.addColorStop("1.0",hexToRgb("#FFFFFF",.1));d.setFillStyle(t);d.arc(p.x,p.y,v,0,2*Math.PI,false);d.fill();d.setLineWidth(f.width);d.setStrokeStyle(hexToRgb(h[0].color,.3));d.setLineCap("round");d.beginPath();d.arc(p.x,p.y,g,f.startAngle*Math.PI,f.endAngle*Math.PI,false);d.stroke();if(f.endAnglet/o){d.setStrokeStyle(hexToRgb(h[0].color,1))}else{d.setStrokeStyle(hexToRgb(h[0].color,.3))}d.setLineWidth(3*c.pix);d.moveTo(i,0);d.lineTo(r,0);d.stroke();d.rotate(a*Math.PI)}d.restore();h=getGaugeArcbarDataPoints(h,f,x);d.setLineWidth(f.width);d.setStrokeStyle(h[0].color);d.setLineCap("round");d.beginPath();d.arc(p.x,p.y,g,f.startAngle*Math.PI,h[0]._proportion_*Math.PI,false);d.stroke();let l=u-f.width*2.5;d.save();d.translate(p.x,p.y);d.rotate((h[0]._proportion_-1)*Math.PI);d.beginPath();d.setLineWidth(f.width/3);let s=d.createLinearGradient(0,-l*.6,0,l*.6);s.addColorStop("0",hexToRgb("#FFFFFF",0));s.addColorStop("0.5",hexToRgb(h[0].color,1));s.addColorStop("1.0",hexToRgb("#FFFFFF",0));d.setStrokeStyle(s);d.arc(0,0,l,.85*Math.PI,1.15*Math.PI,false);d.stroke();d.beginPath();d.setLineWidth(1);d.setStrokeStyle(h[0].color);d.setFillStyle(h[0].color);d.moveTo(-l-f.width/3/2,-4);d.lineTo(-l-f.width/3/2-4,0);d.lineTo(-l-f.width/3/2,4);d.lineTo(-l-f.width/3/2,-4);d.stroke();d.fill();d.restore()}else{d.setLineWidth(f.width);d.setLineCap("butt");for(let e=0;e4&&arguments[4]!==undefined?arguments[4]:1;var s=assign({},{gridColor:"#cccccc",gridType:"radar",gridEval:1,axisLabel:false,axisLabelTofix:0,labelShow:true,labelColor:"#666666",labelPointShow:false,labelPointRadius:3,labelPointColor:"#cccccc",opacity:.2,gridCount:3,border:false,borderWidth:2,linearType:"none",customColor:[]},n.extra.radar);var a=getRadarCoordinateSeries(n.categories.length);var h={x:n.area[3]+(n.width-n.area[1]-n.area[3])/2,y:n.area[0]+(n.height-n.area[0]-n.area[2])/2};var r=(n.width-n.area[1]-n.area[3])/2;var d=(n.height-n.area[0]-n.area[2])/2;var c=Math.min(r-(getMaxTextListLength(n.categories,i.fontSize,l)+i.radarLabelTextMargin),d-i.radarLabelTextMargin);c-=i.radarLabelTextMargin*n.pix;c=c<10?10:c;c=s.radius?s.radius:c;l.beginPath();l.setLineWidth(1*n.pix);l.setStrokeStyle(s.gridColor);a.forEach(function(t,e){var a=convertCoordinateOrigin(c*Math.cos(t),c*Math.sin(t),h);l.moveTo(h.x,h.y);if(e%s.gridEval==0){l.lineTo(a.x,a.y)}});l.stroke();l.closePath();var x=function t(i){var r={};l.beginPath();l.setLineWidth(1*n.pix);l.setStrokeStyle(s.gridColor);if(s.gridType=="radar"){a.forEach(function(t,e){var a=convertCoordinateOrigin(c/s.gridCount*i*Math.cos(t),c/s.gridCount*i*Math.sin(t),h);if(e===0){r=a;l.moveTo(a.x,a.y)}else{l.lineTo(a.x,a.y)}});l.lineTo(r.x,r.y)}else{var e=convertCoordinateOrigin(c/s.gridCount*i*Math.cos(1.5),c/s.gridCount*i*Math.sin(1.5),h);l.arc(h.x,h.y,h.y-e.y,0,2*Math.PI,false)}l.stroke();l.closePath()};for(var e=1;e<=s.gridCount;e++){x(e)}s.customColor=fillCustomColor(s.linearType,s.customColor,o,i);var f=getRadarDataPoints(a,h,c,o,n,t);f.forEach(function(t,e){l.beginPath();l.setLineWidth(s.borderWidth*n.pix);l.setStrokeStyle(t.color);var a=hexToRgb(t.color,s.opacity);if(s.linearType=="custom"){var i;if(l.createCircularGradient){i=l.createCircularGradient(h.x,h.y,c)}else{i=l.createRadialGradient(h.x,h.y,0,h.x,h.y,c)}i.addColorStop(0,hexToRgb(s.customColor[o[e].linearIndex],s.opacity));i.addColorStop(1,hexToRgb(t.color,s.opacity));a=i}l.setFillStyle(a);t.data.forEach(function(t,e){if(e===0){l.moveTo(t.position.x,t.position.y)}else{l.lineTo(t.position.x,t.position.y)}});l.closePath();l.fill();if(s.border===true){l.stroke()}l.closePath();if(n.dataPointShape!==false){var r=t.data.map(function(t){return t.position});drawPointShape(r,t.color,t.pointShape,l,n)}});if(s.axisLabel===true){const p=Math.max(s.max,Math.max.apply(null,dataCombine(o)));const u=c/s.gridCount;const g=n.fontSize*n.pix;l.setFontSize(g);l.setFillStyle(n.fontColor);l.setTextAlign("left");for(var e=0;eh.x?e.xMax:h.x;e.yMin=e.yMinh.y?e.yMax:h.y}}}return e}function coordinateToPoint(t,e,a,i,r,o){return{x:(e-a.xMin)*i+r,y:(a.yMax-t)*i+o}}function pointToCoordinate(t,e,a,i,r,o){return{x:(e-r)/i+a.xMin,y:a.yMax-(t-o)/i}}function isRayIntersectsSegment(t,e,a){if(e[1]==a[1]){return false}if(e[1]>t[1]&&a[1]>t[1]){return false}if(e[1]t[1]){return false}if(a[1]==t[1]&&e[1]>t[1]){return false}if(e[0]a[t].area[2]||e[1]>a[t].area[3]||e[2]i||e[3]>r){o=true;break}else{o=false}}else{o=true;break}}}return o}function getWordCloudPoint(c,t,d){let x=c.series;switch(t){case"normal":for(let l=0;l.7){return true}else{return false}};for(let h=0;h4&&arguments[4]!==undefined?arguments[4]:1;let a=assign({},{type:"normal",autoColors:true},r.extra.word);if(!r.chartData.wordCloudData){r.chartData.wordCloudData=getWordCloudPoint(r,a.type,o)}o.beginPath();o.setFillStyle(r.background);o.rect(0,0,r.width,r.height);o.fill();o.save();let l=r.chartData.wordCloudData;o.translate(r.width/2,r.height/2);for(let i=0;i0){if(r.tooltip){if(r.tooltip.index==i){o.strokeText(t,(l[i].areav[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].areav[1]+5+e-r.height/2)*n)}else{o.fillText(t,(l[i].areav[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].areav[1]+5+e-r.height/2)*n)}}else{o.fillText(t,(l[i].areav[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].areav[1]+5+e-r.height/2)*n)}}}else{if(l[i].area[0]>0){if(r.tooltip){if(r.tooltip.index==i){o.strokeText(t,(l[i].area[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].area[1]+5+e-r.height/2)*n)}else{o.fillText(t,(l[i].area[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].area[1]+5+e-r.height/2)*n)}}else{o.fillText(t,(l[i].area[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].area[1]+5+e-r.height/2)*n)}}}o.stroke();o.restore()}o.restore()}function drawFunnelDataPoints(t,e,c,a){let d=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let i=assign({},{type:"funnel",activeWidth:10,activeOpacity:.3,border:false,borderWidth:2,borderColor:"#FFFFFF",fillOpacity:1,minSize:0,labelAlign:"right",linearType:"none",customColor:[]},e.extra.funnel);let r=(e.height-e.area[0]-e.area[2])/t.length;let o={x:e.area[3]+(e.width-e.area[1]-e.area[3])/2,y:e.height-e.area[2]};let n=i.activeWidth*e.pix;let x=Math.min((e.width-e.area[1]-e.area[3])/2-n,(e.height-e.area[0]-e.area[2])/2-n);let l=getFunnelDataPoints(t,x,i,r,d);a.save();a.translate(o.x,o.y);i.customColor=fillCustomColor(i.linearType,i.customColor,t,c);if(i.type=="pyramid"){for(let t=0;t0){l.area[3]+=i[t].width+l.yAxis.padding*l.pix}else{l.area[3]+=i[t].width}a+=1}else if(i[t].position=="right"){if(e>0){l.area[1]+=i[t].width+l.yAxis.padding*l.pix}else{l.area[1]+=i[t].width}e+=1}}}else{n.yAxisWidth=i}l.chartData.yAxisData=f;if(l.categories&&l.categories.length&&l.type!=="radar"&&l.type!=="gauge"&&l.type!=="bar"){l.chartData.xAxisData=getXAxisPoints(l.categories,l,n);let t=calCategoriesData(l.categories,l,n,l.chartData.xAxisData.eachSpacing,s),e=t.xAxisHeight,a=t.angle;n.xAxisHeight=e;n._xAxisTextAngle_=a;l.area[2]+=e;l.chartData.categoriesData=t}else{if(l.type==="line"||l.type==="area"||l.type==="scatter"||l.type==="bubble"||l.type==="bar"){l.chartData.xAxisData=calXAxisData(c,l,n,s);d=l.chartData.xAxisData.rangesFormat;let t=calCategoriesData(d,l,n,l.chartData.xAxisData.eachSpacing,s),e=t.xAxisHeight,a=t.angle;n.xAxisHeight=e;n._xAxisTextAngle_=a;l.area[2]+=e;l.chartData.categoriesData=t}else{l.chartData.xAxisData={xAxisPoints:[]}}}if(l.enableScroll&&l.xAxis.scrollAlign=="right"&&l._scrollDistance_===undefined){let t=0,e=l.chartData.xAxisData.xAxisPoints,a=l.chartData.xAxisData.startX,i=l.chartData.xAxisData.endX,r=l.chartData.xAxisData.eachSpacing;let o=r*(e.length-1);let n=i-a;t=n-o;h.scrollOption.currentOffset=t;h.scrollOption.startTouchX=t;h.scrollOption.distance=0;h.scrollOption.lastMoveTime=0;l._scrollDistance_=t}if(t==="pie"||t==="ring"||t==="rose"){n._pieTextMaxLength_=l.dataLabel===false?0:getPieTextMaxLength(x,n,s,l)}switch(t){case"word":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function(t){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawWordCloudDataPoints(c,l,n,s,t);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"map":s.clearRect(0,0,l.width,l.height);drawMapDataPoints(c,l,n,s);setTimeout(()=>{this.uevent.trigger("renderComplete")},50);break;case"funnel":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function(t){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.funnelData=drawFunnelDataPoints(c,l,n,s,t);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,t);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"line":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawLineDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"scatter":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawScatterDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"bubble":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawBubbleDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"mix":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawMixDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"column":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawColumnDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"mount":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawMountDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"bar":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawXAxis(d,l,n,s);var a=drawBarDataPoints(c,l,n,s,e),i=a.yAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.yAxisPoints=i;l.chartData.xAxisPoints=l.chartData.xAxisData.xAxisPoints;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"area":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawAreaDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"ring":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.pieData=drawPieDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"pie":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.pieData=drawPieDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"rose":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.pieData=drawRoseDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"radar":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.radarData=drawRadarDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"arcbar":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.arcbarData=drawArcbarDataPoints(c,l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"gauge":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.gaugeData=drawGaugeDataPoints(d,c,l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"candle":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawCandleDataPoints(c,x,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}if(x){drawLegend(x,l,n,s,l.chartData)}else{drawLegend(l.series,l,n,s,l.chartData)}drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break}}function uChartsEvent(){this.events={}}uChartsEvent.prototype.addEventListener=function(t,e){this.events[t]=this.events[t]||[];this.events[t].push(e)};uChartsEvent.prototype.delEventListener=function(t){this.events[t]=[]};uChartsEvent.prototype.trigger=function(){for(var t=arguments.length,e=Array(t),a=0;a0&&arguments[0]!==undefined?arguments[0]:{};this.opts=assign({},this.opts,t);this.opts.updateData=true;let c=t.scrollPosition||"current";switch(c){case"current":this.opts._scrollDistance_=this.scrollOption.currentOffset;break;case"left":this.opts._scrollDistance_=0;this.scrollOption={currentOffset:0,startTouchX:0,distance:0,lastMoveTime:0};break;case"right":let t=calYAxisData(this.opts.series,this.opts,this.config,this.context),e=t.yAxisWidth;this.config.yAxisWidth=e;let a=0;let i=getXAxisPoints(this.opts.categories,this.opts,this.config),r=i.xAxisPoints,o=i.startX,n=i.endX,l=i.eachSpacing;let s=l*(r.length-1);let h=n-o;a=h-s;this.scrollOption={currentOffset:a,startTouchX:a,distance:0,lastMoveTime:0};this.opts._scrollDistance_=a;break}drawCharts.call(this,this.opts.type,this.opts,this.config,this.context)};uCharts.prototype.zoom=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.opts.xAxis.itemCount;if(this.opts.enableScroll!==true){console.log("[uCharts] 请启用滚动条后使用");return}let e=Math.round(Math.abs(this.scrollOption.currentOffset)/this.opts.chartData.eachSpacing)+Math.round(this.opts.xAxis.itemCount/2);this.opts.animation=false;this.opts.xAxis.itemCount=t.itemCount;let a=calYAxisData(this.opts.series,this.opts,this.config,this.context),i=a.yAxisWidth;this.config.yAxisWidth=i;let r=0;let o=getXAxisPoints(this.opts.categories,this.opts,this.config),h=o.xAxisPoints,c=o.startX,d=o.endX,n=o.eachSpacing;let x=n*e;let l=d-c;let s=l-n*(h.length-1);r=l/2-x;if(r>0){r=0}if(r=this.opts.categories.length?this.opts.categories.length:r;this.opts.animation=false;this.opts.xAxis.itemCount=r;let o=0;let n=getXAxisPoints(this.opts.categories,this.opts,this.config),x=n.xAxisPoints,f=n.startX,p=n.endX,l=n.eachSpacing;let u=l*this.scrollOption.moveCurrent1;let g=p-f;let y=g-l*(x.length-1);o=-u+Math.min(i[0].x,i[1].x)-this.opts.area[3]-l;if(o>0){o=0}if(o1&&arguments[1]!==undefined?arguments[1]:{};var a=null;if(t.changedTouches){a=t.changedTouches[0]}else{a=t.mp.changedTouches[0]}if(a){var i=getTouches(a,this.opts,t);var r=this.getLegendDataIndex(t);if(r>=0){if(this.opts.type=="candle"){this.opts.seriesMA[r].show=!this.opts.seriesMA[r].show}else{this.opts.series[r].show=!this.opts.series[r].show}this.opts.animation=e.animation?true:false;this.opts._scrollDistance_=this.scrollOption.currentOffset;drawCharts.call(this,this.opts.type,this.opts,this.config,this.context)}}};uCharts.prototype.showToolTip=function(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var c=null;if(t.changedTouches){c=t.changedTouches[0]}else{c=t.mp.changedTouches[0]}if(!c){console.log("[uCharts] 未获取到event坐标信息")}var a=getTouches(c,this.opts,t);var d=this.scrollOption.currentOffset;var i=assign({},this.opts,{_scrollDistance_:d,animation:false});if(this.opts.type==="line"||this.opts.type==="area"||this.opts.type==="column"||this.opts.type==="scatter"||this.opts.type==="bubble"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1||o.length>0){var n=getSeriesDataItem(this.opts.series,o,r.group);if(n.length!==0){var l=getToolTipData(n,this.opts,o,r.group,this.opts.categories,e),s=l.textList,h=l.offset;h.y=a.y;i.tooltip={textList:e.textList!==undefined?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o,group:r.group}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="mount"){var o=e.index==undefined?this.getCurrentDataIndex(t).index:e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},i._series_[o]);var s=[{text:e.formatter?e.formatter(n,undefined,o,i):n.name+": "+n.data,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:i.chartData.calPoints[o].x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="bar"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1||o.length>0){var n=getSeriesDataItem(this.opts.series,o,r.group);if(n.length!==0){var l=getToolTipData(n,this.opts,o,r.group,this.opts.categories,e),s=l.textList,h=l.offset;h.x=a.x;i.tooltip={textList:e.textList!==undefined?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="mix"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1){var d=this.scrollOption.currentOffset;var i=assign({},this.opts,{_scrollDistance_:d,animation:false});var n=getSeriesDataItem(this.opts.series,o);if(n.length!==0){var x=getMixToolTipData(n,this.opts,o,this.opts.categories,e),s=x.textList,h=x.offset;h.y=a.y;i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="candle"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1){var d=this.scrollOption.currentOffset;var i=assign({},this.opts,{_scrollDistance_:d,animation:false});var n=getSeriesDataItem(this.opts.series,o);if(n.length!==0){var l=getCandleToolTipData(this.opts.series[0].data,n,this.opts,o,this.opts.categories,this.opts.extra.candle,e),s=l.textList,h=l.offset;h.y=a.y;i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="pie"||this.opts.type==="ring"||this.opts.type==="rose"||this.opts.type==="funnel"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},i._series_[o]);var s=[{text:e.formatter?e.formatter(n,undefined,o,i):n.name+": "+n.data,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="map"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},this.opts.series[o]);n.name=n.properties.name;var s=[{text:e.formatter?e.formatter(n,undefined,o,this.opts):n.name,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}i.updateData=false;drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="word"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},this.opts.series[o]);var s=[{text:e.formatter?e.formatter(n,undefined,o,this.opts):n.name,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}i.updateData=false;drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="radar"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=getSeriesDataItem(this.opts.series,o);if(n.length!==0){var s=n.map(t=>{return{text:e.formatter?e.formatter(t,this.opts.categories[o],o,this.opts):t.name+": "+t.data,color:t.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?t.legendShape:this.opts.extra.tooltip.legendShape}});var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}};uCharts.prototype.translate=function(t){this.scrollOption={currentOffset:t,startTouchX:t,distance:0,lastMoveTime:0};let e=assign({},this.opts,{_scrollDistance_:t,animation:false});drawCharts.call(this,this.opts.type,e,this.config,this.context)};uCharts.prototype.scrollStart=function(t){var e=null;if(t.changedTouches){e=t.changedTouches[0]}else{e=t.mp.changedTouches[0]}var a=getTouches(e,this.opts,t);if(e&&this.opts.enableScroll===true){this.scrollOption.startTouchX=a.x}};uCharts.prototype.scroll=function(t){if(this.scrollOption.lastMoveTime===0){this.scrollOption.lastMoveTime=Date.now()}let e=this.opts.touchMoveLimit||60;let a=Date.now();let i=a-this.scrollOption.lastMoveTime;if(i=0){var o="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];o&&st(t,o,e,i)}else st(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var a=e.button;return null==e.which&&void 0!==a&&gw.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function ht(t,e,i){pw?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function ct(t,e,i){pw?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}function dt(t){return 2===t.which||3===t.which}function ft(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function pt(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function gt(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:mt}}function mt(t){mw(this.event)}function vt(){}function yt(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,o=t;o;){if(o.clipPath&&!o.clipPath.contain(e,i))return!1;o.silent&&(n=!0),o=o.parent}return!n||xw}return!1}function xt(){var t=new bw(6);return _t(t),t}function _t(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function wt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function bt(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t}function St(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t}function Mt(t,e,i){var n=e[0],o=e[2],a=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+r*u,t[1]=-n*u+r*h,t[2]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*a+u*l,t[5]=h*l-u*a,t}function It(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t}function Tt(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}function At(t){var e=xt();return wt(e,t),e}function Dt(t){return t>Iw||t<-Iw}function Ct(t){this._target=t.target,this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null!=t.loop&&t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}function Lt(t){return(t=Math.round(t))<0?0:t>255?255:t}function kt(t){return(t=Math.round(t))<0?0:t>360?360:t}function Pt(t){return t<0?0:t>1?1:t}function Nt(t){return Lt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function Ot(t){return Pt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function Et(t,e,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function Rt(t,e,i){return t+(e-t)*i}function zt(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function Bt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Vt(t,e){Vw&&Bt(Vw,e),Vw=Bw.put(t,Vw||e.slice())}function Gt(t,e){if(t){e=e||[];var i=Bw.get(t);if(i)return Bt(e,i);var n=(t+="").replace(/ /g,"").toLowerCase();if(n in zw)return Bt(e,zw[n]),Vt(t,e),e;if("#"!==n.charAt(0)){var o=n.indexOf("("),a=n.indexOf(")");if(-1!==o&&a+1===n.length){var r=n.substr(0,o),s=n.substr(o+1,a-(o+1)).split(","),l=1;switch(r){case"rgba":if(4!==s.length)return void zt(e,0,0,0,1);l=Ot(s.pop());case"rgb":return 3!==s.length?void zt(e,0,0,0,1):(zt(e,Nt(s[0]),Nt(s[1]),Nt(s[2]),l),Vt(t,e),e);case"hsla":return 4!==s.length?void zt(e,0,0,0,1):(s[3]=Ot(s[3]),Ft(s,e),Vt(t,e),e);case"hsl":return 3!==s.length?void zt(e,0,0,0,1):(Ft(s,e),Vt(t,e),e);default:return}}zt(e,0,0,0,1)}else{if(4===n.length)return(u=parseInt(n.substr(1),16))>=0&&u<=4095?(zt(e,(3840&u)>>4|(3840&u)>>8,240&u|(240&u)>>4,15&u|(15&u)<<4,1),Vt(t,e),e):void zt(e,0,0,0,1);if(7===n.length){var u=parseInt(n.substr(1),16);return u>=0&&u<=16777215?(zt(e,(16711680&u)>>16,(65280&u)>>8,255&u,1),Vt(t,e),e):void zt(e,0,0,0,1)}}}}function Ft(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Ot(t[1]),o=Ot(t[2]),a=o<=.5?o*(n+1):o+n-o*n,r=2*o-a;return e=e||[],zt(e,Lt(255*Et(r,a,i+1/3)),Lt(255*Et(r,a,i)),Lt(255*Et(r,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Wt(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:a===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function Ht(t,e){var i=Gt(t);if(i){for(var n=0;n<3;n++)i[n]=e<0?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,i[n]>255?i[n]=255:t[n]<0&&(i[n]=0);return qt(i,4===i.length?"rgba":"rgb")}}function Zt(t){var e=Gt(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ut(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[];var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=e[o],s=e[a],l=n-o;return i[0]=Lt(Rt(r[0],s[0],l)),i[1]=Lt(Rt(r[1],s[1],l)),i[2]=Lt(Rt(r[2],s[2],l)),i[3]=Pt(Rt(r[3],s[3],l)),i}}function Xt(t,e,i){if(e&&e.length&&t>=0&&t<=1){var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=Gt(e[o]),s=Gt(e[a]),l=n-o,u=qt([Lt(Rt(r[0],s[0],l)),Lt(Rt(r[1],s[1],l)),Lt(Rt(r[2],s[2],l)),Pt(Rt(r[3],s[3],l))],"rgba");return i?{color:u,leftIndex:o,rightIndex:a,value:n}:u}}function jt(t,e,i,n){if(t=Gt(t))return t=Wt(t),null!=e&&(t[0]=kt(e)),null!=i&&(t[1]=Ot(i)),null!=n&&(t[2]=Ot(n)),qt(Ft(t),"rgba")}function Yt(t,e){if((t=Gt(t))&&null!=e)return t[3]=Pt(e),qt(t,"rgba")}function qt(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}function Kt(t,e){return t[e]}function $t(t,e,i){t[e]=i}function Jt(t,e,i){return(e-t)*i+t}function Qt(t,e,i){return i>.5?e:t}function te(t,e,i,n,o){var a=t.length;if(1===o)for(s=0;so)t.length=o;else for(r=n;r=0&&!(m[i]<=e);i--);i=Math.min(i,u-2)}else{for(i=L;ie);i++);i=Math.min(i-1,u-2)}L=i,k=e;var n=m[i+1]-m[i];if(0!==n)if(I=(e-m[i])/n,l)if(A=v[i],T=v[0===i?i:i-1],D=v[i>u-2?u-1:i+1],C=v[i>u-3?u-1:i+2],d)ne(T,A,D,C,I,I*I,I*I*I,r(t,o),g);else{if(f)a=ne(T,A,D,C,I,I*I,I*I*I,P,1),a=re(P);else{if(p)return Qt(A,D,I);a=oe(T,A,D,C,I,I*I,I*I*I)}s(t,o,a)}else if(d)te(v[i],v[i+1],I,r(t,o),g);else{var a;if(f)te(v[i],v[i+1],I,P,1),a=re(P);else{if(p)return Qt(v[i],v[i+1],I);a=Jt(v[i],v[i+1],I)}s(t,o,a)}},ondestroy:i});return e&&"spline"!==e&&(N.easing=e),N}}}function ue(t,e,i,n,o,a,r,s){_(n)?(a=o,o=n,n=0):x(o)?(a=o,o="linear",n=0):x(n)?(a=n,n=0):x(i)?(a=i,i=500):i||(i=500),t.stopAnimation(),he(t,"",t,e,i,n,s);var l=t.animators.slice(),u=l.length;u||a&&a();for(var h=0;h0&&t.animate(e,!1).when(null==o?500:o,s).delay(a||0)}function ce(t,e,i,n){if(e){var o={};o[e]={},o[e][i]=n,t.attr(o)}else t.attr(i,n)}function de(t,e,i,n){i<0&&(t+=i,i=-i),n<0&&(e+=n,n=-n),this.x=t,this.y=e,this.width=i,this.height=n}function fe(t){for(var e=0;t>=eb;)e|=1&t,t>>=1;return t+e}function pe(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o=0;)o++;return o-e}function ge(t,e,i){for(i--;e>>1])<0?l=a:s=a+1;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=r}}function ve(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])>0){for(s=n-o;l0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}else{for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r>>1);a(t,e[i+h])>0?r=h+1:l=h}return l}function ye(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l=0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}for(r++;r>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function xe(t,e){function i(i){var s=a[i],u=r[i],h=a[i+1],c=r[i+1];r[i]=u+c,i===l-3&&(a[i+1]=a[i+2],r[i+1]=r[i+2]),l--;var d=ye(t[h],t,s,u,0,e);s+=d,0!==(u-=d)&&0!==(c=ve(t[s+u-1],t,h,c,c-1,e))&&(u<=c?n(s,u,h,c):o(s,u,h,c))}function n(i,n,o,a){var r=0;for(r=0;r=ib||f>=ib);if(p)break;g<0&&(g=0),g+=2}if((s=g)<1&&(s=1),1===n){for(r=0;r=0;r--)t[f+r]=t[d+r];if(0===n){v=!0;break}}if(t[c--]=u[h--],1==--a){v=!0;break}if(0!=(m=a-ve(t[l],u,0,a,a-1,e))){for(a-=m,f=(c-=m)+1,d=(h-=m)+1,r=0;r=ib||m>=ib);if(v)break;p<0&&(p=0),p+=2}if((s=p)<1&&(s=1),1===a){for(f=(c-=n)+1,d=(l-=n)+1,r=n-1;r>=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else{if(0===a)throw new Error;for(d=c-(a-1),r=0;r=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else for(d=c-(a-1),r=0;r1;){var t=l-2;if(t>=1&&r[t-1]<=r[t]+r[t+1]||t>=2&&r[t-2]<=r[t]+r[t-1])r[t-1]r[t+1])break;i(t)}},this.forceMergeRuns=function(){for(;l>1;){var t=l-2;t>0&&r[t-1]s&&(l=s),me(t,i,i+l,i+a,e),a=l}r.pushRun(i,a),r.mergeRuns(),o-=a,i+=a}while(0!==o);r.forceMergeRuns()}}function we(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function be(t,e,i){var n=null==e.x?0:e.x,o=null==e.x2?1:e.x2,a=null==e.y?0:e.y,r=null==e.y2?0:e.y2;return e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y),n=isNaN(n)?0:n,o=isNaN(o)?1:o,a=isNaN(a)?0:a,r=isNaN(r)?0:r,t.createLinearGradient(n,a,o,r)}function Se(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(r=r*n+i.x,s=s*o+i.y,l*=a),t.createRadialGradient(r,s,0,r,s,l)}function Me(){return!1}function Ie(t,e,i){var n=iw(),o=e.getWidth(),a=e.getHeight(),r=n.style;return r&&(r.position="absolute",r.left=0,r.top=0,r.width=o+"px",r.height=a+"px",n.setAttribute("data-zr-dom-id",t)),n.width=o*i,n.height=a*i,n}function Te(t){if("string"==typeof t){var e=mb.get(t);return e&&e.image}return t}function Ae(t,e,i,n,o){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!i)return e;var a=mb.get(t),r={hostEl:i,cb:n,cbPayload:o};return a?!Ce(e=a.image)&&a.pending.push(r):((e=new Image).onload=e.onerror=De,mb.put(t,e.__cachedImgObj={image:e,pending:[r]}),e.src=e.__zrImageSrc=t),e}return t}return e}function De(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;exb&&(yb=0,vb={}),yb++,vb[i]=o,o}function ke(t,e,i,n,o,a,r,s){return r?Ne(t,e,i,n,o,a,r,s):Pe(t,e,i,n,o,a,s)}function Pe(t,e,i,n,o,a,r){var s=He(t,e,o,a,r),l=Le(t,e);o&&(l+=o[1]+o[3]);var u=s.outerHeight,h=new de(Oe(0,l,i),Ee(0,u,n),l,u);return h.lineHeight=s.lineHeight,h}function Ne(t,e,i,n,o,a,r,s){var l=Ze(t,{rich:r,truncate:s,font:e,textAlign:i,textPadding:o,textLineHeight:a}),u=l.outerWidth,h=l.outerHeight;return new de(Oe(0,u,i),Ee(0,h,n),u,h)}function Oe(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function Ee(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function Re(t,e,i){var n=e.x,o=e.y,a=e.height,r=e.width,s=a/2,l="left",u="top";switch(t){case"left":n-=i,o+=s,l="right",u="middle";break;case"right":n+=i+r,o+=s,u="middle";break;case"top":n+=r/2,o-=i,l="center",u="bottom";break;case"bottom":n+=r/2,o+=a+i,l="center";break;case"inside":n+=r/2,o+=s,l="center",u="middle";break;case"insideLeft":n+=i,o+=s,u="middle";break;case"insideRight":n+=r-i,o+=s,l="right",u="middle";break;case"insideTop":n+=r/2,o+=i,l="center";break;case"insideBottom":n+=r/2,o+=a-i,l="center",u="bottom";break;case"insideTopLeft":n+=i,o+=i;break;case"insideTopRight":n+=r-i,o+=i,l="right";break;case"insideBottomLeft":n+=i,o+=a-i,u="bottom";break;case"insideBottomRight":n+=r-i,o+=a-i,l="right",u="bottom"}return{x:n,y:o,textAlign:l,textVerticalAlign:u}}function ze(t,e,i,n,o){if(!e)return"";var a=(t+"").split("\n");o=Be(e,i,n,o);for(var r=0,s=a.length;r=r;l++)s-=r;var u=Le(i,e);return u>s&&(i="",u=0),s=t-u,n.ellipsis=i,n.ellipsisWidth=u,n.contentWidth=s,n.containerWidth=t,n}function Ve(t,e){var i=e.containerWidth,n=e.font,o=e.contentWidth;if(!i)return"";var a=Le(t,n);if(a<=i)return t;for(var r=0;;r++){if(a<=o||r>=e.maxIterations){t+=e.ellipsis;break}var s=0===r?Ge(t,o,e.ascCharWidth,e.cnCharWidth):a>0?Math.floor(t.length*o/a):0;a=Le(t=t.substr(0,s),n)}return""===t&&(t=e.placeholder),t}function Ge(t,e,i,n){for(var o=0,a=0,r=t.length;au)t="",r=[];else if(null!=h)for(var c=Be(h-(i?i[1]+i[3]:0),e,o.ellipsis,{minChar:o.minChar,placeholder:o.placeholder}),d=0,f=r.length;do&&Ue(i,t.substring(o,a)),Ue(i,n[2],n[1]),o=_b.lastIndex}of)return{lines:[],width:0,height:0};k.textWidth=Le(k.text,_);var b=y.textWidth,S=null==b||"auto"===b;if("string"==typeof b&&"%"===b.charAt(b.length-1))k.percentWidth=b,u.push(k),b=0;else{if(S){b=k.textWidth;var M=y.textBackgroundColor,I=M&&M.image;I&&Ce(I=Te(I))&&(b=Math.max(b,I.width*w/I.height))}var T=x?x[1]+x[3]:0;b+=T;var C=null!=d?d-m:null;null!=C&&Cl&&(i*=l/(c=i+n),n*=l/c),o+a>l&&(o*=l/(c=o+a),a*=l/c),n+o>u&&(n*=u/(c=n+o),o*=u/c),i+a>u&&(i*=u/(c=i+a),a*=u/c),t.moveTo(r+i,s),t.lineTo(r+l-n,s),0!==n&&t.arc(r+l-n,s+n,n,-Math.PI/2,0),t.lineTo(r+l,s+u-o),0!==o&&t.arc(r+l-o,s+u-o,o,0,Math.PI/2),t.lineTo(r+a,s+u),0!==a&&t.arc(r+a,s+u-a,a,Math.PI/2,Math.PI),t.lineTo(r,s+i),0!==i&&t.arc(r+i,s+i,i,Math.PI,1.5*Math.PI)}function Ye(t){return qe(t),d(t.rich,qe),t}function qe(t){if(t){t.font=Xe(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Mb[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||Ib[i]?i:"top",t.textPadding&&(t.textPadding=L(t.textPadding))}}function Ke(t,e,i,n,o,a){n.rich?Je(t,e,i,n,o,a):$e(t,e,i,n,o,a)}function $e(t,e,i,n,o,a){var r,s=ii(n),l=!1,u=e.__attrCachedBy===rb.PLAIN_TEXT;a!==sb?(a&&(r=a.style,l=!s&&u&&r),e.__attrCachedBy=s?rb.NONE:rb.PLAIN_TEXT):u&&(e.__attrCachedBy=rb.NONE);var h=n.font||Sb;l&&h===(r.font||Sb)||(e.font=h);var c=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,c=t.__computedFont=e.font);var d=n.textPadding,f=n.textLineHeight,p=t.__textCotentBlock;p&&!t.__dirtyText||(p=t.__textCotentBlock=He(i,c,d,f,n.truncate));var g=p.outerHeight,m=p.lines,v=p.lineHeight,y=ai(g,n,o),x=y.baseX,_=y.baseY,w=y.textAlign||"left",b=y.textVerticalAlign;ti(e,n,o,x,_);var S=Ee(_,g,b),M=x,I=S;if(s||d){var T=Le(i,c);d&&(T+=d[1]+d[3]);var A=Oe(x,T,w);s&&ni(t,e,n,A,S,T,g),d&&(M=hi(x,w,d),I+=d[0])}e.textAlign=w,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(B=0;B=0&&"right"===(_=b[C]).textAlign;)ei(t,e,_,n,M,v,D,"right"),I-=_.width,D-=_.width,C--;for(A+=(a-(A-m)-(y-D)-I)/2;T<=C;)ei(t,e,_=b[T],n,M,v,A+_.width/2,"center"),A+=_.width,T++;v+=M}}function ti(t,e,i,n,o){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,o=i.height/2+i.y):a&&(n=a[0]+i.x,o=a[1]+i.y),t.translate(n,o),t.rotate(-e.textRotation),t.translate(-n,-o)}}function ei(t,e,i,n,o,a,r,s){var l=n.rich[i.styleName]||{};l.text=i.text;var u=i.textVerticalAlign,h=a+o/2;"top"===u?h=a+i.height/2:"bottom"===u&&(h=a+o-i.height/2),!i.isLineHolder&&ii(l)&&ni(t,e,l,"right"===s?r-i.width:"center"===s?r-i.width/2:r,h-i.height/2,i.width,i.height);var c=i.textPadding;c&&(r=hi(r,s,c),h-=i.height/2-c[2]-i.textHeight/2),ri(e,"shadowBlur",D(l.textShadowBlur,n.textShadowBlur,0)),ri(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),ri(e,"shadowOffsetX",D(l.textShadowOffsetX,n.textShadowOffsetX,0)),ri(e,"shadowOffsetY",D(l.textShadowOffsetY,n.textShadowOffsetY,0)),ri(e,"textAlign",s),ri(e,"textBaseline","middle"),ri(e,"font",i.font||Sb);var d=si(l.textStroke||n.textStroke,p),f=li(l.textFill||n.textFill),p=A(l.textStrokeWidth,n.textStrokeWidth);d&&(ri(e,"lineWidth",p),ri(e,"strokeStyle",d),e.strokeText(i.text,r,h)),f&&(ri(e,"fillStyle",f),e.fillText(i.text,r,h))}function ii(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function ni(t,e,i,n,o,a,r){var s=i.textBackgroundColor,l=i.textBorderWidth,u=i.textBorderColor,h=_(s);if(ri(e,"shadowBlur",i.textBoxShadowBlur||0),ri(e,"shadowColor",i.textBoxShadowColor||"transparent"),ri(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),ri(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=i.textBorderRadius;c?je(e,{x:n,y:o,width:a,height:r,r:c}):e.rect(n,o,a,r),e.closePath()}if(h)if(ri(e,"fillStyle",s),null!=i.fillOpacity){f=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=f}else e.fill();else if(w(s)){var d=s.image;(d=Ae(d,null,t,oi,s))&&Ce(d)&&e.drawImage(d,n,o,a,r)}if(l&&u)if(ri(e,"lineWidth",l),ri(e,"strokeStyle",u),null!=i.strokeOpacity){var f=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=f}else e.stroke()}function oi(t,e){e.image=t}function ai(t,e,i){var n=e.x||0,o=e.y||0,a=e.textAlign,r=e.textVerticalAlign;if(i){var s=e.textPosition;if(s instanceof Array)n=i.x+ui(s[0],i.width),o=i.y+ui(s[1],i.height);else{var l=Re(s,i,e.textDistance);n=l.x,o=l.y,a=a||l.textAlign,r=r||l.textVerticalAlign}var u=e.textOffset;u&&(n+=u[0],o+=u[1])}return{baseX:n,baseY:o,textAlign:a,textVerticalAlign:r}}function ri(t,e,i){return t[e]=ab(t,e,i),t[e]}function si(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function li(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function ui(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function hi(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function ci(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function di(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new ub(t.style,this),this._rect=null,this.__clipPaths=[]}function fi(t){di.call(this,t)}function pi(t){return parseInt(t,10)}function gi(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function mi(t,e,i){return Cb.copy(t.getBoundingRect()),t.transform&&Cb.applyTransform(t.transform),Lb.width=e,Lb.height=i,!Cb.intersect(Lb)}function vi(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i=i.length&&i.push({option:t})}}),i}function Ni(t){var e=R();Zb(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),Zb(t,function(t,i){var n=t.option;k(!n||null==n.id||!e.get(n.id)||e.get(n.id)===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&e.set(n.id,t),!t.keyInfo&&(t.keyInfo={})}),Zb(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(Ub(o)){if(a.name=null!=o.name?o.name+"":n?n.name:jb+i,n)a.id=n.id;else if(null!=o.id)a.id=o.id+"";else{var r=0;do{a.id="\0"+a.name+"\0"+r++}while(e.get(a.id))}e.set(a.id,t)}})}function Oi(t){var e=t.name;return!(!e||!e.indexOf(jb))}function Ei(t){return Ub(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Ri(t,e){function i(t,e,i){for(var n=0,o=t.length;n-rS&&trS||t<-rS}function tn(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function en(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function nn(t,e,i,n,o,a){var r=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),u=t-o,h=s*s-3*r*l,c=s*l-9*r*u,d=l*l-3*s*u,f=0;if(Ji(h)&&Ji(c))Ji(s)?a[0]=0:(M=-l/s)>=0&&M<=1&&(a[f++]=M);else{var p=c*c-4*h*d;if(Ji(p)){var g=c/h,m=-g/2;(M=-s/r+g)>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m)}else if(p>0){var v=aS(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);(M=(-s-((y=y<0?-oS(-y,uS):oS(y,uS))+(x=x<0?-oS(-x,uS):oS(x,uS))))/(3*r))>=0&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*aS(h*h*h)),w=Math.acos(_)/3,b=aS(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),m=(-s+b*(S+lS*Math.sin(w)))/(3*r),I=(-s+b*(S-lS*Math.sin(w)))/(3*r);M>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m),I>=0&&I<=1&&(a[f++]=I)}}return f}function on(t,e,i,n,o){var a=6*i-12*e+6*t,r=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if(Ji(r))Qi(a)&&(c=-s/a)>=0&&c<=1&&(o[l++]=c);else{var u=a*a-4*r*s;if(Ji(u))o[0]=-a/(2*r);else if(u>0){var h=aS(u),c=(-a+h)/(2*r),d=(-a-h)/(2*r);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function an(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,h=(l-s)*o+s,c=(h-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=c,a[4]=c,a[5]=h,a[6]=l,a[7]=n}function rn(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;hS[0]=l,hS[1]=u;for(var y=0;y<1;y+=.05)cS[0]=tn(t,i,o,r,y),cS[1]=tn(e,n,a,s,y),(p=hw(hS,cS))=0&&p=0&&c<=1&&(o[l++]=c);else{var u=r*r-4*a*s;if(Ji(u))(c=-r/(2*a))>=0&&c<=1&&(o[l++]=c);else if(u>0){var h=aS(u),c=(-r+h)/(2*a),d=(-r-h)/(2*a);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function hn(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function cn(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}function dn(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;hS[0]=r,hS[1]=s;for(var d=0;d<1;d+=.05)cS[0]=sn(t,i,o,d),cS[1]=sn(e,n,a,d),(m=hw(hS,cS))=0&&m1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(yS[0]=mS(o)*i+t,yS[1]=gS(o)*n+e,xS[0]=mS(a)*i+t,xS[1]=gS(a)*n+e,u(s,yS,xS),h(l,yS,xS),(o%=vS)<0&&(o+=vS),(a%=vS)<0&&(a+=vS),o>a&&!r?a+=vS:oo&&(_S[0]=mS(f)*i+t,_S[1]=gS(f)*n+e,u(s,_S,s),h(l,_S,l))}function yn(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0,u=t;if(r>e+s&&r>n+s||rt+s&&a>i+s||ae+c&&h>n+c&&h>a+c&&h>s+c||ht+c&&u>i+c&&u>o+c&&u>r+c||ue+u&&l>n+u&&l>a+u||lt+u&&s>i+u&&s>o+u||si||h+uo&&(o+=zS);var d=Math.atan2(l,s);return d<0&&(d+=zS),d>=n&&d<=o||d+zS>=n&&d+zS<=o}function Sn(t,e,i,n,o,a){if(a>e&&a>n||ao?r:0}function Mn(t,e){return Math.abs(t-e)e&&u>n&&u>a&&u>s||u1&&In(),c=tn(e,n,a,s,WS[0]),p>1&&(d=tn(e,n,a,s,WS[1]))),2===p?me&&s>n&&s>a||s=0&&u<=1){for(var h=0,c=sn(e,n,a,u),d=0;di||s<-i)return 0;u=Math.sqrt(i*i-s*s);FS[0]=-u,FS[1]=u;var l=Math.abs(n-o);if(l<1e-4)return 0;if(l%VS<1e-4){n=0,o=VS;p=a?1:-1;return r>=FS[0]+t&&r<=FS[1]+t?p:0}if(a){var u=n;n=wn(o),o=wn(u)}else n=wn(n),o=wn(o);n>o&&(o+=VS);for(var h=0,c=0;c<2;c++){var d=FS[c];if(d+t>r){var f=Math.atan2(s,d),p=a?1:-1;f<0&&(f=VS+f),(f>=n&&f<=o||f+VS>=n&&f+VS<=o)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function Cn(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h1&&(i||(a+=Sn(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case BS.M:r=l=t[h++],s=u=t[h++];break;case BS.L:if(i){if(yn(r,s,t[h],t[h+1],e,n,o))return!0}else a+=Sn(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.C:if(i){if(xn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=Tn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.Q:if(i){if(_n(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=An(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.A:var d=t[h++],f=t[h++],p=t[h++],g=t[h++],m=t[h++],v=t[h++];h+=1;var y=1-t[h++],x=Math.cos(m)*p+d,_=Math.sin(m)*g+f;h>1?a+=Sn(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(bn(d,f,g,m,m+v,y,e,w,o))return!0}else a+=Dn(d,f,g,m,m+v,y,w,o);r=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case BS.R:l=r=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(i){if(yn(l,u,x,u,e,n,o)||yn(x,u,x,_,e,n,o)||yn(x,_,l,_,e,n,o)||yn(l,_,l,u,e,n,o))return!0}else a+=Sn(x,u,x,_,n,o),a+=Sn(l,_,l,u,n,o);break;case BS.Z:if(i){if(yn(r,s,l,u,e,n,o))return!0}else a+=Sn(r,s,l,u,n,o);r=l,s=u}}return i||Mn(s,u)||(a+=Sn(r,s,l,u,n,o)||0),0!==a}function Ln(t,e,i){return Cn(t,0,!1,e,i)}function kn(t,e,i,n){return Cn(t,e,!0,i,n)}function Pn(t){di.call(this,t),this.path=null}function Nn(t,e,i,n,o,a,r,s,l,u,h){var c=l*(tM/180),d=QS(c)*(t-i)/2+JS(c)*(e-n)/2,f=-1*JS(c)*(t-i)/2+QS(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);p>1&&(r*=$S(p),s*=$S(p));var g=(o===a?-1:1)*$S((r*r*(s*s)-r*r*(f*f)-s*s*(d*d))/(r*r*(f*f)+s*s*(d*d)))||0,m=g*r*f/s,v=g*-s*d/r,y=(t+i)/2+QS(c)*m-JS(c)*v,x=(e+n)/2+JS(c)*m+QS(c)*v,_=nM([1,0],[(d-m)/r,(f-v)/s]),w=[(d-m)/r,(f-v)/s],b=[(-1*d-m)/r,(-1*f-v)/s],S=nM(w,b);iM(w,b)<=-1&&(S=tM),iM(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*tM),1===a&&S<0&&(S+=2*tM),h.addData(u,y,x,r,s,_,S,c,a)}function On(t){if(!t)return new ES;for(var e,i=0,n=0,o=i,a=n,r=new ES,s=ES.CMD,l=t.match(oM),u=0;u=2){if(o&&"spline"!==o){var a=fM(n,o,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var r=n.length,s=0;s<(i?r:r-1);s++){var l=a[2*s],u=a[2*s+1],h=n[(s+1)%r];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===o&&(n=dM(n,i)),t.moveTo(n[0][0],n[0][1]);for(var s=1,c=n.length;s=0)?(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))):null!=a&&(i={textFill:null},t.textFill=a),i&&(t.insideRollback=i)}}function bo(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function So(t,e){var i=e||e.getModel("textStyle");return P([t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" "))}function Mo(t,e,i,n,o,a){if("function"==typeof o&&(a=o,o=null),n&&n.isAnimationEnabled()){var r=t?"Update":"",s=n.getShallow("animationDuration"+r),l=n.getShallow("animationEasing"+r),u=n.getShallow("animationDelay"+r);"function"==typeof u&&(u=u(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof s&&(s=s(o)),s>0?e.animateTo(i,s,u||0,l,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function Io(t,e,i,n,o){Mo(!0,t,e,i,n,o)}function To(t,e,i,n,o){Mo(!1,t,e,i,n,o)}function Ao(t,e){for(var i=_t([]);t&&t!==e;)bt(i,t.getLocalTransform(),i),t=t.parent;return i}function Do(t,e,i){return e&&!c(e)&&(e=Tw.getLocalTransform(e)),i&&(e=Tt([],e)),Q([],t,e)}function Co(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=Do(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Lo(t,e,i,n){function o(t){var e={position:F(t.position),rotation:t.rotation};return t.shape&&(e.shape=a({},t.shape)),e}if(t&&e){var r=function(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=r[t.anid];if(e){var n=o(t);t.attr(o(e)),Io(t,n,i,t.dataIndex)}}})}}function ko(t,e){return f(t,function(t){var i=t[0];i=LM(i,e.x),i=kM(i,e.x+e.width);var n=t[1];return n=LM(n,e.y),n=kM(n,e.y+e.height),[i,n]})}function Po(t,e,i){var n=(e=a({rectHover:!0},e)).style={strokeNoScale:!0};if(i=i||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(n.image=t.slice(8),r(n,i),new fi(e)):Xn(t.replace("path://",""),e,i,"center")}function No(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function Oo(t,e,i){for(var n=0;n0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]}function Vo(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?zo(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Go(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Fo(t){return t.sort(function(t,e){return t-e}),t}function Wo(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Ho(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var o=e.indexOf(".");return o<0?0:e.length-1-o}function Zo(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20}function Uo(t,e,i){if(!t[e])return 0;var n=p(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var o=Math.pow(10,i),a=f(t,function(t){return(isNaN(t)?0:t)/n*o*100}),r=100*o,s=f(a,function(t){return Math.floor(t)}),l=p(s,function(t,e){return t+e},0),u=f(a,function(t,e){return t-s[e]});lh&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/o}function Xo(t){var e=2*Math.PI;return(t%e+e)%e}function jo(t){return t>-UM&&t=-20?+t.toFixed(n<0?-n:0):t}function Jo(t){function e(t,i,n){return t.interval[n]=0}function ta(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function ea(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}function ia(t){return null==t?"":(t+"").replace(KM,function(t,e){return $M[e]})}function na(t,e,i){y(e)||(e=[e]);var n=e.length;if(!n)return"";for(var o=e[0].$vars||[],a=0;a':'':{renderMode:o,content:"{marker"+a+"|} ",style:{color:i}}:""}function ra(t,e){return t+="","0000".substr(0,e-t.length)+t}function sa(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Yo(e),o=i?"UTC":"",a=n["get"+o+"FullYear"](),r=n["get"+o+"Month"]()+1,s=n["get"+o+"Date"](),l=n["get"+o+"Hours"](),u=n["get"+o+"Minutes"](),h=n["get"+o+"Seconds"](),c=n["get"+o+"Milliseconds"]();return t=t.replace("MM",ra(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",ra(s,2)).replace("d",s).replace("hh",ra(l,2)).replace("h",l).replace("mm",ra(u,2)).replace("m",u).replace("ss",ra(h,2)).replace("s",h).replace("SSS",ra(c,3))}function la(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function ua(t,e,i,n,o){var a=0,r=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);(h=a+m)>n||l.newline?(a=0,h=m,r+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(c=r+v)>o||l.newline?(a+=s+i,r=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=r,"horizontal"===t?a=h+i:r=c+i)})}function ha(t,e,i){var n=e.width,o=e.height,a=Vo(t.x,n),r=Vo(t.y,o),s=Vo(t.x2,n),l=Vo(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=o),i=qM(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}function ca(t,e,i){i=qM(i||0);var n=e.width,o=e.height,a=Vo(t.left,n),r=Vo(t.top,o),s=Vo(t.right,n),l=Vo(t.bottom,o),u=Vo(t.width,n),h=Vo(t.height,o),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-a),isNaN(h)&&(h=o-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(f>n/o?u=.8*n:h=.8*o),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(a)&&(a=n-s-u-d),isNaN(r)&&(r=o-l-h-c),t.left||t.right){case"center":a=n/2-u/2-i[3];break;case"right":a=n-u-d}switch(t.top||t.bottom){case"middle":case"center":r=o/2-h/2-i[0];break;case"bottom":r=o-h-c}a=a||0,r=r||0,isNaN(u)&&(u=n-d-a-(s||0)),isNaN(h)&&(h=o-c-r-(l||0));var p=new de(a+i[3],r+i[0],u,h);return p.margin=i,p}function da(t,e,i,n,o){var a=!o||!o.hv||o.hv[0],s=!o||!o.hv||o.hv[1],l=o&&o.boundingMode||"all";if(a||s){var u;if("raw"===l)u="group"===t.type?new de(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(u=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(u=u.clone()).applyTransform(h)}e=ca(r({width:u.width,height:u.height},e),i,n);var c=t.position,d=a?e.x-u.x:0,f=s?e.y-u.y:0;t.attr("position","raw"===l?[d,f]:[c[0]+d,c[1]+f])}}function fa(t,e){return null!=t[oI[e][0]]||null!=t[oI[e][1]]&&null!=t[oI[e][2]]}function pa(t,e,i){function n(i,n){var r={},l=0,u={},h=0;if(iI(i,function(e){u[e]=t[e]}),iI(i,function(t){o(e,t)&&(r[t]=u[t]=e[t]),a(r,t)&&l++,a(u,t)&&h++}),s[n])return a(e,i[1])?u[i[2]]=null:a(e,i[2])&&(u[i[1]]=null),u;if(2!==h&&l){if(l>=2)return r;for(var c=0;ce)return t[n];return t[i-1]}function ya(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:R(),categoryAxisMap:R()},n=fI[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}function xa(t){return"category"===t.get("type")}function _a(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===vI?{}:[]),this.sourceFormat=t.sourceFormat||yI,this.seriesLayoutBy=t.seriesLayoutBy||_I,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&R(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function wa(t){var e=t.option.source,i=yI;if(S(e))i=xI;else if(y(e)){0===e.length&&(i=gI);for(var n=0,o=e.length;n=e:"max"===i?t<=e:t===e}function Xa(t,e){return t.join(",")===e.join(",")}function ja(t,e){AI(e=e||{},function(e,i){if(null!=e){var n=t[i];if(lI.hasClass(i)){e=Di(e);var o=Pi(n=Di(n),e);t[i]=CI(o,function(t){return t.option&&t.exist?LI(t.exist,t.option,!0):t.exist||t.option})}else t[i]=LI(n,e,!0)}})}function Ya(t){var e=t&&t.itemStyle;if(e)for(var i=0,o=OI.length;i=0;p--){var g=t[p];if(s||(d=g.data.rawIndexOf(g.stackedByDimension,c)),d>=0){var m=g.data.getByRawIndex(g.stackResultDimension,d);if(h>=0&&m>0||h<=0&&m<0){h+=m,f=m;break}}}return n[0]=h,n[1]=f,n});r.hostModel.setData(l),e.data=l})}function rr(t,e){_a.isInstance(t)||(t=_a.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===xI&&(this._offset=0,this._dimSize=e,this._data=i),a(this,GI[n===gI?n+"_"+t.seriesLayoutBy:n])}function sr(){return this._data.length}function lr(t){return this._data[t]}function ur(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Mr(t,e){d(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,v(Ir,e))})}function Ir(t){var e=Tr(t);e&&e.setOutputEnd(this.count())}function Tr(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var o=n.agentStubMap;o&&(n=o.get(t.uid))}return n}}function Ar(){this.group=new tb,this.uid=Ro("viewChart"),this.renderTask=gr({plan:Lr,reset:kr}),this.renderTask.context={view:this}}function Dr(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i=0?n():c=setTimeout(n,-a),u=o};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){l=t},d}function Nr(t,e,i,n){var o=t[e];if(o){var a=o[iT]||o,r=o[oT];if(o[nT]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=Pr(a,i,"debounce"===n))[iT]=a,o[oT]=n,o[nT]=i}return o}}function Or(t,e){var i=t[e];i&&i[iT]&&(t[e]=i[iT])}function Er(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;var i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=R()}function Rr(t,e,i,n,o){function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}o=o||{};var r;d(e,function(e,s){if(!o.visualType||o.visualType===e.visualType){var l=t._stageTaskMap.get(e.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,d=h.agentStubMap;d.each(function(t){a(o,t)&&(t.dirty(),c=!0)}),c&&h.dirty(),hT(h,n);var f=t.getPerformArgs(h,o.block);d.each(function(t){t.perform(f)}),r|=h.perform(f)}else u&&u.each(function(s,l){a(o,s)&&s.dirty();var u=t.getPerformArgs(s,o.block);u.skip=!e.performRawSeries&&i.isSeriesFiltered(s.context.model),hT(s,n),r|=s.perform(u)})}}),t.unfinished|=r}function zr(t,e,i,n,o){function a(i){var a=i.uid,s=r.get(a)||r.set(a,gr({plan:Hr,reset:Zr,count:Xr}));s.context={model:i,ecModel:n,api:o,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},jr(t,i,s)}var r=i.seriesTaskMap||(i.seriesTaskMap=R()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(a):s?n.eachRawSeriesByType(s,a):l&&l(n,o).each(a);var u=t._pipelineMap;r.each(function(t,e){u.get(e)||(t.dispose(),r.removeKey(e))})}function Br(t,e,i,n,o){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,gr({reset:Gr,onDirty:Wr})),r.dirty()),n.context={model:e,overallProgress:h,modifyOutputEnd:c},n.agent=r,n.__block=h,jr(t,e,n)}var r=i.overallTask=i.overallTask||gr({reset:Vr});r.context={ecModel:n,api:o,overallReset:e.overallReset,scheduler:t};var s=r.agentStubMap=r.agentStubMap||R(),l=e.seriesType,u=e.getTargetSeries,h=!0,c=e.modifyOutputEnd;l?n.eachRawSeriesByType(l,a):u?u(n,o).each(a):(h=!1,d(n.getSeries(),a));var f=t._pipelineMap;s.each(function(t,e){f.get(e)||(t.dispose(),r.dirty(),s.removeKey(e))})}function Vr(t){t.overallReset(t.ecModel,t.api,t.payload)}function Gr(t,e){return t.overallProgress&&Fr}function Fr(){this.agent.dirty(),this.getDownstream().dirty()}function Wr(){this.agent&&this.agent.dirty()}function Hr(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Zr(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Di(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?f(e,function(t,e){return Ur(e)}):cT}function Ur(t){return function(e,i){var n=i.data,o=i.resetDefines[t];if(o&&o.dataEach)for(var a=e.start;a0?parseInt(n,10)/100:n?parseFloat(n):0;var o=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,o)}i=i.nextSibling}}function Qr(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),r(e.__inheritedStyle,t.__inheritedStyle))}function ts(t){for(var e=P(t).split(_T),i=[],n=0;n0;a-=2){var r=o[a],s=o[a-1];switch(n=n||xt(),s){case"translate":r=P(r).split(_T),St(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=P(r).split(_T),It(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=P(r).split(_T),Mt(n,n,parseFloat(r[0]));break;case"skew":r=P(r).split(_T),console.warn("Skew transform is not supported yet");break;case"matrix":r=P(r).split(_T);n[0]=parseFloat(r[0]),n[1]=parseFloat(r[1]),n[2]=parseFloat(r[2]),n[3]=parseFloat(r[3]),n[4]=parseFloat(r[4]),n[5]=parseFloat(r[5])}}e.setLocalTransform(n)}}function os(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};TT.lastIndex=0;for(var o;null!=(o=TT.exec(e));)n[o[1]]=o[2];for(var a in ST)ST.hasOwnProperty(a)&&null!=n[a]&&(i[ST[a]]=n[a]);return i}function as(t,e,i){var n=e/t.width,o=i/t.height,a=Math.min(n,o);return{scale:[a,a],position:[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2]}}function rs(t,e){return(new $r).parse(t,e)}function ss(t){return function(e,i,n){e=e&&e.toLowerCase(),fw.prototype[t].call(this,e,i,n)}}function ls(){fw.call(this)}function us(t,e,n){function o(t,e){return t.__prio-e.__prio}n=n||{},"string"==typeof e&&(e=JT[e]),this.id,this.group,this._dom=t;var a=this._zr=Ii(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=Pr(m(a.flush,a),17),(e=i(e))&&BI(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Fa;var r=this._api=As(this);_e($T,o),_e(YT,o),this._scheduler=new Er(this,r,YT,$T),fw.call(this,this._ecEventProcessor=new Ds),this._messageCenter=new ls,this._initEvents(),this.resize=m(this.resize,this),this._pendingActions=[],a.animation.on("frame",this._onframe,this),vs(a,this),N(this)}function hs(t,e,i){var n,o=this._model,a=this._coordSysMgr.getCoordinateSystems();e=Vi(o,e);for(var r=0;re.get("hoverLayerThreshold")&&!U_.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function Is(t,e){var i=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==i&&t.setStyle("blend",i),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",i)})})}function Ts(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function As(t){var e=t._coordSysMgr;return a(new Ga(t),{getCoordinateSystems:m(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function Ds(){this.eventInfo}function Cs(t){function e(t,e){for(var n=0;n65535?dA:pA}function Js(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Qs(t,e){d(gA.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,d(mA,function(n){t[n]=i(e[n])}),t._calculationInfo=a(e._calculationInfo)}function tl(t,e,i,n,o){var a=cA[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length=0?this._indices[t]:-1}function al(t,e){var i=t._idList[e];return null==i&&(i=il(t,t._idDimIdx,e)),null==i&&(i=hA+e),i}function rl(t){return y(t)||(t=[t]),t}function sl(t,e){var i=t.dimensions,n=new vA(f(i,t.getDimensionInfo,t),t.hostModel);Qs(n,t);for(var o=n._storage={},a=t._storage,r=0;r=0?(o[s]=ll(a[s]),n._rawExtent[s]=ul(),n._extent[s]=null):o[s]=a[s])}return n}function ll(t){for(var e=new Array(t.length),i=0;in&&(r=o.interval=n);var s=o.intervalPrecision=Ml(r);return Tl(o.niceTickExtent=[MA(Math.ceil(t[0]/r)*r,s),MA(Math.floor(t[1]/r)*r,s)],t),o}function Ml(t){return Ho(t)+2}function Il(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Tl(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Il(t,0,e),Il(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Al(t,e,i,n){var o=[];if(!t)return o;e[0]1e4)return[];return e[1]>(o.length?o[o.length-1]:i[1])&&o.push(e[1]),o}function Dl(t){return t.get("stack")||AA+t.seriesIndex}function Cl(t){return t.dim+t.index}function Ll(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),o=0;o=0?"p":"n",b=m;p&&(o[r][_]||(o[r][_]={p:m,n:m}),b=o[r][_][w]);var S,M,I,T;if(g)S=b,M=(A=i.dataToPoint([x,_]))[1]+l,I=A[0]-m,T=u,Math.abs(I)a[1]?(n=a[1],o=a[0]):(n=a[0],o=a[1]);var r=e.toGlobalCoord(e.dataToCoord(0));return ro&&(r=o),r}function Vl(t,e){return VA(t,BA(e))}function Gl(t,e){var i,n,o,a=t.type,r=e.getMin(),s=e.getMax(),l=null!=r,u=null!=s,h=t.getExtent();"ordinal"===a?i=e.getCategories().length:(y(n=e.get("boundaryGap"))||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=Vo(n[0],1),n[1]=Vo(n[1],1),o=h[1]-h[0]||Math.abs(h[0])),null==r&&(r="ordinal"===a?i?0:NaN:h[0]-n[0]*o),null==s&&(s="ordinal"===a?i?i-1:NaN:h[1]+n[1]*o),"dataMin"===r?r=h[0]:"function"==typeof r&&(r=r({min:h[0],max:h[1]})),"dataMax"===s?s=h[1]:"function"==typeof s&&(s=s({min:h[0],max:h[1]})),(null==r||!isFinite(r))&&(r=NaN),(null==s||!isFinite(s))&&(s=NaN),t.setBlank(I(r)||I(s)||"ordinal"===a&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(r>0&&s>0&&!l&&(r=0),r<0&&s<0&&!u&&(s=0));var c=e.ecModel;if(c&&"time"===a){var f,p=kl("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=Pl(p),m=Fl(r,s,e,g);r=m.min,s=m.max}}return[r,s]}function Fl(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Ol(n,i.axis);if(void 0===r)return{min:t,max:e};var s=1/0;d(r,function(t){s=Math.min(t.offset,s)});var l=-1/0;d(r,function(t){l=Math.max(t.offset+t.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/a)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}function Wl(t,e){var i=Gl(t,e),n=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var r=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:o,minInterval:"interval"===r||"time"===r?e.get("minInterval"):null,maxInterval:"interval"===r||"time"===r?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)}function Hl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new SA(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new TA;default:return(xl.getClass(e)||TA).create(t)}}function Zl(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function Ul(t){var e=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof e?e=function(e){return function(i){return i=t.scale.getLabel(i),e.replace("{value}",null!=i?i:"")}}(e):"function"==typeof e?function(n,o){return null!=i&&(o=n-i),e(Xl(t,n),o)}:function(e){return t.scale.getLabel(e)}}function Xl(t,e){return"category"===t.type?t.scale.getLabel(e):e}function jl(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,o,a="category"===t.type,r=i.getExtent();o=a?i.count():(n=i.getTicks()).length;var s,l=t.getLabelModel(),u=Ul(t),h=1;o>40&&(h=Math.ceil(o/40));for(var c=0;c>1^-(1&s),l=l>>1^-(1&l),o=s+=o,a=l+=a,n.push([s/i,l/i])}return n}function ou(t){return"category"===t.type?ru(t):uu(t)}function au(t,e){return"category"===t.type?lu(t,e):{ticks:t.scale.getTicks()}}function ru(t){var e=t.getLabelModel(),i=su(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function su(t,e){var i=hu(t,"labels"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;return a=x(n)?vu(t,n):mu(t,r="auto"===n?fu(t):n),du(i,n,{labels:a,labelCategoryInterval:r})}function lu(t,e){var i=hu(t,"ticks"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;if(e.get("show")&&!t.scale.isBlank()||(a=[]),x(n))a=vu(t,n,!0);else if("auto"===n){var s=su(t,t.getLabelModel());r=s.labelCategoryInterval,a=f(s.labels,function(t){return t.tickValue})}else a=mu(t,r=n,!0);return du(i,n,{ticks:a,tickCategoryInterval:r})}function uu(t){var e=t.scale.getTicks(),i=Ul(t);return{labels:f(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function hu(t,e){return nD(t)[e]||(nD(t)[e]=[])}function cu(t,e){for(var i=0;i40&&(s=Math.max(1,Math.floor(r/40)));for(var l=a[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(n)),c=Math.abs(u*Math.sin(n)),d=0,f=0;l<=a[1];l+=s){var p=0,g=0,m=ke(i(l),e.font,"center","top");p=1.3*m.width,g=1.3*m.height,d=Math.max(d,p,7),f=Math.max(f,g,7)}var v=d/h,y=f/c;isNaN(v)&&(v=1/0),isNaN(y)&&(y=1/0);var x=Math.max(0,Math.floor(Math.min(v,y))),_=nD(t.model),w=_.lastAutoInterval,b=_.lastTickCount;return null!=w&&null!=b&&Math.abs(w-x)<=1&&Math.abs(b-r)<=1&&w>x?x=w:(_.lastTickCount=r,_.lastAutoInterval=x),x}function gu(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function mu(t,e,i){function n(t){l.push(i?t:{formattedLabel:o(t),rawLabel:a.getLabel(t),tickValue:t})}var o=Ul(t),a=t.scale,r=a.getExtent(),s=t.getLabelModel(),l=[],u=Math.max((e||0)+1,1),h=r[0],c=a.count();0!==h&&u>1&&c/u>2&&(h=Math.round(Math.ceil(h/u)*u));var d=Kl(t),f=s.get("showMinLabel")||d,p=s.get("showMaxLabel")||d;f&&h!==r[0]&&n(r[0]);for(var g=h;g<=r[1];g+=u)n(g);return p&&g!==r[1]&&n(r[1]),l}function vu(t,e,i){var n=t.scale,o=Ul(t),a=[];return d(n.getTicks(),function(t){var r=n.getLabel(t);e(t,r)&&a.push(i?t:{formattedLabel:o(t),rawLabel:r,tickValue:t})}),a}function yu(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}function xu(t,e,i,n,o){function a(t,e){return h?t>e:t0&&(t.coord-=u/(2*(e+1)))}),s={coord:e[r-1].coord+u},e.push(s)}var h=l[0]>l[1];a(e[0].coord,l[0])&&(o?e[0].coord=l[0]:e.shift()),o&&a(l[0],e[0].coord)&&e.unshift({coord:l[0]}),a(l[1],s.coord)&&(o?s.coord=l[1]:e.pop()),o&&a(s.coord,l[1])&&e.push({coord:l[1]})}}function _u(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return fr(t,e,i[0]);if(n){for(var o=[],a=0;a0?i=n[0]:n[1]<0&&(i=n[1]),i}function Ou(t,e,i,n){var o=NaN;t.stacked&&(o=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(o)&&(o=t.valueStart);var a=t.baseDataOffset,r=[];return r[a]=i.get(t.baseDim,n),r[1-a]=o,e.dataToPoint(r)}function Eu(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}function Ru(t){return isNaN(t[0])||isNaN(t[1])}function zu(t,e,i,n,o,a,r,s,l,u,h){return"none"!==u&&u?Bu.apply(this,arguments):Vu.apply(this,arguments)}function Bu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]);else if(l>0){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;_D(bD,g),bD[m]=g[m]+v,_D(SD,p),SD[m]=p[m]-v,t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Vu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),_D(bD,p);else if(l>0){var g=d+a,m=e[g];if(h)for(;m&&Ru(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||Ru(m))_D(SD,p);else{Ru(m)&&!h&&(m=p),U(wD,m,y);var x,_;if("x"===u||"y"===u){var w="x"===u?0:1;x=Math.abs(p[w]-y[w]),_=Math.abs(p[w]-m[w])}else x=uw(p,y),_=uw(p,m);xD(SD,p,wD,-l*(1-(v=_/(_+x))))}vD(bD,bD,s),yD(bD,bD,r),vD(SD,SD,s),yD(SD,SD,r),t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1]),xD(bD,p,wD,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Gu(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var o=0;on[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}function Fu(t,e){if(t.length===e.length){for(var i=0;ie[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function Zu(t,e,i){if(!i.valueDim)return[];for(var n=[],o=0,a=e.count();oa[1]&&a.reverse();var r=o.getExtent(),s=Math.PI/180;i&&(a[0]-=.5,a[1]+=.5);var l=new hM({shape:{cx:Go(t.cx,1),cy:Go(t.cy,1),r0:Go(a[0],1),r:Go(a[1],1),startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:o.inverse}});return e&&(l.shape.endAngle=-r[0]*s,To(l,{shape:{endAngle:-r[1]*s}},n)),l}function ju(t,e,i,n){return"polar"===t.type?Xu(t,e,i,n):Uu(t,e,i,n)}function Yu(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r=0;a--){var r=i[a].dimension,s=t.dimensions[r],l=t.getDimensionInfo(s);if("x"===(n=l&&l.coordDim)||"y"===n){o=i[a];break}}if(o){var u=e.getAxis(n),h=f(o.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,p=o.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var g=h[0].coord-10,m=h[c-1].coord+10,v=m-g;if(v<.001)return"transparent";d(h,function(t){t.offset=(t.coord-g)/v}),h.push({offset:c?h[c-1].offset:.5,color:p[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:p[0]||"transparent"});var y=new TM(0,0,0,0,h,!0);return y[n]=g,y[n+"2"]=m,y}}}function Ku(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!$u(a,e))){var r=e.mapDimension(a.dim),s={};return d(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function $u(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),r=0;rn)return!1;return!0}function Ju(t){return this._axes[t]}function Qu(t){LD.call(this,t)}function th(t,e){return e.type||(e.data?"category":"value")}function eh(t,e,i){return t.getCoordSysModel()===e}function ih(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function nh(t,e,i,n){function o(t){return t.dim+"_"+t.index}i.getAxesOnZeroOf=function(){return a?[a]:[]};var a,r=t[e],s=i.model,l=s.get("axisLine.onZero"),u=s.get("axisLine.onZeroAxisIndex");if(l){if(null!=u)oh(r[u])&&(a=r[u]);else for(var h in r)if(r.hasOwnProperty(h)&&oh(r[h])&&!n[o(r[h])]){a=r[h];break}a&&(n[o(a)]=!0)}}function oh(t){return t&&"category"!==t.type&&"time"!==t.type&&Zl(t)}function ah(t,e){var i=t.getExtent(),n=i[0]+i[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}function rh(t,e){return f(VD,function(e){return t.getReferringComponents(e)[0]})}function sh(t){return"cartesian2d"===t.get("coordinateSystem")}function lh(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function uh(t,e,i,n){var o,a,r=Xo(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return jo(r-GD/2)?(a=l?"bottom":"top",o="center"):jo(r-1.5*GD)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*GD&&r>GD/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function hh(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function ch(t,e,i){if(!Kl(t.axis)){var n=t.get("axisLabel.showMinLabel"),o=t.get("axisLabel.showMaxLabel");e=e||[],i=i||[];var a=e[0],r=e[1],s=e[e.length-1],l=e[e.length-2],u=i[0],h=i[1],c=i[i.length-1],d=i[i.length-2];!1===n?(dh(a),dh(u)):fh(a,r)&&(n?(dh(r),dh(h)):(dh(a),dh(u))),!1===o?(dh(s),dh(c)):fh(l,s)&&(o?(dh(l),dh(d)):(dh(s),dh(c)))}}function dh(t){t&&(t.ignore=!0)}function fh(t,e,i){var n=t&&t.getBoundingRect().clone(),o=e&&e.getBoundingRect().clone();if(n&&o){var a=_t([]);return Mt(a,a,-t.rotation),n.applyTransform(bt([],a,t.getLocalTransform())),o.applyTransform(bt([],a,e.getLocalTransform())),n.intersect(o)}}function ph(t){return"middle"===t||"center"===t}function gh(t,e,i){var n=e.axis;if(e.get("axisTick.show")&&!n.scale.isBlank()){for(var o=e.getModel("axisTick"),a=o.getModel("lineStyle"),s=o.get("length"),l=n.getTicksCoords(),u=[],h=[],c=t._transform,d=[],f=0;f=0||t===e}function Sh(t){var e=Mh(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=Th(i);null==a&&(o.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r0?"bottom":"top":o.width>0?"left":"right";l||kh(t.style,d,n,u,a,i,p),fo(t,d)}function Rh(t,e){var i=t.get(tC)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function zh(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=new nC({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__valueIdx:a});e.add(r),Bh(r,t,n)}function Bh(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),o=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(o),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}function Vh(t,e,i,n){var o=e.getData(),a=this.dataIndex,r=o.getName(a),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:r,seriesId:e.id}),o.each(function(t){Gh(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Gh(t,e,i,n,o){var a=(e.startAngle+e.endAngle)/2,r=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[r*l,s*l];o?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function Fh(t,e){function i(){a.ignore=a.hoverIgnore,r.ignore=r.hoverIgnore}function n(){a.ignore=a.normalIgnore,r.ignore=r.normalIgnore}tb.call(this);var o=new hM({z2:2}),a=new gM,r=new rM;this.add(o),this.add(a),this.add(r),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function Wh(t,e,i,n,o,a,r){function s(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function l(t,e,i,n,o,a){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s=r&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}t.sort(function(t,e){return t.y-e.y});for(var u,h=0,c=t.length,d=[],f=[],p=0;pe&&a+1t[a].y+t[a].height)return void s(a,n/2);s(i-1,n/2)}(p,c,-u),h=t[p].y+t[p].height;r-h<0&&s(c-1,h-r);for(p=0;p=i?f.push(t[p]):d.push(t[p]);l(d,!1,e,i,n,o),l(f,!0,e,i,n,o)}function Hh(t,e,i,n,o,a){for(var r=[],s=[],l=0;l3?1.4:o>1?1.2:1.1;hc(this,"zoom","zoomOnMouseWheel",t,{scale:n>0?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);hc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(n>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:a,originY:r})}}}function uc(t){ic(this._zr,"globalPan")||hc(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function hc(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(mw(n.event),cc(t,e,i,n,o))}function cc(t,e,i,n,o){o.isAvailableBehavior=m(dc,null,i,n),t.trigger(e,o)}function dc(t,e,i){var n=i[t];return!t||n&&(!_(n)||e.event[n+"Key"])}function fc(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function pc(t,e,i,n){var o=t.target,a=t.zoomLimit,r=o.position,s=o.scale,l=t.zoom=t.zoom||1;if(l*=e,a){var u=a.min||0,h=a.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}function gc(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!RC[n.mainType]&&o&&o.model!==i}function mc(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function vc(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(a){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var r=a.target;!r.__regions;)r=r.parent;if(r){var s={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",batch:f(r.__regions,function(t){return{name:t.name,from:o.uid}})};s[e.mainType+"Id"]=e.id,n.dispatchAction(s),yc(e,i)}}}))}function yc(t,e){e.eachChild(function(e){d(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function xc(t,e){var i=new tb;this.uid=Ro("ec_map_draw"),this._controller=new oc(t.getZr()),this._controllerHost={target:e?i:null},this.group=i,this._updateGroup=e,this._mouseDownFlag,this._mapName,this._initialized,i.add(this._regionsGroup=new tb),i.add(this._backgroundGroup=new tb)}function _c(t){var e=this[zC];e&&e.recordVersion===this[BC]&&wc(e,t)}function wc(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(mo({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=NM):(mo(i.style,n,{text:n.get("show")?r:null,textPosition:n.getShallow("position")||"bottom"},{isRectText:!0,useInsideStyle:!1}),i.dirty(!1),null!=i.__mapOriginalZ2&&(i.z2=i.__mapOriginalZ2,i.__mapOriginalZ2=null))}function bc(t,e,i){var n=t.getZoom(),o=t.getCenter(),a=e.zoom,r=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;o=t.pointToData(r);t.setCenter(o)}if(null!=a){if(i){var s=i.min||0,l=i.max||1/0;a=Math.max(Math.min(n*a,l),s)/n}t.scale[0]*=a,t.scale[1]*=a;var u=t.position,h=(e.originX-u[0])*(a-1),c=(e.originY-u[1])*(a-1);u[0]-=h,u[1]-=c,t.updateTransform();o=t.pointToData(r);t.setCenter(o),t.setZoom(a*n)}return{center:t.getCenter(),zoom:t.getZoom()}}function Sc(){Tw.call(this)}function Mc(t){this.name=t,this.zoomLimit,Tw.call(this),this._roamTransformable=new Sc,this._rawTransformable=new Sc,this._center,this._zoom}function Ic(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function Tc(t,e,i,n){Mc.call(this,t),this.map=e;var o=OC.load(e,i);this._nameCoordMap=o.nameCoordMap,this._regionsMap=o.regionsMap,this._invertLongitute=null==n||n,this.regions=o.regions,this._rect=o.boundingRect}function Ac(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}function Dc(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,r=this.getBoundingRect(),s=t.get("layoutCenter"),l=t.get("layoutSize"),u=e.getWidth(),h=e.getHeight(),c=r.width/r.height*this.aspectScale,d=!1;s&&l&&(s=[Vo(s[0],u),Vo(s[1],h)],l=Vo(l,Math.min(u,h)),isNaN(s[0])||isNaN(s[1])||isNaN(l)||(d=!0));if(d){var f={};c>1?(f.width=l,f.height=l/c):(f.height=l,f.width=l*c),f.y=s[1]-f.height/2,f.x=s[0]-f.width/2}else(a=t.getBoxLayoutParams()).aspect=c,f=ca(a,{width:u,height:h});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function Cc(t,e){d(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}function Lc(t,e){var i={};return d(t,function(t){t.each(t.mapDimension("value"),function(e,n){var o="ec-"+t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(t[0].mapDimension("value"),function(n,o){for(var a="ec-"+t[0].getName(o),r=0,s=1/0,l=-1/0,u=i[a].length,h=0;h=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},n.push(a)}}function Wc(t,e){var i=t.isExpand?t.children:[],n=t.parentNode.children,o=t.hierNode.i?n[t.hierNode.i-1]:null;if(i.length){jc(t);var a=(i[0].hierNode.prelim+i[i.length-1].hierNode.prelim)/2;o?(t.hierNode.prelim=o.hierNode.prelim+e(t,o),t.hierNode.modifier=t.hierNode.prelim-a):t.hierNode.prelim=a}else o&&(t.hierNode.prelim=o.hierNode.prelim+e(t,o));t.parentNode.hierNode.defaultAncestor=Yc(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Hc(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function Zc(t){return arguments.length?t:Qc}function Uc(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Xc(t,e){return ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function jc(t){for(var e=t.children,i=e.length,n=0,o=0;--i>=0;){var a=e[i];a.hierNode.prelim+=n,a.hierNode.modifier+=n,o+=a.hierNode.change,n+=a.hierNode.shift+o}}function Yc(t,e,i,n){if(e){for(var o=t,a=t,r=a.parentNode.children[0],s=e,l=o.hierNode.modifier,u=a.hierNode.modifier,h=r.hierNode.modifier,c=s.hierNode.modifier;s=qc(s),a=Kc(a),s&&a;){o=qc(o),r=Kc(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);d>0&&(Jc($c(s,t,i),t,d),u+=d,l+=d),c+=s.hierNode.modifier,u+=a.hierNode.modifier,l+=o.hierNode.modifier,h+=r.hierNode.modifier}s&&!qc(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!Kc(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}return i}function qc(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function Kc(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function $c(t,e,i){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:i}function Jc(t,e,i){var n=i/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=n,e.hierNode.shift+=i,e.hierNode.modifier+=i,e.hierNode.prelim+=i,t.hierNode.change+=n}function Qc(t,e){return t.parentNode===e.parentNode?1:2}function td(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function ed(t,e,i){return i.itemModel=e,i.itemStyle=e.getModel("itemStyle").getItemStyle(),i.hoverItemStyle=e.getModel("emphasis.itemStyle").getItemStyle(),i.lineStyle=e.getModel("lineStyle").getLineStyle(),i.labelModel=e.getModel("label"),i.hoverLabelModel=e.getModel("emphasis.label"),!1===t.isExpand&&0!==t.children.length?i.symbolInnerColor=i.itemStyle.fill:i.symbolInnerColor="#fff",i}function id(t,e,i,n,o,a){var s=!i,l=t.tree.getNodeByDataIndex(e),a=ed(l,l.getModel(),a),u=t.tree.root,h=l.parentNode===u?l:l.parentNode||l,c=t.getItemGraphicEl(h.dataIndex),d=h.getLayout(),f=c?{x:c.position[0],y:c.position[1],rawX:c.__radialOldRawX,rawY:c.__radialOldRawY}:d,p=l.getLayout();s?(i=new wu(t,e,a)).attr("position",[f.x,f.y]):i.updateData(t,e,a),i.__radialOldRawX=i.__radialRawX,i.__radialOldRawY=i.__radialRawY,i.__radialRawX=p.rawX,i.__radialRawY=p.rawY,n.add(i),t.setItemGraphicEl(e,i),Io(i,{position:[p.x,p.y]},o);var g=i.getSymbolPath();if("radial"===a.layout){var m,v,y=u.children[0],x=y.getLayout(),_=y.children.length;if(p.x===x.x&&!0===l.isExpand){var w={};w.x=(y.children[0].getLayout().x+y.children[_-1].getLayout().x)/2,w.y=(y.children[0].getLayout().y+y.children[_-1].getLayout().y)/2,(m=Math.atan2(w.y-x.y,w.x-x.x))<0&&(m=2*Math.PI+m),(v=w.xx.x)||(m-=Math.PI);var b=v?"left":"right";g.setStyle({textPosition:b,textRotation:-m,textOrigin:"center",verticalAlign:"middle"})}if(l.parentNode&&l.parentNode!==u){var S=i.__edge;S||(S=i.__edge=new bM({shape:od(a,f,f),style:r({opacity:0,strokeNoScale:!0},a.lineStyle)})),Io(S,{shape:od(a,d,p),style:{opacity:1}},o),n.add(S)}}function nd(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,a=ed(s,s.getModel(),a),u=s.parentNode===l?s:s.parentNode||s;null==(r=u.getLayout());)u=u.parentNode===l?u:u.parentNode||u;Io(i,{position:[r.x+1,r.y+1]},o,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var h=i.__edge;h&&Io(h,{shape:od(a,r,r),style:{opacity:0}},o,function(){n.remove(h)})}function od(t,e,i){var n,o,a,r,s,l,u,h,c=t.orient;if("radial"===t.layout){s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=Uc(s,u),f=Uc(s,u+(h-u)*t.curvature),p=Uc(l,h+(u-h)*t.curvature),g=Uc(l,h);return{x1:d.x,y1:d.y,x2:g.x,y2:g.y,cpx1:f.x,cpy1:f.y,cpx2:p.x,cpy2:p.y}}return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,o=u,a=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,o=u+(h-u)*t.curvature,a=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:o,cpx2:a,cpy2:r}}function ad(t,e,i){for(var n,o=[t],a=[];n=o.pop();)if(a.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;s=0;a--)n.push(o[a])}}function sd(t,e){var i=Xc(t,e);t.layoutInfo=i;var n=t.get("layout"),o=0,a=0,r=null;"radial"===n?(o=2*Math.PI,a=Math.min(i.height,i.width)/2,r=Zc(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,r=Zc());var s=t.getData().tree.root,l=s.children[0];if(l){Fc(s),ad(l,Wc,r),s.hierNode.modifier=-l.hierNode.prelim,rd(l,Hc);var u=l,h=l,c=l;rd(l,function(t){var e=t.getLayout().x;eh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Uc(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=a/(h.getLayout().x+d+f),p=o/(c.depth-1||1),rd(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:o-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:a-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}function ld(t,e,i){if(t&&l(e,t.type)>=0){var n=i.getData().tree.root,o=t.targetNode;if("string"==typeof o&&(o=n.getNodeById(o)),o&&n.contains(o))return{node:o};var a=t.targetNodeId;if(null!=a&&(o=n.getNodeById(a)))return{node:o}}}function ud(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function hd(t,e){return l(ud(t),e)>=0}function cd(t,e){for(var i=[];t;){var n=t.dataIndex;i.push({name:t.name,dataIndex:n,value:e.getRawValue(n)}),t=t.parentNode}return i.reverse(),i}function dd(t){var e=0;d(t.children,function(t){dd(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function fd(t,e){var i=e.get("color");if(i){var n;return d(t=t||[],function(t){var e=new No(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),n||((t[0]||(t[0]={})).color=i.slice()),t}}function pd(t){this.group=new tb,t.add(this.group)}function gd(t,e,i,n,o,a){var r=[[o?t:t-UC,e],[t+i,e],[t+i,e+n],[o?t:t-UC,e+n]];return!a&&r.splice(2,0,[t+i+UC,e+n/2]),!o&&r.push([t,e+n/2]),r}function md(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&cd(i,e)}}function vd(){var t,e=[],i={};return{add:function(t,n,o,a,r){return _(a)&&(r=a,a=0),!i[t.id]&&(i[t.id]=1,e.push({el:t,target:n,time:o,delay:a,easing:r}),!0)},done:function(e){return t=e,this},start:function(){for(var n=e.length,o=0,a=e.length;o=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function bd(t,e){var i=t.visual,n=[];w(i)?sL(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),Ld(t,n)}function Sd(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:Dd([0,1])}}function Md(t){var e=this.option.visual;return e[Math.round(Bo(t,[0,1],[0,e.length-1],!0))]||{}}function Id(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function Td(t){var e=this.option.visual;return e[this.option.loop&&t!==uL?t%e.length:t]}function Ad(){return this.option.visual[0]}function Dd(t){return{linear:function(e){return Bo(e,t,this.option.visual,!0)},category:Td,piecewise:function(e,i){var n=Cd.call(this,i);return null==n&&(n=Bo(e,t,this.option.visual,!0)),n},fixed:Ad}}function Cd(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[hL.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function Ld(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f(e,function(t){return Gt(t)})),e}function kd(t,e,i){return t?e<=i:e=o.length||t===o[t.depth])&&Pd(t,Vd(r,h,t,e,g,a),i,n,o,a)})}else l=Od(h),t.setVisual("color",l)}}function Nd(t,e,i,n){var o=a({},e);return d(["color","colorAlpha","colorSaturation"],function(a){var r=t.get(a,!0);null==r&&i&&(r=i[a]),null==r&&(r=e[a]),null==r&&(r=n.get(a)),null!=r&&(o[a]=r)}),o}function Od(t){var e=Rd(t,"color");if(e){var i=Rd(t,"colorAlpha"),n=Rd(t,"colorSaturation");return n&&(e=jt(e,null,null,n)),i&&(e=Yt(e,i)),e}}function Ed(t,e){return null!=e?jt(e,null,null,t):null}function Rd(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function zd(t,e,i,n,o,a){if(a&&a.length){var r=Bd(e,"color")||null!=o.color&&"none"!==o.color&&(Bd(e,"colorAlpha")||Bd(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&su[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:r.name,dataExtent:u,visual:r.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var d=new hL(c);return d.__drColorMappingBy=h,d}}}function Bd(t,e){var i=t.get(e);return fL(i)&&i.length?{name:e,range:i}:null}function Vd(t,e,i,n,o,r){var s=a({},e);if(o){var l=o.type,u="color"===l&&o.__drColorMappingBy,h="index"===u?n:"id"===u?r.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));s[l]=o.mapValueToVisual(h)}return s}function Gd(t,e,i,n){var o,a;if(!t.isRemoved()){var r=t.getLayout();o=r.width,a=r.height;var s=(f=t.getModel()).get(_L),l=f.get(wL)/2,u=Kd(f),h=Math.max(s,u),c=s-l,d=h-l,f=t.getModel();t.setLayout({borderWidth:s,upperHeight:h,upperLabelHeight:u},!0);var p=(o=mL(o-2*c,0))*(a=mL(a-c-d,0)),g=Fd(t,f,p,e,i,n);if(g.length){var m={x:c,y:d,width:o,height:a},v=vL(o,a),y=1/0,x=[];x.area=0;for(var _=0,w=g.length;_=0;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*es[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}function Ud(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;ro&&(o=n));var l=t.area*t.area,u=e*e*i;return l?mL(u*o/l,l/(u*a)):1/0}function Xd(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],h=e?t.area/e:0;(o||h>i[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;cXM&&(u=XM),a=s}u=0?n+=u:n-=u:p>=0?n-=u:n+=u}return n}function pf(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function gf(t,e,i){var n=t.getGraphicEl(),o=pf(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){if("group"!==t.type){var e=t.lineLabelOriginalOpacity;null!=e&&null==i||(e=o),t.setStyle("opacity",e)}})}function mf(t,e){var i=pf(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}function vf(t){return t instanceof Array||(t=[t,t]),t}function yf(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=t.getGraph();i.eachNode(function(t){var e=t.getModel();t.setLayout([+e.get("x"),+e.get("y")])}),xf(i)}}function xf(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.curveness")||0,i=F(t.node1.getLayout()),n=F(t.node2.getLayout()),o=[i,n];+e&&o.push([(i[0]+n[0])/2-(i[1]-n[1])*e,(i[1]+n[1])/2-(n[0]-i[0])*e]),t.setLayout(o)})}function _f(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=e.getBoundingRect(),n=t.getData(),o=n.graph,a=0,r=n.getSum("value"),s=2*Math.PI/(r||n.count()),l=i.width/2+i.x,u=i.height/2+i.y,h=Math.min(i.width,i.height)/2;o.eachNode(function(t){var e=t.getValue("value");a+=s*(r?e:1)/2,t.setLayout([h*Math.cos(a)+l,h*Math.sin(a)+u]),a+=s*(r?e:1)/2}),n.setLayout({cx:l,cy:u}),o.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.curveness")||0,n=F(t.node1.getLayout()),o=F(t.node2.getLayout()),a=(n[0]+o[0])/2,r=(n[1]+o[1])/2;+i&&(e=[l*(i*=3)+a*(1-i),u*i+r*(1-i)]),t.setLayout([n,o,e])})}}function wf(t,e,i){for(var n=i.rect,o=n.width,a=n.height,r=[n.x+o/2,n.y+a/2],s=null==i.gravity?.1:i.gravity,l=0;l0?-1:i<0?1:e?-1:1}}function Pf(t,e){return Math.min(e[1],Math.max(e[0],t))}function Nf(t,e,i){this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Of(t,e){return ek(ik(t,e[0]),e[1])}function Ef(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}}function Rf(t,e){var i,n,o=e.layoutLength,a=e.axisExpandWidth,r=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return tmk}function $f(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function Jf(t,e,i,n){var o=new tb;return o.add(new yM({name:"main",style:ip(i),silent:!0,draggable:!0,cursor:"move",drift:uk(t,e,o,"nswe"),ondragend:uk(qf,e,{isEnd:!0})})),hk(n,function(i){o.add(new yM({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:uk(t,e,o,i),ondragend:uk(qf,e,{isEnd:!0})}))}),o}function Qf(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=fk(o,vk),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-a+o/2,f=c-a+o/2,p=h-r,g=c-s,m=p+o,v=g+o;ep(t,e,"main",r,s,p,g),n.transformable&&(ep(t,e,"w",l,u,a,v),ep(t,e,"e",d,u,a,v),ep(t,e,"n",l,u,m,a),ep(t,e,"s",l,f,m,a),ep(t,e,"nw",l,u,a,a),ep(t,e,"ne",d,u,a,a),ep(t,e,"sw",l,f,a,a),ep(t,e,"se",d,f,a,a))}function tp(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(ip(i)),o.attr({silent:!n,cursor:n?"move":"default"}),hk(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=ap(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?_k[a]+"-resize":null})})}function ep(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(hp(up(t,e,[[n,o],[n+a,o+r]])))}function ip(t){return r({strokeNoScale:!0},t.brushStyle)}function np(t,e,i,n){var o=[dk(t,i),dk(e,n)],a=[fk(t,i),fk(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function op(t){return Ao(t.group)}function ap(t,e){if(e.length>1)return("e"===(n=[ap(t,(e=e.split(""))[0]),ap(t,e[1])])[0]||"w"===n[0])&&n.reverse(),n.join("");var i={left:"w",right:"e",top:"n",bottom:"s"},n=Co({w:"left",e:"right",n:"top",s:"bottom"}[e],op(t));return i[n]}function rp(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=lp(i,a,r);hk(o.split(""),function(t){var e=xk[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(np(u[0][0],u[1][0],u[0][1],u[1][1])),Zf(i,n),qf(i,{isEnd:!1})}function sp(t,e,i,n,o){var a=e.__brushOption.range,r=lp(t,i,n);hk(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Zf(t,e),qf(t,{isEnd:!1})}function lp(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function up(t,e,n){var o=jf(t,e);return o&&!0!==o?o.clipPath(n,t._transform):i(n)}function hp(t){var e=dk(t[0][0],t[1][0]),i=dk(t[0][1],t[1][1]);return{x:e,y:i,width:fk(t[0][0],t[1][0])-e,height:fk(t[0][1],t[1][1])-i}}function cp(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=Xf(t,e,i);if(!t._dragging)for(var r=0;r0;a--)Yp(s,l*=.99,r),jp(s,o,i,n,r),tg(s,l,r),jp(s,o,i,n,r)}function Up(t,e){var i=[],n="vertical"===e?"y":"x",o=Zi(t,function(t){return t.getLayout()[n]});return o.keys.sort(function(t,e){return t-e}),d(o.keys,function(t){i.push(o.buckets.get(t))}),i}function Xp(t,e,i,n,o,a,r){var s=[];d(e,function(t){var e=t.length,i=0,l=0;d(t,function(t){i+=t.getLayout().value}),l="vertical"===r?(o-(e-1)*a)/i:(n-(e-1)*a)/i,s.push(l)}),s.sort(function(t,e){return t-e});var l=s[0];d(e,function(t){d(t,function(t,e){var i=t.getLayout().value*l;"vertical"===r?(t.setLayout({x:e},!0),t.setLayout({dx:i},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:i},!0))})}),d(i,function(t){var e=+t.getValue()*l;t.setLayout({dy:e},!0)})}function jp(t,e,i,n,o){d(t,function(t){var a,r,s,l=0,u=t.length;if("vertical"===o){var h;for(t.sort(function(t,e){return t.getLayout().x-e.getLayout().x}),s=0;s0&&(h=a.getLayout().x+r,a.setLayout({x:h},!0)),l=a.getLayout().x+a.getLayout().dx+e;if((r=l-e-n)>0)for(h=a.getLayout().x-r,a.setLayout({x:h},!0),l=h,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().x+a.getLayout().dx+e-l)>0&&(h=a.getLayout().x-r,a.setLayout({x:h},!0)),l=a.getLayout().x}else{var c;for(t.sort(function(t,e){return t.getLayout().y-e.getLayout().y}),s=0;s0&&(c=a.getLayout().y+r,a.setLayout({y:c},!0)),l=a.getLayout().y+a.getLayout().dy+e;if((r=l-e-i)>0)for(c=a.getLayout().y-r,a.setLayout({y:c},!0),l=c,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().y+a.getLayout().dy+e-l)>0&&(c=a.getLayout().y-r,a.setLayout({y:c},!0)),l=a.getLayout().y}})}function Yp(t,e,i){d(t.slice().reverse(),function(t){d(t,function(t){if(t.outEdges.length){var n=Qp(t.outEdges,qp,i)/Qp(t.outEdges,Jp,i);if("vertical"===i){var o=t.getLayout().x+(n-$p(t,i))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(n-$p(t,i))*e;t.setLayout({y:a},!0)}}})})}function qp(t,e){return $p(t.node2,e)*t.getValue()}function Kp(t,e){return $p(t.node1,e)*t.getValue()}function $p(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function Jp(t){return t.getValue()}function Qp(t,e,i){for(var n=0,o=t.length,a=-1;++a0?"P":"N",a=n.getVisual("borderColor"+o)||n.getVisual("color"+o),r=i.getModel(Gk).getItemStyle(Wk);e.useStyle(r),e.style.fill=null,e.style.stroke=a}function fg(t,e,i,n,o){return i>n?-1:i0?t.get(o,e-1)<=n?1:-1:1}function pg(t,e){var i,n=t.getBaseAxis(),o="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),a=Vo(A(t.get("barMaxWidth"),o),o),r=Vo(A(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Vo(s,o):Math.max(Math.min(o/2,a),r)}function gg(t){return y(t)||(t=[+t,+t]),t}function mg(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function vg(t,e){tb.call(this);var i=new wu(t,e),n=new tb;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}function yg(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=f(e,function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),o([e,t[0],t[1]])}))}function xg(t,e,i){tb.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}function _g(t,e,i){tb.call(this),this._createPolyline(t,e,i)}function wg(t,e,i){xg.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}function bg(){this.group=new tb}function Sg(t){return t instanceof Array||(t=[t,t]),t}function Mg(){var t=iw();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}function Ig(t,e,i){var n=t[1]-t[0],o=(e=f(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}})).length,a=0;return function(t){for(n=a;n=0;n--){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}return n>=0&&n=e[0]&&t<=e[1]}}function Ag(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}function Dg(t,e,i,n){var o=t.getItemLayout(e),a=i.get("symbolRepeat"),r=i.get("symbolClip"),s=i.get("symbolPosition")||"start",l=(i.get("symbolRotate")||0)*Math.PI/180||0,u=i.get("symbolPatternSize")||2,h=i.isAnimationEnabled(),c={dataIndex:e,layout:o,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:r,symbolRepeat:a,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?i:null,hoverAnimation:h&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};Cg(i,a,o,n,c),kg(t,e,o,a,r,c.boundingLength,c.pxSign,u,n,c),Pg(i,c.symbolScale,l,n,c);var d=c.symbolSize,f=i.get("symbolOffset");return y(f)&&(f=[Vo(f[0],d[0]),Vo(f[1],d[1])]),Ng(i,d,o,a,r,f,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,n,c),c}function Cg(t,e,i,n,o){var a,r=n.valueDim,s=t.get("symbolBoundingData"),l=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(i[r.wh]<=0);if(y(s)){var c=[Lg(l,s[0])-u,Lg(l,s[1])-u];c[1]0?1:a<0?-1:0}function Lg(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function kg(t,e,i,n,o,a,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");y(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[c.index]=Vo(f[c.index],d),f[h.index]=Vo(f[h.index],n?d:Math.abs(a)),u.symbolSize=f,(u.symbolScale=[f[0]/s,f[1]/s])[h.index]*=(l.isHorizontal?-1:1)*r}function Pg(t,e,i,n,o){var a=t.get(cP)||0;a&&(fP.attr({scale:e.slice(),rotation:i}),fP.updateTransform(),a/=fP.getLineScale(),a*=e[n.valueDim.index]),o.valueLineWidth=a}function Ng(t,e,i,n,o,r,s,l,u,h,c,d){var f=c.categoryDim,p=c.valueDim,g=d.pxSign,m=Math.max(e[p.index]+l,0),v=m;if(n){var y=Math.abs(u),x=T(t.get("symbolMargin"),"15%")+"",_=!1;x.lastIndexOf("!")===x.length-1&&(_=!0,x=x.slice(0,x.length-1)),x=Vo(x,e[p.index]);var w=Math.max(m+2*x,0),b=_?0:2*x,S=Qo(n),M=S?n:Kg((y+b)/w);w=m+2*(x=(y-M*m)/2/(_?M:M-1)),b=_?0:2*x,S||"fixed"===n||(M=h?Kg((Math.abs(h)+b)/w):0),v=M*w-b,d.repeatTimes=M,d.symbolMargin=x}var I=g*(v/2),A=d.pathPosition=[];A[f.index]=i[f.wh]/2,A[p.index]="start"===s?I:"end"===s?u-I:u/2,r&&(A[0]+=r[0],A[1]+=r[1]);var D=d.bundlePosition=[];D[f.index]=i[f.xy],D[p.index]=i[p.xy];var C=d.barRectShape=a({},i);C[p.wh]=g*Math.max(Math.abs(i[p.wh]),Math.abs(A[p.index]+I)),C[f.wh]=i[f.wh];var L=d.clipShape={};L[f.xy]=-i[f.xy],L[f.wh]=c.ecSize[f.wh],L[p.xy]=0,L[p.wh]=i[p.wh]}function Og(t){var e=t.symbolPatternSize,i=Jl(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function Eg(t,e,i,n){function o(t){var e=l.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=h-1-t),e[u.index]=d*(o-h/2+.5)+l[u.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}var a=t.__pictorialBundle,r=i.symbolSize,s=i.valueLineWidth,l=i.pathPosition,u=e.valueDim,h=i.repeatTimes||0,c=0,d=r[e.valueDim.index]+s+2*i.symbolMargin;for(jg(t,function(t){t.__pictorialAnimationIndex=c,t.__pictorialRepeatTimes=h,c0)],d=t.__pictorialBarRect;kh(d.style,h,a,n,e.seriesModel,o,c),fo(d,h)}function Kg(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}function $g(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}function Jg(t,e){e=e||{};var i=t.coordinateSystem,n=t.axis,o={},a=n.position,r=n.orient,s=i.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};o.position=["vertical"===r?u.vertical[a]:l[0],"horizontal"===r?u.horizontal[a]:l[3]];var h={horizontal:0,vertical:1};o.rotation=Math.PI/2*h[r];var c={top:-1,bottom:1,right:1,left:-1};o.labelDirection=o.tickDirection=o.nameDirection=c[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),T(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var d=e.rotate;return null==d&&(d=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-d:d,o.z2=1,o}function Qg(t,e,i,n,o){var r=t.axis;if(!r.scale.isBlank()&&r.containData(e))if(t.involveSeries){var s=tm(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==o.seriesIndex&&a(o,l[0]),!n&&t.snap&&r.containData(u)&&null!=u&&(e=u),i.showPointer(t,e,l,o),i.showTooltip(t,s,u)}else i.showPointer(t,e)}function tm(t,e){var i=e.axis,n=i.dim,o=t,a=[],r=Number.MAX_VALUE,s=-1;return _P(e.seriesModels,function(e,l){var u,h,c=e.getData().mapDimension(n,!0);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(c,t,i);h=d.dataIndices,u=d.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===i.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=r&&((p=0&&s<0)&&(r=p,s=f,o=u,a.length=0),_P(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:o}}function em(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function im(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=Ah(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function nm(t,e,i){var n=i.axesInfo=[];_P(e,function(e,i){var o=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(o.status="show"),o.value=a.value,o.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(o.status="hide"),"show"===o.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:o.value})})}function om(t,e,i,n){if(!lm(e)&&t.list.length){var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}else n({type:"hideTip"})}function am(t,e,i){var n=i.getZr(),o=bP(n).axisPointerLastHighlights||{},a=bP(n).axisPointerLastHighlights={};_P(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&_P(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t})});var r=[],s=[];d(o,function(t,e){!a[e]&&s.push(t)}),d(a,function(t,e){!o[e]&&r.push(t)}),s.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:s}),r.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:r})}function rm(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}function sm(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function lm(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function um(t,e,i){if(!U_.node){var n=e.getZr();SP(n).records||(SP(n).records={}),hm(n,e),(SP(n).records[t]||(SP(n).records[t]={})).handler=i}}function hm(t,e){function i(i,n){t.on(i,function(i){var o=pm(e);MP(SP(t).records,function(t){t&&n(t,i,o.dispatchAction)}),cm(o.pendings,e)})}SP(t).initialized||(SP(t).initialized=!0,i("click",v(fm,"click")),i("mousemove",v(fm,"mousemove")),i("globalout",dm))}function cm(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function dm(t,e,i){t.handler("leave",null,i)}function fm(t,e,i,n){e.handler(t,i,n)}function pm(t){var e={showTip:[],hideTip:[]},i=function(n){var o=e[n.type];o?o.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}function gm(t,e){if(!U_.node){var i=e.getZr();(SP(i).records||{})[t]&&(SP(i).records[t]=null)}}function mm(){}function vm(t,e,i,n){ym(TP(i).lastProp,n)||(TP(i).lastProp=n,e?Io(i,n,t):(i.stopAnimation(),i.attr(n)))}function ym(t,e){if(w(t)&&w(e)){var i=!0;return d(e,function(e,n){i=i&&ym(t[n],e)}),!!i}return t===e}function xm(t,e){t[e.get("label.show")?"show":"hide"]()}function _m(t){return{position:t.position.slice(),rotation:t.rotation||0}}function wm(t,e,i){var n=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=o&&(t.zlevel=o),t.silent=i)})}function bm(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle()).fill=null:"shadow"===i&&((e=n.getAreaStyle()).stroke=null),e}function Sm(t,e,i,n,o){var a=Im(i.get("value"),e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),r=i.getModel("label"),s=qM(r.get("padding")||0),l=r.getFont(),u=ke(a,l),h=o.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=o.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=o.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),Mm(h,c,d,n);var g=r.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:r.get("borderRadius")},position:h.slice(),style:{text:a,textFont:l,textFill:r.getTextColor(),textPosition:"inside",fill:g,stroke:r.get("borderColor")||"transparent",lineWidth:r.get("borderWidth")||0,shadowBlur:r.get("shadowBlur"),shadowColor:r.get("shadowColor"),shadowOffsetX:r.get("shadowOffsetX"),shadowOffsetY:r.get("shadowOffsetY")},z2:10}}function Mm(t,e,i,n){var o=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,o)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function Im(t,e,i,n,o){t=e.scale.parse(t);var a=e.scale.getLabel(t,{precision:o.precision}),r=o.formatter;if(r){var s={value:Xl(e,t),seriesData:[]};d(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,o=e&&e.getDataParams(n);o&&s.seriesData.push(o)}),_(r)?a=r.replace("{value}",a):x(r)&&(a=r(s))}return a}function Tm(t,e,i){var n=xt();return Mt(n,n,i.rotation),St(n,n,i.position),Do([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function Am(t,e,i,n,o,a){var r=FD.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=o.get("label.margin"),Sm(e,n,o,a,{position:Tm(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})}function Dm(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}}function Cm(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}function Lm(t,e,i,n,o,a){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:a,clockwise:!0}}function km(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function Pm(t){return"x"===t.dim?0:1}function Nm(t){return t.isHorizontal()?0:1}function Om(t,e){var i=t.getRect();return[i[kP[e]],i[kP[e]]+i[PP[e]]]}function Em(t,e,i){var n=new yM({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return To(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}function Rm(t,e,i){if(t.count())for(var n,o=e.coordinateSystem,a=e.getLayerSeries(),r=t.mapDimension("single"),s=t.mapDimension("value"),l=f(a,function(e){return f(e.indices,function(e){var i=o.dataToPoint(t.get(r,e));return i[1]=t.get(s,e),i})}),u=zm(l),h=u.y0,c=i/u.max,d=a.length,p=a[0].indices.length,g=0;ga&&(a=u),n.push(u)}for(var h=0;ha&&(a=d)}return r.y0=o,r.max=a,r}function Bm(t){var e=0;d(t.children,function(t){Bm(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function Vm(t,e,i){function n(){r.ignore=r.hoverIgnore}function o(){r.ignore=r.normalIgnore}tb.call(this);var a=new hM({z2:zP});a.seriesIndex=e.seriesIndex;var r=new rM({z2:BP,silent:t.getModel("label").get("silent")});this.add(a),this.add(r),this.updateData(!0,t,"normal",e,i),this.on("emphasis",n).on("normal",o).on("mouseover",n).on("mouseout",o)}function Gm(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;return a=i.option.color[Fm(t)%r]}function Fm(t){for(var e=t;e.depth>1;)e=e.parentNode;return l(t.getAncestors()[0].children,e)}function Wm(t,e,i){return i!==RP.NONE&&(i===RP.SELF?t===e:i===RP.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function Hm(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}function Zm(t,e){var i=t.children||[];t.children=Um(i,e),i.length&&d(t.children,function(t){Zm(t,e)})}function Um(t,e){if("function"==typeof e)return t.sort(e);var i="asc"===e;return t.sort(function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n})}function Xm(t,e){return e=e||[0,0],f(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function jm(t,e){return e=e||[0,0],f([0,1],function(i){var n=e[i],o=t[i]/2,a=[],r=[];return a[i]=n-o,r[i]=n+o,a[1-i]=r[1-i]=e[1-i],Math.abs(this.dataToPoint(a)[i]-this.dataToPoint(r)[i])},this)}function Ym(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function qm(t,e){return f(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function Km(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=lv(n);(e=Xn(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new rM({})).__customText=t.style.text:e=new(0,zM[i.charAt(0).toUpperCase()+i.slice(1)]);return e.__customGraphicType=i,e.name=t.name,e}function $m(t,e,n,o,a,r,s){var l={},u=n.style||{};if(n.shape&&(l.shape=i(n.shape)),n.position&&(l.position=n.position.slice()),n.scale&&(l.scale=n.scale.slice()),n.origin&&(l.origin=n.origin.slice()),n.rotation&&(l.rotation=n.rotation),"image"===t.type&&n.style){h=l.style={};d(["x","y","width","height"],function(e){Jm(e,h,u,t.style,r)})}if("text"===t.type&&n.style){var h=l.style={};d(["x","y"],function(e){Jm(e,h,u,t.style,r)}),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke)}if("group"!==t.type&&(t.useStyle(u),r)){t.style.opacity=0;var c=u.opacity;null==c&&(c=1),To(t,{style:{opacity:c}},o,e)}r?t.attr(l):Io(t,l,o,e),n.hasOwnProperty("z2")&&t.attr("z2",n.z2||0),n.hasOwnProperty("silent")&&t.attr("silent",n.silent),n.hasOwnProperty("invisible")&&t.attr("invisible",n.invisible),n.hasOwnProperty("ignore")&&t.attr("ignore",n.ignore),n.hasOwnProperty("info")&&t.attr("info",n.info);var f=n.styleEmphasis,p=!1===f;t.__cusHasEmphStl&&null==f||!t.__cusHasEmphStl&&p||(ro(t,f),t.__cusHasEmphStl=!p),s&&po(t,!p)}function Jm(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function Qm(t,e,i,n){function o(t){null==t&&(t=h),v&&(c=e.getItemModel(t),d=c.getModel(UP),f=c.getModel(XP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():YP[l.type](l));var h,c,d,f,p,g=r({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:function(t,i){return null==i&&(i=h),e.get(e.getDimension(t||0),i)},style:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(HP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),mo(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(ZP).getItemStyle();return mo(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},visual:function(t,i){return null==i&&(i=h),e.getItemVisual(i,t)},barLayout:function(t){if(l.getBaseAxis)return Ll(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return So(t,i)}},u.api||{}),m={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:u.coordSys,dataInsideLength:e.count(),encode:tv(t.getData())},v=!0;return function(t,i){return h=t,v=!0,s&&s(r({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:i?i.type:null},m),g)}}function tv(t){var e={};return d(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim;(e[a]=e[a]||[])[o.coordDimIndex]=n}}),e}function ev(t,e,i,n,o,a){return(t=iv(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function iv(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&uv(u)&&lv(u)!==t.__customPathData||"image"===l&&hv(h,"image")&&h.image!==t.__customImagePath||"text"===l&&hv(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return!t&&(t=Km(i)),$m(t,e,i,n,a,c,r),"group"===l&&nv(t,e,i,n,a),o.add(t),t}}function nv(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(r||l||u)if(l)ov({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});else{u&&t.removeAll();for(var h=0;hn?t-=l+a:t+=a),null!=r&&(e+u+r>o?e-=u+r:e+=r),[t,e]}function Ov(t,e,i,n,o){var a=i.getOuterSize(),r=a.width,s=a.height;return t=Math.min(t+r,n)-r,e=Math.min(e+s,o)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function Ev(t,e,i){var n=i[0],o=i[1],a=0,r=0,s=e.width,l=e.height;switch(t){case"inside":a=e.x+s/2-n/2,r=e.y+l/2-o/2;break;case"top":a=e.x+s/2-n/2,r=e.y-o-5;break;case"bottom":a=e.x+s/2-n/2,r=e.y+l+5;break;case"left":a=e.x-n-5,r=e.y+l/2-o/2;break;case"right":a=e.x+s+5,r=e.y+l/2-o/2}return[a,r]}function Rv(t){return"center"===t||"middle"===t}function zv(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function Bv(t){return t.dim}function Vv(t,e){var i={};d(t,function(t,e){var n=t.getData(),o=t.coordinateSystem.getBaseAxis(),a=o.getExtent(),r="category"===o.type?o.getBandWidth():Math.abs(a[1]-a[0])/n.count(),s=i[Bv(o)]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},l=s.stacks;i[Bv(o)]=s;var u=zv(t);l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var h=Vo(t.get("barWidth"),r),c=Vo(t.get("barMaxWidth"),r),d=t.get("barGap"),f=t.get("barCategoryGap");h&&!l[u].width&&(h=Math.min(s.remainedWidth,h),l[u].width=h,s.remainedWidth-=h),c&&(l[u].maxWidth=c),null!=d&&(s.gap=d),null!=f&&(s.categoryGap=f)});var n={};return d(i,function(t,e){n[e]={};var i=t.stacks,o=t.bandWidth,a=Vo(t.categoryGap,o),r=Vo(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-a)/(l+(l-1)*r);u=Math.max(u,0),d(i,function(t,e){var i=t.maxWidth;i&&ie[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),o=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:o[0],y2:o[1]}}function jv(t){return t.getRadiusAxis().inverse?0:1}function Yv(t){var e=t[0],i=t[t.length-1];e&&i&&Math.abs(Math.abs(e.coord-i.coord)-360)<1e-4&&t.pop()}function qv(t,e,i){return{position:[t.cx,t.cy],rotation:i/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:e.getModel("axisLabel").get("rotate"),z2:1}}function Kv(t,e,i,n,o){var a=e.axis,r=a.dataToCoord(t),s=n.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=n.getRadiusAxis().getExtent();if("radius"===a.dim){var d=xt();Mt(d,d,s),St(d,d,[n.cx,n.cy]),l=Do([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=FD.innerTextLayout(s,f*Math.PI/180,-1);u=p.textAlign,h=p.textVerticalAlign}else{var g=c[1];l=n.coordToPoint([g+o,r]);var m=n.cx,v=n.cy;u=Math.abs(l[0]-m)/g<.3?"center":l[0]>m?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}function $v(t,e){e.update="updateView",Es(e,function(e,i){var n={};return i.eachComponent({mainType:"geo",query:e},function(i){i[t](e.name),d(i.coordinateSystem.regions,function(t){n[t.name]=i.isSelected(t.name)||!1})}),{selected:n,name:e.name}})}function Jv(t){var e={};d(t,function(t){e[t]=1}),t.length=0,d(e,function(e,i){t.push(i)})}function Qv(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function ty(t,e,n){function o(){var t=function(){};return t.prototype.__hidden=t.prototype,new t}var a={};return MN(e,function(e){var r=a[e]=o();MN(t[e],function(t,o){if(hL.isValidType(o)){var a={type:o,visual:t};n&&n(a,e),r[o]=new hL(a),"opacity"===o&&((a=i(a)).type="colorAlpha",r.__hidden.__alphaForOpacity=new hL(a))}})}),a}function ey(t,e,n){var o;d(n,function(t){e.hasOwnProperty(t)&&Qv(e[t])&&(o=!0)}),o&&d(n,function(n){e.hasOwnProperty(n)&&Qv(e[n])?t[n]=i(e[n]):delete t[n]})}function iy(t,e,i,n,o,a){function r(t){return i.getItemVisual(h,t)}function s(t,e){i.setItemVisual(h,t,e)}function l(t,l){h=null==a?t:l;var c=i.getRawDataItem(h);if(!c||!1!==c.visualMap)for(var d=n.call(o,t),f=e[d],p=u[d],g=0,m=p.length;g1)return!1;var h=uy(i-t,o-t,n-e,a-e)/l;return!(h<0||h>1)}function ly(t){return t<=1e-6&&t>=-1e-6}function uy(t,e,i,n){return t*n-e*i}function hy(t,e,i){var n=this._targetInfoList=[],o={},a=dy(e,t);TN(PN,function(t,e){(!i||!i.include||AN(i.include,e)>=0)&&t(a,n,o)})}function cy(t){return t[0]>t[1]&&t.reverse(),t}function dy(t,e){return Vi(t,e,{includeMainTypes:LN})}function fy(t,e,i,n){var o=i.getAxis(["x","y"][t]),a=cy(f([0,1],function(t){return e?o.coordToData(o.toLocalCoord(n[t])):o.toGlobalCoord(o.dataToCoord(n[t]))})),r=[];return r[t]=a,r[1-t]=[NaN,NaN],{values:a,xyMinMax:r}}function py(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function gy(t,e){var i=my(t),n=my(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}function my(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}function vy(t,e,i,n,o){if(o){var a=t.getZr();a[VN]||(a[BN]||(a[BN]=yy),Nr(a,BN,i,e)(t,n))}}function yy(t,e){if(!t.isDisposed()){var i=t.getZr();i[VN]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[VN]=!1}}function xy(t,e,i,n){for(var o=0,a=e.length;o=0}function Ny(t,e,i){function n(t,e){return l(e.nodes,t)>=0}function o(t,n){var o=!1;return e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]&&(o=!0)})}),o}function a(t,n){n.nodes.push(t),e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){var r={nodes:[],records:{}};if(e(function(t){r.records[t.name]={}}),!i)return r;a(i,r);var s;do{s=!1,t(function(t){!n(t,r)&&o(t,r)&&(a(t,r),s=!0)})}while(s);return r}}function Oy(t,e,i){var n=[1/0,-1/0];return $N(i,function(t){var i=t.getData();i&&$N(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]n[1]&&(n[1]=e[1])})}),n[1]0?0:NaN);var r=i.getMax(!0);return null!=r&&"dataMax"!==r&&"function"!=typeof r?e[1]=r:o&&(e[1]=a>0?a-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function Ry(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=Zo(o,[0,500]);a=Math.min(a,20);var r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}function zy(t){var e=t._minMaxSpan={},i=t._dataZoomModel;$N(["min","max"],function(n){e[n+"Span"]=i.get(n+"Span");var o=i.get(n+"ValueSpan");if(null!=o&&(e[n+"ValueSpan"]=o,null!=(o=t.getAxisModel().axis.scale.parse(o)))){var a=t._dataExtent;e[n+"Span"]=Bo(a[0]+o,a,[0,100],!0)}})}function By(t){var e={};return tO(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function Vy(t,e){var i=t._rangePropMode,n=t.get("rangeMode");tO([["start","startValue"],["end","endValue"]],function(t,o){var a=null!=e[t[0]],r=null!=e[t[1]];a&&!r?i[o]="percent":!a&&r?i[o]="value":n?i[o]=n[o]:a&&(i[o]="percent")})}function Gy(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}function Fy(t){return"vertical"===t?"ns-resize":"ew-resize"}function Wy(t,e){var i=Uy(t),n=e.dataZoomId,o=e.coordId;d(i,function(t,i){var a=t.dataZoomInfos;a[n]&&l(e.allCoordIds,o)<0&&(delete a[n],t.count--)}),jy(i);var a=i[o];a||((a=i[o]={coordId:o,dataZoomInfos:{},count:0}).controller=Xy(t,a),a.dispatchAction=v(Yy,t)),!a.dataZoomInfos[n]&&a.count++,a.dataZoomInfos[n]=e;var r=qy(a.dataZoomInfos);a.controller.enable(r.controlType,r.opt),a.controller.setPointerChecker(e.containsPoint),Nr(a,"dispatchAction",e.dataZoomModel.get("throttle",!0),"fixRate")}function Hy(t,e){var i=Uy(t);d(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),jy(i)}function Zy(t){return t.type+"\0_"+t.id}function Uy(t){var e=t.getZr();return e[fO]||(e[fO]={})}function Xy(t,e){var i=new oc(t.getZr());return d(["pan","zoom","scrollMove"],function(t){i.on(t,function(i){var n=[];d(e.dataZoomInfos,function(o){if(i.isAvailableBehavior(o.dataZoomModel.option)){var a=(o.getRange||{})[t],r=a&&a(e.controller,i);!o.dataZoomModel.get("disabled",!0)&&r&&n.push({dataZoomId:o.dataZoomId,start:r[0],end:r[1]})}}),n.length&&e.dispatchAction(n)})}),i}function jy(t){d(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function Yy(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function qy(t){var e,i={type_true:2,type_move:1,type_false:0,type_undefined:-1},n=!0;return d(t,function(t){var o=t.dataZoomModel,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i["type_"+a]>i["type_"+e]&&(e=a),n&=o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!n}}}function Ky(t){return function(e,i,n,o){var a=this._range,r=a.slice(),s=e.axisModels[0];if(s){var l=t(r,s,e,i,n,o);return QL(l,r,[0,100],"all"),this._range=r,a[0]!==r[0]||a[1]!==r[1]?r:void 0}}}function $y(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}function Jy(t,e,i,n){for(var o=e.targetVisuals[n],a=hL.prepareVisualTypes(o),r={color:t.getData().getVisual("color")},s=0,l=a.length;s=0&&(r[a]=+r[a].toFixed(h)),r}function fx(t,e){var n=t.getData(),o=t.coordinateSystem;if(e&&!cx(e)&&!y(e.coord)&&o){var a=o.dimensions,r=px(e,n,o,t);if((e=i(e)).type&&YO[e.type]&&r.baseAxis&&r.valueAxis){var s=XO(a,r.baseAxis.dim),l=XO(a,r.valueAxis.dim);e.coord=YO[e.type](n,r.baseDataDim,r.valueDataDim,s,l),e.value=e.coord[l]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)YO[u[h]]&&(u[h]=yx(n,n.mapDimension(a[h]),u[h]));e.coord=u}}return e}function px(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(gx(n,o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim)):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim),o.valueDataDim=e.mapDimension(o.valueAxis.dim)),o}function gx(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var o=0;o=0)return!0}function Yx(t){for(var e=t.split(/\n+/g),i=[],n=f(Xx(e.shift()).split(pE),function(t){return{name:t,data:[]}}),o=0;o=0&&!i[o][n];o--);if(o<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var r=a.getPercentRange();i[0][n]={dataZoomId:n,start:r[0],end:r[1]}}}}),i.push(e)}function t_(t){var e=n_(t),i=e[e.length-1];e.length>1&&e.pop();var n={};return gE(i,function(t,i){for(var o=e.length-1;o>=0;o--)if(t=e[o][i]){n[i]=t;break}}),n}function e_(t){t[mE]=null}function i_(t){return n_(t).length}function n_(t){var e=t[mE];return e||(e=t[mE]=[{}]),e}function o_(t,e,i){(this._brushController=new zf(i.getZr())).on("brush",m(this._onBrush,this)).mount(),this._isZoomActive}function a_(t){var e={};return d(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(!1===e[i]||"none"===e[i])&&(e[i]=[])}),e}function r_(t,e){t.setIconStatus("back",i_(e)>1?"emphasis":"normal")}function s_(t,e,i,n,o){var a=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(a="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var r=new hy(a_(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}function l_(t){this.model=t}function u_(t){return SE(t)}function h_(){if(!TE&&AE){TE=!0;var t=AE.styleSheets;t.length<31?AE.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}function c_(t){return parseInt(t,10)}function d_(t,e){h_(),this.root=t,this.storage=e;var i=document.createElement("div"),n=document.createElement("div");i.style.cssText="display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;",n.style.cssText="position:absolute;left:0;top:0;",t.appendChild(i),this._vmlRoot=n,this._vmlViewport=i,this.resize();var o=e.delFromStorage,a=e.addToStorage;e.delFromStorage=function(t){o.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)},this._firstPaint=!0}function f_(t){return function(){Yw('In IE8.0 VML mode painter not support method "'+t+'"')}}function p_(t){return document.createElementNS(sR,t)}function g_(t){return cR(1e4*t)/1e4}function m_(t){return t-vR}function v_(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==hR}function y_(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==hR}function x_(t,e){e&&__(t,"transform","matrix("+uR.call(e,",")+")")}function __(t,e,i){(!i||"linear"!==i.type&&"radial"!==i.type)&&t.setAttribute(e,i)}function w_(t,e,i){t.setAttributeNS("http://www.w3.org/1999/xlink",e,i)}function b_(t,e,i,n){if(v_(e,i)){var o=i?e.textFill:e.fill;o="transparent"===o?hR:o,"none"!==t.getAttribute("clip-path")&&o===hR&&(o="rgba(0, 0, 0, 0.002)"),__(t,"fill",o),__(t,"fill-opacity",null!=e.fillOpacity?e.fillOpacity*e.opacity:e.opacity)}else __(t,"fill",hR);if(y_(e,i)){var a=i?e.textStroke:e.stroke;__(t,"stroke",a="transparent"===a?hR:a),__(t,"stroke-width",(i?e.textStrokeWidth:e.lineWidth)/(!i&&e.strokeNoScale?n.getLineScale():1)),__(t,"paint-order",i?"stroke":"fill"),__(t,"stroke-opacity",null!=e.strokeOpacity?e.strokeOpacity:e.opacity),e.lineDash?(__(t,"stroke-dasharray",e.lineDash.join(",")),__(t,"stroke-dashoffset",cR(e.lineDashOffset||0))):__(t,"stroke-dasharray",""),e.lineCap&&__(t,"stroke-linecap",e.lineCap),e.lineJoin&&__(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&__(t,"stroke-miterlimit",e.miterLimit)}else __(t,"stroke",hR)}function S_(t){for(var e=[],i=t.data,n=t.len(),o=0;o=gR||!m_(g)&&(d>-pR&&d<0||d>pR)==!!p;var y=g_(s+u*fR(c)),x=g_(l+h*dR(c));m&&(d=p?gR-1e-4:1e-4-gR,v=!0,9===o&&e.push("M",y,x));var _=g_(s+u*fR(c+d)),w=g_(l+h*dR(c+d));e.push("A",g_(u),g_(h),cR(f*mR),+v,+p,_,w);break;case lR.Z:a="Z";break;case lR.R:var _=g_(i[o++]),w=g_(i[o++]),b=g_(i[o++]),S=g_(i[o++]);e.push("M",_,w,"L",_+b,w,"L",_+b,w+S,"L",_,w+S,"L",_,w)}a&&e.push(a);for(var M=0;M=11),domSupported:"undefined"!=typeof document}}(navigator.userAgent),X_={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},j_={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},Y_=Object.prototype.toString,q_=Array.prototype,K_=q_.forEach,$_=q_.filter,J_=q_.slice,Q_=q_.map,tw=q_.reduce,ew={},iw=function(){return ew.createCanvas()};ew.createCanvas=function(){return document.createElement("canvas")};var nw,ow="__ec_primitive__";E.prototype={constructor:E,get:function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},set:function(t,e){return this.data[t]=e},each:function(t,e){void 0!==e&&(t=m(t,e));for(var i in this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var aw=(Object.freeze||Object)({$override:e,clone:i,merge:n,mergeAll:o,extend:a,defaults:r,createCanvas:iw,getContext:s,indexOf:l,inherits:u,mixin:h,isArrayLike:c,each:d,map:f,reduce:p,filter:g,find:function(t,e,i){if(t&&e)for(var n=0,o=t.length;n3&&(n=dw.call(n,1));for(var a=e.length,r=0;r4&&(n=dw.call(n,1,n.length-1));for(var a=n[n.length-1],r=e.length,s=0;s1&&n&&n.length>1){var a=ft(n)/ft(o);!isFinite(a)&&(a=1),e.pinchScale=a;var r=pt(n);return e.pinchX=r[0],e.pinchY=r[1],{type:"pinch",target:t[0].target,event:e}}}}},xw="silent";vt.prototype.dispose=function(){};var _w=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ww=function(t,e,i,n){fw.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new vt,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,it.call(this),this.setHandlerProxy(i)};ww.prototype={constructor:ww,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(d(_w,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,o=n.target;o&&!o.__zr&&(o=(n=this.findHover(n.x,n.y)).target);var a=this._hovered=this.findHover(e,i),r=a.target,s=this.proxy;s.setCursor&&s.setCursor(r?r.cursor:"default"),o&&r!==o&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(a,"mousemove",t),r&&r!==o&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do{i=i&&i.parentNode}while(i&&9!==i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){var n=(t=t||{}).target;if(!n||!n.silent){for(var o="on"+e,a=gt(e,t,i);n&&(n[o]&&(a.cancelBubble=n[o].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o={x:t,y:e},a=n.length-1;a>=0;a--){var r;if(n[a]!==i&&!n[a].ignore&&(r=yt(n[a],t,e))&&(!o.topTarget&&(o.topTarget=n[a]),r!==xw)){o.target=n[a];break}}return o},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new vw);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var o=n.type;t.gestureEvent=o,this.dispatchToElement({target:n.target},o,n.event)}}},d(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){ww.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downEl=n,this._downPoint=[e.zrX,e.zrY],this._upEl=n;else if("mouseup"===t)this._upEl=n;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||uw(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(i,t,e)}}),h(ww,fw),h(ww,it);var bw="undefined"==typeof Float32Array?Array:Float32Array,Sw=(Object.freeze||Object)({create:xt,identity:_t,copy:wt,mul:bt,translate:St,rotate:Mt,scale:It,invert:Tt,clone:At}),Mw=_t,Iw=5e-5,Tw=function(t){(t=t||{}).position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},Aw=Tw.prototype;Aw.transform=null,Aw.needLocalTransform=function(){return Dt(this.rotation)||Dt(this.position[0])||Dt(this.position[1])||Dt(this.scale[0]-1)||Dt(this.scale[1]-1)};var Dw=[];Aw.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(i||e){n=n||xt(),i?this.getLocalTransform(n):Mw(n),e&&(i?bt(n,t.transform,n):wt(n,t.transform)),this.transform=n;var o=this.globalScaleRatio;if(null!=o&&1!==o){this.getGlobalScale(Dw);var a=Dw[0]<0?-1:1,r=Dw[1]<0?-1:1,s=((Dw[0]-a)*o+a)/Dw[0]||0,l=((Dw[1]-r)*o+r)/Dw[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||xt(),Tt(this.invTransform,n)}else n&&Mw(n)},Aw.getLocalTransform=function(t){return Tw.getLocalTransform(this,t)},Aw.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},Aw.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var Cw=[],Lw=xt();Aw.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,o=this.scale;Dt(e-1)&&(e=Math.sqrt(e)),Dt(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],o[0]=e,o[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},Aw.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(bt(Cw,t.invTransform,e),e=Cw);var i=this.origin;i&&(i[0]||i[1])&&(Lw[4]=i[0],Lw[5]=i[1],bt(Cw,e,Lw),Cw[4]-=i[0],Cw[5]-=i[1],e=Cw),this.setLocalTransform(e)}},Aw.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},Aw.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&Q(i,i,n),i},Aw.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&Q(i,i,n),i},Tw.getLocalTransform=function(t,e){Mw(e=e||[]);var i=t.origin,n=t.scale||[1,1],o=t.rotation||0,a=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),It(e,e,n),o&&Mt(e,e,o),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=a[0],e[5]+=a[1],e};var kw={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-kw.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*kw.bounceIn(2*t):.5*kw.bounceOut(2*t-1)+.5}};Ct.prototype={constructor:Ct,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,o="string"==typeof n?kw[n]:n,a="function"==typeof o?o(i):i;return this.fire("frame",a),1===i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var Pw=function(){this.head=null,this.tail=null,this._len=0},Nw=Pw.prototype;Nw.insert=function(t){var e=new Ow(t);return this.insertEntry(e),e},Nw.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},Nw.remove=function(t){var e=t.prev,i=t.next;e?e.next=i:this.head=i,i?i.prev=e:this.tail=e,t.next=t.prev=null,this._len--},Nw.len=function(){return this._len},Nw.clear=function(){this.head=this.tail=null,this._len=0};var Ow=function(t){this.value=t,this.next,this.prev},Ew=function(t){this._list=new Pw,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},Rw=Ew.prototype;Rw.put=function(t,e){var i=this._list,n=this._map,o=null;if(null==n[t]){var a=i.len(),r=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=i.head;i.remove(s),delete n[s.key],o=s.value,this._lastRemovedEntry=s}r?r.value=e:r=new Ow(e),r.key=t,i.insertEntry(r),n[t]=r}return o},Rw.get=function(t){var e=this._map[t],i=this._list;if(null!=e)return e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value},Rw.clear=function(){this._list.clear(),this._map={}};var zw={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]},Bw=new Ew(20),Vw=null,Gw=Ut,Fw=Xt,Ww=(Object.freeze||Object)({parse:Gt,lift:Ht,toHex:Zt,fastLerp:Ut,fastMapToColor:Gw,lerp:Xt,mapToColor:Fw,modifyHSL:jt,modifyAlpha:Yt,stringify:qt}),Hw=Array.prototype.slice,Zw=function(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||Kt,this._setter=n||$t,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};Zw.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:ae(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new de(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},de.create=function(t){return new de(t.x,t.y,t.width,t.height)};var tb=function(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};tb.prototype={constructor:tb,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof tb&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,o=l(n,t);return o<0?this:(n.splice(o,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof tb&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e=0&&(this.delFromStorage(t),this._roots.splice(o,1),t instanceof tb&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:we};var ob={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},ab=function(t,e,i){return ob.hasOwnProperty(e)?i*=t.dpr:i},rb={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},sb=9,lb=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],ub=function(t){this.extendFrom(t,!1)};ub.prototype={constructor:ub,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){var n=this,o=i&&i.style,a=!o||t.__attrCachedBy!==rb.STYLE_BIND;t.__attrCachedBy=rb.STYLE_BIND;for(var r=0;r0},extendFrom:function(t,e){if(t)for(var i in t)!t.hasOwnProperty(i)||!0!==e&&(!1===e?this.hasOwnProperty(i):null==t[i])||(this[i]=t[i])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,i){for(var n=("radial"===e.type?Se:be)(t,e,i),o=e.colorStops,a=0;a=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i15)break}s.__drawIndex=m,s.__drawIndex0&&t>n[0]){for(r=0;rt);r++);a=i[n[r]]}if(n.splice(r+1,0,t),i[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else Yw("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n0?.01:0),this._needsManuallyCompositing),a.__builtin__||Yw("ZLevel "+s+" has been used by unkown layer "+a.id),a!==i&&(a.__used=!0,a.__startIndex!==o&&(a.__dirty=!0),a.__startIndex=o,a.incremental?a.__drawIndex=-1:a.__drawIndex=o,e(o),i=a),r.__dirty&&(a.__dirty=!0,a.incremental&&a.__drawIndex<0&&(a.__drawIndex=o))}e(o),this.eachBuiltinLayer(function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?n(i[t],e,!0):i[t]=e;for(var o=0;o=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i=0||n&&l(n,r)<0)){var s=e.getShallow(r);null!=s&&(o[t[a][0]]=s)}}return o}},tS=Qb([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),eS={getLineStyle:function(t){var e=tS(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"===e||null==e?null:"dashed"===e?[n,n]:[i,i]}},iS=Qb([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),nS={getAreaStyle:function(t,e){return iS(this,t,e)}},oS=Math.pow,aS=Math.sqrt,rS=1e-8,sS=1e-4,lS=aS(3),uS=1/3,hS=V(),cS=V(),dS=V(),fS=Math.min,pS=Math.max,gS=Math.sin,mS=Math.cos,vS=2*Math.PI,yS=V(),xS=V(),_S=V(),wS=[],bS=[],SS={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},MS=[],IS=[],TS=[],AS=[],DS=Math.min,CS=Math.max,LS=Math.cos,kS=Math.sin,PS=Math.sqrt,NS=Math.abs,OS="undefined"!=typeof Float32Array,ES=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};ES.prototype={constructor:ES,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=NS(1/Xw/t)||0,this._uy=NS(1/Xw/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(SS.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var i=NS(t-this._xi)>this._ux||NS(e-this._yi)>this._uy||this._len<5;return this.addData(SS.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(SS.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(SS.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(SS.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=LS(o)*i+t,this._yi=kS(o)*i+e,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(SS.R,t,e,i,n),this},closePath:function(){this.addData(SS.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;i0&&f<=t||h<0&&f>=t||0===h&&(c>0&&p<=e||c<0&&p>=e);)f+=h*(i=r[n=this._dashIdx]),p+=c*i,this._dashIdx=(n+1)%g,h>0&&fl||c>0&&pu||s[n%2?"moveTo":"lineTo"](h>=0?DS(f,t):CS(f,t),c>=0?DS(p,e):CS(p,e));h=f-t,c=p-e,this._dashOffset=-PS(h*h+c*c)},_dashedBezierTo:function(t,e,i,n,o,a){var r,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=tn,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,r=0;r<1;r+=.1)s=v(g,t,i,o,r+.1)-v(g,t,i,o,r),l=v(m,e,n,a,r+.1)-v(m,e,n,a,r),y+=PS(s*s+l*l);for(;x<_&&!((w+=f[x])>d);x++);for(r=(w-d)/y;r<=1;)u=v(g,t,i,o,r),h=v(m,e,n,a,r),x%2?p.moveTo(u,h):p.lineTo(u,h),r+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(o,a),s=o-u,l=a-h,this._dashOffset=-PS(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,OS&&(this.data=new Float32Array(t)))},getBoundingRect:function(){MS[0]=MS[1]=TS[0]=TS[1]=Number.MAX_VALUE,IS[0]=IS[1]=AS[0]=AS[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,o=0,a=0;al||NS(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case SS.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],x=s[c++],_=s[c++],w=g>m?g:m,b=g>m?1:g/m,S=g>m?m/g:1,M=v+y;Math.abs(g-m)>.001?(t.translate(f,p),t.rotate(x),t.scale(b,S),t.arc(0,0,w,v,M,1-_),t.scale(1/b,1/S),t.rotate(-x),t.translate(-f,-p)):t.arc(f,p,w,v,M,1-_),1===c&&(e=LS(v)*g+f,i=kS(v)*m+p),n=LS(M)*g+f,o=kS(M)*m+p;break;case SS.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case SS.Z:t.closePath(),n=e,o=i}}}},ES.CMD=SS;var RS=2*Math.PI,zS=2*Math.PI,BS=ES.CMD,VS=2*Math.PI,GS=1e-4,FS=[-1,-1,-1],WS=[-1,-1],HS=fb.prototype.getCanvasPattern,ZS=Math.abs,US=new ES(!0);Pn.prototype={constructor:Pn,type:"path",__dirtyPath:!0,strokeContainThreshold:5,subPixelOptimize:!1,brush:function(t,e){var i=this.style,n=this.path||US,o=i.hasStroke(),a=i.hasFill(),r=i.fill,s=i.stroke,l=a&&!!r.colorStops,u=o&&!!s.colorStops,h=a&&!!r.image,c=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var d;l&&(d=d||this.getBoundingRect(),this._fillGradient=i.getGradient(t,r,d)),u&&(d=d||this.getBoundingRect(),this._strokeGradient=i.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:h&&(t.fillStyle=HS.call(r,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=HS.call(s,t));var f=i.lineDash,p=i.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();if(n.setScale(m[0],m[1]),this.__dirtyPath||f&&!g&&o?(n.beginPath(t),f&&!g&&(n.setLineDash(f),n.setLineDashOffset(p)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),a)if(null!=i.fillOpacity){v=t.globalAlpha;t.globalAlpha=i.fillOpacity*i.opacity,n.fill(t),t.globalAlpha=v}else n.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),o)if(null!=i.strokeOpacity){var v=t.globalAlpha;t.globalAlpha=i.strokeOpacity*i.opacity,n.stroke(t),t.globalAlpha=v}else n.stroke(t);f&&g&&t.setLineDash([]),null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new ES},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new ES),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),r>1e-10&&(o.width+=a/r,o.height+=a/r,o.x-=a/r/2,o.y-=a/r/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,s=o.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),kn(a,r/s,t,e)))return!0}if(o.hasFill())return Ln(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):di.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(w(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&ZS(t[0]-1)>1e-10&&ZS(t[3]-1)>1e-10?Math.sqrt(ZS(t[0]*t[3]-t[2]*t[1])):1}},Pn.extend=function(t){var e=function(e){Pn.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var n=this.shape;for(var o in i)!n.hasOwnProperty(o)&&i.hasOwnProperty(o)&&(n[o]=i[o])}t.init&&t.init.call(this,e)};u(e,Pn);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(Pn,di);var XS=ES.CMD,jS=[[],[],[]],YS=Math.sqrt,qS=Math.atan2,KS=function(t,e){var i,n,o,a,r,s,l=t.data,u=XS.M,h=XS.C,c=XS.L,d=XS.R,f=XS.A,p=XS.Q;for(o=0,a=0;o=11?function(){var e,i=this.__clipPaths,n=this.style;if(i)for(var o=0;oi-2?i-1:c+1],u=t[c>i-3?i-1:c+2]);var p=d*d,g=d*p;n.push([Bn(s[0],f[0],l[0],u[0],d,p,g),Bn(s[1],f[1],l[1],u[1],d,p,g)])}return n},fM=function(t,e,i,n){var o,a,r,s,l=[],u=[],h=[],c=[];if(n){r=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d=i&&a>=o)return{x:i,y:o,width:n-i,height:a-o}},createIcon:Po,Group:tb,Image:fi,Text:rM,Circle:sM,Sector:hM,Ring:cM,Polygon:pM,Polyline:gM,Rect:yM,Line:_M,BezierCurve:bM,Arc:SM,IncrementalDisplayable:Zn,CompoundPath:MM,LinearGradient:TM,RadialGradient:AM,BoundingRect:de}),BM=["textStyle","color"],VM={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(BM):null)},getFont:function(){return So({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return ke(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}},GM=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),FM={getItemStyle:function(t,e){var i=GM(this,t,e),n=this.getBorderLineDash();return n&&(i.lineDash=n),i},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}},WM=h,HM=Bi();No.prototype={constructor:No,init:null,mergeOption:function(t){n(this.option,t,!0)},get:function(t,e){return null==t?this.option:Oo(this.option,this.parsePath(t),!e&&Eo(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&Eo(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,n=null==t?this.option:Oo(this.option,t=this.parsePath(t));return e=e||(i=Eo(this,t))&&i.getModel(t),new No(n,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new(0,this.constructor)(i(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){HM(this).getParent=t},isAnimationEnabled:function(){if(!U_.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},ji(No),Yi(No),WM(No,eS),WM(No,nS),WM(No,VM),WM(No,FM);var ZM=0,UM=1e-4,XM=9007199254740991,jM=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,YM=(Object.freeze||Object)({linearMap:Bo,parsePercent:Vo,round:Go,asc:Fo,getPrecision:Wo,getPrecisionSafe:Ho,getPixelPrecision:Zo,getPercentWithPrecision:Uo,MAX_SAFE_INTEGER:XM,remRadian:Xo,isRadianAroundZero:jo,parseDate:Yo,quantity:qo,nice:$o,quantile:function(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),o=+t[n-1],a=i-n;return a?o+a*(t[n]-o):o},reformIntervals:Jo,isNumeric:Qo}),qM=L,KM=/([&<>"'])/g,$M={"&":"&","<":"<",">":">",'"':""","'":"'"},JM=["a","b","c","d","e","f","g"],QM=function(t,e){return"{"+t+(null==e?"":e)+"}"},tI=ze,eI=(Object.freeze||Object)({addCommas:ta,toCamelCase:ea,normalizeCssArray:qM,encodeHTML:ia,formatTpl:na,formatTplSimple:oa,getTooltipMarker:aa,formatTime:sa,capitalFirst:la,truncateText:tI,getTextBoundingRect:function(t){return ke(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,o,a,r,s){return ke(t,e,i,n,o,s,a,r)}}),iI=d,nI=["left","right","top","bottom","width","height"],oI=[["width","left","right"],["height","top","bottom"]],aI=ua,rI=(v(ua,"vertical"),v(ua,"horizontal"),{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}}),sI=Bi(),lI=No.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){No.call(this,t,e,i,n),this.uid=Ro("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?ga(t):{};n(t,e.getTheme().get(this.mainType)),n(t,this.getDefaultOption()),i&&pa(t,o,i)},mergeOption:function(t,e){n(this.option,t,!0);var i=this.layoutMode;i&&pa(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=sI(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var o=i.prototype.defaultOption;o&&e.push(o),i=i.superClass}for(var a={},r=e.length-1;r>=0;r--)a=n(a,e[r],!0);t.defaultOption=a}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});$i(lI,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,i){t=Ui(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=Ui(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o}}(lI),function(t,e){function i(t){var i={},a=[];return d(t,function(r){var s=n(i,r),u=o(s.originalDeps=e(r),t);s.entryCount=u.length,0===s.entryCount&&a.push(r),d(u,function(t){l(s.predecessor,t)<0&&s.predecessor.push(t);var e=n(i,t);l(e.successor,t)<0&&e.successor.push(r)})}),{graph:i,noEntryList:a}}function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function o(t,e){var i=[];return d(t,function(t){l(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,n,o){function a(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}if(t.length){var r=i(e),s=r.graph,l=r.noEntryList,u={};for(d(t,function(t){u[t]=!0});l.length;){var h=l.pop(),c=s[h],f=!!u[h];f&&(n.call(o,h,c.originalDeps.slice()),delete u[h]),d(c.successor,f?function(t){u[t]=!0,a(t)}:a)}d(u,function(){throw new Error("Circle dependency may exists")})}}}(lI,function(t){var e=[];return d(lI.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return Ui(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(lI,rI);var uI="";"undefined"!=typeof navigator&&(uI=navigator.platform||"");var hI={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:uI.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},cI=Bi(),dI={clearColorPalette:function(){cI(this).colorIdx=0,cI(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=cI(e=e||this),o=n.colorIdx||0,a=n.colorNameMap=n.colorNameMap||{};if(a.hasOwnProperty(t))return a[t];var r=Di(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?va(s,i):r;if((l=l||r)&&l.length){var u=l[o];return t&&(a[t]=u),n.colorIdx=(o+1)%l.length,u}}},fI={cartesian2d:function(t,e,i,n){var o=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",o),i.set("y",a),xa(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),xa(a)&&(n.set("y",a),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var o=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",o),xa(o)&&(n.set("single",o),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var o=t.getReferringComponents("polar")[0],a=o.findAxisModel("radiusAxis"),r=o.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",r),xa(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),xa(r)&&(n.set("angle",r),e.firstCategoryDimIndex=1)},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,e,i,n){var o=t.ecModel,a=o.getComponent("parallel",t.get("parallelIndex")),r=e.coordSysDims=a.dimensions.slice();d(a.parallelAxisIndex,function(t,a){var s=o.getComponent("parallelAxis",t),l=r[a];i.set(l,s),xa(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},pI="original",gI="arrayRows",mI="objectRows",vI="keyedColumns",yI="unknown",xI="typedArray",_I="column",wI="row";_a.seriesDataToSource=function(t){return new _a({data:t,sourceFormat:S(t)?xI:pI,fromDataset:!1})},Yi(_a);var bI=Bi(),SI="\0_ec_inner",MI=No.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new No(i),this._optionManager=n},setOption:function(t,e){k(!(SI in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,i=this._optionManager;if(!t||"recreate"===t){var n=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(n)):Ea.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&d(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){var e=this.option,o=this._componentsMap,r=[];Sa(this),d(t,function(t,o){null!=t&&(lI.hasClass(o)?o&&r.push(o):e[o]=null==e[o]?i(t):n(e[o],t,!0))}),lI.topologicalTravel(r,lI.getAllClassMainTypes(),function(i,n){var r=Di(t[i]),s=Pi(o.get(i),r);Ni(s),d(s,function(t,e){var n=t.option;w(n)&&(t.keyInfo.mainType=i,t.keyInfo.subType=za(i,n,t.exist))});var l=Ra(o,n);e[i]=[],o.set(i,[]),d(s,function(t,n){var r=t.exist,s=t.option;if(k(w(s)||r,"Empty component definition"),s){var u=lI.getClass(i,t.keyInfo.subType,!0);if(r&&r instanceof u)r.name=t.keyInfo.name,r.mergeOption(s,this),r.optionUpdated(s,!1);else{var h=a({dependentModels:l,componentIndex:n},t.keyInfo);a(r=new u(s,this,this,h),h),r.init(s,this,this,h),r.optionUpdated(null,!0)}}else r.mergeOption({},this),r.optionUpdated({},!1);o.get(i)[n]=r,e[i][n]=r.option},this),"series"===i&&Ba(this,o.get("series"))},this),this._seriesIndicesMap=R(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=i(this.option);return d(t,function(e,i){if(lI.hasClass(i)){for(var n=(e=Di(e)).length-1;n>=0;n--)Ei(e[n])&&e.splice(n,1);t[i]=e}}),delete t[SI],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,o=t.name,a=this._componentsMap.get(e);if(!a||!a.length)return[];var r;if(null!=i)y(i)||(i=[i]),r=g(f(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=y(n);r=g(a,function(t){return s&&l(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=y(o);r=g(a,function(t){return u&&l(o,t.name)>=0||!u&&t.name===o})}else r=a.slice();return Va(r,t)},findComponents:function(t){var e=t.query,i=t.mainType,n=function(t){var e=i+"Index",n=i+"Id",o=i+"Name";return!t||null==t[e]&&null==t[n]&&null==t[o]?null:{mainType:i,index:t[e],id:t[n],name:t[o]}}(e);return function(e){return t.filter?g(e,t.filter):e}(Va(n?this.queryComponents(n):this._componentsMap.get(i),t))},eachComponent:function(t,e,i){var n=this._componentsMap;"function"==typeof t?(i=e,e=t,n.each(function(t,n){d(t,function(t,o){e.call(i,n,t,o)})})):_(t)?d(n.get(t),e,i):w(t)&&d(this.findComponents(t),e,i)},getSeriesByName:function(t){return g(this._componentsMap.get("series"),function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){return g(this._componentsMap.get("series"),function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){d(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){d(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){d(this._seriesIndices,function(n){var o=this._componentsMap.get("series")[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return d(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){Ba(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;Ba(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),lI.topologicalTravel(i,lI.getAllClassMainTypes(),function(i,n){d(e.get(i),function(e){("series"!==i||!Na(e,t))&&e.restoreData()})})}});h(MI,dI);var II=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],TI={};Fa.prototype={constructor:Fa,create:function(t,e){var i=[];d(TI,function(n,o){var a=n.create(t,e);i=i.concat(a||[])}),this._coordinateSystems=i},update:function(t,e){d(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},Fa.register=function(t,e){TI[t]=e},Fa.get=function(t){return TI[t]};var AI=d,DI=i,CI=f,LI=n,kI=/^(min|max)?(.+)$/;Wa.prototype={constructor:Wa,setOption:function(t,e){t&&d(Di(t.series),function(t){t&&t.data&&S(t.data)&&N(t.data)}),t=DI(t,!0);var i=this._optionBackup,n=Ha.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(ja(i.baseOption,n.baseOption),n.timelineOptions.length&&(i.timelineOptions=n.timelineOptions),n.mediaList.length&&(i.mediaList=n.mediaList),n.mediaDefault&&(i.mediaDefault=n.mediaDefault)):this._optionBackup=n},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=CI(e.timelineOptions,DI),this._mediaList=CI(e.mediaList,DI),this._mediaDefault=DI(e.mediaDefault),this._currentMediaIndices=[],DI(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=DI(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,a=[],r=[];if(!n.length&&!o)return r;for(var s=0,l=n.length;s=1)&&(t=1),t}var i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var o=this.context;o.data=o.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var r=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),u=t&&t.modDataCount||0;r===l&&s===u||(a="reset");var h;(this._dirty||"reset"===a)&&(this._dirty=!1,h=yr(this,n)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=i?i._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!n&&(h||d=i?null:t1&&a>0?e:t}};return s}();UI.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},UI.unfinished=function(){return this._progress&&this._dueIndex":"\n",s="richText"===n,l={},u=0,h=this.getData(),c=h.mapDimension("defaultedTooltip",!0),f=c.length,g=this.getRawValue(t),m=y(g),v=h.getItemVisual(t,"color");w(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var x=(f>1||m&&!f?function(i){function o(t,i){var o=h.getDimensionInfo(i);if(o&&!1!==o.otherDims.tooltip){var c=o.type,d="sub"+a.seriesIndex+"at"+u,p=aa({color:v,type:"subItem",renderMode:n,markerId:d}),g="string"==typeof p?p:p.content,m=(r?g+ia(o.displayName||"-")+": ":"")+ia("ordinal"===c?t+"":"time"===c?e?"":sa("yyyy/MM/dd hh:mm:ss",t):ta(t));m&&f.push(m),s&&(l[d]=v,++u)}}var r=p(i,function(t,e,i){var n=h.getDimensionInfo(i);return t|=n&&!1!==n.tooltip&&null!=n.displayName},0),f=[];c.length?d(c,function(e){o(fr(h,t,e),e)}):d(i,o);var g=r?s?"\n":"
":"",m=g+f.join(g||", ");return{renderMode:n,content:m,style:l}}(g):o(f?fr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=aa({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?ia(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?ia(S)+": "+x:x),markers:l}},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=dI.getColorFromPalette.call(this,t,e,i);return o||(o=n.getColorFromPalette(t,e,i)),o},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});h(YI,ZI),h(YI,dI);var qI=function(){this.group=new tb,this.uid=Ro("viewComponent")};qI.prototype={constructor:qI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var KI=qI.prototype;KI.updateView=KI.updateLayout=KI.updateVisual=function(t,e,i,n){},ji(qI),$i(qI,{registerWhenExtend:!0});var $I=function(){var t=Bi();return function(e){var i=t(e),n=e.pipelineContext,o=i.large,a=i.progressiveRender,r=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(o^r||a^s)&&"reset"}},JI=Bi(),QI=$I();Ar.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Cr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Cr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var tT=Ar.prototype;tT.updateView=tT.updateLayout=tT.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},ji(Ar),$i(Ar,{registerWhenExtend:!0}),Ar.markUpdateMethod=function(t,e){JI(t).updateMethod=e};var eT={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},iT="\0__throttleOriginMethod",nT="\0__throttleRate",oT="\0__throttleType",aT={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=(t.visualColorAccessPath||"itemStyle.color").split("."),o=t.get(n)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(i.setVisual("color",o),!e.isSeriesFiltered(t)){"function"!=typeof o||o instanceof IM||i.each(function(e){i.setItemVisual(e,"color",o(t.getDataParams(e)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e).get(n,!0);null!=i&&t.setItemVisual(e,"color",i)}:null}}}},rT={toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},sT=function(t,e){function i(t,e){if("string"!=typeof t)return t;var i=t;return d(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function n(t){var e=a.get(t);if(null==e){for(var i=t.split("."),n=rT.aria,o=0;o1?"series.multiple.prefix":"series.single.prefix"),{seriesCount:r}),e.eachSeries(function(t,e){if(e1?"multiple":"single")+".";a=i(a=n(s?u+"withName":u+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:o(t.subType)});var c=t.getData();window.data=c,c.count()>l?a+=i(n("data.partialData"),{displayCnt:l}):a+=n("data.allData");for(var d=[],p=0;pi.blockIndex?i.step:null,a=n&&n.modDataCount;return{step:o,modBy:null!=a?Math.ceil(a/o):null,modDataCount:a}}},uT.getPipeline=function(t){return this._pipelineMap.get(t)},uT.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),o=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,a=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:o,modDataCount:r,large:a}},uT.restorePipelines=function(t){var e=this,i=e._pipelineMap=R();t.eachSeries(function(t){var n=t.getProgressive(),o=t.uid;i.set(o,{id:o,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:n&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(n||700),count:0}),jr(e,t,t.dataTask)})},uT.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),i=this.api;d(this._allHandlers,function(n){var o=t.get(n.uid)||t.set(n.uid,[]);n.reset&&zr(this,n,o,e,i),n.overallReset&&Br(this,n,o,e,i)},this)},uT.prepareView=function(t,e,i,n){var o=t.renderTask,a=o.context;a.model=e,a.ecModel=i,a.api=n,o.__block=!t.incrementalPrepareRender,jr(this,e,o)},uT.performDataProcessorTasks=function(t,e){Rr(this,this._dataProcessorHandlers,t,e,{block:!0})},uT.performVisualTasks=function(t,e,i){Rr(this,this._visualHandlers,t,e,i)},uT.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},uT.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var hT=uT.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},cT=Ur(0);Er.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:Yr(t)}),t.uid=Ro("stageHandler"),e&&(t.visualType=e),t};var dT,fT={},pT={};qr(fT,MI),qr(pT,Ga),fT.eachSeriesByType=fT.eachRawSeriesByType=function(t){dT=t},fT.eachComponent=function(t){"series"===t.mainType&&t.subType&&(dT=t.subType)};var gT=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],mT={color:gT,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],gT]},vT=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],yT={color:vT,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:"#eee"},crossStyle:{color:"#eee"}}},legend:{textStyle:{color:"#eee"}},textStyle:{color:"#eee"},title:{textStyle:{color:"#eee"}},toolbox:{iconStyle:{normal:{borderColor:"#eee"}}},dataZoom:{textStyle:{color:"#eee"}},visualMap:{textStyle:{color:"#eee"}},timeline:{lineStyle:{color:"#eee"},itemStyle:{normal:{color:vT[1]}},label:{normal:{textStyle:{color:"#eee"}}},controlStyle:{normal:{color:"#eee",borderColor:"#eee"}}},timeAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},logAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},valueAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},categoryAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},line:{symbol:"circle"},graph:{color:vT},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};yT.categoryAxis.splitLine.show=!1,lI.extend({type:"dataset",defaultOption:{seriesLayoutBy:_I,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){wa(this)}}),qI.extend({type:"dataset"});var xT=Pn.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=.5522848,n=e.cx,o=e.cy,a=e.rx,r=e.ry,s=a*i,l=r*i;t.moveTo(n-a,o),t.bezierCurveTo(n-a,o-l,n-s,o-r,n,o-r),t.bezierCurveTo(n+s,o-r,n+a,o-l,n+a,o),t.bezierCurveTo(n+a,o+l,n+s,o+r,n,o+r),t.bezierCurveTo(n-s,o+r,n-a,o+l,n-a,o),t.closePath()}}),_T=/[\s,]+/;$r.prototype.parse=function(t,e){e=e||{};var i=Kr(t);if(!i)throw new Error("Illegal svg");var n=new tb;this._root=n;var o=i.getAttribute("viewBox")||"",a=parseFloat(i.getAttribute("width")||e.width),r=parseFloat(i.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(r)&&(r=null),es(i,n,null,!0);for(var s=i.firstChild;s;)this._parseNode(s,n),s=s.nextSibling;var l,u;if(o){var h=P(o).split(_T);h.length>=4&&(l={x:parseFloat(h[0]||0),y:parseFloat(h[1]||0),width:parseFloat(h[2]),height:parseFloat(h[3])})}if(l&&null!=a&&null!=r&&(u=as(l,a,r),!e.ignoreViewBox)){var c=n;(n=new tb).add(c),c.scale=u.scale.slice(),c.position=u.position.slice()}return e.ignoreRootClip||null==a||null==r||n.setClipPath(new yM({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:l,viewBoxTransform:u}},$r.prototype._parseNode=function(t,e){var i=t.nodeName.toLowerCase();"defs"===i?this._isDefine=!0:"text"===i&&(this._isText=!0);var n;if(this._isDefine){if(r=bT[i]){var o=r.call(this,t),a=t.getAttribute("id");a&&(this._defs[a]=o)}}else{var r=wT[i];r&&(n=r.call(this,t,e),e.add(n))}for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,n),3===s.nodeType&&this._isText&&this._parseText(s,n),s=s.nextSibling;"defs"===i?this._isDefine=!1:"text"===i&&(this._isText=!1)},$r.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var o=new rM({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});Qr(e,o),es(t,o,this._defs);var a=o.style.fontSize;a&&a<9&&(o.style.fontSize=9,o.scale=o.scale||[1,1],o.scale[0]*=a/9,o.scale[1]*=a/9);var r=o.getBoundingRect();return this._textX+=r.width,e.add(o),o};var wT={g:function(t,e){var i=new tb;return Qr(e,i),es(t,i,this._defs),i},rect:function(t,e){var i=new yM;return Qr(e,i),es(t,i,this._defs),i.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),i},circle:function(t,e){var i=new sM;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),i},line:function(t,e){var i=new _M;return Qr(e,i),es(t,i,this._defs),i.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),i},ellipse:function(t,e){var i=new xT;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),i},polygon:function(t,e){var i=t.getAttribute("points");i&&(i=ts(i));var n=new pM({shape:{points:i||[]}});return Qr(e,n),es(t,n,this._defs),n},polyline:function(t,e){var i=new Pn;Qr(e,i),es(t,i,this._defs);var n=t.getAttribute("points");return n&&(n=ts(n)),new gM({shape:{points:n||[]}})},image:function(t,e){var i=new fi;return Qr(e,i),es(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(o),this._textY=parseFloat(n)+parseFloat(a);var r=new tb;return Qr(e,r),es(t,r,this._defs),r},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0,r=new tb;return Qr(e,r),es(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=Rn(t.getAttribute("d")||"");return Qr(e,i),es(t,i,this._defs),i}},bT={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),o=parseInt(t.getAttribute("y2")||0,10),a=new TM(e,i,n,o);return Jr(t,a),a},radialgradient:function(t){}},ST={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-align":"textAlign","alignment-baseline":"textBaseline"},MT=/url\(\s*#(.*?)\)/,IT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,TT=/([^\s:;]+)\s*:\s*([^:;]+)/g,AT=R(),DT={registerMap:function(t,e,i){var n;return y(e)?n=e:e.svg?n=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),n=[{type:"geoJSON",source:e,specialAreas:i}]),d(n,function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,CT[e])(t)}),AT.set(t,n)},retrieveMap:function(t){return AT.get(t)}},CT={geoJSON:function(t){var e=t.source;t.geoJSON=_(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=Kr(t.source)}},LT=k,kT=d,PT=x,NT=w,OT=lI.parseClassType,ET={zrender:"4.0.6"},RT=1e3,zT=1e3,BT=3e3,VT={PROCESSOR:{FILTER:RT,STATISTIC:5e3},VISUAL:{LAYOUT:zT,GLOBAL:2e3,CHART:BT,COMPONENT:4e3,BRUSH:5e3}},GT="__flagInMainProcess",FT="__optionUpdated",WT=/^[a-zA-Z0-9_]+$/;ls.prototype.on=ss("on"),ls.prototype.off=ss("off"),ls.prototype.one=ss("one"),h(ls,fw);var HT=us.prototype;HT._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[FT]){var e=this[FT].silent;this[GT]=!0,cs(this),ZT.update.call(this),this[GT]=!1,this[FT]=!1,gs.call(this,e),ms.call(this,e)}else if(t.unfinished){var i=1,n=this._model;this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),fs(this,n),t.performVisualTasks(n),bs(this,this._model,0,"remain"),i-=+new Date-o}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},HT.getDom=function(){return this._dom},HT.getZr=function(){return this._zr},HT.setOption=function(t,e,i){var n;if(NT(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[GT]=!0,!this._model||e){var o=new Wa(this._api),a=this._theme,r=this._model=new MI(null,null,a,o);r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,qT),i?(this[FT]={silent:n},this[GT]=!1):(cs(this),ZT.update.call(this),this._zr.flush(),this[FT]=!1,this[GT]=!1,gs.call(this,n),ms.call(this,n))},HT.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},HT.getModel=function(){return this._model},HT.getOption=function(){return this._model&&this._model.getOption()},HT.getWidth=function(){return this._zr.getWidth()},HT.getHeight=function(){return this._zr.getHeight()},HT.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},HT.getRenderedCanvas=function(t){if(U_.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},HT.getSvgDataUrl=function(){if(U_.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},HT.getDataURL=function(t){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;kT(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return kT(n,function(t){t.group.ignore=!1}),a},HT.getConnectedDataURL=function(t){if(U_.canvasSupported){var e=this.group,n=Math.min,o=Math.max;if(eA[e]){var a=1/0,r=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(tA,function(h,c){if(h.group===e){var d=h.getRenderedCanvas(i(t)),f=h.getDom().getBoundingClientRect();a=n(f.left,a),r=n(f.top,r),s=o(f.right,s),l=o(f.bottom,l),u.push({dom:d,left:f.left,top:f.top})}});var c=(s*=h)-(a*=h),f=(l*=h)-(r*=h),p=iw();p.width=c,p.height=f;var g=Ii(p);return kT(u,function(t){var e=new fi({style:{x:t.left*h-a,y:t.top*h-r,image:t.dom}});g.add(e)}),g.refreshImmediately(),p.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},HT.convertToPixel=v(hs,"convertToPixel"),HT.convertFromPixel=v(hs,"convertFromPixel"),HT.containPixel=function(t,e){var i;return t=Vi(this._model,t),d(t,function(t,n){n.indexOf("Models")>=0&&d(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},HT.getVisual=function(t,e){var i=(t=Vi(this._model,t,{defaultMainType:"series"})).seriesModel.getData(),n=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?i.indexOfRawIndex(t.dataIndex):null;return null!=n?i.getItemVisual(n,e):i.getVisual(e)},HT.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},HT.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var ZT={prepareAndUpdate:function(t){cs(this),ZT.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,o=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),o.create(e,i),a.performDataProcessorTasks(e,t),fs(this,e),o.update(e,i),xs(e),a.performVisualTasks(e,t),_s(this,e,i,t);var r=e.get("backgroundColor")||"transparent";if(U_.canvasSupported)n.setBackgroundColor(r);else{var s=Gt(r);r=qt(s,"rgb"),0===s[3]&&(r="transparent")}Ss(e,i)}},updateTransform:function(t){var e=this._model,i=this,n=this._api;if(e){var o=[];e.eachComponent(function(a,r){var s=i.getViewOfComponentModel(r);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(r,e,n,t);l&&l.update&&o.push(s)}else o.push(s)});var a=R();e.eachSeries(function(o){var r=i._chartsMap[o.__viewId];if(r.updateTransform){var s=r.updateTransform(o,e,n,t);s&&s.update&&a.set(o.uid,1)}else a.set(o.uid,1)}),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),bs(i,e,0,t,a),Ss(e,this._api)}},updateView:function(t){var e=this._model;e&&(Ar.markUpdateMethod(t,"updateView"),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),_s(this,this._model,this._api,t),Ss(e,this._api))},updateVisual:function(t){ZT.update.call(this,t)},updateLayout:function(t){ZT.update.call(this,t)}};HT.resize=function(t){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var i=e.resetOption("media"),n=t&&t.silent;this[GT]=!0,i&&cs(this),ZT.update.call(this),this[GT]=!1,gs.call(this,n),ms.call(this,n)}},HT.showLoading=function(t,e){if(NT(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),QT[t]){var i=QT[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},HT.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},HT.makeActionFromEvent=function(t){var e=a({},t);return e.type=jT[t.type],e},HT.dispatchAction=function(t,e){NT(e)||(e={silent:!!e}),XT[t.type]&&this._model&&(this[GT]?this._pendingActions.push(t):(ps.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&U_.browser.weChat&&this._throttledZrFlush(),gs.call(this,e.silent),ms.call(this,e.silent)))},HT.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},HT.on=ss("on"),HT.off=ss("off"),HT.one=ss("one");var UT=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];HT._initEvents=function(){kT(UT,function(t){var e=function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var r=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=r&&r.getDataParams(o.dataIndex,o.dataType,o)||{}}else o&&o.eventData&&(i=a({},o.eventData));if(i){var s=i.componentType,l=i.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=i.seriesIndex);var u=s&&null!=l&&n.getComponent(s,l),h=u&&this["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];i.event=e,i.type=t,this._ecEventProcessor.eventInfo={targetEl:o,packedEvent:i,model:u,view:h},this.trigger(t,i)}};e.zrEventfulCallAtLast=!0,this._zr.on(t,e,this)},this),kT(jT,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},HT.isDisposed=function(){return this._disposed},HT.clear=function(){this.setOption({series:[]},!0)},HT.dispose=function(){if(!this._disposed){this._disposed=!0,Fi(this.getDom(),oA,"");var t=this._api,e=this._model;kT(this._componentsViews,function(i){i.dispose(e,t)}),kT(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete tA[this.id]}},h(us,fw),Ds.prototype={constructor:Ds,normalizeQuery:function(t){var e={},i={},n={};if(_(t)){var o=OT(t);e.mainType=o.main||null,e.subType=o.sub||null}else{var a=["Index","Name","Id"],r={name:1,dataIndex:1,dataType:1};d(t,function(t,o){for(var s=!1,l=0;l0&&h===o.length-u.length){var c=o.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}r.hasOwnProperty(o)&&(i[o]=t,s=!0),s||(n[o]=t)})}return{cptQuery:e,dataQuery:i,otherQuery:n}},filter:function(t,e,i){function n(t,e,i,n){return null==t[i]||e[n||i]===t[i]}var o=this.eventInfo;if(!o)return!0;var a=o.targetEl,r=o.packedEvent,s=o.model,l=o.view;if(!s||!l)return!0;var u=e.cptQuery,h=e.dataQuery;return n(u,s,"mainType")&&n(u,s,"subType")&&n(u,s,"index","componentIndex")&&n(u,s,"name")&&n(u,s,"id")&&n(h,r,"name")&&n(h,r,"dataIndex")&&n(h,r,"dataType")&&(!l.filterForExposedEvent||l.filterForExposedEvent(t,e.otherQuery,a,r))},afterTrigger:function(){this.eventInfo=null}};var XT={},jT={},YT=[],qT=[],KT=[],$T=[],JT={},QT={},tA={},eA={},iA=new Date-0,nA=new Date-0,oA="_echarts_instance_",aA=Ls;Bs(2e3,aT),Ns(BI),Os(5e3,function(t){var e=R();t.eachSeries(function(t){var i=t.get("stack");if(i){var n=e.get(i)||e.set(i,[]),o=t.getData(),a={stackResultDimension:o.getCalculationInfo("stackResultDimension"),stackedOverDimension:o.getCalculationInfo("stackedOverDimension"),stackedDimension:o.getCalculationInfo("stackedDimension"),stackedByDimension:o.getCalculationInfo("stackedByDimension"),isStackedByIndex:o.getCalculationInfo("isStackedByIndex"),data:o,seriesModel:t};if(!a.stackedDimension||!a.isStackedByIndex&&!a.stackedByDimension)return;n.length&&o.setCalculationInfo("stackedOnSeries",n[n.length-1].seriesModel),n.push(a)}}),e.each(ar)}),Gs("default",function(t,e){r(e=e||{},{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new yM({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new SM({shape:{startAngle:-lT/2,endAngle:-lT/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),o=new yM({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});n.animateShape(!0).when(1e3,{endAngle:3*lT/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*lT/2}).delay(300).start("circularInOut");var a=new tb;return a.add(n),a.add(o),a.add(i),a.resize=function(){var e=t.getWidth()/2,a=t.getHeight()/2;n.setShape({cx:e,cy:a});var r=n.shape.r;o.setShape({x:e-r,y:a-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},a.resize(),a}),Es({type:"highlight",event:"highlight",update:"highlight"},B),Es({type:"downplay",event:"downplay",update:"downplay"},B),Ps("light",mT),Ps("dark",yT);var rA={};Xs.prototype={constructor:Xs,add:function(t){return this._add=t,this},update:function(t){return this._update=t,this},remove:function(t){return this._remove=t,this},execute:function(){var t=this._old,e=this._new,i={},n=[],o=[];for(js(t,{},n,"_oldKeyGetter",this),js(e,i,o,"_newKeyGetter",this),a=0;ax[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},el(this)},yA._initDataFromProvider=function(t,e){if(!(t>=e)){for(var i,n=this._chunkSize,o=this._rawData,a=this._storage,r=this.dimensions,s=r.length,l=this._dimensionInfos,u=this._nameList,h=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;pM[1]&&(M[1]=S)}if(!o.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var T=r[i],A=a[T][y];if(A){I=A[x];var D=l[T].ordinalMeta;D&&D.categories.length&&(I=D.categories[I])}}var C=null==m?null:m.id;null==C&&null!=I&&(d[I]=d[I]||0,C=I,d[I]>0&&(C+="__ec__"+d[I]),d[I]++),null!=C&&(h[v]=C)}}!o.persistent&&o.clean&&o.clean(),this._rawCount=this._count=e,this._extent={},el(this)}},yA.count=function(){return this._count},yA.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){n=new e(i);for(o=0;o=0&&e=0&&ea&&(a=s)}return i=[o,a],this._extent[t]=i,i},yA.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},yA.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},yA.getCalculationInfo=function(t){return this._calculationInfo[t]},yA.setCalculationInfo=function(t,e){lA(t)?a(this._calculationInfo,t):this._calculationInfo[t]=e},yA.getSum=function(t){var e=0;if(this._storage[t])for(var i=0,n=this.count();i=this._rawCount||t<0)return-1;var e=this._indices,i=e[t];if(null!=i&&it))return a;o=a-1}}return-1},yA.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var o=Number.MAX_VALUE,a=-1,r=0,s=this.count();r=0&&a<0)&&(o=u,a=l,n.length=0),n.push(r))}return n},yA.getRawIndex=nl,yA.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i=l&&w<=u||isNaN(w))&&(a[r++]=c),c++;h=!0}else if(2===n){for(var d=this._storage[s],v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1],f=0;f=l&&w<=u||isNaN(w))&&(b>=y&&b<=x||isNaN(b))&&(a[r++]=c),c++}h=!0}}if(!h)if(1===n)for(m=0;m=l&&w<=u||isNaN(w))&&(a[r++]=M)}else for(m=0;mt[I][1])&&(S=!1)}S&&(a[r++]=this.getRawIndex(m))}return rb[1]&&(b[1]=w)}}}return o},yA.downSample=function(t,e,i,n){for(var o=sl(this,[t]),a=o._storage,r=[],s=Math.floor(1/e),l=a[t],u=this.count(),h=this._chunkSize,c=o._rawExtent[t],d=new($s(this))(u),f=0,p=0;pu-p&&(s=u-p,r.length=s);for(var g=0;gc[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=ol,o},yA.getItemModel=function(t){var e=this.hostModel;return new No(this.getRawDataItem(t),e,e&&e.ecModel)},yA.diff=function(t){var e=this;return new Xs(t?t.getIndices():[],this.getIndices(),function(e){return al(t,e)},function(t){return al(e,t)})},yA.getVisual=function(t){var e=this._visual;return e&&e[t]},yA.setVisual=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},yA.setLayout=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},yA.getLayout=function(t){return this._layout[t]},yA.getItemLayout=function(t){return this._itemLayouts[t]},yA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},yA.clearItemLayouts=function(){this._itemLayouts.length=0},yA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},yA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,lA(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},yA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var xA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};yA.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(xA,e)),this._graphicEls[t]=e},yA.getItemGraphicEl=function(t){return this._graphicEls[t]},yA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},yA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new vA(e,this.hostModel)}if(t._storage=this._storage,Qs(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?ol:nl,t},yA.wrapMethod=function(t,e){var i=this[t];"function"==typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(C(arguments)))})},yA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],yA.CHANGABLE_METHODS=["filterSelf","selectRange"];var _A=function(t,e){return e=e||{},hl(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};xl.prototype.parse=function(t){return t},xl.prototype.getSetting=function(t){return this._setting[t]},xl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},xl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},xl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},xl.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},xl.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},xl.prototype.getExtent=function(){return this._extent.slice()},xl.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},xl.prototype.isBlank=function(){return this._isBlank},xl.prototype.setBlank=function(t){this._isBlank=t},xl.prototype.getLabel=null,ji(xl),$i(xl,{registerWhenExtend:!0}),_l.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&f(i,bl);return new _l({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var wA=_l.prototype;wA.getOrdinal=function(t){return wl(this).get(t)},wA.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!=typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=wl(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var bA=xl.prototype,SA=xl.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new _l({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),bA.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return bA.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(bA.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:B,niceExtent:B});SA.create=function(){return new SA};var MA=Go,IA=Go,TA=xl.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),TA.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Ml(t)},getTicks:function(){return Al(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getLabel:function(t,e){if(null==t)return"";var i=e&&e.precision;return null==i?i=Ho(t)||0:"auto"===i&&(i=this._intervalPrecision),t=IA(t,i,!0),ta(t)},niceTicks:function(t,e,i){t=t||5;var n=this._extent,o=n[1]-n[0];if(isFinite(o)){o<0&&(o=-o,n.reverse());var a=Sl(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax?e[0]-=i/2:(e[1]+=i/2,e[0]-=i/2)}else e[1]=1;var n=e[1]-e[0];isFinite(n)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var o=this._interval;t.fixMin||(e[0]=IA(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=IA(Math.ceil(e[1]/o)*o))}});TA.create=function(){return new TA};var AA="__ec_stack_",DA="undefined"!=typeof Float32Array?Float32Array:Array,CA={seriesType:"bar",plan:$I(),reset:function(t){if(Rl(t)&&zl(t)){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),o=i.getOtherAxis(n),a=e.mapDimension(o.dim),r=e.mapDimension(n.dim),s=o.isHorizontal(),l=s?0:1,u=Ol(Pl([t]),n,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var n,h=new DA(2*t.count),c=[],d=[],f=0;null!=(n=t.next());)d[l]=e.get(a,n),d[1-l]=e.get(r,n),c=i.dataToPoint(d,null,c),h[f++]=c[0],h[f++]=c[1];e.setLayout({largePoints:h,barWidth:u,valueAxisStart:Bl(0,o),valueAxisHorizontal:s})}}}}},LA=TA.prototype,kA=Math.ceil,PA=Math.floor,NA=function(t,e,i,n){for(;i>>1;t[o][1]i&&(a=i);var r=EA.length,s=NA(EA,a,0,r),l=EA[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=$o(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(kA((n[0]-h)/u)*u+h),Math.round(PA((n[1]-h)/u)*u+h)];Tl(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Yo(t)}});d(["contain","normalize"],function(t){OA.prototype[t]=function(e){return LA[t].call(this,this.parse(e))}});var EA=[["hh:mm:ss",1e3],["hh:mm:ss",5e3],["hh:mm:ss",1e4],["hh:mm:ss",15e3],["hh:mm:ss",3e4],["hh:mm\nMM-dd",6e4],["hh:mm\nMM-dd",3e5],["hh:mm\nMM-dd",6e5],["hh:mm\nMM-dd",9e5],["hh:mm\nMM-dd",18e5],["hh:mm\nMM-dd",36e5],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",216e5],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",864e5],["MM-dd\nyyyy",1728e5],["MM-dd\nyyyy",2592e5],["MM-dd\nyyyy",3456e5],["MM-dd\nyyyy",432e6],["MM-dd\nyyyy",5184e5],["week",6048e5],["MM-dd\nyyyy",864e6],["week",12096e5],["week",18144e5],["month",26784e5],["week",36288e5],["month",53568e5],["week",6048e6],["quarter",8208e6],["month",107136e5],["month",13392e6],["half-year",16416e6],["month",214272e5],["month",26784e6],["year",32832e6]];OA.create=function(t){return new OA({useUTC:t.ecModel.get("useUTC")})};var RA=xl.prototype,zA=TA.prototype,BA=Ho,VA=Go,GA=Math.floor,FA=Math.ceil,WA=Math.pow,HA=Math.log,ZA=xl.extend({type:"log",base:10,$constructor:function(){xl.apply(this,arguments),this._originalScale=new TA},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return f(zA.getTicks.call(this),function(n){var o=Go(WA(this.base,n));return o=n===e[0]&&t.__fixMin?Vl(o,i[0]):o,o=n===e[1]&&t.__fixMax?Vl(o,i[1]):o},this)},getLabel:zA.getLabel,scale:function(t){return t=RA.scale.call(this,t),WA(this.base,t)},setExtent:function(t,e){var i=this.base;t=HA(t)/HA(i),e=HA(e)/HA(i),zA.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=RA.getExtent.call(this);e[0]=WA(t,e[0]),e[1]=WA(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Vl(e[0],n[0])),i.__fixMax&&(e[1]=Vl(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=HA(t[0])/HA(e),t[1]=HA(t[1])/HA(e),RA.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=qo(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[Go(FA(e[0]/n)*n),Go(GA(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){zA.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){ZA.prototype[t]=function(e){return e=HA(e)/HA(this.base),RA[t].call(this,e)}}),ZA.create=function(){return new ZA};var UA={getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getMax:function(t){var e=this.option,i=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=i&&"dataMax"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:B,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},XA=Un({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n+a),t.lineTo(i-o,n+a),t.closePath()}}),jA=Un({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n),t.lineTo(i,n+a),t.lineTo(i-o,n),t.closePath()}}),YA=Un({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,a=Math.max(o,e.height),r=o/2,s=r*r/(a-r),l=n-a+r+s,u=Math.asin(s/r),h=Math.cos(u)*r,c=Math.sin(u),d=Math.cos(u),f=.6*r,p=.7*r;t.moveTo(i-h,l+s),t.arc(i,l,r,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(i+h-c*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-h+c*f,l+s+d*f,i-h,l+s),t.closePath()}}),qA=Un({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,a=e.y,r=n/3*2;t.moveTo(o,a),t.lineTo(o+r,a+i),t.lineTo(o,a+i/4*3),t.lineTo(o-r,a+i),t.lineTo(o,a),t.closePath()}}),KA={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var a=Math.min(i,n);o.x=t,o.y=e,o.width=a,o.height=a},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},$A={};d({line:_M,rect:yM,roundRect:yM,square:yM,circle:sM,diamond:jA,pin:YA,arrow:qA,triangle:XA},function(t,e){$A[e]=new t});var JA=Un({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style;"pin"===this.shape.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,o=$A[n];"none"!==e.symbolType&&(o||(o=$A[n="rect"]),KA[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),QA={isDimensionStacked:pl,enableDataStack:fl,getStackedDimension:gl},tD=(Object.freeze||Object)({createList:function(t){return ml(t.getSource(),t)},getLayoutRect:ca,dataStack:QA,createScale:function(t,e){var i=e;No.isInstance(e)||h(i=new No(e),UA);var n=Hl(i);return n.setExtent(t[0],t[1]),Wl(n,i),n},mixinAxisModelCommonMethods:function(t){h(t,UA)},completeDimensions:hl,createDimensions:_A,createSymbol:Jl}),eD=1e-8;eu.prototype={constructor:eu,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],a=[],r=this.geometries,s=0;s0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&d(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var a=new eu(e.name,o,e.cp);return a.properties=e,a})},nD=Bi(),oD=[0,1],aD=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};aD.prototype={constructor:aD,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Zo(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,n=this.scale;return t=n.normalize(t),this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count()),Bo(t,oD,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count());var o=Bo(t,i,oD,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=au(this,e),n=f(i.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return xu(this,n,i.tickCategoryInterval,o,t.clamp),n},getViewLabels:function(){return ou(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return pu(this)}};var rD=iD,sD={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){sD[t]=aw[t]});var lD={};d(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){lD[t]=zM[t]}),YI.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});var uD=wu.prototype,hD=wu.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};uD._createSymbol=function(t,e,i,n,o){this.removeAll();var a=Jl(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:bu(n)}),a.drift=Su,this._symbolType=t,this.add(a)},uD.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},uD.getSymbolPath=function(){return this.childAt(0)},uD.getScale=function(){return this.childAt(0).scale},uD.highlight=function(){this.childAt(0).trigger("emphasis")},uD.downplay=function(){this.childAt(0).trigger("normal")},uD.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},uD.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},uD.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=hD(t,e),r=n!==this._symbolType;if(r){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(n,t,e,a,s)}else(l=this.childAt(0)).silent=!1,Io(l,{scale:bu(a)},o,e);if(this._updateCommon(t,e,a,i),r){var l=this.childAt(0),u=i&&i.fadeIn,h={scale:l.scale.slice()};u&&(h.style={opacity:l.style.opacity}),l.scale=[0,0],u&&(l.style.opacity=0),To(l,h,o,e)}this._seriesModel=o};var cD=["itemStyle"],dD=["emphasis","itemStyle"],fD=["label"],pD=["emphasis","label"];uD._updateCommon=function(t,e,i,n){var o=this.childAt(0),r=t.hostModel,s=t.getItemVisual(e,"color");"image"!==o.type&&o.useStyle({strokeNoScale:!0});var l=n&&n.itemStyle,u=n&&n.hoverItemStyle,h=n&&n.symbolRotate,c=n&&n.symbolOffset,d=n&&n.labelModel,f=n&&n.hoverLabelModel,p=n&&n.hoverAnimation,g=n&&n.cursorStyle;if(!n||t.hasItemOption){var m=n&&n.itemModel?n.itemModel:t.getItemModel(e);l=m.getModel(cD).getItemStyle(["color"]),u=m.getModel(dD).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(fD),f=m.getModel(pD),p=m.getShallow("hoverAnimation"),g=m.getShallow("cursor")}else u=a({},u);var v=o.style;o.attr("rotation",(h||0)*Math.PI/180||0),c&&o.attr("position",[Vo(c[0],i[0]),Vo(c[1],i[1])]),g&&o.attr("cursor",g),o.setColor(s,n&&n.symbolInnerColor),o.setStyle(l);var y=t.getItemVisual(e,"opacity");null!=y&&(v.opacity=y);var x=t.getItemVisual(e,"liftZ"),_=o.__z2Origin;null!=x?null==_&&(o.__z2Origin=o.z2,o.z2+=x):null!=_&&(o.z2=_,o.__z2Origin=null);var w=n&&n.useNameLabel;go(v,u,d,f,{labelFetcher:r,labelDataIndex:e,defaultText:function(e,i){return w?t.getName(e):_u(t,e)},isRectText:!0,autoColor:s}),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=u,fo(o),o.__symbolOriginalScale=bu(i),p&&r.isAnimationEnabled()&&o.on("mouseover",Mu).on("mouseout",Iu).on("emphasis",Tu).on("normal",Au)},uD.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,!(e&&e.keepLabel)&&(i.style.text=null),Io(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(wu,tb);var gD=Du.prototype;gD.updateData=function(t,e){e=Lu(e);var i=this.group,n=t.hostModel,o=this._data,a=this._symbolCtor,r=ku(t);o||i.removeAll(),t.diff(o).add(function(n){var o=t.getItemLayout(n);if(Cu(t,o,n,e)){var s=new a(t,n,r);s.attr("position",o),t.setItemGraphicEl(n,s),i.add(s)}}).update(function(s,l){var u=o.getItemGraphicEl(l),h=t.getItemLayout(s);Cu(t,h,s,e)?(u?(u.updateData(t,s,r),Io(u,{position:h},n)):(u=new a(t,s)).attr("position",h),i.add(u),t.setItemGraphicEl(s,u)):i.remove(u)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},gD.isPersistent=function(){return!0},gD.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},gD.incrementalPrepareUpdate=function(t){this._seriesScope=ku(t),this._data=null,this.group.removeAll()},gD.incrementalUpdate=function(t,e,i){i=Lu(i);for(var n=t.start;n0&&Ru(i[o-1]);o--);for(;n0&&Ru(i[a-1]);a--);for(;o=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;(r=new wu(o,a)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else Ar.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=zi(o,n);if(null!=a&&a>=0){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else Ar.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new MD({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new ID({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_updateAnimation:function(t,e,i,n,o,a){var r=this._polyline,s=this._polygon,l=t.hostModel,u=mD(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;o&&(h=Yu(u.current,i,o),c=Yu(u.stackedOnCurrent,i,o),d=Yu(u.next,i,o),f=Yu(u.stackedOnNext,i,o)),r.shape.__points=u.current,r.shape.points=h,Io(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),Io(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;me&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;ie[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},u(kD,aD);var PD={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},ND={};ND.categoryAxis=n({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},PD),ND.valueAxis=n({boundaryGap:[0,0],splitNumber:5},PD),ND.timeAxis=r({scale:!0,min:"dataMin",max:"dataMax"},ND.valueAxis),ND.logAxis=r({scale:!0,logBase:10},ND.valueAxis);var OD=["value","category","time","log"],ED=function(t,e,i,a){d(OD,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,o){var a=this.layoutMode,s=a?ga(e):{};n(e,o.getTheme().get(r+"Axis")),n(e,this.getDefaultOption()),e.type=i(t,e),a&&pa(e,s,a)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=_l.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:o([{},ND[r+"Axis"],a],!0)})}),lI.registerSubTypeDefaulter(t+"Axis",v(i,t))},RD=lI.extend({type:"cartesian2dAxis",axis:null,init:function(){RD.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){RD.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){RD.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});n(RD.prototype,UA);var zD={offset:0};ED("x",RD,th,zD),ED("y",RD,th,zD),lI.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var BD=ih.prototype;BD.type="grid",BD.axisPointerEnabled=!0,BD.getRect=function(){return this._rect},BD.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),d(i.x,function(t){Wl(t.scale,t.model)}),d(i.y,function(t){Wl(t.scale,t.model)});var n={};d(i.x,function(t){nh(i,"y",t,n)}),d(i.y,function(t){nh(i,"x",t,n)}),this.resize(this.model,e)},BD.resize=function(t,e,i){function n(){d(a,function(t){var e=t.isHorizontal(),i=e?[0,o.width]:[0,o.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),ah(t,e?o.x:o.y)})}var o=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;n(),!i&&t.get("containLabel")&&(d(a,function(t){if(!t.model.get("axisLabel.inside")){var e=jl(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");o[i]-=e[i]+n,"top"===t.position?o.y+=e.height+n:"left"===t.position&&(o.x+=e.width+n)}}}),n())},BD.getAxis=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},BD.getAxes=function(){return this._axesList.slice()},BD.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}w(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,o=this._coordsList;nu[1]?-1:1,c=["start"===o?u[0]-h*l:"end"===o?u[1]+h*l:(u[0]+u[1])/2,ph(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*GD/180);var f;ph(o)?n=HD(t.rotation,null!=d?d:t.rotation,r):(n=uh(t,o,d||0,u),null!=(f=t.axisNameAvailableWidth)&&(f=Math.abs(f/Math.sin(n.rotation)),!isFinite(f)&&(f=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},m=g.ellipsis,v=T(t.nameTruncateMaxWidth,g.maxWidth,f),y=null!=m&&null!=v?tI(i,v,p,m,{minChar:2,placeholder:g.placeholder}):i,x=e.get("tooltip",!0),_=e.mainType,w={componentType:_,name:i,$vars:["name"]};w[_+"Index"]=e.componentIndex;var b=new rM({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:hh(e),z2:1,tooltip:x&&x.show?a({content:i,formatter:function(){return i},formatterParams:w},x):null});mo(b.style,s,{text:y,textFont:p,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:n.textAlign,textVerticalAlign:n.textVerticalAlign}),e.get("triggerEvent")&&(b.eventData=lh(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},HD=FD.innerTextLayout=function(t,e,i){var n,o,a=Xo(e-t);return jo(a)?(o=i>0?"top":"bottom",n="center"):jo(a-GD)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=a>0&&a0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:o}},ZD=d,UD=v,XD=Ws({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&Sh(t),XD.superApply(this,"render",arguments),Dh(this,t,0,i,0,!0)},updateAxisPointer:function(t,e,i,n,o){Dh(this,t,0,i,0,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),XD.superApply(this,"remove",arguments)},dispose:function(t,e){Ch(this,e),XD.superApply(this,"dispose",arguments)}}),jD=[];XD.registerAxisPointerClass=function(t,e){jD[t]=e},XD.getAxisPointerClass=function(t){return t&&jD[t]};var YD=["axisLine","axisTickLabel","axisName"],qD=["splitArea","splitLine"],KD=XD.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,i,n){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new tb,this.group.add(this._axisGroup),t.get("show")){var a=t.getCoordSysModel(),r=Lh(a,t),s=new FD(t,r);d(YD,s.add,s),this._axisGroup.add(s.getGroup()),d(qD,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Lo(o,this._axisGroup,t),KD.superCall(this,"render",t,e,i,n)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),a=o.get("color");a=y(a)?a:[a];for(var s=e.coordinateSystem.getRect(),l=i.isHorizontal(),u=0,h=i.getTicksCoords({tickModel:n}),c=[],d=[],f=o.getLineStyle(),p=0;p1){var c;"string"==typeof o?c=DD[o]:"function"==typeof o&&(c=o),c&&t.setData(n.downSample(n.mapDimension(s.dim),1/h,c,CD))}}}}}("line"));var $D=YI.extend({type:"series.__base_bar__",getInitialData:function(t,e){return ml(this.getSource(),this)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(e.clampData(t)),n=this.getData(),o=n.getLayout("offset"),a=n.getLayout("size");return i[e.getBaseAxis().isHorizontal()?0:1]+=o+a/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod",itemStyle:{},emphasis:{}}});$D.extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect",getProgressive:function(){return!!this.get("large")&&this.get("progressive")},getProgressiveThreshold:function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t}});var JD=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),QD={getBarItemStyle:function(t){var e=JD(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},tC=["itemStyle","barBorderWidth"];a(No.prototype,QD),Zs({type:"bar",render:function(t,e,i){this._updateDrawMode(t);var n=t.get("coordinateSystem");return"cartesian2d"!==n&&"polar"!==n||(this._isLargeDraw?this._renderLarge(t,e,i):this._renderNormal(t,e,i)),this.group},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t,e,i){var n,o=this.group,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.getBaseAxis();"cartesian2d"===s.type?n=l.isHorizontal():"polar"===s.type&&(n="angle"===l.dim);var u=t.isAnimationEnabled()?t:null;a.diff(r).add(function(e){if(a.hasValue(e)){var i=a.getItemModel(e),r=iC[s.type](a,e,i),l=eC[s.type](a,e,i,r,n,u);a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,i,r,t,n,"polar"===s.type)}}).update(function(e,i){var l=r.getItemGraphicEl(i);if(a.hasValue(e)){var h=a.getItemModel(e),c=iC[s.type](a,e,h);l?Io(l,{shape:c},u,e):l=eC[s.type](a,e,h,c,n,u,!0),a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,h,c,t,n,"polar"===s.type)}else o.remove(l)}).remove(function(t){var e=r.getItemGraphicEl(t);"cartesian2d"===s.type?e&&Nh(t,u,e):e&&Oh(t,u,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),zh(t,this.group)},_incrementalRenderLarge:function(t,e){zh(e,this.group,!0)},dispose:B,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,i=this._data;t&&t.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(e){"sector"===e.type?Oh(e.dataIndex,t,e):Nh(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var eC={cartesian2d:function(t,e,i,n,o,r,s){var l=new yM({shape:a({},n)});if(r){var u=l.shape,h=o?"height":"width",c={};u[h]=0,c[h]=n[h],zM[s?"updateProps":"initProps"](l,{shape:c},r,e)}return l},polar:function(t,e,i,n,o,a,s){var l=n.startAngle0?1:-1,r=n.height>0?1:-1;return{x:n.x+a*o/2,y:n.y+r*o/2,width:n.width-a*o,height:n.height-r*o}},polar:function(t,e,i){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle}}},nC=Pn.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,o=this.__valueIdx,a=0;a0&&"scale"!==u){var d=o.getItemLayout(0),f=Math.max(i.getWidth(),i.getHeight())/2,p=m(r.removeClipPath,r);r.setClipPath(this._createClipPath(d.cx,d.cy,f,d.startAngle,d.clockwise,p,t))}else r.removeClipPath();this._data=o}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r){var s=new hM({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return To(s,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),s},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var lC=function(t,e){d(e,function(e){e.update="updateView",Es(e,function(i,n){var o={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name,i.dataIndex);var n=t.getData();n.each(function(e){var i=n.getName(e);o[i]=t.isSelected(i)||!1})}),{name:i.name,selected:o}})})},uC=function(t){return{getTargetSeries:function(e){var i={},n=R();return e.eachSeriesByType(t,function(t){t.__paletteScope=i,n.set(t.uid,t)}),n},reset:function(t,e){var i=t.getRawData(),n={},o=t.getData();o.each(function(t){var e=o.getRawIndex(t);n[e]=t}),i.each(function(e){var a=n[e],r=null!=a&&o.getItemVisual(a,"color",!0);if(r)i.setItemVisual(e,"color",r);else{var s=i.getItemModel(e).get("itemStyle.color")||t.getColorFromPalette(i.getName(e)||e+"",t.__paletteScope,i.count());i.setItemVisual(e,"color",s),null!=a&&o.setItemVisual(a,"color",s)}})}}},hC=function(t,e,i,n){var o,a,r=t.getData(),s=[],l=!1;r.each(function(i){var n,u,h,c,d=r.getItemLayout(i),f=r.getItemModel(i),p=f.getModel("label"),g=p.get("position")||f.get("emphasis.label.position"),m=f.getModel("labelLine"),v=m.get("length"),y=m.get("length2"),x=(d.startAngle+d.endAngle)/2,_=Math.cos(x),w=Math.sin(x);o=d.cx,a=d.cy;var b="inside"===g||"inner"===g;if("center"===g)n=d.cx,u=d.cy,c="center";else{var S=(b?(d.r+d.r0)/2*_:d.r*_)+o,M=(b?(d.r+d.r0)/2*w:d.r*w)+a;if(n=S+3*_,u=M+3*w,!b){var I=S+_*(v+e-d.r),T=M+w*(v+e-d.r),A=I+(_<0?-1:1)*y,D=T;n=A+(_<0?-5:5),u=D,h=[[S,M],[I,T],[A,D]]}c=b?"center":_>0?"left":"right"}var C=p.getFont(),L=p.get("rotate")?_<0?-x+Math.PI:-x:0,k=ke(t.getFormattedLabel(i,"normal")||r.getName(i),C,c,"top");l=!!L,d.label={x:n,y:u,position:g,height:k.height,len:v,len2:y,linePoints:h,textAlign:c,verticalAlign:"middle",rotation:L,inside:b},b||s.push(d.label)}),!l&&t.get("avoidLabelOverlap")&&Hh(s,o,a,e,i,n)},cC=2*Math.PI,dC=Math.PI/180,fC=function(t){return{seriesType:t,reset:function(t,e){var i=e.findComponents({mainType:"legend"});if(i&&i.length){var n=t.getData();n.filterSelf(function(t){for(var e=n.getName(t),o=0;o=0;s--){var l=2*s,u=n[l]-a/2,h=n[l+1]-r/2;if(t>=u&&e>=h&&t<=u+a&&e<=h+r)return s}return-1}}),gC=Uh.prototype;gC.isPersistent=function(){return!this._incremental},gC.updateData=function(t){this.group.removeAll();var e=new pC({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},gC.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var i=2*(t.endIndex-t.startIndex),n=4*t.startIndex*2;e=new Float32Array(e.buffer,n,i)}t.setShape("points",e)})}},gC.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},gC.incrementalUpdate=function(t,e){var i;this._incremental?(i=new pC,this._incremental.addDisplayable(i,!0)):((i=new pC({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(i,e,!!this._incremental)},gC._setCommon=function(t,e,i){var n=e.hostModel,o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.symbolProxy=Jl(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var a=t.shape.size[0]<4;t.useStyle(n.getModel("itemStyle").getItemStyle(a?["color","shadowBlur","shadowColor"]:["color"]));var r=e.getVisual("color");r&&t.setColor(r),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>=0&&(t.dataIndex=i+(t.startIndex||0))}))},gC.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},gC._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Zs({type:"scatter",render:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).updateData(n),this._finished=!0},incrementalPrepareRender:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).incrementalPrepareUpdate(n),this._finished=!1},incrementalRender:function(t,e,i){this._symbolDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData();if(this.group.dirty(),!this._finished||n.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var o=AD().reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_updateSymbolDraw:function(t,e){var i=this._symbolDraw,n=e.pipelineContext.large;return i&&n===this._isLargeDraw||(i&&i.remove(),i=this._symbolDraw=n?new Uh:new Du,this._isLargeDraw=n,this.group.removeAll()),this.group.add(i.group),i},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}}),Bs(TD("scatter","circle")),zs(AD("scatter")),u(Xh,aD),jh.prototype.getIndicatorAxes=function(){return this._indicatorAxes},jh.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},jh.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},jh.prototype.pointToData=function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=Math.sqrt(e*e+i*i);e/=n,i/=n;for(var o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;ln[0]&&isFinite(c)&&isFinite(n[0]))}else{r.getTicks().length-1>a&&(u=i(u));var d=Math.round((n[0]+n[1])/2/u)*u,f=Math.round(a/2);r.setExtent(Go(d-f*u),Go(d+(a-f)*u)),r.setInterval(u)}})},jh.dimensions=[],jh.create=function(t,e){var i=[];return t.eachComponent("radar",function(n){var o=new jh(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},Fa.register("radar",jh);var mC=ND.valueAxis,vC=(Fs({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),o=this.get("scale"),s=this.get("axisLine"),l=this.get("axisTick"),u=this.get("axisLabel"),h=this.get("name"),c=this.get("name.show"),d=this.get("name.formatter"),p=this.get("nameGap"),g=this.get("triggerEvent"),m=f(this.get("indicator")||[],function(f){null!=f.max&&f.max>0&&!f.min?f.min=0:null!=f.min&&f.min<0&&!f.max&&(f.max=0);var m=h;if(null!=f.color&&(m=r({color:f.color},h)),f=n(i(f),{boundaryGap:t,splitNumber:e,scale:o,axisLine:s,axisTick:l,axisLabel:u,name:f.text,nameLocation:"end",nameGap:p,nameTextStyle:m,triggerEvent:g},!1),c||(f.name=""),"string"==typeof d){var v=f.name;f.name=d.replace("{value}",null!=v?v:"")}else"function"==typeof d&&(f.name=d(f.name,f));var y=a(new No(f,null,this.ecModel),UA);return y.mainType="radar",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return m}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:n({lineStyle:{color:"#bbb"}},mC.axisLine),axisLabel:Yh(mC.axisLabel,!1),axisTick:Yh(mC.axisTick,!1),splitLine:Yh(mC.splitLine,!0),splitArea:Yh(mC.splitArea,!0),indicator:[]}}),["axisLine","axisTickLabel","axisName"]);Ws({type:"radar",render:function(t,e,i){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem;d(f(e.getIndicatorAxes(),function(t){return new FD(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){d(vC,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){function e(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}var i=t.coordinateSystem,n=i.getIndicatorAxes();if(n.length){var o=t.get("shape"),a=t.getModel("splitLine"),s=t.getModel("splitArea"),l=a.getModel("lineStyle"),u=s.getModel("areaStyle"),h=a.get("show"),c=s.get("show"),p=l.get("color"),g=u.get("color");p=y(p)?p:[p],g=y(g)?g:[g];var m=[],v=[];if("circle"===o)for(var x=n[0].getTicksCoords(),_=i.cx,w=i.cy,b=0;b"+f(i,function(i,n){var o=e.get(e.mapDimension(i.dim),t);return ia(i.name+" : "+o)}).join("
")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Zs({type:"radar",render:function(t,e,n){function o(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=qh(t.getItemVisual(e,"symbolSize")),a=Jl(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function a(e,i,n,a,r,s){n.removeAll();for(var l=0;l"+ia(n+" : "+i)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),i=this.coordinateSystem,n=i.getRegion(e);return n&&i.dataToPoint(n.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}}}}),aC);var EC="\0_ec_interaction_mutex";Es({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(oc,fw);var RC={axisPointer:1,tooltip:1,brush:1};xc.prototype={constructor:xc,draw:function(t,e,i,n,o){var a="geo"===t.mainType,r=t.getData&&t.getData();a&&e.eachComponent({mainType:"series",subType:"map"},function(e){r||e.getHostGeoModel()!==t||(r=e.getData())});var s=t.coordinateSystem;this._updateBackground(s);var l=this._regionsGroup,u=this.group,h=s.scale,c={position:s.position,scale:h};!l.childAt(0)||o?u.attr(c):Io(u,c,t),l.removeAll();var f=["itemStyle"],p=["emphasis","itemStyle"],g=["label"],m=["emphasis","label"],v=R();d(s.regions,function(e){var i=v.get(e.name)||v.set(e.name,new tb),n=new MM({shape:{paths:[]}});i.add(n);var o,s=(C=t.getRegionModel(e.name)||t).getModel(f),u=C.getModel(p),c=mc(s),y=mc(u),x=C.getModel(g),_=C.getModel(m);if(r){o=r.indexOfName(e.name);var w=r.getItemVisual(o,"color",!0);w&&(c.fill=w)}d(e.geometries,function(t){if("polygon"===t.type){n.shape.paths.push(new pM({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)n.shape.paths.push(new pM({shape:{points:t.interiors[e]}}))}}),n.setStyle(c),n.style.strokeNoScale=!0,n.culling=!0;var b=x.get("show"),S=_.get("show"),M=r&&isNaN(r.get(r.mapDimension("value"),o)),I=r&&r.getItemLayout(o);if(a||M&&(b||S)||I&&I.showLabel){var T,A=a?e.name:o;(!r||o>=0)&&(T=t);var D=new rM({position:e.center.slice(),scale:[1/h[0],1/h[1]],z2:10,silent:!0});go(D.style,D.hoverStyle={},x,_,{labelFetcher:T,labelDataIndex:A,defaultText:e.name,useInsideStyle:!1},{textAlign:"center",textVerticalAlign:"middle"}),i.add(D)}if(r)r.setItemGraphicEl(o,i);else{var C=t.getRegionModel(e.name);n.eventData={componentType:"geo",componentIndex:t.componentIndex,geoIndex:t.componentIndex,name:e.name,region:C&&C.option||{}}}(i.__regions||(i.__regions=[])).push(e),fo(i,y,{hoverSilentOnTouch:!!t.get("selectedMode")}),l.add(i)}),this._updateController(t,e,i),vc(this,t,l,i,n),yc(t,l)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&OC.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&d(OC.makeGraphic(e,this.uid),function(t){this._backgroundGroup.add(t)},this),this._mapName=e},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:l};return e[l+"Id"]=t.id,e}var o=t.coordinateSystem,r=this._controller,s=this._controllerHost;s.zoomLimit=t.get("scaleLimit"),s.zoom=o.getZoom(),r.enable(t.get("roam")||!1);var l=t.mainType;r.off("pan").on("pan",function(t){this._mouseDownFlag=!1,fc(s,t.dx,t.dy),i.dispatchAction(a(n(),{dx:t.dx,dy:t.dy}))},this),r.off("zoom").on("zoom",function(t){if(this._mouseDownFlag=!1,pc(s,t.scale,t.originX,t.originY),i.dispatchAction(a(n(),{zoom:t.scale,originX:t.originX,originY:t.originY})),this._updateGroup){var e=this.group.scale;this._regionsGroup.traverse(function(t){"text"===t.type&&t.attr("scale",[1/e[0],1/e[1]])})}},this),r.setPointerChecker(function(e,n,a){return o.getViewRectAfterRoam().contain(n,a)&&!gc(e,i,t)})}};var zC="__seriesMapHighDown",BC="__seriesMapCallKey";Zs({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new xc(i,!0);o.add(a.group),a.draw(t,e,i,this,n),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,e,i){var n=t.originalData,o=this.group;n.each(n.mapDimension("value"),function(e,i){if(!isNaN(e)){var r=n.getItemLayout(i);if(r&&r.point){var s=r.point,l=r.offset,u=new sM({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:8+(l?0:NM+1)});if(!l){var h=t.mainSeries.getData(),c=n.getName(i),d=h.indexOfName(c),f=n.getItemModel(i),p=f.getModel("label"),g=f.getModel("emphasis.label"),m=h.getItemGraphicEl(d),y=A(t.getFormattedLabel(d,"normal"),c),x=A(t.getFormattedLabel(d,"emphasis"),y),_=m[zC],w=Math.random();if(!_){_=m[zC]={};var b=v(_c,!0),S=v(_c,!1);m.on("mouseover",b).on("mouseout",S).on("emphasis",b).on("normal",S)}m[BC]=w,a(_,{recordVersion:w,circle:u,labelModel:p,hoverLabelModel:g,emphasisText:x,normalText:y}),wc(_,!1)}o.add(u)}}})}}),Es({type:"geoRoam",event:"geoRoam",update:"updateTransform"},function(t,e){var i=t.componentType||"series";e.eachComponent({mainType:i,query:t},function(e){var n=e.coordinateSystem;if("geo"===n.type){var o=bc(n,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(o.center),e.setZoom&&e.setZoom(o.zoom),"series"===i&&d(e.seriesGroup,function(t){t.setCenter(o.center),t.setZoom(o.zoom)})}})});var VC=Q;h(Sc,Tw),Mc.prototype={constructor:Mc,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new de(t,e,i,n),this._rect},getBoundingRect:function(){return this._rect},setViewRect:function(t,e,i,n){this.transformTo(t,e,i,n),this._viewRect=new de(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._rawTransformable;a.transform=o.calculateTransform(new de(t,e,i,n)),a.decomposeTransform(),this._updateTransform()},setCenter:function(t){t&&(this._center=t,this._updateCenterAndZoom())},setZoom:function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},getDefaultCenter:function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=Q([],n,t),i=Q([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransformable,e=this._rawTransformable;e.parent=t,t.updateTransform(),e.updateTransform(),wt(this.transform||(this.transform=[]),e.transform||xt()),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],Tt(this.invTransform,this.transform),this.decomposeTransform()},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},dataToPoint:function(t,e,i){var n=e?this._rawTransform:this.transform;return i=i||[],n?VC(i,t,n):G(i,t)},pointToData:function(t){var e=this.invTransform;return e?VC([],t,e):[t[0],t[1]]},convertToPixel:v(Ic,"dataToPoint"),convertFromPixel:v(Ic,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},h(Mc,Tw),Tc.prototype={constructor:Tc,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;ie&&(e=n.height)}this.height=e+1},getNodeById:function(t){if(this.getId()===t)return this;for(var e=0,i=this.children,n=i.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this.hostTree.data.getItemLayout(this.dataIndex)},getModel:function(t){if(!(this.dataIndex<0)){var e,i=this.hostTree,n=i.data.getItemModel(this.dataIndex),o=this.getLevelModel();return o||0!==this.children.length&&(0===this.children.length||!1!==this.isExpand)||(e=this.getLeavesModel()),n.getModel(t,(o||e||i.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},getLeavesModel:function(){return this.hostTree.leavesModel},setVisual:function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this.hostTree.data.getItemVisual(this.dataIndex,t,e)},getRawIndex:function(){return this.hostTree.data.getRawIndex(this.dataIndex)},getId:function(){return this.hostTree.data.getId(this.dataIndex)},isAncestorOf:function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},isDescendantOf:function(t){return t!==this&&t.isAncestorOf(this)}},Vc.prototype={constructor:Vc,type:"tree",eachNode:function(t,e,i){this.root.eachNode(t,e,i)},getNodeByDataIndex:function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},getNodeByName:function(t){return this.root.getNodeByName(t)},update:function(){for(var t=this.data,e=this._nodes,i=0,n=e.length;ia&&(a=t.depth)});var r=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:a;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=r}),o.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),o=n.getValue(),a=n.name;n&&n!==i;)a=n.parentNode.name+"."+a,n=n.parentNode;return ia(a+(isNaN(o)||null==o?"":" : "+o))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}}),Zs({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new tb,this._controller=new oc(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(t,e,i,n){var o=t.getData(),a=t.layoutInfo,r=this._mainGroup,s=t.get("layout");"radial"===s?r.attr("position",[a.x+a.width/2,a.y+a.height/2]):r.attr("position",[a.x,a.y]),this._updateViewCoordSys(t),this._updateController(t,e,i);var l=this._data,u={expandAndCollapse:t.get("expandAndCollapse"),layout:s,orient:t.getOrient(),curvature:t.get("lineStyle.curveness"),symbolRotate:t.get("symbolRotate"),symbolOffset:t.get("symbolOffset"),hoverAnimation:t.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};o.diff(l).add(function(e){td(o,e)&&id(o,e,null,r,t,u)}).update(function(e,i){var n=l.getItemGraphicEl(i);td(o,e)?id(o,e,n,r,t,u):n&&nd(l,i,n,r,t,u)}).remove(function(e){var i=l.getItemGraphicEl(e);i&&nd(l,e,i,r,t,u)}).execute(),this._nodeScaleRatio=t.get("nodeScaleRatio"),this._updateNodeAndLinkScale(t),!0===u.expandAndCollapse&&o.eachItemGraphicEl(function(e,n){e.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:t.id,dataIndex:n})})}),this._data=o},_updateViewCoordSys:function(t){var e=t.getData(),i=[];e.each(function(t){var n=e.getItemLayout(t);!n||isNaN(n.x)||isNaN(n.y)||i.push([+n.x,+n.y])});var n=[],o=[];fn(i,n,o),o[0]-n[0]==0&&(o[0]+=1,n[0]-=1),o[1]-n[1]==0&&(o[1]+=1,n[1]-=1);var a=t.coordinateSystem=new Mc;a.zoomLimit=t.get("scaleLimit"),a.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1]),a.setCenter(t.get("center")),a.setZoom(t.get("zoom")),this.group.attr({position:a.position,scale:a.scale}),this._viewCoordSys=a},_updateController:function(t,e,i){var n=this._controller,o=this._controllerHost,a=this.group;n.setPointerChecker(function(e,n,o){var r=a.getBoundingRect();return r.applyTransform(a.transform),r.contain(n,o)&&!gc(e,i,t)}),n.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),n.off("pan").off("zoom").on("pan",function(e){fc(o,e.dx,e.dy),i.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})},this).on("zoom",function(e){pc(o,e.scale,e.originX,e.originY),i.dispatchAction({seriesId:t.id,type:"treeRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),this._updateNodeAndLinkScale(t)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),Es({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=t.dataIndex,n=e.getData().tree.getNodeByDataIndex(i);n.isExpand=!n.isExpand})}),Es({type:"treeRoam",event:"treeRoam",update:"none"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=bc(e.coordinateSystem,t);e.setCenter&&e.setCenter(i.center),e.setZoom&&e.setZoom(i.zoom)})});Bs(TD("tree","circle")),zs(function(t,e){t.eachSeriesByType("tree",function(t){sd(t,e)})}),YI.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/0,left:"center",top:"middle",right:null,bottom:null,width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",borderColor:"rgba(255,255,255,0.7)",borderWidth:1,shadowColor:"rgba(150,150,150,1)",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:"#fff"}},emphasis:{textStyle:{}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",ellipsis:!0},upperLabel:{show:!1,position:[0,"50%"],height:20,color:"#fff",ellipsis:!0,verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],color:"#fff",ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i={name:t.name,children:t.data};dd(i);var n=t.levels||[];n=t.levels=fd(n,e);var o={};return o.levels=n,Vc.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=ta(y(i)?i[0]:i);return ia(e.getName(t)+": "+n)},getDataParams:function(t){var e=YI.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=cd(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},a(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=R(),this._idIndexMapCount=0);var i=e.get(t);return null==i&&e.set(t,i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var UC=5;pd.prototype={constructor:pd,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),da(a,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,o){for(var a=0,s=e.emptyItemWidth,l=t.get("breadcrumb.height"),u=ha(e.pos,e.box),h=e.totalWidth,c=e.renderList,d=c.length-1;d>=0;d--){var f=c[d],p=f.node,g=f.width,m=f.text;h>u.width&&(h-=g-s,g=s,m=null);var y=new pM({shape:{points:gd(a,0,g,l,d===c.length-1,0===d)},style:r(i.getItemStyle(),{lineJoin:"bevel",text:m,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:v(o,p)});this.group.add(y),md(y,t,p),a+=g+8}},remove:function(){this.group.removeAll()}};var XC=m,jC=tb,YC=yM,qC=d,KC=["label"],$C=["emphasis","label"],JC=["upperLabel"],QC=["emphasis","upperLabel"],tL=10,eL=1,iL=2,nL=Qb([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),oL=function(t){var e=nL(t);return e.stroke=e.fill=e.lineWidth=null,e};Zs({type:"treemap",init:function(t,e){this._containerGroup,this._storage={nodeGroup:[],background:[],content:[]},this._oldTree,this._breadcrumb,this._controller,this._state="ready"},render:function(t,e,i,n){if(!(l(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var o=ld(n,["treemapZoomToNode","treemapRootToNode"],t),a=n&&n.type,r=t.layoutInfo,s=!this._oldTree,u=this._storage,h="treemapRootToNode"===a&&o&&u?{rootNodeGroup:u.nodeGroup[o.node.getRawIndex()],direction:n.direction}:null,c=this._giveContainerGroup(r),d=this._doRender(c,t,h);s||a&&"treemapZoomToNode"!==a&&"treemapRootToNode"!==a?d.renderFinally():this._doAnimation(c,d,t,h),this._resetController(i),this._renderBreadcrumb(t,i,o)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new jC,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function n(t,e,i,o,a){function r(t){return t.getId()}function s(r,s){var l=null!=r?t[r]:null,u=null!=s?e[s]:null,c=h(l,u,i,a);c&&n(l&&l.viewChildren||[],u&&u.viewChildren||[],c,o,a+1)}o?(e=t,qC(t,function(t,e){!t.isRemoved()&&s(e,e)})):new Xs(e,t,r,r).add(s).update(s).remove(v(s,null)).execute()}var o=e.getData().tree,a=this._oldTree,r={nodeGroup:[],background:[],content:[]},s={nodeGroup:[],background:[],content:[]},l=this._storage,u=[],h=v(yd,e,s,l,i,r,u);n(o.root?[o.root]:[],a&&a.root?[a.root]:[],t,o===a||!a,0);var c=function(t){var e={nodeGroup:[],background:[],content:[]};return t&&qC(t,function(t,i){var n=e[i];qC(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}(l);return this._oldTree=o,this._storage=s,{lastsForAnimation:r,willDeleteEls:c,renderFinally:function(){qC(c,function(t){qC(t,function(t){t.parent&&t.parent.remove(t)})}),qC(u,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),r=i.get("animationEasing"),s=vd();qC(e.willDeleteEls,function(t,e){qC(t,function(t,i){if(!t.invisible){var a,l=t.parent;if(n&&"drillDown"===n.direction)a=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,h=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,h=l.__tmNodeHeight/2),a="nodeGroup"===e?{position:[u,h],style:{opacity:0}}:{shape:{x:u,y:h,width:0,height:0},style:{opacity:0}}}a&&s.add(t,a,o,r)}})}),qC(this._storage,function(t,i){qC(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=a({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,r))})},this),this._state="animating",s.done(XC(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new oc(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",XC(this._onPan,this)),e.on("zoom",XC(this._onZoom,this)));var i=new de(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,n){return i.contain(e,n)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t){if("animating"!==this._state&&(Math.abs(t.dx)>3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var i=e.getLayout();if(!i)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:i.x+t.dx,y:i.y+t.dy,width:i.width,height:i.height}})}},_onZoom:function(t){var e=t.originX,i=t.originY;if("animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new de(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=xt();St(s,s,[-e,-i]),It(s,s,[t.scale,t.scale]),St(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&window.open(a,r)}}}}},this)},_renderBreadcrumb:function(t,e,i){i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(i={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new pd(this.group))).render(t,e,i.node,XC(function(e){"animating"!==this._state&&(hd(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))},this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(t,e){var i;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var a=o.transformCoordToLocal(t,e),r=o.shape;if(!(r.x<=a[0]&&a[0]<=r.x+r.width&&r.y<=a[1]&&a[1]<=r.y+r.height))return!1;i={node:n,offsetX:a[0],offsetY:a[1]}}},this),i}});for(var aL=["treemapZoomToNode","treemapRender","treemapMove"],rL=0;rL=0&&t.call(e,i[o],o)},TL.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},TL.breadthFirstTraverse=function(t,e,i,n){if(Jd.isInstance(e)||(e=this._nodesMap[$d(e)]),e){for(var o="out"===i?"outEdges":"in"===i?"inEdges":"edges",a=0;a=0&&i.node2.dataIndex>=0});for(var o=0,a=n.length;o=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}};h(Jd,AL("hostGraph","data")),h(Qd,AL("hostGraph","edgeData")),IL.Node=Jd,IL.Edge=Qd,Yi(Jd),Yi(Qd);var DL=function(t,e,i,n,o){for(var a=new IL(n),r=0;r "+f)),h++)}var p,g=i.get("coordinateSystem");if("cartesian2d"===g||"polar"===g)p=ml(t,i);else{var m=Fa.get(g),v=m&&"view"!==m.type?m.dimensions||[]:[];l(v,"value")<0&&v.concat(["value"]);var y=_A(t,{coordDimensions:v});(p=new vA(y,i)).initData(t)}var x=new vA(["value"],i);return x.initData(u,s),o&&o(p,x),kc({mainData:p,struct:a,structAttr:"graph",datas:{node:p,edge:x},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a},CL=Hs({type:"series.graph",init:function(t){CL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){CL.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){CL.superApply(this,"mergeDefaultAndTheme",arguments),Ci(t,["edgeLabel"],["show"])},getInitialData:function(t,e){var i=t.edges||t.links||[],n=t.data||t.nodes||[],o=this;if(n&&i)return DL(n,i,this,!0,function(t,i){function n(t){return(t=this.parsePath(t))&&"label"===t[0]?r:t&&"emphasis"===t[0]&&"label"===t[1]?l:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var a=o.getModel("edgeLabel"),r=new No({label:a.option},a.parentModel,e),s=o.getModel("emphasis.edgeLabel"),l=new No({emphasis:{label:s.option}},s.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),t})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(t,e,i){if("edge"===i){var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),s=n.getName(a.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=ia(l.join(" > ")),o.value&&(l+=" : "+ia(o.value)),l}return CL.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=f(this.option.categories||[],function(t){return null!=t.value?t:a({value:0},t)}),e=new vA(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return CL.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle"},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{label:{show:!0}}}}),LL=_M.prototype,kL=bM.prototype,PL=Un({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){(tf(e)?LL:kL).buildPath(t,e)},pointAt:function(t){return tf(this.shape)?LL.pointAt.call(this,t):kL.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=tf(e)?[e.x2-e.x1,e.y2-e.y1]:kL.tangentAt.call(this,t);return q(i,i)}}),NL=["fromSymbol","toSymbol"],OL=rf.prototype;OL.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,a=this.parent;a;)a.scale&&(o/=a.scale[0]),a=a.parent;var r=t.childOfName("line");if(this.__dirty||r.__dirty){var s=r.shape.percent,l=r.pointAt(0),u=r.pointAt(s),h=U([],u,l);if(q(h,h),e&&(e.attr("position",l),c=r.tangentAt(0),e.attr("rotation",Math.PI/2-Math.atan2(c[1],c[0])),e.attr("scale",[o*s,o*s])),i){i.attr("position",u);var c=r.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(c[1],c[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var d,f,p,g=5*o;if("end"===n.__position)d=[h[0]*g+u[0],h[1]*g+u[1]],f=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var m=s/2,v=[(c=r.tangentAt(m))[1],-c[0]],y=r.pointAt(m);v[1]>0&&(v[0]=-v[0],v[1]=-v[1]),d=[y[0]+v[0]*g,y[1]+v[1]*g],f="center",p="bottom";var x=-Math.atan2(c[1],c[0]);u[0].8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||p,textAlign:n.__textAlign||f},position:d,scale:[o,o]})}}}},OL._createLine=function(t,e,i){var n=t.hostModel,o=of(t.getItemLayout(e));o.shape.percent=0,To(o,{shape:{percent:1}},n,e),this.add(o);var a=new rM({name:"label",lineLabelOriginalOpacity:1});this.add(a),d(NL,function(i){var n=nf(i,t,e);this.add(n),this[ef(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},OL.updateData=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=t.getItemLayout(e),r={shape:{}};af(r.shape,a),Io(o,r,n,e),d(NL,function(i){var n=t.getItemVisual(e,i),o=ef(i);if(this[o]!==n){this.remove(this.childOfName(i));var a=nf(i,t,e);this.add(a)}this[o]=n},this),this._updateCommonStl(t,e,i)},OL._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,s=i&&i.hoverLineStyle,l=i&&i.labelModel,u=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var h=t.getItemModel(e);a=h.getModel("lineStyle").getLineStyle(),s=h.getModel("emphasis.lineStyle").getLineStyle(),l=h.getModel("label"),u=h.getModel("emphasis.label")}var c=t.getItemVisual(e,"color"),f=D(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(r({strokeNoScale:!0,fill:"none",stroke:c,opacity:f},a)),o.hoverStyle=s,d(NL,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:f}))},this);var p,g,m=l.getShallow("show"),v=u.getShallow("show"),y=this.childOfName("label");if((m||v)&&(p=c||"#000",null==(g=n.getFormattedLabel(e,"normal",t.dataType)))){var x=n.getRawValue(e);g=null==x?t.getName(e):isFinite(x)?Go(x):x}var _=m?g:null,w=v?A(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(mo(y.style,l,{text:_},{autoColor:p}),y.__textAlign=b.textAlign,y.__verticalAlign=b.textVerticalAlign,y.__position=l.get("position")||"middle"),y.hoverStyle=null!=w?{text:w,textFill:u.getTextColor(!0),fontStyle:u.getShallow("fontStyle"),fontWeight:u.getShallow("fontWeight"),fontSize:u.getShallow("fontSize"),fontFamily:u.getShallow("fontFamily")}:{text:null},y.ignore=!m&&!v,fo(this)},OL.highlight=function(){this.trigger("emphasis")},OL.downplay=function(){this.trigger("normal")},OL.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},OL.setLinePoints=function(t){var e=this.childOfName("line");af(e.shape,t),e.dirty()},u(rf,tb);var EL=sf.prototype;EL.isPersistent=function(){return!0},EL.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var o=hf(t);t.diff(n).add(function(i){lf(e,t,i,o)}).update(function(i,a){uf(e,n,t,a,i,o)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},EL.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},EL.incrementalPrepareUpdate=function(t){this._seriesScope=hf(t),this._lineData=null,this.group.removeAll()},EL.incrementalUpdate=function(t,e){for(var i=t.start;i=o/3?1:2),l=e.y-n(r)*a*(a>=o/3?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}}),YL=2*Math.PI,qL=(Ar.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=Sf(t,i);this._renderMain(t,e,i,n,o)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var a=this.group,r=t.getModel("axisLine").getModel("lineStyle"),s=t.get("clockwise"),l=-t.get("startAngle")/180*Math.PI,u=-t.get("endAngle")/180*Math.PI,h=(u-l)%YL,c=l,d=r.get("width"),f=0;f=t&&(0===e?0:n[e-1][0]).4?"bottom":"middle",textAlign:A<-.4?"left":A>.4?"right":"center"},{autoColor:P}),silent:!0}))}if(g.get("show")&&T!==v){for(var N=0;N<=y;N++){var A=Math.cos(w),D=Math.sin(w),O=new _M({shape:{x1:A*c+u,y1:D*c+h,x2:A*(c-_)+u,y2:D*(c-_)+h},silent:!0,style:I});"auto"===I.stroke&&O.setStyle({stroke:n((T+N/y)/v)}),l.add(O),w+=S}w-=S}else w+=b}},_renderPointer:function(t,e,i,n,o,a,r,s){var l=this.group,u=this._data;if(t.get("pointer.show")){var h=[+t.get("min"),+t.get("max")],c=[a,r],d=t.getData(),f=d.mapDimension("value");d.diff(u).add(function(e){var i=new jL({shape:{angle:a}});To(i,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(i),d.setItemGraphicEl(e,i)}).update(function(e,i){var n=u.getItemGraphicEl(i);Io(n,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(n),d.setItemGraphicEl(e,n)}).remove(function(t){var e=u.getItemGraphicEl(t);l.remove(e)}).execute(),d.eachItemGraphicEl(function(t,e){var i=d.getItemModel(e),a=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:Vo(a.get("width"),o.r),r:Vo(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(Bo(d.get(f,e),h,[0,1],!0))),fo(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=d}else u&&u.eachItemGraphicEl(function(t){l.remove(t)})},_renderTitle:function(t,e,i,n,o){var a=t.getData(),r=a.mapDimension("value"),s=t.getModel("title");if(s.get("show")){var l=s.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(Bo(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},s,{x:u,y:h,text:a.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:f,forceRich:!0})}))}},_renderDetail:function(t,e,i,n,o){var a=t.getModel("detail"),r=+t.get("min"),s=+t.get("max");if(a.get("show")){var l=a.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=Vo(a.get("width"),o.r),d=Vo(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(Bo(p,[r,s],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},a,{x:u,y:h,text:Mf(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Hs({type:"series.funnel",init:function(t){qL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return oC(this,["value"])},_defaultLabelLine:function(t){Ci(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},getDataParams:function(t){var e=this.getData(),i=qL.superCall(this,"getDataParams",t),n=e.mapDimension("value"),o=e.getSum(n);return i.percent=o?+(e.get(n,t)/o*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}})),KL=If.prototype,$L=["itemStyle","opacity"];KL.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e),l=t.getItemModel(e).get($L);l=null==l?1:l,n.useStyle({}),i?(n.setShape({points:s.points}),n.setStyle({opacity:0}),To(n,{style:{opacity:l}},o,e)):Io(n,{style:{opacity:l},shape:{points:s.points}},o,e);var u=a.getModel("itemStyle"),h=t.getItemVisual(e,"color");n.setStyle(r({lineJoin:"round",fill:h},u.getItemStyle(["opacity"]))),n.hoverStyle=u.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),fo(this)},KL._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,a=t.getItemModel(e),r=t.getItemLayout(e).label,s=t.getItemVisual(e,"color");Io(i,{shape:{points:r.linePoints||r.linePoints}},o,e),Io(n,{style:{x:r.x,y:r.y}},o,e),n.attr({rotation:r.rotation,origin:[r.x,r.y],z2:10});var l=a.getModel("label"),u=a.getModel("emphasis.label"),h=a.getModel("labelLine"),c=a.getModel("emphasis.labelLine"),s=t.getItemVisual(e,"color");go(n.style,n.hoverStyle={},l,u,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:s,useInsideStyle:!!r.inside},{textAlign:r.textAlign,textVerticalAlign:r.verticalAlign}),n.ignore=n.normalIgnore=!l.get("show"),n.hoverIgnore=!u.get("show"),i.ignore=i.normalIgnore=!h.get("show"),i.hoverIgnore=!c.get("show"),i.setStyle({stroke:s}),i.setStyle(h.getModel("lineStyle").getLineStyle()),i.hoverStyle=c.getModel("lineStyle").getLineStyle()},u(If,tb);Ar.extend({type:"funnel",render:function(t,e,i){var n=t.getData(),o=this._data,a=this.group;n.diff(o).add(function(t){var e=new If(n,t);n.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var i=o.getItemGraphicEl(e);i.updateData(n,t),a.add(i),n.setItemGraphicEl(t,i)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=n},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});Bs(uC("funnel")),zs(function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),n=i.mapDimension("value"),o=t.get("sort"),a=Tf(t,e),r=Af(i,o),s=[Vo(t.get("minSize"),a.width),Vo(t.get("maxSize"),a.width)],l=i.getDataExtent(n),u=t.get("min"),h=t.get("max");null==u&&(u=Math.min(l[0],0)),null==h&&(h=l[1]);var c=t.get("funnelAlign"),d=t.get("gap"),f=(a.height-d*(i.count()-1))/i.count(),p=a.y,g=function(t,e){var o,r=Bo(i.get(n,t)||0,[u,h],s,!0);switch(c){case"left":o=a.x;break;case"center":o=a.x+(a.width-r)/2;break;case"right":o=a.x+a.width-r}return[[o,e],[o+r,e]]};"ascending"===o&&(f=-f,d=-d,p+=a.height,r=r.reverse());for(var m=0;ma&&(e[1-n]=e[n]+h.sign*a),e},tk=d,ek=Math.min,ik=Math.max,nk=Math.floor,ok=Math.ceil,ak=Go,rk=Math.PI;Nf.prototype={type:"parallel",constructor:Nf,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;tk(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),r=this._axesMap.set(t,new JL(t,Hl(a),[0,0],a.get("type"),n)),s="category"===r.type;r.onBand=s&&a.get("boundaryGap"),r.inverse=a.get("inverse"),a.axis=r,r.model=a,r.coordinateSystem=a.coordinateSystem=this},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},containPoint:function(t){var e=this._makeLayoutInfo(),i=e.axisBase,n=e.layoutBase,o=e.pixelDimIndex,a=t[1-o],r=t[o];return a>=i&&a<=i+e.axisLength&&r>=n&&r<=n+e.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();tk(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,n.mapDimension(t)),Wl(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],o=["width","height"],a=e.get("layout"),r="horizontal"===a?0:1,s=i[o[r]],l=[0,s],u=this.dimensions.length,h=Of(e.get("axisExpandWidth"),l),c=Of(e.get("axisExpandCount")||0,[0,u]),d=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,f=e.get("axisExpandWindow");f?(t=Of(f[1]-f[0],l),f[1]=f[0]+t):(t=Of(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||nk(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[nk(ak(f[0]/h,1))+1,ok(ak(f[1]/h,1))-1],m=p/h*f[0];return{layout:a,pixelDimIndex:r,layoutBase:i[n[r]],layoutLength:s,axisBase:i[n[1-r]],axisLength:i[o[1-r]],axisExpandable:d,axisExpandWidth:h,axisCollapseWidth:p,axisExpandWindow:f,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:m}},_layoutAxes:function(){var t=this._rect,e=this._axesMap,i=this.dimensions,n=this._makeLayoutInfo(),o=n.layout;e.each(function(t){var e=[0,n.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),tk(i,function(e,i){var a=(n.axisExpandable?Rf:Ef)(i,n),r={horizontal:{x:a.position,y:n.axisLength},vertical:{x:0,y:a.position}},s={horizontal:rk/2,vertical:0},l=[r[o].x+t.x,r[o].y+t.y],u=s[o],h=xt();Mt(h,h,u),St(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:a.axisNameAvailableWidth,axisLabelShow:a.axisLabelShow,nameTruncateMaxWidth:a.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},getAxis:function(t){return this._axesMap.get(t)},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},eachActiveState:function(t,e,i,n){null==i&&(i=0),null==n&&(n=t.count());var o=this._axesMap,a=this.dimensions,r=[],s=[];d(a,function(e){r.push(t.mapDimension(e)),s.push(o.get(e).model)});for(var l=this.hasAxisBrushed(),u=i;uo*(1-h[0])?(l="jump",r=s-o*(1-h[2])):(r=s-o*h[1])>=0&&(r=s-o*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?QL(r,n,a,"all"):l="none";else{o=n[1]-n[0];(n=[ik(0,a[1]*s/o-o/2)])[1]=ek(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},Fa.register("parallel",{create:function(t,e){var i=[];return t.eachComponent("parallel",function(n,o){var a=new Nf(n,t,e);a.name="parallel_"+o,a.resize(n,e),n.coordinateSystem=a,a.model=n,i.push(a)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}});var sk=lI.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Qb([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=i(t);if(e)for(var n=e.length-1;n>=0;n--)Fo(e[n])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,o=e.length;n5)return;var n=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==n.behavior&&this._dispatchExpand({axisExpandWindow:n.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&Ip(this,"mousemove")){var e=this._model,i=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),n=i.behavior;"jump"===n&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===n?null:{axisExpandWindow:i.axisExpandWindow,animation:"jump"===n&&null})}}};Ns(function(t){Cf(t),Lf(t)}),YI.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return Tp(i,this),ml(i,this)},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"}});var Dk=.3,Ck=(Ar.extend({type:"parallel",init:function(){this._dataGroup=new tb,this.group.add(this._dataGroup),this._data,this._initialized},render:function(t,e,i,n){var o=this._dataGroup,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.dimensions,u=kp(t);if(a.diff(r).add(function(t){Pp(Lp(a,o,t,l,s),a,t,u)}).update(function(e,i){var o=r.getItemGraphicEl(i),h=Cp(a,e,l,s);a.setItemGraphicEl(e,o),Io(o,{shape:{points:h}},n&&!1===n.animation?null:t,e),Pp(o,a,e,u)}).remove(function(t){var e=r.getItemGraphicEl(t);o.remove(e)}).execute(),!this._initialized){this._initialized=!0;var h=Dp(s,t,function(){setTimeout(function(){o.removeClipPath()})});o.setClipPath(h)}this._data=a},incrementalPrepareRender:function(t,e,i){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,i){for(var n=e.getData(),o=e.coordinateSystem,a=o.dimensions,r=kp(e),s=t.start;sn&&(n=e)}),d(e,function(e){var o=new hL({type:"color",mappingMethod:"linear",dataExtent:[i,n],visual:t.get("color")}).mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var a=e.getModel().get("itemStyle.color");null!=a&&e.setVisual("color",a)})}})});var Ok={_baseAxisDim:null,getInitialData:function(t,e){var i,n,o=e.getComponent("xAxis",this.get("xAxisIndex")),a=e.getComponent("yAxis",this.get("yAxisIndex")),r=o.get("type"),s=a.get("type");"category"===r?(t.layout="horizontal",i=o.getOrdinalMeta(),n=!0):"category"===s?(t.layout="vertical",i=a.getOrdinalMeta(),n=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],f=[o,a],p=f[u].get("type"),g=f[1-u].get("type"),m=t.data;if(m&&n){var v=[];d(m,function(t,e){var i;t.value&&y(t.value)?(i=t.value.slice(),t.value.unshift(e)):y(t)?(i=t.slice(),t.unshift(e)):i=t,v.push(i)}),t.data=v}var x=this.defaultValueDimensions;return oC(this,{coordDimensions:[{name:h,type:qs(p),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:qs(g),dimsDef:x.slice()}],dimensionsCount:x.length+1})},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}};h(YI.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}}),Ok,!0);var Ek=["itemStyle"],Rk=["emphasis","itemStyle"],zk=(Ar.extend({type:"boxplot",render:function(t,e,i){var n=t.getData(),o=this.group,a=this._data;this._data||o.removeAll();var r="horizontal"===t.get("layout")?1:0;n.diff(a).add(function(t){if(n.hasValue(t)){var e=ig(n.getItemLayout(t),n,t,r,!0);n.setItemGraphicEl(t,e),o.add(e)}}).update(function(t,e){var i=a.getItemGraphicEl(e);if(n.hasValue(t)){var s=n.getItemLayout(t);i?ng(s,i,n,t):i=ig(s,n,t,r),o.add(i),n.setItemGraphicEl(t,i)}else o.remove(i)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&o.remove(e)}).execute(),this._data=n},remove:function(t){var e=this.group,i=this._data;this._data=null,i&&i.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:B}),Pn.extend({type:"boxplotBoxPath",shape:{},buildPath:function(t,e){var i=e.points,n=0;for(t.moveTo(i[n][0],i[n][1]),n++;n<4;n++)t.lineTo(i[n][0],i[n][1]);for(t.closePath();n0?jk:Yk)}function n(t,e){return e.get(t>0?Uk:Xk)}var o=t.getData(),a=t.pipelineContext.large;if(o.setVisual({legendSymbol:"roundRect",colorP:i(1,t),colorN:i(-1,t),borderColorP:n(1,t),borderColorN:n(-1,t)}),!e.isSeriesFiltered(t))return!a&&{progress:function(t,e){for(var o;null!=(o=t.next());){var a=e.getItemModel(o),r=e.getItemLayout(o).sign;e.setItemVisual(o,{color:i(r,a),borderColor:n(r,a)})}}}}},Kk="undefined"!=typeof Float32Array?Float32Array:Array,$k={seriesType:"candlestick",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.getData(),n=pg(t,i),o=0,a=1,r=["x","y"],s=i.mapDimension(r[o]),l=i.mapDimension(r[a],!0),u=l[0],h=l[1],c=l[2],d=l[3];if(i.setLayout({candleWidth:n,isSimpleBox:n<=1.3}),!(null==s||l.length<4))return{progress:t.pipelineContext.large?function(t,i){for(var n,r,l=new Kk(5*t.count),f=0,p=[],g=[];null!=(r=t.next());){var m=i.get(s,r),v=i.get(u,r),y=i.get(h,r),x=i.get(c,r),_=i.get(d,r);isNaN(m)||isNaN(x)||isNaN(_)?(l[f++]=NaN,f+=4):(l[f++]=fg(i,r,v,y,h),p[o]=m,p[a]=x,n=e.dataToPoint(p,null,g),l[f++]=n?n[0]:NaN,l[f++]=n?n[1]:NaN,p[a]=_,n=e.dataToPoint(p,null,g),l[f++]=n?n[1]:NaN)}i.setLayout("largePoints",l)}:function(t,i){function r(t,i){var n=[];return n[o]=i,n[a]=t,isNaN(i)||isNaN(t)?[NaN,NaN]:e.dataToPoint(n)}function l(t,e,i){var a=e.slice(),r=e.slice();a[o]=Jn(a[o]+n/2,1,!1),r[o]=Jn(r[o]-n/2,1,!0),i?t.push(a,r):t.push(r,a)}function f(t){return t[o]=Jn(t[o],1),t}for(var p;null!=(p=t.next());){var g=i.get(s,p),m=i.get(u,p),v=i.get(h,p),y=i.get(c,p),x=i.get(d,p),_=Math.min(m,v),w=Math.max(m,v),b=r(_,g),S=r(w,g),M=r(y,g),I=r(x,g),T=[];l(T,S,0),l(T,b,1),T.push(f(I),f(S),f(M),f(b)),i.setItemLayout(p,{sign:fg(i,p,m,v,h),initBaseline:m>v?S[a]:b[a],ends:T,brushRect:function(t,e,i){var s=r(t,i),l=r(e,i);return s[o]-=n/2,l[o]-=n/2,{x:s[0],y:s[1],width:a?n:l[0]-s[0],height:a?l[1]-s[1]:n}}(y,x,g)})}}}}};Ns(function(t){t&&y(t.series)&&d(t.series,function(t){w(t)&&"k"===t.type&&(t.type="candlestick")})}),Bs(qk),zs($k),YI.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}});var Jk=vg.prototype;Jk.stopEffectAnimation=function(){this.childAt(1).removeAll()},Jk.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),o=0;o<3;o++){var a=Jl(e,-1,-1,2,2,i);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var r=-o/3*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(r).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(r).start(),n.add(a)}mg(n,t)},Jk.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],o=0;o "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}}),iP=xg.prototype;iP.createLine=function(t,e,i){return new rf(t,e,i)},iP._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),o=i.get("symbol");y(n)||(n=[n,n]);var a=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==o&&(this.remove(r),(r=Jl(o,-.5,-.5,1,1,a)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",a),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(a),r.attr("scale",n),this._symbolType=o,this._updateEffectAnimation(t,i,e))},iP._updateEffectAnimation=function(t,e,i){var n=this.childAt(1);if(n){var o=this,a=t.getItemLayout(i),r=1e3*e.get("period"),s=e.get("loop"),l=e.get("constantSpeed"),u=T(e.get("delay"),function(e){return e/t.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,a),l>0&&(r=this.getLineLength(n)/l*1e3),r!==this._period||s!==this._loop){n.stopAnimation();var c=u;h&&(c=u(i)),n.__t>0&&(c=-r*n.__t),n.__t=0;var d=n.animate("",s).when(r,{__t:1}).delay(c).during(function(){o.updateSymbolPosition(n)});s||d.done(function(){o.remove(n)}),d.start()}this._period=r,this._loop=s}},iP.getLineLength=function(t){return uw(t.__p1,t.__cp1)+uw(t.__cp1,t.__p2)},iP.updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},iP.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},iP.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=sn,s=ln;a[0]=r(e[0],n[0],i[0],o),a[1]=r(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),u=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(u,l)-Math.PI/2,t.ignore=!1},iP.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},u(xg,tb);var nP=_g.prototype;nP._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new gM({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},nP.updateData=function(t,e,i){var n=t.hostModel;Io(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},nP._updateCommonStl=function(t,e,i){var n=this.childAt(0),o=t.getItemModel(e),a=t.getItemVisual(e,"color"),s=i&&i.lineStyle,l=i&&i.hoverLineStyle;i&&!t.hasItemOption||(s=o.getModel("lineStyle").getLineStyle(),l=o.getModel("emphasis.lineStyle").getLineStyle()),n.useStyle(r({strokeNoScale:!0,fill:"none",stroke:a},s)),n.hoverStyle=l,fo(this)},nP.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},u(_g,tb);var oP=wg.prototype;oP.createLine=function(t,e,i){return new _g(t,e,i)},oP.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o=0&&!(n[r]<=e);r--);r=Math.min(r,o-2)}else{for(var r=a;re);r++);r=Math.min(r-1,o-2)}J(t.position,i[r],i[r+1],(e-n[r])/(n[r+1]-n[r]));var s=i[r+1][0]-i[r][0],l=i[r+1][1]-i[r][1];t.rotation=-Math.atan2(l,s)-Math.PI/2,this._lastFrame=r,this._lastFramePercent=e,t.ignore=!1}},u(wg,xg);var aP=Un({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(r=0;r0){t.moveTo(i[r++],i[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*n,d=(l+h)/2-(u-s)*n;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var i=this.shape,n=i.segs,o=i.curveness;if(i.polyline)for(var a=0,r=0;r0)for(var l=n[r++],u=n[r++],h=1;h0){if(_n(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(yn(l,u,c,d))return a;a++}return-1}}),rP=bg.prototype;rP.isPersistent=function(){return!this._incremental},rP.updateData=function(t){this.group.removeAll();var e=new aP({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},rP.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},rP.incrementalUpdate=function(t,e){var i=new aP;i.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(i,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(i,!0):(i.rectHover=!0,i.cursor="default",i.__startIndex=t.start,this.group.add(i))},rP.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},rP._setCommon=function(t,e,i){var n=e.hostModel;t.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),t.useStyle(n.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var o=e.getVisual("color");o&&t.setStyle("stroke",o),t.setStyle("fill"),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>0&&(t.dataIndex=i+t.__startIndex)}))},rP._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var sP={seriesType:"lines",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.get("polyline"),n=t.pipelineContext.large;return{progress:function(o,a){var r=[];if(n){var s,l=o.end-o.start;if(i){for(var u=0,h=o.start;h0){var I=a(v)?s:l;v>0&&(v=v*S+b),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(y,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=iw()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},Zs({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var o=t.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(t,i,0,t.getData().count()):Ag(o)&&this._renderOnGeo(o,t,n,i)},incrementalPrepareRender:function(t,e,i){this.group.removeAll()},incrementalRender:function(t,e,i,n){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,n,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,e,i,n,o){var r,s,l=t.coordinateSystem;if("cartesian2d"===l.type){var u=l.getAxis("x"),h=l.getAxis("y");r=u.getBandWidth(),s=h.getBandWidth()}for(var c=this.group,d=t.getData(),f=t.getModel("itemStyle").getItemStyle(["color"]),p=t.getModel("emphasis.itemStyle").getItemStyle(),g=t.getModel("label"),m=t.getModel("emphasis.label"),v=l.type,y="cartesian2d"===v?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],x=i;x=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},Fa.register("single",{create:function(t,e){var i=[];return t.eachComponent("singleAxis",function(n,o){var a=new $g(n,t,e);a.name="single_"+o,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i},dimensions:$g.prototype.dimensions});var gP=["axisLine","axisTickLabel","axisName"],mP=XD.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=Jg(t),r=new FD(t,a);d(gP,r.add,r),o.add(r.getGroup()),t.get("splitLine.show")&&this._splitLine(t),mP.superCall(this,"render",t,e,i,n)},_splitLine:function(t){var e=t.axis;if(!e.scale.isBlank()){var i=t.getModel("splitLine"),n=i.getModel("lineStyle"),o=n.get("width"),a=n.get("color");a=a instanceof Array?a:[a];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;f=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){gm(e.getZr(),"axisPointer"),IP.superApply(this._model,"remove",arguments)},dispose:function(t,e){gm("axisPointer",e),IP.superApply(this._model,"dispose",arguments)}}),TP=Bi(),AP=i,DP=m;(mm.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var o=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==o||this._lastStatus!==a){this._lastValue=o,this._lastStatus=a;var r=this._group,s=this._handle;if(!a||"hide"===a)return r&&r.hide(),void(s&&s.hide());r&&r.show(),s&&s.show();var l={};this.makeElOption(l,o,t,e,i);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(r){var c=v(vm,e,h);this.updatePointerEl(r,l,c,e),this.updateLabelEl(r,l,c,e)}else r=this._group=new tb,this.createPointerEl(r,l,t,e),this.createLabelEl(r,l,t,e),i.getZr().add(r);wm(r,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,o="category"===n.type,a=e.get("snap");if(!a&&!o)return!1;if("auto"===i||null==i){var r=this.animationThreshold;if(o&&n.getBandWidth()>r)return!0;if(a){var s=Mh(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1}return!0===i},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=TP(t).pointerEl=new zM[o.type](AP(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=TP(t).labelEl=new yM(AP(e.label));t.add(o),xm(o,n)}},updatePointerEl:function(t,e,i){var n=TP(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=TP(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),xm(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,o=e.getModel("handle"),a=e.get("status");if(!o.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var r;this._handle||(r=!0,n=this._handle=Po(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){mw(t.event)},onmousedown:DP(this._onHandleDragMove,this,0,0),drift:DP(this._onHandleDragMove,this),ondragend:DP(this._onHandleDragEnd,this)}),i.add(n)),wm(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(o.getItemStyle(null,s));var l=o.get("size");y(l)||(l=[l,l]),n.attr("scale",[l[0]/2,l[1]/2]),Nr(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)}},_moveHandleToValue:function(t,e){vm(this._axisPointerModel,!e&&this._moveAnimation,this._handle,_m(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(_m(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(_m(n)),TP(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=mm,ji(mm);var CP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.grid,s=n.get("type"),l=km(r,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var h=bm(n),c=LP[s](a,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Lh(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=Lh(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.grid,r=o.getGlobalExtent(!0),s=km(a,o).getOtherAxis(o).getGlobalExtent(),l="x"===o.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];var d=[{verticalAlign:"middle"},{align:"center"}];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:d[l]}}}),LP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Pm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=Math.max(1,t.getBandWidth()),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Pm(t))}}};XD.registerAxisPointerClass("CartesianAxisPointer",CP),Ns(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Os(VT.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=vh(t,e)}),Es({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,o=[t.x,t.y],a=t,r=t.dispatchAction||m(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){lm(o)&&(o=xP({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var l=lm(o),u=a.axesInfo,h=s.axesInfo,c="leave"===n||lm(o),d={},f={},p={list:[],map:{}},g={showPointer:wP(em,f),showTooltip:wP(im,p)};_P(s.coordSysMap,function(t,e){var i=l||t.containPoint(o);_P(s.coordSysAxesInfo[e],function(t,e){var n=t.axis,a=rm(u,t);if(!c&&i&&(!u||a)){var r=a&&a.value;null!=r||l||(r=n.pointToData(o)),null!=r&&Qg(t,r,g,!1,d)}})});var v={};return _P(h,function(t,e){var i=t.linkGroup;i&&!f[e]&&_P(i.axesInfo,function(e,n){var o=f[n];if(e!==t&&o){var a=o.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,sm(e),sm(t)))),v[t.key]=a}})}),_P(v,function(t,e){Qg(h[e],t,g,!0,d)}),nm(f,h,d),om(p,o,t,r),am(h,0,i),d}});var kP=["x","y"],PP=["width","height"],NP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.coordinateSystem,s=Om(r,1-Nm(a)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=bm(n),c=OP[u](a,l,s,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Jg(i),i,n,o)},getHandleTransform:function(t,e,i){var n=Jg(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.coordinateSystem,r=Nm(o),s=Om(a,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=Om(a,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),OP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Nm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=t.getBandWidth(),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Nm(t))}}};XD.registerAxisPointerClass("SingleAxisPointer",NP),Ws({type:"single"});var EP=YI.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){EP.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){var e=t.length,i=[];Zi(t,function(t){return t[2]}).buckets.each(function(t,e){i.push({name:e,dataList:t})});for(var n=i.length,o=-1,a=-1,r=0;ro&&(o=s,a=r)}for(var l=0;lMath.PI/2?"right":"left"):x&&"center"!==x?"left"===x?(f=u.r0+y,p>Math.PI/2&&(x="right")):"right"===x&&(f=u.r-y,p>Math.PI/2&&(x="left")):(f=(u.r+u.r0)/2,x="center"),d.attr("style",{text:l,textAlign:x,textVerticalAlign:n("verticalAlign")||"middle",opacity:n("opacity")});var _=f*g+u.cx,w=f*m+u.cy;d.attr("position",[_,w]);var b=n("rotate"),S=0;"radial"===b?(S=-p)<-Math.PI/2&&(S+=Math.PI):"tangential"===b?(S=Math.PI/2-p)>Math.PI/2?S-=Math.PI:S<-Math.PI/2&&(S+=Math.PI):"number"==typeof b&&(S=b*Math.PI/180),d.attr("rotation",S)},VP._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");var o=this,a=function(){o.onEmphasis(n)},r=function(){o.onNormal()};i.isAnimationEnabled()&&t.on("mouseover",a).on("mouseout",r).on("emphasis",a).on("normal",r).on("downplay",function(){o.onDownplay()}).on("highlight",function(){o.onHighlight()})},u(Vm,tb);Ar.extend({type:"sunburst",init:function(){},render:function(t,e,i,n){function o(i,n){if(c||!i||i.getValue()||(i=null),i!==l&&n!==l)if(n&&n.piece)i?(n.piece.updateData(!1,i,"normal",t,e),s.setItemGraphicEl(i.dataIndex,n.piece)):a(n);else if(i){var o=new Vm(i,t,e);h.add(o),s.setItemGraphicEl(i.dataIndex,o)}}function a(t){t&&t.piece&&(h.remove(t.piece),t.piece=null)}var r=this;this.seriesModel=t,this.api=i,this.ecModel=e;var s=t.getData(),l=s.tree.root,u=t.getViewRoot(),h=this.group,c=t.get("renderLabelForZeroData"),d=[];u.eachNode(function(t){d.push(t)});var f=this._oldChildren||[];if(function(t,e){function i(t){return t.getId()}function n(i,n){o(null==i?null:t[i],null==n?null:e[n])}0===t.length&&0===e.length||new Xs(e,t,i,i).add(n).update(n).remove(v(n,null)).execute()}(d,f),function(i,n){if(n.depth>0){r.virtualPiece?r.virtualPiece.updateData(!1,i,"normal",t,e):(r.virtualPiece=new Vm(i,t,e),h.add(r.virtualPiece)),n.piece._onclickEvent&&n.piece.off("click",n.piece._onclickEvent);var o=function(t){r._rootToNode(n.parentNode)};n.piece._onclickEvent=o,r.virtualPiece.on("click",o)}else r.virtualPiece&&(h.remove(r.virtualPiece),r.virtualPiece=null)}(l,u),n&&n.highlight&&n.highlight.piece){var p=t.getShallow("highlightPolicy");n.highlight.piece.onEmphasis(p)}else if(n&&n.unhighlight){var g=this.virtualPiece;!g&&l.children.length&&(g=l.children[0].piece),g&&g.onNormal()}this._initEvents(),this._oldChildren=d},dispose:function(){},_initEvents:function(){var t=this,e=function(e){var i=!1;t.seriesModel.getViewRoot().eachNode(function(n){if(!i&&n.piece&&n.piece.childAt(0)===e.target){var o=n.getModel().get("nodeClick");if("rootToNode"===o)t._rootToNode(n);else if("link"===o){var a=n.getModel(),r=a.get("link");if(r){var s=a.get("target",!0)||"_blank";window.open(r,s)}}i=!0}})};this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",e),this.group._onclickEvent=e},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:"sunburstRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var GP="sunburstRootToNode";Es({type:GP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[GP],e);if(n){var o=e.getViewRoot();o&&(t.direction=hd(o,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}})});var FP="sunburstHighlight";Es({type:FP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[FP],e);n&&(t.highlight=n.node)})});Es({type:"sunburstUnhighlight",update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){t.unhighlight=!0})});var WP=Math.PI/180;Bs(v(uC,"sunburst")),zs(v(function(t,e,i,n){e.eachSeriesByType(t,function(t){var e=t.get("center"),n=t.get("radius");y(n)||(n=[0,n]),y(e)||(e=[e,e]);var o=i.getWidth(),a=i.getHeight(),r=Math.min(o,a),s=Vo(e[0],o),l=Vo(e[1],a),u=Vo(n[0],r/2),h=Vo(n[1],r/2),c=-t.get("startAngle")*WP,f=t.get("minAngle")*WP,p=t.getData().tree.root,g=t.getViewRoot(),m=g.depth,v=t.get("sort");null!=v&&Zm(g,v);var x=0;d(g.children,function(t){!isNaN(t.getValue())&&x++});var _=g.getValue(),w=Math.PI/(_||x)*2,b=g.depth>0,S=g.height-(b?-1:1),M=(h-u)/(S||1),I=t.get("clockwise"),T=t.get("stillShowZeroSum"),A=I?1:-1,D=function(t,e){if(t){var i=e;if(t!==p){var n=t.getValue(),o=0===_&&T?w:n*w;on[1]&&n.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:n[1],r0:n[0]},api:{coord:m(function(n){var o=e.dataToRadius(n[0]),a=i.dataToAngle(n[1]),r=t.coordToPoint([o,a]);return r.push(o,a*Math.PI/180),r}),size:m(qm,t)}}},calendar:function(t){var e=t.getRect(),i=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:i.start,end:i.end,weeks:i.weeks,dayCount:i.allDay}},api:{coord:function(e,i){return t.dataToPoint(e,i)}}}}};YI.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0},getInitialData:function(t,e){return ml(this.getSource(),this)},getDataParams:function(t,e,i){var n=YI.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Ar.extend({type:"custom",_data:null,render:function(t,e,i,n){var o=this._data,a=t.getData(),r=this.group,s=Qm(t,a,e,i);a.diff(o).add(function(e){ev(null,e,s(e,n),t,r,a)}).update(function(e,i){ev(o.getItemGraphicEl(i),e,s(e,n),t,r,a)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute(),this._data=a},incrementalPrepareRender:function(t,e,i){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,o){for(var a=e.getData(),r=Qm(e,a,i,n),s=t.start;s=0;l--)null==o[l]?o.splice(l,1):delete o[l].$action},_flatten:function(t,e,i){d(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});Ws({type:"graphic",init:function(t,e){this._elMap=R(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,i)},_updateElements:function(t){var e=t.useElOptionsToUpdate();if(e){var i=this._elMap,n=this.group;d(e,function(e){var o=e.$action,a=e.id,r=i.get(a),s=e.parentId,l=null!=s?i.get(s):n,u=e.style;"text"===e.type&&u&&(e.hv&&e.hv[1]&&(u.textVerticalAlign=u.textBaseline=null),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke));var h=fv(e);o&&"merge"!==o?"replace"===o?(dv(r,i),cv(a,l,h,i)):"remove"===o&&dv(r,i):r?r.attr(h):cv(a,l,h,i);var c=i.get(a);c&&(c.__ecGraphicWidth=e.width,c.__ecGraphicHeight=e.height,yv(c,t))})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=i.length-1;a>=0;a--){var r=i[a],s=o.get(r.id);if(s){var l=s.parent;da(s,r,l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0},null,{hv:r.hv,boundingMode:r.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){dv(e,t)}),this._elMap=R()},dispose:function(){this._clear()}});var KP=Fs({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){KP.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});Es("legendToggleSelect","legendselectchanged",v(xv,"toggleSelected")),Es("legendSelect","legendselected",v(xv,"select")),Es("legendUnSelect","legendunselected",v(xv,"unSelect"));var $P=v,JP=d,QP=tb,tN=Ws({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new QP),this._backgroundEl,this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},render:function(t,e,i){var n=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var o=t.get("align");o&&"auto"!==o||(o="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left"),this.renderInner(o,t,e,i);var a=t.getBoxLayoutParams(),s={width:i.getWidth(),height:i.getHeight()},l=t.get("padding"),u=ca(a,s,l),h=this.layoutInner(t,o,u,n),c=ca(r({width:h.width,height:h.height},a),s,l);this.group.attr("position",[c.x-h.x,c.y-h.y]),this.group.add(this._backgroundEl=wv(h,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl)},renderInner:function(t,e,i,n){var o=this.getContentGroup(),a=R(),r=e.get("selectedMode"),s=[];i.eachRawSeries(function(t){!t.get("legendHoverLink")&&s.push(t.id)}),JP(e.getData(),function(l,u){var h=l.get("name");if(this.newlineDisabled||""!==h&&"\n"!==h){var c=i.getSeriesByName(h)[0];if(!a.get(h))if(c){var d=c.getData(),f=d.getVisual("color");"function"==typeof f&&(f=f(c.getDataParams(0)));var p=d.getVisual("legendSymbol")||"roundRect",g=d.getVisual("symbol");this._createItem(h,u,l,e,p,g,t,f,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,c.name,null,n,s)).on("mouseout",$P(Mv,c.name,null,n,s)),a.set(h,!0)}else i.eachRawSeries(function(i){if(!a.get(h)&&i.legendDataProvider){var o=i.legendDataProvider(),c=o.indexOfName(h);if(c<0)return;var d=o.getItemVisual(c,"color");this._createItem(h,u,l,e,"roundRect",null,t,d,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,null,h,n,s)).on("mouseout",$P(Mv,null,h,n,s)),a.set(h,!0)}},this)}else o.add(new QP({newline:!0}))},this)},_createItem:function(t,e,i,n,o,r,s,l,u){var h=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("symbolKeepAspect"),p=n.isSelected(t),g=new QP,m=i.getModel("textStyle"),v=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(o=v||o,g.add(Jl(o,0,0,h,c,p?l:d,null==f||f)),!v&&r&&(r!==o||"none"===r)){var _=.8*c;"none"===r&&(r="circle"),g.add(Jl(r,(h-_)/2,(c-_)/2,_,_,p?l:d,null==f||f))}var w="left"===s?h+5:-5,b=s,S=n.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t)),g.add(new rM({style:mo({},m,{text:M,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new yM({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(I),g.eachChild(function(t){t.silent=!0}),I.silent=!u,this.getContentGroup().add(g),fo(g),g.__legendDataIndex=e,g},layoutInner:function(t,e,i){var n=this.getContentGroup();aI(t.get("orient"),n,t.get("itemGap"),i.width,i.height);var o=n.getBoundingRect();return n.attr("position",[-o.x,-o.y]),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});Os(function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;ii[l],p=[-c.x,-c.y];n||(p[s]=o.position[s]);var g=[0,0],m=[-d.x,-d.y],v=A(t.get("pageButtonGap",!0),t.get("itemGap",!0));f&&("end"===t.get("pageButtonPosition",!0)?m[s]+=i[l]-d[l]:g[s]+=d[l]+v),m[1-s]+=c[u]/2-d[u]/2,o.attr("position",p),a.attr("position",g),r.attr("position",m);var y=this.group.getBoundingRect();if((y={x:0,y:0})[l]=f?i[l]:c[l],y[u]=Math.max(c[u],d[u]),y[h]=Math.min(0,d[h]+m[1-s]),a.__rectSize=i[l],f){var x={x:0,y:0};x[l]=Math.max(i[l]-d[l]-v,0),x[u]=y[u],a.setClipPath(new yM({shape:x})),a.__rectSize=x[l]}else r.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&Io(o,{position:_.contentPosition},!!f&&t),this._updatePageInfoView(t,_),y},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(t,e){var i=this._controllerGroup;d(["pagePrev","pageNext"],function(n){var o=null!=e[n+"DataIndex"],a=i.childOfName(n);a&&(a.setStyle("fill",o?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=o?"pointer":"default")});var n=i.childOfName("pageText"),o=t.get("pageFormatter"),a=e.pageIndex,r=null!=a?a+1:0,s=e.pageCount;n&&o&&n.setStyle("text",_(o)?o.replace("{current}",r).replace("{total}",s):o({current:r,total:s}))},_getPageInfo:function(t){function e(t){if(t){var e=t.getBoundingRect(),i=e[l]+t.position[r];return{s:i,e:i+e[s],i:t.__legendDataIndex}}}function i(t,e){return t.e>=e&&t.s<=e+a}var n=t.get("scrollDataIndex",!0),o=this.getContentGroup(),a=this._containerGroup.__rectSize,r=t.getOrient().index,s=nN[r],l=oN[r],u=this._findTargetItemIndex(n),h=o.children(),c=h[u],d=h.length,f=d?1:0,p={contentPosition:o.position.slice(),pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return p;var g=e(c);p.contentPosition[r]=-g.s;for(var m=u+1,v=g,y=g,x=null;m<=d;++m)(!(x=e(h[m]))&&y.e>v.s+a||x&&!i(x,v.s))&&(v=y.i>v.i?y:x)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=v.i),++p.pageCount),y=x;for(var m=u-1,v=g,y=g,x=null;m>=-1;--m)(x=e(h[m]))&&i(y,x.s)||!(v.i=0;){var r=o.indexOf("|}"),s=o.substr(a+"{marker".length,r-a-"{marker".length);s.indexOf("sub")>-1?n["marker"+s]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[s],textOffset:[3,0]}:n["marker"+s]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[s]},a=(o=o.substr(r+1)).indexOf("{marker")}this.el=new rM({style:{rich:n,text:t,textLineHeight:20,textBackgroundColor:i.get("backgroundColor"),textBorderRadius:i.get("borderRadius"),textFill:i.get("textStyle.color"),textPadding:i.get("padding")},z:i.get("z")}),this._zr.add(this.el);var l=this;this.el.on("mouseover",function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0}),this.el.on("mouseout",function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){this.el&&this.el.attr("position",[t,e])},hide:function(){this.el?this.el.hide():true,this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(m(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var uN=m,hN=d,cN=Vo,dN=new yM({shape:{x:-1,y:-1,width:2,height:2}});Ws({type:"tooltip",init:function(t,e){if(!U_.node){var i=t.getComponent("tooltip").get("renderMode");this._renderMode=Hi(i);var n;"html"===this._renderMode?(n=new Cv(e.getDom(),e),this._newLine="
"):(n=new Lv(e),this._newLine="\n"),this._tooltipContent=n}},render:function(t,e,i){if(!U_.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");um("itemTooltip",this._api,uN(function(e,i,n){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(i,n):"leave"===e&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!U_.node){var o=Pv(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=dN;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},o)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},o);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=xP(n,e),l=s.point[0],u=s.point[1];null!=l&&null!=u&&this._tryShow({offsetX:l,offsetY:u,position:n.position,target:s.el,event:{}},o)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},o))}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(Pv(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var o=n.seriesIndex,a=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=o&&null!=a&&null!=r){var s=e.getSeriesByIndex(o);if(s&&"axis"===(t=kv([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:a,position:n.position}),!0}},_tryShow:function(t,e){var i=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var n=t.dataByCoordSys;n&&n.length?this._showAxisTooltip(n,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=m(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=kv([e.tooltipOption,o]),u=this._renderMode,h=this._newLine,c={};hN(t,function(t){hN(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),o=t.value,a=[];if(e&&null!=o){var l=Im(o,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);d(t.seriesDataIndices,function(r){var h=i.getSeriesByIndex(r.seriesIndex),d=r.dataIndexInside,f=h&&h.getDataParams(d);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=Xl(e.axis,o),f.axisValueLabel=l,f){s.push(f);var p,g=h.formatTooltip(d,!0,null,u);if(w(g)){p=g.html;var m=g.markers;n(c,m)}else p=g;a.push(p)}});var f=l;"html"!==u?r.push(a.join(h)):r.push((f?ia(f)+h:"")+a.join(h))}})},this),r.reverse(),r=r.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,f,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],f,void 0,c)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,o=e.seriesIndex,a=n.getSeriesByIndex(o),r=e.dataModel||a,s=e.dataIndex,l=e.dataType,u=r.getData(),h=kv([u.getItemModel(s),r,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),c=h.get("trigger");if(null==c||"item"===c){var d,f,p=r.getDataParams(s,l),g=r.formatTooltip(s,!1,l,this._renderMode);w(g)?(d=g.html,f=g.markers):(d=g,f=null);var m="item_"+r.name+"_"+s;this._showOrMove(h,function(){this._showTooltipContent(h,d,p,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:s,dataIndex:u.getRawIndex(s),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new No(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");r=r||t.get("position");var c=e;if(h&&"string"==typeof h)c=na(h,i,!0);else if("function"==typeof h){var d=uN(function(e,n){e===this._ticket&&(u.setContent(n,l,t),this._updatePosition(t,r,o,a,u,i,s))},this);this._ticket=n,c=h(i,n,d)}u.setContent(c,l,t),u.show(t),this._updatePosition(t,r,o,a,u,i,s)}},_updatePosition:function(t,e,i,n,o,a,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=o.getSize(),h=t.get("align"),c=t.get("verticalAlign"),d=r&&r.getBoundingRect().clone();if(r&&d.applyTransform(r.transform),"function"==typeof e&&(e=e([i,n],a,o.el,d,{viewSize:[s,l],contentSize:u.slice()})),y(e))i=cN(e[0],s),n=cN(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=ca(e,{width:s,height:l});i=f.x,n=f.y,h=null,c=null}else"string"==typeof e&&r?(i=(p=Ev(e,d,u))[0],n=p[1]):(i=(p=Nv(i,n,o,s,l,h?null:20,c?null:20))[0],n=p[1]);if(h&&(i-=Rv(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=Rv(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")){var p=Ov(i,n,o,s,l);i=p[0],n=p[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&hN(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&hN(o,function(t,e){var n=a[e]||{},o=t.seriesDataIndices||[],r=n.seriesDataIndices||[];(i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===r.length)&&hN(o,function(t,e){var n=r[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){U_.node||(this._tooltipContent.hide(),gm("itemTooltip",e))}}),Es({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Es({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){}),Gv.prototype={constructor:Gv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:aD.prototype.dataToCoord,radiusToData:aD.prototype.coordToData},u(Gv,aD);var fN=Bi();Fv.prototype={constructor:Fv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:aD.prototype.dataToCoord,angleToData:aD.prototype.coordToData,calculateCategoryInterval:function(){var t=this,e=t.getLabelModel(),i=t.scale,n=i.getExtent(),o=i.count();if(n[1]-n[0]<1)return 0;var a=n[0],r=t.dataToCoord(a+1)-t.dataToCoord(a),s=Math.abs(r),l=ke(a,e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=fN(t.model),d=c.lastAutoInterval,f=c.lastTickCount;return null!=d&&null!=f&&Math.abs(d-h)<=1&&Math.abs(f-o)<=1&&d>h?h=d:(c.lastTickCount=o,c.lastAutoInterval=h),h}},u(Fv,aD);var pN=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new Gv,this._angleAxis=new Fv,this._radiusAxis.polar=this._angleAxis.polar=this};pN.prototype={type:"polar",axisPointerEnabled:!0,constructor:pN,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=lr;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI;return[Math.cos(i)*e+this.cx,-Math.sin(i)*e+this.cy]}};var gN=lI.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n(gN.prototype,UA);var mN={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};ED("angle",gN,Wv,mN.angle),ED("radius",gN,Wv,mN.radius),Fs({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e;return this.ecModel.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}});var vN={dimensions:pN.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new pN(n);o.update=Zv;var a=o.getRadiusAxis(),r=o.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");Uv(a,s),Uv(r,l),Hv(o,t,e),i.push(o),t.coordinateSystem=o,o.model=t}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};Fa.register("polar",vN);var yN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];XD.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,o=n.polar,a=o.getRadiusAxis().getExtent(),r=n.getTicksCoords(),s=f(n.getViewLabels(),function(t){return(t=i(t)).coord=n.dataToCoord(t.tickValue),t});Yv(s),Yv(r),d(yN,function(e){!t.get(e+".show")||n.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,o,r,a,s)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),a=new sM({shape:{cx:e.cx,cy:e.cy,r:n[jv(e)]},style:o.getLineStyle(),z2:1,silent:!0});a.style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n){var o=t.getModel("axisTick"),a=(o.get("inside")?-1:1)*o.get("length"),s=n[jv(e)],l=f(i,function(t){return new _M({shape:Xv(e,[s,s+a],t.coord)})});this.group.add(OM(l,{style:r(o.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n,o){var a=t.getCategories(!0),r=t.getModel("axisLabel"),s=r.get("margin");d(o,function(i,o){var l=r,u=i.tickValue,h=n[jv(e)],c=e.coordToPoint([h+s,i.coord]),d=e.cx,f=e.cy,p=Math.abs(c[0]-d)/h<.3?"center":c[0]>d?"left":"right",g=Math.abs(c[1]-f)/h<.3?"middle":c[1]>f?"top":"bottom";a&&a[u]&&a[u].textStyle&&(l=new No(a[u].textStyle,r,r.ecModel));var m=new rM({silent:!0});this.group.add(m),mo(m.style,l,{x:c[0],y:c[1],textFill:l.getTextColor()||t.get("axisLine.lineStyle.color"),text:i.formattedLabel,textAlign:p,textVerticalAlign:g})},this)},_splitLine:function(t,e,i,n){var o=t.getModel("splitLine").getModel("lineStyle"),a=o.get("color"),s=0;a=a instanceof Array?a:[a];for(var l=[],u=0;u=0?"p":"n",M=y;v&&(n[r][b]||(n[r][b]={p:y,n:y}),M=n[r][b][S]);var I,T,A,D;if("radius"===h.dim){var C=h.dataToRadius(w)-y,L=a.dataToAngle(b);Math.abs(C)=0},kN.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=dy(e,t),o=0;o=0||AN(n,t.getAxis("y").model)>=0)&&a.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:a[0],coordSyses:a,getPanelRect:ON.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){TN(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:ON.geo})})}},NN=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],ON={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ao(t)),e}},EN={lineX:DN(fy,0),lineY:DN(fy,1),rect:function(t,e,i){var n=e[CN[t]]([i[0][0],i[1][0]]),o=e[CN[t]]([i[0][1],i[1][1]]),a=[cy([n[0],o[0]]),cy([n[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,i){var n=[[1/0,-1/0],[1/0,-1/0]];return{values:f(i,function(i){var o=e[CN[t]](i);return n[0][0]=Math.min(n[0][0],o[0]),n[1][0]=Math.min(n[1][0],o[1]),n[0][1]=Math.max(n[0][1],o[0]),n[1][1]=Math.max(n[1][1],o[1]),o}),xyMinMax:n}}},RN={lineX:DN(py,0),lineY:DN(py,1),rect:function(t,e,i){return[[t[0][0]-i[0]*e[0][0],t[0][1]-i[0]*e[0][1]],[t[1][0]-i[1]*e[1][0],t[1][1]-i[1]*e[1][1]]]},polygon:function(t,e,i){return f(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}},zN=["inBrush","outOfBrush"],BN="__ecBrushSelect",VN="__ecInBrushSelectEvent",GN=VT.VISUAL.BRUSH;zs(GN,function(t,e,i){t.eachComponent({mainType:"brush"},function(e){i&&"takeGlobalCursor"===i.type&&e.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1}),(e.brushTargetManager=new hy(e.option,t)).setInputRanges(e.areas,t)})}),Bs(GN,function(t,e,n){var o,a,s=[];t.eachComponent({mainType:"brush"},function(e,n){function l(t){return"all"===m||v[t]}function u(t){return!!t.length}function h(t,e){var i=t.coordinateSystem;w|=i.hasAxisBrushed(),l(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(x[e]=1)})}function c(i,n,o){var a=_y(i);if(a&&!wy(e,n)&&(d(b,function(n){a[n.brushType]&&e.brushTargetManager.controlSeries(n,i,t)&&o.push(n),w|=u(o)}),l(n)&&u(o))){var r=i.getData();r.each(function(t){xy(a,o,r,t)&&(x[t]=1)})}}var p={brushId:e.id,brushIndex:n,brushName:e.name,areas:i(e.areas),selected:[]};s.push(p);var g=e.option,m=g.brushLink,v=[],x=[],_=[],w=0;n||(o=g.throttleType,a=g.throttleDelay);var b=f(e.areas,function(t){return by(r({boundingRect:FN[t.brushType](t)},t))}),S=ty(e.option,zN,function(t){t.mappingMethod="fixed"});y(m)&&d(m,function(t){v[t]=1}),t.eachSeries(function(t,e){var i=_[e]=[];"parallel"===t.subType?h(t,e):c(t,e,i)}),t.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};p.selected.push(i);var n=_y(t),o=_[e],a=t.getData(),r=l(e)?function(t){return x[t]?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return xy(n,o,a,t)?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"};(l(e)?w:u(o))&&iy(zN,S,a,r)})}),vy(e,o,a,s,n)});var FN={lineX:B,lineY:B,rect:function(t){return Sy(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;ne[0][1]&&(e[0][1]=a[0]),a[1]e[1][1]&&(e[1][1]=a[1])}return e&&Sy(e)}},WN=["#ddd"];Fs({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&ey(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:WN},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=f(t,function(t){return My(this.option,t)},this))},setBrushOption:function(t){this.brushOption=My(this.option,t),this.brushType=this.brushOption.brushType}});Ws({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new zf(e.getZr())).on("brush",m(this._onBrush,this)).mount()},render:function(t){return this.model=t,Iy.apply(this,arguments)},updateTransform:Iy,updateView:Iy,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var n=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:n,areas:i(t),$from:n})}}),Es({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),Es({type:"brushSelect",event:"brushSelected",update:"none"},function(){});var HN={},ZN=rT.toolbox.brush;Dy.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:i(ZN.title)};var UN=Dy.prototype;UN.render=UN.updateView=function(t,e,i){var n,o,a;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,d(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?a:e===n)?"emphasis":"normal")})},UN.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return d(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},UN.onclick=function(t,e,i){var n=this._brushType,o=this._brushMode;"clear"===i?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},Ty("brush",Dy),Ns(function(t,e){var i=t&&t.brush;if(y(i)||(i=i?[i]:[]),i.length){var n=[];d(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var o=t&&t.toolbox;y(o)&&(o=o[0]),o||(o={feature:{}},t.toolbox=[o]);var a=o.feature||(o.feature={}),r=a.brush||(a.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),Jv(s),e&&!s.length&&s.push.apply(s,SN)}});Cy.prototype={constructor:Cy,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"},"value"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){var e=(t=Yo(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return o=Math.abs((o+7-this.getFirstDayOfWeek())%7),{y:e,m:i,d:n,day:o,time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)?this.getDateInfo(t):((t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t))},update:function(t,e){function i(t,e){return null!=t[e]&&"auto"!==t[e]}this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,o=["width","height"],a=this._model.get("cellSize").slice(),r=this._model.getBoxLayoutParams(),s="horizontal"===this._orient?[n,7]:[7,n];d([0,1],function(t){i(a,t)&&(r[o[t]]=a[t]*s[t])});var l={width:e.getWidth(),height:e.getHeight()},u=this._rect=ca(r,l);d([0,1],function(t){i(a,t)||(a[t]=u[o[t]]/s[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(t,e){y(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,o=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.timea.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),o=n.getDate(),a=t[1].date.getDate();if(n.setDate(o+i-1),n.getDate()!==a)for(var r=n.getTime()-t[1].time>0?1:-1;n.getDate()!==a&&(n.getTime()-t[1].time)*r>0;)i-=r,n.setDate(o+i-1);var s=Math.floor((i+t[0].day+6)/7),l=e?1-s:s-1;return e&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:i,weeks:s,nthWeek:l,fweek:t[0].day,lweek:t[1].day}},_getDateByWeeksAndDay:function(t,e,i){var n=this._getRangeInfo(i);if(t>n.weeks||0===t&&en.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=new Date(n.start.time);return a.setDate(n.start.d+o),this.getDateInfo(a)}},Cy.dimensions=Cy.prototype.dimensions,Cy.getDimensionsInfo=Cy.prototype.getDimensionsInfo,Cy.create=function(t,e){var i=[];return t.eachComponent("calendar",function(n){var o=new Cy(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])}),i},Fa.register("calendar",Cy);var XN=lI.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var o=ga(t);XN.superApply(this,"init",arguments),ky(t,o)},mergeOption:function(t,e){XN.superApply(this,"mergeOption",arguments),ky(this.option,t)}}),jN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},YN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Ws({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new yM({shape:{x:l[0],y:l[1],width:a,height:r},cursor:"default",style:o});i.add(u)}},_renderLines:function(t,e,i,n){function o(e){a._firstDayOfMonth.push(r.getDateInfo(e)),a._firstDayPoints.push(r.dataToRect([e],!1).tl);var o=a._getLinePointsOfOneWeek(t,e,i);a._tlpoints.push(o[0]),a._blpoints.push(o[o.length-1]),l&&a._drawSplitline(o,s,n)}var a=this,r=t.coordinateSystem,s=t.getModel("splitLine.lineStyle").getLineStyle(),l=t.get("splitLine.show"),u=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=e.start,c=0;h.time<=e.end.time;c++){o(h.formatedDate),0===c&&(h=r.getDateInfo(e.start.y+"-"+e.start.m));var d=h.date;d.setMonth(d.getMonth()+1),h=r.getDateInfo(d)}o(r.getNextNDay(e.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,u,i),s,n),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,u,i),s,n)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new gM({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?oa(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,o){e=e.slice();var a=["center","bottom"];"bottom"===n?(e[1]+=o,a=["center","top"]):"left"===n?e[0]-=o:"right"===n?(e[0]+=o,a=["center","top"]):e[1]-=o;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:a[0],textVerticalAlign:a[1]}}},_renderYearText:function(t,e,i,n){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),r=o.get("position");r||(r="horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=o.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new rM({z2:30});mo(m.style,o,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,a)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var o=n.get("nameMap"),r=n.get("margin"),s=n.get("position"),l=n.get("align"),u=[this._tlpoints,this._blpoints];_(o)&&(o=jN[o.toUpperCase()]||[]);var h="start"===s?0:1,c="horizontal"===e?0:1;r="start"===s?-r:r;for(var d="center"===l,f=0;f=r[0]&&t<=r[1]}if(t===this._dataZoomModel){var n=this._dimName,o=this.getTargetSeriesModels(),a=t.get("filterMode"),r=this._valueWindow;"none"!==a&&$N(o,function(t){var e=t.getData(),o=e.mapDimension(n,!0);o.length&&("weakFilter"===a?e.filterSelf(function(t){for(var i,n,a,s=0;sr[1];if(u&&!h&&!c)return!0;u&&(a=!0),h&&(i=!0),c&&(n=!0)}return a&&i&&n}):$N(o,function(n){if("empty"===a)t.setData(e.map(n,function(t){return i(t)?t:NaN}));else{var o={};o[n]=r,e.selectRange(o)}}),$N(o,function(t){e.setApproximateExtent(r,t)}))})}}};var tO=d,eO=KN,iO=Fs({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var n=By(t);this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=By(t);n(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;U_.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),Vy(this,t),tO([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,o){var a=this.dependentModels[e.axis][i],r=a.__dzAxisProxy||(a.__dzAxisProxy=new QN(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();eO(function(e){var i=e.axisIndex;t[i]=Di(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;eO(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var o="vertical"===e?"y":"x";n[o+"Axis"].length?(i[o+"AxisIndex"]=[0],t=!1):tO(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&eO(function(e){if(t){var n=[],o=this.dependentModels[e.axis];if(o.length&&!n.length)for(var a=0,r=o.length;a0?100:20}},getFirstTargetAxisModel:function(){var t;return eO(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;eO(function(n){tO(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(t,e){var i=this.option;tO([["start","startValue"],["end","endValue"]],function(e){null==t[e[0]]&&null==t[e[1]]||(i[e[0]]=t[e[0]],i[e[1]]=t[e[1]])},this),!e&&Vy(this,t)},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var i in e)if(e.hasOwnProperty(i)&&e[i].hostedBy(this))return e[i];for(var i in e)if(e.hasOwnProperty(i)&&!e[i].hostedBy(this))return e[i]},getRangePropMode:function(){return this._rangePropMode.slice()}}),nO=qI.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,a=0;a0&&e%g)p+=f;else{var i=null==t||isNaN(t)||""===t,n=i?0:aO(t,a,u,!0);i&&!l&&e?(c.push([c[c.length-1][0],0]),d.push([d[d.length-1][0],0])):!i&&l&&(c.push([p,0]),d.push([p,0])),c.push([p,n]),d.push([p,n]),p+=f,l=i}});var m=this.dataZoomModel;this._displayables.barGroup.add(new pM({shape:{points:c},style:r({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new gM({shape:{points:d},style:m.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var i,n=this.ecModel;return t.eachTargetAxis(function(o,a){d(t.getAxisProxy(o.name,a).getTargetSeriesModels(),function(t){if(!(i||!0!==e&&l(cO,t.get("type"))<0)){var r,s=n.getComponent(o.axis,a).axis,u=Gy(o.name),h=t.coordinateSystem;null!=u&&h.getOtherAxis&&(r=h.getOtherAxis(s).inverse),u=t.getData().mapDimension(u),i={thisAxis:s,series:t,thisDim:o.name,otherDim:u,otherAxisInverse:r}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,a=this.dataZoomModel;n.add(t.filler=new oO({draggable:!0,cursor:Fy(this._orient),drift:sO(this._onDragMove,this,"all"),onmousemove:function(t){mw(t.event)},ondragstart:sO(this._showDataInfo,this,!0),ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new oO($n({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}}))),lO([0,1],function(t){var o=Po(a.get("handleIcon"),{cursor:Fy(this._orient),draggable:!0,drift:sO(this._onDragMove,this,t),onmousemove:function(t){mw(t.event)},ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),r=o.getBoundingRect();this._handleHeight=Vo(a.get("handleSize"),this._size[1]),this._handleWidth=r.width/r.height*this._handleHeight,o.setStyle(a.getModel("handleStyle").getItemStyle());var s=a.get("handleColor");null!=s&&(o.style.fill=s),n.add(e[t]=o);var l=a.textStyleModel;this.group.add(i[t]=new rM({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:l.getTextColor(),textFont:l.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[aO(t[0],[0,100],e,!0),aO(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];QL(e,n,o,i.get("zoomLock")?"all":t,null!=a.minSpan?aO(a.minSpan,r,o,!0):null,null!=a.maxSpan?aO(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=rO([aO(n[0],o,r,!0),aO(n[1],o,r,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=rO(i.slice()),o=this._size;lO([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a/2,a/2],position:[i[t],o[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=Ao(n.handles[t].parent,this.group),i=Co(0===t?"right":"left",e),s=this._handleWidth/2+hO,l=Do([c[t]+(0===t?-s:s),this._size[1]/2],e);o[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===uO?"middle":i,textAlign:a===uO?i:"center",text:r[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,a=this._orient,r=["",""];if(i.get("showDetail")){var s=i.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,u=this._range,h=t?s.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:s.getDataValueWindow();r=[this._formatLabel(h[0],l),this._formatLabel(h[1],l)]}}var c=rO(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return x(n)?n(t,a):_(n)?n.replace("{value}",a):a},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i){this._dragging=!0;var n=Do([e,i],this._displayables.barGroup.getLocalTransform(),!0),o=this._updateInterval(t,n[0]),a=this.dataZoomModel.get("realtime");this._updateView(!a),o&&a&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get("realtime")&&this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,i=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(i[0]<0||i[0]>e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var t;if(lO(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});iO.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var fO="\0_ec_dataZoom_roams",pO=m,gO=nO.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){gO.superApply(this,"render",arguments),this._range=t.getPercentRange(),d(this.getTargetCoordInfo(),function(e,n){var o=f(e,function(t){return Zy(t.model)});d(e,function(e){var a=e.model,r={};d(["pan","zoom","scrollMove"],function(t){r[t]=pO(mO[t],this,e,n)},this),Wy(i,{coordId:Zy(a),allCoordIds:o,containsPoint:function(t,e,i){return a.coordinateSystem.containPoint([e,i])},dataZoomId:t.id,dataZoomModel:t,getRange:r})},this)},this)},dispose:function(){Hy(this.api,this.dataZoomModel.id),gO.superApply(this,"dispose",arguments),this._range=null}}),mO={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=vO[e](null,[n.originX,n.originY],r,i,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],u=Math.max(1/n.scale,0);a[0]=(a[0]-l)*u+l,a[1]=(a[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return QL(0,a,[0,100],0,h.minSpan,h.maxSpan),this._range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}},pan:Ky(function(t,e,i,n,o,a){var r=vO[n]([a.oldX,a.oldY],[a.newX,a.newY],e,o,i);return r.signal*(t[1]-t[0])*r.pixel/r.pixelLength}),scrollMove:Ky(function(t,e,i,n,o,a){return vO[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})},vO={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.mainType?(r.pixel=e[0]-t[0],r.pixelLength=l[1]-l[0],r.pixelStart=l[0],r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}};Os({getTargetSeries:function(t){var e=R();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){d(n.getAxisProxy(t.name,i).getTargetSeriesModels(),function(t){e.set(t.uid,t)})})}),e},modifyOutputEnd:!0,overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).reset(n,e)}),t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).filterData(n,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})}}),Es("dataZoom",function(t,e){var i=Ny(m(e.eachComponent,e,"dataZoom"),KN,function(t,e){return t.get(e.axisIndex)}),n=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){n.push.apply(n,i(t).nodes)}),d(n,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})});var yO=d,xO=function(t){var e=t&&t.visualMap;y(e)||(e=e?[e]:[]),yO(e,function(t){if(t){$y(t,"splitList")&&!$y(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&y(e)&&yO(e,function(t){w(t)&&($y(t,"start")&&!$y(t,"min")&&(t.min=t.start),$y(t,"end")&&!$y(t,"max")&&(t.max=t.end))})}})};lI.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"});var _O=VT.VISUAL.COMPONENT;Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=[];return e.eachComponent("visualMap",function(e){var n=t.pipelineContext;!e.isTargetSeries(t)||n&&n.large||i.push(ny(e.stateList,e.targetVisuals,m(e.getValueState,e),e.getDataDimension(t.getData())))}),i}}),Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=t.getData(),n=[];e.eachComponent("visualMap",function(e){if(e.isTargetSeries(t)){var o=e.getVisualMeta(m(Jy,null,t,e))||{stops:[],outerColors:[]},a=e.getDataDimension(i),r=i.getDimensionInfo(a);null!=r&&(o.dimension=r.index,n.push(o))}}),t.getData().setVisual("visualMeta",n)}});var wO={get:function(t,e,n){var o=i((bO[t]||{})[e]);return n&&y(o)?o[o.length-1]:o}},bO={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},SO=hL.mapVisual,MO=hL.eachVisual,IO=y,TO=d,AO=Fo,DO=Bo,CO=B,LO=Fs({type:"visualMap",dependencies:["series"],stateList:["inRange","outOfRange"],replacableOptionKeys:["inRange","outOfRange","target","controller","color"],dataBound:[-1/0,1/0],layoutMode:{type:"box",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:"all",min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:"#333"}},init:function(t,e,i){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this.mergeDefaultAndTheme(t,i)},optionUpdated:function(t,e){var i=this.option;U_.canvasSupported||(i.realtime=!1),!e&&ey(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=m(t,this),this.controllerVisuals=ty(this.option.controller,e,t),this.targetVisuals=ty(this.option.target,e,t)},getTargetSeriesIndices:function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,i){e.push(i)}):e=Di(t),e},eachTargetSeries:function(t,e){d(this.getTargetSeriesIndices(),function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===l[0]?"min":t===l[1]?"max":(+t).toFixed(Math.min(s,20))}var o,a,r=this.option,s=r.precision,l=this.dataBound,u=r.formatter;return i=i||["<",">"],y(t)&&(t=t.slice(),o=!0),a=e?t:o?[n(t[0]),n(t[1])]:n(t),_(u)?u.replace("{value}",o?a[0]:a).replace("{value2}",o?a[1]:a):x(u)?o?u(t[0],t[1]):u(t):o?t[0]===l[0]?i[0]+" "+a[1]:t[1]===l[1]?i[1]+" "+a[0]:a[0]+" - "+a[1]:a},resetExtent:function(){var t=this.option,e=AO([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension,i=t.dimensions;if(null!=e||i.length){if(null!=e)return t.getDimension(e);for(var n=t.dimensions,o=n.length-1;o>=0;o--){var a=n[o];if(!t.getDimensionInfo(a).isCalculationCoord)return a}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){IO(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")},TO(this.stateList,function(e){var i=t[e];if(_(i)){var n=wO.get(i,"active",l);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}var e=this.ecModel,o=this.option,a={inRange:o.inRange,outOfRange:o.outOfRange},r=o.target||(o.target={}),s=o.controller||(o.controller={});n(r,a),n(s,a);var l=this.isCategory();t.call(this,r),t.call(this,s),function(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},TO(n,function(t,e){if(hL.isValidType(e)){var i=wO.get(e,"inactive",l);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}.call(this,r,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,o=this.get("inactiveColor");TO(this.stateList,function(a){var r=this.itemSize,s=t[a];s||(s=t[a]={color:l?o:[o]}),null==s.symbol&&(s.symbol=e&&i(e)||(l?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=n&&i(n)||(l?r[0]:[r[0],r[0]])),s.symbol=SO(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var u=s.symbolSize;if(null!=u){var h=-1/0;MO(u,function(t){t>h&&(h=t)}),s.symbolSize=SO(u,function(t){return DO(t,[0,h],[0,r[0]],!0)})}},this)}.call(this,s)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:CO,getValueState:CO,getVisualMeta:CO}),kO=[20,140],PO=LO.extend({type:"visualMap.continuous",defaultOption:{align:"auto",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:null},optionUpdated:function(t,e){PO.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){PO.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=kO[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=kO[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):y(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){LO.prototype.completeVisualOption.apply(this,arguments),d(this.stateList,function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this.option.range=t.slice(),this._resetRange()},getSelected:function(){var t=this.getExtent(),e=Fo((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){o.push({value:e,color:t(e,i)})}for(var i=Qy(0,0,this.getExtent()),n=Qy(0,0,this.option.range.slice()),o=[],a=0,r=0,s=n.length,l=i.length;rt[1])break;i.push({color:this.getControllerVisual(a,"color",e),offset:o/100})}return i.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),i},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get("inverse");return new tb("horizontal"!==e||i?"horizontal"===e&&i?{scale:"bottom"===t?[-1,1]:[1,1],rotation:-Math.PI/2}:"vertical"!==e||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:"bottom"===t?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,a=i.handleLabels;EO([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=Do(i.handleLabelPoints[r],Ao(s,this.group));a[r].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[r]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===r?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),r=o.itemSize,s=[0,r[1]],l=OO(t,a,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",ox(!!i,n,l,r[1]));var c={convertOpacityToAlpha:!0},d=this.getControllerVisual(t,"color",c);h.setStyle("fill",d);var f=Do(u.indicatorLabelPoint,Ao(h,this.group)),p=u.indicatorLabel;p.attr("invisible",!1);var g=this._applyTransform("left",u.barGroup),m=this._orient;p.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===m?g:"middle",textAlign:"horizontal"===m?"center":g,x:f[0],y:f[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=RO(zO(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i.option.hoverLink){var o=[0,n[1]],a=i.getExtent();t=RO(zO(o[0],t),o[1]);var r=ax(i,a,o),s=[t-r,t+r],l=OO(t,o,a,!0),u=[OO(s[0],o,a,!0),OO(s[1],o,a,!0)];s[0]o[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",r):u[1]===1/0?this._showIndicator(l,u[0],"> ",r):this._showIndicator(l,l,"≈ ",r));var h=this._hoverLinkDataIndices,c=[];(e||rx(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=Ri(h,c);this._dispatchHighDown("downplay",ex(d[0])),this._dispatchHighDown("highlight",ex(d[1]))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t.target,i=this.visualMapModel;if(e&&null!=e.dataIndex){var n=this.ecModel.getSeriesByIndex(e.seriesIndex);if(i.isTargetSeries(n)){var o=n.getData(e.dataType),a=o.get(i.getDataDimension(o),e.dataIndex,!0);isNaN(a)||this._showIndicator(a,a)}}},_hideIndicator:function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",ex(t)),t.length=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},_applyTransform:function(t,e,i,n){var o=Ao(e,n?null:this.group);return zM[y(t)?"applyTransform":"transformDirection"](t,o,i)},_dispatchHighDown:function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});Es({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})}),Ns(xO);var FO=LO.extend({type:"visualMap.piecewise",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieceList:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(t,e){FO.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();WO[this._mode].call(this),this._resetSelected(t,e);var o=this.option.categories;this.resetVisual(function(t,e){"categories"===n?(t.mappingMethod="category",t.categories=i(o)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=f(this._pieceList,function(t){var t=i(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(w(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=hL.listVisualTypes(),o=this.isCategory();d(e.pieces,function(t){d(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),d(i,function(i,n){var a=0;d(this.stateList,function(i){a|=t(e,i,n)||t(e.target,i,n)},this),!a&&d(this.stateList,function(t){(e[t]||(e[t]={}))[n]=wO.get(n,"inRange"===t?"active":"inactive",o)})},this),LO.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,d(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var a=!1;d(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(a?o[i]=!1:a=!0)},this)}},getSelectedMapKey:function(t){return"categories"===this._mode?t.value+"":t.index+""},getPieceList:function(){return this._pieceList},_determineMode:function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=i(t)},getValueState:function(t){var e=hL.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){hL.findPieceIndex(e,this._pieceList)===t&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getRepresentValue:function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var i=t.interval||[];e=i[0]===-1/0&&i[1]===1/0?0:(i[0]+i[1])/2}return e},getVisualMeta:function(t){function e(e,a){var r=o.getRepresentValue({interval:e});a||(a=o.getValueState(r));var s=t(r,a);e[0]===-1/0?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,a=this._pieceList.slice();if(a.length){var r=a[0].interval[0];r!==-1/0&&a.unshift({interval:[-1/0,r]}),(r=a[a.length-1].interval[1])!==1/0&&a.push({interval:[r,1/0]})}else a.push({interval:[-1/0,1/0]});var s=-1/0;return d(a,function(t){var i=t.interval;i&&(i[0]>s&&e([s,i[0]],"outOfRange"),e(i.slice()),s=i[1])},this),{stops:i,outerColors:n}}}}),WO={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.toFixed(i);var r=0;t.minOpen&&e.push({index:r++,interval:[-1/0,n[0]],close:[0,0]});for(var s=n[0],l=r+o;r","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};NO.extend({type:"visualMap.piecewise",doRender:function(){var t=this.group;t.removeAll();var e=this.visualMapModel,i=e.get("textGap"),n=e.textStyleModel,o=n.getFont(),a=n.getTextColor(),r=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=T(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,r),d(l.viewPieceList,function(n){var l=n.piece,u=new tb;u.onclick=m(this._onItemClick,this,l),this._enableHoverLink(u,n.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var d=this.visualMapModel.getValueState(c);u.add(new rM({style:{x:"right"===r?-i:s[0]+i,y:s[1]/2,text:l.text,textVerticalAlign:"middle",textAlign:r,textFont:o,textFill:a,opacity:"outOfRange"===d?.5:1}}))}t.add(u)},this),u&&this._renderEndsText(t,u[1],s,h,r),aI(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:ex(i.findTargetDataIndices(e))})}t.on("mouseover",m(i,this,"highlight")).on("mouseout",m(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return tx(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new tb,r=this.visualMapModel.textStyleModel;a.add(new rM({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=f(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),o=t.get("inverse");return("horizontal"===n?o:!o)?e.reverse():i&&(i=i.slice().reverse()),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(Jl(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,n=e.option,o=i(n.selected),a=e.getSelectedMapKey(t);"single"===n.selectedMode?(o[a]=!0,d(o,function(t,e){o[e]=e===a})):o[a]=!o[a],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:o})}});Ns(xO);var HO=ta,ZO=ia,UO=Fs({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,n){var o=this.constructor,r=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType,!0),s=t[r];i&&i.data?(s?s.mergeOption(i,e,!0):(n&&ux(i),d(i.data,function(t){t instanceof Array?(ux(t[0]),ux(t[1])):ux(t)}),a(s=new o(i,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),t[r]=s):t[r]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=y(i)?f(i,HO).join(", "):HO(i),o=e.getName(t),a=ZO(this.name);return(null!=i||o)&&(a+="
"),o&&(a+=ZO(o),null!=i&&(a+=" : ")),null!=i&&(a+=ZO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(UO,ZI),UO.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var XO=l,jO=v,YO={min:jO(dx,"min"),max:jO(dx,"max"),average:jO(dx,"average")},qO=Ws({type:"marker",init:function(){this.markerGroupMap=R()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});qO.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(xx(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,r=t.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,new Du),u=_x(o,t,e);e.setData(u),xx(e.getData(),t,n),u.each(function(t){var i=u.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),u.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||r.getVisual("color"),symbol:i.getShallow("symbol")})}),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markPoint=t.markPoint||{}}),UO.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});var KO=function(t,e,o,r){var s=t.getData(),l=r.type;if(!y(r)&&("min"===l||"max"===l||"average"===l||"median"===l||null!=r.xAxis||null!=r.yAxis)){var u,h;if(null!=r.yAxis||null!=r.xAxis)u=null!=r.yAxis?"y":"x",e.getAxis(u),h=T(r.yAxis,r.xAxis);else{var c=px(r,s,e,t);u=c.valueDataDim,c.valueAxis,h=yx(s,u,l)}var d="x"===u?0:1,f=1-d,p=i(r),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-1/0,g.coord[f]=1/0;var m=o.get("precision");m>=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),p.coord[d]=g.coord[d]=h,r=[p,g,{type:l,valueIndex:r.valueIndex,value:h}]}return r=[fx(t,r[0]),fx(t,r[1]),a({},r[2])],r[2].type=r[2].type||"",n(r[2],r[0]),n(r[2],r[1]),r};qO.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){Ix(o,e,!0,t,i),Ix(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);Ix(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||g[o?0:1],symbol:a.get("symbol",!0)||p[o?0:1],color:a.get("itemStyle.color")||s.getVisual("color")})}var a=t.coordinateSystem,r=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(r)||l.set(r,new sf);this.group.add(u.group);var h=Tx(a,t,e),c=h.from,d=h.to,f=h.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");y(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),h.from.each(function(t){o(c,t,!0),o(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),u.updateData(f),h.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),u.__keep=!0,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markLine=t.markLine||{}}),UO.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});var $O=function(t,e,i,n){var a=fx(t,n[0]),r=fx(t,n[1]),s=T,l=a.coord,u=r.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),u[0]=s(u[0],1/0),u[1]=s(u[1],1/0);var h=o([{},a,r]);return h.coord=[a.coord,r.coord],h.x0=a.x,h.y0=a.y,h.x1=r.x,h.y1=r.y,h},JO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];qO.extend({type:"markArea",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=f(JO,function(o){return Lx(n,e,o,t,i)});n.setItemLayout(e,o),n.getItemGraphicEl(e).setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(a)||l.set(a,{group:new tb});this.group.add(u.group),u.__keep=!0;var h=kx(o,t,e);e.setData(h),h.each(function(e){h.setItemLayout(e,f(JO,function(i){return Lx(h,e,i,t,n)})),h.setItemVisual(e,{color:s.getVisual("color")})}),h.diff(u.__data).add(function(t){var e=new pM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);Io(n,{shape:{points:h.getItemLayout(t)}},e,t),u.group.add(n),h.setItemGraphicEl(t,n)}).remove(function(t){var e=u.__data.getItemGraphicEl(t);u.group.remove(e)}).execute(),h.eachItemGraphicEl(function(t,i){var n=h.getItemModel(i),o=n.getModel("label"),a=n.getModel("emphasis.label"),s=h.getItemVisual(i,"color");t.useStyle(r(n.getModel("itemStyle").getItemStyle(),{fill:Yt(s,.4),stroke:s})),t.hoverStyle=n.getModel("emphasis.itemStyle").getItemStyle(),go(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),fo(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markArea=t.markArea||{}});lI.registerSubTypeDefaulter("timeline",function(){return"slider"}),Es({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),r({currentIndex:i.option.currentIndex},t)}),Es({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var QO=lI.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){QO.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],n=t.axisType,o=this._names=[];if("category"===n){var a=[];d(e,function(t,e){var n,r=Li(t);w(t)?(n=i(t)).value=e:n=e,a.push(n),_(r)||null!=r&&!isNaN(r)||(r=""),o.push(r+"")}),e=a}var r={category:"ordinal",time:"time"}[n]||"number";(this._data=new vA([{name:"value",type:r}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});h(QO.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}}),ZI);var tE=qI.extend({type:"timeline"}),eE=function(t,e,i,n){aD.call(this,t,e,i),this.type=n||"value",this.model=null};eE.prototype={constructor:eE,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(eE,aD);var iE=m,nE=d,oE=Math.PI;tE.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return ia(s.scale.getLabel(t))},nE(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,a,s,t)},this),this._renderAxisLabel(o,r,s,t),this._position(o,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),o=Ex(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2=0||"+"===i?"left":"right"},r={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},s={horizontal:0,vertical:oE/2},l="vertical"===n?o.height:o.width,u=t.getModel("controlStyle"),h=u.get("show",!0),c=h?u.get("itemSize"):0,d=h?u.get("itemGap"):0,f=c+d,p=t.get("label.rotate")||0;p=p*oE/180;var g,m,v,y,x=u.get("position",!0),_=h&&u.get("showPlayBtn",!0),w=h&&u.get("showPrevBtn",!0),b=h&&u.get("showNextBtn",!0),S=0,M=l;return"left"===x||"bottom"===x?(_&&(g=[0,0],S+=f),w&&(m=[S,0],S+=f),b&&(v=[M-c,0],M-=f)):(_&&(g=[M-c,0],M-=f),w&&(m=[0,0],S+=f),b&&(v=[M-c,0],M-=f)),y=[S,M],t.get("inverse")&&y.reverse(),{viewRect:o,mainLength:l,orient:n,rotation:s[n],labelRotation:p,labelPosOpt:i,labelAlign:t.get("label.align")||a[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||r[n],playPosition:g,prevBtnPosition:m,nextBtnPosition:v,axisExtent:y,controlSize:c,controlGap:d}},_position:function(t,e){function i(t){var e=t.position;t.origin=[c[0][0]-e[0],c[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var a=this._mainGroup,r=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=xt(),u=s.x,h=s.y+s.height;St(l,l,[-u,-h]),Mt(l,l,-oE/2),St(l,l,[u,h]),(s=s.clone()).applyTransform(l)}var c=n(s),d=n(a.getBoundingRect()),f=n(r.getBoundingRect()),p=a.position,g=r.position;g[0]=p[0]=c[0][0];var m=t.labelPosOpt;if(isNaN(m))o(p,d,c,1,v="+"===m?0:1),o(g,f,c,1,1-v);else{var v=m>=0?0:1;o(p,d,c,1,v),g[1]=p[1]+m}a.attr("position",p),r.attr("position",g),a.rotation=r.rotation=t.rotation,i(a),i(r)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=Hl(e,n);o.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var a=i.getDataExtent("value");o.setExtent(a[0],a[1]),o.niceTicks();var r=new eE("value",o,t.axisExtent,n);return r.model=e,r},_createGroup:function(t){var e=this["_"+t]=new tb;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new _M({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:a({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),a=i.scale.getTicks();nE(a,function(t){var a=i.dataToCoord(t),r=o.getItemModel(t),s=r.getModel("itemStyle"),l=r.getModel("emphasis.itemStyle"),u={position:[a,0],onclick:iE(this._changeTimeline,this,t)},h=zx(r,s,e,u);fo(h,l.getItemStyle()),r.get("tooltip")?(h.dataIndex=t,h.dataModel=n):h.dataIndex=h.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){if(i.getLabelModel().get("show")){var o=n.getData(),a=i.getViewLabels();nE(a,function(n){var a=n.tickValue,r=o.getItemModel(a),s=r.getModel("label"),l=r.getModel("emphasis.label"),u=i.dataToCoord(n.tickValue),h=new rM({position:[u,0],rotation:t.labelRotation-t.rotation,onclick:iE(this._changeTimeline,this,a),silent:!1});mo(h.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(h),fo(h,mo({},l))},this)}},_renderControl:function(t,e,i,n){function o(t,i,o,h){if(t){var c=Rx(n,i,u,{position:t,origin:[a/2,0],rotation:h?-r:0,rectHover:!0,style:s,onclick:o});e.add(c),fo(c,l)}}var a=t.controlSize,r=t.rotation,s=n.getModel("controlStyle").getItemStyle(),l=n.getModel("emphasis.controlStyle").getItemStyle(),u=[0,-a/2,a,a],h=n.getPlayState(),c=n.get("inverse",!0);o(t.nextBtnPosition,"controlStyle.nextIcon",iE(this._changeTimeline,this,c?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",iE(this._changeTimeline,this,c?"+":"-")),o(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),iE(this._handlePlayClick,this,!h),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),a=n.getCurrentIndex(),r=o.getItemModel(a).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=iE(s._handlePointerDrag,s),t.ondragend=iE(s._handlePointerDragend,s),Bx(t,a,i,n,!0)},onUpdate:function(t){Bx(t,a,i,n)}};this._currentPointer=zx(r,r,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i.offsetX,i.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=Fo(this._axis.getExtent().slice());i>n[1]&&(i=n[1]),ii.getHeight()&&(n.textPosition="top",l=!0);var u=l?-5-o.height:s+8;a+o.width/2>i.getWidth()?(n.textPosition=["100%",u],n.textAlign="right"):a-o.width/2<0&&(n.textPosition=[0,u],n.textAlign="left")}})}},updateView:function(t,e,i,n){d(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(t,e){d(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){d(this._features,function(i){i.dispose&&i.dispose(t,e)})}});var rE=rT.toolbox.saveAsImage;Gx.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:rE.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:rE.lang.slice()},Gx.prototype.unusable=!U_.canvasSupported,Gx.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=document.createElement("a"),a=i.get("type",!0)||"png";o.download=n+"."+a,o.target="_blank";var r=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(o.href=r,"function"!=typeof MouseEvent||U_.browser.ie||U_.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(r.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,n+"."+a)}else{var c=i.get("lang"),d='';window.open().document.write(d)}else{var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(f)}},Ty("saveAsImage",Gx);var sE=rT.toolbox.magicType;Fx.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z",tiled:"M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z"},title:i(sE.title),option:{},seriesIndex:{}};var lE=Fx.prototype;lE.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return d(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var uE={line:function(t,e,i,o){if("bar"===t)return n({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.line")||{},!0)},bar:function(t,e,i,o){if("line"===t)return n({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.bar")||{},!0)},stack:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:"__ec_magicType_stack__"},o.get("option.stack")||{},!0)},tiled:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:""},o.get("option.tiled")||{},!0)}},hE=[["line","bar"],["stack","tiled"]];lE.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(uE[i]){var a={series:[]};d(hE,function(t){l(t,i)>=0&&d(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},function(e){var o=e.subType,s=e.id,l=uE[i](o,s,e,n);l&&(r(l,e.option),a.series.push(l));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var c=h.dim+"Axis",d=t.queryComponents({mainType:c,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;a[c]=a[c]||[];for(var f=0;f<=d;f++)a[c][d]=a[c][d]||{};a[c][d].boundaryGap="bar"===i}}}),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:a})}},Es({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Ty("magicType",Fx);var cE=rT.toolbox.dataView,dE=new Array(60).join("-"),fE="\t",pE=new RegExp("["+fE+"]+","g");$x.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:i(cE.title),lang:i(cE.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},$x.prototype.onclick=function(t,e){function i(){n.removeChild(a),x._dom=null}var n=e.getDom(),o=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=o.get("backgroundColor")||"#fff";var r=document.createElement("h4"),s=o.get("lang")||[];r.innerHTML=s[0]||o.get("title"),r.style.cssText="margin: 10px 20px;",r.style.color=o.get("textColor");var l=document.createElement("div"),u=document.createElement("textarea");l.style.cssText="display:block;width:100%;overflow:auto;";var h=o.get("optionToContent"),c=o.get("contentToOption"),d=Ux(t);if("function"==typeof h){var f=h(e.getOption());"string"==typeof f?l.innerHTML=f:M(f)&&l.appendChild(f)}else l.appendChild(u),u.readOnly=o.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=o.get("textColor"),u.style.borderColor=o.get("textareaBorderColor"),u.style.backgroundColor=o.get("textareaColor"),u.value=d.value;var p=d.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:0;left:0;right:0;";var m="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),y=document.createElement("div");m+=";background-color:"+o.get("buttonColor"),m+=";color:"+o.get("buttonTextColor");var x=this;ht(v,"click",i),ht(y,"click",function(){var t;try{t="function"==typeof c?c(l,e.getOption()):Kx(u.value,p)}catch(t){throw i(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),v.innerHTML=s[1],y.innerHTML=s[2],y.style.cssText=m,v.style.cssText=m,!o.get("readOnly")&&g.appendChild(y),g.appendChild(v),ht(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+fE+e.substring(n),this.selectionStart=this.selectionEnd=i+1,mw(t)}}),a.appendChild(r),a.appendChild(l),a.appendChild(g),l.style.height=n.clientHeight-80+"px",n.appendChild(a),this._dom=a},$x.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},$x.prototype.dispose=function(t,e){this.remove(t,e)},Ty("dataView",$x),Es({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];d(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:Jx(t.data,o)})}else i.push(a({type:"scatter"},t))}),e.mergeOption(r({series:i},t.newOption))});var gE=d,mE="\0_ec_hist_store";iO.extend({type:"dataZoom.select"}),nO.extend({type:"dataZoom.select"});var vE=rT.toolbox.dataZoom,yE=d,xE="\0_ec_\0toolbox-dataZoom_";o_.defaultOption={show:!0,icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:i(vE.title)};var _E=o_.prototype;_E.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,s_(t,e,this,n,i),r_(t,e)},_E.onclick=function(t,e,i){wE[i].call(this)},_E.remove=function(t,e){this._brushController.unmount()},_E.dispose=function(t,e){this._brushController.dispose()};var wE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(t_(this.ecModel))}};_E._onBrush=function(t,e){function i(t,e,i){var r=e.getAxis(t),s=r.model,l=n(t,s,a),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(i=QL(0,i.slice(),r.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(o[l.id]={dataZoomId:l.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){i.getAxisModel(t,e.componentIndex)&&(n=i)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]),new hy(a_(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),Qx(a,o),this._dispatchZoomAction(o)}},_E._dispatchZoomAction=function(t){var e=[];yE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},Ty("dataZoom",o_),Ns(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"===a||y(a)||(a=!1===a||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"===a||-1!==l(a,i)){var r={type:"select",$fromToolbox:!0,id:xE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),yE(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);y(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(y(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}});var bE=rT.toolbox.restore;l_.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:bE.title},l_.prototype.onclick=function(t,e,i){e_(t),e.dispatchAction({type:"restore",from:this.uid})},Ty("restore",l_),Es({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var SE,ME="urn:schemas-microsoft-com:vml",IE="undefined"==typeof window?null:window,TE=!1,AE=IE&&IE.document;if(AE&&!U_.canvasSupported)try{!AE.namespaces.zrvml&&AE.namespaces.add("zrvml",ME),SE=function(t){return AE.createElement("')}}catch(t){SE=function(t){return AE.createElement("<"+t+' xmlns="'+ME+'" class="zrvml">')}}var DE=ES.CMD,CE=Math.round,LE=Math.sqrt,kE=Math.abs,PE=Math.cos,NE=Math.sin,OE=Math.max;if(!U_.canvasSupported){var EE=21600,RE=EE/2,zE=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=EE+","+EE,t.coordorigin="0,0"},BE=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},VE=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},GE=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},FE=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},WE=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},HE=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},ZE=function(t,e,i){var n=Gt(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=VE(n[0],n[1],n[2]),t.opacity=i*n[3])},UE=function(t){var e=Gt(t);return[VE(e[0],e[1],e[2]),e[3]]},XE=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof IM){var o,a=0,r=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){o="gradient";var d=i.transform,f=[n.x*h,n.y*c],p=[n.x2*h,n.y2*c];d&&(Q(f,f,d),Q(p,p,d));var g=p[0]-f[0],m=p[1]-f[1];(a=180*Math.atan2(g,m)/Math.PI)<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial";var f=[n.x*h,n.y*c],d=i.transform,v=i.scale,y=h,x=c;r=[(f[0]-u.x)/y,(f[1]-u.y)/x],d&&Q(f,f,d),y/=v[0]*EE,x/=v[1]*EE;var _=OE(y,x);s=0/_,l=2*n.r/_-s}var w=n.colorStops.slice();w.sort(function(t,e){return t.offset-e.offset});for(var b=w.length,S=[],M=[],I=0;I=2){var D=S[0][0],C=S[1][0],L=S[0][1]*e.opacity,k=S[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=D,t.color2=C,t.colors=M.join(","),t.opacity=k,t.opacity2=L}"radial"===o&&(t.focusposition=r.join(","))}else ZE(t,n,e.opacity)},jE=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof IM||ZE(t,e.stroke,e.opacity)},YE=function(t,e,i,n){var o="fill"===e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof IM&&FE(t,a),a||(a=u_(e)),o?XE(a,i,n):jE(a,i),GE(t,a)):(t[o?"filled":"stroked"]="false",FE(t,a))},qE=[[],[],[]],KE=function(t,e){var i,n,o,a,r,s,l=DE.M,u=DE.C,h=DE.L,c=DE.A,d=DE.Q,f=[],p=t.data,g=t.len();for(a=0;a.01?N&&(O+=.0125):Math.abs(E-D)<1e-4?N&&OA?x-=.0125:x+=.0125:N&&ED?y+=.0125:y-=.0125),f.push(R,CE(((A-C)*M+b)*EE-RE),",",CE(((D-L)*I+S)*EE-RE),",",CE(((A+C)*M+b)*EE-RE),",",CE(((D+L)*I+S)*EE-RE),",",CE((O*M+b)*EE-RE),",",CE((E*I+S)*EE-RE),",",CE((y*M+b)*EE-RE),",",CE((x*I+S)*EE-RE)),r=y,s=x;break;case DE.R:var z=qE[0],B=qE[1];z[0]=p[a++],z[1]=p[a++],B[0]=z[0]+p[a++],B[1]=z[1]+p[a++],e&&(Q(z,z,e),Q(B,B,e)),z[0]=CE(z[0]*EE-RE),B[0]=CE(B[0]*EE-RE),z[1]=CE(z[1]*EE-RE),B[1]=CE(B[1]*EE-RE),f.push(" m ",z[0],",",z[1]," l ",B[0],",",z[1]," l ",B[0],",",B[1]," l ",z[0],",",B[1]);break;case DE.Z:f.push(" x ")}if(i>0){f.push(n);for(var V=0;V100&&(tR=0,QE={});var i,n=eR.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(t){}e={style:n.fontStyle||"normal",variant:n.fontVariant||"normal",weight:n.fontWeight||"normal",size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},QE[t]=e,tR++}return e};!function(t,e){bb[t]=e}("measureText",function(t,e){var i=AE;JE||((JE=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",AE.body.appendChild(JE));try{JE.style.font=e}catch(t){}return JE.innerHTML="",JE.appendChild(i.createTextNode(t)),{width:JE.offsetWidth}});for(var nR=new de,oR=[Db,di,fi,Pn,rM],aR=0;aR=o&&u+1>=a){for(var h=[],c=0;c=o&&c+1>=a)return T_(0,s.components);l[i]=s}else l[i]=void 0}r++}();if(d)return d}},pushComponent:function(t,e,i){var n=t[t.length-1];n&&n.added===e&&n.removed===i?t[t.length-1]={count:n.count+1,added:e,removed:i}:t.push({count:1,added:e,removed:i})},extractCommon:function(t,e,i,n){for(var o=e.length,a=i.length,r=t.newPos,s=r-n,l=0;r+1=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},D_.prototype.update=function(t,e){if(t){var i=this.getDefs(!1);if(t[this._domName]&&i.contains(t[this._domName]))"function"==typeof e&&e(t);else{var n=this.add(t);n&&(t[this._domName]=n)}}},D_.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},D_.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},D_.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return d(this._tagNames,function(i){var n=t.getElementsByTagName(i);e=e.concat([].slice.call(n))}),e},D_.prototype.markAllUnused=function(){var t=this;d(this.getDoms(),function(e){e[t._markLabel]="0"})},D_.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},D_.prototype.removeUnused=function(){var t=this.getDefs(!1);if(t){var e=this;d(this.getDoms(),function(i){"1"!==i[e._markLabel]&&t.removeChild(i)})}},D_.prototype.getSvgProxy=function(t){return t instanceof Pn?yR:t instanceof fi?xR:t instanceof rM?_R:yR},D_.prototype.getTextSvgElement=function(t){return t.__textSvgEl},D_.prototype.getSvgElement=function(t){return t.__svgEl},u(C_,D_),C_.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var i=this;d(["fill","stroke"],function(n){if(e.style[n]&&("linear"===e.style[n].type||"radial"===e.style[n].type)){var o,a=e.style[n],r=i.getDefs(!0);a._dom?(o=a._dom,r.contains(a._dom)||i.addDom(o)):o=i.add(a),i.markUsed(e);var s=o.getAttribute("id");t.setAttribute(n,"url(#"+s+")")}})}},C_.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return Yw("Illegal gradient type."),null;e=this.createElement("radialGradient")}return t.id=t.id||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-gradient-"+t.id),this.updateDom(t,e),this.addDom(e),e},C_.prototype.update=function(t){var e=this;D_.prototype.update.call(this,t,function(){var i=t.type,n=t._dom.tagName;"linear"===i&&"linearGradient"===n||"radial"===i&&"radialGradient"===n?e.updateDom(t,t._dom):(e.removeDom(t),e.add(t))})},C_.prototype.updateDom=function(t,e){if("linear"===t.type)e.setAttribute("x1",t.x),e.setAttribute("y1",t.y),e.setAttribute("x2",t.x2),e.setAttribute("y2",t.y2);else{if("radial"!==t.type)return void Yw("Illegal gradient type.");e.setAttribute("cx",t.x),e.setAttribute("cy",t.y),e.setAttribute("r",t.r)}t.global?e.setAttribute("gradientUnits","userSpaceOnUse"):e.setAttribute("gradientUnits","objectBoundingBox"),e.innerHTML="";for(var i=t.colorStops,n=0,o=i.length;n0){var n,o,a=this.getDefs(!0),r=e[0],s=i?"_textDom":"_dom";r[s]?(o=r[s].getAttribute("id"),n=r[s],a.contains(n)||a.appendChild(n)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(n=this.createElement("clipPath")).setAttribute("id",o),a.appendChild(n),r[s]=n);var l=this.getSvgProxy(r);if(r.transform&&r.parent.invTransform&&!i){var u=Array.prototype.slice.call(r.transform);bt(r.transform,r.parent.invTransform,r.transform),l.brush(r),r.transform=u}else l.brush(r);var h=this.getSvgElement(r);n.innerHTML="",n.appendChild(h.cloneNode()),t.setAttribute("clip-path","url(#"+o+")"),e.length>1&&this.updateDom(n,e.slice(1),i)}else t&&t.setAttribute("clip-path","none")},L_.prototype.markUsed=function(t){var e=this;t.__clipPaths&&t.__clipPaths.length>0&&d(t.__clipPaths,function(t){t._dom&&D_.prototype.markUsed.call(e,t._dom),t._textDom&&D_.prototype.markUsed.call(e,t._textDom)})},u(k_,D_),k_.prototype.addWithoutUpdate=function(t,e){if(e&&P_(e.style)){var i,n=e.style;n._shadowDom?(i=n._shadowDom,this.getDefs(!0).contains(n._shadowDom)||this.addDom(i)):i=this.add(e),this.markUsed(e);var o=i.getAttribute("id");t.style.filter="url(#"+o+")"}},k_.prototype.add=function(t){var e=this.createElement("filter"),i=t.style;return i._shadowDomId=i._shadowDomId||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-shadow-"+i._shadowDomId),this.updateDom(t,e),this.addDom(e),e},k_.prototype.update=function(t,e){var i=e.style;if(P_(i)){var n=this;D_.prototype.update.call(this,e,function(t){n.updateDom(e,t._shadowDom)})}else this.remove(t,i)},k_.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(e),t.style.filter="")},k_.prototype.updateDom=function(t,e){var i=e.getElementsByTagName("feDropShadow");i=0===i.length?this.createElement("feDropShadow"):i[0];var n,o,a,r,s=t.style,l=t.scale?t.scale[0]||1:1,u=t.scale?t.scale[1]||1:1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)n=s.shadowOffsetX||0,o=s.shadowOffsetY||0,a=s.shadowBlur,r=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);n=s.textShadowOffsetX||0,o=s.textShadowOffsetY||0,a=s.textShadowBlur,r=s.textShadowColor}i.setAttribute("dx",n/l),i.setAttribute("dy",o/u),i.setAttribute("flood-color",r);var h=a/2/l+" "+a/2/u;i.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(a/2*200)+"%"),e.setAttribute("height",Math.ceil(a/2*200)+"%"),e.appendChild(i),s._shadowDom=e},k_.prototype.markUsed=function(t){var e=t.style;e&&e._shadowDom&&D_.prototype.markUsed.call(this,e._shadowDom)};var IR=function(t,e,i,n){this.root=t,this.storage=e,this._opts=i=a({},i||{});var o=p_("svg");o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttribute("version","1.1"),o.setAttribute("baseProfile","full"),o.style.cssText="user-select:none;position:absolute;left:0;top:0;",this.gradientManager=new C_(n,o),this.clipPathManager=new L_(n,o),this.shadowManager=new k_(n,o);var r=document.createElement("div");r.style.cssText="overflow:hidden;position:relative",this._svgRoot=o,this._viewport=r,t.appendChild(r),r.appendChild(o),this.resize(i.width,i.height),this._visibleList=[]};IR.prototype={constructor:IR,getType:function(){return"svg"},getViewportRoot:function(){return this._viewport},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},setBackgroundColor:function(t){this._viewport.style.background=t},_paintList:function(t){this.gradientManager.markAllUnused(),this.clipPathManager.markAllUnused(),this.shadowManager.markAllUnused();var e,i=this._svgRoot,n=this._visibleList,o=t.length,a=[];for(e=0;e=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},resize:function(t,e){var i=this._viewport;i.style.display="none";var n=this._opts;if(null!=t&&(n.width=t),null!=e&&(n.height=e),t=this._getSize(0),e=this._getSize(1),i.style.display="",this._width!==t||this._height!==e){this._width=t,this._height=e;var o=i.style;o.width=t+"px",o.height=e+"px";var a=this._svgRoot;a.setAttribute("width",t),a.setAttribute("height",e)}},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],n=["clientWidth","clientHeight"][t],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||N_(s[i])||N_(r.style[i]))-(N_(s[o])||0)-(N_(s[a])||0)|0},dispose:function(){this.root.innerHTML="",this._svgRoot=this._viewport=this.storage=null},clear:function(){this._viewport&&this.root.removeChild(this._viewport)},pathToDataUrl:function(){return this.refresh(),"data:image/svg+xml;charset=UTF-8,"+this._svgRoot.outerHTML}},d(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){IR.prototype[t]=F_(t)}),Ti("svg",IR),t.version="4.2.1",t.dependencies=ET,t.PRIORITY=VT,t.init=function(t,e,i){var n=ks(t);if(n)return n;var o=new us(t,e,i);return o.id="ec_"+iA++,tA[o.id]=o,Fi(t,oA,o.id),Cs(o),o},t.connect=function(t){if(y(t)){var e=t;t=null,kT(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+nA++,kT(e,function(e){e.group=t})}return eA[t]=!0,t},t.disConnect=Ls,t.disconnect=aA,t.dispose=function(t){"string"==typeof t?t=tA[t]:t instanceof us||(t=ks(t)),t instanceof us&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=ks,t.getInstanceById=function(t){return tA[t]},t.registerTheme=Ps,t.registerPreprocessor=Ns,t.registerProcessor=Os,t.registerPostUpdate=function(t){KT.push(t)},t.registerAction=Es,t.registerCoordinateSystem=Rs,t.getCoordinateSystemDimensions=function(t){var e=Fa.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=zs,t.registerVisual=Bs,t.registerLoading=Gs,t.extendComponentModel=Fs,t.extendComponentView=Ws,t.extendSeriesModel=Hs,t.extendChartView=Zs,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,i){DT.registerMap(t,e,i)},t.getMap=function(t){var e=DT.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool=rA,t.zrender=Hb,t.number=YM,t.format=eI,t.throttle=Pr,t.helper=tD,t.matrix=Sw,t.vector=cw,t.color=Ww,t.parseGeoJSON=iD,t.parseGeoJson=rD,t.util=sD,t.graphic=lD,t.List=vA,t.Model=No,t.Axis=aD,t.env=U_}); \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/static/h5/echarts.min.js b/uni_modules/qiun-data-charts/static/h5/echarts.min.js new file mode 100644 index 0000000..5396a03 --- /dev/null +++ b/uni_modules/qiun-data-charts/static/h5/echarts.min.js @@ -0,0 +1,23 @@ + +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* 版本为4.2.1,修改一处源码:this.el.hide() 改为 this.el?this.el.hide():true +*/ + + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.echarts={})}(this,function(t){"use strict";function e(t,e){"createCanvas"===t&&(nw=null),ew[t]=e}function i(t){if(null==t||"object"!=typeof t)return t;var e=t,n=Y_.call(t);if("[object Array]"===n){if(!O(t)){e=[];for(var o=0,a=t.length;o=0){var o="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];o&&st(t,o,e,i)}else st(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var a=e.button;return null==e.which&&void 0!==a&&gw.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function ht(t,e,i){pw?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function ct(t,e,i){pw?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}function dt(t){return 2===t.which||3===t.which}function ft(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function pt(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function gt(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:mt}}function mt(t){mw(this.event)}function vt(){}function yt(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,o=t;o;){if(o.clipPath&&!o.clipPath.contain(e,i))return!1;o.silent&&(n=!0),o=o.parent}return!n||xw}return!1}function xt(){var t=new bw(6);return _t(t),t}function _t(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function wt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function bt(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t}function St(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t}function Mt(t,e,i){var n=e[0],o=e[2],a=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+r*u,t[1]=-n*u+r*h,t[2]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*a+u*l,t[5]=h*l-u*a,t}function It(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t}function Tt(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}function At(t){var e=xt();return wt(e,t),e}function Dt(t){return t>Iw||t<-Iw}function Ct(t){this._target=t.target,this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null!=t.loop&&t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}function Lt(t){return(t=Math.round(t))<0?0:t>255?255:t}function kt(t){return(t=Math.round(t))<0?0:t>360?360:t}function Pt(t){return t<0?0:t>1?1:t}function Nt(t){return Lt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function Ot(t){return Pt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function Et(t,e,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function Rt(t,e,i){return t+(e-t)*i}function zt(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function Bt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Vt(t,e){Vw&&Bt(Vw,e),Vw=Bw.put(t,Vw||e.slice())}function Gt(t,e){if(t){e=e||[];var i=Bw.get(t);if(i)return Bt(e,i);var n=(t+="").replace(/ /g,"").toLowerCase();if(n in zw)return Bt(e,zw[n]),Vt(t,e),e;if("#"!==n.charAt(0)){var o=n.indexOf("("),a=n.indexOf(")");if(-1!==o&&a+1===n.length){var r=n.substr(0,o),s=n.substr(o+1,a-(o+1)).split(","),l=1;switch(r){case"rgba":if(4!==s.length)return void zt(e,0,0,0,1);l=Ot(s.pop());case"rgb":return 3!==s.length?void zt(e,0,0,0,1):(zt(e,Nt(s[0]),Nt(s[1]),Nt(s[2]),l),Vt(t,e),e);case"hsla":return 4!==s.length?void zt(e,0,0,0,1):(s[3]=Ot(s[3]),Ft(s,e),Vt(t,e),e);case"hsl":return 3!==s.length?void zt(e,0,0,0,1):(Ft(s,e),Vt(t,e),e);default:return}}zt(e,0,0,0,1)}else{if(4===n.length)return(u=parseInt(n.substr(1),16))>=0&&u<=4095?(zt(e,(3840&u)>>4|(3840&u)>>8,240&u|(240&u)>>4,15&u|(15&u)<<4,1),Vt(t,e),e):void zt(e,0,0,0,1);if(7===n.length){var u=parseInt(n.substr(1),16);return u>=0&&u<=16777215?(zt(e,(16711680&u)>>16,(65280&u)>>8,255&u,1),Vt(t,e),e):void zt(e,0,0,0,1)}}}}function Ft(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Ot(t[1]),o=Ot(t[2]),a=o<=.5?o*(n+1):o+n-o*n,r=2*o-a;return e=e||[],zt(e,Lt(255*Et(r,a,i+1/3)),Lt(255*Et(r,a,i)),Lt(255*Et(r,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Wt(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:a===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function Ht(t,e){var i=Gt(t);if(i){for(var n=0;n<3;n++)i[n]=e<0?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,i[n]>255?i[n]=255:t[n]<0&&(i[n]=0);return qt(i,4===i.length?"rgba":"rgb")}}function Zt(t){var e=Gt(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ut(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[];var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=e[o],s=e[a],l=n-o;return i[0]=Lt(Rt(r[0],s[0],l)),i[1]=Lt(Rt(r[1],s[1],l)),i[2]=Lt(Rt(r[2],s[2],l)),i[3]=Pt(Rt(r[3],s[3],l)),i}}function Xt(t,e,i){if(e&&e.length&&t>=0&&t<=1){var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=Gt(e[o]),s=Gt(e[a]),l=n-o,u=qt([Lt(Rt(r[0],s[0],l)),Lt(Rt(r[1],s[1],l)),Lt(Rt(r[2],s[2],l)),Pt(Rt(r[3],s[3],l))],"rgba");return i?{color:u,leftIndex:o,rightIndex:a,value:n}:u}}function jt(t,e,i,n){if(t=Gt(t))return t=Wt(t),null!=e&&(t[0]=kt(e)),null!=i&&(t[1]=Ot(i)),null!=n&&(t[2]=Ot(n)),qt(Ft(t),"rgba")}function Yt(t,e){if((t=Gt(t))&&null!=e)return t[3]=Pt(e),qt(t,"rgba")}function qt(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}function Kt(t,e){return t[e]}function $t(t,e,i){t[e]=i}function Jt(t,e,i){return(e-t)*i+t}function Qt(t,e,i){return i>.5?e:t}function te(t,e,i,n,o){var a=t.length;if(1===o)for(s=0;so)t.length=o;else for(r=n;r=0&&!(m[i]<=e);i--);i=Math.min(i,u-2)}else{for(i=L;ie);i++);i=Math.min(i-1,u-2)}L=i,k=e;var n=m[i+1]-m[i];if(0!==n)if(I=(e-m[i])/n,l)if(A=v[i],T=v[0===i?i:i-1],D=v[i>u-2?u-1:i+1],C=v[i>u-3?u-1:i+2],d)ne(T,A,D,C,I,I*I,I*I*I,r(t,o),g);else{if(f)a=ne(T,A,D,C,I,I*I,I*I*I,P,1),a=re(P);else{if(p)return Qt(A,D,I);a=oe(T,A,D,C,I,I*I,I*I*I)}s(t,o,a)}else if(d)te(v[i],v[i+1],I,r(t,o),g);else{var a;if(f)te(v[i],v[i+1],I,P,1),a=re(P);else{if(p)return Qt(v[i],v[i+1],I);a=Jt(v[i],v[i+1],I)}s(t,o,a)}},ondestroy:i});return e&&"spline"!==e&&(N.easing=e),N}}}function ue(t,e,i,n,o,a,r,s){_(n)?(a=o,o=n,n=0):x(o)?(a=o,o="linear",n=0):x(n)?(a=n,n=0):x(i)?(a=i,i=500):i||(i=500),t.stopAnimation(),he(t,"",t,e,i,n,s);var l=t.animators.slice(),u=l.length;u||a&&a();for(var h=0;h0&&t.animate(e,!1).when(null==o?500:o,s).delay(a||0)}function ce(t,e,i,n){if(e){var o={};o[e]={},o[e][i]=n,t.attr(o)}else t.attr(i,n)}function de(t,e,i,n){i<0&&(t+=i,i=-i),n<0&&(e+=n,n=-n),this.x=t,this.y=e,this.width=i,this.height=n}function fe(t){for(var e=0;t>=eb;)e|=1&t,t>>=1;return t+e}function pe(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o=0;)o++;return o-e}function ge(t,e,i){for(i--;e>>1])<0?l=a:s=a+1;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=r}}function ve(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])>0){for(s=n-o;l0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}else{for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r>>1);a(t,e[i+h])>0?r=h+1:l=h}return l}function ye(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l=0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}for(r++;r>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function xe(t,e){function i(i){var s=a[i],u=r[i],h=a[i+1],c=r[i+1];r[i]=u+c,i===l-3&&(a[i+1]=a[i+2],r[i+1]=r[i+2]),l--;var d=ye(t[h],t,s,u,0,e);s+=d,0!==(u-=d)&&0!==(c=ve(t[s+u-1],t,h,c,c-1,e))&&(u<=c?n(s,u,h,c):o(s,u,h,c))}function n(i,n,o,a){var r=0;for(r=0;r=ib||f>=ib);if(p)break;g<0&&(g=0),g+=2}if((s=g)<1&&(s=1),1===n){for(r=0;r=0;r--)t[f+r]=t[d+r];if(0===n){v=!0;break}}if(t[c--]=u[h--],1==--a){v=!0;break}if(0!=(m=a-ve(t[l],u,0,a,a-1,e))){for(a-=m,f=(c-=m)+1,d=(h-=m)+1,r=0;r=ib||m>=ib);if(v)break;p<0&&(p=0),p+=2}if((s=p)<1&&(s=1),1===a){for(f=(c-=n)+1,d=(l-=n)+1,r=n-1;r>=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else{if(0===a)throw new Error;for(d=c-(a-1),r=0;r=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else for(d=c-(a-1),r=0;r1;){var t=l-2;if(t>=1&&r[t-1]<=r[t]+r[t+1]||t>=2&&r[t-2]<=r[t]+r[t-1])r[t-1]r[t+1])break;i(t)}},this.forceMergeRuns=function(){for(;l>1;){var t=l-2;t>0&&r[t-1]s&&(l=s),me(t,i,i+l,i+a,e),a=l}r.pushRun(i,a),r.mergeRuns(),o-=a,i+=a}while(0!==o);r.forceMergeRuns()}}function we(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function be(t,e,i){var n=null==e.x?0:e.x,o=null==e.x2?1:e.x2,a=null==e.y?0:e.y,r=null==e.y2?0:e.y2;return e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y),n=isNaN(n)?0:n,o=isNaN(o)?1:o,a=isNaN(a)?0:a,r=isNaN(r)?0:r,t.createLinearGradient(n,a,o,r)}function Se(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(r=r*n+i.x,s=s*o+i.y,l*=a),t.createRadialGradient(r,s,0,r,s,l)}function Me(){return!1}function Ie(t,e,i){var n=iw(),o=e.getWidth(),a=e.getHeight(),r=n.style;return r&&(r.position="absolute",r.left=0,r.top=0,r.width=o+"px",r.height=a+"px",n.setAttribute("data-zr-dom-id",t)),n.width=o*i,n.height=a*i,n}function Te(t){if("string"==typeof t){var e=mb.get(t);return e&&e.image}return t}function Ae(t,e,i,n,o){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!i)return e;var a=mb.get(t),r={hostEl:i,cb:n,cbPayload:o};return a?!Ce(e=a.image)&&a.pending.push(r):((e=new Image).onload=e.onerror=De,mb.put(t,e.__cachedImgObj={image:e,pending:[r]}),e.src=e.__zrImageSrc=t),e}return t}return e}function De(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;exb&&(yb=0,vb={}),yb++,vb[i]=o,o}function ke(t,e,i,n,o,a,r,s){return r?Ne(t,e,i,n,o,a,r,s):Pe(t,e,i,n,o,a,s)}function Pe(t,e,i,n,o,a,r){var s=He(t,e,o,a,r),l=Le(t,e);o&&(l+=o[1]+o[3]);var u=s.outerHeight,h=new de(Oe(0,l,i),Ee(0,u,n),l,u);return h.lineHeight=s.lineHeight,h}function Ne(t,e,i,n,o,a,r,s){var l=Ze(t,{rich:r,truncate:s,font:e,textAlign:i,textPadding:o,textLineHeight:a}),u=l.outerWidth,h=l.outerHeight;return new de(Oe(0,u,i),Ee(0,h,n),u,h)}function Oe(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function Ee(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function Re(t,e,i){var n=e.x,o=e.y,a=e.height,r=e.width,s=a/2,l="left",u="top";switch(t){case"left":n-=i,o+=s,l="right",u="middle";break;case"right":n+=i+r,o+=s,u="middle";break;case"top":n+=r/2,o-=i,l="center",u="bottom";break;case"bottom":n+=r/2,o+=a+i,l="center";break;case"inside":n+=r/2,o+=s,l="center",u="middle";break;case"insideLeft":n+=i,o+=s,u="middle";break;case"insideRight":n+=r-i,o+=s,l="right",u="middle";break;case"insideTop":n+=r/2,o+=i,l="center";break;case"insideBottom":n+=r/2,o+=a-i,l="center",u="bottom";break;case"insideTopLeft":n+=i,o+=i;break;case"insideTopRight":n+=r-i,o+=i,l="right";break;case"insideBottomLeft":n+=i,o+=a-i,u="bottom";break;case"insideBottomRight":n+=r-i,o+=a-i,l="right",u="bottom"}return{x:n,y:o,textAlign:l,textVerticalAlign:u}}function ze(t,e,i,n,o){if(!e)return"";var a=(t+"").split("\n");o=Be(e,i,n,o);for(var r=0,s=a.length;r=r;l++)s-=r;var u=Le(i,e);return u>s&&(i="",u=0),s=t-u,n.ellipsis=i,n.ellipsisWidth=u,n.contentWidth=s,n.containerWidth=t,n}function Ve(t,e){var i=e.containerWidth,n=e.font,o=e.contentWidth;if(!i)return"";var a=Le(t,n);if(a<=i)return t;for(var r=0;;r++){if(a<=o||r>=e.maxIterations){t+=e.ellipsis;break}var s=0===r?Ge(t,o,e.ascCharWidth,e.cnCharWidth):a>0?Math.floor(t.length*o/a):0;a=Le(t=t.substr(0,s),n)}return""===t&&(t=e.placeholder),t}function Ge(t,e,i,n){for(var o=0,a=0,r=t.length;au)t="",r=[];else if(null!=h)for(var c=Be(h-(i?i[1]+i[3]:0),e,o.ellipsis,{minChar:o.minChar,placeholder:o.placeholder}),d=0,f=r.length;do&&Ue(i,t.substring(o,a)),Ue(i,n[2],n[1]),o=_b.lastIndex}of)return{lines:[],width:0,height:0};k.textWidth=Le(k.text,_);var b=y.textWidth,S=null==b||"auto"===b;if("string"==typeof b&&"%"===b.charAt(b.length-1))k.percentWidth=b,u.push(k),b=0;else{if(S){b=k.textWidth;var M=y.textBackgroundColor,I=M&&M.image;I&&Ce(I=Te(I))&&(b=Math.max(b,I.width*w/I.height))}var T=x?x[1]+x[3]:0;b+=T;var C=null!=d?d-m:null;null!=C&&Cl&&(i*=l/(c=i+n),n*=l/c),o+a>l&&(o*=l/(c=o+a),a*=l/c),n+o>u&&(n*=u/(c=n+o),o*=u/c),i+a>u&&(i*=u/(c=i+a),a*=u/c),t.moveTo(r+i,s),t.lineTo(r+l-n,s),0!==n&&t.arc(r+l-n,s+n,n,-Math.PI/2,0),t.lineTo(r+l,s+u-o),0!==o&&t.arc(r+l-o,s+u-o,o,0,Math.PI/2),t.lineTo(r+a,s+u),0!==a&&t.arc(r+a,s+u-a,a,Math.PI/2,Math.PI),t.lineTo(r,s+i),0!==i&&t.arc(r+i,s+i,i,Math.PI,1.5*Math.PI)}function Ye(t){return qe(t),d(t.rich,qe),t}function qe(t){if(t){t.font=Xe(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Mb[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||Ib[i]?i:"top",t.textPadding&&(t.textPadding=L(t.textPadding))}}function Ke(t,e,i,n,o,a){n.rich?Je(t,e,i,n,o,a):$e(t,e,i,n,o,a)}function $e(t,e,i,n,o,a){var r,s=ii(n),l=!1,u=e.__attrCachedBy===rb.PLAIN_TEXT;a!==sb?(a&&(r=a.style,l=!s&&u&&r),e.__attrCachedBy=s?rb.NONE:rb.PLAIN_TEXT):u&&(e.__attrCachedBy=rb.NONE);var h=n.font||Sb;l&&h===(r.font||Sb)||(e.font=h);var c=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,c=t.__computedFont=e.font);var d=n.textPadding,f=n.textLineHeight,p=t.__textCotentBlock;p&&!t.__dirtyText||(p=t.__textCotentBlock=He(i,c,d,f,n.truncate));var g=p.outerHeight,m=p.lines,v=p.lineHeight,y=ai(g,n,o),x=y.baseX,_=y.baseY,w=y.textAlign||"left",b=y.textVerticalAlign;ti(e,n,o,x,_);var S=Ee(_,g,b),M=x,I=S;if(s||d){var T=Le(i,c);d&&(T+=d[1]+d[3]);var A=Oe(x,T,w);s&&ni(t,e,n,A,S,T,g),d&&(M=hi(x,w,d),I+=d[0])}e.textAlign=w,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(B=0;B=0&&"right"===(_=b[C]).textAlign;)ei(t,e,_,n,M,v,D,"right"),I-=_.width,D-=_.width,C--;for(A+=(a-(A-m)-(y-D)-I)/2;T<=C;)ei(t,e,_=b[T],n,M,v,A+_.width/2,"center"),A+=_.width,T++;v+=M}}function ti(t,e,i,n,o){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,o=i.height/2+i.y):a&&(n=a[0]+i.x,o=a[1]+i.y),t.translate(n,o),t.rotate(-e.textRotation),t.translate(-n,-o)}}function ei(t,e,i,n,o,a,r,s){var l=n.rich[i.styleName]||{};l.text=i.text;var u=i.textVerticalAlign,h=a+o/2;"top"===u?h=a+i.height/2:"bottom"===u&&(h=a+o-i.height/2),!i.isLineHolder&&ii(l)&&ni(t,e,l,"right"===s?r-i.width:"center"===s?r-i.width/2:r,h-i.height/2,i.width,i.height);var c=i.textPadding;c&&(r=hi(r,s,c),h-=i.height/2-c[2]-i.textHeight/2),ri(e,"shadowBlur",D(l.textShadowBlur,n.textShadowBlur,0)),ri(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),ri(e,"shadowOffsetX",D(l.textShadowOffsetX,n.textShadowOffsetX,0)),ri(e,"shadowOffsetY",D(l.textShadowOffsetY,n.textShadowOffsetY,0)),ri(e,"textAlign",s),ri(e,"textBaseline","middle"),ri(e,"font",i.font||Sb);var d=si(l.textStroke||n.textStroke,p),f=li(l.textFill||n.textFill),p=A(l.textStrokeWidth,n.textStrokeWidth);d&&(ri(e,"lineWidth",p),ri(e,"strokeStyle",d),e.strokeText(i.text,r,h)),f&&(ri(e,"fillStyle",f),e.fillText(i.text,r,h))}function ii(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function ni(t,e,i,n,o,a,r){var s=i.textBackgroundColor,l=i.textBorderWidth,u=i.textBorderColor,h=_(s);if(ri(e,"shadowBlur",i.textBoxShadowBlur||0),ri(e,"shadowColor",i.textBoxShadowColor||"transparent"),ri(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),ri(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=i.textBorderRadius;c?je(e,{x:n,y:o,width:a,height:r,r:c}):e.rect(n,o,a,r),e.closePath()}if(h)if(ri(e,"fillStyle",s),null!=i.fillOpacity){f=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=f}else e.fill();else if(w(s)){var d=s.image;(d=Ae(d,null,t,oi,s))&&Ce(d)&&e.drawImage(d,n,o,a,r)}if(l&&u)if(ri(e,"lineWidth",l),ri(e,"strokeStyle",u),null!=i.strokeOpacity){var f=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=f}else e.stroke()}function oi(t,e){e.image=t}function ai(t,e,i){var n=e.x||0,o=e.y||0,a=e.textAlign,r=e.textVerticalAlign;if(i){var s=e.textPosition;if(s instanceof Array)n=i.x+ui(s[0],i.width),o=i.y+ui(s[1],i.height);else{var l=Re(s,i,e.textDistance);n=l.x,o=l.y,a=a||l.textAlign,r=r||l.textVerticalAlign}var u=e.textOffset;u&&(n+=u[0],o+=u[1])}return{baseX:n,baseY:o,textAlign:a,textVerticalAlign:r}}function ri(t,e,i){return t[e]=ab(t,e,i),t[e]}function si(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function li(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function ui(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function hi(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function ci(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function di(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new ub(t.style,this),this._rect=null,this.__clipPaths=[]}function fi(t){di.call(this,t)}function pi(t){return parseInt(t,10)}function gi(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function mi(t,e,i){return Cb.copy(t.getBoundingRect()),t.transform&&Cb.applyTransform(t.transform),Lb.width=e,Lb.height=i,!Cb.intersect(Lb)}function vi(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i=i.length&&i.push({option:t})}}),i}function Ni(t){var e=R();Zb(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),Zb(t,function(t,i){var n=t.option;k(!n||null==n.id||!e.get(n.id)||e.get(n.id)===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&e.set(n.id,t),!t.keyInfo&&(t.keyInfo={})}),Zb(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(Ub(o)){if(a.name=null!=o.name?o.name+"":n?n.name:jb+i,n)a.id=n.id;else if(null!=o.id)a.id=o.id+"";else{var r=0;do{a.id="\0"+a.name+"\0"+r++}while(e.get(a.id))}e.set(a.id,t)}})}function Oi(t){var e=t.name;return!(!e||!e.indexOf(jb))}function Ei(t){return Ub(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Ri(t,e){function i(t,e,i){for(var n=0,o=t.length;n-rS&&trS||t<-rS}function tn(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function en(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function nn(t,e,i,n,o,a){var r=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),u=t-o,h=s*s-3*r*l,c=s*l-9*r*u,d=l*l-3*s*u,f=0;if(Ji(h)&&Ji(c))Ji(s)?a[0]=0:(M=-l/s)>=0&&M<=1&&(a[f++]=M);else{var p=c*c-4*h*d;if(Ji(p)){var g=c/h,m=-g/2;(M=-s/r+g)>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m)}else if(p>0){var v=aS(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);(M=(-s-((y=y<0?-oS(-y,uS):oS(y,uS))+(x=x<0?-oS(-x,uS):oS(x,uS))))/(3*r))>=0&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*aS(h*h*h)),w=Math.acos(_)/3,b=aS(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),m=(-s+b*(S+lS*Math.sin(w)))/(3*r),I=(-s+b*(S-lS*Math.sin(w)))/(3*r);M>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m),I>=0&&I<=1&&(a[f++]=I)}}return f}function on(t,e,i,n,o){var a=6*i-12*e+6*t,r=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if(Ji(r))Qi(a)&&(c=-s/a)>=0&&c<=1&&(o[l++]=c);else{var u=a*a-4*r*s;if(Ji(u))o[0]=-a/(2*r);else if(u>0){var h=aS(u),c=(-a+h)/(2*r),d=(-a-h)/(2*r);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function an(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,h=(l-s)*o+s,c=(h-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=c,a[4]=c,a[5]=h,a[6]=l,a[7]=n}function rn(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;hS[0]=l,hS[1]=u;for(var y=0;y<1;y+=.05)cS[0]=tn(t,i,o,r,y),cS[1]=tn(e,n,a,s,y),(p=hw(hS,cS))=0&&p=0&&c<=1&&(o[l++]=c);else{var u=r*r-4*a*s;if(Ji(u))(c=-r/(2*a))>=0&&c<=1&&(o[l++]=c);else if(u>0){var h=aS(u),c=(-r+h)/(2*a),d=(-r-h)/(2*a);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function hn(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function cn(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}function dn(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;hS[0]=r,hS[1]=s;for(var d=0;d<1;d+=.05)cS[0]=sn(t,i,o,d),cS[1]=sn(e,n,a,d),(m=hw(hS,cS))=0&&m1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(yS[0]=mS(o)*i+t,yS[1]=gS(o)*n+e,xS[0]=mS(a)*i+t,xS[1]=gS(a)*n+e,u(s,yS,xS),h(l,yS,xS),(o%=vS)<0&&(o+=vS),(a%=vS)<0&&(a+=vS),o>a&&!r?a+=vS:oo&&(_S[0]=mS(f)*i+t,_S[1]=gS(f)*n+e,u(s,_S,s),h(l,_S,l))}function yn(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0,u=t;if(r>e+s&&r>n+s||rt+s&&a>i+s||ae+c&&h>n+c&&h>a+c&&h>s+c||ht+c&&u>i+c&&u>o+c&&u>r+c||ue+u&&l>n+u&&l>a+u||lt+u&&s>i+u&&s>o+u||si||h+uo&&(o+=zS);var d=Math.atan2(l,s);return d<0&&(d+=zS),d>=n&&d<=o||d+zS>=n&&d+zS<=o}function Sn(t,e,i,n,o,a){if(a>e&&a>n||ao?r:0}function Mn(t,e){return Math.abs(t-e)e&&u>n&&u>a&&u>s||u1&&In(),c=tn(e,n,a,s,WS[0]),p>1&&(d=tn(e,n,a,s,WS[1]))),2===p?me&&s>n&&s>a||s=0&&u<=1){for(var h=0,c=sn(e,n,a,u),d=0;di||s<-i)return 0;u=Math.sqrt(i*i-s*s);FS[0]=-u,FS[1]=u;var l=Math.abs(n-o);if(l<1e-4)return 0;if(l%VS<1e-4){n=0,o=VS;p=a?1:-1;return r>=FS[0]+t&&r<=FS[1]+t?p:0}if(a){var u=n;n=wn(o),o=wn(u)}else n=wn(n),o=wn(o);n>o&&(o+=VS);for(var h=0,c=0;c<2;c++){var d=FS[c];if(d+t>r){var f=Math.atan2(s,d),p=a?1:-1;f<0&&(f=VS+f),(f>=n&&f<=o||f+VS>=n&&f+VS<=o)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function Cn(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h1&&(i||(a+=Sn(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case BS.M:r=l=t[h++],s=u=t[h++];break;case BS.L:if(i){if(yn(r,s,t[h],t[h+1],e,n,o))return!0}else a+=Sn(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.C:if(i){if(xn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=Tn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.Q:if(i){if(_n(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=An(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.A:var d=t[h++],f=t[h++],p=t[h++],g=t[h++],m=t[h++],v=t[h++];h+=1;var y=1-t[h++],x=Math.cos(m)*p+d,_=Math.sin(m)*g+f;h>1?a+=Sn(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(bn(d,f,g,m,m+v,y,e,w,o))return!0}else a+=Dn(d,f,g,m,m+v,y,w,o);r=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case BS.R:l=r=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(i){if(yn(l,u,x,u,e,n,o)||yn(x,u,x,_,e,n,o)||yn(x,_,l,_,e,n,o)||yn(l,_,l,u,e,n,o))return!0}else a+=Sn(x,u,x,_,n,o),a+=Sn(l,_,l,u,n,o);break;case BS.Z:if(i){if(yn(r,s,l,u,e,n,o))return!0}else a+=Sn(r,s,l,u,n,o);r=l,s=u}}return i||Mn(s,u)||(a+=Sn(r,s,l,u,n,o)||0),0!==a}function Ln(t,e,i){return Cn(t,0,!1,e,i)}function kn(t,e,i,n){return Cn(t,e,!0,i,n)}function Pn(t){di.call(this,t),this.path=null}function Nn(t,e,i,n,o,a,r,s,l,u,h){var c=l*(tM/180),d=QS(c)*(t-i)/2+JS(c)*(e-n)/2,f=-1*JS(c)*(t-i)/2+QS(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);p>1&&(r*=$S(p),s*=$S(p));var g=(o===a?-1:1)*$S((r*r*(s*s)-r*r*(f*f)-s*s*(d*d))/(r*r*(f*f)+s*s*(d*d)))||0,m=g*r*f/s,v=g*-s*d/r,y=(t+i)/2+QS(c)*m-JS(c)*v,x=(e+n)/2+JS(c)*m+QS(c)*v,_=nM([1,0],[(d-m)/r,(f-v)/s]),w=[(d-m)/r,(f-v)/s],b=[(-1*d-m)/r,(-1*f-v)/s],S=nM(w,b);iM(w,b)<=-1&&(S=tM),iM(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*tM),1===a&&S<0&&(S+=2*tM),h.addData(u,y,x,r,s,_,S,c,a)}function On(t){if(!t)return new ES;for(var e,i=0,n=0,o=i,a=n,r=new ES,s=ES.CMD,l=t.match(oM),u=0;u=2){if(o&&"spline"!==o){var a=fM(n,o,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var r=n.length,s=0;s<(i?r:r-1);s++){var l=a[2*s],u=a[2*s+1],h=n[(s+1)%r];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===o&&(n=dM(n,i)),t.moveTo(n[0][0],n[0][1]);for(var s=1,c=n.length;s=0)?(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))):null!=a&&(i={textFill:null},t.textFill=a),i&&(t.insideRollback=i)}}function bo(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function So(t,e){var i=e||e.getModel("textStyle");return P([t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" "))}function Mo(t,e,i,n,o,a){if("function"==typeof o&&(a=o,o=null),n&&n.isAnimationEnabled()){var r=t?"Update":"",s=n.getShallow("animationDuration"+r),l=n.getShallow("animationEasing"+r),u=n.getShallow("animationDelay"+r);"function"==typeof u&&(u=u(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof s&&(s=s(o)),s>0?e.animateTo(i,s,u||0,l,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function Io(t,e,i,n,o){Mo(!0,t,e,i,n,o)}function To(t,e,i,n,o){Mo(!1,t,e,i,n,o)}function Ao(t,e){for(var i=_t([]);t&&t!==e;)bt(i,t.getLocalTransform(),i),t=t.parent;return i}function Do(t,e,i){return e&&!c(e)&&(e=Tw.getLocalTransform(e)),i&&(e=Tt([],e)),Q([],t,e)}function Co(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=Do(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Lo(t,e,i,n){function o(t){var e={position:F(t.position),rotation:t.rotation};return t.shape&&(e.shape=a({},t.shape)),e}if(t&&e){var r=function(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=r[t.anid];if(e){var n=o(t);t.attr(o(e)),Io(t,n,i,t.dataIndex)}}})}}function ko(t,e){return f(t,function(t){var i=t[0];i=LM(i,e.x),i=kM(i,e.x+e.width);var n=t[1];return n=LM(n,e.y),n=kM(n,e.y+e.height),[i,n]})}function Po(t,e,i){var n=(e=a({rectHover:!0},e)).style={strokeNoScale:!0};if(i=i||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(n.image=t.slice(8),r(n,i),new fi(e)):Xn(t.replace("path://",""),e,i,"center")}function No(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function Oo(t,e,i){for(var n=0;n0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]}function Vo(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?zo(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Go(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Fo(t){return t.sort(function(t,e){return t-e}),t}function Wo(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Ho(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var o=e.indexOf(".");return o<0?0:e.length-1-o}function Zo(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20}function Uo(t,e,i){if(!t[e])return 0;var n=p(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var o=Math.pow(10,i),a=f(t,function(t){return(isNaN(t)?0:t)/n*o*100}),r=100*o,s=f(a,function(t){return Math.floor(t)}),l=p(s,function(t,e){return t+e},0),u=f(a,function(t,e){return t-s[e]});lh&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/o}function Xo(t){var e=2*Math.PI;return(t%e+e)%e}function jo(t){return t>-UM&&t=-20?+t.toFixed(n<0?-n:0):t}function Jo(t){function e(t,i,n){return t.interval[n]=0}function ta(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function ea(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}function ia(t){return null==t?"":(t+"").replace(KM,function(t,e){return $M[e]})}function na(t,e,i){y(e)||(e=[e]);var n=e.length;if(!n)return"";for(var o=e[0].$vars||[],a=0;a':'':{renderMode:o,content:"{marker"+a+"|} ",style:{color:i}}:""}function ra(t,e){return t+="","0000".substr(0,e-t.length)+t}function sa(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Yo(e),o=i?"UTC":"",a=n["get"+o+"FullYear"](),r=n["get"+o+"Month"]()+1,s=n["get"+o+"Date"](),l=n["get"+o+"Hours"](),u=n["get"+o+"Minutes"](),h=n["get"+o+"Seconds"](),c=n["get"+o+"Milliseconds"]();return t=t.replace("MM",ra(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",ra(s,2)).replace("d",s).replace("hh",ra(l,2)).replace("h",l).replace("mm",ra(u,2)).replace("m",u).replace("ss",ra(h,2)).replace("s",h).replace("SSS",ra(c,3))}function la(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function ua(t,e,i,n,o){var a=0,r=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);(h=a+m)>n||l.newline?(a=0,h=m,r+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(c=r+v)>o||l.newline?(a+=s+i,r=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=r,"horizontal"===t?a=h+i:r=c+i)})}function ha(t,e,i){var n=e.width,o=e.height,a=Vo(t.x,n),r=Vo(t.y,o),s=Vo(t.x2,n),l=Vo(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=o),i=qM(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}function ca(t,e,i){i=qM(i||0);var n=e.width,o=e.height,a=Vo(t.left,n),r=Vo(t.top,o),s=Vo(t.right,n),l=Vo(t.bottom,o),u=Vo(t.width,n),h=Vo(t.height,o),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-a),isNaN(h)&&(h=o-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(f>n/o?u=.8*n:h=.8*o),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(a)&&(a=n-s-u-d),isNaN(r)&&(r=o-l-h-c),t.left||t.right){case"center":a=n/2-u/2-i[3];break;case"right":a=n-u-d}switch(t.top||t.bottom){case"middle":case"center":r=o/2-h/2-i[0];break;case"bottom":r=o-h-c}a=a||0,r=r||0,isNaN(u)&&(u=n-d-a-(s||0)),isNaN(h)&&(h=o-c-r-(l||0));var p=new de(a+i[3],r+i[0],u,h);return p.margin=i,p}function da(t,e,i,n,o){var a=!o||!o.hv||o.hv[0],s=!o||!o.hv||o.hv[1],l=o&&o.boundingMode||"all";if(a||s){var u;if("raw"===l)u="group"===t.type?new de(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(u=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(u=u.clone()).applyTransform(h)}e=ca(r({width:u.width,height:u.height},e),i,n);var c=t.position,d=a?e.x-u.x:0,f=s?e.y-u.y:0;t.attr("position","raw"===l?[d,f]:[c[0]+d,c[1]+f])}}function fa(t,e){return null!=t[oI[e][0]]||null!=t[oI[e][1]]&&null!=t[oI[e][2]]}function pa(t,e,i){function n(i,n){var r={},l=0,u={},h=0;if(iI(i,function(e){u[e]=t[e]}),iI(i,function(t){o(e,t)&&(r[t]=u[t]=e[t]),a(r,t)&&l++,a(u,t)&&h++}),s[n])return a(e,i[1])?u[i[2]]=null:a(e,i[2])&&(u[i[1]]=null),u;if(2!==h&&l){if(l>=2)return r;for(var c=0;ce)return t[n];return t[i-1]}function ya(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:R(),categoryAxisMap:R()},n=fI[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}function xa(t){return"category"===t.get("type")}function _a(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===vI?{}:[]),this.sourceFormat=t.sourceFormat||yI,this.seriesLayoutBy=t.seriesLayoutBy||_I,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&R(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function wa(t){var e=t.option.source,i=yI;if(S(e))i=xI;else if(y(e)){0===e.length&&(i=gI);for(var n=0,o=e.length;n=e:"max"===i?t<=e:t===e}function Xa(t,e){return t.join(",")===e.join(",")}function ja(t,e){AI(e=e||{},function(e,i){if(null!=e){var n=t[i];if(lI.hasClass(i)){e=Di(e);var o=Pi(n=Di(n),e);t[i]=CI(o,function(t){return t.option&&t.exist?LI(t.exist,t.option,!0):t.exist||t.option})}else t[i]=LI(n,e,!0)}})}function Ya(t){var e=t&&t.itemStyle;if(e)for(var i=0,o=OI.length;i=0;p--){var g=t[p];if(s||(d=g.data.rawIndexOf(g.stackedByDimension,c)),d>=0){var m=g.data.getByRawIndex(g.stackResultDimension,d);if(h>=0&&m>0||h<=0&&m<0){h+=m,f=m;break}}}return n[0]=h,n[1]=f,n});r.hostModel.setData(l),e.data=l})}function rr(t,e){_a.isInstance(t)||(t=_a.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===xI&&(this._offset=0,this._dimSize=e,this._data=i),a(this,GI[n===gI?n+"_"+t.seriesLayoutBy:n])}function sr(){return this._data.length}function lr(t){return this._data[t]}function ur(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Mr(t,e){d(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,v(Ir,e))})}function Ir(t){var e=Tr(t);e&&e.setOutputEnd(this.count())}function Tr(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var o=n.agentStubMap;o&&(n=o.get(t.uid))}return n}}function Ar(){this.group=new tb,this.uid=Ro("viewChart"),this.renderTask=gr({plan:Lr,reset:kr}),this.renderTask.context={view:this}}function Dr(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i=0?n():c=setTimeout(n,-a),u=o};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){l=t},d}function Nr(t,e,i,n){var o=t[e];if(o){var a=o[iT]||o,r=o[oT];if(o[nT]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=Pr(a,i,"debounce"===n))[iT]=a,o[oT]=n,o[nT]=i}return o}}function Or(t,e){var i=t[e];i&&i[iT]&&(t[e]=i[iT])}function Er(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;var i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=R()}function Rr(t,e,i,n,o){function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}o=o||{};var r;d(e,function(e,s){if(!o.visualType||o.visualType===e.visualType){var l=t._stageTaskMap.get(e.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,d=h.agentStubMap;d.each(function(t){a(o,t)&&(t.dirty(),c=!0)}),c&&h.dirty(),hT(h,n);var f=t.getPerformArgs(h,o.block);d.each(function(t){t.perform(f)}),r|=h.perform(f)}else u&&u.each(function(s,l){a(o,s)&&s.dirty();var u=t.getPerformArgs(s,o.block);u.skip=!e.performRawSeries&&i.isSeriesFiltered(s.context.model),hT(s,n),r|=s.perform(u)})}}),t.unfinished|=r}function zr(t,e,i,n,o){function a(i){var a=i.uid,s=r.get(a)||r.set(a,gr({plan:Hr,reset:Zr,count:Xr}));s.context={model:i,ecModel:n,api:o,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},jr(t,i,s)}var r=i.seriesTaskMap||(i.seriesTaskMap=R()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(a):s?n.eachRawSeriesByType(s,a):l&&l(n,o).each(a);var u=t._pipelineMap;r.each(function(t,e){u.get(e)||(t.dispose(),r.removeKey(e))})}function Br(t,e,i,n,o){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,gr({reset:Gr,onDirty:Wr})),r.dirty()),n.context={model:e,overallProgress:h,modifyOutputEnd:c},n.agent=r,n.__block=h,jr(t,e,n)}var r=i.overallTask=i.overallTask||gr({reset:Vr});r.context={ecModel:n,api:o,overallReset:e.overallReset,scheduler:t};var s=r.agentStubMap=r.agentStubMap||R(),l=e.seriesType,u=e.getTargetSeries,h=!0,c=e.modifyOutputEnd;l?n.eachRawSeriesByType(l,a):u?u(n,o).each(a):(h=!1,d(n.getSeries(),a));var f=t._pipelineMap;s.each(function(t,e){f.get(e)||(t.dispose(),r.dirty(),s.removeKey(e))})}function Vr(t){t.overallReset(t.ecModel,t.api,t.payload)}function Gr(t,e){return t.overallProgress&&Fr}function Fr(){this.agent.dirty(),this.getDownstream().dirty()}function Wr(){this.agent&&this.agent.dirty()}function Hr(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Zr(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Di(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?f(e,function(t,e){return Ur(e)}):cT}function Ur(t){return function(e,i){var n=i.data,o=i.resetDefines[t];if(o&&o.dataEach)for(var a=e.start;a0?parseInt(n,10)/100:n?parseFloat(n):0;var o=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,o)}i=i.nextSibling}}function Qr(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),r(e.__inheritedStyle,t.__inheritedStyle))}function ts(t){for(var e=P(t).split(_T),i=[],n=0;n0;a-=2){var r=o[a],s=o[a-1];switch(n=n||xt(),s){case"translate":r=P(r).split(_T),St(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=P(r).split(_T),It(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=P(r).split(_T),Mt(n,n,parseFloat(r[0]));break;case"skew":r=P(r).split(_T),console.warn("Skew transform is not supported yet");break;case"matrix":r=P(r).split(_T);n[0]=parseFloat(r[0]),n[1]=parseFloat(r[1]),n[2]=parseFloat(r[2]),n[3]=parseFloat(r[3]),n[4]=parseFloat(r[4]),n[5]=parseFloat(r[5])}}e.setLocalTransform(n)}}function os(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};TT.lastIndex=0;for(var o;null!=(o=TT.exec(e));)n[o[1]]=o[2];for(var a in ST)ST.hasOwnProperty(a)&&null!=n[a]&&(i[ST[a]]=n[a]);return i}function as(t,e,i){var n=e/t.width,o=i/t.height,a=Math.min(n,o);return{scale:[a,a],position:[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2]}}function rs(t,e){return(new $r).parse(t,e)}function ss(t){return function(e,i,n){e=e&&e.toLowerCase(),fw.prototype[t].call(this,e,i,n)}}function ls(){fw.call(this)}function us(t,e,n){function o(t,e){return t.__prio-e.__prio}n=n||{},"string"==typeof e&&(e=JT[e]),this.id,this.group,this._dom=t;var a=this._zr=Ii(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=Pr(m(a.flush,a),17),(e=i(e))&&BI(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Fa;var r=this._api=As(this);_e($T,o),_e(YT,o),this._scheduler=new Er(this,r,YT,$T),fw.call(this,this._ecEventProcessor=new Ds),this._messageCenter=new ls,this._initEvents(),this.resize=m(this.resize,this),this._pendingActions=[],a.animation.on("frame",this._onframe,this),vs(a,this),N(this)}function hs(t,e,i){var n,o=this._model,a=this._coordSysMgr.getCoordinateSystems();e=Vi(o,e);for(var r=0;re.get("hoverLayerThreshold")&&!U_.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function Is(t,e){var i=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==i&&t.setStyle("blend",i),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",i)})})}function Ts(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function As(t){var e=t._coordSysMgr;return a(new Ga(t),{getCoordinateSystems:m(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function Ds(){this.eventInfo}function Cs(t){function e(t,e){for(var n=0;n65535?dA:pA}function Js(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Qs(t,e){d(gA.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,d(mA,function(n){t[n]=i(e[n])}),t._calculationInfo=a(e._calculationInfo)}function tl(t,e,i,n,o){var a=cA[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length=0?this._indices[t]:-1}function al(t,e){var i=t._idList[e];return null==i&&(i=il(t,t._idDimIdx,e)),null==i&&(i=hA+e),i}function rl(t){return y(t)||(t=[t]),t}function sl(t,e){var i=t.dimensions,n=new vA(f(i,t.getDimensionInfo,t),t.hostModel);Qs(n,t);for(var o=n._storage={},a=t._storage,r=0;r=0?(o[s]=ll(a[s]),n._rawExtent[s]=ul(),n._extent[s]=null):o[s]=a[s])}return n}function ll(t){for(var e=new Array(t.length),i=0;in&&(r=o.interval=n);var s=o.intervalPrecision=Ml(r);return Tl(o.niceTickExtent=[MA(Math.ceil(t[0]/r)*r,s),MA(Math.floor(t[1]/r)*r,s)],t),o}function Ml(t){return Ho(t)+2}function Il(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Tl(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Il(t,0,e),Il(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Al(t,e,i,n){var o=[];if(!t)return o;e[0]1e4)return[];return e[1]>(o.length?o[o.length-1]:i[1])&&o.push(e[1]),o}function Dl(t){return t.get("stack")||AA+t.seriesIndex}function Cl(t){return t.dim+t.index}function Ll(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),o=0;o=0?"p":"n",b=m;p&&(o[r][_]||(o[r][_]={p:m,n:m}),b=o[r][_][w]);var S,M,I,T;if(g)S=b,M=(A=i.dataToPoint([x,_]))[1]+l,I=A[0]-m,T=u,Math.abs(I)a[1]?(n=a[1],o=a[0]):(n=a[0],o=a[1]);var r=e.toGlobalCoord(e.dataToCoord(0));return ro&&(r=o),r}function Vl(t,e){return VA(t,BA(e))}function Gl(t,e){var i,n,o,a=t.type,r=e.getMin(),s=e.getMax(),l=null!=r,u=null!=s,h=t.getExtent();"ordinal"===a?i=e.getCategories().length:(y(n=e.get("boundaryGap"))||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=Vo(n[0],1),n[1]=Vo(n[1],1),o=h[1]-h[0]||Math.abs(h[0])),null==r&&(r="ordinal"===a?i?0:NaN:h[0]-n[0]*o),null==s&&(s="ordinal"===a?i?i-1:NaN:h[1]+n[1]*o),"dataMin"===r?r=h[0]:"function"==typeof r&&(r=r({min:h[0],max:h[1]})),"dataMax"===s?s=h[1]:"function"==typeof s&&(s=s({min:h[0],max:h[1]})),(null==r||!isFinite(r))&&(r=NaN),(null==s||!isFinite(s))&&(s=NaN),t.setBlank(I(r)||I(s)||"ordinal"===a&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(r>0&&s>0&&!l&&(r=0),r<0&&s<0&&!u&&(s=0));var c=e.ecModel;if(c&&"time"===a){var f,p=kl("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=Pl(p),m=Fl(r,s,e,g);r=m.min,s=m.max}}return[r,s]}function Fl(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Ol(n,i.axis);if(void 0===r)return{min:t,max:e};var s=1/0;d(r,function(t){s=Math.min(t.offset,s)});var l=-1/0;d(r,function(t){l=Math.max(t.offset+t.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/a)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}function Wl(t,e){var i=Gl(t,e),n=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var r=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:o,minInterval:"interval"===r||"time"===r?e.get("minInterval"):null,maxInterval:"interval"===r||"time"===r?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)}function Hl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new SA(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new TA;default:return(xl.getClass(e)||TA).create(t)}}function Zl(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function Ul(t){var e=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof e?e=function(e){return function(i){return i=t.scale.getLabel(i),e.replace("{value}",null!=i?i:"")}}(e):"function"==typeof e?function(n,o){return null!=i&&(o=n-i),e(Xl(t,n),o)}:function(e){return t.scale.getLabel(e)}}function Xl(t,e){return"category"===t.type?t.scale.getLabel(e):e}function jl(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,o,a="category"===t.type,r=i.getExtent();o=a?i.count():(n=i.getTicks()).length;var s,l=t.getLabelModel(),u=Ul(t),h=1;o>40&&(h=Math.ceil(o/40));for(var c=0;c>1^-(1&s),l=l>>1^-(1&l),o=s+=o,a=l+=a,n.push([s/i,l/i])}return n}function ou(t){return"category"===t.type?ru(t):uu(t)}function au(t,e){return"category"===t.type?lu(t,e):{ticks:t.scale.getTicks()}}function ru(t){var e=t.getLabelModel(),i=su(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function su(t,e){var i=hu(t,"labels"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;return a=x(n)?vu(t,n):mu(t,r="auto"===n?fu(t):n),du(i,n,{labels:a,labelCategoryInterval:r})}function lu(t,e){var i=hu(t,"ticks"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;if(e.get("show")&&!t.scale.isBlank()||(a=[]),x(n))a=vu(t,n,!0);else if("auto"===n){var s=su(t,t.getLabelModel());r=s.labelCategoryInterval,a=f(s.labels,function(t){return t.tickValue})}else a=mu(t,r=n,!0);return du(i,n,{ticks:a,tickCategoryInterval:r})}function uu(t){var e=t.scale.getTicks(),i=Ul(t);return{labels:f(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function hu(t,e){return nD(t)[e]||(nD(t)[e]=[])}function cu(t,e){for(var i=0;i40&&(s=Math.max(1,Math.floor(r/40)));for(var l=a[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(n)),c=Math.abs(u*Math.sin(n)),d=0,f=0;l<=a[1];l+=s){var p=0,g=0,m=ke(i(l),e.font,"center","top");p=1.3*m.width,g=1.3*m.height,d=Math.max(d,p,7),f=Math.max(f,g,7)}var v=d/h,y=f/c;isNaN(v)&&(v=1/0),isNaN(y)&&(y=1/0);var x=Math.max(0,Math.floor(Math.min(v,y))),_=nD(t.model),w=_.lastAutoInterval,b=_.lastTickCount;return null!=w&&null!=b&&Math.abs(w-x)<=1&&Math.abs(b-r)<=1&&w>x?x=w:(_.lastTickCount=r,_.lastAutoInterval=x),x}function gu(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function mu(t,e,i){function n(t){l.push(i?t:{formattedLabel:o(t),rawLabel:a.getLabel(t),tickValue:t})}var o=Ul(t),a=t.scale,r=a.getExtent(),s=t.getLabelModel(),l=[],u=Math.max((e||0)+1,1),h=r[0],c=a.count();0!==h&&u>1&&c/u>2&&(h=Math.round(Math.ceil(h/u)*u));var d=Kl(t),f=s.get("showMinLabel")||d,p=s.get("showMaxLabel")||d;f&&h!==r[0]&&n(r[0]);for(var g=h;g<=r[1];g+=u)n(g);return p&&g!==r[1]&&n(r[1]),l}function vu(t,e,i){var n=t.scale,o=Ul(t),a=[];return d(n.getTicks(),function(t){var r=n.getLabel(t);e(t,r)&&a.push(i?t:{formattedLabel:o(t),rawLabel:r,tickValue:t})}),a}function yu(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}function xu(t,e,i,n,o){function a(t,e){return h?t>e:t0&&(t.coord-=u/(2*(e+1)))}),s={coord:e[r-1].coord+u},e.push(s)}var h=l[0]>l[1];a(e[0].coord,l[0])&&(o?e[0].coord=l[0]:e.shift()),o&&a(l[0],e[0].coord)&&e.unshift({coord:l[0]}),a(l[1],s.coord)&&(o?s.coord=l[1]:e.pop()),o&&a(s.coord,l[1])&&e.push({coord:l[1]})}}function _u(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return fr(t,e,i[0]);if(n){for(var o=[],a=0;a0?i=n[0]:n[1]<0&&(i=n[1]),i}function Ou(t,e,i,n){var o=NaN;t.stacked&&(o=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(o)&&(o=t.valueStart);var a=t.baseDataOffset,r=[];return r[a]=i.get(t.baseDim,n),r[1-a]=o,e.dataToPoint(r)}function Eu(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}function Ru(t){return isNaN(t[0])||isNaN(t[1])}function zu(t,e,i,n,o,a,r,s,l,u,h){return"none"!==u&&u?Bu.apply(this,arguments):Vu.apply(this,arguments)}function Bu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]);else if(l>0){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;_D(bD,g),bD[m]=g[m]+v,_D(SD,p),SD[m]=p[m]-v,t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Vu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),_D(bD,p);else if(l>0){var g=d+a,m=e[g];if(h)for(;m&&Ru(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||Ru(m))_D(SD,p);else{Ru(m)&&!h&&(m=p),U(wD,m,y);var x,_;if("x"===u||"y"===u){var w="x"===u?0:1;x=Math.abs(p[w]-y[w]),_=Math.abs(p[w]-m[w])}else x=uw(p,y),_=uw(p,m);xD(SD,p,wD,-l*(1-(v=_/(_+x))))}vD(bD,bD,s),yD(bD,bD,r),vD(SD,SD,s),yD(SD,SD,r),t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1]),xD(bD,p,wD,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Gu(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var o=0;on[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}function Fu(t,e){if(t.length===e.length){for(var i=0;ie[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function Zu(t,e,i){if(!i.valueDim)return[];for(var n=[],o=0,a=e.count();oa[1]&&a.reverse();var r=o.getExtent(),s=Math.PI/180;i&&(a[0]-=.5,a[1]+=.5);var l=new hM({shape:{cx:Go(t.cx,1),cy:Go(t.cy,1),r0:Go(a[0],1),r:Go(a[1],1),startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:o.inverse}});return e&&(l.shape.endAngle=-r[0]*s,To(l,{shape:{endAngle:-r[1]*s}},n)),l}function ju(t,e,i,n){return"polar"===t.type?Xu(t,e,i,n):Uu(t,e,i,n)}function Yu(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r=0;a--){var r=i[a].dimension,s=t.dimensions[r],l=t.getDimensionInfo(s);if("x"===(n=l&&l.coordDim)||"y"===n){o=i[a];break}}if(o){var u=e.getAxis(n),h=f(o.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,p=o.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var g=h[0].coord-10,m=h[c-1].coord+10,v=m-g;if(v<.001)return"transparent";d(h,function(t){t.offset=(t.coord-g)/v}),h.push({offset:c?h[c-1].offset:.5,color:p[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:p[0]||"transparent"});var y=new TM(0,0,0,0,h,!0);return y[n]=g,y[n+"2"]=m,y}}}function Ku(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!$u(a,e))){var r=e.mapDimension(a.dim),s={};return d(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function $u(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),r=0;rn)return!1;return!0}function Ju(t){return this._axes[t]}function Qu(t){LD.call(this,t)}function th(t,e){return e.type||(e.data?"category":"value")}function eh(t,e,i){return t.getCoordSysModel()===e}function ih(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function nh(t,e,i,n){function o(t){return t.dim+"_"+t.index}i.getAxesOnZeroOf=function(){return a?[a]:[]};var a,r=t[e],s=i.model,l=s.get("axisLine.onZero"),u=s.get("axisLine.onZeroAxisIndex");if(l){if(null!=u)oh(r[u])&&(a=r[u]);else for(var h in r)if(r.hasOwnProperty(h)&&oh(r[h])&&!n[o(r[h])]){a=r[h];break}a&&(n[o(a)]=!0)}}function oh(t){return t&&"category"!==t.type&&"time"!==t.type&&Zl(t)}function ah(t,e){var i=t.getExtent(),n=i[0]+i[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}function rh(t,e){return f(VD,function(e){return t.getReferringComponents(e)[0]})}function sh(t){return"cartesian2d"===t.get("coordinateSystem")}function lh(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function uh(t,e,i,n){var o,a,r=Xo(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return jo(r-GD/2)?(a=l?"bottom":"top",o="center"):jo(r-1.5*GD)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*GD&&r>GD/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function hh(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function ch(t,e,i){if(!Kl(t.axis)){var n=t.get("axisLabel.showMinLabel"),o=t.get("axisLabel.showMaxLabel");e=e||[],i=i||[];var a=e[0],r=e[1],s=e[e.length-1],l=e[e.length-2],u=i[0],h=i[1],c=i[i.length-1],d=i[i.length-2];!1===n?(dh(a),dh(u)):fh(a,r)&&(n?(dh(r),dh(h)):(dh(a),dh(u))),!1===o?(dh(s),dh(c)):fh(l,s)&&(o?(dh(l),dh(d)):(dh(s),dh(c)))}}function dh(t){t&&(t.ignore=!0)}function fh(t,e,i){var n=t&&t.getBoundingRect().clone(),o=e&&e.getBoundingRect().clone();if(n&&o){var a=_t([]);return Mt(a,a,-t.rotation),n.applyTransform(bt([],a,t.getLocalTransform())),o.applyTransform(bt([],a,e.getLocalTransform())),n.intersect(o)}}function ph(t){return"middle"===t||"center"===t}function gh(t,e,i){var n=e.axis;if(e.get("axisTick.show")&&!n.scale.isBlank()){for(var o=e.getModel("axisTick"),a=o.getModel("lineStyle"),s=o.get("length"),l=n.getTicksCoords(),u=[],h=[],c=t._transform,d=[],f=0;f=0||t===e}function Sh(t){var e=Mh(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=Th(i);null==a&&(o.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r0?"bottom":"top":o.width>0?"left":"right";l||kh(t.style,d,n,u,a,i,p),fo(t,d)}function Rh(t,e){var i=t.get(tC)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function zh(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=new nC({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__valueIdx:a});e.add(r),Bh(r,t,n)}function Bh(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),o=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(o),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}function Vh(t,e,i,n){var o=e.getData(),a=this.dataIndex,r=o.getName(a),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:r,seriesId:e.id}),o.each(function(t){Gh(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Gh(t,e,i,n,o){var a=(e.startAngle+e.endAngle)/2,r=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[r*l,s*l];o?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function Fh(t,e){function i(){a.ignore=a.hoverIgnore,r.ignore=r.hoverIgnore}function n(){a.ignore=a.normalIgnore,r.ignore=r.normalIgnore}tb.call(this);var o=new hM({z2:2}),a=new gM,r=new rM;this.add(o),this.add(a),this.add(r),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function Wh(t,e,i,n,o,a,r){function s(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function l(t,e,i,n,o,a){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s=r&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}t.sort(function(t,e){return t.y-e.y});for(var u,h=0,c=t.length,d=[],f=[],p=0;pe&&a+1t[a].y+t[a].height)return void s(a,n/2);s(i-1,n/2)}(p,c,-u),h=t[p].y+t[p].height;r-h<0&&s(c-1,h-r);for(p=0;p=i?f.push(t[p]):d.push(t[p]);l(d,!1,e,i,n,o),l(f,!0,e,i,n,o)}function Hh(t,e,i,n,o,a){for(var r=[],s=[],l=0;l3?1.4:o>1?1.2:1.1;hc(this,"zoom","zoomOnMouseWheel",t,{scale:n>0?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);hc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(n>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:a,originY:r})}}}function uc(t){ic(this._zr,"globalPan")||hc(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function hc(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(mw(n.event),cc(t,e,i,n,o))}function cc(t,e,i,n,o){o.isAvailableBehavior=m(dc,null,i,n),t.trigger(e,o)}function dc(t,e,i){var n=i[t];return!t||n&&(!_(n)||e.event[n+"Key"])}function fc(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function pc(t,e,i,n){var o=t.target,a=t.zoomLimit,r=o.position,s=o.scale,l=t.zoom=t.zoom||1;if(l*=e,a){var u=a.min||0,h=a.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}function gc(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!RC[n.mainType]&&o&&o.model!==i}function mc(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function vc(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(a){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var r=a.target;!r.__regions;)r=r.parent;if(r){var s={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",batch:f(r.__regions,function(t){return{name:t.name,from:o.uid}})};s[e.mainType+"Id"]=e.id,n.dispatchAction(s),yc(e,i)}}}))}function yc(t,e){e.eachChild(function(e){d(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function xc(t,e){var i=new tb;this.uid=Ro("ec_map_draw"),this._controller=new oc(t.getZr()),this._controllerHost={target:e?i:null},this.group=i,this._updateGroup=e,this._mouseDownFlag,this._mapName,this._initialized,i.add(this._regionsGroup=new tb),i.add(this._backgroundGroup=new tb)}function _c(t){var e=this[zC];e&&e.recordVersion===this[BC]&&wc(e,t)}function wc(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(mo({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=NM):(mo(i.style,n,{text:n.get("show")?r:null,textPosition:n.getShallow("position")||"bottom"},{isRectText:!0,useInsideStyle:!1}),i.dirty(!1),null!=i.__mapOriginalZ2&&(i.z2=i.__mapOriginalZ2,i.__mapOriginalZ2=null))}function bc(t,e,i){var n=t.getZoom(),o=t.getCenter(),a=e.zoom,r=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;o=t.pointToData(r);t.setCenter(o)}if(null!=a){if(i){var s=i.min||0,l=i.max||1/0;a=Math.max(Math.min(n*a,l),s)/n}t.scale[0]*=a,t.scale[1]*=a;var u=t.position,h=(e.originX-u[0])*(a-1),c=(e.originY-u[1])*(a-1);u[0]-=h,u[1]-=c,t.updateTransform();o=t.pointToData(r);t.setCenter(o),t.setZoom(a*n)}return{center:t.getCenter(),zoom:t.getZoom()}}function Sc(){Tw.call(this)}function Mc(t){this.name=t,this.zoomLimit,Tw.call(this),this._roamTransformable=new Sc,this._rawTransformable=new Sc,this._center,this._zoom}function Ic(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function Tc(t,e,i,n){Mc.call(this,t),this.map=e;var o=OC.load(e,i);this._nameCoordMap=o.nameCoordMap,this._regionsMap=o.regionsMap,this._invertLongitute=null==n||n,this.regions=o.regions,this._rect=o.boundingRect}function Ac(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}function Dc(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,r=this.getBoundingRect(),s=t.get("layoutCenter"),l=t.get("layoutSize"),u=e.getWidth(),h=e.getHeight(),c=r.width/r.height*this.aspectScale,d=!1;s&&l&&(s=[Vo(s[0],u),Vo(s[1],h)],l=Vo(l,Math.min(u,h)),isNaN(s[0])||isNaN(s[1])||isNaN(l)||(d=!0));if(d){var f={};c>1?(f.width=l,f.height=l/c):(f.height=l,f.width=l*c),f.y=s[1]-f.height/2,f.x=s[0]-f.width/2}else(a=t.getBoxLayoutParams()).aspect=c,f=ca(a,{width:u,height:h});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function Cc(t,e){d(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}function Lc(t,e){var i={};return d(t,function(t){t.each(t.mapDimension("value"),function(e,n){var o="ec-"+t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(t[0].mapDimension("value"),function(n,o){for(var a="ec-"+t[0].getName(o),r=0,s=1/0,l=-1/0,u=i[a].length,h=0;h=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},n.push(a)}}function Wc(t,e){var i=t.isExpand?t.children:[],n=t.parentNode.children,o=t.hierNode.i?n[t.hierNode.i-1]:null;if(i.length){jc(t);var a=(i[0].hierNode.prelim+i[i.length-1].hierNode.prelim)/2;o?(t.hierNode.prelim=o.hierNode.prelim+e(t,o),t.hierNode.modifier=t.hierNode.prelim-a):t.hierNode.prelim=a}else o&&(t.hierNode.prelim=o.hierNode.prelim+e(t,o));t.parentNode.hierNode.defaultAncestor=Yc(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Hc(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function Zc(t){return arguments.length?t:Qc}function Uc(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Xc(t,e){return ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function jc(t){for(var e=t.children,i=e.length,n=0,o=0;--i>=0;){var a=e[i];a.hierNode.prelim+=n,a.hierNode.modifier+=n,o+=a.hierNode.change,n+=a.hierNode.shift+o}}function Yc(t,e,i,n){if(e){for(var o=t,a=t,r=a.parentNode.children[0],s=e,l=o.hierNode.modifier,u=a.hierNode.modifier,h=r.hierNode.modifier,c=s.hierNode.modifier;s=qc(s),a=Kc(a),s&&a;){o=qc(o),r=Kc(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);d>0&&(Jc($c(s,t,i),t,d),u+=d,l+=d),c+=s.hierNode.modifier,u+=a.hierNode.modifier,l+=o.hierNode.modifier,h+=r.hierNode.modifier}s&&!qc(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!Kc(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}return i}function qc(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function Kc(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function $c(t,e,i){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:i}function Jc(t,e,i){var n=i/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=n,e.hierNode.shift+=i,e.hierNode.modifier+=i,e.hierNode.prelim+=i,t.hierNode.change+=n}function Qc(t,e){return t.parentNode===e.parentNode?1:2}function td(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function ed(t,e,i){return i.itemModel=e,i.itemStyle=e.getModel("itemStyle").getItemStyle(),i.hoverItemStyle=e.getModel("emphasis.itemStyle").getItemStyle(),i.lineStyle=e.getModel("lineStyle").getLineStyle(),i.labelModel=e.getModel("label"),i.hoverLabelModel=e.getModel("emphasis.label"),!1===t.isExpand&&0!==t.children.length?i.symbolInnerColor=i.itemStyle.fill:i.symbolInnerColor="#fff",i}function id(t,e,i,n,o,a){var s=!i,l=t.tree.getNodeByDataIndex(e),a=ed(l,l.getModel(),a),u=t.tree.root,h=l.parentNode===u?l:l.parentNode||l,c=t.getItemGraphicEl(h.dataIndex),d=h.getLayout(),f=c?{x:c.position[0],y:c.position[1],rawX:c.__radialOldRawX,rawY:c.__radialOldRawY}:d,p=l.getLayout();s?(i=new wu(t,e,a)).attr("position",[f.x,f.y]):i.updateData(t,e,a),i.__radialOldRawX=i.__radialRawX,i.__radialOldRawY=i.__radialRawY,i.__radialRawX=p.rawX,i.__radialRawY=p.rawY,n.add(i),t.setItemGraphicEl(e,i),Io(i,{position:[p.x,p.y]},o);var g=i.getSymbolPath();if("radial"===a.layout){var m,v,y=u.children[0],x=y.getLayout(),_=y.children.length;if(p.x===x.x&&!0===l.isExpand){var w={};w.x=(y.children[0].getLayout().x+y.children[_-1].getLayout().x)/2,w.y=(y.children[0].getLayout().y+y.children[_-1].getLayout().y)/2,(m=Math.atan2(w.y-x.y,w.x-x.x))<0&&(m=2*Math.PI+m),(v=w.xx.x)||(m-=Math.PI);var b=v?"left":"right";g.setStyle({textPosition:b,textRotation:-m,textOrigin:"center",verticalAlign:"middle"})}if(l.parentNode&&l.parentNode!==u){var S=i.__edge;S||(S=i.__edge=new bM({shape:od(a,f,f),style:r({opacity:0,strokeNoScale:!0},a.lineStyle)})),Io(S,{shape:od(a,d,p),style:{opacity:1}},o),n.add(S)}}function nd(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,a=ed(s,s.getModel(),a),u=s.parentNode===l?s:s.parentNode||s;null==(r=u.getLayout());)u=u.parentNode===l?u:u.parentNode||u;Io(i,{position:[r.x+1,r.y+1]},o,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var h=i.__edge;h&&Io(h,{shape:od(a,r,r),style:{opacity:0}},o,function(){n.remove(h)})}function od(t,e,i){var n,o,a,r,s,l,u,h,c=t.orient;if("radial"===t.layout){s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=Uc(s,u),f=Uc(s,u+(h-u)*t.curvature),p=Uc(l,h+(u-h)*t.curvature),g=Uc(l,h);return{x1:d.x,y1:d.y,x2:g.x,y2:g.y,cpx1:f.x,cpy1:f.y,cpx2:p.x,cpy2:p.y}}return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,o=u,a=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,o=u+(h-u)*t.curvature,a=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:o,cpx2:a,cpy2:r}}function ad(t,e,i){for(var n,o=[t],a=[];n=o.pop();)if(a.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;s=0;a--)n.push(o[a])}}function sd(t,e){var i=Xc(t,e);t.layoutInfo=i;var n=t.get("layout"),o=0,a=0,r=null;"radial"===n?(o=2*Math.PI,a=Math.min(i.height,i.width)/2,r=Zc(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,r=Zc());var s=t.getData().tree.root,l=s.children[0];if(l){Fc(s),ad(l,Wc,r),s.hierNode.modifier=-l.hierNode.prelim,rd(l,Hc);var u=l,h=l,c=l;rd(l,function(t){var e=t.getLayout().x;eh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Uc(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=a/(h.getLayout().x+d+f),p=o/(c.depth-1||1),rd(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:o-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:a-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}function ld(t,e,i){if(t&&l(e,t.type)>=0){var n=i.getData().tree.root,o=t.targetNode;if("string"==typeof o&&(o=n.getNodeById(o)),o&&n.contains(o))return{node:o};var a=t.targetNodeId;if(null!=a&&(o=n.getNodeById(a)))return{node:o}}}function ud(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function hd(t,e){return l(ud(t),e)>=0}function cd(t,e){for(var i=[];t;){var n=t.dataIndex;i.push({name:t.name,dataIndex:n,value:e.getRawValue(n)}),t=t.parentNode}return i.reverse(),i}function dd(t){var e=0;d(t.children,function(t){dd(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function fd(t,e){var i=e.get("color");if(i){var n;return d(t=t||[],function(t){var e=new No(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),n||((t[0]||(t[0]={})).color=i.slice()),t}}function pd(t){this.group=new tb,t.add(this.group)}function gd(t,e,i,n,o,a){var r=[[o?t:t-UC,e],[t+i,e],[t+i,e+n],[o?t:t-UC,e+n]];return!a&&r.splice(2,0,[t+i+UC,e+n/2]),!o&&r.push([t,e+n/2]),r}function md(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&cd(i,e)}}function vd(){var t,e=[],i={};return{add:function(t,n,o,a,r){return _(a)&&(r=a,a=0),!i[t.id]&&(i[t.id]=1,e.push({el:t,target:n,time:o,delay:a,easing:r}),!0)},done:function(e){return t=e,this},start:function(){for(var n=e.length,o=0,a=e.length;o=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function bd(t,e){var i=t.visual,n=[];w(i)?sL(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),Ld(t,n)}function Sd(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:Dd([0,1])}}function Md(t){var e=this.option.visual;return e[Math.round(Bo(t,[0,1],[0,e.length-1],!0))]||{}}function Id(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function Td(t){var e=this.option.visual;return e[this.option.loop&&t!==uL?t%e.length:t]}function Ad(){return this.option.visual[0]}function Dd(t){return{linear:function(e){return Bo(e,t,this.option.visual,!0)},category:Td,piecewise:function(e,i){var n=Cd.call(this,i);return null==n&&(n=Bo(e,t,this.option.visual,!0)),n},fixed:Ad}}function Cd(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[hL.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function Ld(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f(e,function(t){return Gt(t)})),e}function kd(t,e,i){return t?e<=i:e=o.length||t===o[t.depth])&&Pd(t,Vd(r,h,t,e,g,a),i,n,o,a)})}else l=Od(h),t.setVisual("color",l)}}function Nd(t,e,i,n){var o=a({},e);return d(["color","colorAlpha","colorSaturation"],function(a){var r=t.get(a,!0);null==r&&i&&(r=i[a]),null==r&&(r=e[a]),null==r&&(r=n.get(a)),null!=r&&(o[a]=r)}),o}function Od(t){var e=Rd(t,"color");if(e){var i=Rd(t,"colorAlpha"),n=Rd(t,"colorSaturation");return n&&(e=jt(e,null,null,n)),i&&(e=Yt(e,i)),e}}function Ed(t,e){return null!=e?jt(e,null,null,t):null}function Rd(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function zd(t,e,i,n,o,a){if(a&&a.length){var r=Bd(e,"color")||null!=o.color&&"none"!==o.color&&(Bd(e,"colorAlpha")||Bd(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&su[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:r.name,dataExtent:u,visual:r.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var d=new hL(c);return d.__drColorMappingBy=h,d}}}function Bd(t,e){var i=t.get(e);return fL(i)&&i.length?{name:e,range:i}:null}function Vd(t,e,i,n,o,r){var s=a({},e);if(o){var l=o.type,u="color"===l&&o.__drColorMappingBy,h="index"===u?n:"id"===u?r.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));s[l]=o.mapValueToVisual(h)}return s}function Gd(t,e,i,n){var o,a;if(!t.isRemoved()){var r=t.getLayout();o=r.width,a=r.height;var s=(f=t.getModel()).get(_L),l=f.get(wL)/2,u=Kd(f),h=Math.max(s,u),c=s-l,d=h-l,f=t.getModel();t.setLayout({borderWidth:s,upperHeight:h,upperLabelHeight:u},!0);var p=(o=mL(o-2*c,0))*(a=mL(a-c-d,0)),g=Fd(t,f,p,e,i,n);if(g.length){var m={x:c,y:d,width:o,height:a},v=vL(o,a),y=1/0,x=[];x.area=0;for(var _=0,w=g.length;_=0;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*es[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}function Ud(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;ro&&(o=n));var l=t.area*t.area,u=e*e*i;return l?mL(u*o/l,l/(u*a)):1/0}function Xd(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],h=e?t.area/e:0;(o||h>i[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;cXM&&(u=XM),a=s}u=0?n+=u:n-=u:p>=0?n-=u:n+=u}return n}function pf(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function gf(t,e,i){var n=t.getGraphicEl(),o=pf(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){if("group"!==t.type){var e=t.lineLabelOriginalOpacity;null!=e&&null==i||(e=o),t.setStyle("opacity",e)}})}function mf(t,e){var i=pf(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}function vf(t){return t instanceof Array||(t=[t,t]),t}function yf(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=t.getGraph();i.eachNode(function(t){var e=t.getModel();t.setLayout([+e.get("x"),+e.get("y")])}),xf(i)}}function xf(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.curveness")||0,i=F(t.node1.getLayout()),n=F(t.node2.getLayout()),o=[i,n];+e&&o.push([(i[0]+n[0])/2-(i[1]-n[1])*e,(i[1]+n[1])/2-(n[0]-i[0])*e]),t.setLayout(o)})}function _f(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=e.getBoundingRect(),n=t.getData(),o=n.graph,a=0,r=n.getSum("value"),s=2*Math.PI/(r||n.count()),l=i.width/2+i.x,u=i.height/2+i.y,h=Math.min(i.width,i.height)/2;o.eachNode(function(t){var e=t.getValue("value");a+=s*(r?e:1)/2,t.setLayout([h*Math.cos(a)+l,h*Math.sin(a)+u]),a+=s*(r?e:1)/2}),n.setLayout({cx:l,cy:u}),o.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.curveness")||0,n=F(t.node1.getLayout()),o=F(t.node2.getLayout()),a=(n[0]+o[0])/2,r=(n[1]+o[1])/2;+i&&(e=[l*(i*=3)+a*(1-i),u*i+r*(1-i)]),t.setLayout([n,o,e])})}}function wf(t,e,i){for(var n=i.rect,o=n.width,a=n.height,r=[n.x+o/2,n.y+a/2],s=null==i.gravity?.1:i.gravity,l=0;l0?-1:i<0?1:e?-1:1}}function Pf(t,e){return Math.min(e[1],Math.max(e[0],t))}function Nf(t,e,i){this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Of(t,e){return ek(ik(t,e[0]),e[1])}function Ef(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}}function Rf(t,e){var i,n,o=e.layoutLength,a=e.axisExpandWidth,r=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return tmk}function $f(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function Jf(t,e,i,n){var o=new tb;return o.add(new yM({name:"main",style:ip(i),silent:!0,draggable:!0,cursor:"move",drift:uk(t,e,o,"nswe"),ondragend:uk(qf,e,{isEnd:!0})})),hk(n,function(i){o.add(new yM({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:uk(t,e,o,i),ondragend:uk(qf,e,{isEnd:!0})}))}),o}function Qf(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=fk(o,vk),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-a+o/2,f=c-a+o/2,p=h-r,g=c-s,m=p+o,v=g+o;ep(t,e,"main",r,s,p,g),n.transformable&&(ep(t,e,"w",l,u,a,v),ep(t,e,"e",d,u,a,v),ep(t,e,"n",l,u,m,a),ep(t,e,"s",l,f,m,a),ep(t,e,"nw",l,u,a,a),ep(t,e,"ne",d,u,a,a),ep(t,e,"sw",l,f,a,a),ep(t,e,"se",d,f,a,a))}function tp(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(ip(i)),o.attr({silent:!n,cursor:n?"move":"default"}),hk(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=ap(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?_k[a]+"-resize":null})})}function ep(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(hp(up(t,e,[[n,o],[n+a,o+r]])))}function ip(t){return r({strokeNoScale:!0},t.brushStyle)}function np(t,e,i,n){var o=[dk(t,i),dk(e,n)],a=[fk(t,i),fk(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function op(t){return Ao(t.group)}function ap(t,e){if(e.length>1)return("e"===(n=[ap(t,(e=e.split(""))[0]),ap(t,e[1])])[0]||"w"===n[0])&&n.reverse(),n.join("");var i={left:"w",right:"e",top:"n",bottom:"s"},n=Co({w:"left",e:"right",n:"top",s:"bottom"}[e],op(t));return i[n]}function rp(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=lp(i,a,r);hk(o.split(""),function(t){var e=xk[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(np(u[0][0],u[1][0],u[0][1],u[1][1])),Zf(i,n),qf(i,{isEnd:!1})}function sp(t,e,i,n,o){var a=e.__brushOption.range,r=lp(t,i,n);hk(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Zf(t,e),qf(t,{isEnd:!1})}function lp(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function up(t,e,n){var o=jf(t,e);return o&&!0!==o?o.clipPath(n,t._transform):i(n)}function hp(t){var e=dk(t[0][0],t[1][0]),i=dk(t[0][1],t[1][1]);return{x:e,y:i,width:fk(t[0][0],t[1][0])-e,height:fk(t[0][1],t[1][1])-i}}function cp(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=Xf(t,e,i);if(!t._dragging)for(var r=0;r0;a--)Yp(s,l*=.99,r),jp(s,o,i,n,r),tg(s,l,r),jp(s,o,i,n,r)}function Up(t,e){var i=[],n="vertical"===e?"y":"x",o=Zi(t,function(t){return t.getLayout()[n]});return o.keys.sort(function(t,e){return t-e}),d(o.keys,function(t){i.push(o.buckets.get(t))}),i}function Xp(t,e,i,n,o,a,r){var s=[];d(e,function(t){var e=t.length,i=0,l=0;d(t,function(t){i+=t.getLayout().value}),l="vertical"===r?(o-(e-1)*a)/i:(n-(e-1)*a)/i,s.push(l)}),s.sort(function(t,e){return t-e});var l=s[0];d(e,function(t){d(t,function(t,e){var i=t.getLayout().value*l;"vertical"===r?(t.setLayout({x:e},!0),t.setLayout({dx:i},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:i},!0))})}),d(i,function(t){var e=+t.getValue()*l;t.setLayout({dy:e},!0)})}function jp(t,e,i,n,o){d(t,function(t){var a,r,s,l=0,u=t.length;if("vertical"===o){var h;for(t.sort(function(t,e){return t.getLayout().x-e.getLayout().x}),s=0;s0&&(h=a.getLayout().x+r,a.setLayout({x:h},!0)),l=a.getLayout().x+a.getLayout().dx+e;if((r=l-e-n)>0)for(h=a.getLayout().x-r,a.setLayout({x:h},!0),l=h,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().x+a.getLayout().dx+e-l)>0&&(h=a.getLayout().x-r,a.setLayout({x:h},!0)),l=a.getLayout().x}else{var c;for(t.sort(function(t,e){return t.getLayout().y-e.getLayout().y}),s=0;s0&&(c=a.getLayout().y+r,a.setLayout({y:c},!0)),l=a.getLayout().y+a.getLayout().dy+e;if((r=l-e-i)>0)for(c=a.getLayout().y-r,a.setLayout({y:c},!0),l=c,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().y+a.getLayout().dy+e-l)>0&&(c=a.getLayout().y-r,a.setLayout({y:c},!0)),l=a.getLayout().y}})}function Yp(t,e,i){d(t.slice().reverse(),function(t){d(t,function(t){if(t.outEdges.length){var n=Qp(t.outEdges,qp,i)/Qp(t.outEdges,Jp,i);if("vertical"===i){var o=t.getLayout().x+(n-$p(t,i))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(n-$p(t,i))*e;t.setLayout({y:a},!0)}}})})}function qp(t,e){return $p(t.node2,e)*t.getValue()}function Kp(t,e){return $p(t.node1,e)*t.getValue()}function $p(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function Jp(t){return t.getValue()}function Qp(t,e,i){for(var n=0,o=t.length,a=-1;++a0?"P":"N",a=n.getVisual("borderColor"+o)||n.getVisual("color"+o),r=i.getModel(Gk).getItemStyle(Wk);e.useStyle(r),e.style.fill=null,e.style.stroke=a}function fg(t,e,i,n,o){return i>n?-1:i0?t.get(o,e-1)<=n?1:-1:1}function pg(t,e){var i,n=t.getBaseAxis(),o="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),a=Vo(A(t.get("barMaxWidth"),o),o),r=Vo(A(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Vo(s,o):Math.max(Math.min(o/2,a),r)}function gg(t){return y(t)||(t=[+t,+t]),t}function mg(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function vg(t,e){tb.call(this);var i=new wu(t,e),n=new tb;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}function yg(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=f(e,function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),o([e,t[0],t[1]])}))}function xg(t,e,i){tb.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}function _g(t,e,i){tb.call(this),this._createPolyline(t,e,i)}function wg(t,e,i){xg.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}function bg(){this.group=new tb}function Sg(t){return t instanceof Array||(t=[t,t]),t}function Mg(){var t=iw();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}function Ig(t,e,i){var n=t[1]-t[0],o=(e=f(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}})).length,a=0;return function(t){for(n=a;n=0;n--){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}return n>=0&&n=e[0]&&t<=e[1]}}function Ag(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}function Dg(t,e,i,n){var o=t.getItemLayout(e),a=i.get("symbolRepeat"),r=i.get("symbolClip"),s=i.get("symbolPosition")||"start",l=(i.get("symbolRotate")||0)*Math.PI/180||0,u=i.get("symbolPatternSize")||2,h=i.isAnimationEnabled(),c={dataIndex:e,layout:o,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:r,symbolRepeat:a,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?i:null,hoverAnimation:h&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};Cg(i,a,o,n,c),kg(t,e,o,a,r,c.boundingLength,c.pxSign,u,n,c),Pg(i,c.symbolScale,l,n,c);var d=c.symbolSize,f=i.get("symbolOffset");return y(f)&&(f=[Vo(f[0],d[0]),Vo(f[1],d[1])]),Ng(i,d,o,a,r,f,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,n,c),c}function Cg(t,e,i,n,o){var a,r=n.valueDim,s=t.get("symbolBoundingData"),l=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(i[r.wh]<=0);if(y(s)){var c=[Lg(l,s[0])-u,Lg(l,s[1])-u];c[1]0?1:a<0?-1:0}function Lg(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function kg(t,e,i,n,o,a,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");y(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[c.index]=Vo(f[c.index],d),f[h.index]=Vo(f[h.index],n?d:Math.abs(a)),u.symbolSize=f,(u.symbolScale=[f[0]/s,f[1]/s])[h.index]*=(l.isHorizontal?-1:1)*r}function Pg(t,e,i,n,o){var a=t.get(cP)||0;a&&(fP.attr({scale:e.slice(),rotation:i}),fP.updateTransform(),a/=fP.getLineScale(),a*=e[n.valueDim.index]),o.valueLineWidth=a}function Ng(t,e,i,n,o,r,s,l,u,h,c,d){var f=c.categoryDim,p=c.valueDim,g=d.pxSign,m=Math.max(e[p.index]+l,0),v=m;if(n){var y=Math.abs(u),x=T(t.get("symbolMargin"),"15%")+"",_=!1;x.lastIndexOf("!")===x.length-1&&(_=!0,x=x.slice(0,x.length-1)),x=Vo(x,e[p.index]);var w=Math.max(m+2*x,0),b=_?0:2*x,S=Qo(n),M=S?n:Kg((y+b)/w);w=m+2*(x=(y-M*m)/2/(_?M:M-1)),b=_?0:2*x,S||"fixed"===n||(M=h?Kg((Math.abs(h)+b)/w):0),v=M*w-b,d.repeatTimes=M,d.symbolMargin=x}var I=g*(v/2),A=d.pathPosition=[];A[f.index]=i[f.wh]/2,A[p.index]="start"===s?I:"end"===s?u-I:u/2,r&&(A[0]+=r[0],A[1]+=r[1]);var D=d.bundlePosition=[];D[f.index]=i[f.xy],D[p.index]=i[p.xy];var C=d.barRectShape=a({},i);C[p.wh]=g*Math.max(Math.abs(i[p.wh]),Math.abs(A[p.index]+I)),C[f.wh]=i[f.wh];var L=d.clipShape={};L[f.xy]=-i[f.xy],L[f.wh]=c.ecSize[f.wh],L[p.xy]=0,L[p.wh]=i[p.wh]}function Og(t){var e=t.symbolPatternSize,i=Jl(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function Eg(t,e,i,n){function o(t){var e=l.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=h-1-t),e[u.index]=d*(o-h/2+.5)+l[u.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}var a=t.__pictorialBundle,r=i.symbolSize,s=i.valueLineWidth,l=i.pathPosition,u=e.valueDim,h=i.repeatTimes||0,c=0,d=r[e.valueDim.index]+s+2*i.symbolMargin;for(jg(t,function(t){t.__pictorialAnimationIndex=c,t.__pictorialRepeatTimes=h,c0)],d=t.__pictorialBarRect;kh(d.style,h,a,n,e.seriesModel,o,c),fo(d,h)}function Kg(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}function $g(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}function Jg(t,e){e=e||{};var i=t.coordinateSystem,n=t.axis,o={},a=n.position,r=n.orient,s=i.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};o.position=["vertical"===r?u.vertical[a]:l[0],"horizontal"===r?u.horizontal[a]:l[3]];var h={horizontal:0,vertical:1};o.rotation=Math.PI/2*h[r];var c={top:-1,bottom:1,right:1,left:-1};o.labelDirection=o.tickDirection=o.nameDirection=c[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),T(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var d=e.rotate;return null==d&&(d=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-d:d,o.z2=1,o}function Qg(t,e,i,n,o){var r=t.axis;if(!r.scale.isBlank()&&r.containData(e))if(t.involveSeries){var s=tm(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==o.seriesIndex&&a(o,l[0]),!n&&t.snap&&r.containData(u)&&null!=u&&(e=u),i.showPointer(t,e,l,o),i.showTooltip(t,s,u)}else i.showPointer(t,e)}function tm(t,e){var i=e.axis,n=i.dim,o=t,a=[],r=Number.MAX_VALUE,s=-1;return _P(e.seriesModels,function(e,l){var u,h,c=e.getData().mapDimension(n,!0);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(c,t,i);h=d.dataIndices,u=d.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===i.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=r&&((p=0&&s<0)&&(r=p,s=f,o=u,a.length=0),_P(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:o}}function em(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function im(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=Ah(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function nm(t,e,i){var n=i.axesInfo=[];_P(e,function(e,i){var o=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(o.status="show"),o.value=a.value,o.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(o.status="hide"),"show"===o.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:o.value})})}function om(t,e,i,n){if(!lm(e)&&t.list.length){var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}else n({type:"hideTip"})}function am(t,e,i){var n=i.getZr(),o=bP(n).axisPointerLastHighlights||{},a=bP(n).axisPointerLastHighlights={};_P(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&_P(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t})});var r=[],s=[];d(o,function(t,e){!a[e]&&s.push(t)}),d(a,function(t,e){!o[e]&&r.push(t)}),s.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:s}),r.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:r})}function rm(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}function sm(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function lm(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function um(t,e,i){if(!U_.node){var n=e.getZr();SP(n).records||(SP(n).records={}),hm(n,e),(SP(n).records[t]||(SP(n).records[t]={})).handler=i}}function hm(t,e){function i(i,n){t.on(i,function(i){var o=pm(e);MP(SP(t).records,function(t){t&&n(t,i,o.dispatchAction)}),cm(o.pendings,e)})}SP(t).initialized||(SP(t).initialized=!0,i("click",v(fm,"click")),i("mousemove",v(fm,"mousemove")),i("globalout",dm))}function cm(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function dm(t,e,i){t.handler("leave",null,i)}function fm(t,e,i,n){e.handler(t,i,n)}function pm(t){var e={showTip:[],hideTip:[]},i=function(n){var o=e[n.type];o?o.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}function gm(t,e){if(!U_.node){var i=e.getZr();(SP(i).records||{})[t]&&(SP(i).records[t]=null)}}function mm(){}function vm(t,e,i,n){ym(TP(i).lastProp,n)||(TP(i).lastProp=n,e?Io(i,n,t):(i.stopAnimation(),i.attr(n)))}function ym(t,e){if(w(t)&&w(e)){var i=!0;return d(e,function(e,n){i=i&&ym(t[n],e)}),!!i}return t===e}function xm(t,e){t[e.get("label.show")?"show":"hide"]()}function _m(t){return{position:t.position.slice(),rotation:t.rotation||0}}function wm(t,e,i){var n=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=o&&(t.zlevel=o),t.silent=i)})}function bm(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle()).fill=null:"shadow"===i&&((e=n.getAreaStyle()).stroke=null),e}function Sm(t,e,i,n,o){var a=Im(i.get("value"),e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),r=i.getModel("label"),s=qM(r.get("padding")||0),l=r.getFont(),u=ke(a,l),h=o.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=o.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=o.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),Mm(h,c,d,n);var g=r.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:r.get("borderRadius")},position:h.slice(),style:{text:a,textFont:l,textFill:r.getTextColor(),textPosition:"inside",fill:g,stroke:r.get("borderColor")||"transparent",lineWidth:r.get("borderWidth")||0,shadowBlur:r.get("shadowBlur"),shadowColor:r.get("shadowColor"),shadowOffsetX:r.get("shadowOffsetX"),shadowOffsetY:r.get("shadowOffsetY")},z2:10}}function Mm(t,e,i,n){var o=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,o)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function Im(t,e,i,n,o){t=e.scale.parse(t);var a=e.scale.getLabel(t,{precision:o.precision}),r=o.formatter;if(r){var s={value:Xl(e,t),seriesData:[]};d(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,o=e&&e.getDataParams(n);o&&s.seriesData.push(o)}),_(r)?a=r.replace("{value}",a):x(r)&&(a=r(s))}return a}function Tm(t,e,i){var n=xt();return Mt(n,n,i.rotation),St(n,n,i.position),Do([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function Am(t,e,i,n,o,a){var r=FD.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=o.get("label.margin"),Sm(e,n,o,a,{position:Tm(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})}function Dm(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}}function Cm(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}function Lm(t,e,i,n,o,a){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:a,clockwise:!0}}function km(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function Pm(t){return"x"===t.dim?0:1}function Nm(t){return t.isHorizontal()?0:1}function Om(t,e){var i=t.getRect();return[i[kP[e]],i[kP[e]]+i[PP[e]]]}function Em(t,e,i){var n=new yM({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return To(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}function Rm(t,e,i){if(t.count())for(var n,o=e.coordinateSystem,a=e.getLayerSeries(),r=t.mapDimension("single"),s=t.mapDimension("value"),l=f(a,function(e){return f(e.indices,function(e){var i=o.dataToPoint(t.get(r,e));return i[1]=t.get(s,e),i})}),u=zm(l),h=u.y0,c=i/u.max,d=a.length,p=a[0].indices.length,g=0;ga&&(a=u),n.push(u)}for(var h=0;ha&&(a=d)}return r.y0=o,r.max=a,r}function Bm(t){var e=0;d(t.children,function(t){Bm(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function Vm(t,e,i){function n(){r.ignore=r.hoverIgnore}function o(){r.ignore=r.normalIgnore}tb.call(this);var a=new hM({z2:zP});a.seriesIndex=e.seriesIndex;var r=new rM({z2:BP,silent:t.getModel("label").get("silent")});this.add(a),this.add(r),this.updateData(!0,t,"normal",e,i),this.on("emphasis",n).on("normal",o).on("mouseover",n).on("mouseout",o)}function Gm(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;return a=i.option.color[Fm(t)%r]}function Fm(t){for(var e=t;e.depth>1;)e=e.parentNode;return l(t.getAncestors()[0].children,e)}function Wm(t,e,i){return i!==RP.NONE&&(i===RP.SELF?t===e:i===RP.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function Hm(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}function Zm(t,e){var i=t.children||[];t.children=Um(i,e),i.length&&d(t.children,function(t){Zm(t,e)})}function Um(t,e){if("function"==typeof e)return t.sort(e);var i="asc"===e;return t.sort(function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n})}function Xm(t,e){return e=e||[0,0],f(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function jm(t,e){return e=e||[0,0],f([0,1],function(i){var n=e[i],o=t[i]/2,a=[],r=[];return a[i]=n-o,r[i]=n+o,a[1-i]=r[1-i]=e[1-i],Math.abs(this.dataToPoint(a)[i]-this.dataToPoint(r)[i])},this)}function Ym(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function qm(t,e){return f(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function Km(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=lv(n);(e=Xn(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new rM({})).__customText=t.style.text:e=new(0,zM[i.charAt(0).toUpperCase()+i.slice(1)]);return e.__customGraphicType=i,e.name=t.name,e}function $m(t,e,n,o,a,r,s){var l={},u=n.style||{};if(n.shape&&(l.shape=i(n.shape)),n.position&&(l.position=n.position.slice()),n.scale&&(l.scale=n.scale.slice()),n.origin&&(l.origin=n.origin.slice()),n.rotation&&(l.rotation=n.rotation),"image"===t.type&&n.style){h=l.style={};d(["x","y","width","height"],function(e){Jm(e,h,u,t.style,r)})}if("text"===t.type&&n.style){var h=l.style={};d(["x","y"],function(e){Jm(e,h,u,t.style,r)}),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke)}if("group"!==t.type&&(t.useStyle(u),r)){t.style.opacity=0;var c=u.opacity;null==c&&(c=1),To(t,{style:{opacity:c}},o,e)}r?t.attr(l):Io(t,l,o,e),n.hasOwnProperty("z2")&&t.attr("z2",n.z2||0),n.hasOwnProperty("silent")&&t.attr("silent",n.silent),n.hasOwnProperty("invisible")&&t.attr("invisible",n.invisible),n.hasOwnProperty("ignore")&&t.attr("ignore",n.ignore),n.hasOwnProperty("info")&&t.attr("info",n.info);var f=n.styleEmphasis,p=!1===f;t.__cusHasEmphStl&&null==f||!t.__cusHasEmphStl&&p||(ro(t,f),t.__cusHasEmphStl=!p),s&&po(t,!p)}function Jm(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function Qm(t,e,i,n){function o(t){null==t&&(t=h),v&&(c=e.getItemModel(t),d=c.getModel(UP),f=c.getModel(XP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():YP[l.type](l));var h,c,d,f,p,g=r({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:function(t,i){return null==i&&(i=h),e.get(e.getDimension(t||0),i)},style:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(HP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),mo(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(ZP).getItemStyle();return mo(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},visual:function(t,i){return null==i&&(i=h),e.getItemVisual(i,t)},barLayout:function(t){if(l.getBaseAxis)return Ll(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return So(t,i)}},u.api||{}),m={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:u.coordSys,dataInsideLength:e.count(),encode:tv(t.getData())},v=!0;return function(t,i){return h=t,v=!0,s&&s(r({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:i?i.type:null},m),g)}}function tv(t){var e={};return d(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim;(e[a]=e[a]||[])[o.coordDimIndex]=n}}),e}function ev(t,e,i,n,o,a){return(t=iv(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function iv(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&uv(u)&&lv(u)!==t.__customPathData||"image"===l&&hv(h,"image")&&h.image!==t.__customImagePath||"text"===l&&hv(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return!t&&(t=Km(i)),$m(t,e,i,n,a,c,r),"group"===l&&nv(t,e,i,n,a),o.add(t),t}}function nv(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(r||l||u)if(l)ov({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});else{u&&t.removeAll();for(var h=0;hn?t-=l+a:t+=a),null!=r&&(e+u+r>o?e-=u+r:e+=r),[t,e]}function Ov(t,e,i,n,o){var a=i.getOuterSize(),r=a.width,s=a.height;return t=Math.min(t+r,n)-r,e=Math.min(e+s,o)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function Ev(t,e,i){var n=i[0],o=i[1],a=0,r=0,s=e.width,l=e.height;switch(t){case"inside":a=e.x+s/2-n/2,r=e.y+l/2-o/2;break;case"top":a=e.x+s/2-n/2,r=e.y-o-5;break;case"bottom":a=e.x+s/2-n/2,r=e.y+l+5;break;case"left":a=e.x-n-5,r=e.y+l/2-o/2;break;case"right":a=e.x+s+5,r=e.y+l/2-o/2}return[a,r]}function Rv(t){return"center"===t||"middle"===t}function zv(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function Bv(t){return t.dim}function Vv(t,e){var i={};d(t,function(t,e){var n=t.getData(),o=t.coordinateSystem.getBaseAxis(),a=o.getExtent(),r="category"===o.type?o.getBandWidth():Math.abs(a[1]-a[0])/n.count(),s=i[Bv(o)]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},l=s.stacks;i[Bv(o)]=s;var u=zv(t);l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var h=Vo(t.get("barWidth"),r),c=Vo(t.get("barMaxWidth"),r),d=t.get("barGap"),f=t.get("barCategoryGap");h&&!l[u].width&&(h=Math.min(s.remainedWidth,h),l[u].width=h,s.remainedWidth-=h),c&&(l[u].maxWidth=c),null!=d&&(s.gap=d),null!=f&&(s.categoryGap=f)});var n={};return d(i,function(t,e){n[e]={};var i=t.stacks,o=t.bandWidth,a=Vo(t.categoryGap,o),r=Vo(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-a)/(l+(l-1)*r);u=Math.max(u,0),d(i,function(t,e){var i=t.maxWidth;i&&ie[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),o=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:o[0],y2:o[1]}}function jv(t){return t.getRadiusAxis().inverse?0:1}function Yv(t){var e=t[0],i=t[t.length-1];e&&i&&Math.abs(Math.abs(e.coord-i.coord)-360)<1e-4&&t.pop()}function qv(t,e,i){return{position:[t.cx,t.cy],rotation:i/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:e.getModel("axisLabel").get("rotate"),z2:1}}function Kv(t,e,i,n,o){var a=e.axis,r=a.dataToCoord(t),s=n.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=n.getRadiusAxis().getExtent();if("radius"===a.dim){var d=xt();Mt(d,d,s),St(d,d,[n.cx,n.cy]),l=Do([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=FD.innerTextLayout(s,f*Math.PI/180,-1);u=p.textAlign,h=p.textVerticalAlign}else{var g=c[1];l=n.coordToPoint([g+o,r]);var m=n.cx,v=n.cy;u=Math.abs(l[0]-m)/g<.3?"center":l[0]>m?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}function $v(t,e){e.update="updateView",Es(e,function(e,i){var n={};return i.eachComponent({mainType:"geo",query:e},function(i){i[t](e.name),d(i.coordinateSystem.regions,function(t){n[t.name]=i.isSelected(t.name)||!1})}),{selected:n,name:e.name}})}function Jv(t){var e={};d(t,function(t){e[t]=1}),t.length=0,d(e,function(e,i){t.push(i)})}function Qv(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function ty(t,e,n){function o(){var t=function(){};return t.prototype.__hidden=t.prototype,new t}var a={};return MN(e,function(e){var r=a[e]=o();MN(t[e],function(t,o){if(hL.isValidType(o)){var a={type:o,visual:t};n&&n(a,e),r[o]=new hL(a),"opacity"===o&&((a=i(a)).type="colorAlpha",r.__hidden.__alphaForOpacity=new hL(a))}})}),a}function ey(t,e,n){var o;d(n,function(t){e.hasOwnProperty(t)&&Qv(e[t])&&(o=!0)}),o&&d(n,function(n){e.hasOwnProperty(n)&&Qv(e[n])?t[n]=i(e[n]):delete t[n]})}function iy(t,e,i,n,o,a){function r(t){return i.getItemVisual(h,t)}function s(t,e){i.setItemVisual(h,t,e)}function l(t,l){h=null==a?t:l;var c=i.getRawDataItem(h);if(!c||!1!==c.visualMap)for(var d=n.call(o,t),f=e[d],p=u[d],g=0,m=p.length;g1)return!1;var h=uy(i-t,o-t,n-e,a-e)/l;return!(h<0||h>1)}function ly(t){return t<=1e-6&&t>=-1e-6}function uy(t,e,i,n){return t*n-e*i}function hy(t,e,i){var n=this._targetInfoList=[],o={},a=dy(e,t);TN(PN,function(t,e){(!i||!i.include||AN(i.include,e)>=0)&&t(a,n,o)})}function cy(t){return t[0]>t[1]&&t.reverse(),t}function dy(t,e){return Vi(t,e,{includeMainTypes:LN})}function fy(t,e,i,n){var o=i.getAxis(["x","y"][t]),a=cy(f([0,1],function(t){return e?o.coordToData(o.toLocalCoord(n[t])):o.toGlobalCoord(o.dataToCoord(n[t]))})),r=[];return r[t]=a,r[1-t]=[NaN,NaN],{values:a,xyMinMax:r}}function py(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function gy(t,e){var i=my(t),n=my(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}function my(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}function vy(t,e,i,n,o){if(o){var a=t.getZr();a[VN]||(a[BN]||(a[BN]=yy),Nr(a,BN,i,e)(t,n))}}function yy(t,e){if(!t.isDisposed()){var i=t.getZr();i[VN]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[VN]=!1}}function xy(t,e,i,n){for(var o=0,a=e.length;o=0}function Ny(t,e,i){function n(t,e){return l(e.nodes,t)>=0}function o(t,n){var o=!1;return e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]&&(o=!0)})}),o}function a(t,n){n.nodes.push(t),e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){var r={nodes:[],records:{}};if(e(function(t){r.records[t.name]={}}),!i)return r;a(i,r);var s;do{s=!1,t(function(t){!n(t,r)&&o(t,r)&&(a(t,r),s=!0)})}while(s);return r}}function Oy(t,e,i){var n=[1/0,-1/0];return $N(i,function(t){var i=t.getData();i&&$N(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]n[1]&&(n[1]=e[1])})}),n[1]0?0:NaN);var r=i.getMax(!0);return null!=r&&"dataMax"!==r&&"function"!=typeof r?e[1]=r:o&&(e[1]=a>0?a-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function Ry(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=Zo(o,[0,500]);a=Math.min(a,20);var r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}function zy(t){var e=t._minMaxSpan={},i=t._dataZoomModel;$N(["min","max"],function(n){e[n+"Span"]=i.get(n+"Span");var o=i.get(n+"ValueSpan");if(null!=o&&(e[n+"ValueSpan"]=o,null!=(o=t.getAxisModel().axis.scale.parse(o)))){var a=t._dataExtent;e[n+"Span"]=Bo(a[0]+o,a,[0,100],!0)}})}function By(t){var e={};return tO(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function Vy(t,e){var i=t._rangePropMode,n=t.get("rangeMode");tO([["start","startValue"],["end","endValue"]],function(t,o){var a=null!=e[t[0]],r=null!=e[t[1]];a&&!r?i[o]="percent":!a&&r?i[o]="value":n?i[o]=n[o]:a&&(i[o]="percent")})}function Gy(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}function Fy(t){return"vertical"===t?"ns-resize":"ew-resize"}function Wy(t,e){var i=Uy(t),n=e.dataZoomId,o=e.coordId;d(i,function(t,i){var a=t.dataZoomInfos;a[n]&&l(e.allCoordIds,o)<0&&(delete a[n],t.count--)}),jy(i);var a=i[o];a||((a=i[o]={coordId:o,dataZoomInfos:{},count:0}).controller=Xy(t,a),a.dispatchAction=v(Yy,t)),!a.dataZoomInfos[n]&&a.count++,a.dataZoomInfos[n]=e;var r=qy(a.dataZoomInfos);a.controller.enable(r.controlType,r.opt),a.controller.setPointerChecker(e.containsPoint),Nr(a,"dispatchAction",e.dataZoomModel.get("throttle",!0),"fixRate")}function Hy(t,e){var i=Uy(t);d(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),jy(i)}function Zy(t){return t.type+"\0_"+t.id}function Uy(t){var e=t.getZr();return e[fO]||(e[fO]={})}function Xy(t,e){var i=new oc(t.getZr());return d(["pan","zoom","scrollMove"],function(t){i.on(t,function(i){var n=[];d(e.dataZoomInfos,function(o){if(i.isAvailableBehavior(o.dataZoomModel.option)){var a=(o.getRange||{})[t],r=a&&a(e.controller,i);!o.dataZoomModel.get("disabled",!0)&&r&&n.push({dataZoomId:o.dataZoomId,start:r[0],end:r[1]})}}),n.length&&e.dispatchAction(n)})}),i}function jy(t){d(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function Yy(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function qy(t){var e,i={type_true:2,type_move:1,type_false:0,type_undefined:-1},n=!0;return d(t,function(t){var o=t.dataZoomModel,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i["type_"+a]>i["type_"+e]&&(e=a),n&=o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!n}}}function Ky(t){return function(e,i,n,o){var a=this._range,r=a.slice(),s=e.axisModels[0];if(s){var l=t(r,s,e,i,n,o);return QL(l,r,[0,100],"all"),this._range=r,a[0]!==r[0]||a[1]!==r[1]?r:void 0}}}function $y(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}function Jy(t,e,i,n){for(var o=e.targetVisuals[n],a=hL.prepareVisualTypes(o),r={color:t.getData().getVisual("color")},s=0,l=a.length;s=0&&(r[a]=+r[a].toFixed(h)),r}function fx(t,e){var n=t.getData(),o=t.coordinateSystem;if(e&&!cx(e)&&!y(e.coord)&&o){var a=o.dimensions,r=px(e,n,o,t);if((e=i(e)).type&&YO[e.type]&&r.baseAxis&&r.valueAxis){var s=XO(a,r.baseAxis.dim),l=XO(a,r.valueAxis.dim);e.coord=YO[e.type](n,r.baseDataDim,r.valueDataDim,s,l),e.value=e.coord[l]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)YO[u[h]]&&(u[h]=yx(n,n.mapDimension(a[h]),u[h]));e.coord=u}}return e}function px(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(gx(n,o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim)):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim),o.valueDataDim=e.mapDimension(o.valueAxis.dim)),o}function gx(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var o=0;o=0)return!0}function Yx(t){for(var e=t.split(/\n+/g),i=[],n=f(Xx(e.shift()).split(pE),function(t){return{name:t,data:[]}}),o=0;o=0&&!i[o][n];o--);if(o<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var r=a.getPercentRange();i[0][n]={dataZoomId:n,start:r[0],end:r[1]}}}}),i.push(e)}function t_(t){var e=n_(t),i=e[e.length-1];e.length>1&&e.pop();var n={};return gE(i,function(t,i){for(var o=e.length-1;o>=0;o--)if(t=e[o][i]){n[i]=t;break}}),n}function e_(t){t[mE]=null}function i_(t){return n_(t).length}function n_(t){var e=t[mE];return e||(e=t[mE]=[{}]),e}function o_(t,e,i){(this._brushController=new zf(i.getZr())).on("brush",m(this._onBrush,this)).mount(),this._isZoomActive}function a_(t){var e={};return d(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(!1===e[i]||"none"===e[i])&&(e[i]=[])}),e}function r_(t,e){t.setIconStatus("back",i_(e)>1?"emphasis":"normal")}function s_(t,e,i,n,o){var a=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(a="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var r=new hy(a_(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}function l_(t){this.model=t}function u_(t){return SE(t)}function h_(){if(!TE&&AE){TE=!0;var t=AE.styleSheets;t.length<31?AE.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}function c_(t){return parseInt(t,10)}function d_(t,e){h_(),this.root=t,this.storage=e;var i=document.createElement("div"),n=document.createElement("div");i.style.cssText="display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;",n.style.cssText="position:absolute;left:0;top:0;",t.appendChild(i),this._vmlRoot=n,this._vmlViewport=i,this.resize();var o=e.delFromStorage,a=e.addToStorage;e.delFromStorage=function(t){o.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)},this._firstPaint=!0}function f_(t){return function(){Yw('In IE8.0 VML mode painter not support method "'+t+'"')}}function p_(t){return document.createElementNS(sR,t)}function g_(t){return cR(1e4*t)/1e4}function m_(t){return t-vR}function v_(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==hR}function y_(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==hR}function x_(t,e){e&&__(t,"transform","matrix("+uR.call(e,",")+")")}function __(t,e,i){(!i||"linear"!==i.type&&"radial"!==i.type)&&t.setAttribute(e,i)}function w_(t,e,i){t.setAttributeNS("http://www.w3.org/1999/xlink",e,i)}function b_(t,e,i,n){if(v_(e,i)){var o=i?e.textFill:e.fill;o="transparent"===o?hR:o,"none"!==t.getAttribute("clip-path")&&o===hR&&(o="rgba(0, 0, 0, 0.002)"),__(t,"fill",o),__(t,"fill-opacity",null!=e.fillOpacity?e.fillOpacity*e.opacity:e.opacity)}else __(t,"fill",hR);if(y_(e,i)){var a=i?e.textStroke:e.stroke;__(t,"stroke",a="transparent"===a?hR:a),__(t,"stroke-width",(i?e.textStrokeWidth:e.lineWidth)/(!i&&e.strokeNoScale?n.getLineScale():1)),__(t,"paint-order",i?"stroke":"fill"),__(t,"stroke-opacity",null!=e.strokeOpacity?e.strokeOpacity:e.opacity),e.lineDash?(__(t,"stroke-dasharray",e.lineDash.join(",")),__(t,"stroke-dashoffset",cR(e.lineDashOffset||0))):__(t,"stroke-dasharray",""),e.lineCap&&__(t,"stroke-linecap",e.lineCap),e.lineJoin&&__(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&__(t,"stroke-miterlimit",e.miterLimit)}else __(t,"stroke",hR)}function S_(t){for(var e=[],i=t.data,n=t.len(),o=0;o=gR||!m_(g)&&(d>-pR&&d<0||d>pR)==!!p;var y=g_(s+u*fR(c)),x=g_(l+h*dR(c));m&&(d=p?gR-1e-4:1e-4-gR,v=!0,9===o&&e.push("M",y,x));var _=g_(s+u*fR(c+d)),w=g_(l+h*dR(c+d));e.push("A",g_(u),g_(h),cR(f*mR),+v,+p,_,w);break;case lR.Z:a="Z";break;case lR.R:var _=g_(i[o++]),w=g_(i[o++]),b=g_(i[o++]),S=g_(i[o++]);e.push("M",_,w,"L",_+b,w,"L",_+b,w+S,"L",_,w+S,"L",_,w)}a&&e.push(a);for(var M=0;M=11),domSupported:"undefined"!=typeof document}}(navigator.userAgent),X_={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},j_={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},Y_=Object.prototype.toString,q_=Array.prototype,K_=q_.forEach,$_=q_.filter,J_=q_.slice,Q_=q_.map,tw=q_.reduce,ew={},iw=function(){return ew.createCanvas()};ew.createCanvas=function(){return document.createElement("canvas")};var nw,ow="__ec_primitive__";E.prototype={constructor:E,get:function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},set:function(t,e){return this.data[t]=e},each:function(t,e){void 0!==e&&(t=m(t,e));for(var i in this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var aw=(Object.freeze||Object)({$override:e,clone:i,merge:n,mergeAll:o,extend:a,defaults:r,createCanvas:iw,getContext:s,indexOf:l,inherits:u,mixin:h,isArrayLike:c,each:d,map:f,reduce:p,filter:g,find:function(t,e,i){if(t&&e)for(var n=0,o=t.length;n3&&(n=dw.call(n,1));for(var a=e.length,r=0;r4&&(n=dw.call(n,1,n.length-1));for(var a=n[n.length-1],r=e.length,s=0;s1&&n&&n.length>1){var a=ft(n)/ft(o);!isFinite(a)&&(a=1),e.pinchScale=a;var r=pt(n);return e.pinchX=r[0],e.pinchY=r[1],{type:"pinch",target:t[0].target,event:e}}}}},xw="silent";vt.prototype.dispose=function(){};var _w=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ww=function(t,e,i,n){fw.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new vt,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,it.call(this),this.setHandlerProxy(i)};ww.prototype={constructor:ww,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(d(_w,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,o=n.target;o&&!o.__zr&&(o=(n=this.findHover(n.x,n.y)).target);var a=this._hovered=this.findHover(e,i),r=a.target,s=this.proxy;s.setCursor&&s.setCursor(r?r.cursor:"default"),o&&r!==o&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(a,"mousemove",t),r&&r!==o&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do{i=i&&i.parentNode}while(i&&9!==i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){var n=(t=t||{}).target;if(!n||!n.silent){for(var o="on"+e,a=gt(e,t,i);n&&(n[o]&&(a.cancelBubble=n[o].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o={x:t,y:e},a=n.length-1;a>=0;a--){var r;if(n[a]!==i&&!n[a].ignore&&(r=yt(n[a],t,e))&&(!o.topTarget&&(o.topTarget=n[a]),r!==xw)){o.target=n[a];break}}return o},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new vw);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var o=n.type;t.gestureEvent=o,this.dispatchToElement({target:n.target},o,n.event)}}},d(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){ww.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downEl=n,this._downPoint=[e.zrX,e.zrY],this._upEl=n;else if("mouseup"===t)this._upEl=n;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||uw(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(i,t,e)}}),h(ww,fw),h(ww,it);var bw="undefined"==typeof Float32Array?Array:Float32Array,Sw=(Object.freeze||Object)({create:xt,identity:_t,copy:wt,mul:bt,translate:St,rotate:Mt,scale:It,invert:Tt,clone:At}),Mw=_t,Iw=5e-5,Tw=function(t){(t=t||{}).position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},Aw=Tw.prototype;Aw.transform=null,Aw.needLocalTransform=function(){return Dt(this.rotation)||Dt(this.position[0])||Dt(this.position[1])||Dt(this.scale[0]-1)||Dt(this.scale[1]-1)};var Dw=[];Aw.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(i||e){n=n||xt(),i?this.getLocalTransform(n):Mw(n),e&&(i?bt(n,t.transform,n):wt(n,t.transform)),this.transform=n;var o=this.globalScaleRatio;if(null!=o&&1!==o){this.getGlobalScale(Dw);var a=Dw[0]<0?-1:1,r=Dw[1]<0?-1:1,s=((Dw[0]-a)*o+a)/Dw[0]||0,l=((Dw[1]-r)*o+r)/Dw[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||xt(),Tt(this.invTransform,n)}else n&&Mw(n)},Aw.getLocalTransform=function(t){return Tw.getLocalTransform(this,t)},Aw.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},Aw.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var Cw=[],Lw=xt();Aw.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,o=this.scale;Dt(e-1)&&(e=Math.sqrt(e)),Dt(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],o[0]=e,o[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},Aw.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(bt(Cw,t.invTransform,e),e=Cw);var i=this.origin;i&&(i[0]||i[1])&&(Lw[4]=i[0],Lw[5]=i[1],bt(Cw,e,Lw),Cw[4]-=i[0],Cw[5]-=i[1],e=Cw),this.setLocalTransform(e)}},Aw.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},Aw.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&Q(i,i,n),i},Aw.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&Q(i,i,n),i},Tw.getLocalTransform=function(t,e){Mw(e=e||[]);var i=t.origin,n=t.scale||[1,1],o=t.rotation||0,a=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),It(e,e,n),o&&Mt(e,e,o),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=a[0],e[5]+=a[1],e};var kw={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-kw.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*kw.bounceIn(2*t):.5*kw.bounceOut(2*t-1)+.5}};Ct.prototype={constructor:Ct,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,o="string"==typeof n?kw[n]:n,a="function"==typeof o?o(i):i;return this.fire("frame",a),1===i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var Pw=function(){this.head=null,this.tail=null,this._len=0},Nw=Pw.prototype;Nw.insert=function(t){var e=new Ow(t);return this.insertEntry(e),e},Nw.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},Nw.remove=function(t){var e=t.prev,i=t.next;e?e.next=i:this.head=i,i?i.prev=e:this.tail=e,t.next=t.prev=null,this._len--},Nw.len=function(){return this._len},Nw.clear=function(){this.head=this.tail=null,this._len=0};var Ow=function(t){this.value=t,this.next,this.prev},Ew=function(t){this._list=new Pw,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},Rw=Ew.prototype;Rw.put=function(t,e){var i=this._list,n=this._map,o=null;if(null==n[t]){var a=i.len(),r=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=i.head;i.remove(s),delete n[s.key],o=s.value,this._lastRemovedEntry=s}r?r.value=e:r=new Ow(e),r.key=t,i.insertEntry(r),n[t]=r}return o},Rw.get=function(t){var e=this._map[t],i=this._list;if(null!=e)return e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value},Rw.clear=function(){this._list.clear(),this._map={}};var zw={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]},Bw=new Ew(20),Vw=null,Gw=Ut,Fw=Xt,Ww=(Object.freeze||Object)({parse:Gt,lift:Ht,toHex:Zt,fastLerp:Ut,fastMapToColor:Gw,lerp:Xt,mapToColor:Fw,modifyHSL:jt,modifyAlpha:Yt,stringify:qt}),Hw=Array.prototype.slice,Zw=function(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||Kt,this._setter=n||$t,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};Zw.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:ae(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new de(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},de.create=function(t){return new de(t.x,t.y,t.width,t.height)};var tb=function(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};tb.prototype={constructor:tb,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof tb&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,o=l(n,t);return o<0?this:(n.splice(o,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof tb&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e=0&&(this.delFromStorage(t),this._roots.splice(o,1),t instanceof tb&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:we};var ob={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},ab=function(t,e,i){return ob.hasOwnProperty(e)?i*=t.dpr:i},rb={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},sb=9,lb=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],ub=function(t){this.extendFrom(t,!1)};ub.prototype={constructor:ub,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){var n=this,o=i&&i.style,a=!o||t.__attrCachedBy!==rb.STYLE_BIND;t.__attrCachedBy=rb.STYLE_BIND;for(var r=0;r0},extendFrom:function(t,e){if(t)for(var i in t)!t.hasOwnProperty(i)||!0!==e&&(!1===e?this.hasOwnProperty(i):null==t[i])||(this[i]=t[i])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,i){for(var n=("radial"===e.type?Se:be)(t,e,i),o=e.colorStops,a=0;a=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i15)break}s.__drawIndex=m,s.__drawIndex0&&t>n[0]){for(r=0;rt);r++);a=i[n[r]]}if(n.splice(r+1,0,t),i[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else Yw("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n0?.01:0),this._needsManuallyCompositing),a.__builtin__||Yw("ZLevel "+s+" has been used by unkown layer "+a.id),a!==i&&(a.__used=!0,a.__startIndex!==o&&(a.__dirty=!0),a.__startIndex=o,a.incremental?a.__drawIndex=-1:a.__drawIndex=o,e(o),i=a),r.__dirty&&(a.__dirty=!0,a.incremental&&a.__drawIndex<0&&(a.__drawIndex=o))}e(o),this.eachBuiltinLayer(function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?n(i[t],e,!0):i[t]=e;for(var o=0;o=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i=0||n&&l(n,r)<0)){var s=e.getShallow(r);null!=s&&(o[t[a][0]]=s)}}return o}},tS=Qb([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),eS={getLineStyle:function(t){var e=tS(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"===e||null==e?null:"dashed"===e?[n,n]:[i,i]}},iS=Qb([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),nS={getAreaStyle:function(t,e){return iS(this,t,e)}},oS=Math.pow,aS=Math.sqrt,rS=1e-8,sS=1e-4,lS=aS(3),uS=1/3,hS=V(),cS=V(),dS=V(),fS=Math.min,pS=Math.max,gS=Math.sin,mS=Math.cos,vS=2*Math.PI,yS=V(),xS=V(),_S=V(),wS=[],bS=[],SS={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},MS=[],IS=[],TS=[],AS=[],DS=Math.min,CS=Math.max,LS=Math.cos,kS=Math.sin,PS=Math.sqrt,NS=Math.abs,OS="undefined"!=typeof Float32Array,ES=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};ES.prototype={constructor:ES,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=NS(1/Xw/t)||0,this._uy=NS(1/Xw/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(SS.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var i=NS(t-this._xi)>this._ux||NS(e-this._yi)>this._uy||this._len<5;return this.addData(SS.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(SS.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(SS.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(SS.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=LS(o)*i+t,this._yi=kS(o)*i+e,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(SS.R,t,e,i,n),this},closePath:function(){this.addData(SS.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;i0&&f<=t||h<0&&f>=t||0===h&&(c>0&&p<=e||c<0&&p>=e);)f+=h*(i=r[n=this._dashIdx]),p+=c*i,this._dashIdx=(n+1)%g,h>0&&fl||c>0&&pu||s[n%2?"moveTo":"lineTo"](h>=0?DS(f,t):CS(f,t),c>=0?DS(p,e):CS(p,e));h=f-t,c=p-e,this._dashOffset=-PS(h*h+c*c)},_dashedBezierTo:function(t,e,i,n,o,a){var r,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=tn,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,r=0;r<1;r+=.1)s=v(g,t,i,o,r+.1)-v(g,t,i,o,r),l=v(m,e,n,a,r+.1)-v(m,e,n,a,r),y+=PS(s*s+l*l);for(;x<_&&!((w+=f[x])>d);x++);for(r=(w-d)/y;r<=1;)u=v(g,t,i,o,r),h=v(m,e,n,a,r),x%2?p.moveTo(u,h):p.lineTo(u,h),r+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(o,a),s=o-u,l=a-h,this._dashOffset=-PS(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,OS&&(this.data=new Float32Array(t)))},getBoundingRect:function(){MS[0]=MS[1]=TS[0]=TS[1]=Number.MAX_VALUE,IS[0]=IS[1]=AS[0]=AS[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,o=0,a=0;al||NS(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case SS.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],x=s[c++],_=s[c++],w=g>m?g:m,b=g>m?1:g/m,S=g>m?m/g:1,M=v+y;Math.abs(g-m)>.001?(t.translate(f,p),t.rotate(x),t.scale(b,S),t.arc(0,0,w,v,M,1-_),t.scale(1/b,1/S),t.rotate(-x),t.translate(-f,-p)):t.arc(f,p,w,v,M,1-_),1===c&&(e=LS(v)*g+f,i=kS(v)*m+p),n=LS(M)*g+f,o=kS(M)*m+p;break;case SS.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case SS.Z:t.closePath(),n=e,o=i}}}},ES.CMD=SS;var RS=2*Math.PI,zS=2*Math.PI,BS=ES.CMD,VS=2*Math.PI,GS=1e-4,FS=[-1,-1,-1],WS=[-1,-1],HS=fb.prototype.getCanvasPattern,ZS=Math.abs,US=new ES(!0);Pn.prototype={constructor:Pn,type:"path",__dirtyPath:!0,strokeContainThreshold:5,subPixelOptimize:!1,brush:function(t,e){var i=this.style,n=this.path||US,o=i.hasStroke(),a=i.hasFill(),r=i.fill,s=i.stroke,l=a&&!!r.colorStops,u=o&&!!s.colorStops,h=a&&!!r.image,c=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var d;l&&(d=d||this.getBoundingRect(),this._fillGradient=i.getGradient(t,r,d)),u&&(d=d||this.getBoundingRect(),this._strokeGradient=i.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:h&&(t.fillStyle=HS.call(r,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=HS.call(s,t));var f=i.lineDash,p=i.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();if(n.setScale(m[0],m[1]),this.__dirtyPath||f&&!g&&o?(n.beginPath(t),f&&!g&&(n.setLineDash(f),n.setLineDashOffset(p)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),a)if(null!=i.fillOpacity){v=t.globalAlpha;t.globalAlpha=i.fillOpacity*i.opacity,n.fill(t),t.globalAlpha=v}else n.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),o)if(null!=i.strokeOpacity){var v=t.globalAlpha;t.globalAlpha=i.strokeOpacity*i.opacity,n.stroke(t),t.globalAlpha=v}else n.stroke(t);f&&g&&t.setLineDash([]),null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new ES},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new ES),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),r>1e-10&&(o.width+=a/r,o.height+=a/r,o.x-=a/r/2,o.y-=a/r/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,s=o.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),kn(a,r/s,t,e)))return!0}if(o.hasFill())return Ln(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):di.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(w(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&ZS(t[0]-1)>1e-10&&ZS(t[3]-1)>1e-10?Math.sqrt(ZS(t[0]*t[3]-t[2]*t[1])):1}},Pn.extend=function(t){var e=function(e){Pn.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var n=this.shape;for(var o in i)!n.hasOwnProperty(o)&&i.hasOwnProperty(o)&&(n[o]=i[o])}t.init&&t.init.call(this,e)};u(e,Pn);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(Pn,di);var XS=ES.CMD,jS=[[],[],[]],YS=Math.sqrt,qS=Math.atan2,KS=function(t,e){var i,n,o,a,r,s,l=t.data,u=XS.M,h=XS.C,c=XS.L,d=XS.R,f=XS.A,p=XS.Q;for(o=0,a=0;o=11?function(){var e,i=this.__clipPaths,n=this.style;if(i)for(var o=0;oi-2?i-1:c+1],u=t[c>i-3?i-1:c+2]);var p=d*d,g=d*p;n.push([Bn(s[0],f[0],l[0],u[0],d,p,g),Bn(s[1],f[1],l[1],u[1],d,p,g)])}return n},fM=function(t,e,i,n){var o,a,r,s,l=[],u=[],h=[],c=[];if(n){r=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d=i&&a>=o)return{x:i,y:o,width:n-i,height:a-o}},createIcon:Po,Group:tb,Image:fi,Text:rM,Circle:sM,Sector:hM,Ring:cM,Polygon:pM,Polyline:gM,Rect:yM,Line:_M,BezierCurve:bM,Arc:SM,IncrementalDisplayable:Zn,CompoundPath:MM,LinearGradient:TM,RadialGradient:AM,BoundingRect:de}),BM=["textStyle","color"],VM={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(BM):null)},getFont:function(){return So({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return ke(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}},GM=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),FM={getItemStyle:function(t,e){var i=GM(this,t,e),n=this.getBorderLineDash();return n&&(i.lineDash=n),i},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}},WM=h,HM=Bi();No.prototype={constructor:No,init:null,mergeOption:function(t){n(this.option,t,!0)},get:function(t,e){return null==t?this.option:Oo(this.option,this.parsePath(t),!e&&Eo(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&Eo(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,n=null==t?this.option:Oo(this.option,t=this.parsePath(t));return e=e||(i=Eo(this,t))&&i.getModel(t),new No(n,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new(0,this.constructor)(i(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){HM(this).getParent=t},isAnimationEnabled:function(){if(!U_.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},ji(No),Yi(No),WM(No,eS),WM(No,nS),WM(No,VM),WM(No,FM);var ZM=0,UM=1e-4,XM=9007199254740991,jM=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,YM=(Object.freeze||Object)({linearMap:Bo,parsePercent:Vo,round:Go,asc:Fo,getPrecision:Wo,getPrecisionSafe:Ho,getPixelPrecision:Zo,getPercentWithPrecision:Uo,MAX_SAFE_INTEGER:XM,remRadian:Xo,isRadianAroundZero:jo,parseDate:Yo,quantity:qo,nice:$o,quantile:function(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),o=+t[n-1],a=i-n;return a?o+a*(t[n]-o):o},reformIntervals:Jo,isNumeric:Qo}),qM=L,KM=/([&<>"'])/g,$M={"&":"&","<":"<",">":">",'"':""","'":"'"},JM=["a","b","c","d","e","f","g"],QM=function(t,e){return"{"+t+(null==e?"":e)+"}"},tI=ze,eI=(Object.freeze||Object)({addCommas:ta,toCamelCase:ea,normalizeCssArray:qM,encodeHTML:ia,formatTpl:na,formatTplSimple:oa,getTooltipMarker:aa,formatTime:sa,capitalFirst:la,truncateText:tI,getTextBoundingRect:function(t){return ke(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,o,a,r,s){return ke(t,e,i,n,o,s,a,r)}}),iI=d,nI=["left","right","top","bottom","width","height"],oI=[["width","left","right"],["height","top","bottom"]],aI=ua,rI=(v(ua,"vertical"),v(ua,"horizontal"),{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}}),sI=Bi(),lI=No.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){No.call(this,t,e,i,n),this.uid=Ro("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?ga(t):{};n(t,e.getTheme().get(this.mainType)),n(t,this.getDefaultOption()),i&&pa(t,o,i)},mergeOption:function(t,e){n(this.option,t,!0);var i=this.layoutMode;i&&pa(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=sI(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var o=i.prototype.defaultOption;o&&e.push(o),i=i.superClass}for(var a={},r=e.length-1;r>=0;r--)a=n(a,e[r],!0);t.defaultOption=a}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});$i(lI,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,i){t=Ui(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=Ui(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o}}(lI),function(t,e){function i(t){var i={},a=[];return d(t,function(r){var s=n(i,r),u=o(s.originalDeps=e(r),t);s.entryCount=u.length,0===s.entryCount&&a.push(r),d(u,function(t){l(s.predecessor,t)<0&&s.predecessor.push(t);var e=n(i,t);l(e.successor,t)<0&&e.successor.push(r)})}),{graph:i,noEntryList:a}}function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function o(t,e){var i=[];return d(t,function(t){l(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,n,o){function a(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}if(t.length){var r=i(e),s=r.graph,l=r.noEntryList,u={};for(d(t,function(t){u[t]=!0});l.length;){var h=l.pop(),c=s[h],f=!!u[h];f&&(n.call(o,h,c.originalDeps.slice()),delete u[h]),d(c.successor,f?function(t){u[t]=!0,a(t)}:a)}d(u,function(){throw new Error("Circle dependency may exists")})}}}(lI,function(t){var e=[];return d(lI.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return Ui(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(lI,rI);var uI="";"undefined"!=typeof navigator&&(uI=navigator.platform||"");var hI={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:uI.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},cI=Bi(),dI={clearColorPalette:function(){cI(this).colorIdx=0,cI(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=cI(e=e||this),o=n.colorIdx||0,a=n.colorNameMap=n.colorNameMap||{};if(a.hasOwnProperty(t))return a[t];var r=Di(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?va(s,i):r;if((l=l||r)&&l.length){var u=l[o];return t&&(a[t]=u),n.colorIdx=(o+1)%l.length,u}}},fI={cartesian2d:function(t,e,i,n){var o=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",o),i.set("y",a),xa(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),xa(a)&&(n.set("y",a),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var o=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",o),xa(o)&&(n.set("single",o),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var o=t.getReferringComponents("polar")[0],a=o.findAxisModel("radiusAxis"),r=o.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",r),xa(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),xa(r)&&(n.set("angle",r),e.firstCategoryDimIndex=1)},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,e,i,n){var o=t.ecModel,a=o.getComponent("parallel",t.get("parallelIndex")),r=e.coordSysDims=a.dimensions.slice();d(a.parallelAxisIndex,function(t,a){var s=o.getComponent("parallelAxis",t),l=r[a];i.set(l,s),xa(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},pI="original",gI="arrayRows",mI="objectRows",vI="keyedColumns",yI="unknown",xI="typedArray",_I="column",wI="row";_a.seriesDataToSource=function(t){return new _a({data:t,sourceFormat:S(t)?xI:pI,fromDataset:!1})},Yi(_a);var bI=Bi(),SI="\0_ec_inner",MI=No.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new No(i),this._optionManager=n},setOption:function(t,e){k(!(SI in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,i=this._optionManager;if(!t||"recreate"===t){var n=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(n)):Ea.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&d(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){var e=this.option,o=this._componentsMap,r=[];Sa(this),d(t,function(t,o){null!=t&&(lI.hasClass(o)?o&&r.push(o):e[o]=null==e[o]?i(t):n(e[o],t,!0))}),lI.topologicalTravel(r,lI.getAllClassMainTypes(),function(i,n){var r=Di(t[i]),s=Pi(o.get(i),r);Ni(s),d(s,function(t,e){var n=t.option;w(n)&&(t.keyInfo.mainType=i,t.keyInfo.subType=za(i,n,t.exist))});var l=Ra(o,n);e[i]=[],o.set(i,[]),d(s,function(t,n){var r=t.exist,s=t.option;if(k(w(s)||r,"Empty component definition"),s){var u=lI.getClass(i,t.keyInfo.subType,!0);if(r&&r instanceof u)r.name=t.keyInfo.name,r.mergeOption(s,this),r.optionUpdated(s,!1);else{var h=a({dependentModels:l,componentIndex:n},t.keyInfo);a(r=new u(s,this,this,h),h),r.init(s,this,this,h),r.optionUpdated(null,!0)}}else r.mergeOption({},this),r.optionUpdated({},!1);o.get(i)[n]=r,e[i][n]=r.option},this),"series"===i&&Ba(this,o.get("series"))},this),this._seriesIndicesMap=R(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=i(this.option);return d(t,function(e,i){if(lI.hasClass(i)){for(var n=(e=Di(e)).length-1;n>=0;n--)Ei(e[n])&&e.splice(n,1);t[i]=e}}),delete t[SI],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,o=t.name,a=this._componentsMap.get(e);if(!a||!a.length)return[];var r;if(null!=i)y(i)||(i=[i]),r=g(f(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=y(n);r=g(a,function(t){return s&&l(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=y(o);r=g(a,function(t){return u&&l(o,t.name)>=0||!u&&t.name===o})}else r=a.slice();return Va(r,t)},findComponents:function(t){var e=t.query,i=t.mainType,n=function(t){var e=i+"Index",n=i+"Id",o=i+"Name";return!t||null==t[e]&&null==t[n]&&null==t[o]?null:{mainType:i,index:t[e],id:t[n],name:t[o]}}(e);return function(e){return t.filter?g(e,t.filter):e}(Va(n?this.queryComponents(n):this._componentsMap.get(i),t))},eachComponent:function(t,e,i){var n=this._componentsMap;"function"==typeof t?(i=e,e=t,n.each(function(t,n){d(t,function(t,o){e.call(i,n,t,o)})})):_(t)?d(n.get(t),e,i):w(t)&&d(this.findComponents(t),e,i)},getSeriesByName:function(t){return g(this._componentsMap.get("series"),function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){return g(this._componentsMap.get("series"),function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){d(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){d(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){d(this._seriesIndices,function(n){var o=this._componentsMap.get("series")[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return d(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){Ba(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;Ba(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),lI.topologicalTravel(i,lI.getAllClassMainTypes(),function(i,n){d(e.get(i),function(e){("series"!==i||!Na(e,t))&&e.restoreData()})})}});h(MI,dI);var II=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],TI={};Fa.prototype={constructor:Fa,create:function(t,e){var i=[];d(TI,function(n,o){var a=n.create(t,e);i=i.concat(a||[])}),this._coordinateSystems=i},update:function(t,e){d(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},Fa.register=function(t,e){TI[t]=e},Fa.get=function(t){return TI[t]};var AI=d,DI=i,CI=f,LI=n,kI=/^(min|max)?(.+)$/;Wa.prototype={constructor:Wa,setOption:function(t,e){t&&d(Di(t.series),function(t){t&&t.data&&S(t.data)&&N(t.data)}),t=DI(t,!0);var i=this._optionBackup,n=Ha.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(ja(i.baseOption,n.baseOption),n.timelineOptions.length&&(i.timelineOptions=n.timelineOptions),n.mediaList.length&&(i.mediaList=n.mediaList),n.mediaDefault&&(i.mediaDefault=n.mediaDefault)):this._optionBackup=n},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=CI(e.timelineOptions,DI),this._mediaList=CI(e.mediaList,DI),this._mediaDefault=DI(e.mediaDefault),this._currentMediaIndices=[],DI(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=DI(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,a=[],r=[];if(!n.length&&!o)return r;for(var s=0,l=n.length;s=1)&&(t=1),t}var i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var o=this.context;o.data=o.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var r=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),u=t&&t.modDataCount||0;r===l&&s===u||(a="reset");var h;(this._dirty||"reset"===a)&&(this._dirty=!1,h=yr(this,n)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=i?i._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!n&&(h||d=i?null:t1&&a>0?e:t}};return s}();UI.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},UI.unfinished=function(){return this._progress&&this._dueIndex":"\n",s="richText"===n,l={},u=0,h=this.getData(),c=h.mapDimension("defaultedTooltip",!0),f=c.length,g=this.getRawValue(t),m=y(g),v=h.getItemVisual(t,"color");w(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var x=(f>1||m&&!f?function(i){function o(t,i){var o=h.getDimensionInfo(i);if(o&&!1!==o.otherDims.tooltip){var c=o.type,d="sub"+a.seriesIndex+"at"+u,p=aa({color:v,type:"subItem",renderMode:n,markerId:d}),g="string"==typeof p?p:p.content,m=(r?g+ia(o.displayName||"-")+": ":"")+ia("ordinal"===c?t+"":"time"===c?e?"":sa("yyyy/MM/dd hh:mm:ss",t):ta(t));m&&f.push(m),s&&(l[d]=v,++u)}}var r=p(i,function(t,e,i){var n=h.getDimensionInfo(i);return t|=n&&!1!==n.tooltip&&null!=n.displayName},0),f=[];c.length?d(c,function(e){o(fr(h,t,e),e)}):d(i,o);var g=r?s?"\n":"
":"",m=g+f.join(g||", ");return{renderMode:n,content:m,style:l}}(g):o(f?fr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=aa({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?ia(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?ia(S)+": "+x:x),markers:l}},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=dI.getColorFromPalette.call(this,t,e,i);return o||(o=n.getColorFromPalette(t,e,i)),o},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});h(YI,ZI),h(YI,dI);var qI=function(){this.group=new tb,this.uid=Ro("viewComponent")};qI.prototype={constructor:qI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var KI=qI.prototype;KI.updateView=KI.updateLayout=KI.updateVisual=function(t,e,i,n){},ji(qI),$i(qI,{registerWhenExtend:!0});var $I=function(){var t=Bi();return function(e){var i=t(e),n=e.pipelineContext,o=i.large,a=i.progressiveRender,r=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(o^r||a^s)&&"reset"}},JI=Bi(),QI=$I();Ar.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Cr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Cr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var tT=Ar.prototype;tT.updateView=tT.updateLayout=tT.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},ji(Ar),$i(Ar,{registerWhenExtend:!0}),Ar.markUpdateMethod=function(t,e){JI(t).updateMethod=e};var eT={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},iT="\0__throttleOriginMethod",nT="\0__throttleRate",oT="\0__throttleType",aT={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=(t.visualColorAccessPath||"itemStyle.color").split("."),o=t.get(n)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(i.setVisual("color",o),!e.isSeriesFiltered(t)){"function"!=typeof o||o instanceof IM||i.each(function(e){i.setItemVisual(e,"color",o(t.getDataParams(e)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e).get(n,!0);null!=i&&t.setItemVisual(e,"color",i)}:null}}}},rT={toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},sT=function(t,e){function i(t,e){if("string"!=typeof t)return t;var i=t;return d(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function n(t){var e=a.get(t);if(null==e){for(var i=t.split("."),n=rT.aria,o=0;o1?"series.multiple.prefix":"series.single.prefix"),{seriesCount:r}),e.eachSeries(function(t,e){if(e1?"multiple":"single")+".";a=i(a=n(s?u+"withName":u+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:o(t.subType)});var c=t.getData();window.data=c,c.count()>l?a+=i(n("data.partialData"),{displayCnt:l}):a+=n("data.allData");for(var d=[],p=0;pi.blockIndex?i.step:null,a=n&&n.modDataCount;return{step:o,modBy:null!=a?Math.ceil(a/o):null,modDataCount:a}}},uT.getPipeline=function(t){return this._pipelineMap.get(t)},uT.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),o=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,a=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:o,modDataCount:r,large:a}},uT.restorePipelines=function(t){var e=this,i=e._pipelineMap=R();t.eachSeries(function(t){var n=t.getProgressive(),o=t.uid;i.set(o,{id:o,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:n&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(n||700),count:0}),jr(e,t,t.dataTask)})},uT.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),i=this.api;d(this._allHandlers,function(n){var o=t.get(n.uid)||t.set(n.uid,[]);n.reset&&zr(this,n,o,e,i),n.overallReset&&Br(this,n,o,e,i)},this)},uT.prepareView=function(t,e,i,n){var o=t.renderTask,a=o.context;a.model=e,a.ecModel=i,a.api=n,o.__block=!t.incrementalPrepareRender,jr(this,e,o)},uT.performDataProcessorTasks=function(t,e){Rr(this,this._dataProcessorHandlers,t,e,{block:!0})},uT.performVisualTasks=function(t,e,i){Rr(this,this._visualHandlers,t,e,i)},uT.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},uT.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var hT=uT.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},cT=Ur(0);Er.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:Yr(t)}),t.uid=Ro("stageHandler"),e&&(t.visualType=e),t};var dT,fT={},pT={};qr(fT,MI),qr(pT,Ga),fT.eachSeriesByType=fT.eachRawSeriesByType=function(t){dT=t},fT.eachComponent=function(t){"series"===t.mainType&&t.subType&&(dT=t.subType)};var gT=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],mT={color:gT,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],gT]},vT=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],yT={color:vT,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:"#eee"},crossStyle:{color:"#eee"}}},legend:{textStyle:{color:"#eee"}},textStyle:{color:"#eee"},title:{textStyle:{color:"#eee"}},toolbox:{iconStyle:{normal:{borderColor:"#eee"}}},dataZoom:{textStyle:{color:"#eee"}},visualMap:{textStyle:{color:"#eee"}},timeline:{lineStyle:{color:"#eee"},itemStyle:{normal:{color:vT[1]}},label:{normal:{textStyle:{color:"#eee"}}},controlStyle:{normal:{color:"#eee",borderColor:"#eee"}}},timeAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},logAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},valueAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},categoryAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},line:{symbol:"circle"},graph:{color:vT},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};yT.categoryAxis.splitLine.show=!1,lI.extend({type:"dataset",defaultOption:{seriesLayoutBy:_I,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){wa(this)}}),qI.extend({type:"dataset"});var xT=Pn.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=.5522848,n=e.cx,o=e.cy,a=e.rx,r=e.ry,s=a*i,l=r*i;t.moveTo(n-a,o),t.bezierCurveTo(n-a,o-l,n-s,o-r,n,o-r),t.bezierCurveTo(n+s,o-r,n+a,o-l,n+a,o),t.bezierCurveTo(n+a,o+l,n+s,o+r,n,o+r),t.bezierCurveTo(n-s,o+r,n-a,o+l,n-a,o),t.closePath()}}),_T=/[\s,]+/;$r.prototype.parse=function(t,e){e=e||{};var i=Kr(t);if(!i)throw new Error("Illegal svg");var n=new tb;this._root=n;var o=i.getAttribute("viewBox")||"",a=parseFloat(i.getAttribute("width")||e.width),r=parseFloat(i.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(r)&&(r=null),es(i,n,null,!0);for(var s=i.firstChild;s;)this._parseNode(s,n),s=s.nextSibling;var l,u;if(o){var h=P(o).split(_T);h.length>=4&&(l={x:parseFloat(h[0]||0),y:parseFloat(h[1]||0),width:parseFloat(h[2]),height:parseFloat(h[3])})}if(l&&null!=a&&null!=r&&(u=as(l,a,r),!e.ignoreViewBox)){var c=n;(n=new tb).add(c),c.scale=u.scale.slice(),c.position=u.position.slice()}return e.ignoreRootClip||null==a||null==r||n.setClipPath(new yM({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:l,viewBoxTransform:u}},$r.prototype._parseNode=function(t,e){var i=t.nodeName.toLowerCase();"defs"===i?this._isDefine=!0:"text"===i&&(this._isText=!0);var n;if(this._isDefine){if(r=bT[i]){var o=r.call(this,t),a=t.getAttribute("id");a&&(this._defs[a]=o)}}else{var r=wT[i];r&&(n=r.call(this,t,e),e.add(n))}for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,n),3===s.nodeType&&this._isText&&this._parseText(s,n),s=s.nextSibling;"defs"===i?this._isDefine=!1:"text"===i&&(this._isText=!1)},$r.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var o=new rM({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});Qr(e,o),es(t,o,this._defs);var a=o.style.fontSize;a&&a<9&&(o.style.fontSize=9,o.scale=o.scale||[1,1],o.scale[0]*=a/9,o.scale[1]*=a/9);var r=o.getBoundingRect();return this._textX+=r.width,e.add(o),o};var wT={g:function(t,e){var i=new tb;return Qr(e,i),es(t,i,this._defs),i},rect:function(t,e){var i=new yM;return Qr(e,i),es(t,i,this._defs),i.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),i},circle:function(t,e){var i=new sM;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),i},line:function(t,e){var i=new _M;return Qr(e,i),es(t,i,this._defs),i.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),i},ellipse:function(t,e){var i=new xT;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),i},polygon:function(t,e){var i=t.getAttribute("points");i&&(i=ts(i));var n=new pM({shape:{points:i||[]}});return Qr(e,n),es(t,n,this._defs),n},polyline:function(t,e){var i=new Pn;Qr(e,i),es(t,i,this._defs);var n=t.getAttribute("points");return n&&(n=ts(n)),new gM({shape:{points:n||[]}})},image:function(t,e){var i=new fi;return Qr(e,i),es(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(o),this._textY=parseFloat(n)+parseFloat(a);var r=new tb;return Qr(e,r),es(t,r,this._defs),r},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0,r=new tb;return Qr(e,r),es(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=Rn(t.getAttribute("d")||"");return Qr(e,i),es(t,i,this._defs),i}},bT={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),o=parseInt(t.getAttribute("y2")||0,10),a=new TM(e,i,n,o);return Jr(t,a),a},radialgradient:function(t){}},ST={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-align":"textAlign","alignment-baseline":"textBaseline"},MT=/url\(\s*#(.*?)\)/,IT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,TT=/([^\s:;]+)\s*:\s*([^:;]+)/g,AT=R(),DT={registerMap:function(t,e,i){var n;return y(e)?n=e:e.svg?n=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),n=[{type:"geoJSON",source:e,specialAreas:i}]),d(n,function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,CT[e])(t)}),AT.set(t,n)},retrieveMap:function(t){return AT.get(t)}},CT={geoJSON:function(t){var e=t.source;t.geoJSON=_(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=Kr(t.source)}},LT=k,kT=d,PT=x,NT=w,OT=lI.parseClassType,ET={zrender:"4.0.6"},RT=1e3,zT=1e3,BT=3e3,VT={PROCESSOR:{FILTER:RT,STATISTIC:5e3},VISUAL:{LAYOUT:zT,GLOBAL:2e3,CHART:BT,COMPONENT:4e3,BRUSH:5e3}},GT="__flagInMainProcess",FT="__optionUpdated",WT=/^[a-zA-Z0-9_]+$/;ls.prototype.on=ss("on"),ls.prototype.off=ss("off"),ls.prototype.one=ss("one"),h(ls,fw);var HT=us.prototype;HT._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[FT]){var e=this[FT].silent;this[GT]=!0,cs(this),ZT.update.call(this),this[GT]=!1,this[FT]=!1,gs.call(this,e),ms.call(this,e)}else if(t.unfinished){var i=1,n=this._model;this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),fs(this,n),t.performVisualTasks(n),bs(this,this._model,0,"remain"),i-=+new Date-o}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},HT.getDom=function(){return this._dom},HT.getZr=function(){return this._zr},HT.setOption=function(t,e,i){var n;if(NT(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[GT]=!0,!this._model||e){var o=new Wa(this._api),a=this._theme,r=this._model=new MI(null,null,a,o);r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,qT),i?(this[FT]={silent:n},this[GT]=!1):(cs(this),ZT.update.call(this),this._zr.flush(),this[FT]=!1,this[GT]=!1,gs.call(this,n),ms.call(this,n))},HT.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},HT.getModel=function(){return this._model},HT.getOption=function(){return this._model&&this._model.getOption()},HT.getWidth=function(){return this._zr.getWidth()},HT.getHeight=function(){return this._zr.getHeight()},HT.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},HT.getRenderedCanvas=function(t){if(U_.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},HT.getSvgDataUrl=function(){if(U_.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},HT.getDataURL=function(t){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;kT(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return kT(n,function(t){t.group.ignore=!1}),a},HT.getConnectedDataURL=function(t){if(U_.canvasSupported){var e=this.group,n=Math.min,o=Math.max;if(eA[e]){var a=1/0,r=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(tA,function(h,c){if(h.group===e){var d=h.getRenderedCanvas(i(t)),f=h.getDom().getBoundingClientRect();a=n(f.left,a),r=n(f.top,r),s=o(f.right,s),l=o(f.bottom,l),u.push({dom:d,left:f.left,top:f.top})}});var c=(s*=h)-(a*=h),f=(l*=h)-(r*=h),p=iw();p.width=c,p.height=f;var g=Ii(p);return kT(u,function(t){var e=new fi({style:{x:t.left*h-a,y:t.top*h-r,image:t.dom}});g.add(e)}),g.refreshImmediately(),p.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},HT.convertToPixel=v(hs,"convertToPixel"),HT.convertFromPixel=v(hs,"convertFromPixel"),HT.containPixel=function(t,e){var i;return t=Vi(this._model,t),d(t,function(t,n){n.indexOf("Models")>=0&&d(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},HT.getVisual=function(t,e){var i=(t=Vi(this._model,t,{defaultMainType:"series"})).seriesModel.getData(),n=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?i.indexOfRawIndex(t.dataIndex):null;return null!=n?i.getItemVisual(n,e):i.getVisual(e)},HT.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},HT.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var ZT={prepareAndUpdate:function(t){cs(this),ZT.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,o=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),o.create(e,i),a.performDataProcessorTasks(e,t),fs(this,e),o.update(e,i),xs(e),a.performVisualTasks(e,t),_s(this,e,i,t);var r=e.get("backgroundColor")||"transparent";if(U_.canvasSupported)n.setBackgroundColor(r);else{var s=Gt(r);r=qt(s,"rgb"),0===s[3]&&(r="transparent")}Ss(e,i)}},updateTransform:function(t){var e=this._model,i=this,n=this._api;if(e){var o=[];e.eachComponent(function(a,r){var s=i.getViewOfComponentModel(r);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(r,e,n,t);l&&l.update&&o.push(s)}else o.push(s)});var a=R();e.eachSeries(function(o){var r=i._chartsMap[o.__viewId];if(r.updateTransform){var s=r.updateTransform(o,e,n,t);s&&s.update&&a.set(o.uid,1)}else a.set(o.uid,1)}),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),bs(i,e,0,t,a),Ss(e,this._api)}},updateView:function(t){var e=this._model;e&&(Ar.markUpdateMethod(t,"updateView"),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),_s(this,this._model,this._api,t),Ss(e,this._api))},updateVisual:function(t){ZT.update.call(this,t)},updateLayout:function(t){ZT.update.call(this,t)}};HT.resize=function(t){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var i=e.resetOption("media"),n=t&&t.silent;this[GT]=!0,i&&cs(this),ZT.update.call(this),this[GT]=!1,gs.call(this,n),ms.call(this,n)}},HT.showLoading=function(t,e){if(NT(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),QT[t]){var i=QT[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},HT.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},HT.makeActionFromEvent=function(t){var e=a({},t);return e.type=jT[t.type],e},HT.dispatchAction=function(t,e){NT(e)||(e={silent:!!e}),XT[t.type]&&this._model&&(this[GT]?this._pendingActions.push(t):(ps.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&U_.browser.weChat&&this._throttledZrFlush(),gs.call(this,e.silent),ms.call(this,e.silent)))},HT.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},HT.on=ss("on"),HT.off=ss("off"),HT.one=ss("one");var UT=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];HT._initEvents=function(){kT(UT,function(t){var e=function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var r=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=r&&r.getDataParams(o.dataIndex,o.dataType,o)||{}}else o&&o.eventData&&(i=a({},o.eventData));if(i){var s=i.componentType,l=i.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=i.seriesIndex);var u=s&&null!=l&&n.getComponent(s,l),h=u&&this["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];i.event=e,i.type=t,this._ecEventProcessor.eventInfo={targetEl:o,packedEvent:i,model:u,view:h},this.trigger(t,i)}};e.zrEventfulCallAtLast=!0,this._zr.on(t,e,this)},this),kT(jT,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},HT.isDisposed=function(){return this._disposed},HT.clear=function(){this.setOption({series:[]},!0)},HT.dispose=function(){if(!this._disposed){this._disposed=!0,Fi(this.getDom(),oA,"");var t=this._api,e=this._model;kT(this._componentsViews,function(i){i.dispose(e,t)}),kT(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete tA[this.id]}},h(us,fw),Ds.prototype={constructor:Ds,normalizeQuery:function(t){var e={},i={},n={};if(_(t)){var o=OT(t);e.mainType=o.main||null,e.subType=o.sub||null}else{var a=["Index","Name","Id"],r={name:1,dataIndex:1,dataType:1};d(t,function(t,o){for(var s=!1,l=0;l0&&h===o.length-u.length){var c=o.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}r.hasOwnProperty(o)&&(i[o]=t,s=!0),s||(n[o]=t)})}return{cptQuery:e,dataQuery:i,otherQuery:n}},filter:function(t,e,i){function n(t,e,i,n){return null==t[i]||e[n||i]===t[i]}var o=this.eventInfo;if(!o)return!0;var a=o.targetEl,r=o.packedEvent,s=o.model,l=o.view;if(!s||!l)return!0;var u=e.cptQuery,h=e.dataQuery;return n(u,s,"mainType")&&n(u,s,"subType")&&n(u,s,"index","componentIndex")&&n(u,s,"name")&&n(u,s,"id")&&n(h,r,"name")&&n(h,r,"dataIndex")&&n(h,r,"dataType")&&(!l.filterForExposedEvent||l.filterForExposedEvent(t,e.otherQuery,a,r))},afterTrigger:function(){this.eventInfo=null}};var XT={},jT={},YT=[],qT=[],KT=[],$T=[],JT={},QT={},tA={},eA={},iA=new Date-0,nA=new Date-0,oA="_echarts_instance_",aA=Ls;Bs(2e3,aT),Ns(BI),Os(5e3,function(t){var e=R();t.eachSeries(function(t){var i=t.get("stack");if(i){var n=e.get(i)||e.set(i,[]),o=t.getData(),a={stackResultDimension:o.getCalculationInfo("stackResultDimension"),stackedOverDimension:o.getCalculationInfo("stackedOverDimension"),stackedDimension:o.getCalculationInfo("stackedDimension"),stackedByDimension:o.getCalculationInfo("stackedByDimension"),isStackedByIndex:o.getCalculationInfo("isStackedByIndex"),data:o,seriesModel:t};if(!a.stackedDimension||!a.isStackedByIndex&&!a.stackedByDimension)return;n.length&&o.setCalculationInfo("stackedOnSeries",n[n.length-1].seriesModel),n.push(a)}}),e.each(ar)}),Gs("default",function(t,e){r(e=e||{},{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new yM({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new SM({shape:{startAngle:-lT/2,endAngle:-lT/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),o=new yM({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});n.animateShape(!0).when(1e3,{endAngle:3*lT/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*lT/2}).delay(300).start("circularInOut");var a=new tb;return a.add(n),a.add(o),a.add(i),a.resize=function(){var e=t.getWidth()/2,a=t.getHeight()/2;n.setShape({cx:e,cy:a});var r=n.shape.r;o.setShape({x:e-r,y:a-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},a.resize(),a}),Es({type:"highlight",event:"highlight",update:"highlight"},B),Es({type:"downplay",event:"downplay",update:"downplay"},B),Ps("light",mT),Ps("dark",yT);var rA={};Xs.prototype={constructor:Xs,add:function(t){return this._add=t,this},update:function(t){return this._update=t,this},remove:function(t){return this._remove=t,this},execute:function(){var t=this._old,e=this._new,i={},n=[],o=[];for(js(t,{},n,"_oldKeyGetter",this),js(e,i,o,"_newKeyGetter",this),a=0;ax[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},el(this)},yA._initDataFromProvider=function(t,e){if(!(t>=e)){for(var i,n=this._chunkSize,o=this._rawData,a=this._storage,r=this.dimensions,s=r.length,l=this._dimensionInfos,u=this._nameList,h=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;pM[1]&&(M[1]=S)}if(!o.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var T=r[i],A=a[T][y];if(A){I=A[x];var D=l[T].ordinalMeta;D&&D.categories.length&&(I=D.categories[I])}}var C=null==m?null:m.id;null==C&&null!=I&&(d[I]=d[I]||0,C=I,d[I]>0&&(C+="__ec__"+d[I]),d[I]++),null!=C&&(h[v]=C)}}!o.persistent&&o.clean&&o.clean(),this._rawCount=this._count=e,this._extent={},el(this)}},yA.count=function(){return this._count},yA.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){n=new e(i);for(o=0;o=0&&e=0&&ea&&(a=s)}return i=[o,a],this._extent[t]=i,i},yA.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},yA.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},yA.getCalculationInfo=function(t){return this._calculationInfo[t]},yA.setCalculationInfo=function(t,e){lA(t)?a(this._calculationInfo,t):this._calculationInfo[t]=e},yA.getSum=function(t){var e=0;if(this._storage[t])for(var i=0,n=this.count();i=this._rawCount||t<0)return-1;var e=this._indices,i=e[t];if(null!=i&&it))return a;o=a-1}}return-1},yA.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var o=Number.MAX_VALUE,a=-1,r=0,s=this.count();r=0&&a<0)&&(o=u,a=l,n.length=0),n.push(r))}return n},yA.getRawIndex=nl,yA.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i=l&&w<=u||isNaN(w))&&(a[r++]=c),c++;h=!0}else if(2===n){for(var d=this._storage[s],v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1],f=0;f=l&&w<=u||isNaN(w))&&(b>=y&&b<=x||isNaN(b))&&(a[r++]=c),c++}h=!0}}if(!h)if(1===n)for(m=0;m=l&&w<=u||isNaN(w))&&(a[r++]=M)}else for(m=0;mt[I][1])&&(S=!1)}S&&(a[r++]=this.getRawIndex(m))}return rb[1]&&(b[1]=w)}}}return o},yA.downSample=function(t,e,i,n){for(var o=sl(this,[t]),a=o._storage,r=[],s=Math.floor(1/e),l=a[t],u=this.count(),h=this._chunkSize,c=o._rawExtent[t],d=new($s(this))(u),f=0,p=0;pu-p&&(s=u-p,r.length=s);for(var g=0;gc[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=ol,o},yA.getItemModel=function(t){var e=this.hostModel;return new No(this.getRawDataItem(t),e,e&&e.ecModel)},yA.diff=function(t){var e=this;return new Xs(t?t.getIndices():[],this.getIndices(),function(e){return al(t,e)},function(t){return al(e,t)})},yA.getVisual=function(t){var e=this._visual;return e&&e[t]},yA.setVisual=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},yA.setLayout=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},yA.getLayout=function(t){return this._layout[t]},yA.getItemLayout=function(t){return this._itemLayouts[t]},yA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},yA.clearItemLayouts=function(){this._itemLayouts.length=0},yA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},yA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,lA(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},yA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var xA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};yA.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(xA,e)),this._graphicEls[t]=e},yA.getItemGraphicEl=function(t){return this._graphicEls[t]},yA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},yA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new vA(e,this.hostModel)}if(t._storage=this._storage,Qs(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?ol:nl,t},yA.wrapMethod=function(t,e){var i=this[t];"function"==typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(C(arguments)))})},yA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],yA.CHANGABLE_METHODS=["filterSelf","selectRange"];var _A=function(t,e){return e=e||{},hl(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};xl.prototype.parse=function(t){return t},xl.prototype.getSetting=function(t){return this._setting[t]},xl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},xl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},xl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},xl.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},xl.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},xl.prototype.getExtent=function(){return this._extent.slice()},xl.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},xl.prototype.isBlank=function(){return this._isBlank},xl.prototype.setBlank=function(t){this._isBlank=t},xl.prototype.getLabel=null,ji(xl),$i(xl,{registerWhenExtend:!0}),_l.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&f(i,bl);return new _l({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var wA=_l.prototype;wA.getOrdinal=function(t){return wl(this).get(t)},wA.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!=typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=wl(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var bA=xl.prototype,SA=xl.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new _l({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),bA.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return bA.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(bA.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:B,niceExtent:B});SA.create=function(){return new SA};var MA=Go,IA=Go,TA=xl.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),TA.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Ml(t)},getTicks:function(){return Al(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getLabel:function(t,e){if(null==t)return"";var i=e&&e.precision;return null==i?i=Ho(t)||0:"auto"===i&&(i=this._intervalPrecision),t=IA(t,i,!0),ta(t)},niceTicks:function(t,e,i){t=t||5;var n=this._extent,o=n[1]-n[0];if(isFinite(o)){o<0&&(o=-o,n.reverse());var a=Sl(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax?e[0]-=i/2:(e[1]+=i/2,e[0]-=i/2)}else e[1]=1;var n=e[1]-e[0];isFinite(n)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var o=this._interval;t.fixMin||(e[0]=IA(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=IA(Math.ceil(e[1]/o)*o))}});TA.create=function(){return new TA};var AA="__ec_stack_",DA="undefined"!=typeof Float32Array?Float32Array:Array,CA={seriesType:"bar",plan:$I(),reset:function(t){if(Rl(t)&&zl(t)){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),o=i.getOtherAxis(n),a=e.mapDimension(o.dim),r=e.mapDimension(n.dim),s=o.isHorizontal(),l=s?0:1,u=Ol(Pl([t]),n,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var n,h=new DA(2*t.count),c=[],d=[],f=0;null!=(n=t.next());)d[l]=e.get(a,n),d[1-l]=e.get(r,n),c=i.dataToPoint(d,null,c),h[f++]=c[0],h[f++]=c[1];e.setLayout({largePoints:h,barWidth:u,valueAxisStart:Bl(0,o),valueAxisHorizontal:s})}}}}},LA=TA.prototype,kA=Math.ceil,PA=Math.floor,NA=function(t,e,i,n){for(;i>>1;t[o][1]i&&(a=i);var r=EA.length,s=NA(EA,a,0,r),l=EA[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=$o(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(kA((n[0]-h)/u)*u+h),Math.round(PA((n[1]-h)/u)*u+h)];Tl(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Yo(t)}});d(["contain","normalize"],function(t){OA.prototype[t]=function(e){return LA[t].call(this,this.parse(e))}});var EA=[["hh:mm:ss",1e3],["hh:mm:ss",5e3],["hh:mm:ss",1e4],["hh:mm:ss",15e3],["hh:mm:ss",3e4],["hh:mm\nMM-dd",6e4],["hh:mm\nMM-dd",3e5],["hh:mm\nMM-dd",6e5],["hh:mm\nMM-dd",9e5],["hh:mm\nMM-dd",18e5],["hh:mm\nMM-dd",36e5],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",216e5],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",864e5],["MM-dd\nyyyy",1728e5],["MM-dd\nyyyy",2592e5],["MM-dd\nyyyy",3456e5],["MM-dd\nyyyy",432e6],["MM-dd\nyyyy",5184e5],["week",6048e5],["MM-dd\nyyyy",864e6],["week",12096e5],["week",18144e5],["month",26784e5],["week",36288e5],["month",53568e5],["week",6048e6],["quarter",8208e6],["month",107136e5],["month",13392e6],["half-year",16416e6],["month",214272e5],["month",26784e6],["year",32832e6]];OA.create=function(t){return new OA({useUTC:t.ecModel.get("useUTC")})};var RA=xl.prototype,zA=TA.prototype,BA=Ho,VA=Go,GA=Math.floor,FA=Math.ceil,WA=Math.pow,HA=Math.log,ZA=xl.extend({type:"log",base:10,$constructor:function(){xl.apply(this,arguments),this._originalScale=new TA},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return f(zA.getTicks.call(this),function(n){var o=Go(WA(this.base,n));return o=n===e[0]&&t.__fixMin?Vl(o,i[0]):o,o=n===e[1]&&t.__fixMax?Vl(o,i[1]):o},this)},getLabel:zA.getLabel,scale:function(t){return t=RA.scale.call(this,t),WA(this.base,t)},setExtent:function(t,e){var i=this.base;t=HA(t)/HA(i),e=HA(e)/HA(i),zA.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=RA.getExtent.call(this);e[0]=WA(t,e[0]),e[1]=WA(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Vl(e[0],n[0])),i.__fixMax&&(e[1]=Vl(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=HA(t[0])/HA(e),t[1]=HA(t[1])/HA(e),RA.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=qo(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[Go(FA(e[0]/n)*n),Go(GA(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){zA.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){ZA.prototype[t]=function(e){return e=HA(e)/HA(this.base),RA[t].call(this,e)}}),ZA.create=function(){return new ZA};var UA={getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getMax:function(t){var e=this.option,i=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=i&&"dataMax"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:B,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},XA=Un({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n+a),t.lineTo(i-o,n+a),t.closePath()}}),jA=Un({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n),t.lineTo(i,n+a),t.lineTo(i-o,n),t.closePath()}}),YA=Un({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,a=Math.max(o,e.height),r=o/2,s=r*r/(a-r),l=n-a+r+s,u=Math.asin(s/r),h=Math.cos(u)*r,c=Math.sin(u),d=Math.cos(u),f=.6*r,p=.7*r;t.moveTo(i-h,l+s),t.arc(i,l,r,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(i+h-c*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-h+c*f,l+s+d*f,i-h,l+s),t.closePath()}}),qA=Un({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,a=e.y,r=n/3*2;t.moveTo(o,a),t.lineTo(o+r,a+i),t.lineTo(o,a+i/4*3),t.lineTo(o-r,a+i),t.lineTo(o,a),t.closePath()}}),KA={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var a=Math.min(i,n);o.x=t,o.y=e,o.width=a,o.height=a},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},$A={};d({line:_M,rect:yM,roundRect:yM,square:yM,circle:sM,diamond:jA,pin:YA,arrow:qA,triangle:XA},function(t,e){$A[e]=new t});var JA=Un({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style;"pin"===this.shape.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,o=$A[n];"none"!==e.symbolType&&(o||(o=$A[n="rect"]),KA[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),QA={isDimensionStacked:pl,enableDataStack:fl,getStackedDimension:gl},tD=(Object.freeze||Object)({createList:function(t){return ml(t.getSource(),t)},getLayoutRect:ca,dataStack:QA,createScale:function(t,e){var i=e;No.isInstance(e)||h(i=new No(e),UA);var n=Hl(i);return n.setExtent(t[0],t[1]),Wl(n,i),n},mixinAxisModelCommonMethods:function(t){h(t,UA)},completeDimensions:hl,createDimensions:_A,createSymbol:Jl}),eD=1e-8;eu.prototype={constructor:eu,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],a=[],r=this.geometries,s=0;s0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&d(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var a=new eu(e.name,o,e.cp);return a.properties=e,a})},nD=Bi(),oD=[0,1],aD=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};aD.prototype={constructor:aD,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Zo(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,n=this.scale;return t=n.normalize(t),this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count()),Bo(t,oD,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count());var o=Bo(t,i,oD,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=au(this,e),n=f(i.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return xu(this,n,i.tickCategoryInterval,o,t.clamp),n},getViewLabels:function(){return ou(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return pu(this)}};var rD=iD,sD={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){sD[t]=aw[t]});var lD={};d(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){lD[t]=zM[t]}),YI.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});var uD=wu.prototype,hD=wu.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};uD._createSymbol=function(t,e,i,n,o){this.removeAll();var a=Jl(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:bu(n)}),a.drift=Su,this._symbolType=t,this.add(a)},uD.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},uD.getSymbolPath=function(){return this.childAt(0)},uD.getScale=function(){return this.childAt(0).scale},uD.highlight=function(){this.childAt(0).trigger("emphasis")},uD.downplay=function(){this.childAt(0).trigger("normal")},uD.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},uD.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},uD.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=hD(t,e),r=n!==this._symbolType;if(r){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(n,t,e,a,s)}else(l=this.childAt(0)).silent=!1,Io(l,{scale:bu(a)},o,e);if(this._updateCommon(t,e,a,i),r){var l=this.childAt(0),u=i&&i.fadeIn,h={scale:l.scale.slice()};u&&(h.style={opacity:l.style.opacity}),l.scale=[0,0],u&&(l.style.opacity=0),To(l,h,o,e)}this._seriesModel=o};var cD=["itemStyle"],dD=["emphasis","itemStyle"],fD=["label"],pD=["emphasis","label"];uD._updateCommon=function(t,e,i,n){var o=this.childAt(0),r=t.hostModel,s=t.getItemVisual(e,"color");"image"!==o.type&&o.useStyle({strokeNoScale:!0});var l=n&&n.itemStyle,u=n&&n.hoverItemStyle,h=n&&n.symbolRotate,c=n&&n.symbolOffset,d=n&&n.labelModel,f=n&&n.hoverLabelModel,p=n&&n.hoverAnimation,g=n&&n.cursorStyle;if(!n||t.hasItemOption){var m=n&&n.itemModel?n.itemModel:t.getItemModel(e);l=m.getModel(cD).getItemStyle(["color"]),u=m.getModel(dD).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(fD),f=m.getModel(pD),p=m.getShallow("hoverAnimation"),g=m.getShallow("cursor")}else u=a({},u);var v=o.style;o.attr("rotation",(h||0)*Math.PI/180||0),c&&o.attr("position",[Vo(c[0],i[0]),Vo(c[1],i[1])]),g&&o.attr("cursor",g),o.setColor(s,n&&n.symbolInnerColor),o.setStyle(l);var y=t.getItemVisual(e,"opacity");null!=y&&(v.opacity=y);var x=t.getItemVisual(e,"liftZ"),_=o.__z2Origin;null!=x?null==_&&(o.__z2Origin=o.z2,o.z2+=x):null!=_&&(o.z2=_,o.__z2Origin=null);var w=n&&n.useNameLabel;go(v,u,d,f,{labelFetcher:r,labelDataIndex:e,defaultText:function(e,i){return w?t.getName(e):_u(t,e)},isRectText:!0,autoColor:s}),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=u,fo(o),o.__symbolOriginalScale=bu(i),p&&r.isAnimationEnabled()&&o.on("mouseover",Mu).on("mouseout",Iu).on("emphasis",Tu).on("normal",Au)},uD.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,!(e&&e.keepLabel)&&(i.style.text=null),Io(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(wu,tb);var gD=Du.prototype;gD.updateData=function(t,e){e=Lu(e);var i=this.group,n=t.hostModel,o=this._data,a=this._symbolCtor,r=ku(t);o||i.removeAll(),t.diff(o).add(function(n){var o=t.getItemLayout(n);if(Cu(t,o,n,e)){var s=new a(t,n,r);s.attr("position",o),t.setItemGraphicEl(n,s),i.add(s)}}).update(function(s,l){var u=o.getItemGraphicEl(l),h=t.getItemLayout(s);Cu(t,h,s,e)?(u?(u.updateData(t,s,r),Io(u,{position:h},n)):(u=new a(t,s)).attr("position",h),i.add(u),t.setItemGraphicEl(s,u)):i.remove(u)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},gD.isPersistent=function(){return!0},gD.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},gD.incrementalPrepareUpdate=function(t){this._seriesScope=ku(t),this._data=null,this.group.removeAll()},gD.incrementalUpdate=function(t,e,i){i=Lu(i);for(var n=t.start;n0&&Ru(i[o-1]);o--);for(;n0&&Ru(i[a-1]);a--);for(;o=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;(r=new wu(o,a)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else Ar.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=zi(o,n);if(null!=a&&a>=0){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else Ar.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new MD({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new ID({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_updateAnimation:function(t,e,i,n,o,a){var r=this._polyline,s=this._polygon,l=t.hostModel,u=mD(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;o&&(h=Yu(u.current,i,o),c=Yu(u.stackedOnCurrent,i,o),d=Yu(u.next,i,o),f=Yu(u.stackedOnNext,i,o)),r.shape.__points=u.current,r.shape.points=h,Io(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),Io(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;me&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;ie[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},u(kD,aD);var PD={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},ND={};ND.categoryAxis=n({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},PD),ND.valueAxis=n({boundaryGap:[0,0],splitNumber:5},PD),ND.timeAxis=r({scale:!0,min:"dataMin",max:"dataMax"},ND.valueAxis),ND.logAxis=r({scale:!0,logBase:10},ND.valueAxis);var OD=["value","category","time","log"],ED=function(t,e,i,a){d(OD,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,o){var a=this.layoutMode,s=a?ga(e):{};n(e,o.getTheme().get(r+"Axis")),n(e,this.getDefaultOption()),e.type=i(t,e),a&&pa(e,s,a)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=_l.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:o([{},ND[r+"Axis"],a],!0)})}),lI.registerSubTypeDefaulter(t+"Axis",v(i,t))},RD=lI.extend({type:"cartesian2dAxis",axis:null,init:function(){RD.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){RD.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){RD.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});n(RD.prototype,UA);var zD={offset:0};ED("x",RD,th,zD),ED("y",RD,th,zD),lI.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var BD=ih.prototype;BD.type="grid",BD.axisPointerEnabled=!0,BD.getRect=function(){return this._rect},BD.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),d(i.x,function(t){Wl(t.scale,t.model)}),d(i.y,function(t){Wl(t.scale,t.model)});var n={};d(i.x,function(t){nh(i,"y",t,n)}),d(i.y,function(t){nh(i,"x",t,n)}),this.resize(this.model,e)},BD.resize=function(t,e,i){function n(){d(a,function(t){var e=t.isHorizontal(),i=e?[0,o.width]:[0,o.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),ah(t,e?o.x:o.y)})}var o=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;n(),!i&&t.get("containLabel")&&(d(a,function(t){if(!t.model.get("axisLabel.inside")){var e=jl(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");o[i]-=e[i]+n,"top"===t.position?o.y+=e.height+n:"left"===t.position&&(o.x+=e.width+n)}}}),n())},BD.getAxis=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},BD.getAxes=function(){return this._axesList.slice()},BD.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}w(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,o=this._coordsList;nu[1]?-1:1,c=["start"===o?u[0]-h*l:"end"===o?u[1]+h*l:(u[0]+u[1])/2,ph(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*GD/180);var f;ph(o)?n=HD(t.rotation,null!=d?d:t.rotation,r):(n=uh(t,o,d||0,u),null!=(f=t.axisNameAvailableWidth)&&(f=Math.abs(f/Math.sin(n.rotation)),!isFinite(f)&&(f=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},m=g.ellipsis,v=T(t.nameTruncateMaxWidth,g.maxWidth,f),y=null!=m&&null!=v?tI(i,v,p,m,{minChar:2,placeholder:g.placeholder}):i,x=e.get("tooltip",!0),_=e.mainType,w={componentType:_,name:i,$vars:["name"]};w[_+"Index"]=e.componentIndex;var b=new rM({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:hh(e),z2:1,tooltip:x&&x.show?a({content:i,formatter:function(){return i},formatterParams:w},x):null});mo(b.style,s,{text:y,textFont:p,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:n.textAlign,textVerticalAlign:n.textVerticalAlign}),e.get("triggerEvent")&&(b.eventData=lh(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},HD=FD.innerTextLayout=function(t,e,i){var n,o,a=Xo(e-t);return jo(a)?(o=i>0?"top":"bottom",n="center"):jo(a-GD)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=a>0&&a0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:o}},ZD=d,UD=v,XD=Ws({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&Sh(t),XD.superApply(this,"render",arguments),Dh(this,t,0,i,0,!0)},updateAxisPointer:function(t,e,i,n,o){Dh(this,t,0,i,0,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),XD.superApply(this,"remove",arguments)},dispose:function(t,e){Ch(this,e),XD.superApply(this,"dispose",arguments)}}),jD=[];XD.registerAxisPointerClass=function(t,e){jD[t]=e},XD.getAxisPointerClass=function(t){return t&&jD[t]};var YD=["axisLine","axisTickLabel","axisName"],qD=["splitArea","splitLine"],KD=XD.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,i,n){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new tb,this.group.add(this._axisGroup),t.get("show")){var a=t.getCoordSysModel(),r=Lh(a,t),s=new FD(t,r);d(YD,s.add,s),this._axisGroup.add(s.getGroup()),d(qD,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Lo(o,this._axisGroup,t),KD.superCall(this,"render",t,e,i,n)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),a=o.get("color");a=y(a)?a:[a];for(var s=e.coordinateSystem.getRect(),l=i.isHorizontal(),u=0,h=i.getTicksCoords({tickModel:n}),c=[],d=[],f=o.getLineStyle(),p=0;p1){var c;"string"==typeof o?c=DD[o]:"function"==typeof o&&(c=o),c&&t.setData(n.downSample(n.mapDimension(s.dim),1/h,c,CD))}}}}}("line"));var $D=YI.extend({type:"series.__base_bar__",getInitialData:function(t,e){return ml(this.getSource(),this)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(e.clampData(t)),n=this.getData(),o=n.getLayout("offset"),a=n.getLayout("size");return i[e.getBaseAxis().isHorizontal()?0:1]+=o+a/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod",itemStyle:{},emphasis:{}}});$D.extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect",getProgressive:function(){return!!this.get("large")&&this.get("progressive")},getProgressiveThreshold:function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t}});var JD=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),QD={getBarItemStyle:function(t){var e=JD(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},tC=["itemStyle","barBorderWidth"];a(No.prototype,QD),Zs({type:"bar",render:function(t,e,i){this._updateDrawMode(t);var n=t.get("coordinateSystem");return"cartesian2d"!==n&&"polar"!==n||(this._isLargeDraw?this._renderLarge(t,e,i):this._renderNormal(t,e,i)),this.group},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t,e,i){var n,o=this.group,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.getBaseAxis();"cartesian2d"===s.type?n=l.isHorizontal():"polar"===s.type&&(n="angle"===l.dim);var u=t.isAnimationEnabled()?t:null;a.diff(r).add(function(e){if(a.hasValue(e)){var i=a.getItemModel(e),r=iC[s.type](a,e,i),l=eC[s.type](a,e,i,r,n,u);a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,i,r,t,n,"polar"===s.type)}}).update(function(e,i){var l=r.getItemGraphicEl(i);if(a.hasValue(e)){var h=a.getItemModel(e),c=iC[s.type](a,e,h);l?Io(l,{shape:c},u,e):l=eC[s.type](a,e,h,c,n,u,!0),a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,h,c,t,n,"polar"===s.type)}else o.remove(l)}).remove(function(t){var e=r.getItemGraphicEl(t);"cartesian2d"===s.type?e&&Nh(t,u,e):e&&Oh(t,u,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),zh(t,this.group)},_incrementalRenderLarge:function(t,e){zh(e,this.group,!0)},dispose:B,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,i=this._data;t&&t.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(e){"sector"===e.type?Oh(e.dataIndex,t,e):Nh(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var eC={cartesian2d:function(t,e,i,n,o,r,s){var l=new yM({shape:a({},n)});if(r){var u=l.shape,h=o?"height":"width",c={};u[h]=0,c[h]=n[h],zM[s?"updateProps":"initProps"](l,{shape:c},r,e)}return l},polar:function(t,e,i,n,o,a,s){var l=n.startAngle0?1:-1,r=n.height>0?1:-1;return{x:n.x+a*o/2,y:n.y+r*o/2,width:n.width-a*o,height:n.height-r*o}},polar:function(t,e,i){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle}}},nC=Pn.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,o=this.__valueIdx,a=0;a0&&"scale"!==u){var d=o.getItemLayout(0),f=Math.max(i.getWidth(),i.getHeight())/2,p=m(r.removeClipPath,r);r.setClipPath(this._createClipPath(d.cx,d.cy,f,d.startAngle,d.clockwise,p,t))}else r.removeClipPath();this._data=o}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r){var s=new hM({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return To(s,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),s},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var lC=function(t,e){d(e,function(e){e.update="updateView",Es(e,function(i,n){var o={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name,i.dataIndex);var n=t.getData();n.each(function(e){var i=n.getName(e);o[i]=t.isSelected(i)||!1})}),{name:i.name,selected:o}})})},uC=function(t){return{getTargetSeries:function(e){var i={},n=R();return e.eachSeriesByType(t,function(t){t.__paletteScope=i,n.set(t.uid,t)}),n},reset:function(t,e){var i=t.getRawData(),n={},o=t.getData();o.each(function(t){var e=o.getRawIndex(t);n[e]=t}),i.each(function(e){var a=n[e],r=null!=a&&o.getItemVisual(a,"color",!0);if(r)i.setItemVisual(e,"color",r);else{var s=i.getItemModel(e).get("itemStyle.color")||t.getColorFromPalette(i.getName(e)||e+"",t.__paletteScope,i.count());i.setItemVisual(e,"color",s),null!=a&&o.setItemVisual(a,"color",s)}})}}},hC=function(t,e,i,n){var o,a,r=t.getData(),s=[],l=!1;r.each(function(i){var n,u,h,c,d=r.getItemLayout(i),f=r.getItemModel(i),p=f.getModel("label"),g=p.get("position")||f.get("emphasis.label.position"),m=f.getModel("labelLine"),v=m.get("length"),y=m.get("length2"),x=(d.startAngle+d.endAngle)/2,_=Math.cos(x),w=Math.sin(x);o=d.cx,a=d.cy;var b="inside"===g||"inner"===g;if("center"===g)n=d.cx,u=d.cy,c="center";else{var S=(b?(d.r+d.r0)/2*_:d.r*_)+o,M=(b?(d.r+d.r0)/2*w:d.r*w)+a;if(n=S+3*_,u=M+3*w,!b){var I=S+_*(v+e-d.r),T=M+w*(v+e-d.r),A=I+(_<0?-1:1)*y,D=T;n=A+(_<0?-5:5),u=D,h=[[S,M],[I,T],[A,D]]}c=b?"center":_>0?"left":"right"}var C=p.getFont(),L=p.get("rotate")?_<0?-x+Math.PI:-x:0,k=ke(t.getFormattedLabel(i,"normal")||r.getName(i),C,c,"top");l=!!L,d.label={x:n,y:u,position:g,height:k.height,len:v,len2:y,linePoints:h,textAlign:c,verticalAlign:"middle",rotation:L,inside:b},b||s.push(d.label)}),!l&&t.get("avoidLabelOverlap")&&Hh(s,o,a,e,i,n)},cC=2*Math.PI,dC=Math.PI/180,fC=function(t){return{seriesType:t,reset:function(t,e){var i=e.findComponents({mainType:"legend"});if(i&&i.length){var n=t.getData();n.filterSelf(function(t){for(var e=n.getName(t),o=0;o=0;s--){var l=2*s,u=n[l]-a/2,h=n[l+1]-r/2;if(t>=u&&e>=h&&t<=u+a&&e<=h+r)return s}return-1}}),gC=Uh.prototype;gC.isPersistent=function(){return!this._incremental},gC.updateData=function(t){this.group.removeAll();var e=new pC({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},gC.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var i=2*(t.endIndex-t.startIndex),n=4*t.startIndex*2;e=new Float32Array(e.buffer,n,i)}t.setShape("points",e)})}},gC.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},gC.incrementalUpdate=function(t,e){var i;this._incremental?(i=new pC,this._incremental.addDisplayable(i,!0)):((i=new pC({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(i,e,!!this._incremental)},gC._setCommon=function(t,e,i){var n=e.hostModel,o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.symbolProxy=Jl(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var a=t.shape.size[0]<4;t.useStyle(n.getModel("itemStyle").getItemStyle(a?["color","shadowBlur","shadowColor"]:["color"]));var r=e.getVisual("color");r&&t.setColor(r),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>=0&&(t.dataIndex=i+(t.startIndex||0))}))},gC.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},gC._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Zs({type:"scatter",render:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).updateData(n),this._finished=!0},incrementalPrepareRender:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).incrementalPrepareUpdate(n),this._finished=!1},incrementalRender:function(t,e,i){this._symbolDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData();if(this.group.dirty(),!this._finished||n.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var o=AD().reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_updateSymbolDraw:function(t,e){var i=this._symbolDraw,n=e.pipelineContext.large;return i&&n===this._isLargeDraw||(i&&i.remove(),i=this._symbolDraw=n?new Uh:new Du,this._isLargeDraw=n,this.group.removeAll()),this.group.add(i.group),i},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}}),Bs(TD("scatter","circle")),zs(AD("scatter")),u(Xh,aD),jh.prototype.getIndicatorAxes=function(){return this._indicatorAxes},jh.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},jh.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},jh.prototype.pointToData=function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=Math.sqrt(e*e+i*i);e/=n,i/=n;for(var o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;ln[0]&&isFinite(c)&&isFinite(n[0]))}else{r.getTicks().length-1>a&&(u=i(u));var d=Math.round((n[0]+n[1])/2/u)*u,f=Math.round(a/2);r.setExtent(Go(d-f*u),Go(d+(a-f)*u)),r.setInterval(u)}})},jh.dimensions=[],jh.create=function(t,e){var i=[];return t.eachComponent("radar",function(n){var o=new jh(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},Fa.register("radar",jh);var mC=ND.valueAxis,vC=(Fs({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),o=this.get("scale"),s=this.get("axisLine"),l=this.get("axisTick"),u=this.get("axisLabel"),h=this.get("name"),c=this.get("name.show"),d=this.get("name.formatter"),p=this.get("nameGap"),g=this.get("triggerEvent"),m=f(this.get("indicator")||[],function(f){null!=f.max&&f.max>0&&!f.min?f.min=0:null!=f.min&&f.min<0&&!f.max&&(f.max=0);var m=h;if(null!=f.color&&(m=r({color:f.color},h)),f=n(i(f),{boundaryGap:t,splitNumber:e,scale:o,axisLine:s,axisTick:l,axisLabel:u,name:f.text,nameLocation:"end",nameGap:p,nameTextStyle:m,triggerEvent:g},!1),c||(f.name=""),"string"==typeof d){var v=f.name;f.name=d.replace("{value}",null!=v?v:"")}else"function"==typeof d&&(f.name=d(f.name,f));var y=a(new No(f,null,this.ecModel),UA);return y.mainType="radar",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return m}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:n({lineStyle:{color:"#bbb"}},mC.axisLine),axisLabel:Yh(mC.axisLabel,!1),axisTick:Yh(mC.axisTick,!1),splitLine:Yh(mC.splitLine,!0),splitArea:Yh(mC.splitArea,!0),indicator:[]}}),["axisLine","axisTickLabel","axisName"]);Ws({type:"radar",render:function(t,e,i){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem;d(f(e.getIndicatorAxes(),function(t){return new FD(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){d(vC,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){function e(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}var i=t.coordinateSystem,n=i.getIndicatorAxes();if(n.length){var o=t.get("shape"),a=t.getModel("splitLine"),s=t.getModel("splitArea"),l=a.getModel("lineStyle"),u=s.getModel("areaStyle"),h=a.get("show"),c=s.get("show"),p=l.get("color"),g=u.get("color");p=y(p)?p:[p],g=y(g)?g:[g];var m=[],v=[];if("circle"===o)for(var x=n[0].getTicksCoords(),_=i.cx,w=i.cy,b=0;b"+f(i,function(i,n){var o=e.get(e.mapDimension(i.dim),t);return ia(i.name+" : "+o)}).join("
")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Zs({type:"radar",render:function(t,e,n){function o(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=qh(t.getItemVisual(e,"symbolSize")),a=Jl(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function a(e,i,n,a,r,s){n.removeAll();for(var l=0;l"+ia(n+" : "+i)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),i=this.coordinateSystem,n=i.getRegion(e);return n&&i.dataToPoint(n.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}}}}),aC);var EC="\0_ec_interaction_mutex";Es({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(oc,fw);var RC={axisPointer:1,tooltip:1,brush:1};xc.prototype={constructor:xc,draw:function(t,e,i,n,o){var a="geo"===t.mainType,r=t.getData&&t.getData();a&&e.eachComponent({mainType:"series",subType:"map"},function(e){r||e.getHostGeoModel()!==t||(r=e.getData())});var s=t.coordinateSystem;this._updateBackground(s);var l=this._regionsGroup,u=this.group,h=s.scale,c={position:s.position,scale:h};!l.childAt(0)||o?u.attr(c):Io(u,c,t),l.removeAll();var f=["itemStyle"],p=["emphasis","itemStyle"],g=["label"],m=["emphasis","label"],v=R();d(s.regions,function(e){var i=v.get(e.name)||v.set(e.name,new tb),n=new MM({shape:{paths:[]}});i.add(n);var o,s=(C=t.getRegionModel(e.name)||t).getModel(f),u=C.getModel(p),c=mc(s),y=mc(u),x=C.getModel(g),_=C.getModel(m);if(r){o=r.indexOfName(e.name);var w=r.getItemVisual(o,"color",!0);w&&(c.fill=w)}d(e.geometries,function(t){if("polygon"===t.type){n.shape.paths.push(new pM({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)n.shape.paths.push(new pM({shape:{points:t.interiors[e]}}))}}),n.setStyle(c),n.style.strokeNoScale=!0,n.culling=!0;var b=x.get("show"),S=_.get("show"),M=r&&isNaN(r.get(r.mapDimension("value"),o)),I=r&&r.getItemLayout(o);if(a||M&&(b||S)||I&&I.showLabel){var T,A=a?e.name:o;(!r||o>=0)&&(T=t);var D=new rM({position:e.center.slice(),scale:[1/h[0],1/h[1]],z2:10,silent:!0});go(D.style,D.hoverStyle={},x,_,{labelFetcher:T,labelDataIndex:A,defaultText:e.name,useInsideStyle:!1},{textAlign:"center",textVerticalAlign:"middle"}),i.add(D)}if(r)r.setItemGraphicEl(o,i);else{var C=t.getRegionModel(e.name);n.eventData={componentType:"geo",componentIndex:t.componentIndex,geoIndex:t.componentIndex,name:e.name,region:C&&C.option||{}}}(i.__regions||(i.__regions=[])).push(e),fo(i,y,{hoverSilentOnTouch:!!t.get("selectedMode")}),l.add(i)}),this._updateController(t,e,i),vc(this,t,l,i,n),yc(t,l)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&OC.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&d(OC.makeGraphic(e,this.uid),function(t){this._backgroundGroup.add(t)},this),this._mapName=e},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:l};return e[l+"Id"]=t.id,e}var o=t.coordinateSystem,r=this._controller,s=this._controllerHost;s.zoomLimit=t.get("scaleLimit"),s.zoom=o.getZoom(),r.enable(t.get("roam")||!1);var l=t.mainType;r.off("pan").on("pan",function(t){this._mouseDownFlag=!1,fc(s,t.dx,t.dy),i.dispatchAction(a(n(),{dx:t.dx,dy:t.dy}))},this),r.off("zoom").on("zoom",function(t){if(this._mouseDownFlag=!1,pc(s,t.scale,t.originX,t.originY),i.dispatchAction(a(n(),{zoom:t.scale,originX:t.originX,originY:t.originY})),this._updateGroup){var e=this.group.scale;this._regionsGroup.traverse(function(t){"text"===t.type&&t.attr("scale",[1/e[0],1/e[1]])})}},this),r.setPointerChecker(function(e,n,a){return o.getViewRectAfterRoam().contain(n,a)&&!gc(e,i,t)})}};var zC="__seriesMapHighDown",BC="__seriesMapCallKey";Zs({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new xc(i,!0);o.add(a.group),a.draw(t,e,i,this,n),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,e,i){var n=t.originalData,o=this.group;n.each(n.mapDimension("value"),function(e,i){if(!isNaN(e)){var r=n.getItemLayout(i);if(r&&r.point){var s=r.point,l=r.offset,u=new sM({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:8+(l?0:NM+1)});if(!l){var h=t.mainSeries.getData(),c=n.getName(i),d=h.indexOfName(c),f=n.getItemModel(i),p=f.getModel("label"),g=f.getModel("emphasis.label"),m=h.getItemGraphicEl(d),y=A(t.getFormattedLabel(d,"normal"),c),x=A(t.getFormattedLabel(d,"emphasis"),y),_=m[zC],w=Math.random();if(!_){_=m[zC]={};var b=v(_c,!0),S=v(_c,!1);m.on("mouseover",b).on("mouseout",S).on("emphasis",b).on("normal",S)}m[BC]=w,a(_,{recordVersion:w,circle:u,labelModel:p,hoverLabelModel:g,emphasisText:x,normalText:y}),wc(_,!1)}o.add(u)}}})}}),Es({type:"geoRoam",event:"geoRoam",update:"updateTransform"},function(t,e){var i=t.componentType||"series";e.eachComponent({mainType:i,query:t},function(e){var n=e.coordinateSystem;if("geo"===n.type){var o=bc(n,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(o.center),e.setZoom&&e.setZoom(o.zoom),"series"===i&&d(e.seriesGroup,function(t){t.setCenter(o.center),t.setZoom(o.zoom)})}})});var VC=Q;h(Sc,Tw),Mc.prototype={constructor:Mc,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new de(t,e,i,n),this._rect},getBoundingRect:function(){return this._rect},setViewRect:function(t,e,i,n){this.transformTo(t,e,i,n),this._viewRect=new de(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._rawTransformable;a.transform=o.calculateTransform(new de(t,e,i,n)),a.decomposeTransform(),this._updateTransform()},setCenter:function(t){t&&(this._center=t,this._updateCenterAndZoom())},setZoom:function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},getDefaultCenter:function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=Q([],n,t),i=Q([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransformable,e=this._rawTransformable;e.parent=t,t.updateTransform(),e.updateTransform(),wt(this.transform||(this.transform=[]),e.transform||xt()),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],Tt(this.invTransform,this.transform),this.decomposeTransform()},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},dataToPoint:function(t,e,i){var n=e?this._rawTransform:this.transform;return i=i||[],n?VC(i,t,n):G(i,t)},pointToData:function(t){var e=this.invTransform;return e?VC([],t,e):[t[0],t[1]]},convertToPixel:v(Ic,"dataToPoint"),convertFromPixel:v(Ic,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},h(Mc,Tw),Tc.prototype={constructor:Tc,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;ie&&(e=n.height)}this.height=e+1},getNodeById:function(t){if(this.getId()===t)return this;for(var e=0,i=this.children,n=i.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this.hostTree.data.getItemLayout(this.dataIndex)},getModel:function(t){if(!(this.dataIndex<0)){var e,i=this.hostTree,n=i.data.getItemModel(this.dataIndex),o=this.getLevelModel();return o||0!==this.children.length&&(0===this.children.length||!1!==this.isExpand)||(e=this.getLeavesModel()),n.getModel(t,(o||e||i.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},getLeavesModel:function(){return this.hostTree.leavesModel},setVisual:function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this.hostTree.data.getItemVisual(this.dataIndex,t,e)},getRawIndex:function(){return this.hostTree.data.getRawIndex(this.dataIndex)},getId:function(){return this.hostTree.data.getId(this.dataIndex)},isAncestorOf:function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},isDescendantOf:function(t){return t!==this&&t.isAncestorOf(this)}},Vc.prototype={constructor:Vc,type:"tree",eachNode:function(t,e,i){this.root.eachNode(t,e,i)},getNodeByDataIndex:function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},getNodeByName:function(t){return this.root.getNodeByName(t)},update:function(){for(var t=this.data,e=this._nodes,i=0,n=e.length;ia&&(a=t.depth)});var r=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:a;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=r}),o.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),o=n.getValue(),a=n.name;n&&n!==i;)a=n.parentNode.name+"."+a,n=n.parentNode;return ia(a+(isNaN(o)||null==o?"":" : "+o))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}}),Zs({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new tb,this._controller=new oc(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(t,e,i,n){var o=t.getData(),a=t.layoutInfo,r=this._mainGroup,s=t.get("layout");"radial"===s?r.attr("position",[a.x+a.width/2,a.y+a.height/2]):r.attr("position",[a.x,a.y]),this._updateViewCoordSys(t),this._updateController(t,e,i);var l=this._data,u={expandAndCollapse:t.get("expandAndCollapse"),layout:s,orient:t.getOrient(),curvature:t.get("lineStyle.curveness"),symbolRotate:t.get("symbolRotate"),symbolOffset:t.get("symbolOffset"),hoverAnimation:t.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};o.diff(l).add(function(e){td(o,e)&&id(o,e,null,r,t,u)}).update(function(e,i){var n=l.getItemGraphicEl(i);td(o,e)?id(o,e,n,r,t,u):n&&nd(l,i,n,r,t,u)}).remove(function(e){var i=l.getItemGraphicEl(e);i&&nd(l,e,i,r,t,u)}).execute(),this._nodeScaleRatio=t.get("nodeScaleRatio"),this._updateNodeAndLinkScale(t),!0===u.expandAndCollapse&&o.eachItemGraphicEl(function(e,n){e.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:t.id,dataIndex:n})})}),this._data=o},_updateViewCoordSys:function(t){var e=t.getData(),i=[];e.each(function(t){var n=e.getItemLayout(t);!n||isNaN(n.x)||isNaN(n.y)||i.push([+n.x,+n.y])});var n=[],o=[];fn(i,n,o),o[0]-n[0]==0&&(o[0]+=1,n[0]-=1),o[1]-n[1]==0&&(o[1]+=1,n[1]-=1);var a=t.coordinateSystem=new Mc;a.zoomLimit=t.get("scaleLimit"),a.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1]),a.setCenter(t.get("center")),a.setZoom(t.get("zoom")),this.group.attr({position:a.position,scale:a.scale}),this._viewCoordSys=a},_updateController:function(t,e,i){var n=this._controller,o=this._controllerHost,a=this.group;n.setPointerChecker(function(e,n,o){var r=a.getBoundingRect();return r.applyTransform(a.transform),r.contain(n,o)&&!gc(e,i,t)}),n.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),n.off("pan").off("zoom").on("pan",function(e){fc(o,e.dx,e.dy),i.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})},this).on("zoom",function(e){pc(o,e.scale,e.originX,e.originY),i.dispatchAction({seriesId:t.id,type:"treeRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),this._updateNodeAndLinkScale(t)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),Es({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=t.dataIndex,n=e.getData().tree.getNodeByDataIndex(i);n.isExpand=!n.isExpand})}),Es({type:"treeRoam",event:"treeRoam",update:"none"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=bc(e.coordinateSystem,t);e.setCenter&&e.setCenter(i.center),e.setZoom&&e.setZoom(i.zoom)})});Bs(TD("tree","circle")),zs(function(t,e){t.eachSeriesByType("tree",function(t){sd(t,e)})}),YI.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/0,left:"center",top:"middle",right:null,bottom:null,width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",borderColor:"rgba(255,255,255,0.7)",borderWidth:1,shadowColor:"rgba(150,150,150,1)",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:"#fff"}},emphasis:{textStyle:{}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",ellipsis:!0},upperLabel:{show:!1,position:[0,"50%"],height:20,color:"#fff",ellipsis:!0,verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],color:"#fff",ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i={name:t.name,children:t.data};dd(i);var n=t.levels||[];n=t.levels=fd(n,e);var o={};return o.levels=n,Vc.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=ta(y(i)?i[0]:i);return ia(e.getName(t)+": "+n)},getDataParams:function(t){var e=YI.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=cd(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},a(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=R(),this._idIndexMapCount=0);var i=e.get(t);return null==i&&e.set(t,i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var UC=5;pd.prototype={constructor:pd,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),da(a,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,o){for(var a=0,s=e.emptyItemWidth,l=t.get("breadcrumb.height"),u=ha(e.pos,e.box),h=e.totalWidth,c=e.renderList,d=c.length-1;d>=0;d--){var f=c[d],p=f.node,g=f.width,m=f.text;h>u.width&&(h-=g-s,g=s,m=null);var y=new pM({shape:{points:gd(a,0,g,l,d===c.length-1,0===d)},style:r(i.getItemStyle(),{lineJoin:"bevel",text:m,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:v(o,p)});this.group.add(y),md(y,t,p),a+=g+8}},remove:function(){this.group.removeAll()}};var XC=m,jC=tb,YC=yM,qC=d,KC=["label"],$C=["emphasis","label"],JC=["upperLabel"],QC=["emphasis","upperLabel"],tL=10,eL=1,iL=2,nL=Qb([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),oL=function(t){var e=nL(t);return e.stroke=e.fill=e.lineWidth=null,e};Zs({type:"treemap",init:function(t,e){this._containerGroup,this._storage={nodeGroup:[],background:[],content:[]},this._oldTree,this._breadcrumb,this._controller,this._state="ready"},render:function(t,e,i,n){if(!(l(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var o=ld(n,["treemapZoomToNode","treemapRootToNode"],t),a=n&&n.type,r=t.layoutInfo,s=!this._oldTree,u=this._storage,h="treemapRootToNode"===a&&o&&u?{rootNodeGroup:u.nodeGroup[o.node.getRawIndex()],direction:n.direction}:null,c=this._giveContainerGroup(r),d=this._doRender(c,t,h);s||a&&"treemapZoomToNode"!==a&&"treemapRootToNode"!==a?d.renderFinally():this._doAnimation(c,d,t,h),this._resetController(i),this._renderBreadcrumb(t,i,o)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new jC,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function n(t,e,i,o,a){function r(t){return t.getId()}function s(r,s){var l=null!=r?t[r]:null,u=null!=s?e[s]:null,c=h(l,u,i,a);c&&n(l&&l.viewChildren||[],u&&u.viewChildren||[],c,o,a+1)}o?(e=t,qC(t,function(t,e){!t.isRemoved()&&s(e,e)})):new Xs(e,t,r,r).add(s).update(s).remove(v(s,null)).execute()}var o=e.getData().tree,a=this._oldTree,r={nodeGroup:[],background:[],content:[]},s={nodeGroup:[],background:[],content:[]},l=this._storage,u=[],h=v(yd,e,s,l,i,r,u);n(o.root?[o.root]:[],a&&a.root?[a.root]:[],t,o===a||!a,0);var c=function(t){var e={nodeGroup:[],background:[],content:[]};return t&&qC(t,function(t,i){var n=e[i];qC(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}(l);return this._oldTree=o,this._storage=s,{lastsForAnimation:r,willDeleteEls:c,renderFinally:function(){qC(c,function(t){qC(t,function(t){t.parent&&t.parent.remove(t)})}),qC(u,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),r=i.get("animationEasing"),s=vd();qC(e.willDeleteEls,function(t,e){qC(t,function(t,i){if(!t.invisible){var a,l=t.parent;if(n&&"drillDown"===n.direction)a=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,h=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,h=l.__tmNodeHeight/2),a="nodeGroup"===e?{position:[u,h],style:{opacity:0}}:{shape:{x:u,y:h,width:0,height:0},style:{opacity:0}}}a&&s.add(t,a,o,r)}})}),qC(this._storage,function(t,i){qC(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=a({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,r))})},this),this._state="animating",s.done(XC(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new oc(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",XC(this._onPan,this)),e.on("zoom",XC(this._onZoom,this)));var i=new de(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,n){return i.contain(e,n)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t){if("animating"!==this._state&&(Math.abs(t.dx)>3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var i=e.getLayout();if(!i)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:i.x+t.dx,y:i.y+t.dy,width:i.width,height:i.height}})}},_onZoom:function(t){var e=t.originX,i=t.originY;if("animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new de(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=xt();St(s,s,[-e,-i]),It(s,s,[t.scale,t.scale]),St(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&window.open(a,r)}}}}},this)},_renderBreadcrumb:function(t,e,i){i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(i={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new pd(this.group))).render(t,e,i.node,XC(function(e){"animating"!==this._state&&(hd(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))},this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(t,e){var i;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var a=o.transformCoordToLocal(t,e),r=o.shape;if(!(r.x<=a[0]&&a[0]<=r.x+r.width&&r.y<=a[1]&&a[1]<=r.y+r.height))return!1;i={node:n,offsetX:a[0],offsetY:a[1]}}},this),i}});for(var aL=["treemapZoomToNode","treemapRender","treemapMove"],rL=0;rL=0&&t.call(e,i[o],o)},TL.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},TL.breadthFirstTraverse=function(t,e,i,n){if(Jd.isInstance(e)||(e=this._nodesMap[$d(e)]),e){for(var o="out"===i?"outEdges":"in"===i?"inEdges":"edges",a=0;a=0&&i.node2.dataIndex>=0});for(var o=0,a=n.length;o=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}};h(Jd,AL("hostGraph","data")),h(Qd,AL("hostGraph","edgeData")),IL.Node=Jd,IL.Edge=Qd,Yi(Jd),Yi(Qd);var DL=function(t,e,i,n,o){for(var a=new IL(n),r=0;r "+f)),h++)}var p,g=i.get("coordinateSystem");if("cartesian2d"===g||"polar"===g)p=ml(t,i);else{var m=Fa.get(g),v=m&&"view"!==m.type?m.dimensions||[]:[];l(v,"value")<0&&v.concat(["value"]);var y=_A(t,{coordDimensions:v});(p=new vA(y,i)).initData(t)}var x=new vA(["value"],i);return x.initData(u,s),o&&o(p,x),kc({mainData:p,struct:a,structAttr:"graph",datas:{node:p,edge:x},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a},CL=Hs({type:"series.graph",init:function(t){CL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){CL.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){CL.superApply(this,"mergeDefaultAndTheme",arguments),Ci(t,["edgeLabel"],["show"])},getInitialData:function(t,e){var i=t.edges||t.links||[],n=t.data||t.nodes||[],o=this;if(n&&i)return DL(n,i,this,!0,function(t,i){function n(t){return(t=this.parsePath(t))&&"label"===t[0]?r:t&&"emphasis"===t[0]&&"label"===t[1]?l:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var a=o.getModel("edgeLabel"),r=new No({label:a.option},a.parentModel,e),s=o.getModel("emphasis.edgeLabel"),l=new No({emphasis:{label:s.option}},s.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),t})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(t,e,i){if("edge"===i){var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),s=n.getName(a.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=ia(l.join(" > ")),o.value&&(l+=" : "+ia(o.value)),l}return CL.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=f(this.option.categories||[],function(t){return null!=t.value?t:a({value:0},t)}),e=new vA(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return CL.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle"},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{label:{show:!0}}}}),LL=_M.prototype,kL=bM.prototype,PL=Un({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){(tf(e)?LL:kL).buildPath(t,e)},pointAt:function(t){return tf(this.shape)?LL.pointAt.call(this,t):kL.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=tf(e)?[e.x2-e.x1,e.y2-e.y1]:kL.tangentAt.call(this,t);return q(i,i)}}),NL=["fromSymbol","toSymbol"],OL=rf.prototype;OL.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,a=this.parent;a;)a.scale&&(o/=a.scale[0]),a=a.parent;var r=t.childOfName("line");if(this.__dirty||r.__dirty){var s=r.shape.percent,l=r.pointAt(0),u=r.pointAt(s),h=U([],u,l);if(q(h,h),e&&(e.attr("position",l),c=r.tangentAt(0),e.attr("rotation",Math.PI/2-Math.atan2(c[1],c[0])),e.attr("scale",[o*s,o*s])),i){i.attr("position",u);var c=r.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(c[1],c[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var d,f,p,g=5*o;if("end"===n.__position)d=[h[0]*g+u[0],h[1]*g+u[1]],f=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var m=s/2,v=[(c=r.tangentAt(m))[1],-c[0]],y=r.pointAt(m);v[1]>0&&(v[0]=-v[0],v[1]=-v[1]),d=[y[0]+v[0]*g,y[1]+v[1]*g],f="center",p="bottom";var x=-Math.atan2(c[1],c[0]);u[0].8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||p,textAlign:n.__textAlign||f},position:d,scale:[o,o]})}}}},OL._createLine=function(t,e,i){var n=t.hostModel,o=of(t.getItemLayout(e));o.shape.percent=0,To(o,{shape:{percent:1}},n,e),this.add(o);var a=new rM({name:"label",lineLabelOriginalOpacity:1});this.add(a),d(NL,function(i){var n=nf(i,t,e);this.add(n),this[ef(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},OL.updateData=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=t.getItemLayout(e),r={shape:{}};af(r.shape,a),Io(o,r,n,e),d(NL,function(i){var n=t.getItemVisual(e,i),o=ef(i);if(this[o]!==n){this.remove(this.childOfName(i));var a=nf(i,t,e);this.add(a)}this[o]=n},this),this._updateCommonStl(t,e,i)},OL._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,s=i&&i.hoverLineStyle,l=i&&i.labelModel,u=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var h=t.getItemModel(e);a=h.getModel("lineStyle").getLineStyle(),s=h.getModel("emphasis.lineStyle").getLineStyle(),l=h.getModel("label"),u=h.getModel("emphasis.label")}var c=t.getItemVisual(e,"color"),f=D(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(r({strokeNoScale:!0,fill:"none",stroke:c,opacity:f},a)),o.hoverStyle=s,d(NL,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:f}))},this);var p,g,m=l.getShallow("show"),v=u.getShallow("show"),y=this.childOfName("label");if((m||v)&&(p=c||"#000",null==(g=n.getFormattedLabel(e,"normal",t.dataType)))){var x=n.getRawValue(e);g=null==x?t.getName(e):isFinite(x)?Go(x):x}var _=m?g:null,w=v?A(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(mo(y.style,l,{text:_},{autoColor:p}),y.__textAlign=b.textAlign,y.__verticalAlign=b.textVerticalAlign,y.__position=l.get("position")||"middle"),y.hoverStyle=null!=w?{text:w,textFill:u.getTextColor(!0),fontStyle:u.getShallow("fontStyle"),fontWeight:u.getShallow("fontWeight"),fontSize:u.getShallow("fontSize"),fontFamily:u.getShallow("fontFamily")}:{text:null},y.ignore=!m&&!v,fo(this)},OL.highlight=function(){this.trigger("emphasis")},OL.downplay=function(){this.trigger("normal")},OL.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},OL.setLinePoints=function(t){var e=this.childOfName("line");af(e.shape,t),e.dirty()},u(rf,tb);var EL=sf.prototype;EL.isPersistent=function(){return!0},EL.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var o=hf(t);t.diff(n).add(function(i){lf(e,t,i,o)}).update(function(i,a){uf(e,n,t,a,i,o)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},EL.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},EL.incrementalPrepareUpdate=function(t){this._seriesScope=hf(t),this._lineData=null,this.group.removeAll()},EL.incrementalUpdate=function(t,e){for(var i=t.start;i=o/3?1:2),l=e.y-n(r)*a*(a>=o/3?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}}),YL=2*Math.PI,qL=(Ar.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=Sf(t,i);this._renderMain(t,e,i,n,o)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var a=this.group,r=t.getModel("axisLine").getModel("lineStyle"),s=t.get("clockwise"),l=-t.get("startAngle")/180*Math.PI,u=-t.get("endAngle")/180*Math.PI,h=(u-l)%YL,c=l,d=r.get("width"),f=0;f=t&&(0===e?0:n[e-1][0]).4?"bottom":"middle",textAlign:A<-.4?"left":A>.4?"right":"center"},{autoColor:P}),silent:!0}))}if(g.get("show")&&T!==v){for(var N=0;N<=y;N++){var A=Math.cos(w),D=Math.sin(w),O=new _M({shape:{x1:A*c+u,y1:D*c+h,x2:A*(c-_)+u,y2:D*(c-_)+h},silent:!0,style:I});"auto"===I.stroke&&O.setStyle({stroke:n((T+N/y)/v)}),l.add(O),w+=S}w-=S}else w+=b}},_renderPointer:function(t,e,i,n,o,a,r,s){var l=this.group,u=this._data;if(t.get("pointer.show")){var h=[+t.get("min"),+t.get("max")],c=[a,r],d=t.getData(),f=d.mapDimension("value");d.diff(u).add(function(e){var i=new jL({shape:{angle:a}});To(i,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(i),d.setItemGraphicEl(e,i)}).update(function(e,i){var n=u.getItemGraphicEl(i);Io(n,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(n),d.setItemGraphicEl(e,n)}).remove(function(t){var e=u.getItemGraphicEl(t);l.remove(e)}).execute(),d.eachItemGraphicEl(function(t,e){var i=d.getItemModel(e),a=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:Vo(a.get("width"),o.r),r:Vo(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(Bo(d.get(f,e),h,[0,1],!0))),fo(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=d}else u&&u.eachItemGraphicEl(function(t){l.remove(t)})},_renderTitle:function(t,e,i,n,o){var a=t.getData(),r=a.mapDimension("value"),s=t.getModel("title");if(s.get("show")){var l=s.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(Bo(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},s,{x:u,y:h,text:a.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:f,forceRich:!0})}))}},_renderDetail:function(t,e,i,n,o){var a=t.getModel("detail"),r=+t.get("min"),s=+t.get("max");if(a.get("show")){var l=a.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=Vo(a.get("width"),o.r),d=Vo(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(Bo(p,[r,s],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},a,{x:u,y:h,text:Mf(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Hs({type:"series.funnel",init:function(t){qL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return oC(this,["value"])},_defaultLabelLine:function(t){Ci(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},getDataParams:function(t){var e=this.getData(),i=qL.superCall(this,"getDataParams",t),n=e.mapDimension("value"),o=e.getSum(n);return i.percent=o?+(e.get(n,t)/o*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}})),KL=If.prototype,$L=["itemStyle","opacity"];KL.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e),l=t.getItemModel(e).get($L);l=null==l?1:l,n.useStyle({}),i?(n.setShape({points:s.points}),n.setStyle({opacity:0}),To(n,{style:{opacity:l}},o,e)):Io(n,{style:{opacity:l},shape:{points:s.points}},o,e);var u=a.getModel("itemStyle"),h=t.getItemVisual(e,"color");n.setStyle(r({lineJoin:"round",fill:h},u.getItemStyle(["opacity"]))),n.hoverStyle=u.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),fo(this)},KL._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,a=t.getItemModel(e),r=t.getItemLayout(e).label,s=t.getItemVisual(e,"color");Io(i,{shape:{points:r.linePoints||r.linePoints}},o,e),Io(n,{style:{x:r.x,y:r.y}},o,e),n.attr({rotation:r.rotation,origin:[r.x,r.y],z2:10});var l=a.getModel("label"),u=a.getModel("emphasis.label"),h=a.getModel("labelLine"),c=a.getModel("emphasis.labelLine"),s=t.getItemVisual(e,"color");go(n.style,n.hoverStyle={},l,u,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:s,useInsideStyle:!!r.inside},{textAlign:r.textAlign,textVerticalAlign:r.verticalAlign}),n.ignore=n.normalIgnore=!l.get("show"),n.hoverIgnore=!u.get("show"),i.ignore=i.normalIgnore=!h.get("show"),i.hoverIgnore=!c.get("show"),i.setStyle({stroke:s}),i.setStyle(h.getModel("lineStyle").getLineStyle()),i.hoverStyle=c.getModel("lineStyle").getLineStyle()},u(If,tb);Ar.extend({type:"funnel",render:function(t,e,i){var n=t.getData(),o=this._data,a=this.group;n.diff(o).add(function(t){var e=new If(n,t);n.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var i=o.getItemGraphicEl(e);i.updateData(n,t),a.add(i),n.setItemGraphicEl(t,i)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=n},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});Bs(uC("funnel")),zs(function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),n=i.mapDimension("value"),o=t.get("sort"),a=Tf(t,e),r=Af(i,o),s=[Vo(t.get("minSize"),a.width),Vo(t.get("maxSize"),a.width)],l=i.getDataExtent(n),u=t.get("min"),h=t.get("max");null==u&&(u=Math.min(l[0],0)),null==h&&(h=l[1]);var c=t.get("funnelAlign"),d=t.get("gap"),f=(a.height-d*(i.count()-1))/i.count(),p=a.y,g=function(t,e){var o,r=Bo(i.get(n,t)||0,[u,h],s,!0);switch(c){case"left":o=a.x;break;case"center":o=a.x+(a.width-r)/2;break;case"right":o=a.x+a.width-r}return[[o,e],[o+r,e]]};"ascending"===o&&(f=-f,d=-d,p+=a.height,r=r.reverse());for(var m=0;ma&&(e[1-n]=e[n]+h.sign*a),e},tk=d,ek=Math.min,ik=Math.max,nk=Math.floor,ok=Math.ceil,ak=Go,rk=Math.PI;Nf.prototype={type:"parallel",constructor:Nf,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;tk(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),r=this._axesMap.set(t,new JL(t,Hl(a),[0,0],a.get("type"),n)),s="category"===r.type;r.onBand=s&&a.get("boundaryGap"),r.inverse=a.get("inverse"),a.axis=r,r.model=a,r.coordinateSystem=a.coordinateSystem=this},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},containPoint:function(t){var e=this._makeLayoutInfo(),i=e.axisBase,n=e.layoutBase,o=e.pixelDimIndex,a=t[1-o],r=t[o];return a>=i&&a<=i+e.axisLength&&r>=n&&r<=n+e.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();tk(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,n.mapDimension(t)),Wl(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],o=["width","height"],a=e.get("layout"),r="horizontal"===a?0:1,s=i[o[r]],l=[0,s],u=this.dimensions.length,h=Of(e.get("axisExpandWidth"),l),c=Of(e.get("axisExpandCount")||0,[0,u]),d=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,f=e.get("axisExpandWindow");f?(t=Of(f[1]-f[0],l),f[1]=f[0]+t):(t=Of(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||nk(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[nk(ak(f[0]/h,1))+1,ok(ak(f[1]/h,1))-1],m=p/h*f[0];return{layout:a,pixelDimIndex:r,layoutBase:i[n[r]],layoutLength:s,axisBase:i[n[1-r]],axisLength:i[o[1-r]],axisExpandable:d,axisExpandWidth:h,axisCollapseWidth:p,axisExpandWindow:f,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:m}},_layoutAxes:function(){var t=this._rect,e=this._axesMap,i=this.dimensions,n=this._makeLayoutInfo(),o=n.layout;e.each(function(t){var e=[0,n.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),tk(i,function(e,i){var a=(n.axisExpandable?Rf:Ef)(i,n),r={horizontal:{x:a.position,y:n.axisLength},vertical:{x:0,y:a.position}},s={horizontal:rk/2,vertical:0},l=[r[o].x+t.x,r[o].y+t.y],u=s[o],h=xt();Mt(h,h,u),St(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:a.axisNameAvailableWidth,axisLabelShow:a.axisLabelShow,nameTruncateMaxWidth:a.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},getAxis:function(t){return this._axesMap.get(t)},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},eachActiveState:function(t,e,i,n){null==i&&(i=0),null==n&&(n=t.count());var o=this._axesMap,a=this.dimensions,r=[],s=[];d(a,function(e){r.push(t.mapDimension(e)),s.push(o.get(e).model)});for(var l=this.hasAxisBrushed(),u=i;uo*(1-h[0])?(l="jump",r=s-o*(1-h[2])):(r=s-o*h[1])>=0&&(r=s-o*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?QL(r,n,a,"all"):l="none";else{o=n[1]-n[0];(n=[ik(0,a[1]*s/o-o/2)])[1]=ek(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},Fa.register("parallel",{create:function(t,e){var i=[];return t.eachComponent("parallel",function(n,o){var a=new Nf(n,t,e);a.name="parallel_"+o,a.resize(n,e),n.coordinateSystem=a,a.model=n,i.push(a)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}});var sk=lI.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Qb([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=i(t);if(e)for(var n=e.length-1;n>=0;n--)Fo(e[n])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,o=e.length;n5)return;var n=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==n.behavior&&this._dispatchExpand({axisExpandWindow:n.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&Ip(this,"mousemove")){var e=this._model,i=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),n=i.behavior;"jump"===n&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===n?null:{axisExpandWindow:i.axisExpandWindow,animation:"jump"===n&&null})}}};Ns(function(t){Cf(t),Lf(t)}),YI.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return Tp(i,this),ml(i,this)},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"}});var Dk=.3,Ck=(Ar.extend({type:"parallel",init:function(){this._dataGroup=new tb,this.group.add(this._dataGroup),this._data,this._initialized},render:function(t,e,i,n){var o=this._dataGroup,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.dimensions,u=kp(t);if(a.diff(r).add(function(t){Pp(Lp(a,o,t,l,s),a,t,u)}).update(function(e,i){var o=r.getItemGraphicEl(i),h=Cp(a,e,l,s);a.setItemGraphicEl(e,o),Io(o,{shape:{points:h}},n&&!1===n.animation?null:t,e),Pp(o,a,e,u)}).remove(function(t){var e=r.getItemGraphicEl(t);o.remove(e)}).execute(),!this._initialized){this._initialized=!0;var h=Dp(s,t,function(){setTimeout(function(){o.removeClipPath()})});o.setClipPath(h)}this._data=a},incrementalPrepareRender:function(t,e,i){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,i){for(var n=e.getData(),o=e.coordinateSystem,a=o.dimensions,r=kp(e),s=t.start;sn&&(n=e)}),d(e,function(e){var o=new hL({type:"color",mappingMethod:"linear",dataExtent:[i,n],visual:t.get("color")}).mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var a=e.getModel().get("itemStyle.color");null!=a&&e.setVisual("color",a)})}})});var Ok={_baseAxisDim:null,getInitialData:function(t,e){var i,n,o=e.getComponent("xAxis",this.get("xAxisIndex")),a=e.getComponent("yAxis",this.get("yAxisIndex")),r=o.get("type"),s=a.get("type");"category"===r?(t.layout="horizontal",i=o.getOrdinalMeta(),n=!0):"category"===s?(t.layout="vertical",i=a.getOrdinalMeta(),n=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],f=[o,a],p=f[u].get("type"),g=f[1-u].get("type"),m=t.data;if(m&&n){var v=[];d(m,function(t,e){var i;t.value&&y(t.value)?(i=t.value.slice(),t.value.unshift(e)):y(t)?(i=t.slice(),t.unshift(e)):i=t,v.push(i)}),t.data=v}var x=this.defaultValueDimensions;return oC(this,{coordDimensions:[{name:h,type:qs(p),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:qs(g),dimsDef:x.slice()}],dimensionsCount:x.length+1})},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}};h(YI.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}}),Ok,!0);var Ek=["itemStyle"],Rk=["emphasis","itemStyle"],zk=(Ar.extend({type:"boxplot",render:function(t,e,i){var n=t.getData(),o=this.group,a=this._data;this._data||o.removeAll();var r="horizontal"===t.get("layout")?1:0;n.diff(a).add(function(t){if(n.hasValue(t)){var e=ig(n.getItemLayout(t),n,t,r,!0);n.setItemGraphicEl(t,e),o.add(e)}}).update(function(t,e){var i=a.getItemGraphicEl(e);if(n.hasValue(t)){var s=n.getItemLayout(t);i?ng(s,i,n,t):i=ig(s,n,t,r),o.add(i),n.setItemGraphicEl(t,i)}else o.remove(i)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&o.remove(e)}).execute(),this._data=n},remove:function(t){var e=this.group,i=this._data;this._data=null,i&&i.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:B}),Pn.extend({type:"boxplotBoxPath",shape:{},buildPath:function(t,e){var i=e.points,n=0;for(t.moveTo(i[n][0],i[n][1]),n++;n<4;n++)t.lineTo(i[n][0],i[n][1]);for(t.closePath();n0?jk:Yk)}function n(t,e){return e.get(t>0?Uk:Xk)}var o=t.getData(),a=t.pipelineContext.large;if(o.setVisual({legendSymbol:"roundRect",colorP:i(1,t),colorN:i(-1,t),borderColorP:n(1,t),borderColorN:n(-1,t)}),!e.isSeriesFiltered(t))return!a&&{progress:function(t,e){for(var o;null!=(o=t.next());){var a=e.getItemModel(o),r=e.getItemLayout(o).sign;e.setItemVisual(o,{color:i(r,a),borderColor:n(r,a)})}}}}},Kk="undefined"!=typeof Float32Array?Float32Array:Array,$k={seriesType:"candlestick",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.getData(),n=pg(t,i),o=0,a=1,r=["x","y"],s=i.mapDimension(r[o]),l=i.mapDimension(r[a],!0),u=l[0],h=l[1],c=l[2],d=l[3];if(i.setLayout({candleWidth:n,isSimpleBox:n<=1.3}),!(null==s||l.length<4))return{progress:t.pipelineContext.large?function(t,i){for(var n,r,l=new Kk(5*t.count),f=0,p=[],g=[];null!=(r=t.next());){var m=i.get(s,r),v=i.get(u,r),y=i.get(h,r),x=i.get(c,r),_=i.get(d,r);isNaN(m)||isNaN(x)||isNaN(_)?(l[f++]=NaN,f+=4):(l[f++]=fg(i,r,v,y,h),p[o]=m,p[a]=x,n=e.dataToPoint(p,null,g),l[f++]=n?n[0]:NaN,l[f++]=n?n[1]:NaN,p[a]=_,n=e.dataToPoint(p,null,g),l[f++]=n?n[1]:NaN)}i.setLayout("largePoints",l)}:function(t,i){function r(t,i){var n=[];return n[o]=i,n[a]=t,isNaN(i)||isNaN(t)?[NaN,NaN]:e.dataToPoint(n)}function l(t,e,i){var a=e.slice(),r=e.slice();a[o]=Jn(a[o]+n/2,1,!1),r[o]=Jn(r[o]-n/2,1,!0),i?t.push(a,r):t.push(r,a)}function f(t){return t[o]=Jn(t[o],1),t}for(var p;null!=(p=t.next());){var g=i.get(s,p),m=i.get(u,p),v=i.get(h,p),y=i.get(c,p),x=i.get(d,p),_=Math.min(m,v),w=Math.max(m,v),b=r(_,g),S=r(w,g),M=r(y,g),I=r(x,g),T=[];l(T,S,0),l(T,b,1),T.push(f(I),f(S),f(M),f(b)),i.setItemLayout(p,{sign:fg(i,p,m,v,h),initBaseline:m>v?S[a]:b[a],ends:T,brushRect:function(t,e,i){var s=r(t,i),l=r(e,i);return s[o]-=n/2,l[o]-=n/2,{x:s[0],y:s[1],width:a?n:l[0]-s[0],height:a?l[1]-s[1]:n}}(y,x,g)})}}}}};Ns(function(t){t&&y(t.series)&&d(t.series,function(t){w(t)&&"k"===t.type&&(t.type="candlestick")})}),Bs(qk),zs($k),YI.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}});var Jk=vg.prototype;Jk.stopEffectAnimation=function(){this.childAt(1).removeAll()},Jk.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),o=0;o<3;o++){var a=Jl(e,-1,-1,2,2,i);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var r=-o/3*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(r).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(r).start(),n.add(a)}mg(n,t)},Jk.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],o=0;o "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}}),iP=xg.prototype;iP.createLine=function(t,e,i){return new rf(t,e,i)},iP._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),o=i.get("symbol");y(n)||(n=[n,n]);var a=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==o&&(this.remove(r),(r=Jl(o,-.5,-.5,1,1,a)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",a),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(a),r.attr("scale",n),this._symbolType=o,this._updateEffectAnimation(t,i,e))},iP._updateEffectAnimation=function(t,e,i){var n=this.childAt(1);if(n){var o=this,a=t.getItemLayout(i),r=1e3*e.get("period"),s=e.get("loop"),l=e.get("constantSpeed"),u=T(e.get("delay"),function(e){return e/t.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,a),l>0&&(r=this.getLineLength(n)/l*1e3),r!==this._period||s!==this._loop){n.stopAnimation();var c=u;h&&(c=u(i)),n.__t>0&&(c=-r*n.__t),n.__t=0;var d=n.animate("",s).when(r,{__t:1}).delay(c).during(function(){o.updateSymbolPosition(n)});s||d.done(function(){o.remove(n)}),d.start()}this._period=r,this._loop=s}},iP.getLineLength=function(t){return uw(t.__p1,t.__cp1)+uw(t.__cp1,t.__p2)},iP.updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},iP.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},iP.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=sn,s=ln;a[0]=r(e[0],n[0],i[0],o),a[1]=r(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),u=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(u,l)-Math.PI/2,t.ignore=!1},iP.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},u(xg,tb);var nP=_g.prototype;nP._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new gM({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},nP.updateData=function(t,e,i){var n=t.hostModel;Io(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},nP._updateCommonStl=function(t,e,i){var n=this.childAt(0),o=t.getItemModel(e),a=t.getItemVisual(e,"color"),s=i&&i.lineStyle,l=i&&i.hoverLineStyle;i&&!t.hasItemOption||(s=o.getModel("lineStyle").getLineStyle(),l=o.getModel("emphasis.lineStyle").getLineStyle()),n.useStyle(r({strokeNoScale:!0,fill:"none",stroke:a},s)),n.hoverStyle=l,fo(this)},nP.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},u(_g,tb);var oP=wg.prototype;oP.createLine=function(t,e,i){return new _g(t,e,i)},oP.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o=0&&!(n[r]<=e);r--);r=Math.min(r,o-2)}else{for(var r=a;re);r++);r=Math.min(r-1,o-2)}J(t.position,i[r],i[r+1],(e-n[r])/(n[r+1]-n[r]));var s=i[r+1][0]-i[r][0],l=i[r+1][1]-i[r][1];t.rotation=-Math.atan2(l,s)-Math.PI/2,this._lastFrame=r,this._lastFramePercent=e,t.ignore=!1}},u(wg,xg);var aP=Un({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(r=0;r0){t.moveTo(i[r++],i[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*n,d=(l+h)/2-(u-s)*n;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var i=this.shape,n=i.segs,o=i.curveness;if(i.polyline)for(var a=0,r=0;r0)for(var l=n[r++],u=n[r++],h=1;h0){if(_n(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(yn(l,u,c,d))return a;a++}return-1}}),rP=bg.prototype;rP.isPersistent=function(){return!this._incremental},rP.updateData=function(t){this.group.removeAll();var e=new aP({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},rP.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},rP.incrementalUpdate=function(t,e){var i=new aP;i.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(i,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(i,!0):(i.rectHover=!0,i.cursor="default",i.__startIndex=t.start,this.group.add(i))},rP.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},rP._setCommon=function(t,e,i){var n=e.hostModel;t.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),t.useStyle(n.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var o=e.getVisual("color");o&&t.setStyle("stroke",o),t.setStyle("fill"),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>0&&(t.dataIndex=i+t.__startIndex)}))},rP._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var sP={seriesType:"lines",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.get("polyline"),n=t.pipelineContext.large;return{progress:function(o,a){var r=[];if(n){var s,l=o.end-o.start;if(i){for(var u=0,h=o.start;h0){var I=a(v)?s:l;v>0&&(v=v*S+b),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(y,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=iw()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},Zs({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var o=t.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(t,i,0,t.getData().count()):Ag(o)&&this._renderOnGeo(o,t,n,i)},incrementalPrepareRender:function(t,e,i){this.group.removeAll()},incrementalRender:function(t,e,i,n){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,n,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,e,i,n,o){var r,s,l=t.coordinateSystem;if("cartesian2d"===l.type){var u=l.getAxis("x"),h=l.getAxis("y");r=u.getBandWidth(),s=h.getBandWidth()}for(var c=this.group,d=t.getData(),f=t.getModel("itemStyle").getItemStyle(["color"]),p=t.getModel("emphasis.itemStyle").getItemStyle(),g=t.getModel("label"),m=t.getModel("emphasis.label"),v=l.type,y="cartesian2d"===v?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],x=i;x=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},Fa.register("single",{create:function(t,e){var i=[];return t.eachComponent("singleAxis",function(n,o){var a=new $g(n,t,e);a.name="single_"+o,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i},dimensions:$g.prototype.dimensions});var gP=["axisLine","axisTickLabel","axisName"],mP=XD.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=Jg(t),r=new FD(t,a);d(gP,r.add,r),o.add(r.getGroup()),t.get("splitLine.show")&&this._splitLine(t),mP.superCall(this,"render",t,e,i,n)},_splitLine:function(t){var e=t.axis;if(!e.scale.isBlank()){var i=t.getModel("splitLine"),n=i.getModel("lineStyle"),o=n.get("width"),a=n.get("color");a=a instanceof Array?a:[a];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;f=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){gm(e.getZr(),"axisPointer"),IP.superApply(this._model,"remove",arguments)},dispose:function(t,e){gm("axisPointer",e),IP.superApply(this._model,"dispose",arguments)}}),TP=Bi(),AP=i,DP=m;(mm.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var o=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==o||this._lastStatus!==a){this._lastValue=o,this._lastStatus=a;var r=this._group,s=this._handle;if(!a||"hide"===a)return r&&r.hide(),void(s&&s.hide());r&&r.show(),s&&s.show();var l={};this.makeElOption(l,o,t,e,i);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(r){var c=v(vm,e,h);this.updatePointerEl(r,l,c,e),this.updateLabelEl(r,l,c,e)}else r=this._group=new tb,this.createPointerEl(r,l,t,e),this.createLabelEl(r,l,t,e),i.getZr().add(r);wm(r,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,o="category"===n.type,a=e.get("snap");if(!a&&!o)return!1;if("auto"===i||null==i){var r=this.animationThreshold;if(o&&n.getBandWidth()>r)return!0;if(a){var s=Mh(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1}return!0===i},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=TP(t).pointerEl=new zM[o.type](AP(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=TP(t).labelEl=new yM(AP(e.label));t.add(o),xm(o,n)}},updatePointerEl:function(t,e,i){var n=TP(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=TP(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),xm(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,o=e.getModel("handle"),a=e.get("status");if(!o.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var r;this._handle||(r=!0,n=this._handle=Po(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){mw(t.event)},onmousedown:DP(this._onHandleDragMove,this,0,0),drift:DP(this._onHandleDragMove,this),ondragend:DP(this._onHandleDragEnd,this)}),i.add(n)),wm(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(o.getItemStyle(null,s));var l=o.get("size");y(l)||(l=[l,l]),n.attr("scale",[l[0]/2,l[1]/2]),Nr(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)}},_moveHandleToValue:function(t,e){vm(this._axisPointerModel,!e&&this._moveAnimation,this._handle,_m(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(_m(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(_m(n)),TP(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=mm,ji(mm);var CP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.grid,s=n.get("type"),l=km(r,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var h=bm(n),c=LP[s](a,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Lh(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=Lh(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.grid,r=o.getGlobalExtent(!0),s=km(a,o).getOtherAxis(o).getGlobalExtent(),l="x"===o.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];var d=[{verticalAlign:"middle"},{align:"center"}];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:d[l]}}}),LP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Pm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=Math.max(1,t.getBandWidth()),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Pm(t))}}};XD.registerAxisPointerClass("CartesianAxisPointer",CP),Ns(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Os(VT.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=vh(t,e)}),Es({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,o=[t.x,t.y],a=t,r=t.dispatchAction||m(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){lm(o)&&(o=xP({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var l=lm(o),u=a.axesInfo,h=s.axesInfo,c="leave"===n||lm(o),d={},f={},p={list:[],map:{}},g={showPointer:wP(em,f),showTooltip:wP(im,p)};_P(s.coordSysMap,function(t,e){var i=l||t.containPoint(o);_P(s.coordSysAxesInfo[e],function(t,e){var n=t.axis,a=rm(u,t);if(!c&&i&&(!u||a)){var r=a&&a.value;null!=r||l||(r=n.pointToData(o)),null!=r&&Qg(t,r,g,!1,d)}})});var v={};return _P(h,function(t,e){var i=t.linkGroup;i&&!f[e]&&_P(i.axesInfo,function(e,n){var o=f[n];if(e!==t&&o){var a=o.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,sm(e),sm(t)))),v[t.key]=a}})}),_P(v,function(t,e){Qg(h[e],t,g,!0,d)}),nm(f,h,d),om(p,o,t,r),am(h,0,i),d}});var kP=["x","y"],PP=["width","height"],NP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.coordinateSystem,s=Om(r,1-Nm(a)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=bm(n),c=OP[u](a,l,s,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Jg(i),i,n,o)},getHandleTransform:function(t,e,i){var n=Jg(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.coordinateSystem,r=Nm(o),s=Om(a,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=Om(a,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),OP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Nm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=t.getBandWidth(),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Nm(t))}}};XD.registerAxisPointerClass("SingleAxisPointer",NP),Ws({type:"single"});var EP=YI.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){EP.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){var e=t.length,i=[];Zi(t,function(t){return t[2]}).buckets.each(function(t,e){i.push({name:e,dataList:t})});for(var n=i.length,o=-1,a=-1,r=0;ro&&(o=s,a=r)}for(var l=0;lMath.PI/2?"right":"left"):x&&"center"!==x?"left"===x?(f=u.r0+y,p>Math.PI/2&&(x="right")):"right"===x&&(f=u.r-y,p>Math.PI/2&&(x="left")):(f=(u.r+u.r0)/2,x="center"),d.attr("style",{text:l,textAlign:x,textVerticalAlign:n("verticalAlign")||"middle",opacity:n("opacity")});var _=f*g+u.cx,w=f*m+u.cy;d.attr("position",[_,w]);var b=n("rotate"),S=0;"radial"===b?(S=-p)<-Math.PI/2&&(S+=Math.PI):"tangential"===b?(S=Math.PI/2-p)>Math.PI/2?S-=Math.PI:S<-Math.PI/2&&(S+=Math.PI):"number"==typeof b&&(S=b*Math.PI/180),d.attr("rotation",S)},VP._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");var o=this,a=function(){o.onEmphasis(n)},r=function(){o.onNormal()};i.isAnimationEnabled()&&t.on("mouseover",a).on("mouseout",r).on("emphasis",a).on("normal",r).on("downplay",function(){o.onDownplay()}).on("highlight",function(){o.onHighlight()})},u(Vm,tb);Ar.extend({type:"sunburst",init:function(){},render:function(t,e,i,n){function o(i,n){if(c||!i||i.getValue()||(i=null),i!==l&&n!==l)if(n&&n.piece)i?(n.piece.updateData(!1,i,"normal",t,e),s.setItemGraphicEl(i.dataIndex,n.piece)):a(n);else if(i){var o=new Vm(i,t,e);h.add(o),s.setItemGraphicEl(i.dataIndex,o)}}function a(t){t&&t.piece&&(h.remove(t.piece),t.piece=null)}var r=this;this.seriesModel=t,this.api=i,this.ecModel=e;var s=t.getData(),l=s.tree.root,u=t.getViewRoot(),h=this.group,c=t.get("renderLabelForZeroData"),d=[];u.eachNode(function(t){d.push(t)});var f=this._oldChildren||[];if(function(t,e){function i(t){return t.getId()}function n(i,n){o(null==i?null:t[i],null==n?null:e[n])}0===t.length&&0===e.length||new Xs(e,t,i,i).add(n).update(n).remove(v(n,null)).execute()}(d,f),function(i,n){if(n.depth>0){r.virtualPiece?r.virtualPiece.updateData(!1,i,"normal",t,e):(r.virtualPiece=new Vm(i,t,e),h.add(r.virtualPiece)),n.piece._onclickEvent&&n.piece.off("click",n.piece._onclickEvent);var o=function(t){r._rootToNode(n.parentNode)};n.piece._onclickEvent=o,r.virtualPiece.on("click",o)}else r.virtualPiece&&(h.remove(r.virtualPiece),r.virtualPiece=null)}(l,u),n&&n.highlight&&n.highlight.piece){var p=t.getShallow("highlightPolicy");n.highlight.piece.onEmphasis(p)}else if(n&&n.unhighlight){var g=this.virtualPiece;!g&&l.children.length&&(g=l.children[0].piece),g&&g.onNormal()}this._initEvents(),this._oldChildren=d},dispose:function(){},_initEvents:function(){var t=this,e=function(e){var i=!1;t.seriesModel.getViewRoot().eachNode(function(n){if(!i&&n.piece&&n.piece.childAt(0)===e.target){var o=n.getModel().get("nodeClick");if("rootToNode"===o)t._rootToNode(n);else if("link"===o){var a=n.getModel(),r=a.get("link");if(r){var s=a.get("target",!0)||"_blank";window.open(r,s)}}i=!0}})};this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",e),this.group._onclickEvent=e},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:"sunburstRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var GP="sunburstRootToNode";Es({type:GP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[GP],e);if(n){var o=e.getViewRoot();o&&(t.direction=hd(o,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}})});var FP="sunburstHighlight";Es({type:FP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[FP],e);n&&(t.highlight=n.node)})});Es({type:"sunburstUnhighlight",update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){t.unhighlight=!0})});var WP=Math.PI/180;Bs(v(uC,"sunburst")),zs(v(function(t,e,i,n){e.eachSeriesByType(t,function(t){var e=t.get("center"),n=t.get("radius");y(n)||(n=[0,n]),y(e)||(e=[e,e]);var o=i.getWidth(),a=i.getHeight(),r=Math.min(o,a),s=Vo(e[0],o),l=Vo(e[1],a),u=Vo(n[0],r/2),h=Vo(n[1],r/2),c=-t.get("startAngle")*WP,f=t.get("minAngle")*WP,p=t.getData().tree.root,g=t.getViewRoot(),m=g.depth,v=t.get("sort");null!=v&&Zm(g,v);var x=0;d(g.children,function(t){!isNaN(t.getValue())&&x++});var _=g.getValue(),w=Math.PI/(_||x)*2,b=g.depth>0,S=g.height-(b?-1:1),M=(h-u)/(S||1),I=t.get("clockwise"),T=t.get("stillShowZeroSum"),A=I?1:-1,D=function(t,e){if(t){var i=e;if(t!==p){var n=t.getValue(),o=0===_&&T?w:n*w;on[1]&&n.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:n[1],r0:n[0]},api:{coord:m(function(n){var o=e.dataToRadius(n[0]),a=i.dataToAngle(n[1]),r=t.coordToPoint([o,a]);return r.push(o,a*Math.PI/180),r}),size:m(qm,t)}}},calendar:function(t){var e=t.getRect(),i=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:i.start,end:i.end,weeks:i.weeks,dayCount:i.allDay}},api:{coord:function(e,i){return t.dataToPoint(e,i)}}}}};YI.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0},getInitialData:function(t,e){return ml(this.getSource(),this)},getDataParams:function(t,e,i){var n=YI.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Ar.extend({type:"custom",_data:null,render:function(t,e,i,n){var o=this._data,a=t.getData(),r=this.group,s=Qm(t,a,e,i);a.diff(o).add(function(e){ev(null,e,s(e,n),t,r,a)}).update(function(e,i){ev(o.getItemGraphicEl(i),e,s(e,n),t,r,a)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute(),this._data=a},incrementalPrepareRender:function(t,e,i){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,o){for(var a=e.getData(),r=Qm(e,a,i,n),s=t.start;s=0;l--)null==o[l]?o.splice(l,1):delete o[l].$action},_flatten:function(t,e,i){d(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});Ws({type:"graphic",init:function(t,e){this._elMap=R(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,i)},_updateElements:function(t){var e=t.useElOptionsToUpdate();if(e){var i=this._elMap,n=this.group;d(e,function(e){var o=e.$action,a=e.id,r=i.get(a),s=e.parentId,l=null!=s?i.get(s):n,u=e.style;"text"===e.type&&u&&(e.hv&&e.hv[1]&&(u.textVerticalAlign=u.textBaseline=null),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke));var h=fv(e);o&&"merge"!==o?"replace"===o?(dv(r,i),cv(a,l,h,i)):"remove"===o&&dv(r,i):r?r.attr(h):cv(a,l,h,i);var c=i.get(a);c&&(c.__ecGraphicWidth=e.width,c.__ecGraphicHeight=e.height,yv(c,t))})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=i.length-1;a>=0;a--){var r=i[a],s=o.get(r.id);if(s){var l=s.parent;da(s,r,l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0},null,{hv:r.hv,boundingMode:r.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){dv(e,t)}),this._elMap=R()},dispose:function(){this._clear()}});var KP=Fs({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){KP.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});Es("legendToggleSelect","legendselectchanged",v(xv,"toggleSelected")),Es("legendSelect","legendselected",v(xv,"select")),Es("legendUnSelect","legendunselected",v(xv,"unSelect"));var $P=v,JP=d,QP=tb,tN=Ws({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new QP),this._backgroundEl,this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},render:function(t,e,i){var n=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var o=t.get("align");o&&"auto"!==o||(o="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left"),this.renderInner(o,t,e,i);var a=t.getBoxLayoutParams(),s={width:i.getWidth(),height:i.getHeight()},l=t.get("padding"),u=ca(a,s,l),h=this.layoutInner(t,o,u,n),c=ca(r({width:h.width,height:h.height},a),s,l);this.group.attr("position",[c.x-h.x,c.y-h.y]),this.group.add(this._backgroundEl=wv(h,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl)},renderInner:function(t,e,i,n){var o=this.getContentGroup(),a=R(),r=e.get("selectedMode"),s=[];i.eachRawSeries(function(t){!t.get("legendHoverLink")&&s.push(t.id)}),JP(e.getData(),function(l,u){var h=l.get("name");if(this.newlineDisabled||""!==h&&"\n"!==h){var c=i.getSeriesByName(h)[0];if(!a.get(h))if(c){var d=c.getData(),f=d.getVisual("color");"function"==typeof f&&(f=f(c.getDataParams(0)));var p=d.getVisual("legendSymbol")||"roundRect",g=d.getVisual("symbol");this._createItem(h,u,l,e,p,g,t,f,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,c.name,null,n,s)).on("mouseout",$P(Mv,c.name,null,n,s)),a.set(h,!0)}else i.eachRawSeries(function(i){if(!a.get(h)&&i.legendDataProvider){var o=i.legendDataProvider(),c=o.indexOfName(h);if(c<0)return;var d=o.getItemVisual(c,"color");this._createItem(h,u,l,e,"roundRect",null,t,d,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,null,h,n,s)).on("mouseout",$P(Mv,null,h,n,s)),a.set(h,!0)}},this)}else o.add(new QP({newline:!0}))},this)},_createItem:function(t,e,i,n,o,r,s,l,u){var h=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("symbolKeepAspect"),p=n.isSelected(t),g=new QP,m=i.getModel("textStyle"),v=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(o=v||o,g.add(Jl(o,0,0,h,c,p?l:d,null==f||f)),!v&&r&&(r!==o||"none"===r)){var _=.8*c;"none"===r&&(r="circle"),g.add(Jl(r,(h-_)/2,(c-_)/2,_,_,p?l:d,null==f||f))}var w="left"===s?h+5:-5,b=s,S=n.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t)),g.add(new rM({style:mo({},m,{text:M,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new yM({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(I),g.eachChild(function(t){t.silent=!0}),I.silent=!u,this.getContentGroup().add(g),fo(g),g.__legendDataIndex=e,g},layoutInner:function(t,e,i){var n=this.getContentGroup();aI(t.get("orient"),n,t.get("itemGap"),i.width,i.height);var o=n.getBoundingRect();return n.attr("position",[-o.x,-o.y]),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});Os(function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;ii[l],p=[-c.x,-c.y];n||(p[s]=o.position[s]);var g=[0,0],m=[-d.x,-d.y],v=A(t.get("pageButtonGap",!0),t.get("itemGap",!0));f&&("end"===t.get("pageButtonPosition",!0)?m[s]+=i[l]-d[l]:g[s]+=d[l]+v),m[1-s]+=c[u]/2-d[u]/2,o.attr("position",p),a.attr("position",g),r.attr("position",m);var y=this.group.getBoundingRect();if((y={x:0,y:0})[l]=f?i[l]:c[l],y[u]=Math.max(c[u],d[u]),y[h]=Math.min(0,d[h]+m[1-s]),a.__rectSize=i[l],f){var x={x:0,y:0};x[l]=Math.max(i[l]-d[l]-v,0),x[u]=y[u],a.setClipPath(new yM({shape:x})),a.__rectSize=x[l]}else r.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&Io(o,{position:_.contentPosition},!!f&&t),this._updatePageInfoView(t,_),y},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(t,e){var i=this._controllerGroup;d(["pagePrev","pageNext"],function(n){var o=null!=e[n+"DataIndex"],a=i.childOfName(n);a&&(a.setStyle("fill",o?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=o?"pointer":"default")});var n=i.childOfName("pageText"),o=t.get("pageFormatter"),a=e.pageIndex,r=null!=a?a+1:0,s=e.pageCount;n&&o&&n.setStyle("text",_(o)?o.replace("{current}",r).replace("{total}",s):o({current:r,total:s}))},_getPageInfo:function(t){function e(t){if(t){var e=t.getBoundingRect(),i=e[l]+t.position[r];return{s:i,e:i+e[s],i:t.__legendDataIndex}}}function i(t,e){return t.e>=e&&t.s<=e+a}var n=t.get("scrollDataIndex",!0),o=this.getContentGroup(),a=this._containerGroup.__rectSize,r=t.getOrient().index,s=nN[r],l=oN[r],u=this._findTargetItemIndex(n),h=o.children(),c=h[u],d=h.length,f=d?1:0,p={contentPosition:o.position.slice(),pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return p;var g=e(c);p.contentPosition[r]=-g.s;for(var m=u+1,v=g,y=g,x=null;m<=d;++m)(!(x=e(h[m]))&&y.e>v.s+a||x&&!i(x,v.s))&&(v=y.i>v.i?y:x)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=v.i),++p.pageCount),y=x;for(var m=u-1,v=g,y=g,x=null;m>=-1;--m)(x=e(h[m]))&&i(y,x.s)||!(v.i=0;){var r=o.indexOf("|}"),s=o.substr(a+"{marker".length,r-a-"{marker".length);s.indexOf("sub")>-1?n["marker"+s]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[s],textOffset:[3,0]}:n["marker"+s]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[s]},a=(o=o.substr(r+1)).indexOf("{marker")}this.el=new rM({style:{rich:n,text:t,textLineHeight:20,textBackgroundColor:i.get("backgroundColor"),textBorderRadius:i.get("borderRadius"),textFill:i.get("textStyle.color"),textPadding:i.get("padding")},z:i.get("z")}),this._zr.add(this.el);var l=this;this.el.on("mouseover",function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0}),this.el.on("mouseout",function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){this.el&&this.el.attr("position",[t,e])},hide:function(){this.el?this.el.hide():true,this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(m(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var uN=m,hN=d,cN=Vo,dN=new yM({shape:{x:-1,y:-1,width:2,height:2}});Ws({type:"tooltip",init:function(t,e){if(!U_.node){var i=t.getComponent("tooltip").get("renderMode");this._renderMode=Hi(i);var n;"html"===this._renderMode?(n=new Cv(e.getDom(),e),this._newLine="
"):(n=new Lv(e),this._newLine="\n"),this._tooltipContent=n}},render:function(t,e,i){if(!U_.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");um("itemTooltip",this._api,uN(function(e,i,n){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(i,n):"leave"===e&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!U_.node){var o=Pv(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=dN;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},o)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},o);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=xP(n,e),l=s.point[0],u=s.point[1];null!=l&&null!=u&&this._tryShow({offsetX:l,offsetY:u,position:n.position,target:s.el,event:{}},o)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},o))}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(Pv(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var o=n.seriesIndex,a=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=o&&null!=a&&null!=r){var s=e.getSeriesByIndex(o);if(s&&"axis"===(t=kv([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:a,position:n.position}),!0}},_tryShow:function(t,e){var i=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var n=t.dataByCoordSys;n&&n.length?this._showAxisTooltip(n,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=m(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=kv([e.tooltipOption,o]),u=this._renderMode,h=this._newLine,c={};hN(t,function(t){hN(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),o=t.value,a=[];if(e&&null!=o){var l=Im(o,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);d(t.seriesDataIndices,function(r){var h=i.getSeriesByIndex(r.seriesIndex),d=r.dataIndexInside,f=h&&h.getDataParams(d);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=Xl(e.axis,o),f.axisValueLabel=l,f){s.push(f);var p,g=h.formatTooltip(d,!0,null,u);if(w(g)){p=g.html;var m=g.markers;n(c,m)}else p=g;a.push(p)}});var f=l;"html"!==u?r.push(a.join(h)):r.push((f?ia(f)+h:"")+a.join(h))}})},this),r.reverse(),r=r.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,f,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],f,void 0,c)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,o=e.seriesIndex,a=n.getSeriesByIndex(o),r=e.dataModel||a,s=e.dataIndex,l=e.dataType,u=r.getData(),h=kv([u.getItemModel(s),r,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),c=h.get("trigger");if(null==c||"item"===c){var d,f,p=r.getDataParams(s,l),g=r.formatTooltip(s,!1,l,this._renderMode);w(g)?(d=g.html,f=g.markers):(d=g,f=null);var m="item_"+r.name+"_"+s;this._showOrMove(h,function(){this._showTooltipContent(h,d,p,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:s,dataIndex:u.getRawIndex(s),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new No(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");r=r||t.get("position");var c=e;if(h&&"string"==typeof h)c=na(h,i,!0);else if("function"==typeof h){var d=uN(function(e,n){e===this._ticket&&(u.setContent(n,l,t),this._updatePosition(t,r,o,a,u,i,s))},this);this._ticket=n,c=h(i,n,d)}u.setContent(c,l,t),u.show(t),this._updatePosition(t,r,o,a,u,i,s)}},_updatePosition:function(t,e,i,n,o,a,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=o.getSize(),h=t.get("align"),c=t.get("verticalAlign"),d=r&&r.getBoundingRect().clone();if(r&&d.applyTransform(r.transform),"function"==typeof e&&(e=e([i,n],a,o.el,d,{viewSize:[s,l],contentSize:u.slice()})),y(e))i=cN(e[0],s),n=cN(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=ca(e,{width:s,height:l});i=f.x,n=f.y,h=null,c=null}else"string"==typeof e&&r?(i=(p=Ev(e,d,u))[0],n=p[1]):(i=(p=Nv(i,n,o,s,l,h?null:20,c?null:20))[0],n=p[1]);if(h&&(i-=Rv(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=Rv(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")){var p=Ov(i,n,o,s,l);i=p[0],n=p[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&hN(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&hN(o,function(t,e){var n=a[e]||{},o=t.seriesDataIndices||[],r=n.seriesDataIndices||[];(i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===r.length)&&hN(o,function(t,e){var n=r[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){U_.node||(this._tooltipContent.hide(),gm("itemTooltip",e))}}),Es({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Es({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){}),Gv.prototype={constructor:Gv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:aD.prototype.dataToCoord,radiusToData:aD.prototype.coordToData},u(Gv,aD);var fN=Bi();Fv.prototype={constructor:Fv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:aD.prototype.dataToCoord,angleToData:aD.prototype.coordToData,calculateCategoryInterval:function(){var t=this,e=t.getLabelModel(),i=t.scale,n=i.getExtent(),o=i.count();if(n[1]-n[0]<1)return 0;var a=n[0],r=t.dataToCoord(a+1)-t.dataToCoord(a),s=Math.abs(r),l=ke(a,e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=fN(t.model),d=c.lastAutoInterval,f=c.lastTickCount;return null!=d&&null!=f&&Math.abs(d-h)<=1&&Math.abs(f-o)<=1&&d>h?h=d:(c.lastTickCount=o,c.lastAutoInterval=h),h}},u(Fv,aD);var pN=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new Gv,this._angleAxis=new Fv,this._radiusAxis.polar=this._angleAxis.polar=this};pN.prototype={type:"polar",axisPointerEnabled:!0,constructor:pN,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=lr;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI;return[Math.cos(i)*e+this.cx,-Math.sin(i)*e+this.cy]}};var gN=lI.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n(gN.prototype,UA);var mN={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};ED("angle",gN,Wv,mN.angle),ED("radius",gN,Wv,mN.radius),Fs({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e;return this.ecModel.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}});var vN={dimensions:pN.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new pN(n);o.update=Zv;var a=o.getRadiusAxis(),r=o.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");Uv(a,s),Uv(r,l),Hv(o,t,e),i.push(o),t.coordinateSystem=o,o.model=t}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};Fa.register("polar",vN);var yN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];XD.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,o=n.polar,a=o.getRadiusAxis().getExtent(),r=n.getTicksCoords(),s=f(n.getViewLabels(),function(t){return(t=i(t)).coord=n.dataToCoord(t.tickValue),t});Yv(s),Yv(r),d(yN,function(e){!t.get(e+".show")||n.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,o,r,a,s)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),a=new sM({shape:{cx:e.cx,cy:e.cy,r:n[jv(e)]},style:o.getLineStyle(),z2:1,silent:!0});a.style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n){var o=t.getModel("axisTick"),a=(o.get("inside")?-1:1)*o.get("length"),s=n[jv(e)],l=f(i,function(t){return new _M({shape:Xv(e,[s,s+a],t.coord)})});this.group.add(OM(l,{style:r(o.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n,o){var a=t.getCategories(!0),r=t.getModel("axisLabel"),s=r.get("margin");d(o,function(i,o){var l=r,u=i.tickValue,h=n[jv(e)],c=e.coordToPoint([h+s,i.coord]),d=e.cx,f=e.cy,p=Math.abs(c[0]-d)/h<.3?"center":c[0]>d?"left":"right",g=Math.abs(c[1]-f)/h<.3?"middle":c[1]>f?"top":"bottom";a&&a[u]&&a[u].textStyle&&(l=new No(a[u].textStyle,r,r.ecModel));var m=new rM({silent:!0});this.group.add(m),mo(m.style,l,{x:c[0],y:c[1],textFill:l.getTextColor()||t.get("axisLine.lineStyle.color"),text:i.formattedLabel,textAlign:p,textVerticalAlign:g})},this)},_splitLine:function(t,e,i,n){var o=t.getModel("splitLine").getModel("lineStyle"),a=o.get("color"),s=0;a=a instanceof Array?a:[a];for(var l=[],u=0;u=0?"p":"n",M=y;v&&(n[r][b]||(n[r][b]={p:y,n:y}),M=n[r][b][S]);var I,T,A,D;if("radius"===h.dim){var C=h.dataToRadius(w)-y,L=a.dataToAngle(b);Math.abs(C)=0},kN.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=dy(e,t),o=0;o=0||AN(n,t.getAxis("y").model)>=0)&&a.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:a[0],coordSyses:a,getPanelRect:ON.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){TN(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:ON.geo})})}},NN=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],ON={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ao(t)),e}},EN={lineX:DN(fy,0),lineY:DN(fy,1),rect:function(t,e,i){var n=e[CN[t]]([i[0][0],i[1][0]]),o=e[CN[t]]([i[0][1],i[1][1]]),a=[cy([n[0],o[0]]),cy([n[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,i){var n=[[1/0,-1/0],[1/0,-1/0]];return{values:f(i,function(i){var o=e[CN[t]](i);return n[0][0]=Math.min(n[0][0],o[0]),n[1][0]=Math.min(n[1][0],o[1]),n[0][1]=Math.max(n[0][1],o[0]),n[1][1]=Math.max(n[1][1],o[1]),o}),xyMinMax:n}}},RN={lineX:DN(py,0),lineY:DN(py,1),rect:function(t,e,i){return[[t[0][0]-i[0]*e[0][0],t[0][1]-i[0]*e[0][1]],[t[1][0]-i[1]*e[1][0],t[1][1]-i[1]*e[1][1]]]},polygon:function(t,e,i){return f(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}},zN=["inBrush","outOfBrush"],BN="__ecBrushSelect",VN="__ecInBrushSelectEvent",GN=VT.VISUAL.BRUSH;zs(GN,function(t,e,i){t.eachComponent({mainType:"brush"},function(e){i&&"takeGlobalCursor"===i.type&&e.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1}),(e.brushTargetManager=new hy(e.option,t)).setInputRanges(e.areas,t)})}),Bs(GN,function(t,e,n){var o,a,s=[];t.eachComponent({mainType:"brush"},function(e,n){function l(t){return"all"===m||v[t]}function u(t){return!!t.length}function h(t,e){var i=t.coordinateSystem;w|=i.hasAxisBrushed(),l(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(x[e]=1)})}function c(i,n,o){var a=_y(i);if(a&&!wy(e,n)&&(d(b,function(n){a[n.brushType]&&e.brushTargetManager.controlSeries(n,i,t)&&o.push(n),w|=u(o)}),l(n)&&u(o))){var r=i.getData();r.each(function(t){xy(a,o,r,t)&&(x[t]=1)})}}var p={brushId:e.id,brushIndex:n,brushName:e.name,areas:i(e.areas),selected:[]};s.push(p);var g=e.option,m=g.brushLink,v=[],x=[],_=[],w=0;n||(o=g.throttleType,a=g.throttleDelay);var b=f(e.areas,function(t){return by(r({boundingRect:FN[t.brushType](t)},t))}),S=ty(e.option,zN,function(t){t.mappingMethod="fixed"});y(m)&&d(m,function(t){v[t]=1}),t.eachSeries(function(t,e){var i=_[e]=[];"parallel"===t.subType?h(t,e):c(t,e,i)}),t.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};p.selected.push(i);var n=_y(t),o=_[e],a=t.getData(),r=l(e)?function(t){return x[t]?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return xy(n,o,a,t)?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"};(l(e)?w:u(o))&&iy(zN,S,a,r)})}),vy(e,o,a,s,n)});var FN={lineX:B,lineY:B,rect:function(t){return Sy(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;ne[0][1]&&(e[0][1]=a[0]),a[1]e[1][1]&&(e[1][1]=a[1])}return e&&Sy(e)}},WN=["#ddd"];Fs({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&ey(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:WN},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=f(t,function(t){return My(this.option,t)},this))},setBrushOption:function(t){this.brushOption=My(this.option,t),this.brushType=this.brushOption.brushType}});Ws({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new zf(e.getZr())).on("brush",m(this._onBrush,this)).mount()},render:function(t){return this.model=t,Iy.apply(this,arguments)},updateTransform:Iy,updateView:Iy,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var n=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:n,areas:i(t),$from:n})}}),Es({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),Es({type:"brushSelect",event:"brushSelected",update:"none"},function(){});var HN={},ZN=rT.toolbox.brush;Dy.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:i(ZN.title)};var UN=Dy.prototype;UN.render=UN.updateView=function(t,e,i){var n,o,a;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,d(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?a:e===n)?"emphasis":"normal")})},UN.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return d(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},UN.onclick=function(t,e,i){var n=this._brushType,o=this._brushMode;"clear"===i?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},Ty("brush",Dy),Ns(function(t,e){var i=t&&t.brush;if(y(i)||(i=i?[i]:[]),i.length){var n=[];d(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var o=t&&t.toolbox;y(o)&&(o=o[0]),o||(o={feature:{}},t.toolbox=[o]);var a=o.feature||(o.feature={}),r=a.brush||(a.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),Jv(s),e&&!s.length&&s.push.apply(s,SN)}});Cy.prototype={constructor:Cy,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"},"value"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){var e=(t=Yo(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return o=Math.abs((o+7-this.getFirstDayOfWeek())%7),{y:e,m:i,d:n,day:o,time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)?this.getDateInfo(t):((t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t))},update:function(t,e){function i(t,e){return null!=t[e]&&"auto"!==t[e]}this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,o=["width","height"],a=this._model.get("cellSize").slice(),r=this._model.getBoxLayoutParams(),s="horizontal"===this._orient?[n,7]:[7,n];d([0,1],function(t){i(a,t)&&(r[o[t]]=a[t]*s[t])});var l={width:e.getWidth(),height:e.getHeight()},u=this._rect=ca(r,l);d([0,1],function(t){i(a,t)||(a[t]=u[o[t]]/s[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(t,e){y(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,o=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.timea.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),o=n.getDate(),a=t[1].date.getDate();if(n.setDate(o+i-1),n.getDate()!==a)for(var r=n.getTime()-t[1].time>0?1:-1;n.getDate()!==a&&(n.getTime()-t[1].time)*r>0;)i-=r,n.setDate(o+i-1);var s=Math.floor((i+t[0].day+6)/7),l=e?1-s:s-1;return e&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:i,weeks:s,nthWeek:l,fweek:t[0].day,lweek:t[1].day}},_getDateByWeeksAndDay:function(t,e,i){var n=this._getRangeInfo(i);if(t>n.weeks||0===t&&en.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=new Date(n.start.time);return a.setDate(n.start.d+o),this.getDateInfo(a)}},Cy.dimensions=Cy.prototype.dimensions,Cy.getDimensionsInfo=Cy.prototype.getDimensionsInfo,Cy.create=function(t,e){var i=[];return t.eachComponent("calendar",function(n){var o=new Cy(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])}),i},Fa.register("calendar",Cy);var XN=lI.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var o=ga(t);XN.superApply(this,"init",arguments),ky(t,o)},mergeOption:function(t,e){XN.superApply(this,"mergeOption",arguments),ky(this.option,t)}}),jN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},YN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Ws({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new yM({shape:{x:l[0],y:l[1],width:a,height:r},cursor:"default",style:o});i.add(u)}},_renderLines:function(t,e,i,n){function o(e){a._firstDayOfMonth.push(r.getDateInfo(e)),a._firstDayPoints.push(r.dataToRect([e],!1).tl);var o=a._getLinePointsOfOneWeek(t,e,i);a._tlpoints.push(o[0]),a._blpoints.push(o[o.length-1]),l&&a._drawSplitline(o,s,n)}var a=this,r=t.coordinateSystem,s=t.getModel("splitLine.lineStyle").getLineStyle(),l=t.get("splitLine.show"),u=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=e.start,c=0;h.time<=e.end.time;c++){o(h.formatedDate),0===c&&(h=r.getDateInfo(e.start.y+"-"+e.start.m));var d=h.date;d.setMonth(d.getMonth()+1),h=r.getDateInfo(d)}o(r.getNextNDay(e.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,u,i),s,n),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,u,i),s,n)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new gM({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?oa(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,o){e=e.slice();var a=["center","bottom"];"bottom"===n?(e[1]+=o,a=["center","top"]):"left"===n?e[0]-=o:"right"===n?(e[0]+=o,a=["center","top"]):e[1]-=o;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:a[0],textVerticalAlign:a[1]}}},_renderYearText:function(t,e,i,n){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),r=o.get("position");r||(r="horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=o.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new rM({z2:30});mo(m.style,o,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,a)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var o=n.get("nameMap"),r=n.get("margin"),s=n.get("position"),l=n.get("align"),u=[this._tlpoints,this._blpoints];_(o)&&(o=jN[o.toUpperCase()]||[]);var h="start"===s?0:1,c="horizontal"===e?0:1;r="start"===s?-r:r;for(var d="center"===l,f=0;f=r[0]&&t<=r[1]}if(t===this._dataZoomModel){var n=this._dimName,o=this.getTargetSeriesModels(),a=t.get("filterMode"),r=this._valueWindow;"none"!==a&&$N(o,function(t){var e=t.getData(),o=e.mapDimension(n,!0);o.length&&("weakFilter"===a?e.filterSelf(function(t){for(var i,n,a,s=0;sr[1];if(u&&!h&&!c)return!0;u&&(a=!0),h&&(i=!0),c&&(n=!0)}return a&&i&&n}):$N(o,function(n){if("empty"===a)t.setData(e.map(n,function(t){return i(t)?t:NaN}));else{var o={};o[n]=r,e.selectRange(o)}}),$N(o,function(t){e.setApproximateExtent(r,t)}))})}}};var tO=d,eO=KN,iO=Fs({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var n=By(t);this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=By(t);n(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;U_.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),Vy(this,t),tO([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,o){var a=this.dependentModels[e.axis][i],r=a.__dzAxisProxy||(a.__dzAxisProxy=new QN(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();eO(function(e){var i=e.axisIndex;t[i]=Di(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;eO(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var o="vertical"===e?"y":"x";n[o+"Axis"].length?(i[o+"AxisIndex"]=[0],t=!1):tO(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&eO(function(e){if(t){var n=[],o=this.dependentModels[e.axis];if(o.length&&!n.length)for(var a=0,r=o.length;a0?100:20}},getFirstTargetAxisModel:function(){var t;return eO(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;eO(function(n){tO(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(t,e){var i=this.option;tO([["start","startValue"],["end","endValue"]],function(e){null==t[e[0]]&&null==t[e[1]]||(i[e[0]]=t[e[0]],i[e[1]]=t[e[1]])},this),!e&&Vy(this,t)},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var i in e)if(e.hasOwnProperty(i)&&e[i].hostedBy(this))return e[i];for(var i in e)if(e.hasOwnProperty(i)&&!e[i].hostedBy(this))return e[i]},getRangePropMode:function(){return this._rangePropMode.slice()}}),nO=qI.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,a=0;a0&&e%g)p+=f;else{var i=null==t||isNaN(t)||""===t,n=i?0:aO(t,a,u,!0);i&&!l&&e?(c.push([c[c.length-1][0],0]),d.push([d[d.length-1][0],0])):!i&&l&&(c.push([p,0]),d.push([p,0])),c.push([p,n]),d.push([p,n]),p+=f,l=i}});var m=this.dataZoomModel;this._displayables.barGroup.add(new pM({shape:{points:c},style:r({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new gM({shape:{points:d},style:m.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var i,n=this.ecModel;return t.eachTargetAxis(function(o,a){d(t.getAxisProxy(o.name,a).getTargetSeriesModels(),function(t){if(!(i||!0!==e&&l(cO,t.get("type"))<0)){var r,s=n.getComponent(o.axis,a).axis,u=Gy(o.name),h=t.coordinateSystem;null!=u&&h.getOtherAxis&&(r=h.getOtherAxis(s).inverse),u=t.getData().mapDimension(u),i={thisAxis:s,series:t,thisDim:o.name,otherDim:u,otherAxisInverse:r}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,a=this.dataZoomModel;n.add(t.filler=new oO({draggable:!0,cursor:Fy(this._orient),drift:sO(this._onDragMove,this,"all"),onmousemove:function(t){mw(t.event)},ondragstart:sO(this._showDataInfo,this,!0),ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new oO($n({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}}))),lO([0,1],function(t){var o=Po(a.get("handleIcon"),{cursor:Fy(this._orient),draggable:!0,drift:sO(this._onDragMove,this,t),onmousemove:function(t){mw(t.event)},ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),r=o.getBoundingRect();this._handleHeight=Vo(a.get("handleSize"),this._size[1]),this._handleWidth=r.width/r.height*this._handleHeight,o.setStyle(a.getModel("handleStyle").getItemStyle());var s=a.get("handleColor");null!=s&&(o.style.fill=s),n.add(e[t]=o);var l=a.textStyleModel;this.group.add(i[t]=new rM({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:l.getTextColor(),textFont:l.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[aO(t[0],[0,100],e,!0),aO(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];QL(e,n,o,i.get("zoomLock")?"all":t,null!=a.minSpan?aO(a.minSpan,r,o,!0):null,null!=a.maxSpan?aO(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=rO([aO(n[0],o,r,!0),aO(n[1],o,r,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=rO(i.slice()),o=this._size;lO([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a/2,a/2],position:[i[t],o[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=Ao(n.handles[t].parent,this.group),i=Co(0===t?"right":"left",e),s=this._handleWidth/2+hO,l=Do([c[t]+(0===t?-s:s),this._size[1]/2],e);o[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===uO?"middle":i,textAlign:a===uO?i:"center",text:r[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,a=this._orient,r=["",""];if(i.get("showDetail")){var s=i.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,u=this._range,h=t?s.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:s.getDataValueWindow();r=[this._formatLabel(h[0],l),this._formatLabel(h[1],l)]}}var c=rO(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return x(n)?n(t,a):_(n)?n.replace("{value}",a):a},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i){this._dragging=!0;var n=Do([e,i],this._displayables.barGroup.getLocalTransform(),!0),o=this._updateInterval(t,n[0]),a=this.dataZoomModel.get("realtime");this._updateView(!a),o&&a&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get("realtime")&&this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,i=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(i[0]<0||i[0]>e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var t;if(lO(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});iO.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var fO="\0_ec_dataZoom_roams",pO=m,gO=nO.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){gO.superApply(this,"render",arguments),this._range=t.getPercentRange(),d(this.getTargetCoordInfo(),function(e,n){var o=f(e,function(t){return Zy(t.model)});d(e,function(e){var a=e.model,r={};d(["pan","zoom","scrollMove"],function(t){r[t]=pO(mO[t],this,e,n)},this),Wy(i,{coordId:Zy(a),allCoordIds:o,containsPoint:function(t,e,i){return a.coordinateSystem.containPoint([e,i])},dataZoomId:t.id,dataZoomModel:t,getRange:r})},this)},this)},dispose:function(){Hy(this.api,this.dataZoomModel.id),gO.superApply(this,"dispose",arguments),this._range=null}}),mO={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=vO[e](null,[n.originX,n.originY],r,i,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],u=Math.max(1/n.scale,0);a[0]=(a[0]-l)*u+l,a[1]=(a[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return QL(0,a,[0,100],0,h.minSpan,h.maxSpan),this._range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}},pan:Ky(function(t,e,i,n,o,a){var r=vO[n]([a.oldX,a.oldY],[a.newX,a.newY],e,o,i);return r.signal*(t[1]-t[0])*r.pixel/r.pixelLength}),scrollMove:Ky(function(t,e,i,n,o,a){return vO[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})},vO={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.mainType?(r.pixel=e[0]-t[0],r.pixelLength=l[1]-l[0],r.pixelStart=l[0],r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}};Os({getTargetSeries:function(t){var e=R();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){d(n.getAxisProxy(t.name,i).getTargetSeriesModels(),function(t){e.set(t.uid,t)})})}),e},modifyOutputEnd:!0,overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).reset(n,e)}),t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).filterData(n,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})}}),Es("dataZoom",function(t,e){var i=Ny(m(e.eachComponent,e,"dataZoom"),KN,function(t,e){return t.get(e.axisIndex)}),n=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){n.push.apply(n,i(t).nodes)}),d(n,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})});var yO=d,xO=function(t){var e=t&&t.visualMap;y(e)||(e=e?[e]:[]),yO(e,function(t){if(t){$y(t,"splitList")&&!$y(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&y(e)&&yO(e,function(t){w(t)&&($y(t,"start")&&!$y(t,"min")&&(t.min=t.start),$y(t,"end")&&!$y(t,"max")&&(t.max=t.end))})}})};lI.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"});var _O=VT.VISUAL.COMPONENT;Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=[];return e.eachComponent("visualMap",function(e){var n=t.pipelineContext;!e.isTargetSeries(t)||n&&n.large||i.push(ny(e.stateList,e.targetVisuals,m(e.getValueState,e),e.getDataDimension(t.getData())))}),i}}),Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=t.getData(),n=[];e.eachComponent("visualMap",function(e){if(e.isTargetSeries(t)){var o=e.getVisualMeta(m(Jy,null,t,e))||{stops:[],outerColors:[]},a=e.getDataDimension(i),r=i.getDimensionInfo(a);null!=r&&(o.dimension=r.index,n.push(o))}}),t.getData().setVisual("visualMeta",n)}});var wO={get:function(t,e,n){var o=i((bO[t]||{})[e]);return n&&y(o)?o[o.length-1]:o}},bO={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},SO=hL.mapVisual,MO=hL.eachVisual,IO=y,TO=d,AO=Fo,DO=Bo,CO=B,LO=Fs({type:"visualMap",dependencies:["series"],stateList:["inRange","outOfRange"],replacableOptionKeys:["inRange","outOfRange","target","controller","color"],dataBound:[-1/0,1/0],layoutMode:{type:"box",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:"all",min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:"#333"}},init:function(t,e,i){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this.mergeDefaultAndTheme(t,i)},optionUpdated:function(t,e){var i=this.option;U_.canvasSupported||(i.realtime=!1),!e&&ey(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=m(t,this),this.controllerVisuals=ty(this.option.controller,e,t),this.targetVisuals=ty(this.option.target,e,t)},getTargetSeriesIndices:function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,i){e.push(i)}):e=Di(t),e},eachTargetSeries:function(t,e){d(this.getTargetSeriesIndices(),function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===l[0]?"min":t===l[1]?"max":(+t).toFixed(Math.min(s,20))}var o,a,r=this.option,s=r.precision,l=this.dataBound,u=r.formatter;return i=i||["<",">"],y(t)&&(t=t.slice(),o=!0),a=e?t:o?[n(t[0]),n(t[1])]:n(t),_(u)?u.replace("{value}",o?a[0]:a).replace("{value2}",o?a[1]:a):x(u)?o?u(t[0],t[1]):u(t):o?t[0]===l[0]?i[0]+" "+a[1]:t[1]===l[1]?i[1]+" "+a[0]:a[0]+" - "+a[1]:a},resetExtent:function(){var t=this.option,e=AO([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension,i=t.dimensions;if(null!=e||i.length){if(null!=e)return t.getDimension(e);for(var n=t.dimensions,o=n.length-1;o>=0;o--){var a=n[o];if(!t.getDimensionInfo(a).isCalculationCoord)return a}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){IO(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")},TO(this.stateList,function(e){var i=t[e];if(_(i)){var n=wO.get(i,"active",l);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}var e=this.ecModel,o=this.option,a={inRange:o.inRange,outOfRange:o.outOfRange},r=o.target||(o.target={}),s=o.controller||(o.controller={});n(r,a),n(s,a);var l=this.isCategory();t.call(this,r),t.call(this,s),function(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},TO(n,function(t,e){if(hL.isValidType(e)){var i=wO.get(e,"inactive",l);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}.call(this,r,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,o=this.get("inactiveColor");TO(this.stateList,function(a){var r=this.itemSize,s=t[a];s||(s=t[a]={color:l?o:[o]}),null==s.symbol&&(s.symbol=e&&i(e)||(l?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=n&&i(n)||(l?r[0]:[r[0],r[0]])),s.symbol=SO(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var u=s.symbolSize;if(null!=u){var h=-1/0;MO(u,function(t){t>h&&(h=t)}),s.symbolSize=SO(u,function(t){return DO(t,[0,h],[0,r[0]],!0)})}},this)}.call(this,s)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:CO,getValueState:CO,getVisualMeta:CO}),kO=[20,140],PO=LO.extend({type:"visualMap.continuous",defaultOption:{align:"auto",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:null},optionUpdated:function(t,e){PO.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){PO.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=kO[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=kO[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):y(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){LO.prototype.completeVisualOption.apply(this,arguments),d(this.stateList,function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this.option.range=t.slice(),this._resetRange()},getSelected:function(){var t=this.getExtent(),e=Fo((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){o.push({value:e,color:t(e,i)})}for(var i=Qy(0,0,this.getExtent()),n=Qy(0,0,this.option.range.slice()),o=[],a=0,r=0,s=n.length,l=i.length;rt[1])break;i.push({color:this.getControllerVisual(a,"color",e),offset:o/100})}return i.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),i},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get("inverse");return new tb("horizontal"!==e||i?"horizontal"===e&&i?{scale:"bottom"===t?[-1,1]:[1,1],rotation:-Math.PI/2}:"vertical"!==e||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:"bottom"===t?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,a=i.handleLabels;EO([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=Do(i.handleLabelPoints[r],Ao(s,this.group));a[r].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[r]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===r?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),r=o.itemSize,s=[0,r[1]],l=OO(t,a,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",ox(!!i,n,l,r[1]));var c={convertOpacityToAlpha:!0},d=this.getControllerVisual(t,"color",c);h.setStyle("fill",d);var f=Do(u.indicatorLabelPoint,Ao(h,this.group)),p=u.indicatorLabel;p.attr("invisible",!1);var g=this._applyTransform("left",u.barGroup),m=this._orient;p.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===m?g:"middle",textAlign:"horizontal"===m?"center":g,x:f[0],y:f[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=RO(zO(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i.option.hoverLink){var o=[0,n[1]],a=i.getExtent();t=RO(zO(o[0],t),o[1]);var r=ax(i,a,o),s=[t-r,t+r],l=OO(t,o,a,!0),u=[OO(s[0],o,a,!0),OO(s[1],o,a,!0)];s[0]o[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",r):u[1]===1/0?this._showIndicator(l,u[0],"> ",r):this._showIndicator(l,l,"≈ ",r));var h=this._hoverLinkDataIndices,c=[];(e||rx(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=Ri(h,c);this._dispatchHighDown("downplay",ex(d[0])),this._dispatchHighDown("highlight",ex(d[1]))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t.target,i=this.visualMapModel;if(e&&null!=e.dataIndex){var n=this.ecModel.getSeriesByIndex(e.seriesIndex);if(i.isTargetSeries(n)){var o=n.getData(e.dataType),a=o.get(i.getDataDimension(o),e.dataIndex,!0);isNaN(a)||this._showIndicator(a,a)}}},_hideIndicator:function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",ex(t)),t.length=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},_applyTransform:function(t,e,i,n){var o=Ao(e,n?null:this.group);return zM[y(t)?"applyTransform":"transformDirection"](t,o,i)},_dispatchHighDown:function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});Es({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})}),Ns(xO);var FO=LO.extend({type:"visualMap.piecewise",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieceList:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(t,e){FO.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();WO[this._mode].call(this),this._resetSelected(t,e);var o=this.option.categories;this.resetVisual(function(t,e){"categories"===n?(t.mappingMethod="category",t.categories=i(o)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=f(this._pieceList,function(t){var t=i(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(w(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=hL.listVisualTypes(),o=this.isCategory();d(e.pieces,function(t){d(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),d(i,function(i,n){var a=0;d(this.stateList,function(i){a|=t(e,i,n)||t(e.target,i,n)},this),!a&&d(this.stateList,function(t){(e[t]||(e[t]={}))[n]=wO.get(n,"inRange"===t?"active":"inactive",o)})},this),LO.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,d(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var a=!1;d(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(a?o[i]=!1:a=!0)},this)}},getSelectedMapKey:function(t){return"categories"===this._mode?t.value+"":t.index+""},getPieceList:function(){return this._pieceList},_determineMode:function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=i(t)},getValueState:function(t){var e=hL.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){hL.findPieceIndex(e,this._pieceList)===t&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getRepresentValue:function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var i=t.interval||[];e=i[0]===-1/0&&i[1]===1/0?0:(i[0]+i[1])/2}return e},getVisualMeta:function(t){function e(e,a){var r=o.getRepresentValue({interval:e});a||(a=o.getValueState(r));var s=t(r,a);e[0]===-1/0?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,a=this._pieceList.slice();if(a.length){var r=a[0].interval[0];r!==-1/0&&a.unshift({interval:[-1/0,r]}),(r=a[a.length-1].interval[1])!==1/0&&a.push({interval:[r,1/0]})}else a.push({interval:[-1/0,1/0]});var s=-1/0;return d(a,function(t){var i=t.interval;i&&(i[0]>s&&e([s,i[0]],"outOfRange"),e(i.slice()),s=i[1])},this),{stops:i,outerColors:n}}}}),WO={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.toFixed(i);var r=0;t.minOpen&&e.push({index:r++,interval:[-1/0,n[0]],close:[0,0]});for(var s=n[0],l=r+o;r","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};NO.extend({type:"visualMap.piecewise",doRender:function(){var t=this.group;t.removeAll();var e=this.visualMapModel,i=e.get("textGap"),n=e.textStyleModel,o=n.getFont(),a=n.getTextColor(),r=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=T(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,r),d(l.viewPieceList,function(n){var l=n.piece,u=new tb;u.onclick=m(this._onItemClick,this,l),this._enableHoverLink(u,n.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var d=this.visualMapModel.getValueState(c);u.add(new rM({style:{x:"right"===r?-i:s[0]+i,y:s[1]/2,text:l.text,textVerticalAlign:"middle",textAlign:r,textFont:o,textFill:a,opacity:"outOfRange"===d?.5:1}}))}t.add(u)},this),u&&this._renderEndsText(t,u[1],s,h,r),aI(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:ex(i.findTargetDataIndices(e))})}t.on("mouseover",m(i,this,"highlight")).on("mouseout",m(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return tx(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new tb,r=this.visualMapModel.textStyleModel;a.add(new rM({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=f(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),o=t.get("inverse");return("horizontal"===n?o:!o)?e.reverse():i&&(i=i.slice().reverse()),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(Jl(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,n=e.option,o=i(n.selected),a=e.getSelectedMapKey(t);"single"===n.selectedMode?(o[a]=!0,d(o,function(t,e){o[e]=e===a})):o[a]=!o[a],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:o})}});Ns(xO);var HO=ta,ZO=ia,UO=Fs({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,n){var o=this.constructor,r=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType,!0),s=t[r];i&&i.data?(s?s.mergeOption(i,e,!0):(n&&ux(i),d(i.data,function(t){t instanceof Array?(ux(t[0]),ux(t[1])):ux(t)}),a(s=new o(i,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),t[r]=s):t[r]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=y(i)?f(i,HO).join(", "):HO(i),o=e.getName(t),a=ZO(this.name);return(null!=i||o)&&(a+="
"),o&&(a+=ZO(o),null!=i&&(a+=" : ")),null!=i&&(a+=ZO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(UO,ZI),UO.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var XO=l,jO=v,YO={min:jO(dx,"min"),max:jO(dx,"max"),average:jO(dx,"average")},qO=Ws({type:"marker",init:function(){this.markerGroupMap=R()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});qO.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(xx(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,r=t.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,new Du),u=_x(o,t,e);e.setData(u),xx(e.getData(),t,n),u.each(function(t){var i=u.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),u.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||r.getVisual("color"),symbol:i.getShallow("symbol")})}),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markPoint=t.markPoint||{}}),UO.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});var KO=function(t,e,o,r){var s=t.getData(),l=r.type;if(!y(r)&&("min"===l||"max"===l||"average"===l||"median"===l||null!=r.xAxis||null!=r.yAxis)){var u,h;if(null!=r.yAxis||null!=r.xAxis)u=null!=r.yAxis?"y":"x",e.getAxis(u),h=T(r.yAxis,r.xAxis);else{var c=px(r,s,e,t);u=c.valueDataDim,c.valueAxis,h=yx(s,u,l)}var d="x"===u?0:1,f=1-d,p=i(r),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-1/0,g.coord[f]=1/0;var m=o.get("precision");m>=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),p.coord[d]=g.coord[d]=h,r=[p,g,{type:l,valueIndex:r.valueIndex,value:h}]}return r=[fx(t,r[0]),fx(t,r[1]),a({},r[2])],r[2].type=r[2].type||"",n(r[2],r[0]),n(r[2],r[1]),r};qO.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){Ix(o,e,!0,t,i),Ix(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);Ix(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||g[o?0:1],symbol:a.get("symbol",!0)||p[o?0:1],color:a.get("itemStyle.color")||s.getVisual("color")})}var a=t.coordinateSystem,r=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(r)||l.set(r,new sf);this.group.add(u.group);var h=Tx(a,t,e),c=h.from,d=h.to,f=h.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");y(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),h.from.each(function(t){o(c,t,!0),o(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),u.updateData(f),h.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),u.__keep=!0,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markLine=t.markLine||{}}),UO.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});var $O=function(t,e,i,n){var a=fx(t,n[0]),r=fx(t,n[1]),s=T,l=a.coord,u=r.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),u[0]=s(u[0],1/0),u[1]=s(u[1],1/0);var h=o([{},a,r]);return h.coord=[a.coord,r.coord],h.x0=a.x,h.y0=a.y,h.x1=r.x,h.y1=r.y,h},JO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];qO.extend({type:"markArea",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=f(JO,function(o){return Lx(n,e,o,t,i)});n.setItemLayout(e,o),n.getItemGraphicEl(e).setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(a)||l.set(a,{group:new tb});this.group.add(u.group),u.__keep=!0;var h=kx(o,t,e);e.setData(h),h.each(function(e){h.setItemLayout(e,f(JO,function(i){return Lx(h,e,i,t,n)})),h.setItemVisual(e,{color:s.getVisual("color")})}),h.diff(u.__data).add(function(t){var e=new pM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);Io(n,{shape:{points:h.getItemLayout(t)}},e,t),u.group.add(n),h.setItemGraphicEl(t,n)}).remove(function(t){var e=u.__data.getItemGraphicEl(t);u.group.remove(e)}).execute(),h.eachItemGraphicEl(function(t,i){var n=h.getItemModel(i),o=n.getModel("label"),a=n.getModel("emphasis.label"),s=h.getItemVisual(i,"color");t.useStyle(r(n.getModel("itemStyle").getItemStyle(),{fill:Yt(s,.4),stroke:s})),t.hoverStyle=n.getModel("emphasis.itemStyle").getItemStyle(),go(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),fo(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markArea=t.markArea||{}});lI.registerSubTypeDefaulter("timeline",function(){return"slider"}),Es({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),r({currentIndex:i.option.currentIndex},t)}),Es({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var QO=lI.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){QO.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],n=t.axisType,o=this._names=[];if("category"===n){var a=[];d(e,function(t,e){var n,r=Li(t);w(t)?(n=i(t)).value=e:n=e,a.push(n),_(r)||null!=r&&!isNaN(r)||(r=""),o.push(r+"")}),e=a}var r={category:"ordinal",time:"time"}[n]||"number";(this._data=new vA([{name:"value",type:r}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});h(QO.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}}),ZI);var tE=qI.extend({type:"timeline"}),eE=function(t,e,i,n){aD.call(this,t,e,i),this.type=n||"value",this.model=null};eE.prototype={constructor:eE,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(eE,aD);var iE=m,nE=d,oE=Math.PI;tE.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return ia(s.scale.getLabel(t))},nE(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,a,s,t)},this),this._renderAxisLabel(o,r,s,t),this._position(o,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),o=Ex(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2=0||"+"===i?"left":"right"},r={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},s={horizontal:0,vertical:oE/2},l="vertical"===n?o.height:o.width,u=t.getModel("controlStyle"),h=u.get("show",!0),c=h?u.get("itemSize"):0,d=h?u.get("itemGap"):0,f=c+d,p=t.get("label.rotate")||0;p=p*oE/180;var g,m,v,y,x=u.get("position",!0),_=h&&u.get("showPlayBtn",!0),w=h&&u.get("showPrevBtn",!0),b=h&&u.get("showNextBtn",!0),S=0,M=l;return"left"===x||"bottom"===x?(_&&(g=[0,0],S+=f),w&&(m=[S,0],S+=f),b&&(v=[M-c,0],M-=f)):(_&&(g=[M-c,0],M-=f),w&&(m=[0,0],S+=f),b&&(v=[M-c,0],M-=f)),y=[S,M],t.get("inverse")&&y.reverse(),{viewRect:o,mainLength:l,orient:n,rotation:s[n],labelRotation:p,labelPosOpt:i,labelAlign:t.get("label.align")||a[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||r[n],playPosition:g,prevBtnPosition:m,nextBtnPosition:v,axisExtent:y,controlSize:c,controlGap:d}},_position:function(t,e){function i(t){var e=t.position;t.origin=[c[0][0]-e[0],c[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var a=this._mainGroup,r=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=xt(),u=s.x,h=s.y+s.height;St(l,l,[-u,-h]),Mt(l,l,-oE/2),St(l,l,[u,h]),(s=s.clone()).applyTransform(l)}var c=n(s),d=n(a.getBoundingRect()),f=n(r.getBoundingRect()),p=a.position,g=r.position;g[0]=p[0]=c[0][0];var m=t.labelPosOpt;if(isNaN(m))o(p,d,c,1,v="+"===m?0:1),o(g,f,c,1,1-v);else{var v=m>=0?0:1;o(p,d,c,1,v),g[1]=p[1]+m}a.attr("position",p),r.attr("position",g),a.rotation=r.rotation=t.rotation,i(a),i(r)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=Hl(e,n);o.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var a=i.getDataExtent("value");o.setExtent(a[0],a[1]),o.niceTicks();var r=new eE("value",o,t.axisExtent,n);return r.model=e,r},_createGroup:function(t){var e=this["_"+t]=new tb;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new _M({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:a({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),a=i.scale.getTicks();nE(a,function(t){var a=i.dataToCoord(t),r=o.getItemModel(t),s=r.getModel("itemStyle"),l=r.getModel("emphasis.itemStyle"),u={position:[a,0],onclick:iE(this._changeTimeline,this,t)},h=zx(r,s,e,u);fo(h,l.getItemStyle()),r.get("tooltip")?(h.dataIndex=t,h.dataModel=n):h.dataIndex=h.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){if(i.getLabelModel().get("show")){var o=n.getData(),a=i.getViewLabels();nE(a,function(n){var a=n.tickValue,r=o.getItemModel(a),s=r.getModel("label"),l=r.getModel("emphasis.label"),u=i.dataToCoord(n.tickValue),h=new rM({position:[u,0],rotation:t.labelRotation-t.rotation,onclick:iE(this._changeTimeline,this,a),silent:!1});mo(h.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(h),fo(h,mo({},l))},this)}},_renderControl:function(t,e,i,n){function o(t,i,o,h){if(t){var c=Rx(n,i,u,{position:t,origin:[a/2,0],rotation:h?-r:0,rectHover:!0,style:s,onclick:o});e.add(c),fo(c,l)}}var a=t.controlSize,r=t.rotation,s=n.getModel("controlStyle").getItemStyle(),l=n.getModel("emphasis.controlStyle").getItemStyle(),u=[0,-a/2,a,a],h=n.getPlayState(),c=n.get("inverse",!0);o(t.nextBtnPosition,"controlStyle.nextIcon",iE(this._changeTimeline,this,c?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",iE(this._changeTimeline,this,c?"+":"-")),o(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),iE(this._handlePlayClick,this,!h),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),a=n.getCurrentIndex(),r=o.getItemModel(a).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=iE(s._handlePointerDrag,s),t.ondragend=iE(s._handlePointerDragend,s),Bx(t,a,i,n,!0)},onUpdate:function(t){Bx(t,a,i,n)}};this._currentPointer=zx(r,r,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i.offsetX,i.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=Fo(this._axis.getExtent().slice());i>n[1]&&(i=n[1]),ii.getHeight()&&(n.textPosition="top",l=!0);var u=l?-5-o.height:s+8;a+o.width/2>i.getWidth()?(n.textPosition=["100%",u],n.textAlign="right"):a-o.width/2<0&&(n.textPosition=[0,u],n.textAlign="left")}})}},updateView:function(t,e,i,n){d(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(t,e){d(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){d(this._features,function(i){i.dispose&&i.dispose(t,e)})}});var rE=rT.toolbox.saveAsImage;Gx.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:rE.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:rE.lang.slice()},Gx.prototype.unusable=!U_.canvasSupported,Gx.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=document.createElement("a"),a=i.get("type",!0)||"png";o.download=n+"."+a,o.target="_blank";var r=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(o.href=r,"function"!=typeof MouseEvent||U_.browser.ie||U_.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(r.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,n+"."+a)}else{var c=i.get("lang"),d='';window.open().document.write(d)}else{var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(f)}},Ty("saveAsImage",Gx);var sE=rT.toolbox.magicType;Fx.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z",tiled:"M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z"},title:i(sE.title),option:{},seriesIndex:{}};var lE=Fx.prototype;lE.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return d(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var uE={line:function(t,e,i,o){if("bar"===t)return n({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.line")||{},!0)},bar:function(t,e,i,o){if("line"===t)return n({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.bar")||{},!0)},stack:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:"__ec_magicType_stack__"},o.get("option.stack")||{},!0)},tiled:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:""},o.get("option.tiled")||{},!0)}},hE=[["line","bar"],["stack","tiled"]];lE.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(uE[i]){var a={series:[]};d(hE,function(t){l(t,i)>=0&&d(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},function(e){var o=e.subType,s=e.id,l=uE[i](o,s,e,n);l&&(r(l,e.option),a.series.push(l));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var c=h.dim+"Axis",d=t.queryComponents({mainType:c,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;a[c]=a[c]||[];for(var f=0;f<=d;f++)a[c][d]=a[c][d]||{};a[c][d].boundaryGap="bar"===i}}}),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:a})}},Es({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Ty("magicType",Fx);var cE=rT.toolbox.dataView,dE=new Array(60).join("-"),fE="\t",pE=new RegExp("["+fE+"]+","g");$x.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:i(cE.title),lang:i(cE.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},$x.prototype.onclick=function(t,e){function i(){n.removeChild(a),x._dom=null}var n=e.getDom(),o=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=o.get("backgroundColor")||"#fff";var r=document.createElement("h4"),s=o.get("lang")||[];r.innerHTML=s[0]||o.get("title"),r.style.cssText="margin: 10px 20px;",r.style.color=o.get("textColor");var l=document.createElement("div"),u=document.createElement("textarea");l.style.cssText="display:block;width:100%;overflow:auto;";var h=o.get("optionToContent"),c=o.get("contentToOption"),d=Ux(t);if("function"==typeof h){var f=h(e.getOption());"string"==typeof f?l.innerHTML=f:M(f)&&l.appendChild(f)}else l.appendChild(u),u.readOnly=o.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=o.get("textColor"),u.style.borderColor=o.get("textareaBorderColor"),u.style.backgroundColor=o.get("textareaColor"),u.value=d.value;var p=d.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:0;left:0;right:0;";var m="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),y=document.createElement("div");m+=";background-color:"+o.get("buttonColor"),m+=";color:"+o.get("buttonTextColor");var x=this;ht(v,"click",i),ht(y,"click",function(){var t;try{t="function"==typeof c?c(l,e.getOption()):Kx(u.value,p)}catch(t){throw i(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),v.innerHTML=s[1],y.innerHTML=s[2],y.style.cssText=m,v.style.cssText=m,!o.get("readOnly")&&g.appendChild(y),g.appendChild(v),ht(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+fE+e.substring(n),this.selectionStart=this.selectionEnd=i+1,mw(t)}}),a.appendChild(r),a.appendChild(l),a.appendChild(g),l.style.height=n.clientHeight-80+"px",n.appendChild(a),this._dom=a},$x.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},$x.prototype.dispose=function(t,e){this.remove(t,e)},Ty("dataView",$x),Es({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];d(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:Jx(t.data,o)})}else i.push(a({type:"scatter"},t))}),e.mergeOption(r({series:i},t.newOption))});var gE=d,mE="\0_ec_hist_store";iO.extend({type:"dataZoom.select"}),nO.extend({type:"dataZoom.select"});var vE=rT.toolbox.dataZoom,yE=d,xE="\0_ec_\0toolbox-dataZoom_";o_.defaultOption={show:!0,icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:i(vE.title)};var _E=o_.prototype;_E.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,s_(t,e,this,n,i),r_(t,e)},_E.onclick=function(t,e,i){wE[i].call(this)},_E.remove=function(t,e){this._brushController.unmount()},_E.dispose=function(t,e){this._brushController.dispose()};var wE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(t_(this.ecModel))}};_E._onBrush=function(t,e){function i(t,e,i){var r=e.getAxis(t),s=r.model,l=n(t,s,a),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(i=QL(0,i.slice(),r.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(o[l.id]={dataZoomId:l.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){i.getAxisModel(t,e.componentIndex)&&(n=i)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]),new hy(a_(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),Qx(a,o),this._dispatchZoomAction(o)}},_E._dispatchZoomAction=function(t){var e=[];yE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},Ty("dataZoom",o_),Ns(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"===a||y(a)||(a=!1===a||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"===a||-1!==l(a,i)){var r={type:"select",$fromToolbox:!0,id:xE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),yE(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);y(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(y(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}});var bE=rT.toolbox.restore;l_.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:bE.title},l_.prototype.onclick=function(t,e,i){e_(t),e.dispatchAction({type:"restore",from:this.uid})},Ty("restore",l_),Es({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var SE,ME="urn:schemas-microsoft-com:vml",IE="undefined"==typeof window?null:window,TE=!1,AE=IE&&IE.document;if(AE&&!U_.canvasSupported)try{!AE.namespaces.zrvml&&AE.namespaces.add("zrvml",ME),SE=function(t){return AE.createElement("')}}catch(t){SE=function(t){return AE.createElement("<"+t+' xmlns="'+ME+'" class="zrvml">')}}var DE=ES.CMD,CE=Math.round,LE=Math.sqrt,kE=Math.abs,PE=Math.cos,NE=Math.sin,OE=Math.max;if(!U_.canvasSupported){var EE=21600,RE=EE/2,zE=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=EE+","+EE,t.coordorigin="0,0"},BE=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},VE=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},GE=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},FE=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},WE=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},HE=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},ZE=function(t,e,i){var n=Gt(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=VE(n[0],n[1],n[2]),t.opacity=i*n[3])},UE=function(t){var e=Gt(t);return[VE(e[0],e[1],e[2]),e[3]]},XE=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof IM){var o,a=0,r=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){o="gradient";var d=i.transform,f=[n.x*h,n.y*c],p=[n.x2*h,n.y2*c];d&&(Q(f,f,d),Q(p,p,d));var g=p[0]-f[0],m=p[1]-f[1];(a=180*Math.atan2(g,m)/Math.PI)<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial";var f=[n.x*h,n.y*c],d=i.transform,v=i.scale,y=h,x=c;r=[(f[0]-u.x)/y,(f[1]-u.y)/x],d&&Q(f,f,d),y/=v[0]*EE,x/=v[1]*EE;var _=OE(y,x);s=0/_,l=2*n.r/_-s}var w=n.colorStops.slice();w.sort(function(t,e){return t.offset-e.offset});for(var b=w.length,S=[],M=[],I=0;I=2){var D=S[0][0],C=S[1][0],L=S[0][1]*e.opacity,k=S[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=D,t.color2=C,t.colors=M.join(","),t.opacity=k,t.opacity2=L}"radial"===o&&(t.focusposition=r.join(","))}else ZE(t,n,e.opacity)},jE=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof IM||ZE(t,e.stroke,e.opacity)},YE=function(t,e,i,n){var o="fill"===e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof IM&&FE(t,a),a||(a=u_(e)),o?XE(a,i,n):jE(a,i),GE(t,a)):(t[o?"filled":"stroked"]="false",FE(t,a))},qE=[[],[],[]],KE=function(t,e){var i,n,o,a,r,s,l=DE.M,u=DE.C,h=DE.L,c=DE.A,d=DE.Q,f=[],p=t.data,g=t.len();for(a=0;a.01?N&&(O+=.0125):Math.abs(E-D)<1e-4?N&&OA?x-=.0125:x+=.0125:N&&ED?y+=.0125:y-=.0125),f.push(R,CE(((A-C)*M+b)*EE-RE),",",CE(((D-L)*I+S)*EE-RE),",",CE(((A+C)*M+b)*EE-RE),",",CE(((D+L)*I+S)*EE-RE),",",CE((O*M+b)*EE-RE),",",CE((E*I+S)*EE-RE),",",CE((y*M+b)*EE-RE),",",CE((x*I+S)*EE-RE)),r=y,s=x;break;case DE.R:var z=qE[0],B=qE[1];z[0]=p[a++],z[1]=p[a++],B[0]=z[0]+p[a++],B[1]=z[1]+p[a++],e&&(Q(z,z,e),Q(B,B,e)),z[0]=CE(z[0]*EE-RE),B[0]=CE(B[0]*EE-RE),z[1]=CE(z[1]*EE-RE),B[1]=CE(B[1]*EE-RE),f.push(" m ",z[0],",",z[1]," l ",B[0],",",z[1]," l ",B[0],",",B[1]," l ",z[0],",",B[1]);break;case DE.Z:f.push(" x ")}if(i>0){f.push(n);for(var V=0;V100&&(tR=0,QE={});var i,n=eR.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(t){}e={style:n.fontStyle||"normal",variant:n.fontVariant||"normal",weight:n.fontWeight||"normal",size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},QE[t]=e,tR++}return e};!function(t,e){bb[t]=e}("measureText",function(t,e){var i=AE;JE||((JE=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",AE.body.appendChild(JE));try{JE.style.font=e}catch(t){}return JE.innerHTML="",JE.appendChild(i.createTextNode(t)),{width:JE.offsetWidth}});for(var nR=new de,oR=[Db,di,fi,Pn,rM],aR=0;aR=o&&u+1>=a){for(var h=[],c=0;c=o&&c+1>=a)return T_(0,s.components);l[i]=s}else l[i]=void 0}r++}();if(d)return d}},pushComponent:function(t,e,i){var n=t[t.length-1];n&&n.added===e&&n.removed===i?t[t.length-1]={count:n.count+1,added:e,removed:i}:t.push({count:1,added:e,removed:i})},extractCommon:function(t,e,i,n){for(var o=e.length,a=i.length,r=t.newPos,s=r-n,l=0;r+1=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},D_.prototype.update=function(t,e){if(t){var i=this.getDefs(!1);if(t[this._domName]&&i.contains(t[this._domName]))"function"==typeof e&&e(t);else{var n=this.add(t);n&&(t[this._domName]=n)}}},D_.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},D_.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},D_.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return d(this._tagNames,function(i){var n=t.getElementsByTagName(i);e=e.concat([].slice.call(n))}),e},D_.prototype.markAllUnused=function(){var t=this;d(this.getDoms(),function(e){e[t._markLabel]="0"})},D_.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},D_.prototype.removeUnused=function(){var t=this.getDefs(!1);if(t){var e=this;d(this.getDoms(),function(i){"1"!==i[e._markLabel]&&t.removeChild(i)})}},D_.prototype.getSvgProxy=function(t){return t instanceof Pn?yR:t instanceof fi?xR:t instanceof rM?_R:yR},D_.prototype.getTextSvgElement=function(t){return t.__textSvgEl},D_.prototype.getSvgElement=function(t){return t.__svgEl},u(C_,D_),C_.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var i=this;d(["fill","stroke"],function(n){if(e.style[n]&&("linear"===e.style[n].type||"radial"===e.style[n].type)){var o,a=e.style[n],r=i.getDefs(!0);a._dom?(o=a._dom,r.contains(a._dom)||i.addDom(o)):o=i.add(a),i.markUsed(e);var s=o.getAttribute("id");t.setAttribute(n,"url(#"+s+")")}})}},C_.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return Yw("Illegal gradient type."),null;e=this.createElement("radialGradient")}return t.id=t.id||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-gradient-"+t.id),this.updateDom(t,e),this.addDom(e),e},C_.prototype.update=function(t){var e=this;D_.prototype.update.call(this,t,function(){var i=t.type,n=t._dom.tagName;"linear"===i&&"linearGradient"===n||"radial"===i&&"radialGradient"===n?e.updateDom(t,t._dom):(e.removeDom(t),e.add(t))})},C_.prototype.updateDom=function(t,e){if("linear"===t.type)e.setAttribute("x1",t.x),e.setAttribute("y1",t.y),e.setAttribute("x2",t.x2),e.setAttribute("y2",t.y2);else{if("radial"!==t.type)return void Yw("Illegal gradient type.");e.setAttribute("cx",t.x),e.setAttribute("cy",t.y),e.setAttribute("r",t.r)}t.global?e.setAttribute("gradientUnits","userSpaceOnUse"):e.setAttribute("gradientUnits","objectBoundingBox"),e.innerHTML="";for(var i=t.colorStops,n=0,o=i.length;n0){var n,o,a=this.getDefs(!0),r=e[0],s=i?"_textDom":"_dom";r[s]?(o=r[s].getAttribute("id"),n=r[s],a.contains(n)||a.appendChild(n)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(n=this.createElement("clipPath")).setAttribute("id",o),a.appendChild(n),r[s]=n);var l=this.getSvgProxy(r);if(r.transform&&r.parent.invTransform&&!i){var u=Array.prototype.slice.call(r.transform);bt(r.transform,r.parent.invTransform,r.transform),l.brush(r),r.transform=u}else l.brush(r);var h=this.getSvgElement(r);n.innerHTML="",n.appendChild(h.cloneNode()),t.setAttribute("clip-path","url(#"+o+")"),e.length>1&&this.updateDom(n,e.slice(1),i)}else t&&t.setAttribute("clip-path","none")},L_.prototype.markUsed=function(t){var e=this;t.__clipPaths&&t.__clipPaths.length>0&&d(t.__clipPaths,function(t){t._dom&&D_.prototype.markUsed.call(e,t._dom),t._textDom&&D_.prototype.markUsed.call(e,t._textDom)})},u(k_,D_),k_.prototype.addWithoutUpdate=function(t,e){if(e&&P_(e.style)){var i,n=e.style;n._shadowDom?(i=n._shadowDom,this.getDefs(!0).contains(n._shadowDom)||this.addDom(i)):i=this.add(e),this.markUsed(e);var o=i.getAttribute("id");t.style.filter="url(#"+o+")"}},k_.prototype.add=function(t){var e=this.createElement("filter"),i=t.style;return i._shadowDomId=i._shadowDomId||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-shadow-"+i._shadowDomId),this.updateDom(t,e),this.addDom(e),e},k_.prototype.update=function(t,e){var i=e.style;if(P_(i)){var n=this;D_.prototype.update.call(this,e,function(t){n.updateDom(e,t._shadowDom)})}else this.remove(t,i)},k_.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(e),t.style.filter="")},k_.prototype.updateDom=function(t,e){var i=e.getElementsByTagName("feDropShadow");i=0===i.length?this.createElement("feDropShadow"):i[0];var n,o,a,r,s=t.style,l=t.scale?t.scale[0]||1:1,u=t.scale?t.scale[1]||1:1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)n=s.shadowOffsetX||0,o=s.shadowOffsetY||0,a=s.shadowBlur,r=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);n=s.textShadowOffsetX||0,o=s.textShadowOffsetY||0,a=s.textShadowBlur,r=s.textShadowColor}i.setAttribute("dx",n/l),i.setAttribute("dy",o/u),i.setAttribute("flood-color",r);var h=a/2/l+" "+a/2/u;i.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(a/2*200)+"%"),e.setAttribute("height",Math.ceil(a/2*200)+"%"),e.appendChild(i),s._shadowDom=e},k_.prototype.markUsed=function(t){var e=t.style;e&&e._shadowDom&&D_.prototype.markUsed.call(this,e._shadowDom)};var IR=function(t,e,i,n){this.root=t,this.storage=e,this._opts=i=a({},i||{});var o=p_("svg");o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttribute("version","1.1"),o.setAttribute("baseProfile","full"),o.style.cssText="user-select:none;position:absolute;left:0;top:0;",this.gradientManager=new C_(n,o),this.clipPathManager=new L_(n,o),this.shadowManager=new k_(n,o);var r=document.createElement("div");r.style.cssText="overflow:hidden;position:relative",this._svgRoot=o,this._viewport=r,t.appendChild(r),r.appendChild(o),this.resize(i.width,i.height),this._visibleList=[]};IR.prototype={constructor:IR,getType:function(){return"svg"},getViewportRoot:function(){return this._viewport},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},setBackgroundColor:function(t){this._viewport.style.background=t},_paintList:function(t){this.gradientManager.markAllUnused(),this.clipPathManager.markAllUnused(),this.shadowManager.markAllUnused();var e,i=this._svgRoot,n=this._visibleList,o=t.length,a=[];for(e=0;e=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},resize:function(t,e){var i=this._viewport;i.style.display="none";var n=this._opts;if(null!=t&&(n.width=t),null!=e&&(n.height=e),t=this._getSize(0),e=this._getSize(1),i.style.display="",this._width!==t||this._height!==e){this._width=t,this._height=e;var o=i.style;o.width=t+"px",o.height=e+"px";var a=this._svgRoot;a.setAttribute("width",t),a.setAttribute("height",e)}},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],n=["clientWidth","clientHeight"][t],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||N_(s[i])||N_(r.style[i]))-(N_(s[o])||0)-(N_(s[a])||0)|0},dispose:function(){this.root.innerHTML="",this._svgRoot=this._viewport=this.storage=null},clear:function(){this._viewport&&this.root.removeChild(this._viewport)},pathToDataUrl:function(){return this.refresh(),"data:image/svg+xml;charset=UTF-8,"+this._svgRoot.outerHTML}},d(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){IR.prototype[t]=F_(t)}),Ti("svg",IR),t.version="4.2.1",t.dependencies=ET,t.PRIORITY=VT,t.init=function(t,e,i){var n=ks(t);if(n)return n;var o=new us(t,e,i);return o.id="ec_"+iA++,tA[o.id]=o,Fi(t,oA,o.id),Cs(o),o},t.connect=function(t){if(y(t)){var e=t;t=null,kT(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+nA++,kT(e,function(e){e.group=t})}return eA[t]=!0,t},t.disConnect=Ls,t.disconnect=aA,t.dispose=function(t){"string"==typeof t?t=tA[t]:t instanceof us||(t=ks(t)),t instanceof us&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=ks,t.getInstanceById=function(t){return tA[t]},t.registerTheme=Ps,t.registerPreprocessor=Ns,t.registerProcessor=Os,t.registerPostUpdate=function(t){KT.push(t)},t.registerAction=Es,t.registerCoordinateSystem=Rs,t.getCoordinateSystemDimensions=function(t){var e=Fa.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=zs,t.registerVisual=Bs,t.registerLoading=Gs,t.extendComponentModel=Fs,t.extendComponentView=Ws,t.extendSeriesModel=Hs,t.extendChartView=Zs,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,i){DT.registerMap(t,e,i)},t.getMap=function(t){var e=DT.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool=rA,t.zrender=Hb,t.number=YM,t.format=eI,t.throttle=Pr,t.helper=tD,t.matrix=Sw,t.vector=cw,t.color=Ww,t.parseGeoJSON=iD,t.parseGeoJson=rD,t.util=sD,t.graphic=lD,t.List=vA,t.Model=No,t.Axis=aD,t.env=U_}); \ No newline at end of file diff --git a/uni_modules/uni-badge/changelog.md b/uni_modules/uni-badge/changelog.md new file mode 100644 index 0000000..e352c60 --- /dev/null +++ b/uni_modules/uni-badge/changelog.md @@ -0,0 +1,33 @@ +## 1.2.2(2023-01-28) +- 修复 运行/打包 控制台警告问题 +## 1.2.1(2022-09-05) +- 修复 当 text 超过 max-num 时,badge 的宽度计算是根据 text 的长度计算,更改为 css 计算实际展示宽度,详见:[https://ask.dcloud.net.cn/question/150473](https://ask.dcloud.net.cn/question/150473) +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-badge](https://uniapp.dcloud.io/component/uniui/uni-badge) +## 1.1.7(2021-11-08) +- 优化 升级ui +- 修改 size 属性默认值调整为 small +- 修改 type 属性,默认值调整为 error,info 替换 default +## 1.1.6(2021-09-22) +- 修复 在字节小程序上样式不生效的 bug +## 1.1.5(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.4(2021-07-29) +- 修复 去掉 nvue 不支持css 的 align-self 属性,nvue 下不暂支持 absolute 属性 +## 1.1.3(2021-06-24) +- 优化 示例项目 +## 1.1.1(2021-05-12) +- 新增 组件示例地址 +## 1.1.0(2021-05-12) +- 新增 uni-badge 的 absolute 属性,支持定位 +- 新增 uni-badge 的 offset 属性,支持定位偏移 +- 新增 uni-badge 的 is-dot 属性,支持仅显示有一个小点 +- 新增 uni-badge 的 max-num 属性,支持自定义封顶的数字值,超过 99 显示99+ +- 优化 uni-badge 属性 custom-style, 支持以对象形式自定义样式 +## 1.0.7(2021-05-07) +- 修复 uni-badge 在 App 端,数字小于10时不是圆形的bug +- 修复 uni-badge 在父元素不是 flex 布局时,宽度缩小的bug +- 新增 uni-badge 属性 custom-style, 支持自定义样式 +## 1.0.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-badge/components/uni-badge/uni-badge.vue b/uni_modules/uni-badge/components/uni-badge/uni-badge.vue new file mode 100644 index 0000000..956354b --- /dev/null +++ b/uni_modules/uni-badge/components/uni-badge/uni-badge.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/uni_modules/uni-badge/package.json b/uni_modules/uni-badge/package.json new file mode 100644 index 0000000..b0bac93 --- /dev/null +++ b/uni_modules/uni-badge/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-badge", + "displayName": "uni-badge 数字角标", + "version": "1.2.2", + "description": "数字角标(徽章)组件,在元素周围展示消息提醒,一般用于列表、九宫格、按钮等地方。", + "keywords": [ + "", + "badge", + "uni-ui", + "uniui", + "数字角标", + "徽章" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-badge/readme.md b/uni_modules/uni-badge/readme.md new file mode 100644 index 0000000..bdf175d --- /dev/null +++ b/uni_modules/uni-badge/readme.md @@ -0,0 +1,10 @@ +## Badge 数字角标 +> **组件名:uni-badge** +> 代码块: `uBadge` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-badge) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-breadcrumb/changelog.md b/uni_modules/uni-breadcrumb/changelog.md new file mode 100644 index 0000000..209e5c5 --- /dev/null +++ b/uni_modules/uni-breadcrumb/changelog.md @@ -0,0 +1,6 @@ +## 0.1.2(2022-06-08) +- 修复 微信小程序 separator 不显示的Bug +## 0.1.1(2022-06-02) +- 新增 支持 uni.scss 修改颜色 +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue b/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue new file mode 100644 index 0000000..b9edbd6 --- /dev/null +++ b/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue @@ -0,0 +1,121 @@ + + + diff --git a/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue b/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue new file mode 100644 index 0000000..94493a2 --- /dev/null +++ b/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue @@ -0,0 +1,41 @@ + + + diff --git a/uni_modules/uni-breadcrumb/package.json b/uni_modules/uni-breadcrumb/package.json new file mode 100644 index 0000000..0a04e50 --- /dev/null +++ b/uni_modules/uni-breadcrumb/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-breadcrumb", + "displayName": "uni-breadcrumb 面包屑", + "version": "0.1.2", + "description": "Breadcrumb 面包屑", + "keywords": [ + "uni-breadcrumb", + "breadcrumb", + "uni-ui", + "面包屑导航", + "面包屑" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uni_modules/uni-breadcrumb/readme.md b/uni_modules/uni-breadcrumb/readme.md new file mode 100644 index 0000000..6976b8d --- /dev/null +++ b/uni_modules/uni-breadcrumb/readme.md @@ -0,0 +1,66 @@ + +## breadcrumb 面包屑导航 +> **组件名:uni-breadcrumb** +> 代码块: `ubreadcrumb` + +显示当前页面的路径,快速返回之前的任意页面。 + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + {{route.name}} + +``` + +```js +export default { + name: "uni-stat-breadcrumb", + data() { + return { + routes: [{ + to: '/A', + name: 'A页面' + }, { + to: '/B', + name: 'B页面' + }, { + to: '/C', + name: 'C页面' + }] + }; + } + } +``` + + +## API + +### Breadcrumb Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|separator |String |斜杠'/' |分隔符 | +|separatorClass |String | |图标分隔符 class | + +### Breadcrumb Item Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|to |String | |路由跳转页面路径 | +|replace|Boolean | |在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持) | + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb](https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb) \ No newline at end of file diff --git a/uni_modules/uni-calendar/changelog.md b/uni_modules/uni-calendar/changelog.md new file mode 100644 index 0000000..f291eec --- /dev/null +++ b/uni_modules/uni-calendar/changelog.md @@ -0,0 +1,26 @@ +## 1.4.10(2023-04-10) +- 修复 某些情况 monthSwitch 未触发的Bug +## 1.4.9(2023-02-02) +- 修复 某些情况切换月份错误的Bug +## 1.4.8(2023-01-30) +- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/161964) +## 1.4.7(2022-09-16) +- 优化 支持使用 uni-scss 控制主题色 +## 1.4.6(2022-09-08) +- 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件的Bug +## 1.4.5(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式的Bug +## 1.4.4(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式的Bug +## 1.4.3(2021-09-22) +- 修复 startDate、 endDate 属性失效的Bug +## 1.4.2(2021-08-24) +- 新增 支持国际化 +## 1.4.1(2021-08-05) +- 修复 弹出层被 tabbar 遮盖的Bug +## 1.4.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.3.16(2021-05-12) +- 新增 组件示例地址 +## 1.3.15(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-calendar/components/uni-calendar/calendar.js b/uni_modules/uni-calendar/components/uni-calendar/calendar.js new file mode 100644 index 0000000..b8d7d6f --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/calendar.js @@ -0,0 +1,546 @@ +/** +* @1900-2100区间内的公历、农历互转 +* @charset UTF-8 +* @github https://github.com/jjonline/calendar.js +* @Author Jea杨(JJonline@JJonline.Cn) +* @Time 2014-7-21 +* @Time 2016-8-13 Fixed 2033hex、Attribution Annals +* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug +* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year +* @Version 1.0.3 +* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0] +* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0] +*/ +/* eslint-disable */ +var calendar = { + + /** + * 农历1900-2100的润大小信息表 + * @Array Of Property + * @return Hex + */ + lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909 + 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919 + 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929 + 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939 + 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949 + 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959 + 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969 + 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979 + 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989 + 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999 + 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009 + 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019 + 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029 + 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039 + 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049 + /** Add By JJonline@JJonline.Cn**/ + 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059 + 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069 + 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079 + 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089 + 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099 + 0x0d520], // 2100 + + /** + * 公历每个月份的天数普通表 + * @Array Of Property + * @return Number + */ + solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + + /** + * 天干地支之天干速查表 + * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] + * @return Cn string + */ + Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'], + + /** + * 天干地支之地支速查表 + * @Array Of Property + * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] + * @return Cn string + */ + Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'], + + /** + * 天干地支之地支速查表<=>生肖 + * @Array Of Property + * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] + * @return Cn string + */ + Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'], + + /** + * 24节气速查表 + * @Array Of Property + * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"] + * @return Cn string + */ + solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'], + + /** + * 1900-2100各年的24节气日期速查表 + * @Array Of Property + * @return 0x string For splice + */ + sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', + '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', + 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa', + '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f', + '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', + '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722', + '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722', + '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2', + '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722', + '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35', + '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35', + '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'], + + /** + * 数字转中文速查表 + * @Array Of Property + * @trans ['日','一','二','三','四','五','六','七','八','九','十'] + * @return Cn string + */ + nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'], + + /** + * 日期转农历称呼速查表 + * @Array Of Property + * @trans ['初','十','廿','卅'] + * @return Cn string + */ + nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'], + + /** + * 月份转农历称呼速查表 + * @Array Of Property + * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊'] + * @return Cn string + */ + nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'], + + /** + * 返回农历y年一整年的总天数 + * @param lunar Year + * @return Number + * @eg:var count = calendar.lYearDays(1987) ;//count=387 + */ + lYearDays: function (y) { + var i; var sum = 348 + for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 } + return (sum + this.leapDays(y)) + }, + + /** + * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0 + * @param lunar Year + * @return Number (0-12) + * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6 + */ + leapMonth: function (y) { // 闰字编码 \u95f0 + return (this.lunarInfo[y - 1900] & 0xf) + }, + + /** + * 返回农历y年闰月的天数 若该年没有闰月则返回0 + * @param lunar Year + * @return Number (0、29、30) + * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29 + */ + leapDays: function (y) { + if (this.leapMonth(y)) { + return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29) + } + return (0) + }, + + /** + * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法 + * @param lunar Year + * @return Number (-1、29、30) + * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29 + */ + monthDays: function (y, m) { + if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1 + return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29) + }, + + /** + * 返回公历(!)y年m月的天数 + * @param solar Year + * @return Number (-1、28、29、30、31) + * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30 + */ + solarDays: function (y, m) { + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var ms = m - 1 + if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29 + return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28) + } else { + return (this.solarMonth[ms]) + } + }, + + /** + * 农历年份转换为干支纪年 + * @param lYear 农历年的年份数 + * @return Cn string + */ + toGanZhiYear: function (lYear) { + var ganKey = (lYear - 3) % 10 + var zhiKey = (lYear - 3) % 12 + if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干 + if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支 + return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1] + }, + + /** + * 公历月、日判断所属星座 + * @param cMonth [description] + * @param cDay [description] + * @return Cn string + */ + toAstro: function (cMonth, cDay) { + var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf' + var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22] + return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座 + }, + + /** + * 传入offset偏移量返回干支 + * @param offset 相对甲子的偏移量 + * @return Cn string + */ + toGanZhi: function (offset) { + return this.Gan[offset % 10] + this.Zhi[offset % 12] + }, + + /** + * 传入公历(!)y年获得该年第n个节气的公历日期 + * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起 + * @return day Number + * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春 + */ + getTerm: function (y, n) { + if (y < 1900 || y > 2100) { return -1 } + if (n < 1 || n > 24) { return -1 } + var _table = this.sTermInfo[y - 1900] + var _info = [ + parseInt('0x' + _table.substr(0, 5)).toString(), + parseInt('0x' + _table.substr(5, 5)).toString(), + parseInt('0x' + _table.substr(10, 5)).toString(), + parseInt('0x' + _table.substr(15, 5)).toString(), + parseInt('0x' + _table.substr(20, 5)).toString(), + parseInt('0x' + _table.substr(25, 5)).toString() + ] + var _calday = [ + _info[0].substr(0, 1), + _info[0].substr(1, 2), + _info[0].substr(3, 1), + _info[0].substr(4, 2), + + _info[1].substr(0, 1), + _info[1].substr(1, 2), + _info[1].substr(3, 1), + _info[1].substr(4, 2), + + _info[2].substr(0, 1), + _info[2].substr(1, 2), + _info[2].substr(3, 1), + _info[2].substr(4, 2), + + _info[3].substr(0, 1), + _info[3].substr(1, 2), + _info[3].substr(3, 1), + _info[3].substr(4, 2), + + _info[4].substr(0, 1), + _info[4].substr(1, 2), + _info[4].substr(3, 1), + _info[4].substr(4, 2), + + _info[5].substr(0, 1), + _info[5].substr(1, 2), + _info[5].substr(3, 1), + _info[5].substr(4, 2) + ] + return parseInt(_calday[n - 1]) + }, + + /** + * 传入农历数字月份返回汉语通俗表示法 + * @param lunar month + * @return Cn string + * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月' + */ + toChinaMonth: function (m) { // 月 => \u6708 + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var s = this.nStr3[m - 1] + s += '\u6708'// 加上月字 + return s + }, + + /** + * 传入农历日期数字返回汉字表示法 + * @param lunar day + * @return Cn string + * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一' + */ + toChinaDay: function (d) { // 日 => \u65e5 + var s + switch (d) { + case 10: + s = '\u521d\u5341'; break + case 20: + s = '\u4e8c\u5341'; break + break + case 30: + s = '\u4e09\u5341'; break + break + default : + s = this.nStr2[Math.floor(d / 10)] + s += this.nStr1[d % 10] + } + return (s) + }, + + /** + * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春” + * @param y year + * @return Cn string + * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔' + */ + getAnimal: function (y) { + return this.Animals[(y - 4) % 12] + }, + + /** + * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON + * @param y solar year + * @param m solar month + * @param d solar day + * @return JSON object + * @eg:console.log(calendar.solar2lunar(1987,11,01)); + */ + solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31 + // 年份限定、上限 + if (y < 1900 || y > 2100) { + return -1// undefined转换为数字变为NaN + } + // 公历传参最下限 + if (y == 1900 && m == 1 && d < 31) { + return -1 + } + // 未传参 获得当天 + if (!y) { + var objDate = new Date() + } else { + var objDate = new Date(y, parseInt(m) - 1, d) + } + var i; var leap = 0; var temp = 0 + // 修正ymd参数 + var y = objDate.getFullYear() + var m = objDate.getMonth() + 1 + var d = objDate.getDate() + var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000 + for (i = 1900; i < 2101 && offset > 0; i++) { + temp = this.lYearDays(i) + offset -= temp + } + if (offset < 0) { + offset += temp; i-- + } + + // 是否今天 + var isTodayObj = new Date() + var isToday = false + if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) { + isToday = true + } + // 星期几 + var nWeek = objDate.getDay() + var cWeek = this.nStr1[nWeek] + // 数字表示周几顺应天朝周一开始的惯例 + if (nWeek == 0) { + nWeek = 7 + } + // 农历年 + var year = i + var leap = this.leapMonth(i) // 闰哪个月 + var isLeap = false + + // 效验闰月 + for (i = 1; i < 13 && offset > 0; i++) { + // 闰月 + if (leap > 0 && i == (leap + 1) && isLeap == false) { + --i + isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数 + } else { + temp = this.monthDays(year, i)// 计算农历普通月天数 + } + // 解除闰月 + if (isLeap == true && i == (leap + 1)) { isLeap = false } + offset -= temp + } + // 闰月导致数组下标重叠取反 + if (offset == 0 && leap > 0 && i == leap + 1) { + if (isLeap) { + isLeap = false + } else { + isLeap = true; --i + } + } + if (offset < 0) { + offset += temp; --i + } + // 农历月 + var month = i + // 农历日 + var day = offset + 1 + // 天干地支处理 + var sm = m - 1 + var gzY = this.toGanZhiYear(year) + + // 当月的两个节气 + // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year` + var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始 + var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始 + + // 依据12节气修正干支月 + var gzM = this.toGanZhi((y - 1900) * 12 + m + 11) + if (d >= firstNode) { + gzM = this.toGanZhi((y - 1900) * 12 + m + 12) + } + + // 传入的日期的节气与否 + var isTerm = false + var Term = null + if (firstNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 2] + } + if (secondNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 1] + } + // 日柱 当月一日与 1900/1/1 相差天数 + var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10 + var gzD = this.toGanZhi(dayCyclical + d - 1) + // 该日期所属的星座 + var astro = this.toAstro(m, d) + + return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro } + }, + + /** + * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON + * @param y lunar year + * @param m lunar month + * @param d lunar day + * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可] + * @return JSON object + * @eg:console.log(calendar.lunar2solar(1987,9,10)); + */ + lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1 + var isLeapMonth = !!isLeapMonth + var leapOffset = 0 + var leapMonth = this.leapMonth(y) + var leapDay = this.leapDays(y) + if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 + if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值 + var day = this.monthDays(y, m) + var _day = day + // bugFix 2016-9-25 + // if month is leap, _day use leapDays method + if (isLeapMonth) { + _day = this.leapDays(y, m) + } + if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验 + + // 计算农历的时间差 + var offset = 0 + for (var i = 1900; i < y; i++) { + offset += this.lYearDays(i) + } + var leap = 0; var isAdd = false + for (var i = 1; i < m; i++) { + leap = this.leapMonth(y) + if (!isAdd) { // 处理闰月 + if (leap <= i && leap > 0) { + offset += this.leapDays(y); isAdd = true + } + } + offset += this.monthDays(y, i) + } + // 转换闰月农历 需补充该年闰月的前一个月的时差 + if (isLeapMonth) { offset += day } + // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点) + var stmap = Date.UTC(1900, 1, 30, 0, 0, 0) + var calObj = new Date((offset + d - 31) * 86400000 + stmap) + var cY = calObj.getUTCFullYear() + var cM = calObj.getUTCMonth() + 1 + var cD = calObj.getUTCDate() + + return this.solar2lunar(cY, cM, cD) + } +} + +export default calendar diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json new file mode 100644 index 0000000..fcbd13c --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "ok", + "uni-calender.cancel": "cancel", + "uni-calender.today": "today", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js b/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json new file mode 100644 index 0000000..1ca43de --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "确定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json new file mode 100644 index 0000000..e0fe33b --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "確定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue new file mode 100644 index 0000000..a54135e --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue new file mode 100644 index 0000000..17c958d --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue @@ -0,0 +1,566 @@ + + + + + diff --git a/uni_modules/uni-calendar/components/uni-calendar/util.js b/uni_modules/uni-calendar/components/uni-calendar/util.js new file mode 100644 index 0000000..5ec8a92 --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/util.js @@ -0,0 +1,360 @@ +import CALENDAR from './calendar.js' + +class Calendar { + constructor({ + date, + selected, + startDate, + endDate, + range + } = {}) { + // 当前日期 + this.date = this.getDate(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 范围开始 + this.startDate = startDate + // 范围结束 + this.endDate = endDate + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + // this._getWeek(this.date.fullDate) + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + this.selectDate = this.getDate(date) + this._getWeek(this.selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + /** + * 重置开始日期 + */ + resetSatrtDate(startDate) { + // 范围开始 + this.startDate = startDate + + } + + /** + * 重置结束日期 + */ + resetEndDate(endDate) { + // 范围结束 + this.endDate = endDate + } + + /** + * 获取任意时间 + */ + getDate(date, AddDayCount = 0, str = 'day') { + if (!date) { + date = new Date() + } + if (typeof date !== 'object') { + date = date.replace(/-/g, '/') + } + const dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break + case 'month': + if (dd.getDate() === 31 && AddDayCount>0) { + dd.setDate(dd.getDate() + AddDayCount) + } else { + const preMonth = dd.getMonth() + dd.setMonth(preMonth + AddDayCount) // 获取AddDayCount天后的日期 + const nextMonth = dd.getMonth() + // 处理 pre 切换月份目标月份为2月没有当前日(30 31) 切换错误问题 + if(AddDayCount<0 && preMonth!==0 && nextMonth-preMonth>AddDayCount){ + dd.setMonth(nextMonth+(nextMonth-preMonth+AddDayCount)) + } + // 处理 next 切换月份目标月份为2月没有当前日(30 31) 切换错误问题 + if(AddDayCount>0 && nextMonth-preMonth>AddDayCount){ + dd.setMonth(nextMonth-(nextMonth-preMonth-AddDayCount)) + } + } + break + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break + } + const y = dd.getFullYear() + const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 + const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + return { + fullDate: y + '-' + m + '-' + d, + year: y, + month: m, + date: d, + day: dd.getDay() + } + } + + + /** + * 获取上月剩余天数 + */ + _getLastMonthDays(firstDay, full) { + let dateArr = [] + for (let i = firstDay; i > 0; i--) { + const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() + dateArr.push({ + date: beforeDate, + month: full.month - 1, + lunar: this.getlunar(full.year, full.month - 1, beforeDate), + disable: true + }) + } + return dateArr + } + /** + * 获取本月天数 + */ + _currentMonthDys(dateData, full) { + let dateArr = [] + let fullDate = this.date.fullDate + for (let i = 1; i <= dateData; i++) { + let nowDate = full.year + '-' + (full.month < 10 ? + full.month : full.month) + '-' + (i < 10 ? + '0' + i : i) + // 是否今天 + let isDay = fullDate === nowDate + // 获取打点信息 + let info = this.selected && this.selected.find((item) => { + if (this.dateEqual(nowDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + // let dateCompBefore = this.dateCompare(this.startDate, fullDate) + // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) + disableBefore = this.dateCompare(this.startDate, nowDate) + } + + if (this.endDate) { + // let dateCompAfter = this.dateCompare(fullDate, this.endDate) + // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) + disableAfter = this.dateCompare(nowDate, this.endDate) + } + let multiples = this.multipleStatus.data + let checked = false + let multiplesStatus = -1 + if (this.range) { + if (multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, nowDate) + }) + } + if (multiplesStatus !== -1) { + checked = true + } + } + let data = { + fullDate: nowDate, + year: full.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate), + afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate), + month: full.month, + lunar: this.getlunar(full.year, full.month, i), + disable: !(disableBefore && disableAfter), + isDay + } + if (info) { + data.extraInfo = info + } + + dateArr.push(data) + } + return dateArr + } + /** + * 获取下月天数 + */ + _getNextMonthDays(surplus, full) { + let dateArr = [] + for (let i = 1; i < surplus + 1; i++) { + dateArr.push({ + date: i, + month: Number(full.month) + 1, + lunar: this.getlunar(full.year, Number(full.month) + 1, i), + disable: true + }) + } + return dateArr + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) + return dateInfo + } + + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + if (startDate <= endDate) { + return true + } else { + return false + } + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + // 计算截止时间 + before = new Date(before.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + after = new Date(after.replace('-', '/').replace('-', '/')) + if (before.getTime() - after.getTime() === 0) { + return true + } else { + return false + } + } + + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDate(new Date(parseInt(k))).fullDate) + } + return arr + } + /** + * 计算阴历日期显示 + */ + getlunar(year, month, date) { + return CALENDAR.solar2lunar(year, month, date) + } + /** + * 设置打点 + */ + setSelectInfo(data, value) { + this.selected = value + this._getWeek(data) + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + + if (!this.range) return + if (before && after) { + this.multipleStatus.before = '' + this.multipleStatus.after = '' + this.multipleStatus.data = [] + } else { + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + } + this._getWeek(fullDate) + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + _getWeek(dateData) { + const { + year, + month + } = this.getDate(dateData) + let firstDay = new Date(year, month - 1, 1).getDay() + let currentDay = new Date(year, month, 0).getDate() + let dates = { + lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 + currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 + nextMonthDays: [], // 下个月开始几天 + weeks: [] + } + let canlender = [] + const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) + dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + let weeks = {} + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 === 0) { + weeks[parseInt(i / 7)] = new Array(7) + } + weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + this.canlender = canlender + this.weeks = weeks + } + + //静态方法 + // static init(date) { + // if (!this.instance) { + // this.instance = new Calendar(date); + // } + // return this.instance; + // } +} + + +export default Calendar diff --git a/uni_modules/uni-calendar/package.json b/uni_modules/uni-calendar/package.json new file mode 100644 index 0000000..fad841f --- /dev/null +++ b/uni_modules/uni-calendar/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-calendar", + "displayName": "uni-calendar 日历", + "version": "1.4.10", + "description": "日历组件", + "keywords": [ + "uni-ui", + "uniui", + "日历", + "", + "打卡", + "日历选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-calendar/readme.md b/uni_modules/uni-calendar/readme.md new file mode 100644 index 0000000..4e1748c --- /dev/null +++ b/uni_modules/uni-calendar/readme.md @@ -0,0 +1,103 @@ + + +## Calendar 日历 +> **组件名:uni-calendar** +> 代码块: `uCalendar` + + +日历组件 + +> **注意事项** +> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 +> - 本组件农历转换使用的js是 [@1900-2100区间内的公历、农历互转](https://github.com/jjonline/calendar.js) +> - 仅支持自定义组件模式 +> - `date`属性传入的应该是一个 String ,如: 2019-06-27 ,而不是 new Date() +> - 通过 `insert` 属性来确定当前的事件是 @change 还是 @confirm 。理应合并为一个事件,但是为了区分模式,现使用两个事件,这里需要注意 +> - 弹窗模式下无法阻止后面的元素滚动,如有需要阻止,请在弹窗弹出后,手动设置滚动元素为不可滚动 + + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + + +``` + +### 通过方法打开日历 + +需要设置 `insert` 为 `false` + +```html + + + + +``` + +```javascript + +export default { + data() { + return {}; + }, + methods: { + open(){ + this.$refs.calendar.open(); + }, + confirm(e) { + console.log(e); + } + } +}; + +``` + + +## API + +### Calendar Props + +| 属性名 | 类型 | 默认值| 说明 | +| - | - | - | - | +| date | String |- | 自定义当前时间,默认为今天 | +| lunar | Boolean | false | 显示农历 | +| startDate | String |- | 日期选择范围-开始日期 | +| endDate | String |- | 日期选择范围-结束日期 | +| range | Boolean | false | 范围选择 | +| insert | Boolean | false | 插入模式,可选值,ture:插入模式;false:弹窗模式;默认为插入模式 | +|clearDate |Boolean |true |弹窗模式是否清空上次选择内容 | +| selected | Array |- | 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}] | +|showMonth | Boolean | true | 是否显示月份为背景 | + +### Calendar Events + +| 事件名 | 说明 |返回值| +| - | - | - | +| open | 弹出日历组件,`insert :false` 时生效|- | + + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar](https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar) diff --git a/uni_modules/uni-card/changelog.md b/uni_modules/uni-card/changelog.md new file mode 100644 index 0000000..c3cd8c4 --- /dev/null +++ b/uni_modules/uni-card/changelog.md @@ -0,0 +1,26 @@ +## 1.3.1(2021-12-20) +- 修复 在vue页面下略缩图显示不正常的bug +## 1.3.0(2021-11-19) +- 重构插槽的用法 ,header 替换为 title +- 新增 actions 插槽 +- 新增 cover 封面图属性和插槽 +- 新增 padding 内容默认内边距离 +- 新增 margin 卡片默认外边距离 +- 新增 spacing 卡片默认内边距 +- 新增 shadow 卡片阴影属性 +- 取消 mode 属性,可使用组合插槽代替 +- 取消 note 属性 ,使用actions插槽代替 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-card](https://uniapp.dcloud.io/component/uniui/uni-card) +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-07-01) +- 优化 图文卡片无图片加载时,提供占位图标 +- 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持) +- 修复 thumbnail 不存在仍然占位的 bug +## 1.1.7(2021-05-12) +- 新增 组件示例地址 +## 1.1.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-card/components/uni-card/uni-card.vue b/uni_modules/uni-card/components/uni-card/uni-card.vue new file mode 100644 index 0000000..88d8342 --- /dev/null +++ b/uni_modules/uni-card/components/uni-card/uni-card.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/uni_modules/uni-card/package.json b/uni_modules/uni-card/package.json new file mode 100644 index 0000000..f16224d --- /dev/null +++ b/uni_modules/uni-card/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-card", + "displayName": "uni-card 卡片", + "version": "1.3.1", + "description": "Card 组件,提供常见的卡片样式。", + "keywords": [ + "uni-ui", + "uniui", + "card", + "", + "卡片" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-card/readme.md b/uni_modules/uni-card/readme.md new file mode 100644 index 0000000..7434e71 --- /dev/null +++ b/uni_modules/uni-card/readme.md @@ -0,0 +1,12 @@ + + +## Card 卡片 +> **组件名:uni-card** +> 代码块: `uCard` + +卡片视图组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-card) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-collapse/changelog.md b/uni_modules/uni-collapse/changelog.md new file mode 100644 index 0000000..292e4c7 --- /dev/null +++ b/uni_modules/uni-collapse/changelog.md @@ -0,0 +1,36 @@ +## 1.4.3(2022-01-25) +- 修复 初始化的时候 ,open 属性失效的bug +## 1.4.2(2022-01-21) +- 修复 微信小程序resize后组件收起的bug +## 1.4.1(2021-11-22) +- 修复 vue3中个别scss变量无法找到的问题 +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-collapse](https://uniapp.dcloud.io/component/uniui/uni-collapse) +## 1.3.3(2021-08-17) +- 优化 show-arrow 属性默认为true +## 1.3.2(2021-08-17) +- 新增 show-arrow 属性,控制是否显示右侧箭头 +## 1.3.1(2021-07-30) +- 优化 vue3下小程序事件警告的问题 +## 1.3.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.2(2021-07-21) +- 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug +## 1.2.1(2021-07-21) +- 优化 组件示例 +## 1.2.0(2021-07-21) +- 新增 组件折叠动画 +- 新增 value\v-model 属性 ,动态修改面板折叠状态 +- 新增 title 插槽 ,可定义面板标题 +- 新增 border 属性 ,显示隐藏面板内容分隔线 +- 新增 title-border 属性 ,显示隐藏面板标题分隔线 +- 修复 resize 方法失效的Bug +- 修复 change 事件返回参数不正确的Bug +- 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法 +## 1.1.7(2021-05-12) +- 新增 组件示例地址 +## 1.1.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.1.5(2021-02-05) +- 调整为uni_modules目录规范 \ No newline at end of file diff --git a/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue new file mode 100644 index 0000000..d62a6a7 --- /dev/null +++ b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue @@ -0,0 +1,402 @@ + + + + + diff --git a/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue new file mode 100644 index 0000000..384c39a --- /dev/null +++ b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue @@ -0,0 +1,147 @@ + + + diff --git a/uni_modules/uni-collapse/package.json b/uni_modules/uni-collapse/package.json new file mode 100644 index 0000000..65349cf --- /dev/null +++ b/uni_modules/uni-collapse/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-collapse", + "displayName": "uni-collapse 折叠面板", + "version": "1.4.3", + "description": "Collapse 组件,可以折叠 / 展开的内容区域。", + "keywords": [ + "uni-ui", + "折叠", + "折叠面板", + "手风琴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-collapse/readme.md b/uni_modules/uni-collapse/readme.md new file mode 100644 index 0000000..bc758eb --- /dev/null +++ b/uni_modules/uni-collapse/readme.md @@ -0,0 +1,12 @@ + + +## Collapse 折叠面板 +> **组件名:uni-collapse** +> 代码块: `uCollapse` +> 关联组件:`uni-collapse-item`、`uni-icons`。 + + +折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-collapse) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-combox/changelog.md b/uni_modules/uni-combox/changelog.md new file mode 100644 index 0000000..23c2748 --- /dev/null +++ b/uni_modules/uni-combox/changelog.md @@ -0,0 +1,15 @@ +## 1.0.1(2021-11-23) +- 优化 label、label-width 属性 +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-combox](https://uniapp.dcloud.io/component/uniui/uni-combox) +## 0.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.6(2021-05-12) +- 新增 组件示例地址 +## 0.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 0.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-combox/components/uni-combox/uni-combox.vue b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue new file mode 100644 index 0000000..83454e5 --- /dev/null +++ b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/uni_modules/uni-combox/package.json b/uni_modules/uni-combox/package.json new file mode 100644 index 0000000..4a05c3f --- /dev/null +++ b/uni_modules/uni-combox/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-combox", + "displayName": "uni-combox 组合框", + "version": "1.0.1", + "description": "可以选择也可以输入的表单项 ", + "keywords": [ + "uni-ui", + "uniui", + "combox", + "组合框", + "select" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-combox/readme.md b/uni_modules/uni-combox/readme.md new file mode 100644 index 0000000..ffa2cc8 --- /dev/null +++ b/uni_modules/uni-combox/readme.md @@ -0,0 +1,11 @@ + + +## Combox 组合框 +> **组件名:uni-combox** +> 代码块: `uCombox` + + +组合框组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-combox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-countdown/changelog.md b/uni_modules/uni-countdown/changelog.md new file mode 100644 index 0000000..f25beef --- /dev/null +++ b/uni_modules/uni-countdown/changelog.md @@ -0,0 +1,24 @@ +## 1.2.2(2022-01-19) +- 修复 在微信小程序中样式不生效的bug +## 1.2.1(2022-01-18) +- 新增 update 方法 ,在动态更新时间后,刷新组件 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-countdown](https://uniapp.dcloud.io/component/uniui/uni-countdown) +## 1.1.3(2021-10-18) +- 重构 +- 新增 font-size 支持自定义字体大小 +## 1.1.2(2021-08-24) +- 新增 支持国际化 +## 1.1.1(2021-07-30) +- 优化 vue3下小程序事件警告的问题 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-06-18) +- 修复 uni-countdown 重复赋值跳两秒的 bug +## 1.0.4(2021-05-12) +- 新增 组件示例地址 +## 1.0.3(2021-05-08) +- 修复 uni-countdown 不能控制倒计时的 bug +## 1.0.2(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json new file mode 100644 index 0000000..06309cb --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "day", + "uni-countdown.h": "h", + "uni-countdown.m": "m", + "uni-countdown.s": "s" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json new file mode 100644 index 0000000..358cdd1 --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "天", + "uni-countdown.h": "时", + "uni-countdown.m": "分", + "uni-countdown.s": "秒" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json new file mode 100644 index 0000000..e5a63de --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "天", + "uni-countdown.h": "時", + "uni-countdown.m": "分", + "uni-countdown.s": "秒" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue new file mode 100644 index 0000000..65a1216 --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue @@ -0,0 +1,267 @@ + + + diff --git a/uni_modules/uni-countdown/package.json b/uni_modules/uni-countdown/package.json new file mode 100644 index 0000000..70e99ee --- /dev/null +++ b/uni_modules/uni-countdown/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-countdown", + "displayName": "uni-countdown 倒计时", + "version": "1.2.2", + "description": "CountDown 倒计时组件", + "keywords": [ + "uni-ui", + "uniui", + "countdown", + "倒计时" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-countdown/readme.md b/uni_modules/uni-countdown/readme.md new file mode 100644 index 0000000..4bcb1aa --- /dev/null +++ b/uni_modules/uni-countdown/readme.md @@ -0,0 +1,10 @@ + + +## CountDown 倒计时 +> **组件名:uni-countdown** +> 代码块: `uCountDown` + +倒计时组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-countdown) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-checkbox/changelog.md b/uni_modules/uni-data-checkbox/changelog.md new file mode 100644 index 0000000..c7a468a --- /dev/null +++ b/uni_modules/uni-data-checkbox/changelog.md @@ -0,0 +1,45 @@ +## 1.0.3(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 1.0.2(2022-06-30) +- 优化 在 uni-forms 中的依赖注入方式 +## 1.0.1(2022-02-07) +- 修复 multiple 为 true 时,v-model 的值为 null 报错的 bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-checkbox](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) +## 0.2.5(2021-08-23) +- 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题 +## 0.2.4(2021-08-17) +- 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +## 0.2.3(2021-08-11) +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +## 0.2.2(2021-07-30) +- 优化 在uni-forms组件,与label不对齐的问题 +## 0.2.1(2021-07-27) +- 修复 单选默认值为0不能选中的Bug +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.11(2021-07-06) +- 优化 删除无用日志 +## 0.1.10(2021-07-05) +- 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题 +## 0.1.9(2021-07-05) +- 修复 nvue 黑框样式问题 +## 0.1.8(2021-06-28) +- 修复 selectedTextColor 属性不生效的Bug +## 0.1.7(2021-06-02) +- 新增 map 属性,可以方便映射text/value属性 +## 0.1.6(2021-05-26) +- 修复 不关联服务空间的情况下组件报错的Bug +## 0.1.5(2021-05-12) +- 新增 组件示例地址 +## 0.1.4(2021-04-09) +- 修复 nvue 下无法选中的问题 +## 0.1.3(2021-03-22) +- 新增 disabled属性 +## 0.1.2(2021-02-24) +- 优化 默认颜色显示 +## 0.1.1(2021-02-24) +- 新增 支持nvue +## 0.1.0(2021-02-18) +- “暂无数据”显示居中 diff --git a/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue b/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue new file mode 100644 index 0000000..3c75d9f --- /dev/null +++ b/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue @@ -0,0 +1,821 @@ + + + + + diff --git a/uni_modules/uni-data-checkbox/package.json b/uni_modules/uni-data-checkbox/package.json new file mode 100644 index 0000000..113c350 --- /dev/null +++ b/uni_modules/uni-data-checkbox/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-data-checkbox", + "displayName": "uni-data-checkbox 数据选择器", + "version": "1.0.3", + "description": "通过数据驱动的单选框和复选框", + "keywords": [ + "uni-ui", + "checkbox", + "单选", + "多选", + "单选多选" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.1" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-load-more","uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-checkbox/readme.md b/uni_modules/uni-data-checkbox/readme.md new file mode 100644 index 0000000..6eb253d --- /dev/null +++ b/uni_modules/uni-data-checkbox/readme.md @@ -0,0 +1,18 @@ + + +## DataCheckbox 数据驱动的单选复选框 +> **组件名:uni-data-checkbox** +> 代码块: `uDataCheckbox` + + +本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括: + +1. 数据绑定型组件:给本组件绑定一个data,会自动渲染一组候选内容。再以往,开发者需要编写不少代码实现类似功能 +2. 自动的表单校验:组件绑定了data,且符合[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)组件的表单校验规范,搭配使用会自动实现表单校验 +3. 本组件合并了单选多选 +4. 本组件有若干风格选择,如普通的单选多选框、并列button风格、tag风格。开发者可以快速选择需要的风格。但作为一个封装组件,样式代码虽然不用自己写了,却会牺牲一定的样式自定义性 + +在uniCloud开发中,`DB Schema`中配置了enum枚举等类型后,在web控制台的[自动生成表单](https://uniapp.dcloud.io/uniCloud/schema?id=autocode)功能中,会自动生成``uni-data-checkbox``组件并绑定好data + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-picker/changelog.md b/uni_modules/uni-data-picker/changelog.md new file mode 100644 index 0000000..1dd79f7 --- /dev/null +++ b/uni_modules/uni-data-picker/changelog.md @@ -0,0 +1,75 @@ +## 1.1.2(2023-04-11) +- 修复 更改 modelValue 报错的 bug +- 修复 v-for 未使用 key 值控制台 warning +## 1.1.1(2023-02-21) +- 修复代码合并时引发 value 属性为空时不渲染数据的问题 +## 1.1.0(2023-02-15) +- 修复 localdata 不支持动态更新的bug +## 1.0.9(2023-02-15) +- 修复 localdata 不支持动态更新的bug +## 1.0.8(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 1.0.7(2022-07-06) +- 优化 pc端图标位置不正确的问题 +## 1.0.6(2022-07-05) +- 优化 显示样式 +## 1.0.5(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.0.4(2022-04-19) +- 修复 字节小程序 本地数据无法选择下一级的Bug +## 1.0.3(2022-02-25) +- 修复 nvue 不支持的 v-show 的 bug +## 1.0.2(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式 +## 1.0.1(2021-11-23) +- 修复 由上个版本引发的map、v-model等属性不生效的bug +## 1.0.0(2021-11-19) +- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-picker](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +## 0.4.9(2021-10-28) +- 修复 VUE2 v-model 概率无效的 bug +## 0.4.8(2021-10-27) +- 修复 v-model 概率无效的 bug +## 0.4.7(2021-10-25) +- 新增 属性 spaceInfo 服务空间配置 HBuilderX 3.2.11+ +- 修复 树型 uniCloud 数据类型为 int 时报错的 bug +## 0.4.6(2021-10-19) +- 修复 非 VUE3 v-model 为 0 时无法选中的 bug +## 0.4.5(2021-09-26) +- 新增 清除已选项的功能(通过 clearIcon 属性配置是否显示按钮),同时提供 clear 方法以供调用,二者等效 +- 修复 readonly 为 true 时报错的 bug +## 0.4.4(2021-09-26) +- 修复 上一版本造成的 map 属性失效的 bug +- 新增 ellipsis 属性,支持配置 tab 选项长度过长时是否自动省略 +## 0.4.3(2021-09-24) +- 修复 某些情况下级联未触发的 bug +## 0.4.2(2021-09-23) +- 新增 提供 show 和 hide 方法,开发者可以通过 ref 调用 +- 新增 选项内容过长自动添加省略号 +## 0.4.1(2021-09-15) +- 新增 map 属性 字段映射,将 text/value 映射到数据中的其他字段 +## 0.4.0(2021-07-13) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.3.5(2021-06-04) +- 修复 无法加载云端数据的问题 +## 0.3.4(2021-05-28) +- 修复 v-model 无效问题 +- 修复 loaddata 为空数据组时加载时间过长问题 +- 修复 上个版本引出的本地数据无法选择带有 children 的 2 级节点 +## 0.3.3(2021-05-12) +- 新增 组件示例地址 +## 0.3.2(2021-04-22) +- 修复 非树形数据有 where 属性查询报错的问题 +## 0.3.1(2021-04-15) +- 修复 本地数据概率无法回显时问题 +## 0.3.0(2021-04-07) +- 新增 支持云端非树形表结构数据 +- 修复 根节点 parent_field 字段等于 null 时选择界面错乱问题 +## 0.2.0(2021-03-15) +- 修复 nodeclick、popupopened、popupclosed 事件无法触发的问题 +## 0.1.9(2021-03-09) +- 修复 微信小程序某些情况下无法选择的问题 +## 0.1.8(2021-02-05) +- 优化 部分样式在 nvue 上的兼容表现 +## 0.1.7(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue new file mode 100644 index 0000000..179a4e0 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue @@ -0,0 +1,551 @@ + + + + + diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js new file mode 100644 index 0000000..cfae22a --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js @@ -0,0 +1,622 @@ +export default { + props: { + localdata: { + type: [Array, Object], + default () { + return [] + } + }, + spaceInfo: { + type: Object, + default () { + return {} + } + }, + collection: { + type: String, + default: '' + }, + action: { + type: String, + default: '' + }, + field: { + type: String, + default: '' + }, + orderby: { + type: String, + default: '' + }, + where: { + type: [String, Object], + default: '' + }, + pageData: { + type: String, + default: 'add' + }, + pageCurrent: { + type: Number, + default: 1 + }, + pageSize: { + type: Number, + default: 500 + }, + getcount: { + type: [Boolean, String], + default: false + }, + getone: { + type: [Boolean, String], + default: false + }, + gettree: { + type: [Boolean, String], + default: false + }, + manual: { + type: Boolean, + default: false + }, + value: { + type: [Array, String, Number], + default () { + return [] + } + }, + modelValue: { + type: [Array, String, Number], + default () { + return [] + } + }, + preload: { + type: Boolean, + default: false + }, + stepSearh: { + type: Boolean, + default: true + }, + selfField: { + type: String, + default: '' + }, + parentField: { + type: String, + default: '' + }, + multiple: { + type: Boolean, + default: false + }, + map: { + type: Object, + default () { + return { + text: "text", + value: "value" + } + } + } + }, + data() { + return { + loading: false, + errorMessage: '', + loadMore: { + contentdown: '', + contentrefresh: '', + contentnomore: '' + }, + dataList: [], + selected: [], + selectedIndex: 0, + page: { + current: this.pageCurrent, + size: this.pageSize, + count: 0 + } + } + }, + computed: { + isLocalData() { + return !this.collection.length; + }, + isCloudData() { + return this.collection.length > 0; + }, + isCloudDataList() { + return (this.isCloudData && (!this.parentField && !this.selfField)); + }, + isCloudDataTree() { + return (this.isCloudData && this.parentField && this.selfField); + }, + dataValue() { + let isModelValue = Array.isArray(this.modelValue) ? (this.modelValue.length > 0) : (this.modelValue !== null || + this.modelValue !== undefined); + return isModelValue ? this.modelValue : this.value; + }, + hasValue() { + if (typeof this.dataValue === 'number') { + return true + } + return (this.dataValue != null) && (this.dataValue.length > 0) + } + }, + created() { + this.$watch(() => { + var al = []; + ['pageCurrent', + 'pageSize', + 'spaceInfo', + 'value', + 'modelValue', + 'localdata', + 'collection', + 'action', + 'field', + 'orderby', + 'where', + 'getont', + 'getcount', + 'gettree' + ].forEach(key => { + al.push(this[key]) + }); + return al + }, (newValue, oldValue) => { + let needReset = false + for (let i = 2; i < newValue.length; i++) { + if (newValue[i] != oldValue[i]) { + needReset = true + break + } + } + if (newValue[0] != oldValue[0]) { + this.page.current = this.pageCurrent + } + this.page.size = this.pageSize + + this.onPropsChange() + }) + this._treeData = [] + }, + methods: { + onPropsChange() { + this._treeData = []; + }, + + // 填充 pickview 数据 + async loadData() { + if (this.isLocalData) { + this.loadLocalData(); + } else if (this.isCloudDataList) { + this.loadCloudDataList(); + } else if (this.isCloudDataTree) { + this.loadCloudDataTree(); + } + }, + + // 加载本地数据 + async loadLocalData() { + this._treeData = []; + this._extractTree(this.localdata, this._treeData); + + let inputValue = this.dataValue; + if (inputValue === undefined) { + return; + } + + if (Array.isArray(inputValue)) { + inputValue = inputValue[inputValue.length - 1]; + if (typeof inputValue === 'object' && inputValue[this.map.value]) { + inputValue = inputValue[this.map.value]; + } + } + + this.selected = this._findNodePath(inputValue, this.localdata); + }, + + // 加载 Cloud 数据 (单列) + async loadCloudDataList() { + if (this.loading) { + return; + } + this.loading = true; + + try { + let response = await this.getCommand(); + let responseData = response.result.data; + + this._treeData = responseData; + + this._updateBindData(); + this._updateSelected(); + + this.onDataChange(); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 加载 Cloud 数据 (树形) + async loadCloudDataTree() { + if (this.loading) { + return; + } + this.loading = true; + + try { + let commandOptions = { + field: this._cloudDataPostField(), + where: this._cloudDataTreeWhere() + }; + if (this.gettree) { + commandOptions.startwith = `${this.selfField}=='${this.dataValue}'`; + } + + let response = await this.getCommand(commandOptions); + let responseData = response.result.data; + + this._treeData = responseData; + this._updateBindData(); + this._updateSelected(); + + this.onDataChange(); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 加载 Cloud 数据 (节点) + async loadCloudDataNode(callback) { + if (this.loading) { + return; + } + this.loading = true; + + try { + let commandOptions = { + field: this._cloudDataPostField(), + where: this._cloudDataNodeWhere() + }; + + let response = await this.getCommand(commandOptions); + let responseData = response.result.data; + + callback(responseData); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 回显 Cloud 数据 + getCloudDataValue() { + if (this.isCloudDataList) { + return this.getCloudDataListValue(); + } + + if (this.isCloudDataTree) { + return this.getCloudDataTreeValue(); + } + }, + + // 回显 Cloud 数据 (单列) + getCloudDataListValue() { + // 根据 field's as value标识匹配 where 条件 + let where = []; + let whereField = this._getForeignKeyByField(); + if (whereField) { + where.push(`${whereField} == '${this.dataValue}'`) + } + + where = where.join(' || '); + + if (this.where) { + where = `(${this.where}) && (${where})` + } + + return this.getCommand({ + field: this._cloudDataPostField(), + where + }).then((res) => { + this.selected = res.result.data; + return res.result.data; + }); + }, + + // 回显 Cloud 数据 (树形) + getCloudDataTreeValue() { + return this.getCommand({ + field: this._cloudDataPostField(), + getTreePath: { + startWith: `${this.selfField}=='${this.dataValue}'` + } + }).then((res) => { + let treePath = []; + this._extractTreePath(res.result.data, treePath); + this.selected = treePath; + return treePath; + }); + }, + + getCommand(options = {}) { + /* eslint-disable no-undef */ + let db = uniCloud.database(this.spaceInfo) + + const action = options.action || this.action + if (action) { + db = db.action(action) + } + + const collection = options.collection || this.collection + db = db.collection(collection) + + const where = options.where || this.where + if (!(!where || !Object.keys(where).length)) { + db = db.where(where) + } + + const field = options.field || this.field + if (field) { + db = db.field(field) + } + + const orderby = options.orderby || this.orderby + if (orderby) { + db = db.orderBy(orderby) + } + + const current = options.pageCurrent !== undefined ? options.pageCurrent : this.page.current + const size = options.pageSize !== undefined ? options.pageSize : this.page.size + const getCount = options.getcount !== undefined ? options.getcount : this.getcount + const getTree = options.gettree !== undefined ? options.gettree : this.gettree + + const getOptions = { + getCount, + getTree + } + if (options.getTreePath) { + getOptions.getTreePath = options.getTreePath + } + + db = db.skip(size * (current - 1)).limit(size).get(getOptions) + + return db + }, + + _cloudDataPostField() { + let fields = [this.field]; + if (this.parentField) { + fields.push(`${this.parentField} as parent_value`); + } + return fields.join(','); + }, + + _cloudDataTreeWhere() { + let result = [] + let selected = this.selected + let parentField = this.parentField + if (parentField) { + result.push(`${parentField} == null || ${parentField} == ""`) + } + if (selected.length) { + for (var i = 0; i < selected.length - 1; i++) { + result.push(`${parentField} == '${selected[i].value}'`) + } + } + + let where = [] + if (this.where) { + where.push(`(${this.where})`) + } + + if (result.length) { + where.push(`(${result.join(' || ')})`) + } + + return where.join(' && ') + }, + + _cloudDataNodeWhere() { + let where = [] + let selected = this.selected; + if (selected.length) { + where.push(`${this.parentField} == '${selected[selected.length - 1].value}'`); + } + + where = where.join(' || '); + + if (this.where) { + return `(${this.where}) && (${where})` + } + + return where + }, + + _getWhereByForeignKey() { + let result = [] + let whereField = this._getForeignKeyByField(); + if (whereField) { + result.push(`${whereField} == '${this.dataValue}'`) + } + + if (this.where) { + return `(${this.where}) && (${result.join(' || ')})` + } + + return result.join(' || ') + }, + + _getForeignKeyByField() { + let fields = this.field.split(','); + let whereField = null; + for (let i = 0; i < fields.length; i++) { + const items = fields[i].split('as'); + if (items.length < 2) { + continue; + } + if (items[1].trim() === 'value') { + whereField = items[0].trim(); + break; + } + } + return whereField; + }, + + _updateBindData(node) { + const { + dataList, + hasNodes + } = this._filterData(this._treeData, this.selected) + + let isleaf = this._stepSearh === false && !hasNodes + + if (node) { + node.isleaf = isleaf + } + + this.dataList = dataList + this.selectedIndex = dataList.length - 1 + + if (!isleaf && this.selected.length < dataList.length) { + this.selected.push({ + value: null, + text: "请选择" + }) + } + + return { + isleaf, + hasNodes + } + }, + + _updateSelected() { + let dl = this.dataList + let sl = this.selected + let textField = this.map.text + let valueField = this.map.value + for (let i = 0; i < sl.length; i++) { + let value = sl[i].value + let dl2 = dl[i] + for (let j = 0; j < dl2.length; j++) { + let item2 = dl2[j] + if (item2[valueField] === value) { + sl[i].text = item2[textField] + break + } + } + } + }, + + _filterData(data, paths) { + let dataList = [] + let hasNodes = true + + dataList.push(data.filter((item) => { + return (item.parent_value === null || item.parent_value === undefined || item.parent_value === '') + })) + for (let i = 0; i < paths.length; i++) { + let value = paths[i].value + let nodes = data.filter((item) => { + return item.parent_value === value + }) + + if (nodes.length) { + dataList.push(nodes) + } else { + hasNodes = false + } + } + + return { + dataList, + hasNodes + } + }, + + _extractTree(nodes, result, parent_value) { + let list = result || [] + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + if (parent_value !== null && parent_value !== undefined && parent_value !== '') { + child.parent_value = parent_value + } + result.push(child) + + let children = node.children + if (children) { + this._extractTree(children, result, node[valueField]) + } + } + }, + + _extractTreePath(nodes, result) { + let list = result || [] + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + result.push(child) + + let children = node.children + if (children) { + this._extractTreePath(children, result) + } + } + }, + + _findNodePath(key, nodes, path = []) { + let textField = this.map.text + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + let children = node.children + let text = node[textField] + let value = node[valueField] + + path.push({ + value, + text + }) + + if (value === key) { + return path + } + + if (children) { + const p = this._findNodePath(key, children, path) + if (p.length) { + return p + } + } + + path.pop() + } + return [] + } + } +} diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue new file mode 100644 index 0000000..6ebced9 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/uni_modules/uni-data-picker/package.json b/uni_modules/uni-data-picker/package.json new file mode 100644 index 0000000..038f9ce --- /dev/null +++ b/uni_modules/uni-data-picker/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-data-picker", + "displayName": "uni-data-picker 数据驱动的picker选择器", + "version": "1.1.2", + "description": "单列、多列级联选择器,常用于省市区城市选择、公司部门选择、多级分类等场景", + "keywords": [ + "uni-ui", + "uniui", + "picker", + "级联", + "省市区", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-load-more", + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-data-picker/readme.md b/uni_modules/uni-data-picker/readme.md new file mode 100644 index 0000000..6cda224 --- /dev/null +++ b/uni_modules/uni-data-picker/readme.md @@ -0,0 +1,22 @@ +## DataPicker 级联选择 +> **组件名:uni-data-picker** +> 代码块: `uDataPicker` +> 关联组件:`uni-data-pickerview`、`uni-load-more`。 + + +`` 是一个选择类[datacom组件](https://uniapp.dcloud.net.cn/component/datacom)。 + +支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。 + +候选数据支持一次性加载完毕,也支持懒加载,比如示例图中,选择了“北京”后,动态加载北京的区县数据。 + +`` 组件尤其适用于地址选择、分类选择等选择类。 + +`` 支持本地数据、云端静态数据(json),uniCloud云数据库数据。 + +`` 可以通过JQL直连uniCloud云数据库,配套[DB Schema](https://uniapp.dcloud.net.cn/uniCloud/schema),可在schema2code中自动生成前端页面,还支持服务器端校验。 + +在uniCloud数据表中新建表“uni-id-address”和“opendb-city-china”,这2个表的schema自带foreignKey关联。在“uni-id-address”表的表结构页面使用schema2code生成前端页面,会自动生成地址管理的维护页面,自动从“opendb-city-china”表包含的中国所有省市区信息里选择地址。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-select/changelog.md b/uni_modules/uni-data-select/changelog.md new file mode 100644 index 0000000..eb3d1ce --- /dev/null +++ b/uni_modules/uni-data-select/changelog.md @@ -0,0 +1,35 @@ +## 1.0.6(2023-04-12) +- 修复 微信小程序点击时会改变背景颜色的 bug +## 1.0.5(2023-02-03) +- 修复 禁用时会显示清空按钮 +## 1.0.4(2023-02-02) +- 优化 查询条件短期内多次变更只查询最后一次变更后的结果 +- 调整 内部缓存键名调整为 uni-data-select-lastSelectedValue +## 1.0.3(2023-01-16) +- 修复 不关联服务空间报错的问题 +## 1.0.2(2023-01-14) +- 新增 属性 `format` 可用于格式化显示选项内容 +## 1.0.1(2022-12-06) +- 修复 当where变化时,数据不会自动更新的问题 +## 0.1.9(2022-09-05) +- 修复 微信小程序下拉框出现后选择会点击到蒙板后面的输入框 +## 0.1.8(2022-08-29) +- 修复 点击的位置不准确 +## 0.1.7(2022-08-12) +- 新增 支持 disabled 属性 +## 0.1.6(2022-07-06) +- 修复 pc端宽度异常的bug +## 0.1.5 +- 修复 pc端宽度异常的bug +## 0.1.4(2022-07-05) +- 优化 显示样式 +## 0.1.3(2022-06-02) +- 修复 localdata 赋值不生效的 bug +- 新增 支持 uni.scss 修改颜色 +- 新增 支持选项禁用(数据选项设置 disabled: true 即禁用) +## 0.1.2(2022-05-08) +- 修复 当 value 为 0 时选择不生效的 bug +## 0.1.1(2022-05-07) +- 新增 记住上次的选项(仅 collection 存在时有效) +## 0.1.0(2022-04-22) +- 初始化 diff --git a/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue b/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue new file mode 100644 index 0000000..9b32348 --- /dev/null +++ b/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue @@ -0,0 +1,517 @@ + + + + + diff --git a/uni_modules/uni-data-select/package.json b/uni_modules/uni-data-select/package.json new file mode 100644 index 0000000..0187429 --- /dev/null +++ b/uni_modules/uni-data-select/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-data-select", + "displayName": "uni-data-select 下拉框选择器", + "version": "1.0.6", + "description": "通过数据驱动的下拉框选择器", + "keywords": [ + "uni-ui", + "select", + "uni-data-select", + "下拉框", + "下拉选" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.1" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-load-more"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "u", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-select/readme.md b/uni_modules/uni-data-select/readme.md new file mode 100644 index 0000000..eb58de3 --- /dev/null +++ b/uni_modules/uni-data-select/readme.md @@ -0,0 +1,8 @@ +## DataSelect 下拉框选择器 +> **组件名:uni-data-select** +> 代码块: `uDataSelect` + +当选项过多时,使用下拉菜单展示并选择内容 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-select) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-dateformat/changelog.md b/uni_modules/uni-dateformat/changelog.md new file mode 100644 index 0000000..d551d7b --- /dev/null +++ b/uni_modules/uni-dateformat/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-dateformat](https://uniapp.dcloud.io/component/uniui/uni-dateformat) +## 0.0.5(2021-07-08) +- 调整 默认时间不再是当前时间,而是显示'-'字符 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 +- 修复 iOS 平台日期格式化出错的问题 diff --git a/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js b/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js new file mode 100644 index 0000000..e00d559 --- /dev/null +++ b/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js @@ -0,0 +1,200 @@ +// yyyy-MM-dd hh:mm:ss.SSS 所有支持的类型 +function pad(str, length = 2) { + str += '' + while (str.length < length) { + str = '0' + str + } + return str.slice(-length) +} + +const parser = { + yyyy: (dateObj) => { + return pad(dateObj.year, 4) + }, + yy: (dateObj) => { + return pad(dateObj.year) + }, + MM: (dateObj) => { + return pad(dateObj.month) + }, + M: (dateObj) => { + return dateObj.month + }, + dd: (dateObj) => { + return pad(dateObj.day) + }, + d: (dateObj) => { + return dateObj.day + }, + hh: (dateObj) => { + return pad(dateObj.hour) + }, + h: (dateObj) => { + return dateObj.hour + }, + mm: (dateObj) => { + return pad(dateObj.minute) + }, + m: (dateObj) => { + return dateObj.minute + }, + ss: (dateObj) => { + return pad(dateObj.second) + }, + s: (dateObj) => { + return dateObj.second + }, + SSS: (dateObj) => { + return pad(dateObj.millisecond, 3) + }, + S: (dateObj) => { + return dateObj.millisecond + }, +} + +// 这都n年了iOS依然不认识2020-12-12,需要转换为2020/12/12 +function getDate(time) { + if (time instanceof Date) { + return time + } + switch (typeof time) { + case 'string': + { + // 2020-12-12T12:12:12.000Z、2020-12-12T12:12:12.000 + if (time.indexOf('T') > -1) { + return new Date(time) + } + return new Date(time.replace(/-/g, '/')) + } + default: + return new Date(time) + } +} + +export function formatDate(date, format = 'yyyy/MM/dd hh:mm:ss') { + if (!date && date !== 0) { + return '' + } + date = getDate(date) + const dateObj = { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + hour: date.getHours(), + minute: date.getMinutes(), + second: date.getSeconds(), + millisecond: date.getMilliseconds() + } + const tokenRegExp = /yyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S/ + let flag = true + let result = format + while (flag) { + flag = false + result = result.replace(tokenRegExp, function(matched) { + flag = true + return parser[matched](dateObj) + }) + } + return result +} + +export function friendlyDate(time, { + locale = 'zh', + threshold = [60000, 3600000], + format = 'yyyy/MM/dd hh:mm:ss' +}) { + if (time === '-') { + return time + } + if (!time && time !== 0) { + return '' + } + const localeText = { + zh: { + year: '年', + month: '月', + day: '天', + hour: '小时', + minute: '分钟', + second: '秒', + ago: '前', + later: '后', + justNow: '刚刚', + soon: '马上', + template: '{num}{unit}{suffix}' + }, + en: { + year: 'year', + month: 'month', + day: 'day', + hour: 'hour', + minute: 'minute', + second: 'second', + ago: 'ago', + later: 'later', + justNow: 'just now', + soon: 'soon', + template: '{num} {unit} {suffix}' + } + } + const text = localeText[locale] || localeText.zh + let date = getDate(time) + let ms = date.getTime() - Date.now() + let absMs = Math.abs(ms) + if (absMs < threshold[0]) { + return ms < 0 ? text.justNow : text.soon + } + if (absMs >= threshold[1]) { + return formatDate(date, format) + } + let num + let unit + let suffix = text.later + if (ms < 0) { + suffix = text.ago + ms = -ms + } + const seconds = Math.floor((ms) / 1000) + const minutes = Math.floor(seconds / 60) + const hours = Math.floor(minutes / 60) + const days = Math.floor(hours / 24) + const months = Math.floor(days / 30) + const years = Math.floor(months / 12) + switch (true) { + case years > 0: + num = years + unit = text.year + break + case months > 0: + num = months + unit = text.month + break + case days > 0: + num = days + unit = text.day + break + case hours > 0: + num = hours + unit = text.hour + break + case minutes > 0: + num = minutes + unit = text.minute + break + default: + num = seconds + unit = text.second + break + } + + if (locale === 'en') { + if (num === 1) { + num = 'a' + } else { + unit += 's' + } + } + + return text.template.replace(/{\s*num\s*}/g, num + '').replace(/{\s*unit\s*}/g, unit).replace(/{\s*suffix\s*}/g, + suffix) +} diff --git a/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue b/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue new file mode 100644 index 0000000..c5ed030 --- /dev/null +++ b/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/uni_modules/uni-dateformat/package.json b/uni_modules/uni-dateformat/package.json new file mode 100644 index 0000000..786a670 --- /dev/null +++ b/uni_modules/uni-dateformat/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-dateformat", + "displayName": "uni-dateformat 日期格式化", + "version": "1.0.0", + "description": "日期格式化组件,可以将日期格式化为1分钟前、刚刚等形式", + "keywords": [ + "uni-ui", + "uniui", + "日期格式化", + "时间格式化", + "格式化时间", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-dateformat/readme.md b/uni_modules/uni-dateformat/readme.md new file mode 100644 index 0000000..37ddb6e --- /dev/null +++ b/uni_modules/uni-dateformat/readme.md @@ -0,0 +1,11 @@ + + +### DateFormat 日期格式化 +> **组件名:uni-dateformat** +> 代码块: `uDateformat` + + +日期格式化组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-dateformat) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/changelog.md b/uni_modules/uni-datetime-picker/changelog.md new file mode 100644 index 0000000..1f1a554 --- /dev/null +++ b/uni_modules/uni-datetime-picker/changelog.md @@ -0,0 +1,133 @@ +## 2.2.22(2023-03-30) +- 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937) +- 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979) +## 2.2.21(2023-02-20) +- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) +## 2.2.20(2023-02-17) +- 优化 值为空依然选中当天问题 +- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 +- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 +- 优化 字节小程序日期时间范围选择,底部日期换行问题 +## 2.2.19(2023-02-09) +- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) +## 2.2.18(2023-02-08) +- 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684) +- 优化 PC端输入日期格式错误时返回当前日期时间 +- 优化 PC端输入日期时间超出 start、end 限制的Bug +- 优化 移动端日期时间范围用法时间展示不完整问题 +## 2.2.17(2023-02-04) +- 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679) +- 修复 vue3 time-picker 无法显示绑定时分秒的Bug +## 2.2.16(2023-02-02) +- 修复 字节小程序报错的Bug +## 2.2.15(2023-02-02) +- 修复 某些情况切换月份错误的Bug +## 2.2.14(2023-01-30) +- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/162033) +## 2.2.13(2023-01-10) +- 修复 多次加载组件造成内存占用的Bug +## 2.2.12(2022-12-01) +- 修复 vue3 下 i18n 国际化初始值不正确的Bug +## 2.2.11(2022-09-19) +- 修复 支付宝小程序样式错乱的Bug [详情](https://github.com/dcloudio/uni-app/issues/3861) +## 2.2.10(2022-09-19) +- 修复 反向选择日期范围,日期显示异常的Bug [详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +## 2.2.9(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 2.2.8(2022-09-08) +- 修复 close事件无效的Bug +## 2.2.7(2022-09-05) +- 修复 移动端 maskClick 无效的Bug [详情](https://ask.dcloud.net.cn/question/140824) +## 2.2.6(2022-06-30) +- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +## 2.2.5(2022-06-24) +- 修复 日历顶部年月及底部确认未国际化的Bug +## 2.2.4(2022-03-31) +- 修复 Vue3 下动态赋值,单选类型未响应的Bug +## 2.2.3(2022-03-28) +- 修复 Vue3 下动态赋值未响应的Bug +## 2.2.2(2021-12-10) +- 修复 clear-icon 属性在小程序平台不生效的Bug +## 2.2.1(2021-12-10) +- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的Bug +## 2.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源 [详情](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移 [https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +## 2.1.5(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 2.1.4(2021-09-10) +- 修复 hide-second 在移动端的Bug +- 修复 单选赋默认值时,赋值日期未高亮的Bug +- 修复 赋默认值时,移动端未正确显示时间的Bug +## 2.1.3(2021-09-09) +- 新增 hide-second 属性,支持只使用时分,隐藏秒 +## 2.1.2(2021-09-03) +- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- 优化 调整字号大小,美化日历界面 +- 修复 因国际化导致的 placeholder 失效的Bug +## 2.1.1(2021-08-24) +- 新增 支持国际化 +- 优化 范围选择器在 pc 端过宽的问题 +## 2.1.0(2021-08-09) +- 新增 适配 vue3 +## 2.0.19(2021-08-09) +- 新增 支持作为 uni-forms 子组件相关功能 +- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的Bug +## 2.0.18(2021-08-05) +- 修复 type 属性动态赋值无效的Bug +- 修复 ‘确认’按钮被 tabbar 遮盖 bug +- 修复 组件未赋值时范围选左、右日历相同的Bug +## 2.0.17(2021-08-04) +- 修复 范围选未正确显示当前值的Bug +- 修复 h5 平台(移动端)报错 'cale' of undefined 的Bug +## 2.0.16(2021-07-21) +- 新增 return-type 属性支持返回 date 日期对象 +## 2.0.15(2021-07-14) +- 修复 单选日期类型,初始赋值后不在当前日历的Bug +- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- 优化 移动端移除显示框的清空按钮,无实际用途 +## 2.0.14(2021-07-14) +- 修复 组件赋值为空,界面未更新的Bug +- 修复 start 和 end 不能动态赋值的Bug +- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的Bug +## 2.0.13(2021-07-08) +- 修复 范围选择不能动态赋值的Bug +## 2.0.12(2021-07-08) +- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +## 2.0.11(2021-07-08) +- 优化 弹出层在超出视窗边缘定位不准确的问题 +## 2.0.10(2021-07-08) +- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的Bug +- 优化 弹出层在超出视窗边缘被遮盖的问题 +## 2.0.9(2021-07-07) +- 新增 maskClick 事件 +- 修复 特殊情况日历 rpx 布局错误的Bug,rpx -> px +- 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +## 2.0.8(2021-07-07) +- 新增 日期时间显示框支持插槽 +## 2.0.7(2021-07-01) +- 优化 添加 uni-icons 依赖 +## 2.0.6(2021-05-22) +- 修复 图标在小程序上不显示的Bug +- 优化 重命名引用组件,避免潜在组件命名冲突 +## 2.0.5(2021-05-20) +- 优化 代码目录扁平化 +## 2.0.4(2021-05-12) +- 新增 组件示例地址 +## 2.0.3(2021-05-10) +- 修复 ios 下不识别 '-' 日期格式的Bug +- 优化 pc 下弹出层添加边框和阴影 +## 2.0.2(2021-05-08) +- 修复 在 admin 中获取弹出层定位错误的bug +## 2.0.1(2021-05-08) +- 修复 type 属性向下兼容,默认值从 date 变更为 datetime +## 2.0.0(2021-04-30) +- 支持日历形式的日期+时间的范围选择 + > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker) +## 1.0.6(2021-03-18) +- 新增 hide-second 属性,时间支持仅选择时、分 +- 修复 选择跟显示的日期不一样的Bug +- 修复 chang事件触发2次的Bug +- 修复 分、秒 end 范围错误的Bug +- 优化 更好的 nvue 适配 diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue new file mode 100644 index 0000000..dba9887 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue new file mode 100644 index 0000000..3418f49 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue @@ -0,0 +1,928 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json new file mode 100644 index 0000000..024f22f --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "select date", + "uni-datetime-picker.selectTime": "select time", + "uni-datetime-picker.selectDateTime": "select date and time", + "uni-datetime-picker.startDate": "start date", + "uni-datetime-picker.endDate": "end date", + "uni-datetime-picker.startTime": "start time", + "uni-datetime-picker.endTime": "end time", + "uni-datetime-picker.ok": "ok", + "uni-datetime-picker.clear": "clear", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", + "uni-datetime-picker.month": "", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN", + "uni-calender.confirm": "confirm" +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json new file mode 100644 index 0000000..d2df5e7 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "选择日期", + "uni-datetime-picker.selectTime": "选择时间", + "uni-datetime-picker.selectDateTime": "选择日期时间", + "uni-datetime-picker.startDate": "开始日期", + "uni-datetime-picker.endDate": "结束日期", + "uni-datetime-picker.startTime": "开始时间", + "uni-datetime-picker.endTime": "结束时间", + "uni-datetime-picker.ok": "确定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "确认" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json new file mode 100644 index 0000000..d23fa3c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "選擇日期", + "uni-datetime-picker.selectTime": "選擇時間", + "uni-datetime-picker.selectDateTime": "選擇日期時間", + "uni-datetime-picker.startDate": "開始日期", + "uni-datetime-picker.endDate": "結束日期", + "uni-datetime-picker.startTime": "開始时间", + "uni-datetime-picker.endTime": "結束时间", + "uni-datetime-picker.ok": "確定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "確認" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue new file mode 100644 index 0000000..81a042a --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue @@ -0,0 +1,934 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue new file mode 100644 index 0000000..bd96488 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue @@ -0,0 +1,1026 @@ + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js new file mode 100644 index 0000000..7dc34c4 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js @@ -0,0 +1,403 @@ +class Calendar { + constructor({ + selected, + startDate, + endDate, + range, + } = {}) { + // 当前日期 + this.date = this.getDateObj(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 起始时间 + this.startDate = startDate + // 终止时间 + this.endDate = endDate + // 是否范围选择 + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + this.lastHover = false + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + const selectDate = this.getDateObj(date) + this.getWeeks(selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + setStartDate(startDate) { + this.startDate = startDate + } + + setEndDate(endDate) { + this.endDate = endDate + } + + getPreMonthObj(date){ + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth - 1) + const newMonth = date.getMonth() + if(oldMonth !== 0 && newMonth - oldMonth === 0){ + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + getNextMonthObj(date){ + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth + 1) + const newMonth = date.getMonth() + if(newMonth - oldMonth > 1){ + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + + /** + * 获取指定格式Date对象 + */ + getDateObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + return { + fullDate: getDate(date), + year: date.getFullYear(), + month: addZero(date.getMonth() + 1), + date: addZero(date.getDate()), + day: date.getDay() + } + } + + /** + * 获取上一个月日期集合 + */ + getPreMonthDays(amount, dateObj) { + const result = [] + for (let i = amount - 1; i >= 0; i--) { + const month = dateObj.month - 1 + result.push({ + date: new Date(dateObj.year, month, -i).getDate(), + month, + disable: true + }) + } + return result + } + /** + * 获取本月日期集合 + */ + getCurrentMonthDays(amount, dateObj) { + const result = [] + const fullDate = this.date.fullDate + for (let i = 1; i <= amount; i++) { + const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}` + const isToday = fullDate === currentDate + // 获取打点信息 + const info = this.selected && this.selected.find((item) => { + if (this.dateEqual(currentDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + disableBefore = dateCompare(this.startDate, currentDate) + } + + if (this.endDate) { + disableAfter = dateCompare(currentDate, this.endDate) + } + + let multiples = this.multipleStatus.data + let multiplesStatus = -1 + if (this.range && multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, currentDate) + }) + } + const checked = multiplesStatus !== -1 + + result.push({ + fullDate: currentDate, + year: dateObj.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after), + month: dateObj.month, + disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare(currentDate,this.endDate)), + isToday, + userChecked: false, + extraInfo: info + }) + } + return result + } + /** + * 获取下一个月日期集合 + */ + _getNextMonthDays(amount, dateObj) { + const result = [] + const month = dateObj.month + 1 + for (let i = 1; i <= amount; i++) { + result.push({ + date: i, + month, + disable: true + }) + } + return result + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + + return this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate) + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + before = new Date(fixIosDateFormat(before)) + after = new Date(fixIosDateFormat(after)) + return before.valueOf() === after.valueOf() + } + + /** + * 比较真实起始日期 + */ + + isLogicBefore(currentDate, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDate) + } + + isLogicAfter(currentDate, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDate) + } + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDateObj(new Date(parseInt(k))).fullDate) + } + return arr + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + if (!this.range) return + + let { + before, + after + } = this.multipleStatus + if (before && after) { + if (!this.lastHover) { + this.lastHover = true + return + } + this.multipleStatus.before = fullDate + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this.multipleStatus.fulldate = '' + this.lastHover = false + } else { + if (!before) { + this.multipleStatus.before = fullDate + this.lastHover = false + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus + .after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus + .before); + } + this.lastHover = true + } + } + this.getWeeks(fullDate) + } + + /** + * 鼠标 hover 更新多选状态 + */ + setHoverMultiple(fullDate) { + if (!this.range || this.lastHover) return + + const { before } = this.multipleStatus + + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + this.getWeeks(fullDate) + } + + /** + * 更新默认值多选状态 + */ + setDefaultMultiple(before, after) { + this.multipleStatus.before = before + this.multipleStatus.after = after + if (before && after) { + if (dateCompare(before, after)) { + this.multipleStatus.data = this.geDateAll(before, after); + this.getWeeks(after) + } else { + this.multipleStatus.data = this.geDateAll(after, before); + this.getWeeks(before) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + getWeeks(dateData) { + const { + year, + month, + } = this.getDateObj(dateData) + + const preMonthDayAmount = new Date(year, month - 1, 1).getDay() + const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData)) + + const currentMonthDayAmount = new Date(year, month, 0).getDate() + const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData)) + + const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount + const nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData)) + + const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays] + + const weeks = new Array(6) + for (let i = 0; i < calendarDays.length; i++) { + const index = Math.floor(i / 7) + if(!weeks[index]){ + weeks[index] = new Array(7) + } + weeks[index][i % 7] = calendarDays[i] + } + + this.calendar = calendarDays + this.weeks = weeks + } +} + +function getDateTime(date, hideSecond){ + return `${getDate(date)} ${getTime(date, hideSecond)}` +} + +function getDate(date) { + date = fixIosDateFormat(date) + date = new Date(date) + const year = date.getFullYear() + const month = date.getMonth()+1 + const day = date.getDate() + return `${year}-${addZero(month)}-${addZero(day)}` +} + +function getTime(date, hideSecond){ + date = fixIosDateFormat(date) + date = new Date(date) + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + return hideSecond ? `${addZero(hour)}:${addZero(minute)}` : `${addZero(hour)}:${addZero(minute)}:${addZero(second)}` +} + +function addZero(num) { + if(num < 10){ + num = `0${num}` + } + return num +} + +function getDefaultSecond(hideSecond) { + return hideSecond ? '00:00' : '00:00:00' +} + +function dateCompare(startDate, endDate) { + startDate = new Date(fixIosDateFormat(startDate)) + endDate = new Date(fixIosDateFormat(endDate)) + return startDate <= endDate +} + +function checkDate(date){ + const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g + return date.match(dateReg) +} + +const dateTimeReg = /^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])( [0-5][0-9]:[0-5][0-9]:[0-5][0-9])?$/ +function fixIosDateFormat(value) { + if (typeof value === 'string' && dateTimeReg.test(value)) { + value = value.replace(/-/g, '/') + } + return value +} + +export {Calendar, getDateTime, getDate, getTime, addZero, getDefaultSecond, dateCompare, checkDate, fixIosDateFormat} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/package.json b/uni_modules/uni-datetime-picker/package.json new file mode 100644 index 0000000..8abed63 --- /dev/null +++ b/uni_modules/uni-datetime-picker/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-datetime-picker", + "displayName": "uni-datetime-picker 日期选择器", + "version": "2.2.22", + "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", + "keywords": [ + "uni-datetime-picker", + "uni-ui", + "uniui", + "日期时间选择器", + "日期时间" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-datetime-picker/readme.md b/uni_modules/uni-datetime-picker/readme.md new file mode 100644 index 0000000..162fbef --- /dev/null +++ b/uni_modules/uni-datetime-picker/readme.md @@ -0,0 +1,21 @@ + + +> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` + +## DatetimePicker 时间选择器 + +> **组件名:uni-datetime-picker** +> 代码块: `uDatetimePicker` + + +该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 + +若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 + +**_点击 picker 默认值规则:_** + +- 若设置初始值 value, 会显示在 picker 显示框中 +- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-drawer/changelog.md b/uni_modules/uni-drawer/changelog.md new file mode 100644 index 0000000..6d2488c --- /dev/null +++ b/uni_modules/uni-drawer/changelog.md @@ -0,0 +1,13 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中个别scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-drawer](https://uniapp.dcloud.io/component/uniui/uni-drawer) +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-drawer/components/uni-drawer/keypress.js b/uni_modules/uni-drawer/components/uni-drawer/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-drawer/components/uni-drawer/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue b/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue new file mode 100644 index 0000000..82331a8 --- /dev/null +++ b/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/uni_modules/uni-drawer/package.json b/uni_modules/uni-drawer/package.json new file mode 100644 index 0000000..dd056e4 --- /dev/null +++ b/uni_modules/uni-drawer/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-drawer", + "displayName": "uni-drawer 抽屉", + "version": "1.2.1", + "description": "抽屉式导航,用于展示侧滑菜单,侧滑导航。", + "keywords": [ + "uni-ui", + "uniui", + "drawer", + "抽屉", + "侧滑导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-drawer/readme.md b/uni_modules/uni-drawer/readme.md new file mode 100644 index 0000000..dcf6e6b --- /dev/null +++ b/uni_modules/uni-drawer/readme.md @@ -0,0 +1,10 @@ + + +## Drawer 抽屉 +> **组件名:uni-drawer** +> 代码块: `uDrawer` + +抽屉侧滑菜单。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-drawer) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-easyinput/changelog.md b/uni_modules/uni-easyinput/changelog.md new file mode 100644 index 0000000..765401a --- /dev/null +++ b/uni_modules/uni-easyinput/changelog.md @@ -0,0 +1,97 @@ +## 1.1.9(2023-04-11) +- 修复 vue3 下 keyboardheightchange 事件报错的bug +## 1.1.8(2023-03-29) +- 优化 trim 属性默认值 +## 1.1.7(2023-03-29) +- 新增 cursor-spacing 属性 +## 1.1.6(2023-01-28) +- 新增 keyboardheightchange 事件,可监听键盘高度变化 +## 1.1.5(2022-11-29) +- 优化 主题样式 +## 1.1.4(2022-10-27) +- 修复 props 中背景颜色无默认值的bug +## 1.1.0(2022-06-30) + +- 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容 +- 新增 clear 事件,点击右侧叉号图标触发 +- 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发 +- 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等 + +## 1.0.5(2022-06-07) + +- 优化 clearable 显示策略 + +## 1.0.4(2022-06-07) + +- 优化 clearable 显示策略 + +## 1.0.3(2022-05-20) + +- 修复 关闭图标某些情况下无法取消的 bug + +## 1.0.2(2022-04-12) + +- 修复 默认值不生效的 bug + +## 1.0.1(2022-04-02) + +- 修复 value 不能为 0 的 bug + +## 1.0.0(2021-11-19) + +- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-easyinput](https://uniapp.dcloud.io/component/uniui/uni-easyinput) + +## 0.1.4(2021-08-20) + +- 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug + +## 0.1.3(2021-08-11) + +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 + +## 0.1.2(2021-07-30) + +- 优化 vue3 下事件警告的问题 + +## 0.1.1 + +- 优化 errorMessage 属性支持 Boolean 类型 + +## 0.1.0(2021-07-13) + +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) + +## 0.0.16(2021-06-29) + +- 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug + +## 0.0.15(2021-06-21) + +- 修复 passwordIcon 属性拼写错误的 bug + +## 0.0.14(2021-06-18) + +- 新增 passwordIcon 属性,当 type=password 时是否显示小眼睛图标 +- 修复 confirmType 属性不生效的问题 + +## 0.0.13(2021-06-04) + +- 修复 disabled 状态可清出内容的 bug + +## 0.0.12(2021-05-12) + +- 新增 组件示例地址 + +## 0.0.11(2021-05-07) + +- 修复 input-border 属性不生效的问题 + +## 0.0.10(2021-04-30) + +- 修复 ios 遮挡文字、显示一半的问题 + +## 0.0.9(2021-02-05) + +- 调整为 uni_modules 目录规范 +- 优化 兼容 nvue 页面 diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/common.js b/uni_modules/uni-easyinput/components/uni-easyinput/common.js new file mode 100644 index 0000000..df9abe1 --- /dev/null +++ b/uni_modules/uni-easyinput/components/uni-easyinput/common.js @@ -0,0 +1,56 @@ +/** + * @desc 函数防抖 + * @param func 目标函数 + * @param wait 延迟执行毫秒数 + * @param immediate true - 立即执行, false - 延迟执行 + */ +export const debounce = function(func, wait = 1000, immediate = true) { + let timer; + console.log(1); + return function() { + console.log(123); + let context = this, + args = arguments; + if (timer) clearTimeout(timer); + if (immediate) { + let callNow = !timer; + timer = setTimeout(() => { + timer = null; + }, wait); + if (callNow) func.apply(context, args); + } else { + timer = setTimeout(() => { + func.apply(context, args); + }, wait) + } + } +} +/** + * @desc 函数节流 + * @param func 函数 + * @param wait 延迟执行毫秒数 + * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发 + */ +export const throttle = (func, wait = 1000, type = 1) => { + let previous = 0; + let timeout; + return function() { + let context = this; + let args = arguments; + if (type === 1) { + let now = Date.now(); + + if (now - previous > wait) { + func.apply(context, args); + previous = now; + } + } else if (type === 2) { + if (!timeout) { + timeout = setTimeout(() => { + timeout = null; + func.apply(context, args) + }, wait) + } + } + } +} diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue b/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue new file mode 100644 index 0000000..2c7993a --- /dev/null +++ b/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue @@ -0,0 +1,657 @@ + + + + + diff --git a/uni_modules/uni-easyinput/package.json b/uni_modules/uni-easyinput/package.json new file mode 100644 index 0000000..bd128e1 --- /dev/null +++ b/uni_modules/uni-easyinput/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-easyinput", + "displayName": "uni-easyinput 增强输入框", + "version": "1.1.9", + "description": "Easyinput 组件是对原生input组件的增强", + "keywords": [ + "uni-ui", + "uniui", + "input", + "uni-easyinput", + "输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-easyinput/readme.md b/uni_modules/uni-easyinput/readme.md new file mode 100644 index 0000000..f1faf8f --- /dev/null +++ b/uni_modules/uni-easyinput/readme.md @@ -0,0 +1,11 @@ + + +### Easyinput 增强输入框 +> **组件名:uni-easyinput** +> 代码块: `uEasyinput` + + +easyinput 组件是对原生input组件的增强 ,是专门为配合表单组件[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)而设计的,easyinput 内置了边框,图标等,同时包含 input 所有功能 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-easyinput) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-fab/changelog.md b/uni_modules/uni-fab/changelog.md new file mode 100644 index 0000000..9bd4729 --- /dev/null +++ b/uni_modules/uni-fab/changelog.md @@ -0,0 +1,23 @@ +## 1.2.5(2023-03-29) +- 新增 pattern.icon 属性,可自定义图标 +## 1.2.4(2022-09-07) +小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false) +## 1.2.3(2022-09-05) +- 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310) +## 1.2.2(2021-12-29) +- 更新 组件依赖 +## 1.2.1(2021-11-19) +- 修复 阴影颜色不正确的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fab](https://uniapp.dcloud.io/component/uniui/uni-fab) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 按钮背景色调整 +- 优化 兼容pc端 diff --git a/uni_modules/uni-fab/components/uni-fab/uni-fab.vue b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue new file mode 100644 index 0000000..dfa65c1 --- /dev/null +++ b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue @@ -0,0 +1,491 @@ + + + + + diff --git a/uni_modules/uni-fab/package.json b/uni_modules/uni-fab/package.json new file mode 100644 index 0000000..18c0810 --- /dev/null +++ b/uni_modules/uni-fab/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-fab", + "displayName": "uni-fab 悬浮按钮", + "version": "1.2.5", + "description": "悬浮按钮 fab button ,点击可展开一个图标按钮菜单。", + "keywords": [ + "uni-ui", + "uniui", + "按钮", + "悬浮按钮", + "fab" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-fab/readme.md b/uni_modules/uni-fab/readme.md new file mode 100644 index 0000000..9a444e8 --- /dev/null +++ b/uni_modules/uni-fab/readme.md @@ -0,0 +1,9 @@ +## Fab 悬浮按钮 +> **组件名:uni-fab** +> 代码块: `uFab` + + +点击可展开一个图形按钮菜单 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-fav/changelog.md b/uni_modules/uni-fav/changelog.md new file mode 100644 index 0000000..d8a08d4 --- /dev/null +++ b/uni_modules/uni-fav/changelog.md @@ -0,0 +1,19 @@ +## 1.2.1(2022-05-30) +- 新增 stat 属性 ,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 组件示例地址 +## 1.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.3(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/en.json b/uni_modules/uni-fav/components/uni-fav/i18n/en.json new file mode 100644 index 0000000..9a0759e --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "collect", + "uni-fav.collected": "collected" +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/index.js b/uni_modules/uni-fav/components/uni-fav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uni_modules/uni-fav/components/uni-fav/uni-fav.vue b/uni_modules/uni-fav/components/uni-fav/uni-fav.vue new file mode 100644 index 0000000..d2c58df --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/uni-fav.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/uni_modules/uni-fav/package.json b/uni_modules/uni-fav/package.json new file mode 100644 index 0000000..cc14697 --- /dev/null +++ b/uni_modules/uni-fav/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-fav", + "displayName": "uni-fav 收藏按钮", + "version": "1.2.1", + "description": " Fav 收藏组件,可自定义颜色、大小。", + "keywords": [ + "fav", + "uni-ui", + "uniui", + "收藏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-fav/readme.md b/uni_modules/uni-fav/readme.md new file mode 100644 index 0000000..4de125d --- /dev/null +++ b/uni_modules/uni-fav/readme.md @@ -0,0 +1,10 @@ + + +## Fav 收藏按钮 +> **组件名:uni-fav** +> 代码块: `uFav` + +用于收藏功能,可点击切换选中、不选中的状态。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-file-picker/changelog.md b/uni_modules/uni-file-picker/changelog.md new file mode 100644 index 0000000..b8230e9 --- /dev/null +++ b/uni_modules/uni-file-picker/changelog.md @@ -0,0 +1,67 @@ +## 1.0.4(2023-03-29) +- 修复 手动上传删除一个文件后不能再上传的bug +## 1.0.3(2022-12-19) +- 新增 sourceType 属性, 可以自定义图片和视频选择的来源 +## 1.0.2(2022-07-04) +- 修复 在uni-forms下样式不生效的bug +## 1.0.1(2021-11-23) +- 修复 参数为对象的情况下,url在某些情况显示错误的bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-file-picker](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +## 0.2.16(2021-11-08) +- 修复 传入空对象 ,显示错误的Bug +## 0.2.15(2021-08-30) +- 修复 return-type="object" 时且存在v-model时,无法删除文件的Bug +## 0.2.14(2021-08-23) +- 新增 参数中返回 fileID 字段 +## 0.2.13(2021-08-23) +- 修复 腾讯云传入fileID 不能回显的bug +- 修复 选择图片后,不能放大的问题 +## 0.2.12(2021-08-17) +- 修复 由于 0.2.11 版本引起的不能回显图片的Bug +## 0.2.11(2021-08-16) +- 新增 clearFiles(index) 方法,可以手动删除指定文件 +- 修复 v-model 值设为 null 报错的Bug +## 0.2.10(2021-08-13) +- 修复 return-type="object" 时,无法删除文件的Bug +## 0.2.9(2021-08-03) +- 修复 auto-upload 属性失效的Bug +## 0.2.8(2021-07-31) +- 修复 fileExtname属性不指定值报错的Bug +## 0.2.7(2021-07-31) +- 修复 在某种场景下图片不回显的Bug +## 0.2.6(2021-07-30) +- 修复 return-type为object下,返回值不正确的Bug +## 0.2.5(2021-07-30) +- 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题 +## 0.2.3(2021-07-28) +- 优化 调整示例代码 +## 0.2.2(2021-07-27) +- 修复 vue3 下赋值错误的Bug +- 优化 h5平台下上传文件导致页面卡死的问题 +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.1(2021-07-02) +- 修复 sourceType 缺少默认值导致 ios 无法选择文件 +## 0.1.0(2021-06-30) +- 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改 +## 0.0.11(2021-06-30) +- 修复 由 0.0.10 版本引发的 returnType 属性失效的问题 +## 0.0.10(2021-06-29) +- 优化 文件上传后进度条消失时机 +## 0.0.9(2021-06-29) +- 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug +## 0.0.8(2021-06-15) +- 修复 删除文件时无法触发 v-model 的Bug +## 0.0.7(2021-05-12) +- 新增 组件示例地址 +## 0.0.6(2021-04-09) +- 修复 选择的文件非 file-extname 字段指定的扩展名报错的Bug +## 0.0.5(2021-04-09) +- 优化 更新组件示例 +## 0.0.4(2021-04-09) +- 优化 file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 微信小程序不指定 fileExtname 属性选择失败的Bug diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js b/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js new file mode 100644 index 0000000..aff0864 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js @@ -0,0 +1,224 @@ +'use strict'; + +const ERR_MSG_OK = 'chooseAndUploadFile:ok'; +const ERR_MSG_FAIL = 'chooseAndUploadFile:fail'; + +function chooseImage(opts) { + const { + count, + sizeType = ['original', 'compressed'], + sourceType, + extension + } = opts + return new Promise((resolve, reject) => { + uni.chooseImage({ + count, + sizeType, + sourceType, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res, 'image')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseVideo(opts) { + const { + camera, + compressed, + maxDuration, + sourceType, + extension + } = opts; + return new Promise((resolve, reject) => { + uni.chooseVideo({ + camera, + compressed, + maxDuration, + sourceType, + extension, + success(res) { + const { + tempFilePath, + duration, + size, + height, + width + } = res; + resolve(normalizeChooseAndUploadFileRes({ + errMsg: 'chooseVideo:ok', + tempFilePaths: [tempFilePath], + tempFiles: [ + { + name: (res.tempFile && res.tempFile.name) || '', + path: tempFilePath, + size, + type: (res.tempFile && res.tempFile.type) || '', + width, + height, + duration, + fileType: 'video', + cloudPath: '', + }, ], + }, 'video')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseVideo:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseAll(opts) { + const { + count, + extension + } = opts; + return new Promise((resolve, reject) => { + let chooseFile = uni.chooseFile; + if (typeof wx !== 'undefined' && + typeof wx.chooseMessageFile === 'function') { + chooseFile = wx.chooseMessageFile; + } + if (typeof chooseFile !== 'function') { + return reject({ + errMsg: ERR_MSG_FAIL + ' 请指定 type 类型,该平台仅支持选择 image 或 video。', + }); + } + chooseFile({ + type: 'all', + count, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res)); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseFile:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function normalizeChooseAndUploadFileRes(res, fileType) { + res.tempFiles.forEach((item, index) => { + if (!item.name) { + item.name = item.path.substring(item.path.lastIndexOf('/') + 1); + } + if (fileType) { + item.fileType = fileType; + } + item.cloudPath = + Date.now() + '_' + index + item.name.substring(item.name.lastIndexOf('.')); + }); + if (!res.tempFilePaths) { + res.tempFilePaths = res.tempFiles.map((file) => file.path); + } + return res; +} + +function uploadCloudFiles(files, max = 5, onUploadProgress) { + files = JSON.parse(JSON.stringify(files)) + const len = files.length + let count = 0 + let self = this + return new Promise(resolve => { + while (count < max) { + next() + } + + function next() { + let cur = count++ + if (cur >= len) { + !files.find(item => !item.url && !item.errMsg) && resolve(files) + return + } + const fileItem = files[cur] + const index = self.files.findIndex(v => v.uuid === fileItem.uuid) + fileItem.url = '' + delete fileItem.errMsg + + uniCloud + .uploadFile({ + filePath: fileItem.path, + cloudPath: fileItem.cloudPath, + fileType: fileItem.fileType, + onUploadProgress: res => { + res.index = index + onUploadProgress && onUploadProgress(res) + } + }) + .then(res => { + fileItem.url = res.fileID + fileItem.index = index + if (cur < len) { + next() + } + }) + .catch(res => { + fileItem.errMsg = res.errMsg || res.message + fileItem.index = index + if (cur < len) { + next() + } + }) + } + }) +} + + + + + +function uploadFiles(choosePromise, { + onChooseFile, + onUploadProgress +}) { + return choosePromise + .then((res) => { + if (onChooseFile) { + const customChooseRes = onChooseFile(res); + if (typeof customChooseRes !== 'undefined') { + return Promise.resolve(customChooseRes).then((chooseRes) => typeof chooseRes === 'undefined' ? + res : chooseRes); + } + } + return res; + }) + .then((res) => { + if (res === false) { + return { + errMsg: ERR_MSG_OK, + tempFilePaths: [], + tempFiles: [], + }; + } + return res + }) +} + +function chooseAndUploadFile(opts = { + type: 'all' +}) { + if (opts.type === 'image') { + return uploadFiles(chooseImage(opts), opts); + } + else if (opts.type === 'video') { + return uploadFiles(chooseVideo(opts), opts); + } + return uploadFiles(chooseAll(opts), opts); +} + +export { + chooseAndUploadFile, + uploadCloudFiles +}; diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue new file mode 100644 index 0000000..370441d --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue @@ -0,0 +1,667 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue new file mode 100644 index 0000000..625d92e --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue @@ -0,0 +1,325 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue new file mode 100644 index 0000000..2a29bc2 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/utils.js b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js new file mode 100644 index 0000000..60aaa3e --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js @@ -0,0 +1,109 @@ +/** + * 获取文件名和后缀 + * @param {String} name + */ +export const get_file_ext = (name) => { + const last_len = name.lastIndexOf('.') + const len = name.length + return { + name: name.substring(0, last_len), + ext: name.substring(last_len + 1, len) + } +} + +/** + * 获取扩展名 + * @param {Array} fileExtname + */ +export const get_extname = (fileExtname) => { + if (!Array.isArray(fileExtname)) { + let extname = fileExtname.replace(/(\[|\])/g, '') + return extname.split(',') + } else { + return fileExtname + } + return [] +} + +/** + * 获取文件和检测是否可选 + */ +export const get_files_and_is_max = (res, _extname) => { + let filePaths = [] + let files = [] + if(!_extname || _extname.length === 0){ + return { + filePaths, + files + } + } + res.tempFiles.forEach(v => { + let fileFullName = get_file_ext(v.name) + const extname = fileFullName.ext.toLowerCase() + if (_extname.indexOf(extname) !== -1) { + files.push(v) + filePaths.push(v.path) + } + }) + if (files.length !== res.tempFiles.length) { + uni.showToast({ + title: `当前选择了${res.tempFiles.length}个文件 ,${res.tempFiles.length - files.length} 个文件格式不正确`, + icon: 'none', + duration: 5000 + }) + } + + return { + filePaths, + files + } +} + + +/** + * 获取图片信息 + * @param {Object} filepath + */ +export const get_file_info = (filepath) => { + return new Promise((resolve, reject) => { + uni.getImageInfo({ + src: filepath, + success(res) { + resolve(res) + }, + fail(err) { + reject(err) + } + }) + }) +} +/** + * 获取封装数据 + */ +export const get_file_data = async (files, type = 'image') => { + // 最终需要上传数据库的数据 + let fileFullName = get_file_ext(files.name) + const extname = fileFullName.ext.toLowerCase() + let filedata = { + name: files.name, + uuid: files.uuid, + extname: extname || '', + cloudPath: files.cloudPath, + fileType: files.fileType, + url: files.path || files.path, + size: files.size, //单位是字节 + image: {}, + path: files.path, + video: {} + } + if (type === 'image') { + const imageinfo = await get_file_info(files.path) + delete filedata.video + filedata.image.width = imageinfo.width + filedata.image.height = imageinfo.height + filedata.image.location = imageinfo.path + } else { + delete filedata.image + } + return filedata +} diff --git a/uni_modules/uni-file-picker/package.json b/uni_modules/uni-file-picker/package.json new file mode 100644 index 0000000..35c926c --- /dev/null +++ b/uni_modules/uni-file-picker/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-file-picker", + "displayName": "uni-file-picker 文件选择上传", + "version": "1.0.4", + "description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间", + "keywords": [ + "uni-ui", + "uniui", + "图片上传", + "文件上传" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-file-picker/readme.md b/uni_modules/uni-file-picker/readme.md new file mode 100644 index 0000000..c8399a5 --- /dev/null +++ b/uni_modules/uni-file-picker/readme.md @@ -0,0 +1,11 @@ + +## FilePicker 文件选择上传 + +> **组件名:uni-file-picker** +> 代码块: `uFilePicker` + + +文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-forms/changelog.md b/uni_modules/uni-forms/changelog.md new file mode 100644 index 0000000..8218df5 --- /dev/null +++ b/uni_modules/uni-forms/changelog.md @@ -0,0 +1,92 @@ +## 1.4.9(2023-02-10) +- 修复 required 参数无法动态绑定 +## 1.4.8(2022-08-23) +- 优化 根据 rules 自动添加 required 的问题 +## 1.4.7(2022-08-22) +- 修复 item 未设置 require 属性,rules 设置 require 后,星号也显示的 bug,详见:[https://ask.dcloud.net.cn/question/151540](https://ask.dcloud.net.cn/question/151540) +## 1.4.6(2022-07-13) +- 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug +## 1.4.5(2022-07-05) +- 新增 更多表单示例 +- 优化 子表单组件过期提示的问题 +- 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式 +## 1.4.4(2022-07-04) +- 更新 删除组件日志 +## 1.4.3(2022-07-04) +- 修复 由 1.4.0 引发的 label 插槽不生效的bug +## 1.4.2(2022-07-04) +- 修复 子组件找不到 setValue 报错的bug +## 1.4.1(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中报错的bug +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.4.0(2022-06-30) +- 【重要】组件逻辑重构,部分用法用旧版本不兼容,请注意兼容问题 +- 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力 +- 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃 +- 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效 +- 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法 +- 新增 子表单的 setRules 方法,配合自定义校验函数使用 +- 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则 +- 优化 动态表单校验方式,废弃拼接name的方式 +## 1.3.3(2022-06-22) +- 修复 表单校验顺序无序问题 +## 1.3.2(2021-12-09) +- +## 1.3.1(2021-11-19) +- 修复 label 插槽不生效的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-forms](https://uniapp.dcloud.io/component/uniui/uni-forms) +## 1.2.7(2021-08-13) +- 修复 没有添加校验规则的字段依然报错的Bug +## 1.2.6(2021-08-11) +- 修复 重置表单错误信息无法清除的问题 +## 1.2.5(2021-08-11) +- 优化 组件文档 +## 1.2.4(2021-08-11) +- 修复 表单验证只生效一次的问题 +## 1.2.3(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.2(2021-07-26) +- 修复 vue2 下条件编译导致destroyed生命周期失效的Bug +- 修复 1.2.1 引起的示例在小程序平台报错的Bug +## 1.2.1(2021-07-22) +- 修复 动态校验表单,默认值为空的情况下校验失效的Bug +- 修复 不指定name属性时,运行报错的Bug +- 优化 label默认宽度从65调整至70,使required为true且四字时不换行 +- 优化 组件示例,新增动态校验示例代码 +- 优化 组件文档,使用方式更清晰 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-06-25) +- 修复 pattern 属性在微信小程序平台无效的问题 +## 1.1.1(2021-06-22) +- 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug +## 1.1.0(2021-06-22) +- 修复 只写setRules方法而导致校验不生效的Bug +- 修复 由上个办法引发的错误提示文字错位的Bug +## 1.0.48(2021-06-21) +- 修复 不设置 label 属性 ,无法设置label插槽的问题 +## 1.0.47(2021-06-21) +- 修复 不设置label属性,label-width属性不生效的bug +- 修复 setRules 方法与rules属性冲突的问题 +## 1.0.46(2021-06-04) +- 修复 动态删减数据导致报错的问题 +## 1.0.45(2021-06-04) +- 新增 modelValue 属性 ,value 即将废弃 +## 1.0.44(2021-06-02) +- 新增 uni-forms-item 可以设置单独的 rules +- 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤 +- 优化 submit 事件重命名为 validate +## 1.0.43(2021-05-12) +- 新增 组件示例地址 +## 1.0.42(2021-04-30) +- 修复 自定义检验器失效的问题 +## 1.0.41(2021-03-05) +- 更新 校验器 +- 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug +## 1.0.40(2021-03-04) +- 修复 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug +## 1.0.39(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 校验器传入 int 等类型 ,返回String类型的Bug diff --git a/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue new file mode 100644 index 0000000..91fe351 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue @@ -0,0 +1,627 @@ + + + + + diff --git a/uni_modules/uni-forms/components/uni-forms/uni-forms.vue b/uni_modules/uni-forms/components/uni-forms/uni-forms.vue new file mode 100644 index 0000000..ed2f6d9 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/uni-forms.vue @@ -0,0 +1,397 @@ + + + + + diff --git a/uni_modules/uni-forms/components/uni-forms/utils.js b/uni_modules/uni-forms/components/uni-forms/utils.js new file mode 100644 index 0000000..6da2421 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/utils.js @@ -0,0 +1,293 @@ +/** + * 简单处理对象拷贝 + * @param {Obejct} 被拷贝对象 + * @@return {Object} 拷贝对象 + */ +export const deepCopy = (val) => { + return JSON.parse(JSON.stringify(val)) +} +/** + * 过滤数字类型 + * @param {String} format 数字类型 + * @@return {Boolean} 返回是否为数字类型 + */ +export const typeFilter = (format) => { + return format === 'int' || format === 'double' || format === 'number' || format === 'timestamp'; +} + +/** + * 把 value 转换成指定的类型,用于处理初始值,原因是初始值需要入库不能为 undefined + * @param {String} key 字段名 + * @param {any} value 字段值 + * @param {Object} rules 表单校验规则 + */ +export const getValue = (key, value, rules) => { + const isRuleNumType = rules.find(val => val.format && typeFilter(val.format)); + const isRuleBoolType = rules.find(val => (val.format && val.format === 'boolean') || val.format === 'bool'); + // 输入类型为 number + if (!!isRuleNumType) { + if (!value && value !== 0) { + value = null + } else { + value = isNumber(Number(value)) ? Number(value) : value + } + } + + // 输入类型为 boolean + if (!!isRuleBoolType) { + value = isBoolean(value) ? value : false + } + + return value; +} + +/** + * 获取表单数据 + * @param {String|Array} name 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + * @param {any} value 需要设置的值 + */ +export const setDataValue = (field, formdata, value) => { + formdata[field] = value + return value || '' +} + +/** + * 获取表单数据 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + */ +export const getDataValue = (field, data) => { + return objGet(data, field) +} + +/** + * 获取表单类型 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + */ +export const getDataValueType = (field, data) => { + const value = getDataValue(field, data) + return { + type: type(value), + value + } +} + +/** + * 获取表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const realName = (name, data = {}) => { + const base_name = _basePath(name) + if (typeof base_name === 'object' && Array.isArray(base_name) && base_name.length > 1) { + const realname = base_name.reduce((a, b) => a += `#${b}`, '_formdata_') + return realname + } + return base_name[0] || name +} + +/** + * 判断是否表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const isRealName = (name) => { + const reg = /^_formdata_#*/ + return reg.test(name) +} + +/** + * 获取表单数据的原始格式 + * @@return {Object|Array} object 需要解析的数据 + */ +export const rawData = (object = {}, name) => { + let newData = JSON.parse(JSON.stringify(object)) + let formData = {} + for(let i in newData){ + let path = name2arr(i) + objSet(formData,path,newData[i]) + } + return formData +} + +/** + * 真实name还原为 array + * @param {*} name + */ +export const name2arr = (name) => { + let field = name.replace('_formdata_#', '') + field = field.split('#').map(v => (isNumber(v) ? Number(v) : v)) + return field +} + +/** + * 对象中设置值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} value 需要设置的值 + */ +export const objSet = (object, path, value) => { + if (typeof object !== 'object') return object; + _basePath(path).reduce((o, k, i, _) => { + if (i === _.length - 1) { + // 若遍历结束直接赋值 + o[k] = value + return null + } else if (k in o) { + // 若存在对应路径,则返回找到的对象,进行下一次遍历 + return o[k] + } else { + // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象 + o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {} + return o[k] + } + }, object) + // 返回object + return object; +} + +// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用 +function _basePath(path) { + // 若是数组,则直接返回 + if (Array.isArray(path)) return path + // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']' + return path.replace(/\[/g, '.').replace(/\]/g, '').split('.') +} + +/** + * 从对象中获取值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} defaultVal 如果无法从调用链中获取值的默认值 + */ +export const objGet = (object, path, defaultVal = 'undefined') => { + // 先将path处理成统一格式 + let newPath = _basePath(path) + // 递归处理,返回最后结果 + let val = newPath.reduce((o, k) => { + return (o || {})[k] + }, object); + return !val || val !== undefined ? val : defaultVal +} + + +/** + * 是否为 number 类型 + * @param {any} num 需要判断的值 + * @return {Boolean} 是否为 number + */ +export const isNumber = (num) => { + return !isNaN(Number(num)) +} + +/** + * 是否为 boolean 类型 + * @param {any} bool 需要判断的值 + * @return {Boolean} 是否为 boolean + */ +export const isBoolean = (bool) => { + return (typeof bool === 'boolean') +} +/** + * 是否有必填字段 + * @param {Object} rules 规则 + * @return {Boolean} 是否有必填字段 + */ +export const isRequiredField = (rules) => { + let isNoField = false; + for (let i = 0; i < rules.length; i++) { + const ruleData = rules[i]; + if (ruleData.required) { + isNoField = true; + break; + } + } + return isNoField; +} + + +/** + * 获取数据类型 + * @param {Any} obj 需要获取数据类型的值 + */ +export const type = (obj) => { + var class2type = {}; + + // 生成class2type映射 + "Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function(item, index) { + class2type["[object " + item + "]"] = item.toLowerCase(); + }) + if (obj == null) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[Object.prototype.toString.call(obj)] || "object" : + typeof obj; +} + +/** + * 判断两个值是否相等 + * @param {any} a 值 + * @param {any} b 值 + * @return {Boolean} 是否相等 + */ +export const isEqual = (a, b) => { + //如果a和b本来就全等 + if (a === b) { + //判断是否为0和-0 + return a !== 0 || 1 / a === 1 / b; + } + //判断是否为null和undefined + if (a == null || b == null) { + return a === b; + } + //接下来判断a和b的数据类型 + var classNameA = toString.call(a), + classNameB = toString.call(b); + //如果数据类型不相等,则返回false + if (classNameA !== classNameB) { + return false; + } + //如果数据类型相等,再根据不同数据类型分别判断 + switch (classNameA) { + case '[object RegExp]': + case '[object String]': + //进行字符串转换比较 + return '' + a === '' + b; + case '[object Number]': + //进行数字转换比较,判断是否为NaN + if (+a !== +a) { + return +b !== +b; + } + //判断是否为0或-0 + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + return +a === +b; + } + //如果是对象类型 + if (classNameA == '[object Object]') { + //获取a和b的属性长度 + var propsA = Object.getOwnPropertyNames(a), + propsB = Object.getOwnPropertyNames(b); + if (propsA.length != propsB.length) { + return false; + } + for (var i = 0; i < propsA.length; i++) { + var propName = propsA[i]; + //如果对应属性对应值不相等,则返回false + if (a[propName] !== b[propName]) { + return false; + } + } + return true; + } + //如果是数组类型 + if (classNameA == '[object Array]') { + if (a.toString() == b.toString()) { + return true; + } + return false; + } +} diff --git a/uni_modules/uni-forms/components/uni-forms/validate.js b/uni_modules/uni-forms/components/uni-forms/validate.js new file mode 100644 index 0000000..1834c6c --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/validate.js @@ -0,0 +1,486 @@ +var pattern = { + email: /^\S+?@\S+?\.\S+?$/, + idcard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, + url: new RegExp( + "^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", + 'i') +}; + +const FORMAT_MAPPING = { + "int": 'integer', + "bool": 'boolean', + "double": 'number', + "long": 'number', + "password": 'string' + // "fileurls": 'array' +} + +function formatMessage(args, resources = '') { + var defaultMessage = ['label'] + defaultMessage.forEach((item) => { + if (args[item] === undefined) { + args[item] = '' + } + }) + + let str = resources + for (let key in args) { + let reg = new RegExp('{' + key + '}') + str = str.replace(reg, args[key]) + } + return str +} + +function isEmptyValue(value, type) { + if (value === undefined || value === null) { + return true; + } + + if (typeof value === 'string' && !value) { + return true; + } + + if (Array.isArray(value) && !value.length) { + return true; + } + + if (type === 'object' && !Object.keys(value).length) { + return true; + } + + return false; +} + +const types = { + integer(value) { + return types.number(value) && parseInt(value, 10) === value; + }, + string(value) { + return typeof value === 'string'; + }, + number(value) { + if (isNaN(value)) { + return false; + } + return typeof value === 'number'; + }, + "boolean": function(value) { + return typeof value === 'boolean'; + }, + "float": function(value) { + return types.number(value) && !types.integer(value); + }, + array(value) { + return Array.isArray(value); + }, + object(value) { + return typeof value === 'object' && !types.array(value); + }, + date(value) { + return value instanceof Date; + }, + timestamp(value) { + if (!this.integer(value) || Math.abs(value).toString().length > 16) { + return false + } + return true; + }, + file(value) { + return typeof value.url === 'string'; + }, + email(value) { + return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255; + }, + url(value) { + return typeof value === 'string' && !!value.match(pattern.url); + }, + pattern(reg, value) { + try { + return new RegExp(reg).test(value); + } catch (e) { + return false; + } + }, + method(value) { + return typeof value === 'function'; + }, + idcard(value) { + return typeof value === 'string' && !!value.match(pattern.idcard); + }, + 'url-https'(value) { + return this.url(value) && value.startsWith('https://'); + }, + 'url-scheme'(value) { + return value.startsWith('://'); + }, + 'url-web'(value) { + return false; + } +} + +class RuleValidator { + + constructor(message) { + this._message = message + } + + async validateRule(fieldKey, fieldValue, value, data, allData) { + var result = null + + let rules = fieldValue.rules + + let hasRequired = rules.findIndex((item) => { + return item.required + }) + if (hasRequired < 0) { + if (value === null || value === undefined) { + return result + } + if (typeof value === 'string' && !value.length) { + return result + } + } + + var message = this._message + + if (rules === undefined) { + return message['default'] + } + + for (var i = 0; i < rules.length; i++) { + let rule = rules[i] + let vt = this._getValidateType(rule) + + Object.assign(rule, { + label: fieldValue.label || `["${fieldKey}"]` + }) + + if (RuleValidatorHelper[vt]) { + result = RuleValidatorHelper[vt](rule, value, message) + if (result != null) { + break + } + } + + if (rule.validateExpr) { + let now = Date.now() + let resultExpr = rule.validateExpr(value, allData, now) + if (resultExpr === false) { + result = this._getMessage(rule, rule.errorMessage || this._message['default']) + break + } + } + + if (rule.validateFunction) { + result = await this.validateFunction(rule, value, data, allData, vt) + if (result !== null) { + break + } + } + } + + if (result !== null) { + result = message.TAG + result + } + + return result + } + + async validateFunction(rule, value, data, allData, vt) { + let result = null + try { + let callbackMessage = null + const res = await rule.validateFunction(rule, value, allData || data, (message) => { + callbackMessage = message + }) + if (callbackMessage || (typeof res === 'string' && res) || res === false) { + result = this._getMessage(rule, callbackMessage || res, vt) + } + } catch (e) { + result = this._getMessage(rule, e.message, vt) + } + return result + } + + _getMessage(rule, message, vt) { + return formatMessage(rule, message || rule.errorMessage || this._message[vt] || message['default']) + } + + _getValidateType(rule) { + var result = '' + if (rule.required) { + result = 'required' + } else if (rule.format) { + result = 'format' + } else if (rule.arrayType) { + result = 'arrayTypeFormat' + } else if (rule.range) { + result = 'range' + } else if (rule.maximum !== undefined || rule.minimum !== undefined) { + result = 'rangeNumber' + } else if (rule.maxLength !== undefined || rule.minLength !== undefined) { + result = 'rangeLength' + } else if (rule.pattern) { + result = 'pattern' + } else if (rule.validateFunction) { + result = 'validateFunction' + } + return result + } +} + +const RuleValidatorHelper = { + required(rule, value, message) { + if (rule.required && isEmptyValue(value, rule.format || typeof value)) { + return formatMessage(rule, rule.errorMessage || message.required); + } + + return null + }, + + range(rule, value, message) { + const { + range, + errorMessage + } = rule; + + let list = new Array(range.length); + for (let i = 0; i < range.length; i++) { + const item = range[i]; + if (types.object(item) && item.value !== undefined) { + list[i] = item.value; + } else { + list[i] = item; + } + } + + let result = false + if (Array.isArray(value)) { + result = (new Set(value.concat(list)).size === list.length); + } else { + if (list.indexOf(value) > -1) { + result = true; + } + } + + if (!result) { + return formatMessage(rule, errorMessage || message['enum']); + } + + return null + }, + + rangeNumber(rule, value, message) { + if (!types.number(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let { + minimum, + maximum, + exclusiveMinimum, + exclusiveMaximum + } = rule; + let min = exclusiveMinimum ? value <= minimum : value < minimum; + let max = exclusiveMaximum ? value >= maximum : value > maximum; + + if (minimum !== undefined && min) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMinimum ? + 'exclusiveMinimum' : 'minimum' + ]) + } else if (maximum !== undefined && max) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMaximum ? + 'exclusiveMaximum' : 'maximum' + ]) + } else if (minimum !== undefined && maximum !== undefined && (min || max)) { + return formatMessage(rule, rule.errorMessage || message['number'].range) + } + + return null + }, + + rangeLength(rule, value, message) { + if (!types.string(value) && !types.array(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let min = rule.minLength; + let max = rule.maxLength; + let val = value.length; + + if (min !== undefined && val < min) { + return formatMessage(rule, rule.errorMessage || message['length'].minLength) + } else if (max !== undefined && val > max) { + return formatMessage(rule, rule.errorMessage || message['length'].maxLength) + } else if (min !== undefined && max !== undefined && (val < min || val > max)) { + return formatMessage(rule, rule.errorMessage || message['length'].range) + } + + return null + }, + + pattern(rule, value, message) { + if (!types['pattern'](rule.pattern, value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + return null + }, + + format(rule, value, message) { + var customTypes = Object.keys(types); + var format = FORMAT_MAPPING[rule.format] ? FORMAT_MAPPING[rule.format] : (rule.format || rule.arrayType); + + if (customTypes.indexOf(format) > -1) { + if (!types[format](value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + } + + return null + }, + + arrayTypeFormat(rule, value, message) { + if (!Array.isArray(value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + + for (let i = 0; i < value.length; i++) { + const element = value[i]; + let formatResult = this.format(rule, element, message) + if (formatResult !== null) { + return formatResult + } + } + + return null + } +} + +class SchemaValidator extends RuleValidator { + + constructor(schema, options) { + super(SchemaValidator.message); + + this._schema = schema + this._options = options || null + } + + updateSchema(schema) { + this._schema = schema + } + + async validate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, false, allData) + } + return result.length ? result[0] : null + } + + async validateAll(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, true, allData) + } + return result + } + + async validateUpdate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidateUpdate(data, false, allData) + } + return result.length ? result[0] : null + } + + async invokeValidate(data, all, allData) { + let result = [] + let schema = this._schema + for (let key in schema) { + let value = schema[key] + let errorMessage = await this.validateRule(key, value, data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + async invokeValidateUpdate(data, all, allData) { + let result = [] + for (let key in data) { + let errorMessage = await this.validateRule(key, this._schema[key], data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + _checkFieldInSchema(data) { + var keys = Object.keys(data) + var keys2 = Object.keys(this._schema) + if (new Set(keys.concat(keys2)).size === keys2.length) { + return '' + } + + var noExistFields = keys.filter((key) => { + return keys2.indexOf(key) < 0; + }) + var errorMessage = formatMessage({ + field: JSON.stringify(noExistFields) + }, SchemaValidator.message.TAG + SchemaValidator.message['defaultInvalid']) + return [{ + key: 'invalid', + errorMessage + }] + } +} + +function Message() { + return { + TAG: "", + default: '验证错误', + defaultInvalid: '提交的字段{field}在数据库中并不存在', + validateFunction: '验证无效', + required: '{label}必填', + 'enum': '{label}超出范围', + timestamp: '{label}格式无效', + whitespace: '{label}不能为空', + typeError: '{label}类型无效', + date: { + format: '{label}日期{value}格式无效', + parse: '{label}日期无法解析,{value}无效', + invalid: '{label}日期{value}无效' + }, + length: { + minLength: '{label}长度不能少于{minLength}', + maxLength: '{label}长度不能超过{maxLength}', + range: '{label}必须介于{minLength}和{maxLength}之间' + }, + number: { + minimum: '{label}不能小于{minimum}', + maximum: '{label}不能大于{maximum}', + exclusiveMinimum: '{label}不能小于等于{minimum}', + exclusiveMaximum: '{label}不能大于等于{maximum}', + range: '{label}必须介于{minimum}and{maximum}之间' + }, + pattern: { + mismatch: '{label}格式不匹配' + } + }; +} + + +SchemaValidator.message = new Message(); + +export default SchemaValidator diff --git a/uni_modules/uni-forms/package.json b/uni_modules/uni-forms/package.json new file mode 100644 index 0000000..1925611 --- /dev/null +++ b/uni_modules/uni-forms/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-forms", + "displayName": "uni-forms 表单", + "version": "1.4.9", + "description": "由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "keywords": [ + "uni-ui", + "表单", + "校验", + "表单校验", + "表单验证" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-forms/readme.md b/uni_modules/uni-forms/readme.md new file mode 100644 index 0000000..63d5a04 --- /dev/null +++ b/uni_modules/uni-forms/readme.md @@ -0,0 +1,23 @@ + + +## Forms 表单 + +> **组件名:uni-forms** +> 代码块: `uForms`、`uni-forms-item` +> 关联组件:`uni-forms-item`、`uni-easyinput`、`uni-data-checkbox`、`uni-group`。 + + +uni-app的内置组件已经有了 `
`组件,用于提交表单内容。 + +然而几乎每个表单都需要做表单验证,为了方便做表单验证,减少重复开发,`uni ui` 又基于 ``组件封装了 ``组件,内置了表单验证功能。 + +`` 提供了 `rules`属性来描述校验规则、``子组件来包裹具体的表单项,以及给原生或三方组件提供了 `binddata()` 来设置表单值。 + +每个要校验的表单项,不管input还是checkbox,都必须放在``组件中,且一个``组件只能放置一个表单项。 + +``组件内部预留了显示error message的区域,默认是在表单项的底部。 + +另外,``组件下面的各个表单项,可以通过``包裹为不同的分组。同一``下的不同表单项目将聚拢在一起,同其他group保持垂直间距。``仅影响视觉效果。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-forms) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-goods-nav/changelog.md b/uni_modules/uni-goods-nav/changelog.md new file mode 100644 index 0000000..c6264c6 --- /dev/null +++ b/uni_modules/uni-goods-nav/changelog.md @@ -0,0 +1,18 @@ +## 1.2.1(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-goods-nav](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json new file mode 100644 index 0000000..dcdba41 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "shop", + "uni-goods-nav.options.cart": "cart", + "uni-goods-nav.buttonGroup.addToCart": "add to cart", + "uni-goods-nav.buttonGroup.buyNow": "buy now" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json new file mode 100644 index 0000000..48ee344 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店铺", + "uni-goods-nav.options.cart": "购物车", + "uni-goods-nav.buttonGroup.addToCart": "加入购物车", + "uni-goods-nav.buttonGroup.buyNow": "立即购买" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json new file mode 100644 index 0000000..d0a0255 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店鋪", + "uni-goods-nav.options.cart": "購物車", + "uni-goods-nav.buttonGroup.addToCart": "加入購物車", + "uni-goods-nav.buttonGroup.buyNow": "立即購買" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue b/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue new file mode 100644 index 0000000..8a16b17 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uni_modules/uni-goods-nav/package.json b/uni_modules/uni-goods-nav/package.json new file mode 100644 index 0000000..636e45e --- /dev/null +++ b/uni_modules/uni-goods-nav/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-goods-nav", + "displayName": "uni-goods-nav 商品导航", + "version": "1.2.1", + "description": "商品导航组件主要用于电商类应用底部导航,可自定义加入购物车,购买等操作", + "keywords": [ + "uni-ui", + "uniui", + "商品导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-goods-nav/readme.md b/uni_modules/uni-goods-nav/readme.md new file mode 100644 index 0000000..07df93f --- /dev/null +++ b/uni_modules/uni-goods-nav/readme.md @@ -0,0 +1,10 @@ + + +## GoodsNav 商品导航 +> **组件名:uni-goods-nav** +> 代码块: `uGoodsNav` + +商品加入购物车,立即购买等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-grid/changelog.md b/uni_modules/uni-grid/changelog.md new file mode 100644 index 0000000..d301166 --- /dev/null +++ b/uni_modules/uni-grid/changelog.md @@ -0,0 +1,13 @@ +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-grid](https://uniapp.dcloud.io/component/uniui/uni-grid) +## 1.3.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.3.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.3.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.4(2021-05-12) +- 新增 组件示例地址 +## 1.2.3(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue b/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue new file mode 100644 index 0000000..20fd54e --- /dev/null +++ b/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uni-grid/components/uni-grid/uni-grid.vue b/uni_modules/uni-grid/components/uni-grid/uni-grid.vue new file mode 100644 index 0000000..96a412f --- /dev/null +++ b/uni_modules/uni-grid/components/uni-grid/uni-grid.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/uni_modules/uni-grid/package.json b/uni_modules/uni-grid/package.json new file mode 100644 index 0000000..ccb2c91 --- /dev/null +++ b/uni_modules/uni-grid/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-grid", + "displayName": "uni-grid 宫格", + "version": "1.4.0", + "description": "Grid 宫格组件,提供移动端常见的宫格布局,如九宫格。", + "keywords": [ + "uni-ui", + "uniui", + "九宫格", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-grid/readme.md b/uni_modules/uni-grid/readme.md new file mode 100644 index 0000000..0aa44cc --- /dev/null +++ b/uni_modules/uni-grid/readme.md @@ -0,0 +1,11 @@ + + +## Grid 宫格 +> **组件名:uni-grid** +> 代码块: `uGrid` + + +宫格组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-grid) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-group/changelog.md b/uni_modules/uni-group/changelog.md new file mode 100644 index 0000000..a7024fd --- /dev/null +++ b/uni_modules/uni-group/changelog.md @@ -0,0 +1,16 @@ +## 1.2.2(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-group](https://uniapp.dcloud.io/component/uniui/uni-group) +## 1.1.7(2021-11-08) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 优化 组件文档 +## 1.0.3(2021-05-12) +- 新增 组件示例地址 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 兼容 nvue 页面 diff --git a/uni_modules/uni-group/components/uni-group/uni-group.vue b/uni_modules/uni-group/components/uni-group/uni-group.vue new file mode 100644 index 0000000..3425ecd --- /dev/null +++ b/uni_modules/uni-group/components/uni-group/uni-group.vue @@ -0,0 +1,134 @@ + + + + diff --git a/uni_modules/uni-group/package.json b/uni_modules/uni-group/package.json new file mode 100644 index 0000000..ea00a08 --- /dev/null +++ b/uni_modules/uni-group/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-group", + "displayName": "uni-group 分组", + "version": "1.2.2", + "description": "分组组件可用于将组件用于分组,添加间隔,以产生明显的区块", + "keywords": [ + "uni-ui", + "uniui", + "group", + "分组", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-group/readme.md b/uni_modules/uni-group/readme.md new file mode 100644 index 0000000..bae67f4 --- /dev/null +++ b/uni_modules/uni-group/readme.md @@ -0,0 +1,9 @@ + +## Group 分组 +> **组件名:uni-group** +> 代码块: `uGroup` + +分组组件可用于将组件分组,添加间隔,以产生明显的区块。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-group) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-icons/changelog.md b/uni_modules/uni-icons/changelog.md new file mode 100644 index 0000000..6449885 --- /dev/null +++ b/uni_modules/uni-icons/changelog.md @@ -0,0 +1,22 @@ +## 1.3.5(2022-01-24) +- 优化 size 属性可以传入不带单位的字符串数值 +## 1.3.4(2022-01-24) +- 优化 size 支持其他单位 +## 1.3.3(2022-01-17) +- 修复 nvue 有些图标不显示的bug,兼容老版本图标 +## 1.3.2(2021-12-01) +- 优化 示例可复制图标名称 +## 1.3.1(2021-11-23) +- 优化 兼容旧组件 type 值 +## 1.3.0(2021-11-19) +- 新增 更多图标 +- 优化 自定义图标使用方式 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) +## 1.1.7(2021-11-08) +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.5(2021-05-12) +- 新增 组件示例地址 +## 1.1.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-icons/components/uni-icons/icons.js b/uni_modules/uni-icons/components/uni-icons/icons.js new file mode 100644 index 0000000..7889936 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/icons.js @@ -0,0 +1,1169 @@ +export default { + "id": "2852637", + "name": "uniui图标库", + "font_family": "uniicons", + "css_prefix_text": "uniui-", + "description": "", + "glyphs": [ + { + "icon_id": "25027049", + "name": "yanse", + "font_class": "color", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "25027048", + "name": "wallet", + "font_class": "wallet", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "25015720", + "name": "settings-filled", + "font_class": "settings-filled", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "25015434", + "name": "shimingrenzheng-filled", + "font_class": "auth-filled", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "24934246", + "name": "shop-filled", + "font_class": "shop-filled", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "24934159", + "name": "staff-filled-01", + "font_class": "staff-filled", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "24932461", + "name": "VIP-filled", + "font_class": "vip-filled", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "24932462", + "name": "plus_circle_fill", + "font_class": "plus-filled", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "24932463", + "name": "folder_add-filled", + "font_class": "folder-add-filled", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "24932464", + "name": "yanse-filled", + "font_class": "color-filled", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "24932465", + "name": "tune-filled", + "font_class": "tune-filled", + "unicode": "e6ca", + "unicode_decimal": 59082 + }, + { + "icon_id": "24932455", + "name": "a-rilidaka-filled", + "font_class": "calendar-filled", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "24932456", + "name": "notification-filled", + "font_class": "notification-filled", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "24932457", + "name": "wallet-filled", + "font_class": "wallet-filled", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "24932458", + "name": "paihangbang-filled", + "font_class": "medal-filled", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "24932459", + "name": "gift-filled", + "font_class": "gift-filled", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "24932460", + "name": "fire-filled", + "font_class": "fire-filled", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "24928001", + "name": "refreshempty", + "font_class": "refreshempty", + "unicode": "e6bf", + "unicode_decimal": 59071 + }, + { + "icon_id": "24926853", + "name": "location-ellipse", + "font_class": "location-filled", + "unicode": "e6af", + "unicode_decimal": 59055 + }, + { + "icon_id": "24926735", + "name": "person-filled", + "font_class": "person-filled", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "24926703", + "name": "personadd-filled", + "font_class": "personadd-filled", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "24923351", + "name": "back", + "font_class": "back", + "unicode": "e6b9", + "unicode_decimal": 59065 + }, + { + "icon_id": "24923352", + "name": "forward", + "font_class": "forward", + "unicode": "e6ba", + "unicode_decimal": 59066 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrow-right", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrowthinright", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrow-left", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrowthinleft", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrow-up", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrowthinup", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrow-down", + "unicode": "e6be", + "unicode_decimal": 59070 + },{ + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrowthindown", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "bottom", + "unicode": "e6b8", + "unicode_decimal": 59064 + },{ + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "arrowdown", + "unicode": "e6b8", + "unicode_decimal": 59064 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "right", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "arrowright", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "top", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "arrowup", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "left", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "arrowleft", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923334", + "name": "eye", + "font_class": "eye", + "unicode": "e651", + "unicode_decimal": 58961 + }, + { + "icon_id": "24923335", + "name": "eye-filled", + "font_class": "eye-filled", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "24923336", + "name": "eye-slash", + "font_class": "eye-slash", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, + { + "icon_id": "24923337", + "name": "eye-slash-filled", + "font_class": "eye-slash-filled", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, + { + "icon_id": "24923305", + "name": "info-filled", + "font_class": "info-filled", + "unicode": "e649", + "unicode_decimal": 58953 + }, + { + "icon_id": "24923299", + "name": "reload-01", + "font_class": "reload", + "unicode": "e6b2", + "unicode_decimal": 59058 + }, + { + "icon_id": "24923195", + "name": "mic_slash_fill", + "font_class": "micoff-filled", + "unicode": "e6b0", + "unicode_decimal": 59056 + }, + { + "icon_id": "24923165", + "name": "map-pin-ellipse", + "font_class": "map-pin-ellipse", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "24923166", + "name": "map-pin", + "font_class": "map-pin", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "24923167", + "name": "location", + "font_class": "location", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "24923064", + "name": "starhalf", + "font_class": "starhalf", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "24923065", + "name": "star", + "font_class": "star", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "24923066", + "name": "star-filled", + "font_class": "star-filled", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "24899646", + "name": "a-rilidaka", + "font_class": "calendar", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "24899647", + "name": "fire", + "font_class": "fire", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "24899648", + "name": "paihangbang", + "font_class": "medal", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "24899649", + "name": "font", + "font_class": "font", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "24899650", + "name": "gift", + "font_class": "gift", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "24899651", + "name": "link", + "font_class": "link", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "24899652", + "name": "notification", + "font_class": "notification", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "24899653", + "name": "staff", + "font_class": "staff", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "24899654", + "name": "VIP", + "font_class": "vip", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "24899655", + "name": "folder_add", + "font_class": "folder-add", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "24899656", + "name": "tune", + "font_class": "tune", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "24899657", + "name": "shimingrenzheng", + "font_class": "auth", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "24899565", + "name": "person", + "font_class": "person", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "24899566", + "name": "email-filled", + "font_class": "email-filled", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "24899567", + "name": "phone-filled", + "font_class": "phone-filled", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "24899568", + "name": "phone", + "font_class": "phone", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "24899570", + "name": "email", + "font_class": "email", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "24899571", + "name": "personadd", + "font_class": "personadd", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "24899558", + "name": "chatboxes-filled", + "font_class": "chatboxes-filled", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "24899559", + "name": "contact", + "font_class": "contact", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "24899560", + "name": "chatbubble-filled", + "font_class": "chatbubble-filled", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "24899561", + "name": "contact-filled", + "font_class": "contact-filled", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "24899562", + "name": "chatboxes", + "font_class": "chatboxes", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "24899563", + "name": "chatbubble", + "font_class": "chatbubble", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "24881290", + "name": "upload-filled", + "font_class": "upload-filled", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "24881292", + "name": "upload", + "font_class": "upload", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "24881293", + "name": "weixin", + "font_class": "weixin", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "24881274", + "name": "compose", + "font_class": "compose", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "24881275", + "name": "qq", + "font_class": "qq", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "24881276", + "name": "download-filled", + "font_class": "download-filled", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "24881277", + "name": "pengyouquan", + "font_class": "pyq", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "24881279", + "name": "sound", + "font_class": "sound", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "24881280", + "name": "trash-filled", + "font_class": "trash-filled", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "24881281", + "name": "sound-filled", + "font_class": "sound-filled", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "24881282", + "name": "trash", + "font_class": "trash", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "24881284", + "name": "videocam-filled", + "font_class": "videocam-filled", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "24881285", + "name": "spinner-cycle", + "font_class": "spinner-cycle", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "24881286", + "name": "weibo", + "font_class": "weibo", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "24881288", + "name": "videocam", + "font_class": "videocam", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "24881289", + "name": "download", + "font_class": "download", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "24879601", + "name": "help", + "font_class": "help", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "24879602", + "name": "navigate-filled", + "font_class": "navigate-filled", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "24879603", + "name": "plusempty", + "font_class": "plusempty", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "24879604", + "name": "smallcircle", + "font_class": "smallcircle", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "24879605", + "name": "minus-filled", + "font_class": "minus-filled", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "24879606", + "name": "micoff", + "font_class": "micoff", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "24879588", + "name": "closeempty", + "font_class": "closeempty", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "24879589", + "name": "clear", + "font_class": "clear", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "24879590", + "name": "navigate", + "font_class": "navigate", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "24879591", + "name": "minus", + "font_class": "minus", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "24879592", + "name": "image", + "font_class": "image", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "24879593", + "name": "mic", + "font_class": "mic", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "24879594", + "name": "paperplane", + "font_class": "paperplane", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "24879595", + "name": "close", + "font_class": "close", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "24879596", + "name": "help-filled", + "font_class": "help-filled", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "24879597", + "name": "plus-filled", + "font_class": "paperplane-filled", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "24879598", + "name": "plus", + "font_class": "plus", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "24879599", + "name": "mic-filled", + "font_class": "mic-filled", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "24879600", + "name": "image-filled", + "font_class": "image-filled", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "24855900", + "name": "locked-filled", + "font_class": "locked-filled", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "24855901", + "name": "info", + "font_class": "info", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "24855903", + "name": "locked", + "font_class": "locked", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "24855884", + "name": "camera-filled", + "font_class": "camera-filled", + "unicode": "e658", + "unicode_decimal": 58968 + }, + { + "icon_id": "24855885", + "name": "chat-filled", + "font_class": "chat-filled", + "unicode": "e659", + "unicode_decimal": 58969 + }, + { + "icon_id": "24855886", + "name": "camera", + "font_class": "camera", + "unicode": "e65a", + "unicode_decimal": 58970 + }, + { + "icon_id": "24855887", + "name": "circle", + "font_class": "circle", + "unicode": "e65b", + "unicode_decimal": 58971 + }, + { + "icon_id": "24855888", + "name": "checkmarkempty", + "font_class": "checkmarkempty", + "unicode": "e65c", + "unicode_decimal": 58972 + }, + { + "icon_id": "24855889", + "name": "chat", + "font_class": "chat", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "24855890", + "name": "circle-filled", + "font_class": "circle-filled", + "unicode": "e65e", + "unicode_decimal": 58974 + }, + { + "icon_id": "24855891", + "name": "flag", + "font_class": "flag", + "unicode": "e65f", + "unicode_decimal": 58975 + }, + { + "icon_id": "24855892", + "name": "flag-filled", + "font_class": "flag-filled", + "unicode": "e660", + "unicode_decimal": 58976 + }, + { + "icon_id": "24855893", + "name": "gear-filled", + "font_class": "gear-filled", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "24855894", + "name": "home", + "font_class": "home", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "24855895", + "name": "home-filled", + "font_class": "home-filled", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "24855896", + "name": "gear", + "font_class": "gear", + "unicode": "e664", + "unicode_decimal": 58980 + }, + { + "icon_id": "24855897", + "name": "smallcircle-filled", + "font_class": "smallcircle-filled", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "24855898", + "name": "map-filled", + "font_class": "map-filled", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "24855899", + "name": "map", + "font_class": "map", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "24855825", + "name": "refresh-filled", + "font_class": "refresh-filled", + "unicode": "e656", + "unicode_decimal": 58966 + }, + { + "icon_id": "24855826", + "name": "refresh", + "font_class": "refresh", + "unicode": "e657", + "unicode_decimal": 58967 + }, + { + "icon_id": "24855808", + "name": "cloud-upload", + "font_class": "cloud-upload", + "unicode": "e645", + "unicode_decimal": 58949 + }, + { + "icon_id": "24855809", + "name": "cloud-download-filled", + "font_class": "cloud-download-filled", + "unicode": "e646", + "unicode_decimal": 58950 + }, + { + "icon_id": "24855810", + "name": "cloud-download", + "font_class": "cloud-download", + "unicode": "e647", + "unicode_decimal": 58951 + }, + { + "icon_id": "24855811", + "name": "cloud-upload-filled", + "font_class": "cloud-upload-filled", + "unicode": "e648", + "unicode_decimal": 58952 + }, + { + "icon_id": "24855813", + "name": "redo", + "font_class": "redo", + "unicode": "e64a", + "unicode_decimal": 58954 + }, + { + "icon_id": "24855814", + "name": "images-filled", + "font_class": "images-filled", + "unicode": "e64b", + "unicode_decimal": 58955 + }, + { + "icon_id": "24855815", + "name": "undo-filled", + "font_class": "undo-filled", + "unicode": "e64c", + "unicode_decimal": 58956 + }, + { + "icon_id": "24855816", + "name": "more", + "font_class": "more", + "unicode": "e64d", + "unicode_decimal": 58957 + }, + { + "icon_id": "24855817", + "name": "more-filled", + "font_class": "more-filled", + "unicode": "e64e", + "unicode_decimal": 58958 + }, + { + "icon_id": "24855818", + "name": "undo", + "font_class": "undo", + "unicode": "e64f", + "unicode_decimal": 58959 + }, + { + "icon_id": "24855819", + "name": "images", + "font_class": "images", + "unicode": "e650", + "unicode_decimal": 58960 + }, + { + "icon_id": "24855821", + "name": "paperclip", + "font_class": "paperclip", + "unicode": "e652", + "unicode_decimal": 58962 + }, + { + "icon_id": "24855822", + "name": "settings", + "font_class": "settings", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "24855823", + "name": "search", + "font_class": "search", + "unicode": "e654", + "unicode_decimal": 58964 + }, + { + "icon_id": "24855824", + "name": "redo-filled", + "font_class": "redo-filled", + "unicode": "e655", + "unicode_decimal": 58965 + }, + { + "icon_id": "24841702", + "name": "list", + "font_class": "list", + "unicode": "e644", + "unicode_decimal": 58948 + }, + { + "icon_id": "24841489", + "name": "mail-open-filled", + "font_class": "mail-open-filled", + "unicode": "e63a", + "unicode_decimal": 58938 + }, + { + "icon_id": "24841491", + "name": "hand-thumbsdown-filled", + "font_class": "hand-down-filled", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "24841492", + "name": "hand-thumbsdown", + "font_class": "hand-down", + "unicode": "e63d", + "unicode_decimal": 58941 + }, + { + "icon_id": "24841493", + "name": "hand-thumbsup-filled", + "font_class": "hand-up-filled", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "24841494", + "name": "hand-thumbsup", + "font_class": "hand-up", + "unicode": "e63f", + "unicode_decimal": 58943 + }, + { + "icon_id": "24841496", + "name": "heart-filled", + "font_class": "heart-filled", + "unicode": "e641", + "unicode_decimal": 58945 + }, + { + "icon_id": "24841498", + "name": "mail-open", + "font_class": "mail-open", + "unicode": "e643", + "unicode_decimal": 58947 + }, + { + "icon_id": "24841488", + "name": "heart", + "font_class": "heart", + "unicode": "e639", + "unicode_decimal": 58937 + }, + { + "icon_id": "24839963", + "name": "loop", + "font_class": "loop", + "unicode": "e633", + "unicode_decimal": 58931 + }, + { + "icon_id": "24839866", + "name": "pulldown", + "font_class": "pulldown", + "unicode": "e632", + "unicode_decimal": 58930 + }, + { + "icon_id": "24813798", + "name": "scan", + "font_class": "scan", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "24813786", + "name": "bars", + "font_class": "bars", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "24813788", + "name": "cart-filled", + "font_class": "cart-filled", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "24813790", + "name": "checkbox", + "font_class": "checkbox", + "unicode": "e62b", + "unicode_decimal": 58923 + }, + { + "icon_id": "24813791", + "name": "checkbox-filled", + "font_class": "checkbox-filled", + "unicode": "e62c", + "unicode_decimal": 58924 + }, + { + "icon_id": "24813794", + "name": "shop", + "font_class": "shop", + "unicode": "e62f", + "unicode_decimal": 58927 + }, + { + "icon_id": "24813795", + "name": "headphones", + "font_class": "headphones", + "unicode": "e630", + "unicode_decimal": 58928 + }, + { + "icon_id": "24813796", + "name": "cart", + "font_class": "cart", + "unicode": "e631", + "unicode_decimal": 58929 + } + ] +} diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..86e7444 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.css b/uni_modules/uni-icons/components/uni-icons/uniicons.css new file mode 100644 index 0000000..2f56eab --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uniicons.css @@ -0,0 +1,663 @@ +.uniui-color:before { + content: "\e6cf"; +} + +.uniui-wallet:before { + content: "\e6b1"; +} + +.uniui-settings-filled:before { + content: "\e6ce"; +} + +.uniui-auth-filled:before { + content: "\e6cc"; +} + +.uniui-shop-filled:before { + content: "\e6cd"; +} + +.uniui-staff-filled:before { + content: "\e6cb"; +} + +.uniui-vip-filled:before { + content: "\e6c6"; +} + +.uniui-plus-filled:before { + content: "\e6c7"; +} + +.uniui-folder-add-filled:before { + content: "\e6c8"; +} + +.uniui-color-filled:before { + content: "\e6c9"; +} + +.uniui-tune-filled:before { + content: "\e6ca"; +} + +.uniui-calendar-filled:before { + content: "\e6c0"; +} + +.uniui-notification-filled:before { + content: "\e6c1"; +} + +.uniui-wallet-filled:before { + content: "\e6c2"; +} + +.uniui-medal-filled:before { + content: "\e6c3"; +} + +.uniui-gift-filled:before { + content: "\e6c4"; +} + +.uniui-fire-filled:before { + content: "\e6c5"; +} + +.uniui-refreshempty:before { + content: "\e6bf"; +} + +.uniui-location-filled:before { + content: "\e6af"; +} + +.uniui-person-filled:before { + content: "\e69d"; +} + +.uniui-personadd-filled:before { + content: "\e698"; +} + +.uniui-back:before { + content: "\e6b9"; +} + +.uniui-forward:before { + content: "\e6ba"; +} + +.uniui-arrow-right:before { + content: "\e6bb"; +} + +.uniui-arrowthinright:before { + content: "\e6bb"; +} + +.uniui-arrow-left:before { + content: "\e6bc"; +} + +.uniui-arrowthinleft:before { + content: "\e6bc"; +} + +.uniui-arrow-up:before { + content: "\e6bd"; +} + +.uniui-arrowthinup:before { + content: "\e6bd"; +} + +.uniui-arrow-down:before { + content: "\e6be"; +} + +.uniui-arrowthindown:before { + content: "\e6be"; +} + +.uniui-bottom:before { + content: "\e6b8"; +} + +.uniui-arrowdown:before { + content: "\e6b8"; +} + +.uniui-right:before { + content: "\e6b5"; +} + +.uniui-arrowright:before { + content: "\e6b5"; +} + +.uniui-top:before { + content: "\e6b6"; +} + +.uniui-arrowup:before { + content: "\e6b6"; +} + +.uniui-left:before { + content: "\e6b7"; +} + +.uniui-arrowleft:before { + content: "\e6b7"; +} + +.uniui-eye:before { + content: "\e651"; +} + +.uniui-eye-filled:before { + content: "\e66a"; +} + +.uniui-eye-slash:before { + content: "\e6b3"; +} + +.uniui-eye-slash-filled:before { + content: "\e6b4"; +} + +.uniui-info-filled:before { + content: "\e649"; +} + +.uniui-reload:before { + content: "\e6b2"; +} + +.uniui-micoff-filled:before { + content: "\e6b0"; +} + +.uniui-map-pin-ellipse:before { + content: "\e6ac"; +} + +.uniui-map-pin:before { + content: "\e6ad"; +} + +.uniui-location:before { + content: "\e6ae"; +} + +.uniui-starhalf:before { + content: "\e683"; +} + +.uniui-star:before { + content: "\e688"; +} + +.uniui-star-filled:before { + content: "\e68f"; +} + +.uniui-calendar:before { + content: "\e6a0"; +} + +.uniui-fire:before { + content: "\e6a1"; +} + +.uniui-medal:before { + content: "\e6a2"; +} + +.uniui-font:before { + content: "\e6a3"; +} + +.uniui-gift:before { + content: "\e6a4"; +} + +.uniui-link:before { + content: "\e6a5"; +} + +.uniui-notification:before { + content: "\e6a6"; +} + +.uniui-staff:before { + content: "\e6a7"; +} + +.uniui-vip:before { + content: "\e6a8"; +} + +.uniui-folder-add:before { + content: "\e6a9"; +} + +.uniui-tune:before { + content: "\e6aa"; +} + +.uniui-auth:before { + content: "\e6ab"; +} + +.uniui-person:before { + content: "\e699"; +} + +.uniui-email-filled:before { + content: "\e69a"; +} + +.uniui-phone-filled:before { + content: "\e69b"; +} + +.uniui-phone:before { + content: "\e69c"; +} + +.uniui-email:before { + content: "\e69e"; +} + +.uniui-personadd:before { + content: "\e69f"; +} + +.uniui-chatboxes-filled:before { + content: "\e692"; +} + +.uniui-contact:before { + content: "\e693"; +} + +.uniui-chatbubble-filled:before { + content: "\e694"; +} + +.uniui-contact-filled:before { + content: "\e695"; +} + +.uniui-chatboxes:before { + content: "\e696"; +} + +.uniui-chatbubble:before { + content: "\e697"; +} + +.uniui-upload-filled:before { + content: "\e68e"; +} + +.uniui-upload:before { + content: "\e690"; +} + +.uniui-weixin:before { + content: "\e691"; +} + +.uniui-compose:before { + content: "\e67f"; +} + +.uniui-qq:before { + content: "\e680"; +} + +.uniui-download-filled:before { + content: "\e681"; +} + +.uniui-pyq:before { + content: "\e682"; +} + +.uniui-sound:before { + content: "\e684"; +} + +.uniui-trash-filled:before { + content: "\e685"; +} + +.uniui-sound-filled:before { + content: "\e686"; +} + +.uniui-trash:before { + content: "\e687"; +} + +.uniui-videocam-filled:before { + content: "\e689"; +} + +.uniui-spinner-cycle:before { + content: "\e68a"; +} + +.uniui-weibo:before { + content: "\e68b"; +} + +.uniui-videocam:before { + content: "\e68c"; +} + +.uniui-download:before { + content: "\e68d"; +} + +.uniui-help:before { + content: "\e679"; +} + +.uniui-navigate-filled:before { + content: "\e67a"; +} + +.uniui-plusempty:before { + content: "\e67b"; +} + +.uniui-smallcircle:before { + content: "\e67c"; +} + +.uniui-minus-filled:before { + content: "\e67d"; +} + +.uniui-micoff:before { + content: "\e67e"; +} + +.uniui-closeempty:before { + content: "\e66c"; +} + +.uniui-clear:before { + content: "\e66d"; +} + +.uniui-navigate:before { + content: "\e66e"; +} + +.uniui-minus:before { + content: "\e66f"; +} + +.uniui-image:before { + content: "\e670"; +} + +.uniui-mic:before { + content: "\e671"; +} + +.uniui-paperplane:before { + content: "\e672"; +} + +.uniui-close:before { + content: "\e673"; +} + +.uniui-help-filled:before { + content: "\e674"; +} + +.uniui-paperplane-filled:before { + content: "\e675"; +} + +.uniui-plus:before { + content: "\e676"; +} + +.uniui-mic-filled:before { + content: "\e677"; +} + +.uniui-image-filled:before { + content: "\e678"; +} + +.uniui-locked-filled:before { + content: "\e668"; +} + +.uniui-info:before { + content: "\e669"; +} + +.uniui-locked:before { + content: "\e66b"; +} + +.uniui-camera-filled:before { + content: "\e658"; +} + +.uniui-chat-filled:before { + content: "\e659"; +} + +.uniui-camera:before { + content: "\e65a"; +} + +.uniui-circle:before { + content: "\e65b"; +} + +.uniui-checkmarkempty:before { + content: "\e65c"; +} + +.uniui-chat:before { + content: "\e65d"; +} + +.uniui-circle-filled:before { + content: "\e65e"; +} + +.uniui-flag:before { + content: "\e65f"; +} + +.uniui-flag-filled:before { + content: "\e660"; +} + +.uniui-gear-filled:before { + content: "\e661"; +} + +.uniui-home:before { + content: "\e662"; +} + +.uniui-home-filled:before { + content: "\e663"; +} + +.uniui-gear:before { + content: "\e664"; +} + +.uniui-smallcircle-filled:before { + content: "\e665"; +} + +.uniui-map-filled:before { + content: "\e666"; +} + +.uniui-map:before { + content: "\e667"; +} + +.uniui-refresh-filled:before { + content: "\e656"; +} + +.uniui-refresh:before { + content: "\e657"; +} + +.uniui-cloud-upload:before { + content: "\e645"; +} + +.uniui-cloud-download-filled:before { + content: "\e646"; +} + +.uniui-cloud-download:before { + content: "\e647"; +} + +.uniui-cloud-upload-filled:before { + content: "\e648"; +} + +.uniui-redo:before { + content: "\e64a"; +} + +.uniui-images-filled:before { + content: "\e64b"; +} + +.uniui-undo-filled:before { + content: "\e64c"; +} + +.uniui-more:before { + content: "\e64d"; +} + +.uniui-more-filled:before { + content: "\e64e"; +} + +.uniui-undo:before { + content: "\e64f"; +} + +.uniui-images:before { + content: "\e650"; +} + +.uniui-paperclip:before { + content: "\e652"; +} + +.uniui-settings:before { + content: "\e653"; +} + +.uniui-search:before { + content: "\e654"; +} + +.uniui-redo-filled:before { + content: "\e655"; +} + +.uniui-list:before { + content: "\e644"; +} + +.uniui-mail-open-filled:before { + content: "\e63a"; +} + +.uniui-hand-down-filled:before { + content: "\e63c"; +} + +.uniui-hand-down:before { + content: "\e63d"; +} + +.uniui-hand-up-filled:before { + content: "\e63e"; +} + +.uniui-hand-up:before { + content: "\e63f"; +} + +.uniui-heart-filled:before { + content: "\e641"; +} + +.uniui-mail-open:before { + content: "\e643"; +} + +.uniui-heart:before { + content: "\e639"; +} + +.uniui-loop:before { + content: "\e633"; +} + +.uniui-pulldown:before { + content: "\e632"; +} + +.uniui-scan:before { + content: "\e62a"; +} + +.uniui-bars:before { + content: "\e627"; +} + +.uniui-cart-filled:before { + content: "\e629"; +} + +.uniui-checkbox:before { + content: "\e62b"; +} + +.uniui-checkbox-filled:before { + content: "\e62c"; +} + +.uniui-shop:before { + content: "\e62f"; +} + +.uniui-headphones:before { + content: "\e630"; +} + +.uniui-cart:before { + content: "\e631"; +} diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf new file mode 100644 index 0000000..835f33b Binary files /dev/null and b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf differ diff --git a/uni_modules/uni-icons/package.json b/uni_modules/uni-icons/package.json new file mode 100644 index 0000000..d1c4e77 --- /dev/null +++ b/uni_modules/uni-icons/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-icons", + "displayName": "uni-icons 图标", + "version": "1.3.5", + "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", + "keywords": [ + "uni-ui", + "uniui", + "icon", + "图标" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.14" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-icons/readme.md b/uni_modules/uni-icons/readme.md new file mode 100644 index 0000000..86234ba --- /dev/null +++ b/uni_modules/uni-icons/readme.md @@ -0,0 +1,8 @@ +## Icons 图标 +> **组件名:uni-icons** +> 代码块: `uIcons` + +用于展示 icons 图标 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-indexed-list/changelog.md b/uni_modules/uni-indexed-list/changelog.md new file mode 100644 index 0000000..08fa71c --- /dev/null +++ b/uni_modules/uni-indexed-list/changelog.md @@ -0,0 +1,17 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-indexed-list](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue new file mode 100644 index 0000000..2f13bae --- /dev/null +++ b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue new file mode 100644 index 0000000..35e168c --- /dev/null +++ b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue @@ -0,0 +1,367 @@ + + + diff --git a/uni_modules/uni-indexed-list/package.json b/uni_modules/uni-indexed-list/package.json new file mode 100644 index 0000000..125c0e7 --- /dev/null +++ b/uni_modules/uni-indexed-list/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-indexed-list", + "displayName": "uni-indexed-list 索引列表", + "version": "1.2.1", + "description": "索引列表组件,右侧带索引的列表,方便快速定位到具体内容,通常用于城市/机场选择等场景", + "keywords": [ + "uni-ui", + "索引列表", + "索引", + "列表" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-indexed-list/readme.md b/uni_modules/uni-indexed-list/readme.md new file mode 100644 index 0000000..44ad84b --- /dev/null +++ b/uni_modules/uni-indexed-list/readme.md @@ -0,0 +1,11 @@ + + +## IndexedList 索引列表 +> **组件名:uni-indexed-list** +> 代码块: `uIndexedList` + + +用于展示索引列表。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-link/changelog.md b/uni_modules/uni-link/changelog.md new file mode 100644 index 0000000..2cfbf59 --- /dev/null +++ b/uni_modules/uni-link/changelog.md @@ -0,0 +1,17 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-link](https://uniapp.dcloud.io/component/uniui/uni-link) +## 1.1.7(2021-11-08) +## 0.0.7(2021-09-03) +- 修复 在 nvue 下不显示的 bug +## 0.0.6(2021-07-30) +- 新增 支持自定义插槽 +## 0.0.5(2021-06-21) +- 新增 download 属性,H5平台下载文件名 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-03-09) +- 新增 href 属性支持 tel:|mailto: + +## 0.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-link/components/uni-link/uni-link.vue b/uni_modules/uni-link/components/uni-link/uni-link.vue new file mode 100644 index 0000000..27c5468 --- /dev/null +++ b/uni_modules/uni-link/components/uni-link/uni-link.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uni-link/package.json b/uni_modules/uni-link/package.json new file mode 100644 index 0000000..77b1986 --- /dev/null +++ b/uni_modules/uni-link/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-link", + "displayName": "uni-link 超链接", + "version": "1.0.0", + "description": "uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打", + "keywords": [ + "uni-ui", + "uniui", + "link", + "超链接", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-link/readme.md b/uni_modules/uni-link/readme.md new file mode 100644 index 0000000..7f09e94 --- /dev/null +++ b/uni_modules/uni-link/readme.md @@ -0,0 +1,11 @@ + + +## Link 链接 +> **组件名:uni-link** +> 代码块: `uLink` + + +uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打开新网页。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-link) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-list/changelog.md b/uni_modules/uni-list/changelog.md new file mode 100644 index 0000000..8254a18 --- /dev/null +++ b/uni_modules/uni-list/changelog.md @@ -0,0 +1,46 @@ +## 1.2.14(2023-04-14) +- 优化 uni-list-chat 具名插槽`header` 非app端套一层元素,方便使用时通过外层元素定位实现样式修改 +## 1.2.13(2023-03-03) +- uni-list-chat 新增 支持具名插槽`header` +## 1.2.12(2023-02-01) +- 新增 列表图标新增 customPrefix 属性 ,用法 [详见](https://uniapp.dcloud.net.cn/component/uniui/uni-icons.html#icons-props) +## 1.2.11(2023-01-31) +- 修复 无反馈效果呈现的bug +## 1.2.9(2022-11-22) +- 修复 uni-list-chat 在vue3下跳转报错的bug +## 1.2.8(2022-11-21) +- 修复 uni-list-chat avatar属性 值为本地路径时错误的问题 +## 1.2.7(2022-11-21) +- 修复 uni-list-chat avatar属性 在腾讯云版uniCloud下错误的问题 +## 1.2.6(2022-11-18) +- 修复 uni-list-chat note属性 支持:“草稿”字样功能 文本少1位的问题 +## 1.2.5(2022-11-15) +- 修复 uni-list-item 的 customStyle 属性 padding值在 H5端 无效的bug +## 1.2.4(2022-11-15) +- 修复 uni-list-item 的 customStyle 属性 padding值在nvue(vue2)下无效的bug +## 1.2.3(2022-11-14) +- uni-list-chat 新增 avatar 支持 fileId +## 1.2.2(2022-11-11) +- uni-list 新增属性 render-reverse 详情参考:[https://uniapp.dcloud.net.cn/component/list.html](https://uniapp.dcloud.net.cn/component/list.html) +- uni-list-chat note属性 支持:“草稿”字样 加红显示 详情参考uni-im:[https://ext.dcloud.net.cn/plugin?name=uni-im](https://ext.dcloud.net.cn/plugin?name=uni-im) +- uni-list-item 新增属性 customStyle 支持设置padding、backgroundColor +## 1.2.1(2022-03-30) +- 删除无用文件 +## 1.2.0(2021-11-23) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-list](https://uniapp.dcloud.io/component/uniui/uni-list) +## 1.1.3(2021-08-30) +- 修复 在vue3中to属性在发行应用的时候报错的bug +## 1.1.2(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.1(2021-07-21) +- 修复 与其他组件嵌套使用时,点击失效的Bug +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.17(2021-05-12) +- 新增 组件示例地址 +## 1.0.16(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.15(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 uni-list-chat 角标显示不正常的问题 diff --git a/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue b/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue new file mode 100644 index 0000000..b9349c2 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss new file mode 100644 index 0000000..311f8d9 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss @@ -0,0 +1,58 @@ +/** + * 这里是 uni-list 组件内置的常用样式变量 + * 如果需要覆盖样式,这里提供了基本的组件样式变量,您可以尝试修改这里的变量,去完成样式替换,而不用去修改源码 + * + */ + +// 背景色 +$background-color : #fff; +// 分割线颜色 +$divide-line-color : #e5e5e5; + +// 默认头像大小,如需要修改此值,注意同步修改 js 中的值 const avatarWidth = xx ,目前只支持方形头像 +// nvue 页面不支持修改头像大小 +$avatar-width : 45px ; + +// 头像边框 +$avatar-border-radius: 5px; +$avatar-border-color: #eee; +$avatar-border-width: 1px; + +// 标题文字样式 +$title-size : 16px; +$title-color : #3b4144; +$title-weight : normal; + +// 描述文字样式 +$note-size : 12px; +$note-color : #999; +$note-weight : normal; + +// 右侧额外内容默认样式 +$right-text-size : 12px; +$right-text-color : #999; +$right-text-weight : normal; + +// 角标样式 +// nvue 页面不支持修改圆点位置以及大小 +// 角标在左侧时,角标的位置,默认为 0 ,负数左/下移动,正数右/上移动 +$badge-left: 0px; +$badge-top: 0px; + +// 显示圆点时,圆点大小 +$dot-width: 10px; +$dot-height: 10px; + +// 显示角标时,角标大小和字体大小 +$badge-size : 18px; +$badge-font : 12px; +// 显示角标时,角标前景色 +$badge-color : #fff; +// 显示角标时,角标背景色 +$badge-background-color : #ff5a5f; +// 显示角标时,角标左右间距 +$badge-space : 6px; + +// 状态样式 +// 选中颜色 +$hover : #f5f5f5; diff --git a/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue new file mode 100644 index 0000000..d49fd7c --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue @@ -0,0 +1,593 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue b/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue new file mode 100644 index 0000000..a274ac8 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue @@ -0,0 +1,534 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uni-list/components/uni-list/uni-list.vue b/uni_modules/uni-list/components/uni-list/uni-list.vue new file mode 100644 index 0000000..6ef5972 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-list.vue @@ -0,0 +1,123 @@ + + + + diff --git a/uni_modules/uni-list/components/uni-list/uni-refresh.vue b/uni_modules/uni-list/components/uni-list/uni-refresh.vue new file mode 100644 index 0000000..3b4c5a2 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-refresh.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list/uni-refresh.wxs b/uni_modules/uni-list/components/uni-list/uni-refresh.wxs new file mode 100644 index 0000000..818a6b7 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-refresh.wxs @@ -0,0 +1,87 @@ +var pullDown = { + threshold: 95, + maxHeight: 200, + callRefresh: 'onrefresh', + callPullingDown: 'onpullingdown', + refreshSelector: '.uni-refresh' +}; + +function ready(newValue, oldValue, ownerInstance, instance) { + var state = instance.getState() + state.canPullDown = newValue; + // console.log(newValue); +} + +function touchStart(e, instance) { + var state = instance.getState(); + state.refreshInstance = instance.selectComponent(pullDown.refreshSelector); + state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined); + if (!state.canPullDown) { + return + } + + // console.log("touchStart"); + + state.height = 0; + state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY; + state.refreshInstance.setStyle({ + 'height': 0 + }); + state.refreshInstance.callMethod("onchange", true); +} + +function touchMove(e, ownerInstance) { + var instance = e.instance; + var state = instance.getState(); + if (!state.canPullDown) { + return + } + + var oldHeight = state.height; + var endY = e.touches[0].pageY || e.changedTouches[0].pageY; + var height = endY - state.touchStartY; + if (height > pullDown.maxHeight) { + return; + } + + var refreshInstance = state.refreshInstance; + refreshInstance.setStyle({ + 'height': height + 'px' + }); + + height = height < pullDown.maxHeight ? height : pullDown.maxHeight; + state.height = height; + refreshInstance.callMethod(pullDown.callPullingDown, { + height: height + }); +} + +function touchEnd(e, ownerInstance) { + var state = e.instance.getState(); + if (!state.canPullDown) { + return + } + + state.refreshInstance.callMethod("onchange", false); + + var refreshInstance = state.refreshInstance; + if (state.height > pullDown.threshold) { + refreshInstance.callMethod(pullDown.callRefresh); + return; + } + + refreshInstance.setStyle({ + 'height': 0 + }); +} + +function propObserver(newValue, oldValue, instance) { + pullDown = newValue; +} + +module.exports = { + touchmove: touchMove, + touchstart: touchStart, + touchend: touchEnd, + propObserver: propObserver +} diff --git a/uni_modules/uni-list/package.json b/uni_modules/uni-list/package.json new file mode 100644 index 0000000..8350efc --- /dev/null +++ b/uni_modules/uni-list/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-list", + "displayName": "uni-list 列表", + "version": "1.2.14", + "description": "List 组件 ,帮助使用者快速构建列表。", + "keywords": [ + "", + "uni-ui", + "uniui", + "列表", + "", + "list" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-badge", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-list/readme.md b/uni_modules/uni-list/readme.md new file mode 100644 index 0000000..32c2865 --- /dev/null +++ b/uni_modules/uni-list/readme.md @@ -0,0 +1,346 @@ +## List 列表 +> **组件名:uni-list** +> 代码块: `uList`、`uListItem` +> 关联组件:`uni-list-item`、`uni-badge`、`uni-icons`、`uni-list-chat`、`uni-list-ad` + + +List 列表组件,包含基本列表样式、可扩展插槽机制、长列表性能优化、多端兼容。 + +在vue页面里,它默认使用页面级滚动。在app-nvue页面里,它默认使用原生list组件滚动。这样的长列表,在滚动出屏幕外后,系统会回收不可见区域的渲染内存资源,不会造成滚动越长手机越卡的问题。 + +uni-list组件是父容器,里面的核心是uni-list-item子组件,它代表列表中的一个可重复行,子组件可以无限循环。 + +uni-list-item有很多风格,uni-list-item组件通过内置的属性,满足一些常用的场景。当内置属性不满足需求时,可以通过扩展插槽来自定义列表内容。 + +内置属性可以覆盖的场景包括:导航列表、设置列表、小图标列表、通信录列表、聊天记录列表。 + +涉及很多大图或丰富内容的列表,比如类今日头条的新闻列表、类淘宝的电商列表,需要通过扩展插槽实现。 + +下文均有样例给出。 + +uni-list不包含下拉刷新和上拉翻页。上拉翻页另见组件:[uni-load-more](https://ext.dcloud.net.cn/plugin?id=29) + + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +> **注意事项** +> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 +> - 组件需要依赖 `sass` 插件 ,请自行手动安装 +> - 组件内部依赖 `'uni-icons'` 、`uni-badge` 组件 +> - `uni-list` 和 `uni-list-item` 需要配套使用,暂不支持单独使用 `uni-list-item` +> - 只有开启点击反馈后,会有点击选中效果 +> - 使用插槽时,可以完全自定义内容 +> - note 、rightText 属性暂时没做限制,不支持文字溢出隐藏,使用时应该控制长度显示或通过默认插槽自行扩展 +> - 支付宝小程序平台需要在支付宝小程序开发者工具里开启 component2 编译模式,开启方式: 详情 --> 项目配置 --> 启用 component2 编译 +> - 如果需要修改 `switch`、`badge` 样式,请使用插槽自定义 +> - 在 `HBuilderX` 低版本中,可能会出现组件显示 `undefined` 的问题,请升级最新的 `HBuilderX` 或者 `cli` +> - 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + +### 基本用法 + +- 设置 `title` 属性,可以显示列表标题 +- 设置 `disabled` 属性,可以禁用当前项 + +```html + + + + + +``` + +### 多行内容显示 + +- 设置 `note` 属性 ,可以在第二行显示描述文本信息 + +```html + + + + + +``` + +### 右侧显示角标、switch + +- 设置 `show-badge` 属性 ,可以显示角标内容 +- 设置 `show-switch` 属性,可以显示 switch 开关 + +```html + + + + + +``` + +### 左侧显示略缩图、图标 + +- 设置 `thumb` 属性 ,可以在列表左侧显示略缩图 +- 设置 `show-extra-icon` 属性,并指定 `extra-icon` 可以在左侧显示图标 + +```html + + + + +``` + +### 开启点击反馈和右侧箭头 +- 设置 `clickable` 为 `true` ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 `click` 事件 +- 设置 `link` 属性,会自动开启点击反馈,并给列表右侧添加一个箭头 +- 设置 `to` 属性,可以跳转页面,`link` 的值表示跳转方式,如果不指定,默认为 `navigateTo` + +```html + + + + + + + +``` + + +### 聊天列表示例 +- 设置 `clickable` 为 `true` ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 `click` 事件 +- 设置 `link` 属性,会自动开启点击反馈,`link` 的值表示跳转方式,如果不指定,默认为 `navigateTo` +- 设置 `to` 属性,可以跳转页面 +- `time` 属性,通常会设置成时间显示,但是这个属性不仅仅可以设置时间,你可以传入任何文本,注意文本长度可能会影响显示 +- `avatar` 和 `avatarList` 属性同时只会有一个生效,同时设置的话,`avatarList` 属性的长度大于1 ,`avatar` 属性将失效 +- 可以通过默认插槽自定义列表右侧内容 + +```html + + + + + + + + + + + + + + + + + 刚刚 + + + + + + + +``` + +```javascript + +export default { + components: {}, + data() { + return { + avatarList: [{ + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }, { + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }, { + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }] + } + } +} + +``` + + +```css + +.chat-custom-right { + flex: 1; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: column; + justify-content: space-between; + align-items: flex-end; +} + +.chat-custom-text { + font-size: 12px; + color: #999; +} + +``` + +## API + +### List Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +border |Boolean |true | 是否显示边框 + + +### ListItem Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +title |String |- | 标题 +note |String |- | 描述 +ellipsis |Number |0 | title 是否溢出隐藏,可选值,0:默认; 1:显示一行; 2:显示两行;【nvue 暂不支持】 +thumb |String |- | 左侧缩略图,若thumb有值,则不会显示扩展图标 +thumbSize |String |medium | 略缩图尺寸,可选值,lg:大图; medium:一般; sm:小图; +showBadge |Boolean |false | 是否显示数字角标 +badgeText |String |- | 数字角标内容 +badgeType |String |- | 数字角标类型,参考[uni-icons](https://ext.dcloud.net.cn/plugin?id=21) +badgeStyle |Object |- | 数字角标样式,使用uni-badge的custom-style参数 +rightText |String |- | 右侧文字内容 +disabled |Boolean |false | 是否禁用 +showArrow |Boolean |true | 是否显示箭头图标 +link |String |navigateTo | 新页面跳转方式,可选值见下表 +to |String |- | 新页面跳转地址,如填写此属性,click 会返回页面是否跳转成功 +clickable |Boolean |false | 是否开启点击反馈 +showSwitch |Boolean |false | 是否显示Switch +switchChecked |Boolean |false | Switch是否被选中 +showExtraIcon |Boolean |false | 左侧是否显示扩展图标 +extraIcon |Object |- | 扩展图标参数,格式为 ``{color: '#4cd964',size: '22',type: 'spinner'}``,参考 [uni-icons](https://ext.dcloud.net.cn/plugin?id=28) +direction | String |row | 排版方向,可选值,row:水平排列; column:垂直排列; 3个插槽是水平排还是垂直排,也受此属性控制 + + +#### Link Options + +属性名 | 说明 +:-: | :-: +navigateTo | 同 uni.navigateTo() +redirectTo | 同 uni.reLaunch() +reLaunch | 同 uni.reLaunch() +switchTab | 同 uni.switchTab() + +### ListItem Events + +事件称名 |说明 |返回参数 +:-: |:-: |:-: +click |点击 uniListItem 触发事件,需开启点击反馈 |- +switchChange |点击切换 Switch 时触发,需显示 switch |e={value:checked} + + + +### ListItem Slots + +名称 | 说明 +:-: | :-: +header | 左/上内容插槽,可完全自定义默认显示 +body | 中间内容插槽,可完全自定义中间内容 +footer | 右/下内容插槽,可完全自定义右侧内容 + + +> **通过插槽扩展** +> 需要注意的是当使用插槽时,内置样式将会失效,只保留排版样式,此时的样式需要开发者自己实现 +> 如果 `uni-list-item` 组件内置属性样式无法满足需求,可以使用插槽来自定义uni-list-item里的内容。 +> uni-list-item提供了3个可扩展的插槽:`header`、`body`、`footer` +> - 当 `direction` 属性为 `row` 时表示水平排列,此时 `header` 表示列表的左边部分,`body` 表示列表的中间部分,`footer` 表示列表的右边部分 +> - 当 `direction` 属性为 `column` 时表示垂直排列,此时 `header` 表示列表的上边部分,`body` 表示列表的中间部分,`footer` 表示列表的下边部分 +> 开发者可以只用1个插槽,也可以3个一起使用。在插槽中可自主编写view标签,实现自己所需的效果。 + + +**示例** + +```html + + + + + + + + + 自定义插槽 + + + + +``` + + + + + +### ListItemChat Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +title |String |- | 标题 +note |String |- | 描述 +clickable |Boolean |false | 是否开启点击反馈 +badgeText |String |- | 数字角标内容,设置为 `dot` 将显示圆点 +badgePositon |String |right | 角标位置 +link |String |navigateTo | 是否展示右侧箭头并开启点击反馈,可选值见下表 +clickable |Boolean |false | 是否开启点击反馈 +to |String |- | 跳转页面地址,如填写此属性,click 会返回页面是否跳转成功 +time |String |- | 右侧时间显示 +avatarCircle |Boolean |false | 是否显示圆形头像 +avatar |String |- | 头像地址,avatarCircle 不填时生效 +avatarList |Array |- | 头像组,格式为 [{url:''}] + +#### Link Options + +属性名 | 说明 +:-: | :-: +navigateTo | 同 uni.navigateTo() +redirectTo | 同 uni.reLaunch() +reLaunch | 同 uni.reLaunch() +switchTab | 同 uni.switchTab() + +### ListItemChat Slots + +名称 | 说明 +:- | :- +default | 自定义列表右侧内容(包括时间和角标显示) + +### ListItemChat Events +事件称名 | 说明 | 返回参数 +:-: | :-: | :-: +@click | 点击 uniListChat 触发事件 | {data:{}} ,如有 to 属性,会返回页面跳转信息 + + + + + + +## 基于uni-list扩展的页面模板 + +通过扩展插槽,可实现多种常见样式的列表 + +**新闻列表类** + +1. 云端一体混合布局:[https://ext.dcloud.net.cn/plugin?id=2546](https://ext.dcloud.net.cn/plugin?id=2546) +2. 云端一体垂直布局,大图模式:[https://ext.dcloud.net.cn/plugin?id=2583](https://ext.dcloud.net.cn/plugin?id=2583) +3. 云端一体垂直布局,多行图文混排:[https://ext.dcloud.net.cn/plugin?id=2584](https://ext.dcloud.net.cn/plugin?id=2584) +4. 云端一体垂直布局,多图模式:[https://ext.dcloud.net.cn/plugin?id=2585](https://ext.dcloud.net.cn/plugin?id=2585) +5. 云端一体水平布局,左图右文:[https://ext.dcloud.net.cn/plugin?id=2586](https://ext.dcloud.net.cn/plugin?id=2586) +6. 云端一体水平布局,左文右图:[https://ext.dcloud.net.cn/plugin?id=2587](https://ext.dcloud.net.cn/plugin?id=2587) +7. 云端一体垂直布局,无图模式,主标题+副标题:[https://ext.dcloud.net.cn/plugin?id=2588](https://ext.dcloud.net.cn/plugin?id=2588) + +**商品列表类** + +1. 云端一体列表/宫格视图互切:[https://ext.dcloud.net.cn/plugin?id=2651](https://ext.dcloud.net.cn/plugin?id=2651) +2. 云端一体列表(宫格模式):[https://ext.dcloud.net.cn/plugin?id=2671](https://ext.dcloud.net.cn/plugin?id=2671) +3. 云端一体列表(列表模式):[https://ext.dcloud.net.cn/plugin?id=2672](https://ext.dcloud.net.cn/plugin?id=2672) + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/list/list](https://hellouniapp.dcloud.net.cn/pages/extUI/list/list) \ No newline at end of file diff --git a/uni_modules/uni-load-more/changelog.md b/uni_modules/uni-load-more/changelog.md new file mode 100644 index 0000000..8f03f1d --- /dev/null +++ b/uni_modules/uni-load-more/changelog.md @@ -0,0 +1,19 @@ +## 1.3.3(2022-01-20) +- 新增 showText属性 ,是否显示文本 +## 1.3.2(2022-01-19) +- 修复 nvue 平台下不显示文本的bug +## 1.3.1(2022-01-19) +- 修复 微信小程序平台样式选择器报警告的问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) +## 1.2.1(2021-08-24) +- 新增 支持国际化 +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-05-12) +- 新增 组件示例地址 +## 1.1.7(2021-03-30) +- 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +## 1.1.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json new file mode 100644 index 0000000..a4f14a5 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "Pull up to show more", + "uni-load-more.contentrefresh": "loading...", + "uni-load-more.contentnomore": "No more data" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json new file mode 100644 index 0000000..f15d510 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉显示更多", + "uni-load-more.contentrefresh": "正在加载...", + "uni-load-more.contentnomore": "没有更多数据了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json new file mode 100644 index 0000000..a255c6d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉顯示更多", + "uni-load-more.contentrefresh": "正在加載...", + "uni-load-more.contentnomore": "沒有更多數據了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue new file mode 100644 index 0000000..e5eff4d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/uni_modules/uni-load-more/package.json b/uni_modules/uni-load-more/package.json new file mode 100644 index 0000000..2fa6f04 --- /dev/null +++ b/uni_modules/uni-load-more/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-load-more", + "displayName": "uni-load-more 加载更多", + "version": "1.3.3", + "description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", + "keywords": [ + "uni-ui", + "uniui", + "加载更多", + "load-more" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-load-more/readme.md b/uni_modules/uni-load-more/readme.md new file mode 100644 index 0000000..54dc1fa --- /dev/null +++ b/uni_modules/uni-load-more/readme.md @@ -0,0 +1,14 @@ + + +### LoadMore 加载更多 +> **组件名:uni-load-more** +> 代码块: `uLoadMore` + + +用于列表中,做滚动加载使用,展示 loading 的各种状态。 + + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-load-more) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-nav-bar/changelog.md b/uni_modules/uni-nav-bar/changelog.md new file mode 100644 index 0000000..0f9a2f1 --- /dev/null +++ b/uni_modules/uni-nav-bar/changelog.md @@ -0,0 +1,51 @@ +## 1.3.11(2023-03-29) +- 修复 自定义状态栏高度闪动BUG +## 1.3.10(2023-03-29) +- 修复 暗黑模式下边线颜色错误的bug +## 1.3.9(2022-10-13) +- 修复 条件编译错误的bug +## 1.3.8(2022-10-12) +- 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.7(2022-08-11) +- 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.6(2022-06-30) +- 修复 组件示例中插槽用法无法显示内容的bug +## 1.3.5(2022-05-24) +- 新增 stat 属性 ,可开启统计title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +## 1.3.4(2022-01-24) +- 更新 组件示例 +## 1.3.3(2022-01-24) +- 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +## 1.3.2(2022-01-18) +- 修复 在vue下,标题不垂直居中的bug +## 1.3.1(2022-01-18) +- 修复 height 属性类型错误 +## 1.3.0(2022-01-18) +- 新增 height 属性,可修改组件高度 +- 新增 dark 属性可可开启暗黑模式 +- 优化 标题字数过多显示省略号 +- 优化 插槽,插入内容可完全覆盖 +## 1.2.1(2022-01-10) +- 修复 color 属性不生效的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-nav-bar](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-30) +- 修复 在nvue下fixed为true,宽度不能撑满的Bug +## 1.0.9(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.8(2021-04-14) +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug + +## 1.0.7(2021-02-25) +- 修复 easycom 下,找不到 uni-status-bar 的bug + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue new file mode 100644 index 0000000..c890860 --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue @@ -0,0 +1,357 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue new file mode 100644 index 0000000..4ac73ae --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/package.json b/uni_modules/uni-nav-bar/package.json new file mode 100644 index 0000000..240ae95 --- /dev/null +++ b/uni_modules/uni-nav-bar/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-nav-bar", + "displayName": "uni-nav-bar 自定义导航栏", + "version": "1.3.11", + "description": "自定义导航栏组件,主要用于头部导航。", + "keywords": [ + "uni-ui", + "导航", + "导航栏", + "自定义导航栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-nav-bar/readme.md b/uni_modules/uni-nav-bar/readme.md new file mode 100644 index 0000000..3934b32 --- /dev/null +++ b/uni_modules/uni-nav-bar/readme.md @@ -0,0 +1,15 @@ + + +## NavBar 导航栏 +> **组件名:uni-nav-bar** +> 代码块: `uNavBar` + +导航栏组件,主要用于头部导航。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-notice-bar/changelog.md b/uni_modules/uni-notice-bar/changelog.md new file mode 100644 index 0000000..d526811 --- /dev/null +++ b/uni_modules/uni-notice-bar/changelog.md @@ -0,0 +1,18 @@ +## 1.2.1(2022-09-05) +- 新增 属性 fontSize,可修改文字大小。 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-notice-bar](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 组件示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue new file mode 100644 index 0000000..98d4720 --- /dev/null +++ b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue @@ -0,0 +1,426 @@ + + + + + diff --git a/uni_modules/uni-notice-bar/package.json b/uni_modules/uni-notice-bar/package.json new file mode 100644 index 0000000..8d9b13c --- /dev/null +++ b/uni_modules/uni-notice-bar/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-notice-bar", + "displayName": "uni-notice-bar 通告栏", + "version": "1.2.1", + "description": "NoticeBar 通告栏组件,常用于展示公告信息,可设为滚动公告", + "keywords": [ + "uni-ui", + "uniui", + "通告栏", + "公告", + "跑马灯" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-notice-bar/readme.md b/uni_modules/uni-notice-bar/readme.md new file mode 100644 index 0000000..fb2ede2 --- /dev/null +++ b/uni_modules/uni-notice-bar/readme.md @@ -0,0 +1,13 @@ + + +## NoticeBar 通告栏 +> **组件名:uni-notice-bar** +> 代码块: `uNoticeBar` + + +通告栏组件 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-number-box/changelog.md b/uni_modules/uni-number-box/changelog.md new file mode 100644 index 0000000..5925c32 --- /dev/null +++ b/uni_modules/uni-number-box/changelog.md @@ -0,0 +1,25 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-number-box](https://uniapp.dcloud.io/component/uniui/uni-number-box) +## 1.1.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-20) +- 修复 uni-number-box 浮点数运算不精确的 bug +- 修复 uni-number-box change 事件触发不正确的 bug +- 新增 uni-number-box v-model 双向绑定 +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 + +## 1.0.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 v-model +- 新增 支持 focus、blur 事件 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue new file mode 100644 index 0000000..e91c032 --- /dev/null +++ b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue @@ -0,0 +1,221 @@ + + + diff --git a/uni_modules/uni-number-box/package.json b/uni_modules/uni-number-box/package.json new file mode 100644 index 0000000..ad82336 --- /dev/null +++ b/uni_modules/uni-number-box/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-number-box", + "displayName": "uni-number-box 数字输入框", + "version": "1.2.1", + "description": "NumberBox 带加减按钮的数字输入框组件,用户可以控制每次点击增加的数值,支持小数。", + "keywords": [ + "uni-ui", + "uniui", + "数字输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-number-box/readme.md b/uni_modules/uni-number-box/readme.md new file mode 100644 index 0000000..affc56f --- /dev/null +++ b/uni_modules/uni-number-box/readme.md @@ -0,0 +1,13 @@ + + +## NumberBox 数字输入框 +> **组件名:uni-number-box** +> 代码块: `uNumberBox` + + +带加减按钮的数字输入框。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-number-box) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-pagination/changelog.md b/uni_modules/uni-pagination/changelog.md new file mode 100644 index 0000000..2e94adc --- /dev/null +++ b/uni_modules/uni-pagination/changelog.md @@ -0,0 +1,27 @@ +## 1.2.4(2022-09-19) +- 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。 +- 修复,未对移动端当前页文字做主题色适配。 +## 1.2.3(2022-09-15) +- 修复未使用 uni-scss 主题色的 bug。 +## 1.2.2(2022-07-06) +- 修复 es 语言 i18n 错误 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-pagination](https://uniapp.dcloud.io/component/uniui/uni-pagination) +## 1.1.2(2021-10-08) +- 修复 current 、value 属性未监听,导致高亮样式失效的 bug +## 1.1.1(2021-08-20) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-12) +- 新增 PC 和 移动端适配不同的 ui +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json new file mode 100644 index 0000000..d6e2897 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "prev", + "uni-pagination.nextText": "next", + "uni-pagination.piecePerPage": "piece/page" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json new file mode 100644 index 0000000..604a113 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "anterior", + "uni-pagination.nextText": "prxima", + "uni-pagination.piecePerPage": "Artculo/Pgina" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json new file mode 100644 index 0000000..a7a0c77 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "précédente", + "uni-pagination.nextText": "suivante", + "uni-pagination.piecePerPage": "Articles/Pages" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js b/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json new file mode 100644 index 0000000..782bbe4 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一页", + "uni-pagination.nextText": "下一页", + "uni-pagination.piecePerPage": "条/页" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json new file mode 100644 index 0000000..180fddb --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一頁", + "uni-pagination.nextText": "下一頁", + "uni-pagination.piecePerPage": "條/頁" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue b/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue new file mode 100644 index 0000000..5305b5f --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue @@ -0,0 +1,465 @@ + + + + + diff --git a/uni_modules/uni-pagination/package.json b/uni_modules/uni-pagination/package.json new file mode 100644 index 0000000..862d5ab --- /dev/null +++ b/uni_modules/uni-pagination/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-pagination", + "displayName": "uni-pagination 分页器", + "version": "1.2.4", + "description": "Pagination 分页器组件,用于展示页码、请求数据等。", + "keywords": [ + "uni-ui", + "uniui", + "分页器", + "页码" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-pagination/readme.md b/uni_modules/uni-pagination/readme.md new file mode 100644 index 0000000..97ea1d6 --- /dev/null +++ b/uni_modules/uni-pagination/readme.md @@ -0,0 +1,11 @@ + + +## Pagination 分页器 +> **组件名:uni-pagination** +> 代码块: `uPagination` + + +分页器组件,用于展示页码、请求数据等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-pagination) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-popup/changelog.md b/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..bc59f07 --- /dev/null +++ b/uni_modules/uni-popup/changelog.md @@ -0,0 +1,68 @@ +## 1.8.3(2023-04-17) +- 修复 uni-popup 重复打开时的 bug +## 1.8.2(2023-02-02) +- uni-popup-dialog 组件新增 inputType 属性 +## 1.8.1(2022-12-01) +- 修复 nvue 下 v-show 报错 +## 1.8.0(2022-11-29) +- 优化 主题样式 +## 1.7.9(2022-04-02) +- 修复 弹出层内部无法滚动的bug +## 1.7.8(2022-03-28) +- 修复 小程序中高度错误的bug +## 1.7.7(2022-03-17) +- 修复 快速调用open出现问题的Bug +## 1.7.6(2022-02-14) +- 修复 safeArea 属性不能设置为false的bug +## 1.7.5(2022-01-19) +- 修复 isMaskClick 失效的bug +## 1.7.4(2022-01-19) +- 新增 cancelText \ confirmText 属性 ,可自定义文本 +- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 +## 1.7.3(2022-01-13) +- 修复 设置 safeArea 属性不生效的bug +## 1.7.2(2021-11-26) +- 优化 组件示例 +## 1.7.1(2021-11-26) +- 修复 vuedoc 文字错误 +## 1.7.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) +## 1.6.2(2021-08-24) +- 新增 支持国际化 +## 1.6.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.6.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.5.0(2021-06-23) +- 新增 mask-click 遮罩层点击事件 +## 1.4.5(2021-06-22) +- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.4(2021-06-18) +- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.3(2021-06-08) +- 修复 错误的 watch 字段 +- 修复 safeArea 属性不生效的问题 +- 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.4.2(2021-05-12) +- 新增 组件示例地址 +## 1.4.1(2021-04-29) +- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +## 1.4.0 (2021-04-29) +- 新增 type 属性的 left\right 值,支持左右弹出 +- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- 新增 safeArea 属性,是否适配底部安全区 +- 修复 App\h5\微信小程序底部安全区占位不对的Bug +- 修复 App 端弹出等待的Bug +- 优化 提升低配设备性能,优化动画卡顿问题 +- 优化 更简单的组件自定义方式 +## 1.2.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.2.8(2021-02-05) +- 调整为uni_modules目录规范 +## 1.2.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 +- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue new file mode 100644 index 0000000..b5eee79 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue new file mode 100644 index 0000000..91370a8 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue @@ -0,0 +1,143 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue new file mode 100644 index 0000000..5be7624 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue @@ -0,0 +1,187 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/uni_modules/uni-popup/components/uni-popup/i18n/en.json new file mode 100644 index 0000000..7f1bd06 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/en.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "cancel", + "uni-popup.ok": "ok", + "uni-popup.placeholder": "pleace enter", + "uni-popup.title": "Hint", + "uni-popup.shareTitle": "Share to" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/uni_modules/uni-popup/components/uni-popup/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json new file mode 100644 index 0000000..5e3003c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "确定", + "uni-popup.placeholder": "请输入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json new file mode 100644 index 0000000..13e39eb --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "確定", + "uni-popup.placeholder": "請輸入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/keypress.js b/uni_modules/uni-popup/components/uni-popup/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup/popup.js b/uni_modules/uni-popup/components/uni-popup/popup.js new file mode 100644 index 0000000..c4e5781 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/popup.js @@ -0,0 +1,26 @@ + +export default { + data() { + return { + + } + }, + created(){ + this.popup = this.getParent() + }, + methods:{ + /** + * 获取父元素实例 + */ + getParent(name = 'uniPopup') { + let parent = this.$parent; + let parentName = parent.$options.name; + while (parentName !== name) { + parent = parent.$parent; + if (!parent) return false + parentName = parent.$options.name; + } + return parent; + }, + } +} diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..54afee2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,473 @@ + + + + diff --git a/uni_modules/uni-popup/package.json b/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..f40556b --- /dev/null +++ b/uni_modules/uni-popup/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.8.3", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-popup/readme.md b/uni_modules/uni-popup/readme.md new file mode 100644 index 0000000..fdad4b3 --- /dev/null +++ b/uni_modules/uni-popup/readme.md @@ -0,0 +1,17 @@ + + +## Popup 弹出层 +> **组件名:uni-popup** +> 代码块: `uPopup` +> 关联组件:`uni-transition` + + +弹出层组件,在应用中弹出一个消息提示窗口、提示框等 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-rate/changelog.md b/uni_modules/uni-rate/changelog.md new file mode 100644 index 0000000..8a98a61 --- /dev/null +++ b/uni_modules/uni-rate/changelog.md @@ -0,0 +1,25 @@ +## 1.3.1(2022-02-25) +- 修复 条件判断 `NaN` 错误的 bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-rate](https://uniapp.dcloud.io/component/uniui/uni-rate) +## 1.2.2(2021-09-10) +- 优化 默认值修改为 0 颗星 +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-05-12) +- 新增 组件示例地址 +## 1.1.1(2021-04-21) +- 修复 布局变化后 uni-rate 星星计算不准确的 bug +- 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 +## 1.1.0(2021-04-16) +- 修复 uni-rate 属性 margin 值为 string 组件失效的 bug + +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 支持 pc 端 diff --git a/uni_modules/uni-rate/components/uni-rate/uni-rate.vue b/uni_modules/uni-rate/components/uni-rate/uni-rate.vue new file mode 100644 index 0000000..9802dfc --- /dev/null +++ b/uni_modules/uni-rate/components/uni-rate/uni-rate.vue @@ -0,0 +1,365 @@ + + + + + diff --git a/uni_modules/uni-rate/package.json b/uni_modules/uni-rate/package.json new file mode 100644 index 0000000..64e8e33 --- /dev/null +++ b/uni_modules/uni-rate/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-rate", + "displayName": "uni-rate 评分", + "version": "1.3.1", + "description": "Rate 评分组件,可自定义评分星星图标的大小、间隔、评分数。", + "keywords": [ + "uni-ui", + "uniui", + "评分" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-rate/readme.md b/uni_modules/uni-rate/readme.md new file mode 100644 index 0000000..eae7b5c --- /dev/null +++ b/uni_modules/uni-rate/readme.md @@ -0,0 +1,12 @@ + + +## Rate 评分 +> **组件名:uni-rate** +> 代码块: `uRate` +> 关联组件:`uni-icons` + + +评分组件,多用于购买商品后,对商品进行评价等场景 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-rate) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-row/changelog.md b/uni_modules/uni-row/changelog.md new file mode 100644 index 0000000..5b465bc --- /dev/null +++ b/uni_modules/uni-row/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-row](https://uniapp.dcloud.io/component/uniui/uni-row) +## 0.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 新增uni-row组件 diff --git a/uni_modules/uni-row/components/uni-col/uni-col.vue b/uni_modules/uni-row/components/uni-col/uni-col.vue new file mode 100644 index 0000000..d5f3728 --- /dev/null +++ b/uni_modules/uni-row/components/uni-col/uni-col.vue @@ -0,0 +1,317 @@ + + + + + diff --git a/uni_modules/uni-row/components/uni-row/uni-row.vue b/uni_modules/uni-row/components/uni-row/uni-row.vue new file mode 100644 index 0000000..c7d9370 --- /dev/null +++ b/uni_modules/uni-row/components/uni-row/uni-row.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/uni_modules/uni-row/package.json b/uni_modules/uni-row/package.json new file mode 100644 index 0000000..3f52fa6 --- /dev/null +++ b/uni_modules/uni-row/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-row", + "displayName": "uni-row 布局-行", + "version": "1.0.0", + "description": "流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。", + "keywords": [ + "uni-ui", + "uniui", + "栅格", + "布局", + "layout" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-row/readme.md b/uni_modules/uni-row/readme.md new file mode 100644 index 0000000..3c9c8b9 --- /dev/null +++ b/uni_modules/uni-row/readme.md @@ -0,0 +1,10 @@ +## Layout 布局 + +> **组件名 uni-row、uni-col** +> 代码块: `uRow`、`uCol` + + +流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-row) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/changelog.md b/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/uni_modules/uni-scss/index.scss b/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/uni_modules/uni-scss/package.json b/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-scss/readme.md b/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/index.scss b/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/uni_modules/uni-scss/styles/setting/_border.scss b/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_color.scss b/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/uni_modules/uni-scss/styles/setting/_radius.scss b/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/uni_modules/uni-scss/styles/setting/_space.scss b/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_styles.scss b/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/uni_modules/uni-scss/styles/setting/_text.scss b/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/uni_modules/uni-scss/styles/setting/_variables.scss b/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/uni_modules/uni-scss/styles/tools/functions.scss b/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/uni_modules/uni-scss/theme.scss b/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/uni_modules/uni-scss/variables.scss b/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/uni_modules/uni-search-bar/changelog.md b/uni_modules/uni-search-bar/changelog.md new file mode 100644 index 0000000..b41fdd3 --- /dev/null +++ b/uni_modules/uni-search-bar/changelog.md @@ -0,0 +1,33 @@ +## 1.2.3(2022-05-24) +- 新增 readonly 属性,组件只读 +## 1.2.2(2022-05-06) +- 修复 vue3 input 事件不生效的bug +## 1.2.1(2022-05-06) +- 修复 多余代码导致的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-search-bar](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +## 1.1.2(2021-08-30) +- 修复 value 属性与 modelValue 属性不兼容的Bug +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 项目示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-04-15) +- uni-ui 新增 uni-search-bar 的 focus 事件 + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持双向绑定 +- 更改 input 事件的返回值,e={value:Number} --> e=value +- 新增 支持图标插槽 +- 新增 支持 clear、blur 事件 +- 新增 支持 focus 属性 +- 去掉组件背景色 diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json new file mode 100644 index 0000000..dd083a5 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "Search enter content" +} \ No newline at end of file diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json new file mode 100644 index 0000000..d4e5c12 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "请输入搜索内容" +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json new file mode 100644 index 0000000..318b6ef --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "請輸入搜索內容" +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue b/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue new file mode 100644 index 0000000..5a518a8 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/uni_modules/uni-search-bar/package.json b/uni_modules/uni-search-bar/package.json new file mode 100644 index 0000000..9352c57 --- /dev/null +++ b/uni_modules/uni-search-bar/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-search-bar", + "displayName": "uni-search-bar 搜索栏", + "version": "1.2.3", + "description": "搜索栏组件,通常用于搜索商品、文章等", + "keywords": [ + "uni-ui", + "uniui", + "搜索框", + "搜索栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-search-bar/readme.md b/uni_modules/uni-search-bar/readme.md new file mode 100644 index 0000000..253092f --- /dev/null +++ b/uni_modules/uni-search-bar/readme.md @@ -0,0 +1,14 @@ + + +## SearchBar 搜索栏 + +> **组件名:uni-search-bar** +> 代码块: `uSearchBar` + + +搜索栏组件 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-section/changelog.md b/uni_modules/uni-section/changelog.md new file mode 100644 index 0000000..738f2b3 --- /dev/null +++ b/uni_modules/uni-section/changelog.md @@ -0,0 +1,2 @@ +## 0.0.1(2022-07-22) +- 初始化 diff --git a/uni_modules/uni-section/components/uni-section/uni-section.vue b/uni_modules/uni-section/components/uni-section/uni-section.vue new file mode 100644 index 0000000..9a52e0b --- /dev/null +++ b/uni_modules/uni-section/components/uni-section/uni-section.vue @@ -0,0 +1,167 @@ + + + + diff --git a/uni_modules/uni-section/package.json b/uni_modules/uni-section/package.json new file mode 100644 index 0000000..0a31fb5 --- /dev/null +++ b/uni_modules/uni-section/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-section", + "displayName": "uni-section 标题栏", + "version": "0.0.1", + "description": "标题栏组件", + "keywords": [ + "uni-ui", + "uniui", + "标题栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-section/readme.md b/uni_modules/uni-section/readme.md new file mode 100644 index 0000000..d47faab --- /dev/null +++ b/uni_modules/uni-section/readme.md @@ -0,0 +1,8 @@ +## Section 标题栏 +> **组件名:uni-section** +> 代码块: `uSection` + +uni-section 组件主要用于文章、列表详情等标题展示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-section) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-segmented-control/changelog.md b/uni_modules/uni-segmented-control/changelog.md new file mode 100644 index 0000000..a44385d --- /dev/null +++ b/uni_modules/uni-segmented-control/changelog.md @@ -0,0 +1,9 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-segmented-control](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-05-12) +- 新增 项目示例地址 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue b/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue new file mode 100644 index 0000000..e8bb3e5 --- /dev/null +++ b/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/uni_modules/uni-segmented-control/package.json b/uni_modules/uni-segmented-control/package.json new file mode 100644 index 0000000..6cae41d --- /dev/null +++ b/uni_modules/uni-segmented-control/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-segmented-control", + "displayName": "uni-segmented-control 分段器", + "version": "1.2.0", + "description": "分段器由至少 2 个分段控件组成,用作不同视图的显示", + "keywords": [ + "uni-ui", + "uniui", + "分段器", + "segement", + "顶部选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-segmented-control/readme.md b/uni_modules/uni-segmented-control/readme.md new file mode 100644 index 0000000..3527b03 --- /dev/null +++ b/uni_modules/uni-segmented-control/readme.md @@ -0,0 +1,13 @@ + + +## SegmentedControl 分段器 +> **组件名:uni-segmented-control** +> 代码块: `uSegmentedControl` + + +用作不同视图的显示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-steps/changelog.md b/uni_modules/uni-steps/changelog.md new file mode 100644 index 0000000..cb9d367 --- /dev/null +++ b/uni_modules/uni-steps/changelog.md @@ -0,0 +1,16 @@ +## 1.1.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-steps](https://uniapp.dcloud.io/component/uniui/uni-steps) +## 1.0.8(2021-05-12) +- 新增 项目示例地址 +## 1.0.7(2021-05-06) +- 修复 uni-steps 横向布局时,多行文字高度不合理的 bug +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-steps/components/uni-steps/uni-steps.vue b/uni_modules/uni-steps/components/uni-steps/uni-steps.vue new file mode 100644 index 0000000..a6c8f28 --- /dev/null +++ b/uni_modules/uni-steps/components/uni-steps/uni-steps.vue @@ -0,0 +1,269 @@ + + + + + diff --git a/uni_modules/uni-steps/package.json b/uni_modules/uni-steps/package.json new file mode 100644 index 0000000..c687b40 --- /dev/null +++ b/uni_modules/uni-steps/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-steps", + "displayName": "uni-steps 步骤条", + "version": "1.1.1", + "description": "步骤条组件,提供横向和纵向两种布局格式。", + "keywords": [ + "uni-ui", + "uniui", + "步骤条", + "时间轴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-steps/readme.md b/uni_modules/uni-steps/readme.md new file mode 100644 index 0000000..da7a4bf --- /dev/null +++ b/uni_modules/uni-steps/readme.md @@ -0,0 +1,13 @@ + + +## Steps 步骤条 +> **组件名:uni-steps** +> 代码块: `uSteps` + + +步骤条,常用于显示进度 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-steps) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-swipe-action/changelog.md b/uni_modules/uni-swipe-action/changelog.md new file mode 100644 index 0000000..c916427 --- /dev/null +++ b/uni_modules/uni-swipe-action/changelog.md @@ -0,0 +1,43 @@ +## 1.3.8(2023-04-13) +- 修复`uni-swipe-action`和`uni-swipe-action-item`不同时使用导致 closeOther 方法报错的 bug +## 1.3.7(2022-06-06) +- 修复 vue3 下使用组件不能正常运行的Bug +## 1.3.6(2022-05-31) +- 修复 h5端点击click触发两次的Bug +## 1.3.5(2022-05-23) +- 修复 isPC 找不到的Bug +## 1.3.4(2022-05-19) +- 修复 在 nvue 下 disabled 失效的bug +## 1.3.3(2022-03-31) +- 修复 按钮字体大小不能设置的bug +## 1.3.2(2022-03-16) +- 修复 h5和app端下报el错误的bug +## 1.3.1(2022-03-07) +- 修复 HBuilderX 1.4.X 版本中,h5和app端下报错的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swipe-action](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +## 1.2.4(2021-08-20) +- 优化 close-all 方法 +## 1.2.3(2021-08-20) +- 新增 close-all 方法,关闭所有已打开的组件 +## 1.2.2(2021-08-17) +- 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +## 1.2.1(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 修复 跨页面修改组件数据 ,导致不能滑动的问题 +## 1.1.10(2021-06-17) +- 修复 按钮点击执行两次的bug +## 1.1.9(2021-05-12) +- 新增 项目示例地址 +## 1.1.8(2021-03-26) +- 修复 微信小程序 nv_navigator is not defined 报错的bug +## 1.1.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 左侧滑动 +- 新增 插槽使用方式 +- 新增 threshold 属性,可以控制滑动缺省值 +- 优化 长列表滚动性能 +- 修复 滚动页面时触发组件滑动的Bug diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js new file mode 100644 index 0000000..707e432 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js @@ -0,0 +1,302 @@ +let bindIngXMixins = {} + +// #ifdef APP-NVUE +const BindingX = uni.requireNativePlugin('bindingx'); +const dom = uni.requireNativePlugin('dom'); +const animation = uni.requireNativePlugin('animation'); + +bindIngXMixins = { + data() { + return {} + }, + + watch: { + show(newVal) { + if (this.autoClose) return + if (this.stop) return + this.stop = true + if (newVal) { + this.open(newVal) + } else { + this.close() + } + }, + leftOptions() { + this.getSelectorQuery() + this.init() + }, + rightOptions(newVal) { + this.init() + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.box = this.getEl(this.$refs['selector-box--hock']) + this.selector = this.getEl(this.$refs['selector-content--hock']); + this.leftButton = this.getEl(this.$refs['selector-left-button--hock']); + this.rightButton = this.getEl(this.$refs['selector-right-button--hock']); + this.init() + }, + // beforeDestroy() { + // this.swipeaction.children.forEach((item, index) => { + // if (item === this) { + // this.swipeaction.children.splice(index, 1) + // } + // }) + // }, + methods: { + init() { + this.$nextTick(() => { + this.x = 0 + this.button = { + show: false + } + setTimeout(() => { + this.getSelectorQuery() + }, 200) + }) + }, + onClick(index, item, position) { + this.$emit('click', { + content: item, + index, + position + }) + }, + touchstart(e) { + // fix by mehaotian 禁止滑动 + if (this.disabled) return + // 每次只触发一次,避免多次监听造成闪烁 + if (this.stop) return + this.stop = true + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + let expression = this.range(this.x, -rightWidth, leftWidth) + let leftExpression = this.range(this.x - leftWidth, -leftWidth, 0) + let rightExpression = this.range(this.x + rightWidth, 0, rightWidth) + + this.eventpan = BindingX.bind({ + anchor: this.box, + eventType: 'pan', + props: [{ + element: this.selector, + property: 'transform.translateX', + expression + }, { + element: this.leftButton, + property: 'transform.translateX', + expression: leftExpression + }, { + element: this.rightButton, + property: 'transform.translateX', + expression: rightExpression + }, ] + }, (e) => { + // nope + if (e.state === 'end') { + this.x = e.deltaX + this.x; + this.isclick = true + this.bindTiming(e.deltaX) + } + }); + }, + touchend(e) { + if (this.isopen !== 'none' && !this.isclick) { + this.open('none') + } + }, + bindTiming(x) { + const left = this.x + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + const threshold = this.threshold + if (!this.isopen || this.isopen === 'none') { + if (left > threshold) { + this.open('left') + } else if (left < -threshold) { + this.open('right') + } else { + this.open('none') + } + } else { + if ((x > -leftWidth && x < 0) || x > rightWidth) { + if ((x > -threshold && x < 0) || (x - rightWidth > threshold)) { + this.open('left') + } else { + this.open('none') + } + } else { + if ((x < threshold && x > 0) || (x + leftWidth < -threshold)) { + this.open('right') + } else { + this.open('none') + } + } + } + }, + + /** + * 移动范围 + * @param {Object} num + * @param {Object} mix + * @param {Object} max + */ + range(num, mix, max) { + return `min(max(x+${num}, ${mix}), ${max})` + }, + + /** + * 开启swipe + */ + open(type) { + this.animation(type) + }, + + /** + * 关闭swipe + */ + close() { + this.animation('none') + }, + + /** + * 开启关闭动画 + * @param {Object} type + */ + animation(type) { + const time = 300 + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + if (this.eventpan && this.eventpan.token) { + BindingX.unbind({ + token: this.eventpan.token, + eventType: 'pan' + }) + } + + switch (type) { + case 'left': + Promise.all([ + this.move(this.selector, leftWidth), + this.move(this.leftButton, 0), + this.move(this.rightButton, rightWidth * 2) + ]).then(() => { + this.setEmit(leftWidth, type) + }) + break + case 'right': + Promise.all([ + this.move(this.selector, -rightWidth), + this.move(this.leftButton, -leftWidth * 2), + this.move(this.rightButton, 0) + ]).then(() => { + this.setEmit(-rightWidth, type) + }) + break + default: + Promise.all([ + this.move(this.selector, 0), + this.move(this.leftButton, -leftWidth), + this.move(this.rightButton, rightWidth) + ]).then(() => { + this.setEmit(0, type) + }) + + } + }, + setEmit(x, type) { + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + this.isopen = this.isopen || 'none' + this.stop = false + this.isclick = false + // 只有状态不一致才会返回结果 + if (this.isopen !== type && this.x !== x) { + if (type === 'left' && leftWidth > 0) { + this.$emit('change', 'left') + } + if (type === 'right' && rightWidth > 0) { + this.$emit('change', 'right') + } + if (type === 'none') { + this.$emit('change', 'none') + } + } + this.x = x + this.isopen = type + }, + move(ref, value) { + return new Promise((resolve, reject) => { + animation.transition(ref, { + styles: { + transform: `translateX(${value})`, + }, + duration: 150, //ms + timingFunction: 'linear', + needLayout: false, + delay: 0 //ms + }, function(res) { + resolve(res) + }) + }) + + }, + + /** + * 获取ref + * @param {Object} el + */ + getEl(el) { + return el.ref + }, + /** + * 获取节点信息 + */ + getSelectorQuery() { + Promise.all([ + this.getDom('left'), + this.getDom('right'), + ]).then((data) => { + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + + if (show === 'none') { + // this.close() + } else { + this.open(show) + } + + }) + + }, + getDom(str) { + return new Promise((resolve, reject) => { + dom.getComponentRect(this.$refs[`selector-${str}-button--hock`], (data) => { + if (data) { + this.button[str] = data.size + resolve(data) + } else { + reject() + } + }) + }) + } + } +} + +// #endif + +export default bindIngXMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js new file mode 100644 index 0000000..917cb48 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js @@ -0,0 +1,12 @@ +export function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (let v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js new file mode 100644 index 0000000..35c796b --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js @@ -0,0 +1,195 @@ +export default { + data() { + return { + x: 0, + transition: false, + width: 0, + viewWidth: 0, + swipeShow: 0 + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + if (newVal && newVal !== 'none') { + this.transition = true + this.open(newVal) + } else { + this.close() + } + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.isopen = false + setTimeout(() => { + this.getQuerySelect() + }, 50) + }, + methods: { + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + /** + * 移动触发 + * @param {Object} e + */ + onChange(e) { + this.moveX = e.detail.x + this.isclose = false + }, + touchstart(e) { + this.transition = false + this.isclose = true + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + touchmove(e) {}, + touchend(e) { + // 0的位置什么都不执行 + if (this.isclose && this.isopen === 'none') return + if (this.isclose && this.isopen !== 'none') { + this.transition = true + this.close() + } else { + this.move(this.moveX + this.leftWidth) + } + }, + + /** + * 移动 + * @param {Object} moveX + */ + move(moveX) { + // 打开关闭的处理逻辑不太一样 + this.transition = true + // 未打开状态 + if (!this.isopen || this.isopen === 'none') { + if (moveX > this.threshold) { + this.open('left') + } else if (moveX < -this.threshold) { + this.open('right') + } else { + this.close() + } + } else { + if (moveX < 0 && moveX < this.rightWidth) { + const rightX = this.rightWidth + moveX + if (rightX < this.threshold) { + this.open('right') + } else { + this.close() + } + } else if (moveX > 0 && moveX < this.leftWidth) { + const leftX = this.leftWidth - moveX + if (leftX < this.threshold) { + this.open('left') + } else { + this.close() + } + } + + } + + }, + + /** + * 打开 + */ + open(type) { + this.x = this.moveX + this.animation(type) + }, + + /** + * 关闭 + */ + close() { + this.x = this.moveX + // TODO 解决 x 值不更新的问题,所以会多触发一次 nextTick ,待优化 + this.$nextTick(() => { + this.x = -this.leftWidth + if (this.isopen !== 'none') { + this.$emit('change', 'none') + } + this.isopen = 'none' + }) + }, + + /** + * 执行结束动画 + * @param {Object} type + */ + animation(type) { + this.$nextTick(() => { + if (type === 'left') { + this.x = 0 + } else { + this.x = -this.rightWidth - this.leftWidth + } + + if (this.isopen !== type) { + this.$emit('change', type) + } + this.isopen = type + }) + + }, + getSlide(x) {}, + getQuerySelect() { + const query = uni.createSelectorQuery().in(this); + query.selectAll('.movable-view--hock').boundingClientRect(data => { + this.leftWidth = data[1].width + this.rightWidth = data[2].width + this.width = data[0].width + this.viewWidth = this.width + this.rightWidth + this.leftWidth + if (this.leftWidth === 0) { + // TODO 疑似bug ,初始化的时候如果x 是0,会导致移动位置错误,所以让元素超出一点 + this.x = -0.1 + } else { + this.x = -this.leftWidth + } + this.moveX = this.x + this.$nextTick(() => { + this.swipeShow = 1 + }) + + if (!this.buttonWidth) { + this.disabledView = true + } + + if (this.autoClose) return + if (this.show !== 'none') { + this.transition = true + this.open(this.shows) + } + }).exec(); + + } + } +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js new file mode 100644 index 0000000..d389bce --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js @@ -0,0 +1,260 @@ +let otherMixins = {} + +// #ifndef APP-PLUS|| MP-WEIXIN || H5 +const MIN_DISTANCE = 10; +otherMixins = { + data() { + // TODO 随机生生元素ID,解决百度小程序获取同一个元素位置信息的bug + const elClass = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}` + return { + uniShow: false, + left: 0, + buttonShow: 'none', + ani: false, + moveLeft: '', + elClass + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + left() { + this.moveLeft = `translateX(${this.left}px)` + }, + buttonShow(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + leftOptions() { + this.init() + }, + rightOptions() { + this.init() + } + }, + mounted() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + this.init() + }, + methods: { + init() { + clearTimeout(this.timer) + this.timer = setTimeout(() => { + this.getSelectorQuery() + }, 100) + // 移动距离 + this.left = 0 + this.x = 0 + }, + + closeSwipe(e) { + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + touchstart(e) { + if (this.disabled) return + this.ani = false + this.x = this.left || 0 + this.stopTouchStart(e) + this.autoClose && this.closeSwipe() + }, + touchmove(e) { + if (this.disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e); + if (this.direction !== 'horizontal') { + return; + } + this.move(this.x + this.deltaX) + return false + }, + touchend() { + if (this.disabled) return + this.moveDirection(this.left) + }, + /** + * 设置移动距离 + * @param {Object} value + */ + move(value) { + value = value || 0 + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + // 获取可滑动范围 + this.left = this.range(value, -rightWidth, leftWidth); + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + */ + moveDirection(left) { + const threshold = this.threshold + const isopen = this.isopen || 'none' + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + if (this.deltaX === 0) { + this.openState('none') + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > + 0 && rightWidth + + left < threshold)) { + // right + this.openState('right') + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > + 0 && + leftWidth - left < threshold)) { + // left + this.openState('left') + } else { + // default + this.openState('none') + } + }, + + /** + * 开启状态 + * @param {Boolean} type + */ + openState(type) { + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + let left = '' + this.isopen = this.isopen ? this.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + + if (this.isopen !== type) { + this.throttle = true + this.$emit('change', type) + } + + this.isopen = type + // 添加动画类 + this.ani = true + this.$nextTick(() => { + this.move(left) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 + }, + close() { + this.openState('none') + }, + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus() { + this.direction = ''; + this.deltaX = 0; + this.deltaY = 0; + this.offsetX = 0; + this.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event) { + this.resetTouchStatus(); + const touch = event.touches[0]; + this.startX = touch.clientX; + this.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event) { + const touch = event.touches[0]; + this.deltaX = touch.clientX - this.startX; + this.deltaY = touch.clientY - this.startY; + this.offsetX = Math.abs(this.deltaX); + this.offsetY = Math.abs(this.deltaY); + this.direction = this.direction || this.getDirection(this.offsetX, this.offsetY); + }, + + getSelectorQuery() { + const views = uni.createSelectorQuery().in(this) + views + .selectAll('.' + this.elClass) + .boundingClientRect(data => { + if (data.length === 0) return + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + this.leftWidth = data[0].width || 0 + this.rightWidth = data[1].width || 0 + this.buttonShow = show + }) + .exec() + } + } +} + +// #endif + +export default otherMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js new file mode 100644 index 0000000..08de1c9 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js @@ -0,0 +1,84 @@ +let mpMixins = {} +let is_pc = null +// #ifdef H5 +import { + isPC +} from "./isPC" +is_pc = isPC() +// #endif +// #ifdef APP-VUE|| MP-WEIXIN || H5 + +mpMixins = { + data() { + return { + is_show: 'none' + } + }, + watch: { + show(newVal) { + this.is_show = this.show + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.is_show = this.show + }, + methods: { + // wxs 中调用 + closeSwipe(e) { + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + + change(e) { + this.$emit('change', e.open) + if (this.is_show !== e.open) { + this.is_show = e.open + } + }, + + appTouchStart(e) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + onClickForPC(index, item, position) { + if (!is_pc) return + // #ifdef H5 + this.$emit('click', { + content: item, + index, + position + }) + // #endif + } + } +} + +// #endif +export default mpMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js new file mode 100644 index 0000000..78f0ec6 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js @@ -0,0 +1,270 @@ +const MIN_DISTANCE = 10; +export default { + showWatch(newVal, oldVal, ownerInstance, instance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + if (!$el) return + this.getDom(instance, ownerInstance, self) + if (newVal && newVal !== 'none') { + this.openState(newVal, instance, ownerInstance, self) + return + } + + if (state.left) { + this.openState('none', instance, ownerInstance, self) + } + this.resetTouchStatus(instance, self) + }, + + /** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ + touchstart(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state; + this.getDom(instance, ownerInstance, self) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + this.stopTouchStart(e, ownerInstance, self) + }, + + /** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchmove(e, ownerInstance, self) { + let instance = e.instance; + // 删除之后已经那不到实例了 + if (!instance) return; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e, self); + if (state.direction !== 'horizontal') { + return; + } + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + let x = state.x + state.deltaX + this.move(x, instance, ownerInstance, self) + }, + + /** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchend(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + this.moveDirection(state.left, instance, ownerInstance, self) + + }, + + /** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ + move(value, instance, ownerInstance, self) { + value = value || 0 + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = this.range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + + }, + + /** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ + getDom(instance, ownerInstance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + var leftDom = $el.querySelector('.button-group--left') + var rightDom = $el.querySelector('.button-group--right') + + state.leftWidth = leftDom.offsetWidth || 0 + state.rightWidth = rightDom.offsetWidth || 0 + state.threshold = instance.getDataset().threshold + }, + + getDisabledType(value) { + return (typeof(value) === 'string' ? JSON.parse(value) : value) || false; + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + + + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ + moveDirection(left, ins, ownerInstance, self) { + var state = self.state + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + this.openState('none', ins, ownerInstance, self) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + this.openState('right', ins, ownerInstance, self) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + this.openState('left', ins, ownerInstance, self) + } else { + // default + this.openState('none', ins, ownerInstance, self) + } + }, + + + /** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ + openState(type, ins, ownerInstance, self) { + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + let left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(() => { + ins.addClass('ani'); + this.move(left, ins, ownerInstance, self) + }) + }, + + + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus(instance, self) { + let state = self.state; + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event, ownerInstance, self) { + let instance = event.instance; + let state = self.state + this.resetTouchStatus(instance, self); + var touch = event.touches[0]; + state.startX = touch.clientX; + state.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event, self) { + let instance = event.instance; + let state = self.state; + let touch = event.touches[0]; + + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || this.getDirection(state.offsetX, state.offsetY); + } +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue new file mode 100644 index 0000000..d79c297 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue @@ -0,0 +1,347 @@ + + + + + + diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs new file mode 100644 index 0000000..b394244 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs @@ -0,0 +1,341 @@ +var MIN_DISTANCE = 10; + +/** + * 判断当前是否为H5、app-vue + */ +var IS_HTML5 = false +if (typeof window === 'object') IS_HTML5 = true + +/** + * 监听页面内值的变化,主要用于动态开关swipe-action + * @param {Object} newValue + * @param {Object} oldValue + * @param {Object} ownerInstance + * @param {Object} instance + */ +function showWatch(newVal, oldVal, ownerInstance, instance) { + var state = instance.getState() + getDom(instance, ownerInstance) + if (newVal && newVal !== 'none') { + openState(newVal, instance, ownerInstance) + return + } + + if (state.left) { + openState('none', instance, ownerInstance) + } + resetTouchStatus(instance) +} + +/** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ +function touchstart(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState(); + getDom(instance, ownerInstance) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + stopTouchStart(e, ownerInstance) +} + +/** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchmove(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 是否可以滑动页面 + stopTouchMove(e); + if (state.direction !== 'horizontal') { + return; + } + + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + + move(state.x + state.deltaX, instance, ownerInstance) +} + +/** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchend(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + moveDirection(state.left, instance, ownerInstance) + +} + +/** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ +function move(value, instance, ownerInstance) { + value = value || 0 + var state = instance.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + +} + +/** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ +function getDom(instance, ownerInstance) { + var state = instance.getState() + var leftDom = ownerInstance.selectComponent('.button-group--left') + var rightDom = ownerInstance.selectComponent('.button-group--right') + var leftStyles = { + width: 0 + } + var rightStyles = { + width: 0 + } + leftStyles = leftDom.getBoundingClientRect() + rightStyles = rightDom.getBoundingClientRect() + + state.leftWidth = leftStyles.width || 0 + state.rightWidth = rightStyles.width || 0 + state.threshold = instance.getDataset().threshold +} + +/** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} + + +/** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ +function moveDirection(left, ins, ownerInstance) { + var state = ins.getState() + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + openState('none', ins, ownerInstance) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + openState('right', ins, ownerInstance) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + openState('left', ins, ownerInstance) + } else { + // default + openState('none', ins, ownerInstance) + } +} + + +/** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ +function openState(type, ins, ownerInstance) { + var state = ins.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + var left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(function() { + ins.addClass('ani'); + move(left, ins, ownerInstance) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 +} + + +function getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; +} + +/** + * 重置滑动状态 + * @param {Object} event + */ +function resetTouchStatus(instance) { + var state = instance.getState(); + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; +} + +/** + * 设置滑动开始位置 + * @param {Object} event + */ +function stopTouchStart(event) { + var instance = event.instance; + var state = instance.getState(); + resetTouchStatus(instance); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.startX = touch.clientX; + state.startY = touch.clientY; +} + +/** + * 滑动中,是否禁止打开 + * @param {Object} event + */ +function stopTouchMove(event) { + var instance = event.instance; + var state = instance.getState(); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || getDirection(state.offsetX, state.offsetY); +} + +function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} + +var movable = false + +function mousedown(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchstart(e, ins) + movable = true +} + +function mousemove(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + if (!movable) return + touchmove(e, ins) +} + +function mouseup(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchend(e, ins) + movable = false +} + +function mouseleave(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + movable = false +} + +module.exports = { + showWatch: showWatch, + touchstart: touchstart, + touchmove: touchmove, + touchend: touchend, + mousedown: mousedown, + mousemove: mousemove, + mouseup: mouseup, + mouseleave: mouseleave +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue b/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue new file mode 100644 index 0000000..4971782 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/uni_modules/uni-swipe-action/package.json b/uni_modules/uni-swipe-action/package.json new file mode 100644 index 0000000..47651a6 --- /dev/null +++ b/uni_modules/uni-swipe-action/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swipe-action", + "displayName": "uni-swipe-action 滑动操作", + "version": "1.3.8", + "description": "SwipeAction 滑动操作操作组件", + "keywords": [ + "", + "uni-ui", + "uniui", + "滑动删除", + "侧滑删除" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-swipe-action/readme.md b/uni_modules/uni-swipe-action/readme.md new file mode 100644 index 0000000..93a5cac --- /dev/null +++ b/uni_modules/uni-swipe-action/readme.md @@ -0,0 +1,11 @@ + + +## SwipeAction 滑动操作 +> **组件名:uni-swipe-action** +> 代码块: `uSwipeAction`、`uSwipeActionItem` + + +通过滑动触发选项的容器 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/changelog.md b/uni_modules/uni-swiper-dot/changelog.md new file mode 100644 index 0000000..85cf54d --- /dev/null +++ b/uni_modules/uni-swiper-dot/changelog.md @@ -0,0 +1,12 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swiper-dot](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 clickItem 事件,支持指示点控制轮播 +- 新增 支持 pc 可用 diff --git a/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue new file mode 100644 index 0000000..46eb8c1 --- /dev/null +++ b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/uni_modules/uni-swiper-dot/package.json b/uni_modules/uni-swiper-dot/package.json new file mode 100644 index 0000000..f2dd8d2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swiper-dot", + "displayName": "uni-swiper-dot 轮播图指示点", + "version": "1.2.0", + "description": "自定义轮播图指示点组件", + "keywords": [ + "uni-ui", + "uniui", + "轮播图指示点", + "dot", + "swiper" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/readme.md b/uni_modules/uni-swiper-dot/readme.md new file mode 100644 index 0000000..7d397e2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/readme.md @@ -0,0 +1,11 @@ + + +## SwiperDot 轮播图指示点 +> **组件名:uni-swiper-dot** +> 代码块: `uSwiperDot` + + +自定义轮播图指示点 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-table/changelog.md b/uni_modules/uni-table/changelog.md new file mode 100644 index 0000000..9f87c67 --- /dev/null +++ b/uni_modules/uni-table/changelog.md @@ -0,0 +1,27 @@ +## 1.2.3(2023-03-28) +- 修复 在vue3模式下可能会出现错误的问题 +## 1.2.2(2022-11-29) +- 优化 主题样式 +## 1.2.1(2022-06-06) +- 修复 微信小程序存在无使用组件的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-table](https://uniapp.dcloud.io/component/uniui/uni-table) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-07-08) +- 新增 uni-th 支持 date 日期筛选范围 +## 1.0.6(2021-07-05) +- 新增 uni-th 支持 range 筛选范围 +## 1.0.5(2021-06-28) +- 新增 uni-th 筛选功能 +## 1.0.4(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.3(2021-04-16) +- 新增 sortable 属性,是否开启单列排序 +- 优化 表格多选逻辑 +## 1.0.2(2021-03-22) +- uni-tr 添加 disabled 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-table/components/uni-table/uni-table.vue b/uni_modules/uni-table/components/uni-table/uni-table.vue new file mode 100644 index 0000000..21d9527 --- /dev/null +++ b/uni_modules/uni-table/components/uni-table/uni-table.vue @@ -0,0 +1,455 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue new file mode 100644 index 0000000..fbe1bdc --- /dev/null +++ b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-td/uni-td.vue b/uni_modules/uni-table/components/uni-td/uni-td.vue new file mode 100644 index 0000000..9ce93e9 --- /dev/null +++ b/uni_modules/uni-table/components/uni-td/uni-td.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/filter-dropdown.vue b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue new file mode 100644 index 0000000..df22a71 --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue @@ -0,0 +1,511 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/uni-th.vue b/uni_modules/uni-table/components/uni-th/uni-th.vue new file mode 100644 index 0000000..14889dd --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/uni-th.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-thead/uni-thead.vue b/uni_modules/uni-table/components/uni-thead/uni-thead.vue new file mode 100644 index 0000000..0dd18cd --- /dev/null +++ b/uni_modules/uni-table/components/uni-thead/uni-thead.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/table-checkbox.vue b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue new file mode 100644 index 0000000..1089187 --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/uni-tr.vue b/uni_modules/uni-table/components/uni-tr/uni-tr.vue new file mode 100644 index 0000000..f9b9671 --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/uni-tr.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uni-table/i18n/en.json b/uni_modules/uni-table/i18n/en.json new file mode 100644 index 0000000..e32023c --- /dev/null +++ b/uni_modules/uni-table/i18n/en.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reset", + "filter-dropdown.search": "Search", + "filter-dropdown.submit": "Submit", + "filter-dropdown.filter": "Filter", + "filter-dropdown.gt": "Greater or equal to", + "filter-dropdown.lt": "Less than or equal to", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/es.json b/uni_modules/uni-table/i18n/es.json new file mode 100644 index 0000000..9afd04b --- /dev/null +++ b/uni_modules/uni-table/i18n/es.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reiniciar", + "filter-dropdown.search": "Búsqueda", + "filter-dropdown.submit": "Entregar", + "filter-dropdown.filter": "Filtrar", + "filter-dropdown.gt": "Mayor o igual a", + "filter-dropdown.lt": "Menos que o igual a", + "filter-dropdown.date": "Fecha" +} diff --git a/uni_modules/uni-table/i18n/fr.json b/uni_modules/uni-table/i18n/fr.json new file mode 100644 index 0000000..b006237 --- /dev/null +++ b/uni_modules/uni-table/i18n/fr.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Réinitialiser", + "filter-dropdown.search": "Chercher", + "filter-dropdown.submit": "Soumettre", + "filter-dropdown.filter": "Filtre", + "filter-dropdown.gt": "Supérieur ou égal à", + "filter-dropdown.lt": "Inférieur ou égal à", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/index.js b/uni_modules/uni-table/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-table/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-table/i18n/zh-Hans.json b/uni_modules/uni-table/i18n/zh-Hans.json new file mode 100644 index 0000000..862af17 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hans.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "确定", + "filter-dropdown.filter": "筛选", + "filter-dropdown.gt": "大于等于", + "filter-dropdown.lt": "小于等于", + "filter-dropdown.date": "日期范围" +} diff --git a/uni_modules/uni-table/i18n/zh-Hant.json b/uni_modules/uni-table/i18n/zh-Hant.json new file mode 100644 index 0000000..64f8061 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hant.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "確定", + "filter-dropdown.filter": "篩選", + "filter-dropdown.gt": "大於等於", + "filter-dropdown.lt": "小於等於", + "filter-dropdown.date": "日期範圍" +} diff --git a/uni_modules/uni-table/package.json b/uni_modules/uni-table/package.json new file mode 100644 index 0000000..7c2f91c --- /dev/null +++ b/uni_modules/uni-table/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-table", + "displayName": "uni-table 表格", + "version": "1.2.3", + "description": "表格组件,多用于展示多条结构类似的数据,如", + "keywords": [ + "uni-ui", + "uniui", + "table", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-datetime-picker"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "n", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-table/readme.md b/uni_modules/uni-table/readme.md new file mode 100644 index 0000000..bb08c79 --- /dev/null +++ b/uni_modules/uni-table/readme.md @@ -0,0 +1,13 @@ + + +## Table 表单 +> 组件名:``uni-table``,代码块: `uTable`。 + +用于展示多条结构类似的数据 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-table) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + diff --git a/uni_modules/uni-tag/changelog.md b/uni_modules/uni-tag/changelog.md new file mode 100644 index 0000000..c0c5839 --- /dev/null +++ b/uni_modules/uni-tag/changelog.md @@ -0,0 +1,21 @@ +## 2.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-tag](https://uniapp.dcloud.io/component/uniui/uni-tag) +## 2.0.0(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +- 移除 插槽 +- 移除 type 属性的 royal 选项 +## 1.1.1(2021-08-11) +- type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-06-18) +- 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug +## 1.0.6(2021-06-04) +- 修复 未定义 sass 变量 "$uni-color-royal" 的bug +## 1.0.5(2021-05-10) +- 修复 royal 类型无效的bug +- 修复 uni-tag 宽度不自适应的bug +- 新增 uni-tag 支持属性 custom-style 自定义样式 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-tag/components/uni-tag/uni-tag.vue b/uni_modules/uni-tag/components/uni-tag/uni-tag.vue new file mode 100644 index 0000000..6378a0b --- /dev/null +++ b/uni_modules/uni-tag/components/uni-tag/uni-tag.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uni_modules/uni-tag/package.json b/uni_modules/uni-tag/package.json new file mode 100644 index 0000000..1878088 --- /dev/null +++ b/uni_modules/uni-tag/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-tag", + "displayName": "uni-tag 标签", + "version": "2.1.0", + "description": "Tag 组件,用于展示1个或多个文字标签,可点击切换选中、不选中的状态。", + "keywords": [ + "uni-ui", + "uniui", + "", + "tag", + "标签" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-tag/readme.md b/uni_modules/uni-tag/readme.md new file mode 100644 index 0000000..6e78ff5 --- /dev/null +++ b/uni_modules/uni-tag/readme.md @@ -0,0 +1,13 @@ + + +## Tag 标签 +> **组件名:uni-tag** +> 代码块: `uTag` + + +用于展示1个或多个文字标签,可点击切换选中、不选中的状态 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tag) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-test/changelog.md b/uni_modules/uni-test/changelog.md new file mode 100644 index 0000000..2f3b102 --- /dev/null +++ b/uni_modules/uni-test/changelog.md @@ -0,0 +1,39 @@ +## 2.0.13(2021-11-18) +邱 +## 2.0.12(2021-11-18) +123123 +## 2.0.11(2021-11-18) +0000 +## 2.0.10(2021-11-18) +111234 +## 2.0.9(2021-11-18) +3333 +## 2.0.8(2021-11-18) +=== +## 2.0.7(2021-11-18) +111 +## 2.0.6(2021-05-26) +- test +## 0.0.37(2021-03-23) +- uni-forms 更新 校验器 +- uni-forms 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug + + +## 0.0.36(2021-03-23) +- uni-forms 更新 校验器 +- uni-forms 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug + + +## 0.0.35(2021-03-23) +- uni-forms 更新 校验器 +- uni-forms 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug + + +## 0.0.34(2021-03-23) +- 测试新同步插件 +## 0.0.33(2021-03-09) +- test +## 0.0.32(2021-02-24) +- 更新 read 2 +## 0.0.31(2021-02-24) +- 同步 readme.md diff --git a/uni_modules/uni-test/components/uni-test/uni-test.vue b/uni_modules/uni-test/components/uni-test/uni-test.vue new file mode 100644 index 0000000..9ea8aaf --- /dev/null +++ b/uni_modules/uni-test/components/uni-test/uni-test.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/uni_modules/uni-test/package.json b/uni_modules/uni-test/package.json new file mode 100644 index 0000000..9a3c4c4 --- /dev/null +++ b/uni_modules/uni-test/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-test", + "displayName": "Test 测试插件", + "version": "2.0.13", + "description": "测试插件 ", + "keywords": [ + "test" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.3" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-test/readme.md b/uni_modules/uni-test/readme.md new file mode 100644 index 0000000..ddb24c6 --- /dev/null +++ b/uni_modules/uni-test/readme.md @@ -0,0 +1,10 @@ + + +## DataCheckbox 数据驱动的单选复选框 +> **组件名:uni-data-checkbox** +> 代码块: `uDataCheckbox` + + +本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括: + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-card) \ No newline at end of file diff --git a/uni_modules/uni-title/changelog.md b/uni_modules/uni-title/changelog.md new file mode 100644 index 0000000..7626216 --- /dev/null +++ b/uni_modules/uni-title/changelog.md @@ -0,0 +1,10 @@ +## 1.1.1(2022-05-19) +- 修改组件描述 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-title](https://uniapp.dcloud.io/component/uniui/uni-title) +## 1.0.2(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-title/components/uni-title/uni-title.vue b/uni_modules/uni-title/components/uni-title/uni-title.vue new file mode 100644 index 0000000..bf4f926 --- /dev/null +++ b/uni_modules/uni-title/components/uni-title/uni-title.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uni-title/package.json b/uni_modules/uni-title/package.json new file mode 100644 index 0000000..2249f5a --- /dev/null +++ b/uni_modules/uni-title/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-title", + "displayName": "uni-title 章节标题", + "version": "1.1.1", + "description": "章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题", + "keywords": [ + "uni-ui", + "uniui", + "标题", + "章节", + "章节标题", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-title/readme.md b/uni_modules/uni-title/readme.md new file mode 100644 index 0000000..0e60b1b --- /dev/null +++ b/uni_modules/uni-title/readme.md @@ -0,0 +1,14 @@ + + +## Title 标题 +> **组件名:uni-title** +> 代码块: `uTitle` + + +章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-title) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + diff --git a/uni_modules/uni-tooltip/changelog.md b/uni_modules/uni-tooltip/changelog.md new file mode 100644 index 0000000..00f1572 --- /dev/null +++ b/uni_modules/uni-tooltip/changelog.md @@ -0,0 +1,10 @@ +## 0.2.1(2022-05-09) +- 修复 content 为空时仍然弹出的bug +## 0.2.0(2022-05-07) +**注意:破坏性更新** +- 更新 text 属性变更为 content +- 更新 移除 width 属性 +## 0.1.1(2022-04-27) +- 修复 组件根 text 嵌套组件 warning +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue b/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue new file mode 100644 index 0000000..ffbb6fa --- /dev/null +++ b/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue @@ -0,0 +1,68 @@ + + + + + + diff --git a/uni_modules/uni-tooltip/package.json b/uni_modules/uni-tooltip/package.json new file mode 100644 index 0000000..e88ecf8 --- /dev/null +++ b/uni_modules/uni-tooltip/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-tooltip", + "displayName": "uni-tooltip 提示文字", + "version": "0.2.1", + "description": "Tooltip 提示文字", + "keywords": [ + "uni-tooltip", + "uni-ui", + "tooltip", + "tip", + "文字提示" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无 ", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-tooltip/readme.md b/uni_modules/uni-tooltip/readme.md new file mode 100644 index 0000000..faafa2e --- /dev/null +++ b/uni_modules/uni-tooltip/readme.md @@ -0,0 +1,8 @@ +## Badge 数字角标 +> **组件名:uni-tooltip** +> 代码块: `uTooltip` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tooltip) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-transition/changelog.md b/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..b1a824b --- /dev/null +++ b/uni_modules/uni-transition/changelog.md @@ -0,0 +1,20 @@ +## 1.3.1(2021-11-23) +- 修复 init 方法初始化问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) +## 1.2.1(2021-09-27) +- 修复 init 方法不生效的 Bug +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.1(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的 Bug +## 1.1.0(2021-04-22) +- 新增 通过方法自定义动画 +- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- 优化 动画触发逻辑,使动画更流畅 +- 优化 支持单独的动画类型 +- 优化 文档示例 +## 1.0.2(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/uni_modules/uni-transition/components/uni-transition/createAnimation.js new file mode 100644 index 0000000..8f89b18 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,131 @@ +// const defaultOption = { +// duration: 300, +// timingFunction: 'linear', +// delay: 0, +// transformOrigin: '50% 50% 0' +// } +// #ifdef APP-NVUE +const nvueAnimation = uni.requireNativePlugin('animation') +// #endif +class MPAnimation { + constructor(options, _this) { + this.options = options + // 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误 + this.animation = uni.createAnimation({ + ...options + }) + this.currentStepAnimates = {} + this.next = 0 + this.$ = _this + + } + + _nvuePushAnimates(type, args) { + let aniObj = this.currentStepAnimates[this.next] + let styles = {} + if (!aniObj) { + styles = { + styles: {}, + config: {} + } + } else { + styles = aniObj + } + if (animateTypes1.includes(type)) { + if (!styles.styles.transform) { + styles.styles.transform = '' + } + let unit = '' + if(type === 'rotate'){ + unit = 'deg' + } + styles.styles.transform += `${type}(${args+unit}) ` + } else { + styles.styles[type] = `${args}` + } + this.currentStepAnimates[this.next] = styles + } + _animateRun(styles = {}, config = {}) { + let ref = this.$.$refs['ani'].ref + if (!ref) return + return new Promise((resolve, reject) => { + nvueAnimation.transition(ref, { + styles, + ...config + }, res => { + resolve() + }) + }) + } + + _nvueNextAnimate(animates, step = 0, fn) { + let obj = animates[step] + if (obj) { + let { + styles, + config + } = obj + this._animateRun(styles, config).then(() => { + step += 1 + this._nvueNextAnimate(animates, step, fn) + }) + } else { + this.currentStepAnimates = {} + typeof fn === 'function' && fn() + this.isEnd = true + } + } + + step(config = {}) { + // #ifndef APP-NVUE + this.animation.step(config) + // #endif + // #ifdef APP-NVUE + this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) + this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin + this.next++ + // #endif + return this + } + + run(fn) { + // #ifndef APP-NVUE + this.$.animationData = this.animation.export() + this.$.timer = setTimeout(() => { + typeof fn === 'function' && fn() + }, this.$.durationTime) + // #endif + // #ifdef APP-NVUE + this.isEnd = false + let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref + if(!ref) return + this._nvueNextAnimate(this.currentStepAnimates, 0, fn) + this.next = 0 + // #endif + } +} + + +const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', + 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', + 'translateZ' +] +const animateTypes2 = ['opacity', 'backgroundColor'] +const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] +animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { + MPAnimation.prototype[type] = function(...args) { + // #ifndef APP-NVUE + this.animation[type](...args) + // #endif + // #ifdef APP-NVUE + this._nvuePushAnimates(type, args) + // #endif + return this + } +}) + +export function createAnimation(option, _this) { + if(!_this) return + clearTimeout(_this.timer) + return new MPAnimation(option, _this) +} diff --git a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..a2bf104 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/uni_modules/uni-transition/package.json b/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..d15fdf0 --- /dev/null +++ b/uni_modules/uni-transition/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.1", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-transition/readme.md b/uni_modules/uni-transition/readme.md new file mode 100644 index 0000000..2f8a77e --- /dev/null +++ b/uni_modules/uni-transition/readme.md @@ -0,0 +1,11 @@ + + +## Transition 过渡动画 +> **组件名:uni-transition** +> 代码块: `uTransition` + + +元素过渡动画 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-ui/changelog.md b/uni_modules/uni-ui/changelog.md new file mode 100644 index 0000000..61b26d0 --- /dev/null +++ b/uni_modules/uni-ui/changelog.md @@ -0,0 +1,541 @@ +## 1.4.27(2023-04-23) +- uni-calendar 修复 某些情况 monthSwitch 未触发的Bug +- uni-calendar 修复 某些情况切换月份错误的Bug +- uni-data-picker 修复 更改 modelValue 报错的 bug +- uni-data-picker 修复 v-for 未使用 key 值控制台 warning +- uni-data-picker 修复代码合并时引发 value 属性为空时不渲染数据的问题 +- uni-data-picker 修复 localdata 不支持动态更新的bug +- uni-data-select 修复 微信小程序点击时会改变背景颜色的 bug +- uni-data-select 修复 禁用时会显示清空按钮 +- uni-data-select 优化 查询条件短期内多次变更只查询最后一次变更后的结果 +- uni-data-select 调整 内部缓存键名调整为 uni-data-select-lastSelectedValue +- uni-datetime-picker 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937) +- uni-datetime-picker 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979) +- uni-datetime-picker 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) +- uni-datetime-picker 优化 值为空依然选中当天问题 +- uni-datetime-picker 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 +- uni-datetime-picker 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 +- uni-datetime-picker 优化 字节小程序日期时间范围选择,底部日期换行问题 +- uni-datetime-picker 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) +- uni-datetime-picker 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684) +- uni-datetime-picker 优化 PC端输入日期格式错误时返回当前日期时间 +- uni-datetime-picker 优化 PC端输入日期时间超出 start、end 限制的Bug +- uni-datetime-picker 优化 移动端日期时间范围用法时间展示不完整问题 +- uni-datetime-picker 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679) +- uni-datetime-picker 修复 vue3 time-picker 无法显示绑定时分秒的Bug +- uni-datetime-picker 修复 字节小程序报错的Bug +- uni-datetime-picker 修复 某些情况切换月份错误的Bug +- uni-easyinput 修复 vue3 下 keyboardheightchange 事件报错的bug +- uni-easyinput 优化 trim 属性默认值 +- uni-easyinput 新增 cursor-spacing 属性 +- uni-fab 新增 pattern.icon 属性,可自定义图标 +- uni-file-picker 修复 手动上传删除一个文件后不能再上传的bug +- uni-forms 修复 required 参数无法动态绑定 +- uni-list 优化 uni-list-chat 具名插槽`header` 非app端套一层元素,方便使用时通过外层元素定位实现样式修改 +- uni-list uni-list-chat 新增 支持具名插槽`header` +- uni-list 新增 列表图标新增 customPrefix 属性 ,用法 [详见](https://uniapp.dcloud.net.cn/component/uniui/uni-icons.html#icons-props) +- uni-nav-bar 修复 自定义状态栏高度闪动BUG +- uni-nav-bar 修复 暗黑模式下边线颜色错误的bug +- uni-popup 修复 uni-popup 重复打开时的 bug +- uni-popup uni-popup-dialog 组件新增 inputType 属性 +- uni-swipe-action 修复`uni-swipe-action`和`uni-swipe-action-item`不同时使用导致 closeOther 方法报错的 bug +- uni-table 修复 在vue3模式下可能会出现错误的问题 +## 1.4.26(2023-01-31) +- uni-badge 修复 运行/打包 控制台警告问题 +- uni-calendar 修复 某些情况切换月份错误问题 +- uni-data-select 修复 不关联服务空间报错的问题 +- uni-data-select 新增 属性 `format` 可用于格式化显示选项内容 +- uni-datetime-picker 修复 某些情况切换月份错误问题 +- uni-easyinput 新增 keyboardheightchange 事件,可监听键盘高度变化 +- uni-list 修复 无反馈效果呈现的bug +## 1.4.25(2023-01-11) +- uni-file-picker 新增 sourceType 属性, 可以自定义图片和视频选择的来源 +## 1.4.24(2023-01-11) +- uni-data-select 修复 当where变化时,数据不会自动更新的问题 +- uni-datetime-picker 修复 多次加载组件造成内存占用的 bug +- uni-datetime-picker 修复 vue3 下 i18n 国际化初始值不正确的 bug +- uni-easyinput 修复 props 中背景颜色无默认值的bug +- uni-list 修复 uni-list-chat 在vue3下跳转报错的bug +- uni-list 修复 uni-list-chat avatar属性 值为本地路径时错误的问题 +- uni-list 修复 uni-list-chat avatar属性 在腾讯云版uniCloud下错误的问题 +- uni-list 修复 uni-list-chat note属性 支持:“草稿”字样功能 文本少1位的问题 +- uni-list 修复 uni-list-item 的 customStyle 属性 padding值在 H5端 无效的bug +- uni-list 修复 uni-list-item 的 customStyle 属性 padding值在nvue(vue2)下无效的bug +- uni-list uni-list-chat 新增 avatar 支持 fileId +- uni-list uni-list 新增属性 render-reverse 详情参考:[https://uniapp.dcloud.net.cn/component/list.html](https://uniapp.dcloud.net.cn/component/list.html) +- uni-list uni-list-chat note属性 支持:“草稿”字样 加红显示 详情参考uni-im:[https://ext.dcloud.net.cn/plugin?name=uni-im](https://ext.dcloud.net.cn/plugin?name=uni-im) +- uni-list uni-list-item 新增属性 customStyle 支持设置padding、backgroundColor +- uni-popup 修复 nvue 下 v-show 报错 +## 1.4.23(2022-10-25) +- uni-datetime-picker 修复,支付宝小程序样式错乱,[详情](https://github.com/dcloudio/uni-app/issues/3861) + +- uni-nav-bar 修复 条件编译错误的bug +- uni-nav-bar 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug +## 1.4.22(2022-09-19) +- 优化 部分组件适配 uni-scss 主题色 +- uni-badge 修复 当 text 超过 max-num 时,badge 的宽度计算是根据 text 的长度计算,更改为 css 计算实际展示宽度,详见:[https://ask.dcloud.net.cn/question/150473](https://ask.dcloud.net.cn/question/150473) +- uni-calendar 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件 +- uni-data-select 修复 微信小程序下拉框出现后选择会点击到蒙板后面的输入框 +- uni-data-select 修复 点击的位置不准确 +- uni-data-select 新增 支持 disabled 属性 +- uni-datetime-picker 修复,反向选择日期范围,日期显示异常,[详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +- uni-datetime-picker 修复 close事件无效的 bug +- uni-datetime-picker 修复 移动端 maskClick 无效的 bug,详见:[https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false](https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false) +- uni-fab 修复 小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false) +- uni-fab 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310) +- uni-forms 优化 根据 rules 自动添加 required 的问题 +- uni-forms 修复 item 未设置 require 属性,rules 设置 require 后,星号也显示的 bug,详见:[https://ask.dcloud.net.cn/question/151540](https://ask.dcloud.net.cn/question/151540) +- uni-nav-bar 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug +- uni-notice-bar 新增 属性 fontSize,可修改文字大小。 +- uni-pagination 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。 +- uni-pagination 修复,未对移动端当前页文字做主题色适配。 +- uni-pagination 修复 es 语言 i18n 错误 +## 1.4.21(2022-09-19) +- 修复,安装时未导入 uni-data-select 和 uni-tooltip 的问题。 +## 1.4.20(2022-07-25) +- uni-section 新增组件 +- uni-forms 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug + +## 1.4.19(2022-07-07) +- uni-data-picker 优化 pc端图标位置不正确的问题 +- uni-data-select 修复 pc端宽度异常的bug +## 1.4.18(2022-07-06) +- uni-forms 【重要】组件逻辑重构,部分用法旧版本不兼容,请注意兼容问题 +- uni-forms 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力 +- uni-forms 新增 更多表单示例 +- uni-forms 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃 +- uni-forms 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效 +- uni-forms 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法 +- uni-forms 新增 子表单的 setRules 方法,配合自定义校验函数使用 +- uni-forms 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则 +- uni-forms 修复 由 1.4.0 引发的 label 插槽不生效的bug +- uni-forms 修复 子组件找不到 setValue 报错的bug +- uni-forms 修复 uni-data-picker 在 uni-forms-item 中报错的bug +- uni-forms 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +- uni-forms 修复 表单校验顺序无序问题 +- uni-forms 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式 +- uni-forms 优化 动态表单校验方式,废弃拼接name的方式 +- uni-breadcrumb 修复 微信小程序 separator 不显示问题 +- uni-data-checkbox 优化 在 uni-forms 中的依赖注入方式 +- uni-data-picker 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +- uni-data-picker 优化 显示样式 +- uni-data-select 优化 显示样式 +- uni-datetime-picker 修复 日历顶部年月及底部确认未国际化 bug +- uni-datetime-picker 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +- uni-easyinput 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容 +- uni-easyinput 新增 clear 事件,点击右侧叉号图标触发 +- uni-easyinput 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发 +- uni-easyinput 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等 +- uni-easyinput 优化 clearable 显示策略 +- uni-file-picker 修复 在uni-forms下样式不生效的bug +- uni-nav-bar 修复 组件示例中插槽用法无法显示内容的bug +- uni-swipe-action 修复 vue3 下使用组件不能正常运行的Bug +- uni-swipe-action 修复 h5端点击click触发两次的Bug +- uni-table 修复 微信小程序存在无使用组件的问题 +## 1.4.17(2022-06-30) +- 支持 ios 安全区 +## 1.4.16(2022-06-06) +- uni-breadcrumb 新增 支持 uni.scss 修改颜色 +- uni-data-select 修复 localdata 赋值不生效的 bug +- uni-data-select 新增 支持选项禁用(数据选项设置 disabled: true 即禁用) +- uni-data-select 修复 当 value 为 0 时选择不生效的 bug +- uni-easyinput 修复 关闭图标某些情况下无法取消的bug +- uni-fav 新增 stat 属性 ,是否开启uni统计功能 +- uni-goods-nav 新增 stat属性,是否开启uni统计功能 +- uni-group 新增 stat属性,是否开启uni统计功能 +- uni-nav-bar 新增 stat 属性 ,可开启统计 title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +- uni-search-bar 新增 readonly 属性,组件只读 +- uni-swipe-action 修复 isPC 找不到的Bug +- uni-swipe-action 修复 在 nvue 下 disabled 失效的bug +- uni-tooltip 修复 content 为空时仍然弹出的bug +## 1.4.15(2022-05-07) +- uni-data-picker 修复 字节小程序 本地数据无法选择下一级的Bug +- uni-data-select 新增 记住上次的选项(仅 collection 存在时有效) +- uni-search-bar 修复 vue3 input 事件不生效的bug +- uni-search-bar 修复 多余代码导致的bug +- uni-tooltip 更新 text 属性变更为 content +- uni-tooltip 更新 移除 width 属性 +- uni-tooltip 修复 组件根 text 嵌套组件 warning +## 1.4.14(2022-04-18) +- uni-datetime-picker 修复 Vue3 下动态赋值,单选类型未响应的 bug +- uni-easyinput 修复 默认值不生效的bug +## 1.4.13(2022-04-02) +- uni-calendar 修复 条件编译 nvue 不支持的 css 样式 +- uni-calendar 修复 startDate、 endDate 属性失效的 bug +- uni-data-picker 修复 nvue 不支持的 v-show 的 bug +- uni-data-picker 修复 条件编译 nvue 不支持的 css 样式 +- uni-datetime-picker 修复 Vue3 下动态赋值未响应的 bug +- uni-easyinput 修复 value不能为0的bug +- uni-popup 修复 弹出层内部无法滚动的bug +- uni-popup 修复 小程序中高度错误的bug +- uni-popup 修复 快速调用open出现问题的Bug +- uni-rate 修复 条件判断 `NaN` 错误的 bug +- uni-swipe-action 修复 按钮字体大小不能设置的bug +- uni-swipe-action 修复 h5和app端下报el错误的bug +- uni-swipe-action 修复 HBuilderX 1.4.X 版本中,h5和app端下报错的bug +## 1.4.12(2022-02-19) +- uni-collapse 修复 初始化的时候 ,open 属性失效的bug +- uni-data-checkbox 修复 multiple 为 true 时,v-model 的值为 null 报错的 bug +- uni-icons 优化 size 属性可以传入不带单位的字符串数值 +- uni-icons 优化 size 支持其他单位 +- uni-nav-bar 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +- uni-popup 修复 safeArea 属性不能设置为false的bug +## 1.4.11(2022-01-21) +- uni-collapse 修复 微信小程序resize后组件收起的bug +- uni-countdown 修复 在微信小程序中样式不生效的bug +- uni-countdown 新增 update 方法 ,在动态更新时间后,刷新组件 +- uni-load-more 新增 showText属性 ,是否显示文本 +- uni-load-more 修复 nvue 平台下不显示文本的bug +- uni-load-more 修复 微信小程序平台样式选择器报警告的问题 +- uni-nav-bar 修复 在vue下,标题不垂直居中的bug +- uni-nav-bar 修复 height 属性类型错误 +- uni-nav-bar 新增 height 属性,可修改组件高度 +- uni-nav-bar 新增 dark 属性可可开启暗黑模式 +- uni-nav-bar 优化 标题字数过多显示省略号 +- uni-nav-bar 优化 插槽,插入内容可完全覆盖 +- uni-popup 修复 isMaskClick 失效的bug +- uni-popup 新增 cancelText \ confirmText 属性 ,可自定义文本 +- uni-popup 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- uni-popup 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 + +## 1.4.10(2022-01-17) +- uni-card 修复 在vue页面下略缩图显示不正常的bug +- uni-datetime-picker 修复 clear-icon 属性在小程序平台不生效的 bug +- uni-datetime-picker 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug +- uni-fab 更新 组件依赖 +- +- uni-icons 修复 nvue 有些图标不显示的bug,兼容老版本图标 +- uni-icons 优化 示例可复制图标名称 +- uni-nav-bar 修复 color 属性不生效的bug +- uni-popup 修复 设置 safeArea 属性不生效的bug +- uni-popup 优化 组件示例 +- uni-popup 修复 vuedoc 文字错误 +## 1.4.9(2021-11-23) +- uni-ui 修复 vue3中某些scss变量无法找到的问题 +- uni-combox 优化 label、label-width 属性 +- uni-data-picker 修复 由上个版本引发的map、v-model等属性不生效的bug +- uni-file-picker 修复 参数为对象的情况下,url在某些情况显示错误的bug +- uni-icons 优化 兼容旧组件 type 值 +- uni-list 修复 在vue3中to属性在发行应用的时候报错的bug +- uni-scss 修复 vue3中scss语法兼容问题 +- uni-transition 修复 init 方法初始化问题 +## 1.4.8(2021-11-19) +- uni-fab 修复 阴影颜色不正确的bug +## 1.4.7(2021-11-19) +- uni-ui 新增 支持国际化 +- uni-ui 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- uni-ui 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-ui](https://uniapp.dcloud.io/component/uniui/uni-ui) +- uni-badge 修改 size 属性默认值调整为 small +- uni-badge 修改 type 属性,默认值调整为 error,info 替换 default +- uni-badge 修复 在字节小程序上样式不生效的 bug +- uni-calendar 修复 弹出层被 tabbar 遮盖 bug +- uni-card 重构插槽的用法 ,header 替换为 title +- uni-card 新增 actions 插槽 +- uni-card 新增 cover 封面图属性和插槽 +- uni-card 新增 padding 内容默认内边距离 +- uni-card 新增 margin 卡片默认外边距离 +- uni-card 新增 spacing 卡片默认内边距 +- uni-card 新增 shadow 卡片阴影属性 +- uni-card 取消 mode 属性,可使用组合插槽代替 +- uni-card 取消 note 属性 ,使用actions插槽代替 +- uni-collapse 优化 show-arrow 属性默认为true +- uni-collapse 新增 show-arrow 属性,控制是否显示右侧箭头 +- uni-countdown 新增 font-size 支持自定义字体大小 +- uni-data-checkbox 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题 +- uni-data-checkbox 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +- uni-data-checkbox 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-dateformat 优化 默认时间不再是当前时间,而是显示'-'字符 +- uni-datetime-picker 修复 hide-second 在移动端的 bug +- uni-datetime-picker 修复 单选赋默认值时,赋值日期未高亮的 bug +- uni-datetime-picker 修复 赋默认值时,移动端未正确显示时间的 bug +- uni-datetime-picker 新增 hide-second 属性,支持只使用时分,隐藏秒 +- uni-datetime-picker 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- uni-datetime-picker 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- uni-datetime-picker 优化 调整字号大小,美化日历界面 +- uni-datetime-picker 优化 范围选择器在 pc 端过宽的问题 +- uni-datetime-picker 新增 支持作为 uni-forms 子组件相关功能 +- uni-datetime-picker 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +- uni-datetime-picker 修复 type 属性动态赋值无效的 bug +- uni-datetime-picker 修复 ‘确认’按钮被 tabbar 遮盖 bug +- uni-datetime-picker 修复 组件未赋值时范围选左、右日历相同的 bug +- uni-datetime-picker 修复 范围选未正确显示当前值的 bug +- uni-datetime-picker 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +- uni-easyinput 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug +- uni-easyinput 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-file-picker 新增 参数中返回 fileID 字段 +- uni-file-picker 修复 腾讯云传入fileID 不能回显的bug +- uni-file-picker 修复 选择图片后,不能放大的问题 +- uni-file-picker 修复 由于 0.2.11 版本引起的不能回显图片的Bug +- uni-file-picker 新增 clearFiles(index) 方法,可以手动删除指定文件 +- uni-file-picker 修复 v-model 值设为 null 报错的Bug +- uni-file-picker 修复 return-type="object" 时,无法删除文件的Bug +- uni-file-picker 修复 auto-upload 属性失效的Bug +- uni-forms 修复 label 插槽不生效的bug +- uni-forms 修复 没有添加校验规则的字段依然报错的Bug +- uni-forms 修复 重置表单错误信息无法清除的问题 +- uni-forms 修复 表单验证只生效一次的问题 +- uni-icons 新增 更多图标 +- uni-icons 优化 自定义图标使用方式 +- uni-link 修复 在 nvue 下不显示的 bug +- uni-pagination 修复 current 、value 属性未监听,导致高亮样式失效的 bug +- uni-rate 优化 默认值修改为 0 颗星 +- uni-search-bar 修复 value 属性与 modelValue 属性不兼容的Bug +- uni-swipe-action 新增 close-all 方法,关闭所有已打开的组件 +- uni-swipe-action 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- uni-swipe-action 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- uni-swipe-action 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +- uni-tag 新增 提供组件设计资源,组件样式调整 +- uni-tag 移除 插槽 +- uni-tag 移除 type 属性的 royal 选项 +- uni-tag type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.4.2(2021-08-20) +- 新增 uni-ui 组件支持国际化 i18n +- uni-collapse 优化 show-arrow 属性默认为true +- uni-collapse 新增 show-arrow 属性,控制是否显示右侧箭头 +- uni-data-checkbox 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +- uni-easyinput 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug +- uni-file-picker 修复 由于 0.2.11 版本引起的不能回显图片的Bug +- uni-file-picker 新增 clearFiles(index) 方法,可以手动删除指定文件 +- uni-file-picker 修复 v-model 值设为 null 报错的Bug +- uni-swipe-action 新增 close-all 方法,关闭所有已打开的组件 +- uni-swipe-action 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- uni-swipe-action 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- uni-swipe-action 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +## 1.4.0(2021-08-13) +- uni-calendar 修复 弹出层被 tabbar 遮盖 bug +- uni-data-checkbox 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-dateformat 调整 默认时间不再是当前时间,而是显示'-'字符 +- uni-datetime-picker 新增 适配 vue3 +- uni-datetime-picker 新增 支持作为 uni-forms 子组件相关功能 +- uni-datetime-picker 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +- uni-datetime-picker 修复 type 属性动态赋值无效的 bug +- uni-datetime-picker 修复 ‘确认’按钮被 tabbar 遮盖 bug +- uni-datetime-picker 修复 组件未赋值时范围选左、右日历相同的 bug +- uni-datetime-picker 修复 范围选未正确显示当前值的 bug +- uni-datetime-picker 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +- uni-easyinput 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-file-picker 修复 return-type="object" 时,无法删除文件的Bug +- uni-file-picker 修复 auto-upload 属性失效的Bug +- uni-forms 修复 没有添加校验规则的字段依然报错的Bug +- uni-forms 修复 重置表单错误信息无法清除的问题 +- uni-forms 优化 组件文档 +- uni-forms 修复 表单验证只生效一次的问题 +- uni-tag type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.3.9(2021-08-02) +- uni-datetime-picker 新增 return-type 属性支持返回 date 日期对象 +- uni-file-picker 修复 fileExtname属性不指定值报错的Bug +- uni-file-picker 修复 在某种场景下图片不回显的Bug +- uni-link 支持自定义插槽 +## 1.3.8(2021-07-31) +- uni-ui 组件兼容 vue3 +- uni-collapse 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug +- uni-collapse 优化 组件示例 +- uni-collapse 新增 组件折叠动画 +- uni-collapse 新增 value\v-model 属性 ,动态修改面板折叠状态 +- uni-collapse 新增 title 插槽 ,可定义面板标题 +- uni-collapse 新增 border 属性 ,显示隐藏面板内容分隔线 +- uni-collapse 新增 title-border 属性 ,显示隐藏面板标题分隔线 +- uni-collapse 修复 resize 方法失效的Bug +- uni-collapse 修复 change 事件返回参数不正确的Bug +- uni-collapse 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法 +- uni-data-checkbox 优化 在uni-forms组件,与label不对齐的问题 +- uni-data-checkbox 修复 单选默认值为0不能选中的Bug +- uni-easyinput 优化 errorMessage 属性支持 Boolean 类型 +- uni-file-picker 修复 return-type为object下,返回值不正确的Bug +- uni-file-picker 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题 +- uni-file-picker 优化 h5平台下上传文件导致页面卡死的问题 +- uni-forms 修复 vue2 下条件编译导致destroyed生命周期失效的Bug +- uni-forms 修复 1.2.1 引起的示例在小程序平台报错的Bug +- uni-forms 修复 动态校验表单,默认值为空的情况下校验失效的Bug +- uni-forms 修复 不指定name属性时,运行报错的Bug +- uni-forms 优化 label默认宽度从65调整至70,使required为true且四字时不换行 +- uni-forms 优化 组件示例,新增动态校验示例代码 +- uni-forms 优化 组件文档,使用方式更清晰 +- uni-list 修复 与其他组件嵌套使用时,点击失效的Bug +- uni-swipe-action 修复 跨页面修改组件数据 ,导致不能滑动的问题 +## 1.3.7(2021-07-16) +- uni-ui 兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- uni-datetime-picker 修复 单选日期类型,初始赋值后不在当前日历的 bug +- uni-datetime-picker 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- uni-datetime-picker 优化 移动端移除显示框的清空按钮,无实际用途 +- uni-datetime-picker 修复 组件赋值为空,界面未更新的 bug +- uni-datetime-picker 修复 start 和 end 不能动态赋值的 bug +- uni-datetime-picker 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug +## 1.3.6(2021-07-09) +- uni-data-checkbox 优化 删除无用日志 +- uni-data-checkbox 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题 +- uni-data-checkbox 修复 nvue 黑框样式问题 +- uni-datetime-picker 修复 范围选择不能动态赋值的 bug +- uni-datetime-picker 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +- uni-datetime-picker 优化 弹出层在超出视窗边缘定位不准确的问题 +- uni-datetime-picker 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug +- uni-datetime-picker 优化 弹出层在超出视窗边缘被遮盖的问题 +- uni-datetime-picker 新增 maskClick 事件 +- uni-datetime-picker 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px +- uni-datetime-picker 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +- uni-datetime-picker 新增 日期时间显示框支持插槽 +- uni-file-picker 修复 sourceType 缺少默认值导致 ios 无法选择文件 +- uni-file-picker 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改 +- uni-table 新增 uni-th 支持 date 日期筛选范围 +- uni-table 新增 uni-th 支持 range 筛选范围 +- uni-table 新增 uni-th 筛选功能 +## 1.3.5(2021-07-02) +- uni-card 优化 图文卡片无图片加载时,提供占位图标 +- uni-card 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持) +- uni-card 修复 thumbnail 不存在仍然占位的 bug +- uni-data-checkbox 修复 selectedTextColor 属性不生效的Bug +- uni-datetime-picker 优化 添加 uni-icons 依赖 +- uni-easyinput 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug +- uni-file-picker 修复 由 0.0.10 版本引发的 returnType 属性失效的问题 +- uni-file-picker 优化 文件上传后进度条消失时机 +- uni-file-picker 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug +- uni-forms 修复 pattern 属性在微信小程序平台无效的问题 +## 1.3.4(2021-06-25) +- uni-badge 优化 示例项目 +- uni-countdown 修复 uni-countdown 重复赋值跳两秒的 bug +- uni-easyinput 修复 passwordIcon 属性拼写错误的 bug +- uni-forms 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug +- uni-forms 修复 只写setRules方法而导致校验不生效的Bug +- uni-forms 修复 由上个办法引发的错误提示文字错位的Bug +- uni-forms 修复 不设置 label 属性 ,无法设置label插槽的问题 +- uni-forms 修复 不设置label属性,label-width属性不生效的bug +- uni-forms 修复 setRules 方法与rules属性冲突的问题 +- uni-link 新增 download 属性,H5平台下载文件名 +- uni-popup 新增 mask-click 遮罩层点击事件 +- uni-popup 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +- uni-tag 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug +## 1.3.3(2021-06-18) +- uni-easyinput 新增 passwordIcon 属性,当type=password时是否显示小眼睛图标 +- uni-easyinput 修复 confirmType 属性不生效的问题 +- uni-easyinput 修复 disabled 状态可清出内容的 bug +- uni-file-picker 修复 删除文件时无法触发 v-model 的Bug +- uni-popup 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +- uni-popup 修复 错误的 watch 字段 +- uni-popup 修复 safeArea 属性不生效的问题 +- uni-popup 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.3.2(2021-06-04) +- uni-data-checkbox 新增 map 属性,可以方便映射text/value属性 +- uni-data-checkbox 修复 不关联服务空间的情况下组件报错的Bug +- uni-data-picker 修复 上个版本引出的本地数据无法选择带有children的2级节点 +- uni-forms 修复 动态删减数据导致报错的问题 +- uni-forms 新增 modelValue 属性 ,value 即将废弃 +- uni-forms 新增 uni-forms-item 可以设置单独的 rules +- uni-forms 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤 +- uni-forms 优化 submit 事件重命名为 validate +- uni-data-picker 修复 无法加载云端数据的问题 +- uni-data-picker 修复 v-model无效问题 +- uni-data-picker 修复 loaddata 为空数据组时加载时间过长问题 +- uni-datetime-picker 修复 图标在小程序上不显示的 bug +- uni-datetime-picker 优化 重命名引用组件,避免潜在组件命名冲突 +- uni-datetime-picker 优化 代码目录扁平化 +- uni-tag 修复 未定义 sass 变量 "$uni-color-royal" 的bug +## 1.3.1(2021-05-14) +- uni-badge 新增 uni-badge 的 absolute 属性,支持定位 +- uni-badge 新增 uni-badge 的 offset 属性,支持定位偏移 +- uni-badge 新增 uni-badge 的 is-dot 属性,支持仅显示有一个小点 +- uni-badge 新增 uni-badge 的 max-num 属性,支持自定义封顶的数字值,超过 99 显示99+ +- uni-badge 优化 uni-badge 属性 custom-style, 支持以对象形式自定义样式 +- uni-badge 修复 uni-badge 在 App 端,数字小于10时不是圆形的bug +- uni-badge 修复 uni-badge 在父元素不是 flex 布局时,宽度缩小的bug +- uni-badge 新增 uni-badge 属性 custom-style, 支持自定义样式 +- uni-datetime-picker 修复 ios 下不识别 '-' 日期格式的 bug +- uni-datetime-picker 优化 pc 下弹出层添加边框和阴影 +- uni-datetime-picker 修复 在 admin 中获取弹出层定位错误的bug +- uni-datetime-picker 修复 type 属性向下兼容,默认值从 date 变更为 datetime +- uni-datetime-picker 支持日历形式的日期+时间的范围选择 +- uni-steps 修复 uni-steps 横向布局时,多行文字高度不合理的 bug +- uni-countdown 修复 uni-countdown 不能控制倒计时的 bug +- uni-tag 修复 royal 类型无效的bug +- uni-tag 修复 uni-tag 宽度不自适应的bug +- uni-tag 新增 uni-tag 支持属性 custom-style 自定义样式 +- uni-link 新增 href 属性支持 tel:|mailto: +- uni-popup 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +- uni-popup 新增 type 属性的 left\right 值,支持左右弹出 +- uni-popup 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- uni-popup 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- uni-popup 新增 safeArea 属性,是否适配底部安全区 +- uni-popup 修复 App\h5\微信小程序底部安全区占位不对的Bug +- uni-popup 修复 App 端弹出等待的Bug +- uni-popup 优化 提升低配设备性能,优化动画卡顿问题 +- uni-popup 优化 更简单的组件自定义方式 +- uni-table 修复 示例项目缺少组件的Bug +- uni-forms 修复 自定义检验器失效的问题 +- uni-title 修复 示例项目缺少组件的Bug +- uni-transition 修复 示例项目缺少组件的Bug +- uni-swiper-dot 修复 示例项目缺少组件的Bug +- uni-ui 新增 组件示例地址 +## 1.3.0(2021-04-23) +- uni-combox 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-data-picker 修复 非树形数据有 where 属性查询报错的问题 +- uni-fav 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-goods-nav 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-nav-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-notice-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-number-box 修复 uni-number-box 浮点数运算不精确的 bug +- uni-number-box 修复 uni-number-box change 事件触发不正确的 bug +- uni-number-box 新增 uni-number-box v-model 双向绑定 +- uni-rate 修复 布局变化后 uni-rate 星星计算不准确的 bug +- uni-rate 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 +- uni-search-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-steps 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-transition 新增 通过方法自定义动画 +- uni-transition 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- uni-transition 优化 动画触发逻辑,使动画更流畅 +- uni-transition 优化 支持单独的动画类型 +- uni-transition 优化 文档示例 +## 1.2.13(2021-04-16) +- uni-ui 新增 uni-data-picker 支持云端非树形表结构数据 +- uni-ui 修复 uni-data-checkbox nvue 下无法选中的问题 +- uni-ui 修复 uni-data-picker 根节点 parent_field 字段等于null时选择界面错乱问题 +- uni-ui 修复 uni-file-picker 选择的文件非 file-extname 字段指定的扩展名报错的Bug +- uni-ui 修复 uni-swipe-action 报错 nv_navigator is not defined 的bug +- uni-ui 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +- uni-ui 优化 uni-file-picker file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔 +- uni-ui 优化 uni-pagination PC 和 移动端适配不同的 ui +- uni-ui 更新 uni-file-picker 组件示例 +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug +- uni-ui 新增 uni-search-bar 的 focus 事件 +- uni-ui 修复 uni-rate 属性 margin 值为 string 组件失效的 bug +- uni-data-picker 修复 本地数据概率无法回显时问题 +- uni-table 新增 sortable 属性,是否开启单列排序 +- uni-table 优化 表格多选逻辑 +## 1.2.12(2021-03-23) +- uni-ui 新增 uni-datetime-picker 的 hide-second 属性、border 属性; +- uni-ui 修复 uni-datetime-picker 选择跟显示的日期不一样的 bug, +- uni-ui 修复 uni-datetime-picker change事件触发2次的 bug +- uni-ui 修复 uni-datetime-picker 分、秒 end 范围错误的 bug +- uni-ui 新增 uni-tr selectable 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +- uni-ui 新增 uni-data-checkbox 新增 disabled属性,支持nvue +- uni-ui 优化 uni-data-checkbox 无选项时提示“暂无数据” +- uni-ui 优化 uni-data-checkbox 默认颜色显示 +- uni-ui 新增 uni-link href 属性支持 tel:|mailto: +- uni-ui 新增 uni-table 示例demo +- uni-ui 修复 uni-data-picker 微信小程序某些情况下无法选择的问题,事件无法触发的问题 +- uni-ui 修复 uni-nav-bar easycom 下,找不到 uni-status-bar 的bug +- uni-ui 修复 uni-easyinput 示例在 qq 小程序上的bug +- uni-ui 修复 uni-forms 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug +- uni-ui 调整 cli 项目 建议使用 easycom 方式引用组件,如使用按需引用,需手动维护组件内部引用 + +## 1.2.11(2021-02-24) +- 调整为uni_modules目录规范 +- uni-data-picker 新增 数据驱动的picker选择器 +- uni-file-picker 新增 文件选择上传 +- uni-row 新增 栅格系统 +- uni-data-checkbox 优化 支持 nvue +- uni-forms 修复 偶发性获取表单值错误的Bug +- uni-forms 修复 校验 uni-data-picker value 为 0 时,返回值错误的Bug +- uni-forms 修复 uni-forms-item 组件隐藏时依然触发校验的bug +- uni-forms 优化 实时校验 +- uni-forms 优化 兼容nvue页面 +- uni-easyinput 优化 兼容nvue页面 +- uni-group 优化 兼容nvue页面 +- uni-popup 优化 组件适配 PC +- uni-fab 优化 适配 PC +- uni-swiper-dot 优化 适配 PC +- uni-rate 优化 适配 PC +- uni-notice-bar 优化 适配 PC +- uni-indexed-list 优化 适配 PC +- uni-combox 优化 适配 PC +- uni-transition 优化 适配 PC +- uni-nav-bar 优化 适配 PC +- uni-swipe-action 优化 适配 PC diff --git a/uni_modules/uni-ui/components/uni-ui/uni-ui.vue b/uni_modules/uni-ui/components/uni-ui/uni-ui.vue new file mode 100644 index 0000000..0970892 --- /dev/null +++ b/uni_modules/uni-ui/components/uni-ui/uni-ui.vue @@ -0,0 +1,7 @@ + + + diff --git a/uni_modules/uni-ui/package.json b/uni_modules/uni-ui/package.json new file mode 100644 index 0000000..857ed51 --- /dev/null +++ b/uni_modules/uni-ui/package.json @@ -0,0 +1,129 @@ +{ + "id": "uni-ui", + "displayName": "uni-ui", + "version": "1.4.27", + "description": "uni-ui 是基于uni-app的、全端兼容的、高性能UI框架", + "keywords": [ + "uni-ui", + "uniui", + "UI组件库", + "ui框架", + "ui库" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.10" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-badge", + "uni-calendar", + "uni-card", + "uni-collapse", + "uni-combox", + "uni-countdown", + "uni-data-checkbox", + "uni-data-picker", + "uni-data-select", + "uni-dateformat", + "uni-datetime-picker", + "uni-drawer", + "uni-easyinput", + "uni-fab", + "uni-fav", + "uni-file-picker", + "uni-forms", + "uni-goods-nav", + "uni-grid", + "uni-group", + "uni-icons", + "uni-indexed-list", + "uni-link", + "uni-list", + "uni-load-more", + "uni-nav-bar", + "uni-notice-bar", + "uni-number-box", + "uni-pagination", + "uni-popup", + "uni-rate", + "uni-row", + "uni-search-bar", + "uni-section", + "uni-segmented-control", + "uni-steps", + "uni-swipe-action", + "uni-swiper-dot", + "uni-table", + "uni-tag", + "uni-title", + "uni-tooltip", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-ui/readme.md b/uni_modules/uni-ui/readme.md new file mode 100644 index 0000000..23f8456 --- /dev/null +++ b/uni_modules/uni-ui/readme.md @@ -0,0 +1,247 @@ +> 当前插件不包含示例页面 ,如需示例请在 HBuiderX 中新建 `hello uni-app > 扩展组件` 中查看 +> +> 代码示例地址 :[https://ext.dcloud.net.cn/plugin?id=4941](https://ext.dcloud.net.cn/plugin?id=4941) +> +> 组件演示地址:[https://hellouniapp.dcloud.net.cn](https://hellouniapp.dcloud.net.cn/pages/extUI/badge/badge) +> +> 组件文档地址:[https://uniapp.dcloud.io/component/uniui/uni-ui](https://uniapp.dcloud.io/component/uniui/uni-ui) + +# uni-ui 介绍 + +## uni-ui产品特点 + +### 1. 高性能 + +目前为止,在小程序和混合app领域,暂时还没有比 `uni-ui` 更高性能的框架。 +- 自动差量更新数据 + +虽然uni-app支持小程序自定义组件,所有小程序的ui库都可以用。但小程序自定义组件的ui库都需要使用setData手动更新数据,在大数据量时、或高频更新数据时,很容易产生性能问题。 + +而 `uni-ui` 属于vue组件,uni-app引擎底层自动diff更新数据。当然其实插件市场里众多vue组件都具备这个特点。 +- 优化逻辑层和视图层通讯折损 + +非H5,不管是小程序还是App,不管是app的webview渲染还是原生渲染,全都是逻辑层和视图层分离的。这里就有一个逻辑层和视图层通讯的折损问题。 +比如在视图层拖动一个可跟手的组件,由于通讯的损耗,用js监听很难做到实时跟手。 + +这时就需要使用css动画以及平台底层提供的wxs、bindingx等技术。不过这些技术都比较复杂,所以 `uni-ui` 里做了封装,在需要跟手式操作的ui组件,比如swiperaction列表项左滑菜单,就在底层使用了这些技术,实现了高性能的交互体验 +- 背景停止 + +很多ui组件是会一直动的,比如轮播图、跑马灯。即便这个窗体被新窗体挡住,它在背景层仍然在消耗着硬件资源。在Android的webview版本为chrome66以上,背景操作ui会引发很严重的性能问题,造成前台界面明显卡顿。 + +而 `uni-ui` 的组件,会自动判断自己的显示状态,在组件不再可见时,不会再消耗硬件资源。 + +### 2. 全端 + + `uni-ui` 的组件都是多端自适应的,底层会抹平很多小程序平台的差异或bug。 + +比如导航栏navbar组件,会自动处理不同端的状态栏。 +比如swiperaction组件,在app和微信小程序上会使用交互体验更好的wxs技术,但在不支持wxs的其他小程序端会使用js模拟类似效果。 + + `uni-ui` 还支持nvue原生渲染,[详见](https://github.com/dcloudio/uni-ui/tree/nvue-uni-ui) + +未来 `uni-ui` 还会支持pc等大屏设备。 + +### 3. 与uni统计自动集成实现免打点 + +uni统计是优秀的多端统计平台,见[tongji.dcloud.net.cn](https://tongji.dcloud.net.cn)。 + +除了一张报表看全端,它的另一个重要特点是免打点。 +比如使用 `uni-ui` 的navbar标题栏、收藏、购物车等组件,均可实现自动打点,统计页面标题等各种行为数据。 +当然你也可以关闭uni统计,这不是强制的。 + +### 4. 主题扩展 + + `uni-ui` 支持[uni.scss](https://uniapp.dcloud.io/collocation/uni-scss),可以方便的切换App的风格。 + +ui是一种需求非常发散的产品,DCloud官方也无意用 `uni-ui` 压制第三方ui插件的空间,但官方有义务在性能和多端方面提供一个开源的标杆给大家。 + +我们欢迎更多优秀的ui组件出现,也欢迎更多人贡献 `uni-ui` 的主题风格,满足更多用户的需求。 + + +## 快速开始 + +uni-ui支持 HBuilderX直接新建项目模板、npm安装和单独导入个别组件等多种使用方式 + +### 在HBuilderX 新建uni-app项目的模板中,选择uni-ui模板 +![HBuilderX内创建uni-ui项目](https://img.cdn.aliyun.dcloud.net.cn/uni-app/doc/create-uni-ui-project.jpg) + +由于uni-app独特的[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)技术,可以免引用、注册,直接使用各种符合规则的vue组件。 + +在代码区键入`u`,拉出各种内置或uni-ui的组件列表,选择其中一个,即可使用该组件。 + +光标放在组件名称上,按F1,可以查阅组件的文档。 + +![uni-ui代码块](https://img.cdn.aliyun.dcloud.net.cn/uni-app/doc/uni-ui-snippet.jpg) + +### 通过 uni_modules 单独安装组件 +如果你没有创建uni-ui项目模板,也可以在你的工程里,通过 uni_modules 单独安装需要的某个组件。下表为uni-ui的扩展组件清单,点击每个组件在详情页面可以导入组件到项目下,导入后直接使用即可,无需import和注册。 + +|组件名|组件说明| +|---|---| +|uni-badge|[数字角标](https://ext.dcloud.net.cn/plugin?name=uni-badge)| +|uni-calendar|[日历](https://ext.dcloud.net.cn/plugin?name=uni-calendar)| +|uni-card|[卡片](https://ext.dcloud.net.cn/plugin?name=uni-card)| +|uni-collapse|[折叠面板](https://ext.dcloud.net.cn/plugin?name=uni-collapse)| +|uni-combox|[组合框](https://ext.dcloud.net.cn/plugin?name=uni-combox)| +|uni-countdown|[倒计时](https://ext.dcloud.net.cn/plugin?name=uni-countdown)| +|uni-data-checkbox|[数据选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-checkbox)| +|uni-data-picker|[数据驱动的picker选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-picker)| +|uni-dateformat|[日期格式化](https://ext.dcloud.net.cn/plugin?name=uni-dateformat)| +|uni-datetime-picker|[日期选择器](https://ext.dcloud.net.cn/plugin?name=uni-datetime-picker)| +|uni-drawer|[抽屉](https://ext.dcloud.net.cn/plugin?name=uni-drawer)| +|uni-easyinput|[增强输入框](https://ext.dcloud.net.cn/plugin?name=uni-easyinput)| +|uni-fab|[悬浮按钮](https://ext.dcloud.net.cn/plugin?name=uni-fab)| +|uni-fav|[收藏按钮](https://ext.dcloud.net.cn/plugin?name=uni-fav)| +|uni-file-picker|[文件选择上传](https://ext.dcloud.net.cn/plugin?name=uni-file-picker)| +|uni-forms|[表单](https://ext.dcloud.net.cn/plugin?name=uni-forms)| +|uni-goods-nav|[商品导航](https://ext.dcloud.net.cn/plugin?name=uni-goods-nav)| +|uni-grid|[宫格](https://ext.dcloud.net.cn/plugin?name=uni-grid)| +|uni-group|[分组](https://ext.dcloud.net.cn/plugin?name=uni-group)| +|uni-icons|[图标](https://ext.dcloud.net.cn/plugin?name=uni-icons)| +|uni-indexed-list|[索引列表](https://ext.dcloud.net.cn/plugin?name=uni-indexed-list)| +|uni-link|[超链接](https://ext.dcloud.net.cn/plugin?name=uni-link)| +|uni-list|[列表](https://ext.dcloud.net.cn/plugin?name=uni-list)| +|uni-load-more|[加载更多](https://ext.dcloud.net.cn/plugin?name=uni-load-more)| +|uni-nav-bar|[自定义导航栏](https://ext.dcloud.net.cn/plugin?name=uni-nav-bar)| +|uni-notice-bar|[通告栏](https://ext.dcloud.net.cn/plugin?name=uni-notice-bar)| +|uni-number-box|[数字输入框](https://ext.dcloud.net.cn/plugin?name=uni-number-box)| +|uni-pagination|[分页器](https://ext.dcloud.net.cn/plugin?name=uni-pagination)| +|uni-popup|[弹出层](https://ext.dcloud.net.cn/plugin?name=uni-popup)| +|uni-rate|[评分](https://ext.dcloud.net.cn/plugin?name=uni-rate)| +|uni-row|[布局-行](https://ext.dcloud.net.cn/plugin?name=uni-row)| +|uni-search-bar|[搜索栏](https://ext.dcloud.net.cn/plugin?name=uni-search-bar)| +|uni-segmented-control|[分段器](https://ext.dcloud.net.cn/plugin?name=uni-segmented-control)| +|uni-steps|[步骤条](https://ext.dcloud.net.cn/plugin?name=uni-steps)| +|uni-swipe-action|[滑动操作](https://ext.dcloud.net.cn/plugin?name=uni-swipe-action)| +|uni-swiper-dot|[轮播图指示点](https://ext.dcloud.net.cn/plugin?name=uni-swiper-dot)| +|uni-table|[表格](https://ext.dcloud.net.cn/plugin?name=uni-table)| +|uni-tag|[标签](https://ext.dcloud.net.cn/plugin?name=uni-tag)| +|uni-title|[章节标题](https://ext.dcloud.net.cn/plugin?name=uni-title)| +|uni-transition|[过渡动画](https://ext.dcloud.net.cn/plugin?name=uni-transition)| + + +使用 `uni_modules` 方式安装组件库,可以直接通过插件市场导入,通过右键菜单快速更新组件,不需要引用、注册,直接在页面中使用 `uni-ui` 组件。[点击安装 uni-ui 组件库](https://ext.dcloud.net.cn/plugin?id=55) + +**注意:下载最新的组件目前仅支持 uni_modules ,非 uni_modules 版本最高支持到组件的1.2.10版本** + +如不能升级到 `uni_modules` 版本,可以使用 `uni_modules` 安装好对应组件,将组件拷贝到对应目录。 + +例如需更新 `uni-list`和`uni-badge` ,将 `uni_modules>uni-list>components`和`uni_modules>uni-badege>components`下所有目录拷贝到如下目录即可: + + +**目录示例** + +```json +┌─components 组件目录 +│ ├─uni-list list 列表目录 +│ │ └─uni-list.vue list 组件文件 +│ ├─uni-list-item list-item 列表目录 +│ │ └─uni-list-item.vue list 组件文件 +│ ├─uni-badge badge 角标目录 +│ │ └─uni-badge.vue badge 组件文件 +│ └─ //.... 更多组件文件 +├─pages 业务页面文件存放的目录 +│ ├─index +│ │ └─index.vue index示例页面 +├─main.js Vue初始化入口文件 +├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期 +├─manifest.json 配置应用名称、appid、logo、版本等打包信息,详见 +└─pages.json 配置页 + +``` + +### 通过 `uni_modules` 导入全部组件 +如果想一次把所有uni-ui组件导入到项目中,只需要导入一个 `uni-ui` 组件即可 [点击去导入](https://ext.dcloud.net.cn/plugin?id=55)。 + +如果没有自动导入其他组件,可以在 uni-ui 组件目录上右键选择 `安装三方插件依赖` 即可。 + + + +### npm安装 +在 `vue-cli` 项目中可以使用 `npm` 安装 `uni-ui` 库 ,或者直接在 `HBuilderX` 项目中使用 `npm` 。 + +> **注意** +> cli 项目默认是不编译 `node_modules` 下的组件的,导致条件编译等功能失效 ,导致组件异常 +> 需要在根目录创建 `vue.config.js` 文件 ,增加 `@dcloudio/uni-ui` 包的编译即可正常 +> ```javascript +> // vue.config.js +> module.exports = { +> transpileDependencies:['@dcloudio/uni-ui'] +> } +> ``` + + + +**准备 sass** + +`vue-cli` 项目请先安装 sass 及 sass-loader,如在 HBuliderX 中使用,可跳过此步。 + +- 安装 sass +``` + npm i sass -D 或 yarn add sass -D +``` + +- 安装 sass-loader +``` +npm i sass-loader@10.1.1 -D 或 yarn add sass-loader@10.1.1 -D +``` + +> 如果 `node` 版本小于 16 ,sass-loader 请使用低于 @11.0.0 的版本,[sass-loader@11.0.0 不支持 vue@2.6.12 ](https://stackoverflow.com/questions/66082397/typeerror-this-getoptions-is-not-a-function) +> 如果 `node` 版本大于 16 , `sass-loader` 建议使用 `v8.x` 版本 + +**安装 uni-ui** + +``` +npm i @dcloudio/uni-ui 或 yarn add @dcloudio/uni-ui +``` + + + +**配置easycom** + +使用 `npm` 安装好 `uni-ui` 之后,需要配置 `easycom` 规则,让 `npm` 安装的组件支持 `easycom` + +打开项目根目录下的 `pages.json` 并添加 `easycom` 节点: + +```javascript +// pages.json +{ + "easycom": { + "autoscan": true, + "custom": { + // uni-ui 规则如下配置 + "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" + } + }, + + // 其他内容 + pages:[ + // ... + ] +} + +``` + +在 ``template`` 中使用组件: + +```html + + + +``` + + **注意** + - uni-ui 现在只推荐使用 `easycom` ,如自己引用组件,可能会出现组件找不到的问题 + - 使用 npm 安装的组件,默认情况下 babel-loader 会忽略所有 node_modules 中的文件 ,导致条件编译失效,需要通过配置 `vue.config.js` 解决: + ```javascript + // 在根目录创建 vue.config.js 文件,并配置如下 + module.exports = { + transpileDependencies: ['@dcloudio/uni-ui'] + } + ``` + - uni-ui 是uni-app内置组件的扩展。注意与web开发不同,uni-ui不包括基础组件,它是基础组件的补充。web开发中有的开发者习惯用一个ui库完成所有开发,但在uni-app体系中,推荐开发者首先使用性能更高的基础组件,然后按需引入必要的扩展组件。 + - `uni-ui` 不支持使用 `Vue.use()` 的方式安装 + + +### 贡献代码 +在使用 `uni-ui` 中,如遇到无法解决的问题,请提 [Issues](https://github.com/dcloudio/uni-ui/issues) 给我们,假如您有更好的点子或更好的实现方式,也欢迎给我们提交 [PR](https://github.com/dcloudio/uni-ui/pulls) \ No newline at end of file diff --git a/uni_modules/uview-ui/LICENSE b/uni_modules/uview-ui/LICENSE new file mode 100644 index 0000000..4db40ef --- /dev/null +++ b/uni_modules/uview-ui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 www.uviewui.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/uni_modules/uview-ui/README.md b/uni_modules/uview-ui/README.md new file mode 100644 index 0000000..c78ff47 --- /dev/null +++ b/uni_modules/uview-ui/README.md @@ -0,0 +1,66 @@ +

+ logo +

+

uView 2.0

+

多平台快速开发的UI框架

+ +[![stars](https://img.shields.io/github/stars/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![forks](https://img.shields.io/github/forks/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![issues](https://img.shields.io/github/issues/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0/issues) +[![Website](https://img.shields.io/badge/uView-up-blue?style=flat-square)](https://uviewui.com) +[![release](https://img.shields.io/github/v/release/umicro/uView2.0?style=flat-square)](https://gitee.com/umicro/uView2.0/releases) +[![license](https://img.shields.io/github/license/umicro/uView2.0?style=flat-square)](https://en.wikipedia.org/wiki/MIT_License) + +## 说明 + +uView UI,是[uni-app](https://uniapp.dcloud.io/)全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水 + +## [官方文档:https://uviewui.com](https://uviewui.com) + + +## 预览 + +您可以通过**微信**扫码,查看最佳的演示效果。 +
+
+ + + +## 链接 + +- [官方文档](https://www.uviewui.com/) +- [更新日志](https://www.uviewui.com/components/changelog.html) +- [升级指南](https://www.uviewui.com/components/changeGuide.html) +- [关于我们](https://www.uviewui.com/cooperation/about.html) + +## 交流反馈 + +欢迎加入我们的QQ群交流反馈:[点此跳转](https://www.uviewui.com/components/addQQGroup.html) + +## 关于PR + +> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uView2.0是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。 +> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢! + +## 安装 + +#### **uni-app插件市场链接** —— [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593) + +请通过[官网安装文档](https://www.uviewui.com/components/install.html)了解更详细的内容 + +## 快速上手 + +请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容 + +## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` + +## 版权信息 +uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。 + diff --git a/uni_modules/uview-ui/changelog.md b/uni_modules/uview-ui/changelog.md new file mode 100644 index 0000000..16fb337 --- /dev/null +++ b/uni_modules/uview-ui/changelog.md @@ -0,0 +1,374 @@ +## 2.0.37(2024-03-17) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复表单校验`trigger`触发器参数无效问题 +2. 修复`u-input`组件的`password`属性在动态切换为`false`时失效的问题 +3. 添加微信小程序用户同意隐私协议事件回调 +4. 修复支付宝小程序picker样式问题 +5. `u-modal`添加`duration`字段控制动画过度时间 +6. 修复`picker` `lastIndex`异常导致的`column`异常问题 +7. `tabs`增加长按事件支持 +8. 修复`u-avatar` `square`属性在小程序`open-data`下无效问题 +9. 其他一些修复 +## 2.0.36(2023-03-27) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 重构`deepClone` & `deepMerge`方法 +2. 其他优化 +## 2.0.34(2022-09-24) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. `u-input`、`u-textarea`增加`ignoreCompositionEvent`属性 +2. 修复`route`方法调用可能报错的问题 +3. 修复`u-no-network`组件`z-index`无效的问题 +4. 修复`textarea`组件在h5上confirmType=""报错的问题 +5. `u-rate`适配`nvue` +6. 优化验证手机号码的正则表达式(根据工信部发布的《电信网编号计划(2017年版)》进行修改。) +7. `form-item`添加`labelPosition`属性 +8. `u-calendar`修复`maxDate`设置为当前日期,并且当前时间大于08:00时无法显示日期列表的问题 (#724) +9. `u-radio`增加一个默认插槽用于自定义修改label内容 (#680) +10. 修复`timeFormat`函数在safari重的兼容性问题 (#664) +## 2.0.33(2022-06-17) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`loadmore`组件`lineColor`类型错误问题 +2. 修复`u-parse`组件`imgtap`、`linktap`不生效问题 +## 2.0.32(2022-06-16) +# uView2.0重磅发布,利剑出鞘,一统江湖 +1. `u-loadmore`新增自定义颜色、虚/实线 +2. 修复`u-swiper-action`组件部分平台不能上下滑动的问题 +3. 修复`u-list`回弹问题 +4. 修复`notice-bar`组件动画在低端安卓机可能会抖动的问题 +5. `u-loading-page`添加控制图标大小的属性`iconSize` +6. 修复`u-tooltip`组件`color`参数不生效的问题 +7. 修复`u--input`组件使用`blur`事件输出为`undefined`的bug +8. `u-code-input`组件新增键盘弹起时,是否自动上推页面参数`adjustPosition` +9. 修复`image`组件`load`事件无回调对象问题 +10. 修复`button`组件`loadingSize`设置无效问题 +10. 其他修复 +## 2.0.31(2022-04-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`upload`在`vue`页面上传成功后没有成功标志的问题 +2. 解决演示项目中微信小程序模拟上传图片一直出于上传中问题 +3. 修复`u-code-input`组件在`nvue`页面编译到`app`平台上光标异常问题(`app`去除此功能) +4. 修复`actionSheet`组件标题关闭按钮点击事件名称错误的问题 +5. 其他修复 +## 2.0.30(2022-04-04) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. `u-rate`增加`readonly`属性 +2. `tabs`滑块支持设置背景图片 +3. 修复`u-subsection` `mode`为`subsection`时,滑块样式不正确的问题 +4. `u-code-input`添加光标效果动画 +5. 修复`popup`的`open`事件不触发 +6. 修复`u-flex-column`无效的问题 +7. 修复`u-datetime-picker`索引在特定场合异常问题 +8. 修复`u-datetime-picker`最小时间字符串模板错误问题 +9. `u-swiper`添加`m3u8`验证 +10. `u-swiper`修改判断image和video逻辑 +11. 修复`swiper`无法使用本地图片问题,增加`type`参数 +12. 修复`u-row-notice`格式错误问题 +13. 修复`u-switch`组件当`unit`为`rpx`时,`nodeStyle`消失的问题 +14. 修复`datetime-picker`组件`showToolbar`与`visibleItemCount`属性无效的问题 +15. 修复`upload`组件条件编译位置判断错误,导致`previewImage`属性设置为`false`时,整个组件都会被隐藏的问题 +16. 修复`u-checkbox-group`设置`shape`属性无效的问题 +17. 修复`u-upload`的`capture`传入字符串的时候不生效的问题 +18. 修复`u-action-sheet`组件,关闭事件逻辑错误的问题 +19. 修复`u-list`触顶事件的触发错误的问题 +20. 修复`u-text`只有手机号可拨打的问题 +21. 修复`u-textarea`不能换行的问题 +22. 其他修复 +## 2.0.29(2022-03-13) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`u--text`组件设置`decoration`属性未生效的问题 +2. 修复`u-datetime-picker`使用`formatter`后返回值不正确 +3. 修复`u-datetime-picker` `intercept` 可能为undefined +4. 修复已设置单位 uni..config.unit = 'rpx'时,线型指示器 `transform` 的位置翻倍,导致指示器超出宽度 +5. 修复mixin中bem方法生成的类名在支付宝和字节小程序中失效 +6. 修复默认值传值为空的时候,打开`u-datetime-picker`报错,不能选中第一列时间的bug +7. 修复`u-datetime-picker`使用`formatter`后返回值不正确 +8. 修复`u-image`组件`loading`无效果的问题 +9. 修复`config.unit`属性设为`rpx`时,导航栏占用高度不足导致塌陷的问题 +10. 修复`u-datetime-picker`组件`itemHeight`无效问题 +11. 其他修复 +## 2.0.28(2022-02-22) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. search组件新增searchIconSize属性 +2. 兼容Safari/Webkit中传入时间格式如2022-02-17 12:00:56 +3. 修复text value.js 判断日期出format错误问题 +4. priceFormat格式化金额出现精度错误 +5. priceFormat在部分情况下出现精度损失问题 +6. 优化表单rules提示 +7. 修复avatar组件src为空时,展示状态不对 +8. 其他修复 +## 2.0.27(2022-01-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1.样式修复 +## 2.0.26(2022-01-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1.样式修复 +## 2.0.25(2022-01-27) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复text组件mode=price时,可能会导致精度错误的问题 +2. 添加$u.setConfig()方法,可设置uView内置的config, props, zIndex, color属性,详见:[修改uView内置配置方案](https://uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +3. 优化form组件在errorType=toast时,如果输入错误页面会有抖动的问题 +4. 修复$u.addUnit()对配置默认单位可能无效的问题 +## 2.0.24(2022-01-25) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复swiper在current指定非0时缩放有误 +2. 修复u-icon添加stop属性的时候报错 +3. 优化遗留的通过正则判断rpx单位的问题 +4. 优化Layout布局 vue使用gutter时,会超出固定区域 +5. 优化search组件高度单位问题(rpx -> px) +6. 修复u-image slot 加载和错误的图片失去了高度 +7. 修复u-index-list中footer插槽与header插槽存在性判断错误 +8. 修复部分机型下u-popup关闭时会闪烁 +9. 修复u-image在nvue-app下失去宽高 +10. 修复u-popup运行报错 +11. 修复u-tooltip报错 +12. 修复box-sizing在app下的警告 +13. 修复u-navbar在小程序中报运行时错误 +14. 其他修复 +## 2.0.23(2022-01-24) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复image组件在hx3.3.9的nvue下可能会显示异常的问题 +2. 修复col组件gutter参数带rpx单位处理不正确的问题 +3. 修复text组件单行时无法显示省略号的问题 +4. navbar添加titleStyle参数 +5. 升级到hx3.3.9可消除nvue下控制台样式警告的问题 +## 2.0.22(2022-01-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. $u.page()方法优化,避免在特殊场景可能报错的问题 +2. picker组件添加immediateChange参数 +3. 新增$u.pages()方法 +## 2.0.21(2022-01-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化:form组件在用户设置rules的时候提示用户model必传 +2. 优化遗留的通过正则判断rpx单位的问题 +3. 修复微信小程序环境中tabbar组件开启safeAreaInsetBottom属性后,placeholder高度填充不正确 +4. 修复swiper在current指定非0时缩放有误 +5. 修复u-icon添加stop属性的时候报错 +6. 修复upload组件在accept=all的时候没有作用 +7. 修复在text组件mode为phone时call属性无效的问题 +8. 处理u-form clearValidate方法 +9. 其他修复 +## 2.0.20(2022-01-14) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复calendar默认会选择一个日期,如果直接点确定的话,无法取到值的问题 +2. 修复Slider缺少disabled props 还有注释 +3. 修复u-notice-bar点击事件无法拿到index索引值的问题 +4. 修复u-collapse-item在vue文件下,app端自定义插槽不生效的问题 +5. 优化头像为空时显示默认头像 +6. 修复图片地址赋值后判断加载状态为完成问题 +7. 修复日历滚动到默认日期月份区域 +8. search组件暴露点击左边icon事件 +9. 修复u-form clearValidate方法不生效 +10. upload h5端增加返回文件参数(文件的name参数) +11. 处理upload选择文件后url为blob类型无法预览的问题 +12. u-code-input 修复输入框没有往左移出一半屏幕 +13. 修复Upload上传 disabled为true时,控制台报hoverClass类型错误 +14. 临时处理ios app下grid点击坍塌问题 +15. 其他修复 +## 2.0.19(2021-12-29) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化微信小程序包体积可在微信中预览,请升级HbuilderX3.3.4,同时在“运行->运行到小程序模拟器”中勾选“运行时是否压缩代码” +2. 优化微信小程序setData性能,处理某些方法如$u.route()无法在模板中使用的问题 +3. navbar添加autoBack参数 +4. 允许avatar组件的事件冒泡 +5. 修复cell组件报错问题 +6. 其他修复 +## 2.0.18(2021-12-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复app端编译报错问题 +2. 重新处理微信小程序端setData过大的性能问题 +3. 修复边框问题 +4. 修复最大最小月份不大于0则没有数据出现的问题 +5. 修复SwipeAction微信小程序端无法上下滑动问题 +6. 修复input的placeholder在小程序端默认显示为true问题 +7. 修复divider组件click事件无效问题 +8. 修复u-code-input maxlength 属性值为 String 类型时显示异常 +9. 修复当 grid只有 1到2时 在小程序端algin设置无效的问题 +10. 处理form-item的label为top时,取消错误提示的左边距 +11. 其他修复 +## 2.0.17(2021-12-26) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 解决HBuilderX3.3.3.20211225版本导致的样式问题 +2. calendar日历添加monthNum参数 +3. navbar添加center slot +## 2.0.16(2021-12-25) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 解决微信小程序setData性能问题 +2. 修复count-down组件change事件不触发问题 +## 2.0.15(2021-12-21) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复Cell单元格titleWidth无效 +2. 修复cheakbox组件ischecked不更新 +3. 修复keyboard是否显示"."按键默认值问题 +4. 修复number-keyboard是否显示键盘的"."符号问题 +5. 修复Input输入框 readonly无效 +6. 修复u-avatar 导致打包app、H5时候报错问题 +7. 修复Upload上传deletable无效 +8. 修复upload当设置maxSize时无效的问题 +9. 修复tabs lineWidth传入带单位的字符串的时候偏移量计算错误问题 +10. 修复rate组件在有padding的view内,显示的星星位置和可触摸区域不匹配,无法正常选中星星 +## 2.0.13(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复配置默认单位为rpx可能会导致自定义导航栏高度异常的问题 +## 2.0.12(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复tabs组件在vue环境下划线消失的问题 +2. 修复upload组件在安卓小程序无法选择视频的问题 +3. 添加uni.$u.config.unit配置,用于配置参数默认单位,详见:[默认单位配置](https://www.uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +4. 修复textarea组件在没绑定v-model时,字符统计不生效问题 +5. 修复nvue下控制是否出现滚动条失效问题 +## 2.0.11(2021-12-13) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. text组件align参数无效的问题 +2. subsection组件添加keyName参数 +3. upload组件无法判断[Object file]类型的问题 +4. 处理notify层级过低问题 +5. codeInput组件添加disabledDot参数 +6. 处理actionSheet组件round参数无效的问题 +7. calendar组件添加round参数用于控制圆角值 +8. 处理swipeAction组件在vue环境下默认被打开的问题 +9. button组件的throttleTime节流参数无效的问题 +10. 解决u-notify手动关闭方法close()无效的问题 +11. input组件readonly不生效问题 +12. tag组件type参数为info不生效问题 +## 2.0.10(2021-12-08) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复button sendMessagePath属性不生效 +2. 修复DatetimePicker选择器title无效 +3. 修复u-toast设置loading=true不生效 +4. 修复u-text金额模式传0报错 +5. 修复u-toast组件的icon属性配置不生效 +6. button的icon在特殊场景下的颜色优化 +7. IndexList优化,增加# +## 2.0.9(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化swiper的height支持100%值(仅vue有效),修复嵌入视频时click事件无法触发的问题 +2. 优化tabs组件对list值为空的判断,或者动态变化list时重新计算相关尺寸的问题 +3. 优化datetime-picker组件逻辑,让其后续打开的默认值为上一次的选中值,需要通过v-model绑定值才有效 +4. 修复upload内嵌在其他组件中,选择图片可能不会换行的问题 +## 2.0.8(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复toast的position参数无效问题 +2. 处理input在ios nvue上无法获得焦点的问题 +3. avatar-group组件添加extraValue参数,让剩余展示数量可手动控制 +4. tabs组件添加keyName参数用于配置从对象中读取的键名 +5. 处理text组件名字脱敏默认配置无效的问题 +6. 处理picker组件item文本太长换行问题 +## 2.0.7(2021-11-30) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复radio和checkbox动态改变v-model无效的问题。 +2. 优化form规则validator在微信小程序用法 +3. 修复backtop组件mode参数在微信小程序无效的问题 +4. 处理Album的previewFullImage属性无效的问题 +5. 处理u-datetime-picker组件mode='time'在选择改变时间时,控制台报错的问题 +## 2.0.6(2021-11-27) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 处理tag组件在vue下边框无效的问题。 +2. 处理popup组件圆角参数可能无效的问题。 +3. 处理tabs组件lineColor参数可能无效的问题。 +4. propgress组件在值很小时,显示异常的问题。 +## 2.0.5(2021-11-25) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. calendar在vue下显示异常问题。 +2. form组件labelPosition和errorType参数无效的问题 +3. input组件inputAlign无效的问题 +4. 其他一些修复 +## 2.0.4(2021-11-23) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +0. input组件缺失@confirm事件,以及subfix和prefix无效问题 +1. component.scss文件样式在vue下干扰全局布局问题 +2. 修复subsection在vue环境下表现异常的问题 +3. tag组件的bgColor等参数无效的问题 +4. upload组件不换行的问题 +5. 其他的一些修复处理 +## 2.0.3(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 处理modal的confirm回调事件拼写错误问题 +6. 处理input组件@input事件参数错误问题 +7. 其他一些修复 +## 2.0.2(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 +6. 优化loading-icon组件的scss写法问题,防止不兼容新版本scss +## 2.0.0(2020-11-15) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 + + diff --git a/uni_modules/uview-ui/components/u--form/u--form.vue b/uni_modules/uview-ui/components/u--form/u--form.vue new file mode 100644 index 0000000..d534ece --- /dev/null +++ b/uni_modules/uview-ui/components/u--form/u--form.vue @@ -0,0 +1,78 @@ + + + diff --git a/uni_modules/uview-ui/components/u--image/u--image.vue b/uni_modules/uview-ui/components/u--image/u--image.vue new file mode 100644 index 0000000..21b7ab1 --- /dev/null +++ b/uni_modules/uview-ui/components/u--image/u--image.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--input/u--input.vue b/uni_modules/uview-ui/components/u--input/u--input.vue new file mode 100644 index 0000000..1e58b01 --- /dev/null +++ b/uni_modules/uview-ui/components/u--input/u--input.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--text/u--text.vue b/uni_modules/uview-ui/components/u--text/u--text.vue new file mode 100644 index 0000000..44ee52a --- /dev/null +++ b/uni_modules/uview-ui/components/u--text/u--text.vue @@ -0,0 +1,44 @@ + + + diff --git a/uni_modules/uview-ui/components/u--textarea/u--textarea.vue b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue new file mode 100644 index 0000000..f4df0b9 --- /dev/null +++ b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue @@ -0,0 +1,48 @@ + + + diff --git a/uni_modules/uview-ui/components/u-action-sheet/props.js b/uni_modules/uview-ui/components/u-action-sheet/props.js new file mode 100644 index 0000000..e96e04f --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 操作菜单是否展示 (默认false) + show: { + type: Boolean, + default: uni.$u.props.actionSheet.show + }, + // 标题 + title: { + type: String, + default: uni.$u.props.actionSheet.title + }, + // 选项上方的描述信息 + description: { + type: String, + default: uni.$u.props.actionSheet.description + }, + // 数据 + actions: { + type: Array, + default: uni.$u.props.actionSheet.actions + }, + // 取消按钮的文字,不为空时显示按钮 + cancelText: { + type: String, + default: uni.$u.props.actionSheet.cancelText + }, + // 点击某个菜单项时是否关闭弹窗 + closeOnClickAction: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickAction + }, + // 处理底部安全区(默认true) + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.actionSheet.safeAreaInsetBottom + }, + // 小程序的打开方式 + openType: { + type: String, + default: uni.$u.props.actionSheet.openType + }, + // 点击遮罩是否允许关闭 (默认true) + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickOverlay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.actionSheet.round + } + } +} diff --git a/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..26d5d8d --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,278 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-album/props.js b/uni_modules/uview-ui/components/u-album/props.js new file mode 100644 index 0000000..75cdb37 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 图片地址,Array|Array形式 + urls: { + type: Array, + default: uni.$u.props.album.urls + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.album.keyName + }, + // 单图时,图片长边的长度 + singleSize: { + type: [String, Number], + default: uni.$u.props.album.singleSize + }, + // 多图时,图片边长 + multipleSize: { + type: [String, Number], + default: uni.$u.props.album.multipleSize + }, + // 多图时,图片水平和垂直之间的间隔 + space: { + type: [String, Number], + default: uni.$u.props.album.space + }, + // 单图时,图片缩放裁剪的模式 + singleMode: { + type: String, + default: uni.$u.props.album.singleMode + }, + // 多图时,图片缩放裁剪的模式 + multipleMode: { + type: String, + default: uni.$u.props.album.multipleMode + }, + // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.album.maxCount + }, + // 是否可以预览图片 + previewFullImage: { + type: Boolean, + default: uni.$u.props.album.previewFullImage + }, + // 每行展示图片数量,如设置,singleSize和multipleSize将会无效 + rowCount: { + type: [String, Number], + default: uni.$u.props.album.rowCount + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.album.showMore + } + } +} diff --git a/uni_modules/uview-ui/components/u-album/u-album.vue b/uni_modules/uview-ui/components/u-album/u-album.vue new file mode 100644 index 0000000..687e2d5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/u-album.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-alert/props.js b/uni_modules/uview-ui/components/u-alert/props.js new file mode 100644 index 0000000..4297e2c --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 显示文字 + title: { + type: String, + default: uni.$u.props.alert.title + }, + // 主题,success/warning/info/error + type: { + type: String, + default: uni.$u.props.alert.type + }, + // 辅助性文字 + description: { + type: String, + default: uni.$u.props.alert.description + }, + // 是否可关闭 + closable: { + type: Boolean, + default: uni.$u.props.alert.closable + }, + // 是否显示图标 + showIcon: { + type: Boolean, + default: uni.$u.props.alert.showIcon + }, + // 浅或深色调,light-浅色,dark-深色 + effect: { + type: String, + default: uni.$u.props.alert.effect + }, + // 文字是否居中 + center: { + type: Boolean, + default: uni.$u.props.alert.center + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.alert.fontSize + } + } +} diff --git a/uni_modules/uview-ui/components/u-alert/u-alert.vue b/uni_modules/uview-ui/components/u-alert/u-alert.vue new file mode 100644 index 0000000..81f7d43 --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/u-alert.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar-group/props.js b/uni_modules/uview-ui/components/u-avatar-group/props.js new file mode 100644 index 0000000..58b42ac --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/props.js @@ -0,0 +1,52 @@ +export default { + props: { + // 头像图片组 + urls: { + type: Array, + default: uni.$u.props.avatarGroup.urls + }, + // 最多展示的头像数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.avatarGroup.maxCount + }, + // 头像形状 + shape: { + type: String, + default: uni.$u.props.avatarGroup.shape + }, + // 图片裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatarGroup.mode + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.avatarGroup.showMore + }, + // 头像大小 + size: { + type: [String, Number], + default: uni.$u.props.avatarGroup.size + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.avatarGroup.keyName + }, + // 头像之间的遮挡比例 + gap: { + type: [String, Number], + validator(value) { + return value >= 0 && value <= 1 + }, + default: uni.$u.props.avatarGroup.gap + }, + // 需额外显示的值 + extraValue: { + type: [Number, String], + default: uni.$u.props.avatarGroup.extraValue + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 0000000..7e996d7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar/props.js b/uni_modules/uview-ui/components/u-avatar/props.js new file mode 100644 index 0000000..34ca0f2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/props.js @@ -0,0 +1,78 @@ +export default { + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: uni.$u.props.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: uni.$u.props.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: uni.$u.props.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: uni.$u.props.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: uni.$u.props.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: uni.$u.props.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: uni.$u.props.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return uni.$u.test.range(n, [0, 19]) || n === '' + }, + default: uni.$u.props.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: uni.$u.props.avatar.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar/u-avatar.vue b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..d38d8a6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-back-top/props.js b/uni_modules/uview-ui/components/u-back-top/props.js new file mode 100644 index 0000000..6c702c2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 返回顶部的形状,circle-圆形,square-方形 + mode: { + type: String, + default: uni.$u.props.backtop.mode + }, + // 自定义图标 + icon: { + type: String, + default: uni.$u.props.backtop.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.backtop.text + }, + // 返回顶部滚动时间 + duration: { + type: [String, Number], + default: uni.$u.props.backtop.duration + }, + // 滚动距离 + scrollTop: { + type: [String, Number], + default: uni.$u.props.backtop.scrollTop + }, + // 距离顶部多少距离显示,单位px + top: { + type: [String, Number], + default: uni.$u.props.backtop.top + }, + // 返回顶部按钮到底部的距离,单位px + bottom: { + type: [String, Number], + default: uni.$u.props.backtop.bottom + }, + // 返回顶部按钮到右边的距离,单位px + right: { + type: [String, Number], + default: uni.$u.props.backtop.right + }, + // 层级 + zIndex: { + type: [String, Number], + default: uni.$u.props.backtop.zIndex + }, + // 图标的样式,对象形式 + iconStyle: { + type: Object, + default: uni.$u.props.backtop.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-back-top/u-back-top.vue b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..2d07566 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-badge/props.js b/uni_modules/uview-ui/components/u-badge/props.js new file mode 100644 index 0000000..74c032c --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/props.js @@ -0,0 +1,72 @@ +export default { + props: { + // 是否显示圆点 + isDot: { + type: Boolean, + default: uni.$u.props.badge.isDot + }, + // 显示的内容 + value: { + type: [Number, String], + default: uni.$u.props.badge.value + }, + // 是否显示 + show: { + type: Boolean, + default: uni.$u.props.badge.show + }, + // 最大值,超过最大值会显示 '{max}+' + max: { + type: [Number, String], + default: uni.$u.props.badge.max + }, + // 主题类型,error|warning|success|primary + type: { + type: String, + default: uni.$u.props.badge.type + }, + // 当数值为 0 时,是否展示 Badge + showZero: { + type: Boolean, + default: uni.$u.props.badge.showZero + }, + // 背景颜色,优先级比type高,如设置,type参数会失效 + bgColor: { + type: [String, null], + default: uni.$u.props.badge.bgColor + }, + // 字体颜色 + color: { + type: [String, null], + default: uni.$u.props.badge.color + }, + // 徽标形状,circle-四角均为圆角,horn-左下角为直角 + shape: { + type: String, + default: uni.$u.props.badge.shape + }, + // 设置数字的显示方式,overflow|ellipsis|limit + // overflow会根据max字段判断,超出显示`${max}+` + // ellipsis会根据max判断,超出显示`${max}...` + // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数 + numberType: { + type: String, + default: uni.$u.props.badge.numberType + }, + // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效 + offset: { + type: Array, + default: uni.$u.props.badge.offset + }, + // 是否反转背景和字体颜色 + inverted: { + type: Boolean, + default: uni.$u.props.badge.inverted + }, + // 是否绝对定位 + absolute: { + type: Boolean, + default: uni.$u.props.badge.absolute + } + } +} diff --git a/uni_modules/uview-ui/components/u-badge/u-badge.vue b/uni_modules/uview-ui/components/u-badge/u-badge.vue new file mode 100644 index 0000000..53cfc81 --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/u-badge.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/nvue.scss b/uni_modules/uview-ui/components/u-button/nvue.scss new file mode 100644 index 0000000..490db7d --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/nvue.scss @@ -0,0 +1,46 @@ +$u-button-active-opacity:0.75 !default; +$u-button-loading-text-margin-left:4px !default; +$u-button-text-color: #FFFFFF !default; +$u-button-text-plain-error-color:$u-error !default; +$u-button-text-plain-warning-color:$u-warning !default; +$u-button-text-plain-success-color:$u-success !default; +$u-button-text-plain-info-color:$u-info !default; +$u-button-text-plain-primary-color:$u-primary !default; +.u-button { + &--active { + opacity: $u-button-active-opacity; + } + + &--active--plain { + background-color: rgb(217, 217, 217); + } + + &__loading-text { + margin-left:$u-button-loading-text-margin-left; + } + + &__text, + &__loading-text { + color:$u-button-text-color; + } + + &__text--plain--error { + color:$u-button-text-plain-error-color; + } + + &__text--plain--warning { + color:$u-button-text-plain-warning-color; + } + + &__text--plain--success{ + color:$u-button-text-plain-success-color; + } + + &__text--plain--info { + color:$u-button-text-plain-info-color; + } + + &__text--plain--primary { + color:$u-button-text-plain-primary-color; + } +} \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-button/props.js b/uni_modules/uview-ui/components/u-button/props.js new file mode 100644 index 0000000..07fd844 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/props.js @@ -0,0 +1,161 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-16 10:04:04 + * @LastAuthor : LQ + * @lastTime : 2021-08-16 10:04:24 + * @FilePath : /u-view2.0/uview-ui/components/u-button/props.js + */ +export default { + props: { + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.button.hairline + }, + // 按钮的预置样式,info,primary,error,warning,success + type: { + type: String, + default: uni.$u.props.button.type + }, + // 按钮尺寸,large,normal,small,mini + size: { + type: String, + default: uni.$u.props.button.size + }, + // 按钮形状,circle(两边为半圆),square(带圆角) + shape: { + type: String, + default: uni.$u.props.button.shape + }, + // 按钮是否镂空 + plain: { + type: Boolean, + default: uni.$u.props.button.plain + }, + // 是否禁止状态 + disabled: { + type: Boolean, + default: uni.$u.props.button.disabled + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.button.loading + }, + // 加载中提示文字 + loadingText: { + type: [String, Number], + default: uni.$u.props.button.loadingText + }, + // 加载状态图标类型 + loadingMode: { + type: String, + default: uni.$u.props.button.loadingMode + }, + // 加载图标大小 + loadingSize: { + type: [String, Number], + default: uni.$u.props.button.loadingSize + }, + // 开放能力,具体请看uniapp稳定关于button组件部分说明 + // https://uniapp.dcloud.io/component/button + openType: { + type: String, + default: uni.$u.props.button.openType + }, + // 用于 组件,点击分别会触发 组件的 submit/reset 事件 + // 取值为submit(提交表单),reset(重置表单) + formType: { + type: String, + default: uni.$u.props.button.formType + }, + // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + // 只微信小程序、QQ小程序有效 + appParameter: { + type: String, + default: uni.$u.props.button.appParameter + }, + // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效 + hoverStopPropagation: { + type: Boolean, + default: uni.$u.props.button.hoverStopPropagation + }, + // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效 + lang: { + type: String, + default: uni.$u.props.button.lang + }, + // 会话来源,open-type="contact"时有效。只微信小程序有效 + sessionFrom: { + type: String, + default: uni.$u.props.button.sessionFrom + }, + // 会话内消息卡片标题,open-type="contact"时有效 + // 默认当前标题,只微信小程序有效 + sendMessageTitle: { + type: String, + default: uni.$u.props.button.sendMessageTitle + }, + // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + // 默认当前分享路径,只微信小程序有效 + sendMessagePath: { + type: String, + default: uni.$u.props.button.sendMessagePath + }, + // 会话内消息卡片图片,open-type="contact"时有效 + // 默认当前页面截图,只微信小程序有效 + sendMessageImg: { + type: String, + default: uni.$u.props.button.sendMessageImg + }, + // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示, + // 用户点击后可以快速发送小程序消息,open-type="contact"时有效 + showMessageCard: { + type: Boolean, + default: uni.$u.props.button.showMessageCard + }, + // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取 + dataName: { + type: String, + default: uni.$u.props.button.dataName + }, + // 节流,一定时间内只能触发一次 + throttleTime: { + type: [String, Number], + default: uni.$u.props.button.throttleTime + }, + // 按住后多久出现点击态,单位毫秒 + hoverStartTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStartTime + }, + // 手指松开后点击态保留时间,单位毫秒 + hoverStayTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStayTime + }, + // 按钮文字,之所以通过props传入,是因为slot传入的话 + // nvue中无法控制文字的样式 + text: { + type: [String, Number], + default: uni.$u.props.button.text + }, + // 按钮图标 + icon: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮图标 + iconColor: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮颜色,支持传入linear-gradient渐变色 + color: { + type: String, + default: uni.$u.props.button.color + } + } +} diff --git a/uni_modules/uview-ui/components/u-button/u-button.vue b/uni_modules/uview-ui/components/u-button/u-button.vue new file mode 100644 index 0000000..d60f73e --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/u-button.vue @@ -0,0 +1,495 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/vue.scss b/uni_modules/uview-ui/components/u-button/vue.scss new file mode 100644 index 0000000..32019b2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/vue.scss @@ -0,0 +1,80 @@ +// nvue下hover-class无效 +$u-button-before-top:50% !default; +$u-button-before-left:50% !default; +$u-button-before-width:100% !default; +$u-button-before-height:100% !default; +$u-button-before-transform:translate(-50%, -50%) !default; +$u-button-before-opacity:0 !default; +$u-button-before-background-color:#000 !default; +$u-button-before-border-color:#000 !default; +$u-button-active-before-opacity:.15 !default; +$u-button-icon-margin-left:4px !default; +$u-button-plain-u-button-info-color:$u-info; +$u-button-plain-u-button-success-color:$u-success; +$u-button-plain-u-button-error-color:$u-error; +$u-button-plain-u-button-warning-color:$u-error; + +.u-button { + width: 100%; + + &__text { + white-space: nowrap; + line-height: 1; + } + + &:before { + position: absolute; + top:$u-button-before-top; + left:$u-button-before-left; + width:$u-button-before-width; + height:$u-button-before-height; + border: inherit; + border-radius: inherit; + transform:$u-button-before-transform; + opacity:$u-button-before-opacity; + content: " "; + background-color:$u-button-before-background-color; + border-color:$u-button-before-border-color; + } + + &--active { + &:before { + opacity: .15 + } + } + + &__icon+&__text:not(:empty), + &__loading-text { + margin-left:$u-button-icon-margin-left; + } + + &--plain { + &.u-button--primary { + color: $u-primary; + } + } + + &--plain { + &.u-button--info { + color:$u-button-plain-u-button-info-color; + } + } + + &--plain { + &.u-button--success { + color:$u-button-plain-u-button-success-color; + } + } + + &--plain { + &.u-button--error { + color:$u-button-plain-u-button-error-color; + } + } + + &--plain { + &.u-button--warning { + color:$u-button-plain-u-button-warning-color; + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/header.vue b/uni_modules/uview-ui/components/u-calendar/header.vue new file mode 100644 index 0000000..dc4f7d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/header.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/month.vue b/uni_modules/uview-ui/components/u-calendar/month.vue new file mode 100644 index 0000000..c20937f --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/month.vue @@ -0,0 +1,579 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/props.js b/uni_modules/uview-ui/components/u-calendar/props.js new file mode 100644 index 0000000..2ad7bc7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/props.js @@ -0,0 +1,144 @@ +export default { + props: { + // 日历顶部标题 + title: { + type: String, + default: uni.$u.props.calendar.title + }, + // 是否显示标题 + showTitle: { + type: Boolean, + default: uni.$u.props.calendar.showTitle + }, + // 是否显示副标题 + showSubtitle: { + type: Boolean, + default: uni.$u.props.calendar.showSubtitle + }, + // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 + mode: { + type: String, + default: uni.$u.props.calendar.mode + }, + // mode=range时,第一个日期底部的提示文字 + startText: { + type: String, + default: uni.$u.props.calendar.startText + }, + // mode=range时,最后一个日期底部的提示文字 + endText: { + type: String, + default: uni.$u.props.calendar.endText + }, + // 自定义列表 + customList: { + type: Array, + default: uni.$u.props.calendar.customList + }, + // 主题色,对底部按钮和选中日期有效 + color: { + type: String, + default: uni.$u.props.calendar.color + }, + // 最小的可选日期 + minDate: { + type: [String, Number], + default: uni.$u.props.calendar.minDate + }, + // 最大可选日期 + maxDate: { + type: [String, Number], + default: uni.$u.props.calendar.maxDate + }, + // 默认选中的日期,mode为multiple或range是必须为数组格式 + defaultDate: { + type: [Array, String, Date, null], + default: uni.$u.props.calendar.defaultDate + }, + // mode=multiple时,最多可选多少个日期 + maxCount: { + type: [String, Number], + default: uni.$u.props.calendar.maxCount + }, + // 日期行高 + rowHeight: { + type: [String, Number], + default: uni.$u.props.calendar.rowHeight + }, + // 日期格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.calendar.formatter + }, + // 是否显示农历 + showLunar: { + type: Boolean, + default: uni.$u.props.calendar.showLunar + }, + // 是否显示月份背景色 + showMark: { + type: Boolean, + default: uni.$u.props.calendar.showMark + }, + // 确定按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.calendar.confirmText + }, + // 确认按钮处于禁用状态时的文字 + confirmDisabledText: { + type: String, + default: uni.$u.props.calendar.confirmDisabledText + }, + // 是否显示日历弹窗 + show: { + type: Boolean, + default: uni.$u.props.calendar.show + }, + // 是否允许点击遮罩关闭日历 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.calendar.closeOnClickOverlay + }, + // 是否为只读状态,只读状态下禁止选择日期 + readonly: { + type: Boolean, + default: uni.$u.props.calendar.readonly + }, + // 是否展示确认按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.calendar.showConfirm + }, + // 日期区间最多可选天数,默认无限制,mode = range时有效 + maxRange: { + type: [Number, String], + default: uni.$u.props.calendar.maxRange + }, + // 范围选择超过最多可选天数时的提示文案,mode = range时有效 + rangePrompt: { + type: String, + default: uni.$u.props.calendar.rangePrompt + }, + // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 + showRangePrompt: { + type: Boolean, + default: uni.$u.props.calendar.showRangePrompt + }, + // 是否允许日期范围的起止时间为同一天,mode = range时有效 + allowSameDay: { + type: Boolean, + default: uni.$u.props.calendar.allowSameDay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.calendar.round + }, + // 最多展示月份数量 + monthNum: { + type: [Number, String], + default: 3 + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/u-calendar.vue b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..511f993 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/util.js b/uni_modules/uview-ui/components/u-calendar/util.js new file mode 100644 index 0000000..ca4736b --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/util.js @@ -0,0 +1,85 @@ +export default { + methods: { + // 设置月份数据 + setMonth() { + // 月初是周几 + const day = dayjs(this.date).date(1).day() + const start = day == 0 ? 6 : day - 1 + + // 本月天数 + const days = dayjs(this.date).endOf('month').format('D') + + // 上个月天数 + const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') + + // 日期数据 + const arr = [] + // 清空表格 + this.month = [] + + // 添加上月数据 + arr.push( + ...new Array(start).fill(1).map((e, i) => { + const day = prevDays - start + i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加本月数据 + arr.push( + ...new Array(days - 0).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + date: dayjs(this.date).date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加下个月 + arr.push( + ...new Array(42 - days - start).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 分割数组 + for (let n = 0; n < arr.length; n += 7) { + this.month.push( + arr.slice(n, n + 7).map((e, i) => { + e.index = i + n + + // 自定义信息 + const custom = this.customList.find((c) => c.date == e.date) + + // 农历 + if (this.lunar) { + const { + IDayCn, + IMonthCn + } = this.getLunar(e.date) + e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn + } + + return { + ...e, + ...custom + } + }) + ) + } + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/props.js b/uni_modules/uview-ui/components/u-car-keyboard/props.js new file mode 100644 index 0000000..3553647 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: false + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: false + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..51175b5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-cell-group/props.js b/uni_modules/uview-ui/components/u-cell-group/props.js new file mode 100644 index 0000000..350ef40 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 分组标题 + title: { + type: String, + default: uni.$u.props.cellGroup.title + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.cellGroup.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..a9508c0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,61 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-cell/props.js b/uni_modules/uview-ui/components/u-cell/props.js new file mode 100644 index 0000000..da03330 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/props.js @@ -0,0 +1,110 @@ +export default { + props: { + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.cell.title + }, + // 标题下方的描述信息 + label: { + type: [String, Number], + default: uni.$u.props.cell.label + }, + // 右侧的内容 + value: { + type: [String, Number], + default: uni.$u.props.cell.value + }, + // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址) + icon: { + type: String, + default: uni.$u.props.cell.icon + }, + // 是否禁用cell + disabled: { + type: Boolean, + default: uni.$u.props.cell.disabled + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.cell.border + }, + // 内容是否垂直居中(主要是针对右侧的value部分) + center: { + type: Boolean, + default: uni.$u.props.cell.center + }, + // 点击后跳转的URL地址 + url: { + type: String, + default: uni.$u.props.cell.url + }, + // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 + linkType: { + type: String, + default: uni.$u.props.cell.linkType + }, + // 是否开启点击反馈(表现为点击时加上灰色背景) + clickable: { + type: Boolean, + default: uni.$u.props.cell.clickable + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.cell.isLink + }, + // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) + required: { + type: Boolean, + default: uni.$u.props.cell.required + }, + // 右侧的图标箭头 + rightIcon: { + type: String, + default: uni.$u.props.cell.rightIcon + }, + // 右侧箭头的方向,可选值为:left,up,down + arrowDirection: { + type: String, + default: uni.$u.props.cell.arrowDirection + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.rightIconStyle + } + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.titleStyle + } + }, + // 单位元的大小,可选值为large + size: { + type: String, + default: uni.$u.props.cell.size + }, + // 点击cell是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.cell.stop + }, + // 标识符,cell被点击时返回 + name: { + type: [Number, String], + default: uni.$u.props.cell.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell/u-cell.vue b/uni_modules/uview-ui/components/u-cell/u-cell.vue new file mode 100644 index 0000000..b099c90 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/u-cell.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox-group/props.js b/uni_modules/uview-ui/components/u-checkbox-group/props.js new file mode 100644 index 0000000..2f818a1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/props.js @@ -0,0 +1,82 @@ +export default { + props: { + // 标识符 + name: { + type: String, + default: uni.$u.props.checkboxGroup.name + }, + // 绑定的值 + value: { + type: Array, + default: uni.$u.props.checkboxGroup.value + }, + // 形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.checkboxGroup.shape + }, + // 是否禁用全部checkbox + disabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.disabled + }, + + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkboxGroup.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkboxGroup.inactiveColor + }, + + // 整个组件的尺寸,默认px + size: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.size + }, + // 布局方式,row-横向,column-纵向 + placement: { + type: String, + default: uni.$u.props.checkboxGroup.placement + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.labelSize + }, + // label的字体颜色 + labelColor: { + type: [String], + default: uni.$u.props.checkboxGroup.labelColor + }, + // 是否禁止点击文本操作 + labelDisabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.labelDisabled + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkboxGroup.iconColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.iconSize + }, + // 勾选图标的对齐方式,left-左边,right-右边 + iconPlacement: { + type: String, + default: uni.$u.props.checkboxGroup.iconPlacement + }, + // 竖向配列时,是否显示下划线 + borderBottom: { + type: Boolean, + default: uni.$u.props.checkboxGroup.borderBottom + } + + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..7a6b4fa --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox/props.js b/uni_modules/uview-ui/components/u-checkbox/props.js new file mode 100644 index 0000000..93f4fd9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/props.js @@ -0,0 +1,69 @@ +export default { + props: { + // checkbox的名称 + name: { + type: [String, Number, Boolean], + default: uni.$u.props.checkbox.name + }, + // 形状,square为方形,circle为圆型 + shape: { + type: String, + default: uni.$u.props.checkbox.shape + }, + // 整体的大小 + size: { + type: [String, Number], + default: uni.$u.props.checkbox.size + }, + // 是否默认选中 + checked: { + type: Boolean, + default: uni.$u.props.checkbox.checked + }, + // 是否禁用 + disabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.disabled + }, + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkbox.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkbox.inactiveColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkbox.iconSize + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkbox.iconColor + }, + // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式 + label: { + type: [String, Number], + default: uni.$u.props.checkbox.label + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkbox.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.checkbox.labelColor + }, + // 是否禁止点击提示语选中复选框 + labelDisabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.labelDisabled + } + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..6429cca --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-circle-progress/props.js b/uni_modules/uview-ui/components/u-circle-progress/props.js new file mode 100644 index 0000000..d776cfb --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/props.js @@ -0,0 +1,8 @@ +export default { + props: { + percentage: { + type: [String, Number], + default: uni.$u.props.circleProgress.percentage + } + } +} diff --git a/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..d1ee286 --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code-input/props.js b/uni_modules/uview-ui/components/u-code-input/props.js new file mode 100644 index 0000000..0f016ee --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/props.js @@ -0,0 +1,79 @@ +export default { + props: { + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.codeInput.adjustPosition + }, + // 最大输入长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.codeInput.maxlength + }, + // 是否用圆点填充 + dot: { + type: Boolean, + default: uni.$u.props.codeInput.dot + }, + // 显示模式,box-盒子模式,line-底部横线模式 + mode: { + type: String, + default: uni.$u.props.codeInput.mode + }, + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.codeInput.hairline + }, + // 字符间的距离 + space: { + type: [String, Number], + default: uni.$u.props.codeInput.space + }, + // 预置值 + value: { + type: [String, Number], + default: uni.$u.props.codeInput.value + }, + // 是否自动获取焦点 + focus: { + type: Boolean, + default: uni.$u.props.codeInput.focus + }, + // 字体是否加粗 + bold: { + type: Boolean, + default: uni.$u.props.codeInput.bold + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.codeInput.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.codeInput.fontSize + }, + // 输入框的大小,宽等于高 + size: { + type: [String, Number], + default: uni.$u.props.codeInput.size + }, + // 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true + disabledKeyboard: { + type: Boolean, + default: uni.$u.props.codeInput.disabledKeyboard + }, + // 边框和线条颜色 + borderColor: { + type: String, + default: uni.$u.props.codeInput.borderColor + }, + // 是否禁止输入"."符号 + disabledDot: { + type: Boolean, + default: uni.$u.props.codeInput.disabledDot + } + } +} diff --git a/uni_modules/uview-ui/components/u-code-input/u-code-input.vue b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue new file mode 100644 index 0000000..96241cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code/props.js b/uni_modules/uview-ui/components/u-code/props.js new file mode 100644 index 0000000..eaf80d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/props.js @@ -0,0 +1,34 @@ +export default { + props: { + // 倒计时总秒数 + seconds: { + type: [String, Number], + default: uni.$u.props.code.seconds + }, + // 尚未开始时提示 + startText: { + type: String, + default: uni.$u.props.code.startText + }, + // 正在倒计时中的提示 + changeText: { + type: String, + default: uni.$u.props.code.changeText + }, + // 倒计时结束时的提示 + endText: { + type: String, + default: uni.$u.props.code.endText + }, + // 是否在H5刷新或各端返回再进入时继续倒计时 + keepRunning: { + type: Boolean, + default: uni.$u.props.code.keepRunning + }, + // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了 + uniqueKey: { + type: String, + default: uni.$u.props.code.uniqueKey + } + } +} diff --git a/uni_modules/uview-ui/components/u-code/u-code.vue b/uni_modules/uview-ui/components/u-code/u-code.vue new file mode 100644 index 0000000..f79a09a --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/u-code.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-col/props.js b/uni_modules/uview-ui/components/u-col/props.js new file mode 100644 index 0000000..0622251 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 占父容器宽度的多少等分,总分为12份 + span: { + type: [String, Number], + default: uni.$u.props.col.span + }, + // 指定栅格左侧的间隔数(总12栏) + offset: { + type: [String, Number], + default: uni.$u.props.col.offset + }, + // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`) + justify: { + type: String, + default: uni.$u.props.col.justify + }, + // 垂直对齐方式,可选值为top、center、bottom、stretch + align: { + type: String, + default: uni.$u.props.col.align + }, + // 文字对齐方式 + textAlign: { + type: String, + default: uni.$u.props.col.textAlign + } + } +} diff --git a/uni_modules/uview-ui/components/u-col/u-col.vue b/uni_modules/uview-ui/components/u-col/u-col.vue new file mode 100644 index 0000000..8be1517 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/u-col.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse-item/props.js b/uni_modules/uview-ui/components/u-collapse-item/props.js new file mode 100644 index 0000000..bd5749b --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 标题 + title: { + type: String, + default: uni.$u.props.collapseItem.title + }, + // 标题右侧内容 + value: { + type: String, + default: uni.$u.props.collapseItem.value + }, + // 标题下方的描述信息 + label: { + type: String, + default: uni.$u.props.collapseItem.label + }, + // 是否禁用折叠面板 + disabled: { + type: Boolean, + default: uni.$u.props.collapseItem.disabled + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.collapseItem.isLink + }, + // 是否开启点击反馈 + clickable: { + type: Boolean, + default: uni.$u.props.collapseItem.clickable + }, + // 是否显示内边框 + border: { + type: Boolean, + default: uni.$u.props.collapseItem.border + }, + // 标题的对齐方式 + align: { + type: String, + default: uni.$u.props.collapseItem.align + }, + // 唯一标识符 + name: { + type: [String, Number], + default: uni.$u.props.collapseItem.name + }, + // 标题左侧图片,可为绝对路径的图片或内置图标 + icon: { + type: String, + default: uni.$u.props.collapseItem.icon + }, + // 面板展开收起的过渡时间,单位ms + duration: { + type: Number, + default: uni.$u.props.collapseItem.duration + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..0e1b703 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse/props.js b/uni_modules/uview-ui/components/u-collapse/props.js new file mode 100644 index 0000000..7ee6d31 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 当前展开面板的name,非手风琴模式:[],手风琴模式:string | number + value: { + type: [String, Number, Array, null], + default: uni.$u.props.collapse.value + }, + // 是否手风琴模式 + accordion: { + type: Boolean, + default: uni.$u.props.collapse.accordion + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.collapse.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse/u-collapse.vue b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..fc188a2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-column-notice/props.js b/uni_modules/uview-ui/components/u-column-notice/props.js new file mode 100644 index 0000000..4809154 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/props.js @@ -0,0 +1,55 @@ +export default { + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: uni.$u.props.columnNotice.text + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.columnNotice.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.columnNotice.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.columnNotice.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.columnNotice.bgColor + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.columnNotice.fontSize + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.columnNotice.speed + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.columnNotice.step + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.columnNotice.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.columnNotice.disableTouch + } + } +} diff --git a/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..fc39532 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/props.js b/uni_modules/uview-ui/components/u-count-down/props.js new file mode 100644 index 0000000..d62f025 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 倒计时时长,单位ms + time: { + type: [String, Number], + default: uni.$u.props.countDown.time + }, + // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 + format: { + type: String, + default: uni.$u.props.countDown.format + }, + // 是否自动开始倒计时 + autoStart: { + type: Boolean, + default: uni.$u.props.countDown.autoStart + }, + // 是否展示毫秒倒计时 + millisecond: { + type: Boolean, + default: uni.$u.props.countDown.millisecond + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-down/u-count-down.vue b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..b5e85a6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/utils.js b/uni_modules/uview-ui/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/uni_modules/uview-ui/components/u-count-to/props.js b/uni_modules/uview-ui/components/u-count-to/props.js new file mode 100644 index 0000000..86873c1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 开始的数值,默认从0增长到某一个数 + startVal: { + type: [String, Number], + default: uni.$u.props.countTo.startVal + }, + // 要滚动的目标数值,必须 + endVal: { + type: [String, Number], + default: uni.$u.props.countTo.endVal + }, + // 滚动到目标数值的动画持续时间,单位为毫秒(ms) + duration: { + type: [String, Number], + default: uni.$u.props.countTo.duration + }, + // 设置数值后是否自动开始滚动 + autoplay: { + type: Boolean, + default: uni.$u.props.countTo.autoplay + }, + // 要显示的小数位数 + decimals: { + type: [String, Number], + default: uni.$u.props.countTo.decimals + }, + // 是否在即将到达目标数值的时候,使用缓慢滚动的效果 + useEasing: { + type: Boolean, + default: uni.$u.props.countTo.useEasing + }, + // 十进制分割 + decimal: { + type: [String, Number], + default: uni.$u.props.countTo.decimal + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.countTo.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.countTo.fontSize + }, + // 是否加粗字体 + bold: { + type: Boolean, + default: uni.$u.props.countTo.bold + }, + // 千位分隔符,类似金额的分割(¥23,321.05中的",") + separator: { + type: String, + default: uni.$u.props.countTo.separator + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-to/u-count-to.vue b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..417b732 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-datetime-picker/props.js b/uni_modules/uview-ui/components/u-datetime-picker/props.js new file mode 100644 index 0000000..f44c0f9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/props.js @@ -0,0 +1,116 @@ +export default { + props: { + // 是否打开组件 + show: { + type: Boolean, + default: uni.$u.props.datetimePicker.show + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: uni.$u.props.datetimePicker.showToolbar + }, + // 绑定值 + value: { + type: [String, Number], + default: uni.$u.props.datetimePicker.value + }, + // 顶部标题 + title: { + type: String, + default: uni.$u.props.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: uni.$u.props.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: uni.$u.props.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: uni.$u.props.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: uni.$u.props.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: uni.$u.props.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: uni.$u.props.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: uni.$u.props.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: uni.$u.props.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: uni.$u.props.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: uni.$u.props.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: uni.$u.props.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: uni.$u.props.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: uni.$u.props.datetimePicker.defaultIndex + } + } +} diff --git a/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 0000000..18d8dcc --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-divider/props.js b/uni_modules/uview-ui/components/u-divider/props.js new file mode 100644 index 0000000..1fa8359 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 是否虚线 + dashed: { + type: Boolean, + default: uni.$u.props.divider.dashed + }, + // 是否细线 + hairline: { + type: Boolean, + default: uni.$u.props.divider.hairline + }, + // 是否以点替代文字,优先于text字段起作用 + dot: { + type: Boolean, + default: uni.$u.props.divider.dot + }, + // 内容文本的位置,left-左边,center-中间,right-右边 + textPosition: { + type: String, + default: uni.$u.props.divider.textPosition + }, + // 文本内容 + text: { + type: [String, Number], + default: uni.$u.props.divider.text + }, + // 文本大小 + textSize: { + type: [String, Number], + default: uni.$u.props.divider.textSize + }, + // 文本颜色 + textColor: { + type: String, + default: uni.$u.props.divider.textColor + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.divider.lineColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-divider/u-divider.vue b/uni_modules/uview-ui/components/u-divider/u-divider.vue new file mode 100644 index 0000000..b629da6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/u-divider.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown-item/props.js b/uni_modules/uview-ui/components/u-dropdown-item/props.js new file mode 100644 index 0000000..501a1f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/props.js @@ -0,0 +1,36 @@ +export default { + props: { + // 当前选中项的value值 + value: { + type: [Number, String, Array], + default: '' + }, + // 菜单项标题 + title: { + type: [String, Number], + default: '' + }, + // 选项数据,如果传入了默认slot,此参数无效 + options: { + type: Array, + default() { + return [] + } + }, + // 是否禁用此菜单项 + disabled: { + type: Boolean, + default: false + }, + // 下拉弹窗的高度 + height: { + type: [Number, String], + default: 'auto' + }, + // 点击遮罩是否可以收起弹窗 + closeOnClickOverlay: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown/props.js b/uni_modules/uview-ui/components/u-dropdown/props.js new file mode 100644 index 0000000..5f8465e --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/props.js @@ -0,0 +1,65 @@ +export default { + props: { + // 标题选中时的样式 + activeStyle: { + type: [String, Object], + default: () => ({ + color: '#2979ff', + fontSize: '14px' + }) + }, + // 标题未选中时的样式 + inactiveStyle: { + type: [String, Object], + default: () => ({ + color: '#606266', + fontSize: '14px' + }) + }, + // 点击遮罩是否关闭菜单 + closeOnClickMask: { + type: Boolean, + default: true + }, + // 点击当前激活项标题是否关闭菜单 + closeOnClickSelf: { + type: Boolean, + default: true + }, + // 过渡时间 + duration: { + type: [Number, String], + default: 300 + }, + // 标题菜单的高度 + height: { + type: [Number, String], + default: 40 + }, + // 是否显示下边框 + borderBottom: { + type: Boolean, + default: false + }, + // 标题的字体大小 + titleSize: { + type: [Number, String], + default: 14 + }, + // 下拉出来的内容部分的圆角值 + borderRadius: { + type: [Number, String], + default: 0 + }, + // 菜单右侧的icon图标 + menuIcon: { + type: String, + default: 'arrow-down' + }, + // 菜单右侧图标的大小 + menuIconSize: { + type: [Number, String], + default: 14 + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-empty/props.js b/uni_modules/uview-ui/components/u-empty/props.js new file mode 100644 index 0000000..78662f8 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 内置图标名称,或图片路径,建议绝对路径 + icon: { + type: String, + default: uni.$u.props.empty.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.empty.text + }, + // 文字颜色 + textColor: { + type: String, + default: uni.$u.props.empty.textColor + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.empty.textSize + }, + // 图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.empty.iconColor + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.empty.iconSize + }, + // 选择预置的图标类型 + mode: { + type: String, + default: uni.$u.props.empty.mode + }, + // 图标宽度,单位px + width: { + type: [String, Number], + default: uni.$u.props.empty.width + }, + // 图标高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.empty.height + }, + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.empty.show + }, + // 组件距离上一个元素之间的距离,默认px单位 + marginTop: { + type: [String, Number], + default: uni.$u.props.empty.marginTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-empty/u-empty.vue b/uni_modules/uview-ui/components/u-empty/u-empty.vue new file mode 100644 index 0000000..03d6a27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/u-empty.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form-item/props.js b/uni_modules/uview-ui/components/u-form-item/props.js new file mode 100644 index 0000000..7b16655 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/props.js @@ -0,0 +1,48 @@ +export default { + props: { + // input的label提示语 + label: { + type: String, + default: uni.$u.props.formItem.label + }, + // 绑定的值 + prop: { + type: String, + default: uni.$u.props.formItem.prop + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: [String, Boolean], + default: uni.$u.props.formItem.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.formItem.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.formItem.labelWidth + }, + // 右侧图标 + rightIcon: { + type: String, + default: uni.$u.props.formItem.rightIcon + }, + // 左侧图标 + leftIcon: { + type: String, + default: uni.$u.props.formItem.leftIcon + }, + // 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置 + required: { + type: Boolean, + default: uni.$u.props.formItem.required + }, + leftIconStyle: { + type: [String, Object], + default: uni.$u.props.formItem.leftIconStyle, + } + } +} diff --git a/uni_modules/uview-ui/components/u-form-item/u-form-item.vue b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue new file mode 100644 index 0000000..6aa8d69 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form/props.js b/uni_modules/uview-ui/components/u-form/props.js new file mode 100644 index 0000000..f2a629c --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/props.js @@ -0,0 +1,45 @@ +export default { + props: { + // 当前form的需要验证字段的集合 + model: { + type: Object, + default: uni.$u.props.form.model + }, + // 验证规则 + rules: { + type: [Object, Function, Array], + default: uni.$u.props.form.rules + }, + // 有错误时的提示方式,message-提示信息,toast-进行toast提示 + // border-bottom-下边框呈现红色,none-无提示 + errorType: { + type: String, + default: uni.$u.props.form.errorType + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: Boolean, + default: uni.$u.props.form.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.form.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.form.labelWidth + }, + // lable字体的对齐方式 + labelAlign: { + type: String, + default: uni.$u.props.form.labelAlign + }, + // lable的样式,对象形式 + labelStyle: { + type: Object, + default: uni.$u.props.form.labelStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-form/u-form.vue b/uni_modules/uview-ui/components/u-form/u-form.vue new file mode 100644 index 0000000..fe2dde2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/u-form.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-gap/props.js b/uni_modules/uview-ui/components/u-gap/props.js new file mode 100644 index 0000000..89953e3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 背景颜色(默认transparent) + bgColor: { + type: String, + default: uni.$u.props.gap.bgColor + }, + // 分割槽高度,单位px(默认30) + height: { + type: [String, Number], + default: uni.$u.props.gap.height + }, + // 与上一个组件的距离 + marginTop: { + type: [String, Number], + default: uni.$u.props.gap.marginTop + }, + // 与下一个组件的距离 + marginBottom: { + type: [String, Number], + default: uni.$u.props.gap.marginBottom + } + } +} diff --git a/uni_modules/uview-ui/components/u-gap/u-gap.vue b/uni_modules/uview-ui/components/u-gap/u-gap.vue new file mode 100644 index 0000000..e4429f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/u-gap.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid-item/props.js b/uni_modules/uview-ui/components/u-grid-item/props.js new file mode 100644 index 0000000..06c3c66 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 宫格的name + name: { + type: [String, Number, null], + default: uni.$u.props.gridItem.name + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.gridItem.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue new file mode 100644 index 0000000..fc0c7cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid/props.js b/uni_modules/uview-ui/components/u-grid/props.js new file mode 100644 index 0000000..87b0f6a --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 分成几列 + col: { + type: [String, Number], + default: uni.$u.props.grid.col + }, + // 是否显示边框 + border: { + type: Boolean, + default: uni.$u.props.grid.border + }, + // 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右 + align: { + type: String, + default: uni.$u.props.grid.align + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid/u-grid.vue b/uni_modules/uview-ui/components/u-grid/u-grid.vue new file mode 100644 index 0000000..b43cc27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/u-grid.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-icon/icons.js b/uni_modules/uview-ui/components/u-icon/icons.js new file mode 100644 index 0000000..f4d0fe2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/icons.js @@ -0,0 +1,214 @@ +export default { + 'uicon-level': '\ue693', + 'uicon-column-line': '\ue68e', + 'uicon-checkbox-mark': '\ue807', + 'uicon-folder': '\ue7f5', + 'uicon-movie': '\ue7f6', + 'uicon-star-fill': '\ue669', + 'uicon-star': '\ue65f', + 'uicon-phone-fill': '\ue64f', + 'uicon-phone': '\ue622', + 'uicon-apple-fill': '\ue881', + 'uicon-chrome-circle-fill': '\ue885', + 'uicon-backspace': '\ue67b', + 'uicon-attach': '\ue632', + 'uicon-cut': '\ue948', + 'uicon-empty-car': '\ue602', + 'uicon-empty-coupon': '\ue682', + 'uicon-empty-address': '\ue646', + 'uicon-empty-favor': '\ue67c', + 'uicon-empty-permission': '\ue686', + 'uicon-empty-news': '\ue687', + 'uicon-empty-search': '\ue664', + 'uicon-github-circle-fill': '\ue887', + 'uicon-rmb': '\ue608', + 'uicon-person-delete-fill': '\ue66a', + 'uicon-reload': '\ue788', + 'uicon-order': '\ue68f', + 'uicon-server-man': '\ue6bc', + 'uicon-search': '\ue62a', + 'uicon-fingerprint': '\ue955', + 'uicon-more-dot-fill': '\ue630', + 'uicon-scan': '\ue662', + 'uicon-share-square': '\ue60b', + 'uicon-map': '\ue61d', + 'uicon-map-fill': '\ue64e', + 'uicon-tags': '\ue629', + 'uicon-tags-fill': '\ue651', + 'uicon-bookmark-fill': '\ue63b', + 'uicon-bookmark': '\ue60a', + 'uicon-eye': '\ue613', + 'uicon-eye-fill': '\ue641', + 'uicon-mic': '\ue64a', + 'uicon-mic-off': '\ue649', + 'uicon-calendar': '\ue66e', + 'uicon-calendar-fill': '\ue634', + 'uicon-trash': '\ue623', + 'uicon-trash-fill': '\ue658', + 'uicon-play-left': '\ue66d', + 'uicon-play-right': '\ue610', + 'uicon-minus': '\ue618', + 'uicon-plus': '\ue62d', + 'uicon-info': '\ue653', + 'uicon-info-circle': '\ue7d2', + 'uicon-info-circle-fill': '\ue64b', + 'uicon-question': '\ue715', + 'uicon-error': '\ue6d3', + 'uicon-close': '\ue685', + 'uicon-checkmark': '\ue6a8', + 'uicon-android-circle-fill': '\ue67e', + 'uicon-android-fill': '\ue67d', + 'uicon-ie': '\ue87b', + 'uicon-IE-circle-fill': '\ue889', + 'uicon-google': '\ue87a', + 'uicon-google-circle-fill': '\ue88a', + 'uicon-setting-fill': '\ue872', + 'uicon-setting': '\ue61f', + 'uicon-minus-square-fill': '\ue855', + 'uicon-plus-square-fill': '\ue856', + 'uicon-heart': '\ue7df', + 'uicon-heart-fill': '\ue851', + 'uicon-camera': '\ue7d7', + 'uicon-camera-fill': '\ue870', + 'uicon-more-circle': '\ue63e', + 'uicon-more-circle-fill': '\ue645', + 'uicon-chat': '\ue620', + 'uicon-chat-fill': '\ue61e', + 'uicon-bag-fill': '\ue617', + 'uicon-bag': '\ue619', + 'uicon-error-circle-fill': '\ue62c', + 'uicon-error-circle': '\ue624', + 'uicon-close-circle': '\ue63f', + 'uicon-close-circle-fill': '\ue637', + 'uicon-checkmark-circle': '\ue63d', + 'uicon-checkmark-circle-fill': '\ue635', + 'uicon-question-circle-fill': '\ue666', + 'uicon-question-circle': '\ue625', + 'uicon-share': '\ue631', + 'uicon-share-fill': '\ue65e', + 'uicon-shopping-cart': '\ue621', + 'uicon-shopping-cart-fill': '\ue65d', + 'uicon-bell': '\ue609', + 'uicon-bell-fill': '\ue640', + 'uicon-list': '\ue650', + 'uicon-list-dot': '\ue616', + 'uicon-zhihu': '\ue6ba', + 'uicon-zhihu-circle-fill': '\ue709', + 'uicon-zhifubao': '\ue6b9', + 'uicon-zhifubao-circle-fill': '\ue6b8', + 'uicon-weixin-circle-fill': '\ue6b1', + 'uicon-weixin-fill': '\ue6b2', + 'uicon-twitter-circle-fill': '\ue6ab', + 'uicon-twitter': '\ue6aa', + 'uicon-taobao-circle-fill': '\ue6a7', + 'uicon-taobao': '\ue6a6', + 'uicon-weibo-circle-fill': '\ue6a5', + 'uicon-weibo': '\ue6a4', + 'uicon-qq-fill': '\ue6a1', + 'uicon-qq-circle-fill': '\ue6a0', + 'uicon-moments-circel-fill': '\ue69a', + 'uicon-moments': '\ue69b', + 'uicon-qzone': '\ue695', + 'uicon-qzone-circle-fill': '\ue696', + 'uicon-baidu-circle-fill': '\ue680', + 'uicon-baidu': '\ue681', + 'uicon-facebook-circle-fill': '\ue68a', + 'uicon-facebook': '\ue689', + 'uicon-car': '\ue60c', + 'uicon-car-fill': '\ue636', + 'uicon-warning-fill': '\ue64d', + 'uicon-warning': '\ue694', + 'uicon-clock-fill': '\ue638', + 'uicon-clock': '\ue60f', + 'uicon-edit-pen': '\ue612', + 'uicon-edit-pen-fill': '\ue66b', + 'uicon-email': '\ue611', + 'uicon-email-fill': '\ue642', + 'uicon-minus-circle': '\ue61b', + 'uicon-minus-circle-fill': '\ue652', + 'uicon-plus-circle': '\ue62e', + 'uicon-plus-circle-fill': '\ue661', + 'uicon-file-text': '\ue663', + 'uicon-file-text-fill': '\ue665', + 'uicon-pushpin': '\ue7e3', + 'uicon-pushpin-fill': '\ue86e', + 'uicon-grid': '\ue673', + 'uicon-grid-fill': '\ue678', + 'uicon-play-circle': '\ue647', + 'uicon-play-circle-fill': '\ue655', + 'uicon-pause-circle-fill': '\ue654', + 'uicon-pause': '\ue8fa', + 'uicon-pause-circle': '\ue643', + 'uicon-eye-off': '\ue648', + 'uicon-eye-off-outline': '\ue62b', + 'uicon-gift-fill': '\ue65c', + 'uicon-gift': '\ue65b', + 'uicon-rmb-circle-fill': '\ue657', + 'uicon-rmb-circle': '\ue677', + 'uicon-kefu-ermai': '\ue656', + 'uicon-server-fill': '\ue751', + 'uicon-coupon-fill': '\ue8c4', + 'uicon-coupon': '\ue8ae', + 'uicon-integral': '\ue704', + 'uicon-integral-fill': '\ue703', + 'uicon-home-fill': '\ue964', + 'uicon-home': '\ue965', + 'uicon-hourglass-half-fill': '\ue966', + 'uicon-hourglass': '\ue967', + 'uicon-account': '\ue628', + 'uicon-plus-people-fill': '\ue626', + 'uicon-minus-people-fill': '\ue615', + 'uicon-account-fill': '\ue614', + 'uicon-thumb-down-fill': '\ue726', + 'uicon-thumb-down': '\ue727', + 'uicon-thumb-up': '\ue733', + 'uicon-thumb-up-fill': '\ue72f', + 'uicon-lock-fill': '\ue979', + 'uicon-lock-open': '\ue973', + 'uicon-lock-opened-fill': '\ue974', + 'uicon-lock': '\ue97a', + 'uicon-red-packet-fill': '\ue690', + 'uicon-photo-fill': '\ue98b', + 'uicon-photo': '\ue98d', + 'uicon-volume-off-fill': '\ue659', + 'uicon-volume-off': '\ue644', + 'uicon-volume-fill': '\ue670', + 'uicon-volume': '\ue633', + 'uicon-red-packet': '\ue691', + 'uicon-download': '\ue63c', + 'uicon-arrow-up-fill': '\ue6b0', + 'uicon-arrow-down-fill': '\ue600', + 'uicon-play-left-fill': '\ue675', + 'uicon-play-right-fill': '\ue676', + 'uicon-rewind-left-fill': '\ue679', + 'uicon-rewind-right-fill': '\ue67a', + 'uicon-arrow-downward': '\ue604', + 'uicon-arrow-leftward': '\ue601', + 'uicon-arrow-rightward': '\ue603', + 'uicon-arrow-upward': '\ue607', + 'uicon-arrow-down': '\ue60d', + 'uicon-arrow-right': '\ue605', + 'uicon-arrow-left': '\ue60e', + 'uicon-arrow-up': '\ue606', + 'uicon-skip-back-left': '\ue674', + 'uicon-skip-forward-right': '\ue672', + 'uicon-rewind-right': '\ue66f', + 'uicon-rewind-left': '\ue671', + 'uicon-arrow-right-double': '\ue68d', + 'uicon-arrow-left-double': '\ue68c', + 'uicon-wifi-off': '\ue668', + 'uicon-wifi': '\ue667', + 'uicon-empty-data': '\ue62f', + 'uicon-empty-history': '\ue684', + 'uicon-empty-list': '\ue68b', + 'uicon-empty-page': '\ue627', + 'uicon-empty-order': '\ue639', + 'uicon-man': '\ue697', + 'uicon-woman': '\ue69c', + 'uicon-man-add': '\ue61c', + 'uicon-man-add-fill': '\ue64c', + 'uicon-man-delete': '\ue61a', + 'uicon-man-delete-fill': '\ue66a', + 'uicon-zh': '\ue70a', + 'uicon-en': '\ue692' +} diff --git a/uni_modules/uview-ui/components/u-icon/props.js b/uni_modules/uview-ui/components/u-icon/props.js new file mode 100644 index 0000000..71845b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/props.js @@ -0,0 +1,89 @@ +export default { + props: { + // 图标类名 + name: { + type: String, + default: uni.$u.props.icon.name + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: uni.$u.props.icon.color + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: uni.$u.props.icon.size + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: uni.$u.props.icon.bold + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: uni.$u.props.icon.index + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: uni.$u.props.icon.hoverClass + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: uni.$u.props.icon.customPrefix + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: uni.$u.props.icon.label + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: uni.$u.props.icon.labelPos + }, + // label的大小 + labelSize: { + type: [String, Number], + default: uni.$u.props.icon.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.icon.labelColor + }, + // label与图标的距离 + space: { + type: [String, Number], + default: uni.$u.props.icon.space + }, + // 图片的mode + imgMode: { + type: String, + default: uni.$u.props.icon.imgMode + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: uni.$u.props.icon.width + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: uni.$u.props.icon.height + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: uni.$u.props.icon.top + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.icon.stop + } + } +} diff --git a/uni_modules/uview-ui/components/u-icon/u-icon.vue b/uni_modules/uview-ui/components/u-icon/u-icon.vue new file mode 100644 index 0000000..9340328 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/u-icon.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-image/props.js b/uni_modules/uview-ui/components/u-image/props.js new file mode 100644 index 0000000..2eabb74 --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 图片地址 + src: { + type: String, + default: uni.$u.props.image.src + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.image.mode + }, + // 宽度,单位任意 + width: { + type: [String, Number], + default: uni.$u.props.image.width + }, + // 高度,单位任意 + height: { + type: [String, Number], + default: uni.$u.props.image.height + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: uni.$u.props.image.radius + }, + // 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序 + lazyLoad: { + type: Boolean, + default: uni.$u.props.image.lazyLoad + }, + // 开启长按图片显示识别微信小程序码菜单 + showMenuByLongpress: { + type: Boolean, + default: uni.$u.props.image.showMenuByLongpress + }, + // 加载中的图标,或者小图片 + loadingIcon: { + type: String, + default: uni.$u.props.image.loadingIcon + }, + // 加载失败的图标,或者小图片 + errorIcon: { + type: String, + default: uni.$u.props.image.errorIcon + }, + // 是否显示加载中的图标或者自定义的slot + showLoading: { + type: Boolean, + default: uni.$u.props.image.showLoading + }, + // 是否显示加载错误的图标或者自定义的slot + showError: { + type: Boolean, + default: uni.$u.props.image.showError + }, + // 是否需要淡入效果 + fade: { + type: Boolean, + default: uni.$u.props.image.fade + }, + // 只支持网络资源,只对微信小程序有效 + webp: { + type: Boolean, + default: uni.$u.props.image.webp + }, + // 过渡时间,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.image.duration + }, + // 背景颜色,用于深色页面加载图片时,为了和背景色融合 + bgColor: { + type: String, + default: uni.$u.props.image.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-image/u-image.vue b/uni_modules/uview-ui/components/u-image/u-image.vue new file mode 100644 index 0000000..473e35b --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/u-image.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-anchor/props.js b/uni_modules/uview-ui/components/u-index-anchor/props.js new file mode 100644 index 0000000..6d8b59a --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 列表锚点文本内容 + text: { + type: [String, Number], + default: uni.$u.props.indexAnchor.text + }, + // 列表锚点文字颜色 + color: { + type: String, + default: uni.$u.props.indexAnchor.color + }, + // 列表锚点文字大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.indexAnchor.size + }, + // 列表锚点背景颜色 + bgColor: { + type: String, + default: uni.$u.props.indexAnchor.bgColor + }, + // 列表锚点高度,单位默认px + height: { + type: [String, Number], + default: uni.$u.props.indexAnchor.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 0000000..b95ddef --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-item/props.js b/uni_modules/uview-ui/components/u-index-item/props.js new file mode 100644 index 0000000..7c11331 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/props.js @@ -0,0 +1,5 @@ +export default { + props: { + + } +} diff --git a/uni_modules/uview-ui/components/u-index-item/u-index-item.vue b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue new file mode 100644 index 0000000..0bc7fb3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-list/props.js b/uni_modules/uview-ui/components/u-index-list/props.js new file mode 100644 index 0000000..354d459 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 右边锚点非激活的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.indexList.inactiveColor + }, + // 右边锚点激活的颜色 + activeColor: { + type: String, + default: uni.$u.props.indexList.activeColor + }, + // 索引字符列表,数组形式 + indexList: { + type: Array, + default: uni.$u.props.indexList.indexList + }, + // 是否开启锚点自动吸顶 + sticky: { + type: Boolean, + default: uni.$u.props.indexList.sticky + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + default: uni.$u.props.indexList.customNavHeight + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-list/u-index-list.vue b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue new file mode 100644 index 0000000..d712618 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue @@ -0,0 +1,440 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-input/props.js b/uni_modules/uview-ui/components/u-input/props.js new file mode 100644 index 0000000..2c50870 --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/props.js @@ -0,0 +1,187 @@ +export default { + props: { + // 输入的值 + value: { + type: [String, Number], + default: uni.$u.props.input.value + }, + // 输入框类型 + // number-数字输入键盘,app-vue下可以输入浮点数,app-nvue和小程序平台下只能输入整数 + // idcard-身份证输入键盘,微信、支付宝、百度、QQ小程序 + // digit-带小数点的数字键盘,App的nvue页面、微信、支付宝、百度、头条、QQ小程序 + // text-文本输入键盘 + type: { + type: String, + default: uni.$u.props.input.type + }, + // 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true, + // 兼容性:微信小程序、百度小程序、字节跳动小程序、QQ小程序 + fixed: { + type: Boolean, + default: uni.$u.props.input.fixed + }, + // 是否禁用输入框 + disabled: { + type: Boolean, + default: uni.$u.props.input.disabled + }, + // 禁用状态时的背景色 + disabledColor: { + type: String, + default: uni.$u.props.input.disabledColor + }, + // 是否显示清除控件 + clearable: { + type: Boolean, + default: uni.$u.props.input.clearable + }, + // 是否密码类型 + password: { + type: Boolean, + default: uni.$u.props.input.password + }, + // 最大输入长度,设置为 -1 的时候不限制最大长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.input.maxlength + }, + // 输入框为空时的占位符 + placeholder: { + type: String, + default: uni.$u.props.input.placeholder + }, + // 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ + placeholderClass: { + type: String, + default: uni.$u.props.input.placeholderClass + }, + // 指定placeholder的样式 + placeholderStyle: { + type: [String, Object], + default: uni.$u.props.input.placeholderStyle + }, + // 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 + showWordLimit: { + type: Boolean, + default: uni.$u.props.input.showWordLimit + }, + // 设置右下角按钮的文字,有效值:send|search|next|go|done,兼容性详见uni-app文档 + // https://uniapp.dcloud.io/component/input + // https://uniapp.dcloud.io/component/textarea + confirmType: { + type: String, + default: uni.$u.props.input.confirmType + }, + // 点击键盘右下角按钮时是否保持键盘不收起,H5无效 + confirmHold: { + type: Boolean, + default: uni.$u.props.input.confirmHold + }, + // focus时,点击页面的时候不收起键盘,微信小程序有效 + holdKeyboard: { + type: Boolean, + default: uni.$u.props.input.holdKeyboard + }, + // 自动获取焦点 + // 在 H5 平台能否聚焦以及软键盘是否跟随弹出,取决于当前浏览器本身的实现。nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点 + focus: { + type: Boolean, + default: uni.$u.props.input.focus + }, + // 键盘收起时,是否自动失去焦点,目前仅App3.0.0+有效 + autoBlur: { + type: Boolean, + default: uni.$u.props.input.autoBlur + }, + // 是否去掉 iOS 下的默认内边距,仅微信小程序,且type=textarea时有效 + disableDefaultPadding: { + type: Boolean, + default: uni.$u.props.input.disableDefaultPadding + }, + // 指定focus时光标的位置 + cursor: { + type: [String, Number], + default: uni.$u.props.input.cursor + }, + // 输入框聚焦时底部与键盘的距离 + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.input.cursorSpacing + }, + // 光标起始位置,自动聚集时有效,需与selection-end搭配使用 + selectionStart: { + type: [String, Number], + default: uni.$u.props.input.selectionStart + }, + // 光标结束位置,自动聚集时有效,需与selection-start搭配使用 + selectionEnd: { + type: [String, Number], + default: uni.$u.props.input.selectionEnd + }, + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.input.adjustPosition + }, + // 输入框内容对齐方式,可选值为:left|center|right + inputAlign: { + type: String, + default: uni.$u.props.input.inputAlign + }, + // 输入框字体的大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.input.fontSize + }, + // 输入框字体颜色 + color: { + type: String, + default: uni.$u.props.input.color + }, + // 输入框前置图标 + prefixIcon: { + type: String, + default: uni.$u.props.input.prefixIcon + }, + // 前置图标样式,对象或字符串 + prefixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.prefixIconStyle + }, + // 输入框后置图标 + suffixIcon: { + type: String, + default: uni.$u.props.input.suffixIcon + }, + // 后置图标样式,对象或字符串 + suffixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.suffixIconStyle + }, + // 边框类型,surround-四周边框,bottom-底部边框,none-无边框 + border: { + type: String, + default: uni.$u.props.input.border + }, + // 是否只读,与disabled不同之处在于disabled会置灰组件,而readonly则不会 + readonly: { + type: Boolean, + default: uni.$u.props.input.readonly + }, + // 输入框形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.input.shape + }, + // 用于处理或者过滤输入框内容的方法 + formatter: { + type: [Function, null], + default: uni.$u.props.input.formatter + }, + // 是否忽略组件内对文本合成系统事件的处理 + ignoreCompositionEvent: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-input/u-input.vue b/uni_modules/uview-ui/components/u-input/u-input.vue new file mode 100644 index 0000000..4c83757 --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/u-input.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-keyboard/props.js b/uni_modules/uview-ui/components/u-keyboard/props.js new file mode 100644 index 0000000..cfdb00a --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘 + mode: { + type: String, + default: uni.$u.props.keyboard.mode + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.keyboard.dotDisabled + }, + // 是否显示顶部工具条 + tooltip: { + type: Boolean, + default: uni.$u.props.keyboard.tooltip + }, + // 是否显示工具条中间的提示 + showTips: { + type: Boolean, + default: uni.$u.props.keyboard.showTips + }, + // 工具条中间的提示文字 + tips: { + type: String, + default: uni.$u.props.keyboard.tips + }, + // 是否显示工具条左边的"取消"按钮 + showCancel: { + type: Boolean, + default: uni.$u.props.keyboard.showCancel + }, + // 是否显示工具条右边的"完成"按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.keyboard.showConfirm + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.keyboard.random + }, + // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距 + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.keyboard.safeAreaInsetBottom + }, + // 是否允许通过点击遮罩关闭键盘 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.keyboard.closeOnClickOverlay + }, + // 控制键盘的弹出与收起 + show: { + type: Boolean, + default: uni.$u.props.keyboard.show + }, + // 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩 + overlay: { + type: Boolean, + default: uni.$u.props.keyboard.overlay + }, + // z-index值 + zIndex: { + type: [String, Number], + default: uni.$u.props.keyboard.zIndex + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.keyboard.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.keyboard.confirmText + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: uni.$u.props.keyboard.autoChange + } + } +} diff --git a/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue new file mode 100644 index 0000000..14228cb --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line-progress/props.js b/uni_modules/uview-ui/components/u-line-progress/props.js new file mode 100644 index 0000000..a4210bd --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/props.js @@ -0,0 +1,28 @@ +export default { + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: uni.$u.props.lineProgress.activeColor + }, + inactiveColor: { + type: String, + default: uni.$u.props.lineProgress.color + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: uni.$u.props.lineProgress.inactiveColor + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: uni.$u.props.lineProgress.showText + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.lineProgress.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue new file mode 100644 index 0000000..4e27931 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line/props.js b/uni_modules/uview-ui/components/u-line/props.js new file mode 100644 index 0000000..2308cc3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/props.js @@ -0,0 +1,33 @@ +export default { + props: { + color: { + type: String, + default: uni.$u.props.line.color + }, + // 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 + length: { + type: [String, Number], + default: uni.$u.props.line.length + }, + // 线条方向,col-竖向,row-横向 + direction: { + type: String, + default: uni.$u.props.line.direction + }, + // 是否显示细边框 + hairline: { + type: Boolean, + default: uni.$u.props.line.hairline + }, + // 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px" + margin: { + type: [String, Number], + default: uni.$u.props.line.margin + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: uni.$u.props.line.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-line/u-line.vue b/uni_modules/uview-ui/components/u-line/u-line.vue new file mode 100644 index 0000000..e0a6d92 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/u-line.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-link/props.js b/uni_modules/uview-ui/components/u-link/props.js new file mode 100644 index 0000000..d39353f --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/props.js @@ -0,0 +1,39 @@ +export default { + props: { + // 文字颜色 + color: { + type: String, + default: uni.$u.props.link.color + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.link.fontSize + }, + // 是否显示下划线 + underLine: { + type: Boolean, + default: uni.$u.props.link.underLine + }, + // 要跳转的链接 + href: { + type: String, + default: uni.$u.props.link.href + }, + // 小程序中复制到粘贴板的提示语 + mpTips: { + type: String, + default: uni.$u.props.link.mpTips + }, + // 下划线颜色 + lineColor: { + type: String, + default: uni.$u.props.link.lineColor + }, + // 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色 + text: { + type: String, + default: uni.$u.props.link.text + } + } +} diff --git a/uni_modules/uview-ui/components/u-link/u-link.vue b/uni_modules/uview-ui/components/u-link/u-link.vue new file mode 100644 index 0000000..c6802a5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/u-link.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list-item/props.js b/uni_modules/uview-ui/components/u-list-item/props.js new file mode 100644 index 0000000..58ddc49 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/props.js @@ -0,0 +1,9 @@ +export default { + props: { + // 用于滚动到指定item + anchor: { + type: [String, Number], + default: uni.$u.props.listItem.anchor + } + } +} diff --git a/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue new file mode 100644 index 0000000..1a25db6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list/props.js b/uni_modules/uview-ui/components/u-list/props.js new file mode 100644 index 0000000..25406f4 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/props.js @@ -0,0 +1,76 @@ +export default { + props: { + // 控制是否出现滚动条,仅nvue有效 + showScrollbar: { + type: Boolean, + default: uni.$u.props.list.showScrollbar + }, + // 距底部多少时触发scrolltolower事件 + lowerThreshold: { + type: [String, Number], + default: uni.$u.props.list.lowerThreshold + }, + // 距顶部多少时触发scrolltoupper事件,非nvue有效 + upperThreshold: { + type: [String, Number], + default: uni.$u.props.list.upperThreshold + }, + // 设置竖向滚动条位置 + scrollTop: { + type: [String, Number], + default: uni.$u.props.list.scrollTop + }, + // 控制 onscroll 事件触发的频率,仅nvue有效 + offsetAccuracy: { + type: [String, Number], + default: uni.$u.props.list.offsetAccuracy + }, + // 启用 flexbox 布局。开启后,当前节点声明了display: flex就会成为flex container,并作用于其孩子节点,仅微信小程序有效 + enableFlex: { + type: Boolean, + default: uni.$u.props.list.enableFlex + }, + // 是否按分页模式显示List,默认值false + pagingEnabled: { + type: Boolean, + default: uni.$u.props.list.pagingEnabled + }, + // 是否允许List滚动 + scrollable: { + type: Boolean, + default: uni.$u.props.list.scrollable + }, + // 值应为某子元素id(id不能以数字开头) + scrollIntoView: { + type: String, + default: uni.$u.props.list.scrollIntoView + }, + // 在设置滚动条位置时使用动画过渡 + scrollWithAnimation: { + type: Boolean, + default: uni.$u.props.list.scrollWithAnimation + }, + // iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只对微信小程序有效 + enableBackToTop: { + type: Boolean, + default: uni.$u.props.list.enableBackToTop + }, + // 列表的高度 + height: { + type: [String, Number], + default: uni.$u.props.list.height + }, + // 列表宽度 + width: { + type: [String, Number], + default: uni.$u.props.list.width + }, + // 列表前后预渲染的屏数,1代表一个屏幕的高度,1.5代表1个半屏幕高度 + preLoadScreen: { + type: [String, Number], + default: uni.$u.props.list.preLoadScreen + } + // vue下,是否开启虚拟列表 + + } +} diff --git a/uni_modules/uview-ui/components/u-list/u-list.vue b/uni_modules/uview-ui/components/u-list/u-list.vue new file mode 100644 index 0000000..4447cab --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/u-list.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-icon/props.js b/uni_modules/uview-ui/components/u-loading-icon/props.js new file mode 100644 index 0000000..c35524e --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.loadingIcon.show + }, + // 颜色 + color: { + type: String, + default: uni.$u.props.loadingIcon.color + }, + // 提示文字颜色 + textColor: { + type: String, + default: uni.$u.props.loadingIcon.textColor + }, + // 文字和图标是否垂直排列 + vertical: { + type: Boolean, + default: uni.$u.props.loadingIcon.vertical + }, + // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形 + mode: { + type: String, + default: uni.$u.props.loadingIcon.mode + }, + // 图标大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.loadingIcon.size + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.loadingIcon.textSize + }, + // 文字内容 + text: { + type: [String, Number], + default: uni.$u.props.loadingIcon.text + }, + // 动画模式 + timingFunction: { + type: String, + default: uni.$u.props.loadingIcon.timingFunction + }, + // 动画执行周期时间 + duration: { + type: [String, Number], + default: uni.$u.props.loadingIcon.duration + }, + // mode=circle时的暗边颜色 + inactiveColor: { + type: String, + default: uni.$u.props.loadingIcon.inactiveColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 0000000..2ede5c3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-page/props.js b/uni_modules/uview-ui/components/u-loading-page/props.js new file mode 100644 index 0000000..e239b61 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 提示内容 + loadingText: { + type: [String, Number], + default: uni.$u.props.loadingPage.loadingText + }, + // 文字上方用于替换loading动画的图片 + image: { + type: String, + default: uni.$u.props.loadingPage.image + }, + // 加载动画的模式,circle-圆形,spinner-花朵形,semicircle-半圆形 + loadingMode: { + type: String, + default: uni.$u.props.loadingPage.loadingMode + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.loadingPage.loading + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.loadingPage.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.loadingPage.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 加载中图标的颜色,只能rgb或者十六进制颜色值 + loadingColor: { + type: String, + default: uni.$u.props.loadingPage.loadingColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue new file mode 100644 index 0000000..03a78ad --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loadmore/props.js b/uni_modules/uview-ui/components/u-loadmore/props.js new file mode 100644 index 0000000..1e67d89 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/props.js @@ -0,0 +1,94 @@ +export default { + props: { + // 组件状态,loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态 + status: { + type: String, + default: uni.$u.props.loadmore.status + }, + // 组件背景色 + bgColor: { + type: String, + default: uni.$u.props.loadmore.bgColor + }, + // 是否显示加载中的图标 + icon: { + type: Boolean, + default: uni.$u.props.loadmore.icon + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadmore.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.loadmore.iconSize + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.loadmore.color + }, + // 加载中状态的图标,spinner-花朵状图标,circle-圆圈状,semicircle-半圆 + loadingIcon: { + type: String, + default: uni.$u.props.loadmore.loadingIcon + }, + // 加载前的提示语 + loadmoreText: { + type: String, + default: uni.$u.props.loadmore.loadmoreText + }, + // 加载中提示语 + loadingText: { + type: String, + default: uni.$u.props.loadmore.loadingText + }, + // 没有更多的提示语 + nomoreText: { + type: String, + default: uni.$u.props.loadmore.nomoreText + }, + // 在“没有更多”状态下,是否显示粗点 + isDot: { + type: Boolean, + default: uni.$u.props.loadmore.isDot + }, + // 加载中图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.loadmore.iconColor + }, + // 上边距 + marginTop: { + type: [String, Number], + default: uni.$u.props.loadmore.marginTop + }, + // 下边距 + marginBottom: { + type: [String, Number], + default: uni.$u.props.loadmore.marginBottom + }, + // 高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.loadmore.height + }, + // 是否显示左边分割线 + line: { + type: Boolean, + default: uni.$u.props.loadmore.line + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.loadmore.lineColor + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: uni.$u.props.loadmore.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue new file mode 100644 index 0000000..73c79fe --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-modal/props.js b/uni_modules/uview-ui/components/u-modal/props.js new file mode 100644 index 0000000..94b3078 --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/props.js @@ -0,0 +1,89 @@ +export default { + props: { + // 是否展示modal + show: { + type: Boolean, + default: uni.$u.props.modal.show + }, + // 标题 + title: { + type: [String], + default: uni.$u.props.modal.title + }, + // 弹窗内容 + content: { + type: String, + default: uni.$u.props.modal.content + }, + // 确认文案 + confirmText: { + type: String, + default: uni.$u.props.modal.confirmText + }, + // 取消文案 + cancelText: { + type: String, + default: uni.$u.props.modal.cancelText + }, + // 是否显示确认按钮 + showConfirmButton: { + type: Boolean, + default: uni.$u.props.modal.showConfirmButton + }, + // 是否显示取消按钮 + showCancelButton: { + type: Boolean, + default: uni.$u.props.modal.showCancelButton + }, + // 确认按钮颜色 + confirmColor: { + type: String, + default: uni.$u.props.modal.confirmColor + }, + // 取消文字颜色 + cancelColor: { + type: String, + default: uni.$u.props.modal.cancelColor + }, + // 对调确认和取消的位置 + buttonReverse: { + type: Boolean, + default: uni.$u.props.modal.buttonReverse + }, + // 是否开启缩放效果 + zoom: { + type: Boolean, + default: uni.$u.props.modal.zoom + }, + // 是否异步关闭,只对确定按钮有效 + asyncClose: { + type: Boolean, + default: uni.$u.props.modal.asyncClose + }, + // 是否允许点击遮罩关闭modal + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.modal.closeOnClickOverlay + }, + // 给一个负的margin-top,往上偏移,避免和键盘重合的情况 + negativeTop: { + type: [String, Number], + default: uni.$u.props.modal.negativeTop + }, + // modal宽度,不支持百分比,可以数值,px,rpx单位 + width: { + type: [String, Number], + default: uni.$u.props.modal.width + }, + // 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮 + confirmButtonShape: { + type: String, + default: uni.$u.props.modal.confirmButtonShape + }, + // 弹窗动画过度时间 + duration:{ + type:String | Number, + default: uni.$u.props.modal.duration + } + } +} diff --git a/uni_modules/uview-ui/components/u-modal/u-modal.vue b/uni_modules/uview-ui/components/u-modal/u-modal.vue new file mode 100644 index 0000000..72e1ed2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/u-modal.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-navbar/props.js b/uni_modules/uview-ui/components/u-navbar/props.js new file mode 100644 index 0000000..5398de2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.navbar.safeAreaInsetTop + }, + // 固定在顶部时,是否生成一个等高元素,以防止塌陷 + placeholder: { + type: Boolean, + default: uni.$u.props.navbar.placeholder + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: uni.$u.props.navbar.fixed + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.navbar.border + }, + // 左边的图标 + leftIcon: { + type: String, + default: uni.$u.props.navbar.leftIcon + }, + // 左边的提示文字 + leftText: { + type: String, + default: uni.$u.props.navbar.leftText + }, + // 左右的提示文字 + rightText: { + type: String, + default: uni.$u.props.navbar.rightText + }, + // 右边的图标 + rightIcon: { + type: String, + default: uni.$u.props.navbar.rightIcon + }, + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.navbar.title + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.navbar.bgColor + }, + // 标题的宽度 + titleWidth: { + type: [String, Number], + default: uni.$u.props.navbar.titleWidth + }, + // 导航栏高度 + height: { + type: [String, Number], + default: uni.$u.props.navbar.height + }, + // 左侧返回图标的大小 + leftIconSize: { + type: [String, Number], + default: uni.$u.props.navbar.leftIconSize + }, + // 左侧返回图标的颜色 + leftIconColor: { + type: String, + default: uni.$u.props.navbar.leftIconColor + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: uni.$u.props.navbar.autoBack + }, + // 标题的样式,对象或字符串 + titleStyle: { + type: [String, Object], + default: uni.$u.props.navbar.titleStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-navbar/u-navbar.vue b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue new file mode 100644 index 0000000..2b206b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-no-network/props.js b/uni_modules/uview-ui/components/u-no-network/props.js new file mode 100644 index 0000000..9f3af62 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 页面文字提示 + tips: { + type: String, + default: uni.$u.props.noNetwork.tips + }, + // 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖 + zIndex: { + type: [String, Number], + default: uni.$u.props.noNetwork.zIndex + }, + // image 没有网络的图片提示 + image: { + type: String, + default: uni.$u.props.noNetwork.image + } + } +} diff --git a/uni_modules/uview-ui/components/u-no-network/u-no-network.vue b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue new file mode 100644 index 0000000..9710729 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-notice-bar/props.js b/uni_modules/uview-ui/components/u-notice-bar/props.js new file mode 100644 index 0000000..7040c29 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/props.js @@ -0,0 +1,70 @@ +export default { + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: uni.$u.props.noticeBar.text + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: uni.$u.props.noticeBar.direction + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.noticeBar.step + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.noticeBar.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.noticeBar.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.noticeBar.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.noticeBar.bgColor + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.noticeBar.speed + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.noticeBar.fontSize + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.noticeBar.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.noticeBar.disableTouch + }, + // 跳转的页面路径 + url: { + type: String, + default: uni.$u.props.noticeBar.url + }, + // 页面跳转的类型 + linkType: { + type: String, + default: uni.$u.props.noticeBar.linkType + } + } +} diff --git a/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 0000000..a06eb39 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,101 @@ + + + + diff --git a/uni_modules/uview-ui/components/u-notify/props.js b/uni_modules/uview-ui/components/u-notify/props.js new file mode 100644 index 0000000..57a9d71 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 到顶部的距离 + top: { + type: [String, Number], + default: uni.$u.props.notify.top + }, + // 是否展示组件 + // show: { + // type: Boolean, + // default: uni.$u.props.notify.show + // }, + // type主题,primary,success,warning,error + type: { + type: String, + default: uni.$u.props.notify.type + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.notify.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.notify.bgColor + }, + // 展示的文字内容 + message: { + type: String, + default: uni.$u.props.notify.message + }, + // 展示时长,为0时不消失,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.notify.duration + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.notify.fontSize + }, + // 是否留出顶部安全距离(状态栏高度) + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.notify.safeAreaInsetTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-notify/u-notify.vue b/uni_modules/uview-ui/components/u-notify/u-notify.vue new file mode 100644 index 0000000..30adb72 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/u-notify.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-box/props.js b/uni_modules/uview-ui/components/u-number-box/props.js new file mode 100644 index 0000000..fb0fa94 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/props.js @@ -0,0 +1,109 @@ +export default { + props: { + // 步进器标识符,在change回调返回 + name: { + type: [String, Number], + default: uni.$u.props.numberBox.name + }, + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + value: { + type: [String, Number], + default: uni.$u.props.numberBox.value + }, + // 最小值 + min: { + type: [String, Number], + default: uni.$u.props.numberBox.min + }, + // 最大值 + max: { + type: [String, Number], + default: uni.$u.props.numberBox.max + }, + // 加减的步长,可为小数 + step: { + type: [String, Number], + default: uni.$u.props.numberBox.step + }, + // 是否只允许输入整数 + integer: { + type: Boolean, + default: uni.$u.props.numberBox.integer + }, + // 是否禁用,包括输入框,加减按钮 + disabled: { + type: Boolean, + default: uni.$u.props.numberBox.disabled + }, + // 是否禁用输入框 + disabledInput: { + type: Boolean, + default: uni.$u.props.numberBox.disabledInput + }, + // 是否开启异步变更,开启后需要手动控制输入值 + asyncChange: { + type: Boolean, + default: uni.$u.props.numberBox.asyncChange + }, + // 输入框宽度,单位为px + inputWidth: { + type: [String, Number], + default: uni.$u.props.numberBox.inputWidth + }, + // 是否显示减少按钮 + showMinus: { + type: Boolean, + default: uni.$u.props.numberBox.showMinus + }, + // 是否显示增加按钮 + showPlus: { + type: Boolean, + default: uni.$u.props.numberBox.showPlus + }, + // 显示的小数位数 + decimalLength: { + type: [String, Number, null], + default: uni.$u.props.numberBox.decimalLength + }, + // 是否开启长按加减手势 + longPress: { + type: Boolean, + default: uni.$u.props.numberBox.longPress + }, + // 输入框文字和加减按钮图标的颜色 + color: { + type: String, + default: uni.$u.props.numberBox.color + }, + // 按钮大小,宽高等于此值,单位px,输入框高度和此值保持一致 + buttonSize: { + type: [String, Number], + default: uni.$u.props.numberBox.buttonSize + }, + // 输入框和按钮的背景颜色 + bgColor: { + type: String, + default: uni.$u.props.numberBox.bgColor + }, + // 指定光标于键盘的距离,避免键盘遮挡输入框,单位px + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.numberBox.cursorSpacing + }, + // 是否禁用增加按钮 + disablePlus: { + type: Boolean, + default: uni.$u.props.numberBox.disablePlus + }, + // 是否禁用减少按钮 + disableMinus: { + type: Boolean, + default: uni.$u.props.numberBox.disableMinus + }, + // 加减按钮图标的样式 + iconStyle: { + type: [Object, String], + default: uni.$u.props.numberBox.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-box/u-number-box.vue b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue new file mode 100644 index 0000000..69211c5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-keyboard/props.js b/uni_modules/uview-ui/components/u-number-keyboard/props.js new file mode 100644 index 0000000..5e3bf55 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘 + mode: { + type: String, + default: uni.$u.props.numberKeyboard.value + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.numberKeyboard.dotDisabled + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.numberKeyboard.random + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 0000000..4f505c6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-overlay/props.js b/uni_modules/uview-ui/components/u-overlay/props.js new file mode 100644 index 0000000..e6974df --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 是否显示遮罩 + show: { + type: Boolean, + default: uni.$u.props.overlay.show + }, + // 层级z-index + zIndex: { + type: [String, Number], + default: uni.$u.props.overlay.zIndex + }, + // 遮罩的过渡时间,单位为ms + duration: { + type: [String, Number], + default: uni.$u.props.overlay.duration + }, + // 不透明度值,当做rgba的第四个参数 + opacity: { + type: [String, Number], + default: uni.$u.props.overlay.opacity + } + } +} diff --git a/uni_modules/uview-ui/components/u-overlay/u-overlay.vue b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue new file mode 100644 index 0000000..92de4e9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-parse/node/node.vue b/uni_modules/uview-ui/components/u-parse/node/node.vue new file mode 100644 index 0000000..73e30fd --- /dev/null +++ b/uni_modules/uview-ui/components/u-parse/node/node.vue @@ -0,0 +1,499 @@ +