作者 lihongjuan

大象打卡

要显示太多修改。

为保证性能只显示 26 of 26+ 个文件。

<script>
export default {
onLaunch: function() {
},
onShow: function() {
},
onHide: function() {
},
post: function(url, data) {
var promise = new Promise((resolve, reject) => {
//init
let that = this,
token = uni.getStorageSync('token'),
header = {
'token': token || ''
},
postData;
//网络请求
uni.request({
url: this.globalData.baseUrl + url,
data: data,
method: 'POST',
header: header,
success: function(res) {
//返回取得的数据
if (res.data.code == '1') {
resolve(res.data.data);
} else {
uni.showToast({
title: res.data.msg,
icon: 'none'
});
reject(res.data);
}
},
fail: function(e) {
reject('网络出错');
uni.hideNavigationBarLoading();
}
});
});
return promise;
},
globalData: {
userInfo: null,
baseUrl: 'http://fnsxcx.w.brotop.cn'
},
upload(filetype, file) {
var promise = new Promise((resolve, reject) => {
wx.showNavigationBarLoading()
wx.showLoading({
title: '上传中',
})
let url = 'http://fnsxcx.w.brotop.cn/api/common/upload';
let head = {
'token': wx.getStorageSync('token'),
'XX-Device-Type': ''
}
let typename = {
filetype: filetype
}
wx.uploadFile({
url: url, //仅为示例,非真实的接口地址
filePath: file,
name: 'file',
header: head,
formData: typename,
success: function (res) {
console.log('上传文件后', res)
let temdata = JSON.parse(res.data);
console.log(temdata)
let urlobj = {
url: temdata.data.http_url,
kurl: temdata.data.url
}
resolve(urlobj);
},
fail: function (res) {
reject('网络出错');
wx.hideNavigationBarLoading()
wx.hideLoading()
},
complete: () => {
wx.hideNavigationBarLoading()
wx.hideLoading()
},
})
});
return promise;
},
// 上传图片
// upload(file) {
// var promise = new Promise((resolve, reject) => {
// let url = 'http://fnsxcx.w.brotop.cn/api/common/upload';
// let head = {
// 'token': uni.getStorageSync('token'),
// };
// // let typename = {
// // filetype: filetype //其他参数
// // };
// uni.uploadFile({
// url: url, //仅为示例,非真实的接口地址
// filePath: file,
// name: 'file',
// header: head,
// // formData: typename,
// success: function(res) {
// let temdata = JSON.parse(res.data);
// let urlobj = {
// url: temdata.data.url,
// };
// resolve(urlobj);
// uni.hideNavigationBarLoading();
// uni.hideLoading();
// },
// fail: function(res) {
// console.log(res)
// reject('网络出错');
// uni.hideNavigationBarLoading();
// uni.hideLoading();
// },
// complete: () => {
// uni.hideNavigationBarLoading();
// uni.hideLoading();
// }
// });
// });
// return promise;
// }
}
</script>
<style>
/*每个页面公共css */
image {
width: 100%;
height: 100%;
display: block;
}
/* 布局 */
.layout_row{
display: flex;
display: -webkit-flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
}
.justify_between{
display: flex;
display: -webkit-flex;
flex-direction: row;
justify-content: space-between;
}
.justify_column_bet{
display: flex;
display: -webkit-flex;
flex-direction: column;
align-items: flex-start;
justify-content: space-between;
}
.column_center{
display: flex;
display: -webkit-flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.layer_star {
display: flex;
display: -webkit-flex;
flex-direction: row;
justify-content: flex-start;
align-items: center
}
.layer_nostar {
display: flex;
display: -webkit-flex;
justify-content: flex-start;
}
.layer_center {
display: flex;
display: -webkit-flex;
justify-content: center;
align-items: center
}
.layer_nocenter {
display: flex;
display: -webkit-flex;
justify-content: center;
}
.layer_end {
display: flex;
display: -webkit-flex;
justify-content: flex-end;
align-items: center
}
.layer_noend {
display: flex;
display: -webkit-flex;
justify-content: flex-end;
}
.layer_between {
display: flex;
display: -webkit-flex;
justify-content: space-between;
align-items: center
}
.layer_nobetween {
display: flex;
display: -webkit-flex;
justify-content: space-between;
}
.layer_around{
display: flex;
display: -webkit-flex;
justify-content: space-around;
align-items: center;
}
.flex_star {
display: flex;
display: -webkit-flex;
flex-direction: column;
align-items: flex-start
}
.flex_column_center{
display: flex;
display: -webkit-flex;
flex-direction: column;
justify-content: flex-start;
align-items: center
}
.flex_column_nojustify{
display: flex;
display: -webkit-flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.flex_star_between {
display: flex;
display: -webkit-flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-start
}
.flex_center {
display: flex;
display: -webkit-flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.flex_warp {
display: flex;
display: -webkit-flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
}
.flex_wrap_between{
display: flex;
display: -webkit-flex;
flex-wrap: wrap;
justify-content: space-between;
}
.flex_wrap_no{
display: flex;
display: -webkit-flex;
flex-wrap: wrap;
}
/* 模态框 */
.tx_mask {
z-index: 99;
width: 100%;
height: 100vh;
position: fixed;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.6);
}
/* 弹窗内容 */
.mask_content{
background-color: rgba(255,255,255,1);
width:686upx;
border-radius:16upx;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
z-index: 100;
}
/* 海报 */
.canvas_dialog{
width: 590upx;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
z-index: 100;
}
.over_hide{
height: 100vh;
overflow: hidden;
}
.commonpadding {
padding: 24rpx 32rpx;
box-sizing: border-box;
background: #fff;
}
.flex {
display: flex;
}
.flexone {
display: flex;
align-items: center;
}
.flextwo {
display: flex;
align-items: center;
justify-content: space-between;
}
.flexthree {
display: flex;
align-items: center;
justify-content: center;
}
.commonone {
color: #3d444c;
font-size: 28rpx;
}
.commontwo {
color: #232323;
font-size: 28rpx;
}
.yourow{
width:28upx;
height:30upx;
font-size: 0;
}
.botbtn{
width:686upx;
height:96upx;
background:rgba(238,139,39,1);
border:2upx solid rgba(0,0,0,0);
box-shadow:0upx 6upx 6upx rgba(238,139,39,0.16);
opacity:1;
color:#fff;
font-size:28rpx;
text-align: center;
line-height: 96upx;
position: fixed;
bottom:44upx;
left:32upx;
border-radius:44upx;
}
</style>
... ...
module.exports = {
error:'',
isJSON : function (str){
if (typeof str == 'string') {
try {
var obj=JSON.parse(str);
if(typeof obj == 'object' && obj ){
return true;
}else{
return false;
}
} catch(e) {
console.log('error:'+str+'!!!'+e);
return false;
}
}
},
isNumber : function (checkVal){
var reg = /^-?[1-9][0-9]?.?[0-9]*$/;
return reg.test(checkVal);
}
}
\ No newline at end of file
... ...
{
"success": true,
"data": {
"Column": {
"categories": ["2012", "2013", "2014", "2015", "2016", "2017"],
"series": [{
"name": "成交量1",
"data": [15, {
"value": 20,
"color": "#f04864"
}, 45, 37, 43, 34]
}, {
"name": "成交量2",
"data": [30, {
"value": 40,
"color": "#facc14"
}, 25, 14, 34, 18]
}]
},
"ColumnB": {
"categories": ["2013", "2014", "2015", "2016", "2017", "2018"],
"series": [{
"name": "新成交量3",
"data": [35, 36, 31, 33, 13, 34]
}, {
"name": "新成交量4",
"data": [18, 27, 21, 24, 6, 28]
}]
},
"ColumnMeter": {
"categories": ["2013", "2014", "2015", "2016", "2017", "2018"],
"series": [{
"name": "目标值",
"data": [35, 36, 31, 33, 13, 34],
"color": "#2fc25b"
}, {
"name": "完成量",
"data": [18, 27, 21, 24, 6, 28],
"color": "#1890ff"
}]
},
"ColumnStack": {
"categories": ["2013", "2014", "2015", "2016", "2017", "2018"],
"series": [{
"name": "新成交量3",
"data": [35, 36, 31, 33, 13, 34]
}, {
"name": "新成交量4",
"data": [18, 27, 21, 24, 6, 28]
}, {
"name": "新成交量5",
"data": [18, 27, 21, 24, 6, 28]
}]
},
"Mix": {
"categories": ["2012", "2013", "2014", "2015", "2016", "2017"],
"series": [{
"name": "曲面",
"data": [70, 50, 85, 130, 64, 88],
"type": "area",
"style": "curve"
}, {
"name": "柱1",
"data": [40, 30, 55, 110, 24, 58],
"type": "column"
}, {
"name": "柱2",
"data": [50, 20, 75, 60, 34, 38],
"type": "column"
}, {
"name": "曲线",
"data": [70, 50, 85, 130, 64, 88],
"type": "line",
"style": "curve",
"color": "#1890ff",
"disableLegend": true
}, {
"name": "折线",
"data": [120, 140, 105, 170, 95, 160],
"type": "line",
"color": "#2fc25b"
}, {
"name": "点",
"data": [100, 80, 125, 150, 112, 132],
"type": "point",
"color": "#f04864"
}]
},
"LineA": {
"categories": ["2012", "2013", "2014", "2015", "2016", "2017"],
"series": [{
"name": "成交量A",
"data": [35, 8, 25, 37, 4, 20]
}, {
"name": "成交量B",
"data": [70, 40, 65, 100, 44, 68]
}, {
"name": "成交量C",
"data": [100, 80, 95, 150, 112, 132]
}]
},
"LineB": {
"categories": ["2012", "2013", "2014", "2015", "2016", "2017"],
"series": [{
"name": "成交量A",
"data": [35, 20, 25, 37, 4, 20]
}, {
"name": "成交量B",
"data": [70, 40, 65, 100, 44, 68]
}, {
"name": "成交量C",
"data": [100, 80, 95, 150, 112, 132]
}]
},
"Area": {
"categories": ["2012", "2013", "2014", "2015", "2016", "2017"],
"series": [{
"name": "成交量A",
"data": [100, 80, 95, 150, 112, 132],
"color": "#facc14"
}, {
"name": "成交量B",
"data": [70, 40, 65, 100, 44, 68],
"color": "#2fc25b"
}, {
"name": "成交量C",
"data": [35, 20, 25, 37, 4, 20],
"color": "#1890ff"
}]
},
"Pie": {
"series": [{
"name": "一班",
"data": 50
}, {
"name": "二班",
"data": 30
}, {
"name": "三班",
"data": 20
}, {
"name": "四班",
"data": 18
}, {
"name": "五班",
"data": 8
}]
},
"Ring": {
"series": [{
"name": "一班",
"data": 50
}, {
"name": "二班",
"data": 30
}, {
"name": "三班",
"data": 20
}, {
"name": "四班",
"data": 18
}, {
"name": "五班",
"data": 8
}]
},
"Radar": {
"categories": ["维度1", "维度2", "维度3", "维度4", "维度5", "维度6"],
"series": [{
"name": "成交量1",
"data": [90, 110, 165, 195, 187, 172]
}, {
"name": "成交量2",
"data": [190, 210, 105, 35, 27, 102]
}]
},
"Arcbar1": {
"series": [{
"name": "正确率",
"data": 0.29,
"color": "#2fc25b"
}]
},
"Arcbar2": {
"series": [{
"name": "错误率",
"data": 0.65,
"color": "#f04864"
}]
},
"Arcbar3": {
"series": [{
"name": "完成率",
"data": 0.85,
"color": "#1890ff"
}]
},
"Gauge": {
"categories": [{
"value": 0.2,
"color": "#1890ff"
}, {
"value": 0.8,
"color": "#2fc25b"
}, {
"value": 1,
"color": "#f04864"
}],
"series": [{
"name": "完成率",
"data": 0.66
}]
},
"Candle": {
"categories": [
"2013/1/24", "2013/1/25", "2013/1/28", "2013/1/29", "2013/1/30",
"2013/1/31", "2013/2/1", "2013/2/4", "2013/2/5", "2013/2/6",
"2013/2/7", "2013/2/8", "2013/2/18", "2013/2/19", "2013/2/20",
"2013/2/21", "2013/2/22", "2013/2/25", "2013/2/26", "2013/2/27",
"2013/2/28", "2013/3/1", "2013/3/4", "2013/3/5", "2013/3/6",
"2013/3/7", "2013/3/8", "2013/3/11", "2013/3/12", "2013/3/13",
"2013/3/14", "2013/3/15", "2013/3/18", "2013/3/19", "2013/3/20",
"2013/3/21", "2013/3/22", "2013/3/25", "2013/3/26", "2013/3/27",
"2013/3/28", "2013/3/29", "2013/4/1", "2013/4/2", "2013/4/3",
"2013/4/8", "2013/4/9", "2013/4/10", "2013/4/11", "2013/4/12",
"2013/4/15", "2013/4/16", "2013/4/17", "2013/4/18", "2013/4/19",
"2013/4/22", "2013/4/23", "2013/4/24", "2013/4/25", "2013/4/26",
"2013/5/2", "2013/5/3", "2013/5/6", "2013/5/7", "2013/5/8",
"2013/5/9", "2013/5/10", "2013/5/13", "2013/5/14", "2013/5/15",
"2013/5/16", "2013/5/17", "2013/5/20", "2013/5/21", "2013/5/22",
"2013/5/23", "2013/5/24", "2013/5/27", "2013/5/28", "2013/5/29",
"2013/5/30", "2013/5/31", "2013/6/3", "2013/6/4", "2013/6/5",
"2013/6/6", "2013/6/7", "2013/6/13"
],
"series": [{
"name": "上证指数",
"data": [
[2320.26, 2302.6, 2287.3, 2362.94],
[2300, 2291.3, 2288.26, 2308.38],
[2295.35, 2346.5, 2295.35, 2346.92],
[2347.22, 2358.98, 2337.35, 2363.8],
[2360.75, 2382.48, 2347.89, 2383.76],
[2383.43, 2385.42, 2371.23, 2391.82],
[2377.41, 2419.02, 2369.57, 2421.15],
[2425.92, 2428.15, 2417.58, 2440.38],
[2411, 2433.13, 2403.3, 2437.42],
[2432.68, 2434.48, 2427.7, 2441.73],
[2430.69, 2418.53, 2394.22, 2433.89],
[2416.62, 2432.4, 2414.4, 2443.03],
[2441.91, 2421.56, 2415.43, 2444.8],
[2420.26, 2382.91, 2373.53, 2427.07],
[2383.49, 2397.18, 2370.61, 2397.94],
[2378.82, 2325.95, 2309.17, 2378.82],
[2322.94, 2314.16, 2308.76, 2330.88],
[2320.62, 2325.82, 2315.01, 2338.78],
[2313.74, 2293.34, 2289.89, 2340.71],
[2297.77, 2313.22, 2292.03, 2324.63],
[2322.32, 2365.59, 2308.92, 2366.16],
[2364.54, 2359.51, 2330.86, 2369.65],
[2332.08, 2273.4, 2259.25, 2333.54],
[2274.81, 2326.31, 2270.1, 2328.14],
[2333.61, 2347.18, 2321.6, 2351.44],
[2340.44, 2324.29, 2304.27, 2352.02],
[2326.42, 2318.61, 2314.59, 2333.67],
[2314.68, 2310.59, 2296.58, 2320.96],
[2309.16, 2286.6, 2264.83, 2333.29],
[2282.17, 2263.97, 2253.25, 2286.33],
[2255.77, 2270.28, 2253.31, 2276.22],
[2269.31, 2278.4, 2250, 2312.08],
[2267.29, 2240.02, 2239.21, 2276.05],
[2244.26, 2257.43, 2232.02, 2261.31],
[2257.74, 2317.37, 2257.42, 2317.86],
[2318.21, 2324.24, 2311.6, 2330.81],
[2321.4, 2328.28, 2314.97, 2332],
[2334.74, 2326.72, 2319.91, 2344.89],
[2318.58, 2297.67, 2281.12, 2319.99],
[2299.38, 2301.26, 2289, 2323.48],
[2273.55, 2236.3, 2232.91, 2273.55],
[2238.49, 2236.62, 2228.81, 2246.87],
[2229.46, 2234.4, 2227.31, 2243.95],
[2234.9, 2227.74, 2220.44, 2253.42],
[2232.69, 2225.29, 2217.25, 2241.34],
[2196.24, 2211.59, 2180.67, 2212.59],
[2215.47, 2225.77, 2215.47, 2234.73],
[2224.93, 2226.13, 2212.56, 2233.04],
[2236.98, 2219.55, 2217.26, 2242.48],
[2218.09, 2206.78, 2204.44, 2226.26],
[2199.91, 2181.94, 2177.39, 2204.99],
[2169.63, 2194.85, 2165.78, 2196.43],
[2195.03, 2193.8, 2178.47, 2197.51],
[2181.82, 2197.6, 2175.44, 2206.03],
[2201.12, 2244.64, 2200.58, 2250.11],
[2236.4, 2242.17, 2232.26, 2245.12],
[2242.62, 2184.54, 2182.81, 2242.62],
[2187.35, 2218.32, 2184.11, 2226.12],
[2213.19, 2199.31, 2191.85, 2224.63],
[2203.89, 2177.91, 2173.86, 2210.58],
[2170.78, 2174.12, 2161.14, 2179.65],
[2179.05, 2205.5, 2179.05, 2222.81],
[2212.5, 2231.17, 2212.5, 2236.07],
[2227.86, 2235.57, 2219.44, 2240.26],
[2242.39, 2246.3, 2235.42, 2255.21],
[2246.96, 2232.97, 2221.38, 2247.86],
[2228.82, 2246.83, 2225.81, 2247.67],
[2247.68, 2241.92, 2231.36, 2250.85],
[2238.9, 2217.01, 2205.87, 2239.93],
[2217.09, 2224.8, 2213.58, 2225.19],
[2221.34, 2251.81, 2210.77, 2252.87],
[2249.81, 2282.87, 2248.41, 2288.09],
[2286.33, 2299.99, 2281.9, 2309.39],
[2297.11, 2305.11, 2290.12, 2305.3],
[2303.75, 2302.4, 2292.43, 2314.18],
[2293.81, 2275.67, 2274.1, 2304.95],
[2281.45, 2288.53, 2270.25, 2292.59],
[2286.66, 2293.08, 2283.94, 2301.7],
[2293.4, 2321.32, 2281.47, 2322.1],
[2323.54, 2324.02, 2321.17, 2334.33],
[2316.25, 2317.75, 2310.49, 2325.72],
[2320.74, 2300.59, 2299.37, 2325.53],
[2300.21, 2299.25, 2294.11, 2313.43],
[2297.1, 2272.42, 2264.76, 2297.1],
[2270.71, 2270.93, 2260.87, 2276.86],
[2264.43, 2242.11, 2240.07, 2266.69],
[2242.26, 2210.9, 2205.07, 2250.63],
[2190.1, 2148.35, 2126.22, 2190.1]
]
}]
},
"CandleColumn": {
"categories": [
"2013/1/24", "2013/1/25", "2013/1/28", "2013/1/29", "2013/1/30",
"2013/1/31", "2013/2/1", "2013/2/4", "2013/2/5", "2013/2/6",
"2013/2/7", "2013/2/8", "2013/2/18", "2013/2/19", "2013/2/20",
"2013/2/21", "2013/2/22", "2013/2/25", "2013/2/26", "2013/2/27",
"2013/2/28", "2013/3/1", "2013/3/4", "2013/3/5", "2013/3/6",
"2013/3/7", "2013/3/8", "2013/3/11", "2013/3/12", "2013/3/13",
"2013/3/14", "2013/3/15", "2013/3/18", "2013/3/19", "2013/3/20",
"2013/3/21", "2013/3/22", "2013/3/25", "2013/3/26", "2013/3/27",
"2013/3/28", "2013/3/29", "2013/4/1", "2013/4/2", "2013/4/3",
"2013/4/8", "2013/4/9", "2013/4/10", "2013/4/11", "2013/4/12",
"2013/4/15", "2013/4/16", "2013/4/17", "2013/4/18", "2013/4/19",
"2013/4/22", "2013/4/23", "2013/4/24", "2013/4/25", "2013/4/26",
"2013/5/2", "2013/5/3", "2013/5/6", "2013/5/7", "2013/5/8",
"2013/5/9", "2013/5/10", "2013/5/13", "2013/5/14", "2013/5/15",
"2013/5/16", "2013/5/17", "2013/5/20", "2013/5/21", "2013/5/22",
"2013/5/23", "2013/5/24", "2013/5/27", "2013/5/28", "2013/5/29",
"2013/5/30", "2013/5/31", "2013/6/3", "2013/6/4", "2013/6/5",
"2013/6/6", "2013/6/7", "2013/6/13"
],
"series": [{
"name": "成交量1",
"data": [15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20,
45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20,
45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20,
45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20,
45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45
]
}]
},
"tips": "【开源不易、改造不易、哪(拿)来简单】uCharts将始终坚持开源,为您提供最便捷的高性能图表工具!"
}
}
\ No newline at end of file
... ...
export default [
[//0
[//0.0
"opts | Object | | ",
"opts.$this | Object | required | this实例组件内使用图表,必须传入this实例 ",
"opts.canvasId | String | required | 页面组件canvas-id,支付宝中为id ",
"opts.width | Number | required | canvas宽度,单位为px,支付宝高分屏需要乘像素比 ",
"opts.height | Number | required | canvas高度,单位为px,支付宝高分屏需要乘像素比 ",
"opts.type | String | required | 图表类型,可选值为pie、 line、 column、 area、 ring、 radar、 arcbar、 gauge、 candle、 bar、 mix ",
"opts.pixelRatio | Number | required | 像素比,默认为1,非H5端引用无需设置 ",
"opts.rotate | Boolean | 默认false | 横屏模式,默认为false ",
"opts.rotateLock | Boolean | 默认false | 锁定横屏模式,如果在支付宝和百度小程序中使用横屏模式,请赋值true,否则每次都会旋转90度。跨端使用通过uni-app的条件编译来赋值 ",
"opts.fontSize | Number | 默认13px | 全局默认字体大小(可选,单位为px,默认13px)高分屏不必乘像素比,自动根据pixelRatio计算 ",
"opts.background | String | | canvas背景颜色(如果页面背景颜色不是白色请设置为页面的背景颜色,默认#ffffff) ",
"opts.enableScroll | Boolean | 默认false | 是否开启图表可拖拽滚动 默认false 支持line、area、 column、 candle图表类型(需配合绑定@touchstart、 @touchmove、 @touchend方法) ",
"opts.enableMarkLine | Boolean | 默认false | 是否显示辅助线 默认false 支持line、 area、 column、 candle图表类型 ",
"opts.animation | Boolean | 默认为 true | 是否动画展示 ",
"opts.legend | Boolen | 默认为 true | 图例设置,是否显示图表下方各类别的标识 ",
"opts.dataLabel | Boolean | 默认为 true | 是否在图表中显示数据标签内容值 ",
"opts.dataPointShape | Boolean | 默认为 true | 是否在图表中显示数据点图形标识 ",
"opts.disablePieStroke | Boolean | 默认为 false | 不绘制饼图(圆环图)各区块的白色分割线`即将迁移至扩展配置中` "
],[//0.1
"opts.categories | Array | required | 数据类别(饼图、圆环图不需要) ",
"opts.categories.value | Number | | 仅仪表盘有效,定义仪表盘分段值 ",
"opts.categories.color | String | | 仅仪表盘有效,定义仪表盘分段背景颜色 ",
"opts.series | Array | required | 数据列表 ",
"opts.series.data | Array | required | (饼图、圆环图为Number) 数据,如果传入null图表该处出现断点 ",
"opts.series.data.value | Number | | 仅针对柱状图有效,主要作用为柱状图自定义颜色 ",
"opts.series.data.color | String | | 仅针对柱状图有效,主要作用为柱状图自定义颜色 ",
"opts.series.color | String | | 例如#7cb5ec 不传入则使用系统默认配色方案 ",
"opts.series.textColor | String | | 控制dataLabel颜色,例如#666666 不传入则使用系统默认配色方案 ",
"opts.series.name | String | | 数据名称 ",
"opts.series.type | String | | `混合图表`图形展示方式,有效值为point、line、column详细使用方法见demo ",
"opts.series.disableLegend | String | 默认false | `混合图表`中禁止显示ToolTip图例,默认false即默认显示该类别图例",
"opts.series.style | String | 默认straight | 暂时定义为`混合图表折线图样式`,有效值为`curve`曲线,`straight`直线 ",
"opts.series.shape | String | 默认为 circle | 图例样式,有效值为diamond:◇, circle:○, triangle:△, rect:□ ",
"opts.series.format | Function | | 自定义显示数据内容 "
],[//0.2
"opts.title | Object | | 适用于`ring`、`arcbar`、`gauge` ",
"opts.title.name| String | | 标题内容 ",
"opts.title.fontSize | Number | | 标题字体大小(可选,单位为px) ",
"opts.title.color | String | | 标题颜色(可选) ",
"opts.title.offsetX | Number | 默认0px | 标题横向位置偏移量,单位px,默认0 ",
"opts.title.offsetY | Number | 默认0px | 标题纵向位置偏移量,单位px,默认0 ",
"opts.subtitle | Object | | 适用于`ring`、`arcbar`、`gauge` ",
"opts.subtitle.name | String | | 副标题内容 ",
"opts.subtitle.offsetX | Number | 默认0px | 副标题横向位置偏移量,单位px,默认0 ",
"opts.subtitle.offsetY | Number | 默认0px | 副标题横向位置偏移量,单位px,默认0 ",
"opts.subtitle.fontSize | Number | | 副标题字体大小(可选,单位为px) ",
"opts.subtitle.color | String | | 副标题颜色(可选) "
],[//0.3
"opts.xAxis | Object | | X轴配置 ",
"opts.xAxis.rotateLabel | Boolean | 默认为 false | X轴刻度(数值)标签是否旋转(仅在文案超过单屏宽度时有效) ",
"opts.xAxis.itemCount | Number | 默认为 5 | X轴可见区域`数据数量`(即X轴数据密度),配合拖拽滚动使用(即仅在启用enableScroll时有效) ",
"opts.xAxis.labelCount | Number | | X轴可见区域`标签数量`(即X轴数刻度标签单屏幕限制显示的数量)",
"opts.xAxis.scrollShow | Boolean | 默认为 false | 是否显示滚动条,配合拖拽滚动使用(即仅在启用enableScroll时有效) ",
"opts.xAxis.scrollAlign | String | 默认为 left | 滚动条初始位置,left为数据整体左对齐,right为右对齐 ",
"opts.xAxis.scrollBackgroundColor | String | 默认为 #EFEBEF | X轴滚动条背景颜色,配合拖拽滚动使用(即仅在启用enableScroll时有效) ",
"opts.xAxis.scrollColor | String | 默认为 #A6A6A6 | X轴滚动条颜色,配合拖拽滚动使用(即仅在启用enableScroll时有效) ",
"opts.xAxis.disabled | Boolean | 默认为 false | 不绘制X轴 ",
"opts.xAxis.disableGrid | Boolean | 默认为 false | 不绘制X轴网格(即默认绘制网格) ",
"opts.xAxis.type | String | 默认为calibration | X轴网格样式,可选值calibration(刻度)、grid(网格) ",
"opts.xAxis.gridColor | String | 默认为 #cccccc | X轴网格颜色 例如#7cb5ec ",
"opts.xAxis.gridType | String | 默认为 solid | X轴网格线型 'solid'为实线、'dash'为虚线\` ",
"opts.xAxis.dashLength | Number | 默认为 4px | X轴网格为虚线时,单段虚线长度 ",
"opts.xAxis.fontColor | String | 默认为 #666666 | X轴数据点颜色 例如#7cb5ec ",
"opts.yAxis | Object | | Y轴配置 ",
"opts.yAxis.format | Function | | 自定义Y轴文案显示 ",
"opts.yAxis.min | Number | | Y轴起始值 ",
"opts.yAxis.max | Number | | Y轴终止值 ",
"opts.yAxis.title | String | | Y轴title ",
"opts.yAxis.disabled | Boolean | 默认为 false | 不绘制Y轴 ",
"opts.yAxis.disableGrid | Boolean | 默认为 false | 不绘制Y轴网格(即默认绘制网格) ",
"opts.yAxis.splitNumber | Number | 默认5 | Y轴网格数量 ",
"opts.yAxis.gridType | String | 默认为 solid | Y轴网格线型 'solid'为实线、'dash'为虚线 ",
"opts.yAxis.dashLength | Number | 默认为 4px | Y轴网格为虚线时,单段虚线长度 ",
"opts.yAxis.gridColor | String | 默认为 #cccccc | Y轴网格颜色 例如#7cb5ec ",
"opts.yAxis.fontColor | String | 默认为 #666666 | Y轴数据点颜色 例如#7cb5ec ",
"opts.yAxis.titleFontColor | String | 默认为 #333333 | Y轴title颜色 例如#7cb5ec "
]
],[//1
[//1.0
"opts.extra.arcbar| Object | |圆弧进度图相关配置",
"opts.extra.arcbar.type| String | 默认default |圆弧进度图样式,default为半圆弧,circle为整圆",
"opts.extra.arcbar.width| Number | 默认12px |圆弧进度图弧线宽度,单位为px",
"opts.extra.arcbar.backgroundColor| String | 默认#E9E9E9 |圆弧进度图背景颜色",
"opts.extra.arcbar.startAngle| Number | 默认0.75 |圆弧进度图起始角度,0-2之间,0为3点钟位置,0.5为6点钟,1为9点钟,1.5为12点钟",
"opts.extra.arcbar.endAngle| Number | 默认0.25 |圆弧进度图结束角度,0-2之间,0为3点钟位置,0.5为6点钟,1为9点钟,1.5为12点钟"
],[//1.1
"opts.extra.gauge| Object | |仪表盘相关配置",
"opts.extra.gauge.type| String | 默认default |仪表盘样式,default为百度样式,`其他样式开发中`",
"opts.extra.gauge.width| Number | 默认15px |仪表盘坐标轴(指示盘)线宽度,单位为px",
"opts.extra.gauge.labelColor| String | 默认#666666|仪表盘刻度尺标签文字颜色",
"opts.extra.gauge.startAngle| Number | 默认0.75 |仪表盘起始角度,0-2之间,0为3点钟位置,0.5为6点钟,1为9点钟,1.5为12点钟",
"opts.extra.gauge.endAngle| Number | 默认0.25 |仪表盘结束角度,0-2之间,0为3点钟位置,0.5为6点钟,1为9点钟,1.5为12点钟",
"opts.extra.gauge.startNumber| Number | 默认0 |仪表盘起始数值",
"opts.extra.gauge.endNumber| Number | 默认100 |仪表盘结束数值",
"opts.extra.gauge.splitLine| Object | |仪表盘刻度线配置",
"opts.extra.gauge.splitLine.fixRadius| Number | 默认0 |仪表盘刻度线径向偏移量",
"opts.extra.gauge.splitLine.splitNumber| Number | 默认10 |仪表盘刻度线分段总数量",
"opts.extra.gauge.splitLine.width| Number | 默认15px |仪表盘分割线长度",
"opts.extra.gauge.splitLine.color| String | 默认#FFFFFF |仪表盘分割线颜色",
"opts.extra.gauge.splitLine.childNumber| Number | 默认5 |仪表盘子刻度线数量",
"opts.extra.gauge.splitLine.childWidth| Number | 默认5px |仪表盘子刻度线长度",
"opts.extra.gauge.pointer| Object | |仪表盘指针配置",
"opts.extra.gauge.pointer.width| Number | 默认15px |仪表盘指针宽度",
"opts.extra.gauge.pointer.color| String | 默认auto |仪表盘指针颜色,定义为auto时,随仪表盘背景颜色改变,或者可以指定颜色例如#7cb5ec"
],[//1.2
"opts.extra.radar| Object | |雷达图相关配置",
"opts.extra.radar.max| Number|默认为 series |data的最大值,数据区间最大值,用于调整数据显示的比例",
"opts.extra.radar.labelColor |String|默认为 #666666|各项标识文案的颜色",
"opts.extra.radar.gridColor |String| 默认为 #cccccc| 雷达图网格颜色"
],[//1.3
"opts.extra.column| Object | |柱状图相关配置",
"opts.extra.column.type| Object | 默认group |柱状图类型:group分组柱状图,stack为堆叠柱状图(未完成开发中),meter为温度计式图",
"opts.extra.column.width |Number| | 柱状图每项的图形宽度,单位为px",
"opts.extra.column.meter |Object | | 温度计式图配置项",
"opts.extra.column.meter.border |Number| | 边框宽度,单位为px,默认1px",
"opts.extra.column.meter.fillColor| String | 默认#FFFFFF |空余填充颜色"
],[//1.4
"opts.extra.pie| Object| | 饼图、圆环图相关配置",
"opts.extra.pie.activeOpacity | Number | required |启用Tooltip点击时,突出部分的透明度,默认0.5 ",
"opts.extra.pie.offsetAngle| Number| 默认为0| 起始角度偏移度数,顺时针方向,起点为3点钟位置(比如要设置起点为12点钟位置,即逆时针偏移90度,传入-90即可)",
"opts.extra.pie.lableWidth| Number | required |数据标签到饼图外圆连线的长度,必填参数,否则报错,单位为px",
"opts.extra.pie.ringWidth| Number | |ringChart圆环宽度,单位为px"
],[//1.4.1
"opts.extra.rose| Object| | 玫瑰图相关配置",
"opts.extra.rose.type | String | 默认area |玫瑰图模式,可选值`area`面积模式,`radius`半径模式",
"opts.extra.rose.minRadius | Number | 默认为图形半径的50% | 最小半径值 ",
"opts.extra.rose.activeOpacity | Number | required |启用Tooltip点击时,突出部分的透明度,默认0.5 ",
"opts.extra.rose.offsetAngle| Number| 默认为0| 起始角度偏移度数,顺时针方向,起点为3点钟位置(比如要设置起点为12点钟位置,即逆时针偏移90度,传入-90即可)",
"opts.extra.rose.lableWidth| Number | required |数据标签到饼图外圆连线的长度,必填参数,否则报错,单位为px"
],[//1.5
"opts.extra.line| Object | | 折线图配置 ",
"opts.extra.line.type | String| 默认straight | 可选值:curve曲线,straight直线 ",
"opts.extra.line.width| Number| 默认2px | 折线宽度 "
],[//1.6
"opts.extra.area| Object | | 区域图配置 ",
"opts.extra.area.type | String| 默认straight | 可选值:curve曲线,straight直线 ",
"opts.extra.area.opacity| Number| 默认0.2 | 区域图透明度 ",
"opts.extra.area.addLine | Boolean | 默认false | 是否叠加相应的折线 ",
"opts.extra.area.width| Number| 默认2px | 折线宽度 "
],[//1.7
"opts.extra.candle| Object | |K线图相关配置",
"opts.extra.candle.color| Object | |K线图颜色配置",
"opts.extra.candle.color.upLine| String | 默认#f04864 |K线图为涨时线颜色",
"opts.extra.candle.color.upFill| String | 默认#f04864 |K线图为涨时填充颜色",
"opts.extra.candle.color.downLine| String | 默认#2fc25b |K线图为跌时线颜色",
"opts.extra.candle.color.downFill| String | 默认#2fc25b |K线图为跌时填充颜色",
"opts.extra.candle.average| Object | |均线设置",
"opts.extra.candle.average.show | Boolean | 默认false |是否显示均线",
"opts.extra.candle.average.name | `Array` | |均线名称(例如['MA5','MA20'])用于下方图例显示",
"opts.extra.candle.average.day | `Array` | |均线单位日期(例如[5,20]为显示5日及20日均线)",
"opts.extra.candle.average.color | `Array` | |均线颜色,例如['#1890ff', '#2fc25b']"
],[//1.8
"opts.extra.bar| Object | |条状图相关配置`开发中`",
"opts.extra.bar.type| Object | 默认group |条状图类型:`group`分组条状图,`stack`为堆叠条状图`开发中`",
"opts.extra.bar.width |Number| | 条状图每项的图形宽度,单位为px`开发中`"
],[//1.9
"opts.extra.markLine |Object | | 在柱状图、折线图、区域图、K线图中额外增加水平直线,仅在`opts.enableMarkLine`为true时显示",
"opts.extra.markLine.type |String | 默认为 solid| 线型 'solid'为实线、'dash'为虚线",
"opts.extra.markLine.dashLength |Number | 默认为 4px | 单段虚线长度 ",
"opts.extra.markLine.data |`Array` | | 辅助线数据,请传入`数组`类型,支持多条辅助线",
"opts.extra.markLine.data.value |Number | | 辅助线数值",
"opts.extra.markLine.data.color |String | 默认为 #| 辅助线颜色",
"opts.extra.markLine.data.label |Boolean| 默认为 false | 是否显示数据标签",
"opts.extra.markLine.data.labelBgColor |String | 默认为# | 数据标签背景颜色 ",
"opts.extra.markLine.data.labelBgOpacity |String | 默认为# | 数据标签背景颜色透明度 ",
"opts.extra.markLine.data.labelAlign |String | 默认为left | 数据标签显示位置,有效值left和right "
],[//1.10
"opts.extra.tooltip |Object | | ToolTip设置",
"opts.extra.tooltip.bgColor| String | 默认#000000 | ToolTip背景颜色",
"opts.extra.tooltip.bgOpacity | Number | 默认0.7 | ToolTip背景颜色透明度",
"opts.extra.tooltip.gridType | String | 默认为 solid | 分割线线型 'solid'为实线、'dash'为虚线 ",
"opts.extra.tooltip.dashLength | Number | 默认为 4px | 分割线为虚线时,单段虚线长度 ",
"opts.extra.tooltip.gridColor | String | 默认为 # | 分割线颜色 ",
"opts.extra.tooltip.fontColor | String | 默认为 #FFFFFF| 文字颜色 例如#7cb5ec ",
"opts.extra.tooltip.horizentalLine| Boolean| 默认为 false| 是否显示水平横线 ",
"opts.extra.tooltip.xAxisLabel |Boolean| 默认为 false | 是否显示数据标签",
"opts.extra.tooltip.yAxisLabel |Boolean| 默认为 false | 是否显示数据标签",
"opts.extra.tooltip.labelBgColor |String | 默认为#000000 | 数据标签背景颜色 ",
"opts.extra.tooltip.labelBgOpacity |Number | 默认为0.7 | 数据标签背景颜色透明度 ",
"opts.extra.tooltip.labelFontColor |String | 默认为# | 数据标签文字颜色 ",
"opts.extra.tooltip.activeBgColor |String |默认为#000000 | 仅柱状图类适用,当前点击柱状图的背景颜色 ",
"opts.extra.tooltip.activeBgOpacity |Number |默认0.08 | 仅柱状图类适用,当前点击柱状图的背景颜色透明度 "
],[//1.11
"opts.extra.legendTextColor |String | 默认为 #cccccc | 图例文案颜色 例如#7cb5ec`后期将变更为opts.legend.textColor迁移到基础配置里`",
"opts.extra.touchMoveLimit |Number | 默认为20 | 图表拖拽时,每秒重新渲染的帧数`用于图表拖拽卡顿`"
]
],[//2
[//2.0
" updateData(data) | Function | | 例如LineA.updateData({data}) ",
"data | Object| | 更新的数据 ",
"data.categories| Array | 当前实例categories | 同opts.categories ",
"data.series| Array | 当前实例series | 同opts.series",
"data.title| Array | 当前实例title | 同opts.title",
"data.subtitle| Array | 当前实例subtitle | 同opts.subtitle",
"data.scrollPosition| String | current | 开启图表拖拽后,更新图表后图表时,滚动条的偏移距离,可选值`left`更新后强制左对齐;`right`更新后强制右对齐;`current`更新后保持当前偏移距离",
" data.animation | Boolean | 当前实例animation | 是否动画展示 "
],[//2.1
"stopAnimation() | | | 停止当前正在进行的动画效果,直接展示渲染的最终结果"
],[//2.2
"addEventListener(type, listener) | | | 添加事件监听,type: String事件类型,listener: function 处理方法"
],[//2.3
"getCurrentDataIndex(e) | | | 获取图表中点击时的数据序列编号(-1表示未找到对应的数据区域), e: Object微信小程序标准事件,需要手动的去绑定touch事件,具体可参考wx-charts-demo中column图示例"
],[//2.4
"showToolTip(e, options?) | | | 图表中展示数据详细内容(目前仅支持line和area图表类型),e: Object微信小程序标准事件,options: Object可选,tooltip的自定义配置,支持option.background,默认为#000000; option.format, function类型,接受两个传入的参数,seriesItem(Object, 包括seriesItem.name以及seriesItem.data)和category,可自定义tooltip显示内容。具体可参考ucharts-demo中line图示例"
],[//2.5
"scrollStart(e), scroll(e),scrollEnd(e) | | | 设置支持图表拖拽系列事件(支持line, area, column),具体参考wx-charts-demo中ScrollLine图示例"
],[//2.6
"zoom(val) | | | 启用滚动条时,放大或缩小屏幕范围内数据数量。"
],[//2.7
"renderComplete | | | 图表渲染完成(如果有动画效果,则动画效果完成时触发)"
]
]
]
... ...
page {
background: #F4F5F6;
width: 750upx;
overflow-x: hidden;
}
.qiun-padding {
padding: 2%;
width: 96%;
}
.qiun-wrap {
display: flex;
flex-wrap: wrap;
}
.qiun-rows {
display: flex;
flex-direction: row !important;
}
.qiun-columns {
display: flex;
flex-direction: column !important;
}
.qiun-common-mt {
margin-top: 10upx;
}
.qiun-common-border-bottom {
border-bottom: 1px solid #E9E9E9;
}
.qiun-bg-white {
background: #FFFFFF;
}
.qiun-title-bar {
width: 96%;
padding: 10upx 2%;
flex-wrap: nowrap;
}
.qiun-title-dot-light {
border-left: 10upx solid #0ea391;
padding-left: 10upx;
font-size: 32upx;
color: #000000
}
.qiun-textarea {
height: 400upx;
font-size: 34upx;
box-sizing: border-box;
line-height: 50upx;
width: 100%;
background-color: #FFFFFF;
}
.qiun-text-tips {
font-size: 28upx;
color: #dc2626;
line-height: 40upx;
padding: 6upx;
}
.qiun-button {
background: #2fc25b;
color: #FFFFFF;
margin: 20upx;
}
/* 通用样式 */
.qiun-charts {
width: 750upx;
height: 500upx;
background-color: #FFFFFF;
}
.charts {
width: 750upx;
height: 500upx;
background-color: #FFFFFF;
}
/* 横屏样式 */
.qiun-charts-rotate {
width: 700upx;
height: 1100upx;
background-color: #FFFFFF;
padding: 25upx;
}
.charts-rotate {
width: 700upx;
height: 1100upx;
background-color: #FFFFFF;
}
/* 圆弧进度样式 */
.qiun-charts3 {
width: 750upx;
height: 250upx;
background-color: #FFFFFF;
position: relative;
}
.charts3 {
position: absolute;
width: 250upx;
height: 250upx;
background-color: #FFFFFF;
}
... ...
<template>
<canvas v-if="canvasId" :id="canvasId" :canvasId="canvasId" :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"
@touchstart="touchStart" @touchmove="touchMove" @touchend="touchEnd" @error="error">
</canvas>
</template>
<script>
import uCharts from './u-charts.js';
var canvases = {};
export default {
props: {
chartType: {
required: true,
type: String,
default: 'column'
},
opts: {
required: true,
type: Object,
default () {
return null;
},
},
canvasId: {
type: String,
default: 'u-canvas',
},
cWidth: {
default: 375,
},
cHeight: {
default: 250,
},
pixelRatio: {
type: Number,
default: 1,
},
},
mounted() {
this.init();
},
methods: {
init() {
switch (this.chartType) {
case 'column':
this.initColumnChart();
break;
case 'line':
this.initLineChart();
break;
default:
break;
}
},
initColumnChart() {
canvases[this.canvasId] = new uCharts({
$this: this,
canvasId: this.canvasId,
type: 'column',
legend: true,
fontSize: 11,
background: '#FFFFFF',
pixelRatio: this.pixelRatio,
animation: true,
categories: this.opts.categories,
series: this.opts.series,
enableScroll: true,
xAxis: {
disableGrid: true,
itemCount: 4,
scrollShow: true
},
yAxis: {
//disabled:true
},
dataLabel: true,
width: this.cWidth * this.pixelRatio,
height: this.cHeight * this.pixelRatio,
extra: {
column: {
type: 'group',
}
}
});
},
initLineChart() {
canvases[this.canvasId] = new uCharts({
$this: this,
canvasId: this.canvasId,
type: 'line',
fontSize: 11,
legend: true,
dataLabel: false,
dataPointShape: true,
background: '#FFFFFF',
pixelRatio: this.pixelRatio,
categories: this.opts.categories,
series: this.opts.series,
animation: true,
enableScroll: true,
xAxis: {
type: 'grid',
gridColor: '#CCCCCC',
gridType: 'dash',
dashLength: 8,
itemCount: 4,
scrollShow: true
},
yAxis: {
gridType: 'dash',
gridColor: '#CCCCCC',
dashLength: 8,
splitNumber: 5,
min: 10,
max: 180,
format: (val) => {
return val.toFixed(0) + '元'
}
},
width: this.cWidth * this.pixelRatio,
height: this.cHeight * this.pixelRatio,
extra: {
line: {
type: 'straight'
}
}
});
},
// 这里仅作为示例传入两个参数,cid为canvas-id,newdata为更新的数据,需要更多参数请自行修改
changeData(cid,newdata) {
canvases[cid].updateData({
series: newdata.series,
categories: newdata.categories
});
},
touchStart(e) {
canvases[this.canvasId].showToolTip(e, {
format: function(item, category) {
return category + ' ' + item.name + ':' + item.data
}
});
canvases[this.canvasId].scrollStart(e);
},
touchMove(e) {
canvases[this.canvasId].scroll(e);
},
touchEnd(e) {
canvases[this.canvasId].scrollEnd(e);
},
error(e) {
console.log(e)
}
},
};
</script>
<style scoped>
.charts {
width: 100%;
height: 100%;
flex: 1;
background-color: #FFFFFF;
}
</style>
... ...
此 diff 太大无法显示。
'use strict';var config={yAxisWidth:15,yAxisSplit:5,xAxisHeight:15,xAxisLineHeight:15,legendHeight:15,yAxisTitleWidth:15,padding:[10,10,10,10],pixelRatio:1,rotate:!1,columePadding:3,fontSize:13,dataPointShape:["circle","circle","circle","circle"],colors:["#1890ff","#2fc25b","#facc14","#f04864","#8543e0","#90ed7d"],pieChartLinePadding:15,pieChartTextPadding:5,xAxisTextPadding:3,titleColor:"#333333",titleFontSize:20,subtitleColor:"#999999",subtitleFontSize:15,toolTipPadding:3,toolTipBackground:"#000000",toolTipOpacity:.7,toolTipLineHeight:20,radarLabelTextMargin:15,gaugeLabelTextMargin:15};let assign=function(e,...t){function i(e,t){for(let a in t)e[a]=e[a]&&"[object Object]"===e[a].toString()?i(e[a],t[a]):e[a]=t[a];return e}if(null==e)throw new TypeError("Cannot convert undefined or null to object");return!t||0>=t.length?e:(t.forEach(t=>{e=i(e,t)}),e)};var util={toFixed:function(e,t){return t=t||2,this.isFloat(e)&&(e=e.toFixed(t)),e},isFloat:function(e){return 0!=e%1},approximatelyEqual:function(e,t){return 1e-10>Math.abs(e-t)},isSameSign:function(e,t){var i=Math.abs;return i(e)===e&&i(t)===t||i(e)!==e&&i(t)!==t},isSameXCoordinateArea:function(e,t){return this.isSameSign(e.x,t.x)},isCollision:function(e,t){e.end={},e.end.x=e.start.x+e.width,e.end.y=e.start.y-e.height,t.end={},t.end.x=t.start.x+t.width,t.end.y=t.start.y-t.height;var i=t.start.x>e.end.x||t.end.x<e.start.x||t.end.y>e.start.y||t.start.y<e.end.y;return!i}};function getH5Offset(t){return t.mp={changedTouches:[]},t.mp.changedTouches.push({x:t.offsetX,y:t.offsetY}),t}function hexToRgb(e,t){var i=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,a=e.replace(i,function(e,t,i,a){return t+t+i+i+a+a}),o=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a),n=parseInt(o[1],16),l=parseInt(o[2],16),r=parseInt(o[3],16);return"rgba("+n+","+l+","+r+","+t+")"}function findRange(e,t,i){if(isNaN(e))throw new Error("[uCharts] unvalid series data!");i=i||10,t=t?t:"upper";for(var a=1;1>i;)i*=10,a*=10;for(e="upper"===t?Math.ceil(e*a):Math.floor(e*a);0!=e%i;)"upper"===t?e++:e--;return e/a}function calCandleMA(e,t,i,a){let o=[];for(let n,l=0;l<e.length;l++){n={data:[],name:t[l],color:i[l]};for(let t=0,i=a.length;t<i;t++){if(t<e[l]){n.data.push(null);continue}let i=0;for(let o=0;o<e[l];o++)i+=a[t-o][1];n.data.push(+(i/e[l]).toFixed(3))}o.push(n)}return o}function calValidDistance(e,t,i,a,o){var n=o.width-o.area[1]-o.area[3],l=i.eachSpacing*(o.chartData.xAxisData.xAxisPoints.length-1),r=t;return 0<=t?(r=0,e.event.trigger("scrollLeft")):Math.abs(t)>=l-n&&(r=n-l,e.event.trigger("scrollRight")),r}function isInAngleRange(e,t,i){function a(e){for(;0>e;)e+=2*o;for(;e>2*o;)e-=2*o;return e}var o=Math.PI;return e=a(e),t=a(t),i=a(i),t>i&&(i+=2*o,e<t&&(e+=2*o)),e>=t&&e<=i}function calRotateTranslate(e,t,i){var a=e,o=i-t,n=a+(i-o-a)/1.4142135623730951;n*=-1;return{transX:n,transY:(i-o)*(1.4142135623730951-1)-(i-o-a)/1.4142135623730951}}function createCurveControlPoints(e,t){function i(e,t){return!!(e[t-1]&&e[t+1])&&(e[t].y>=n(e[t-1].y,e[t+1].y)||e[t].y<=o(e[t-1].y,e[t+1].y))}var o=Math.min,n=Math.max,l=.2,a=.2,r=null,s=null,d=null,h=null;if(1>t?(r=e[0].x+(e[1].x-e[0].x)*l,s=e[0].y+(e[1].y-e[0].y)*l):(r=e[t].x+(e[t+1].x-e[t-1].x)*l,s=e[t].y+(e[t+1].y-e[t-1].y)*l),t>e.length-3){var x=e.length-1;d=e[x].x-(e[x].x-e[x-1].x)*a,h=e[x].y-(e[x].y-e[x-1].y)*a}else d=e[t+1].x-(e[t+2].x-e[t].x)*a,h=e[t+1].y-(e[t+2].y-e[t].y)*a;return i(e,t+1)&&(h=e[t+1].y),i(e,t)&&(s=e[t].y),(s>=n(e[t].y,e[t+1].y)||s<=o(e[t].y,e[t+1].y))&&(s=e[t].y),(h>=n(e[t].y,e[t+1].y)||h<=o(e[t].y,e[t+1].y))&&(h=e[t+1].y),{ctrA:{x:r,y:s},ctrB:{x:d,y:h}}}function convertCoordinateOrigin(e,t,i){return{x:i.x+e,y:i.y-t}}function avoidCollision(e,t){if(t)for(;util.isCollision(e,t);)0<e.start.x?e.start.y--:0>e.start.x?e.start.y++:0<e.start.y?e.start.y++:e.start.y--;return e}function fillSeries(e,t,i){var a=0;return e.map(function(e){if(e.color||(e.color=i.colors[a],a=(a+1)%i.colors.length),e.index||(e.index=0),e.type||(e.type=t.type),"undefined"==typeof e.show&&(e.show=!0),e.type||(e.type=t.type),e.pointShape||(e.pointShape="circle"),!e.legendShape)switch(e.type){case"line":e.legendShape="line";break;case"column":e.legendShape="rect";break;case"area":e.legendShape="triangle";break;default:e.legendShape="circle";}return e})}function getDataRange(e,t){var i=0,a=t-e;return i=1e4<=a?1e3:1e3<=a?100:100<=a?10:10<=a?5:1<=a?1:.1<=a?.1:.01<=a?.01:.001<=a?.001:1e-4<=a?1e-4:1e-5<=a?1e-5:1e-6,{minRange:findRange(e,"lower",i),maxRange:findRange(t,"upper",i)}}function measureText(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:config.fontSize;e=e+"";var e=e.split(""),a=0;for(let t,o=0;o<e.length;o++)t=e[o],a+=/[a-zA-Z]/.test(t)?7:/[0-9]/.test(t)?5.5:/\./.test(t)?2.7:/-/.test(t)?3.25:/[\u4e00-\u9fa5]/.test(t)?10:/\(|\)/.test(t)?3.73:/\s/.test(t)?2.5:/%/.test(t)?8:10;return a*t/10}function dataCombine(e){return e.reduce(function(e,t){return(e.data?e.data:e).concat(t.data)},[])}function dataCombineStack(e,t){for(var o=Array(t),a=0;a<o.length;a++)o[a]=0;for(var n=0;n<e.length;n++)for(var a=0;a<o.length;a++)o[a]+=e[n].data[a];return e.reduce(function(e,t){return(e.data?e.data:e).concat(t.data).concat(o)},[])}function getTouches(t,i,a){let e,o;return t.clientX?i.rotate?(o=i.height-t.clientX*i.pixelRatio,e=(t.pageY-a.currentTarget.offsetTop-i.height/i.pixelRatio/2*(i.pixelRatio-1))*i.pixelRatio):(e=t.clientX*i.pixelRatio,o=(t.pageY-a.currentTarget.offsetTop-i.height/i.pixelRatio/2*(i.pixelRatio-1))*i.pixelRatio):i.rotate?(o=i.height-t.x*i.pixelRatio,e=t.y*i.pixelRatio):(e=t.x*i.pixelRatio,o=t.y*i.pixelRatio),{x:e,y:o}}function getSeriesDataItem(e,t){var i=[];for(let a,o=0;o<e.length;o++)if(a=e[o],null!==a.data[t]&&"undefined"!=typeof a.data[t]&&a.show){let e={};e.color=a.color,e.type=a.type,e.style=a.style,e.pointShape=a.pointShape,e.disableLegend=a.disableLegend,e.name=a.name,e.show=a.show,e.data=a.format?a.format(a.data[t]):a.data[t],i.push(e)}return i}function getMaxTextListLength(e){var t=e.map(function(e){return measureText(e)});return Math.max.apply(null,t)}function getRadarCoordinateSeries(e){for(var t=Math.PI,a=[],o=0;o<e;o++)a.push(2*t/e*o);return a.map(function(e){return-1*e+t/2})}function getToolTipData(e,t,a,i){var o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},n=e.map(function(e){let t=[];return t=i?i:e.data,{text:o.format?o.format(e,t[a]):e.name+": "+e.data,color:e.color}}),l=[],r={x:0,y:0};for(let o,n=0;n<t.length;n++)o=t[n],"undefined"!=typeof o[a]&&null!==o[a]&&l.push(o[a]);for(let o,n=0;n<l.length;n++)o=l[n],r.x=Math.round(o.x),r.y+=o.y;return r.y/=l.length,{textList:n,offset:r}}function getMixToolTipData(e,t,a,i){var o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},n=e.map(function(e){return{text:o.format?o.format(e,i[a]):e.name+": "+e.data,color:e.color,disableLegend:!!e.disableLegend}});n=n.filter(function(e){if(!0!==e.disableLegend)return e});var l=[],r={x:0,y:0};for(let o,n=0;n<t.length;n++)o=t[n],"undefined"!=typeof o[a]&&null!==o[a]&&l.push(o[a]);for(let o,n=0;n<l.length;n++)o=l[n],r.x=Math.round(o.x),r.y+=o.y;return r.y/=l.length,{textList:n,offset:r}}function getCandleToolTipData(e,t,a,o,i,n){6<arguments.length&&void 0!==arguments[6]?arguments[6]:{};let l=n.color.upFill,r=n.color.downFill,s=[l,l,r,l];var d=[];let h={text:i[o],color:null};d.push(h),t.map(function(t){0==o&&0>t.data[1]-t.data[0]?s[1]=r:(t.data[0]<e[o-1][1]&&(s[0]=r),t.data[1]<t.data[0]&&(s[1]=r),t.data[2]>e[o-1][1]&&(s[2]=l),t.data[3]<e[o-1][1]&&(s[3]=r));let i={text:"\u5F00\u76D8\uFF1A"+t.data[0],color:s[0]},a={text:"\u6536\u76D8\uFF1A"+t.data[1],color:s[1]},n={text:"\u6700\u4F4E\uFF1A"+t.data[2],color:s[2]},h={text:"\u6700\u9AD8\uFF1A"+t.data[3],color:s[3]};d.push(i,a,n,h)});var x=[],c={x:0,y:0};for(let l,r=0;r<a.length;r++)l=a[r],"undefined"!=typeof l[o]&&null!==l[o]&&x.push(l[o]);return c.x=Math.round(x[0][0].x),{textList:d,offset:c}}function filterSeries(e){let t=[];for(let a=0;a<e.length;a++)!0==e[a].show&&t.push(e[a]);return t}function findCurrentIndex(e,t,i,a){var o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,n=-1,l=0;let r=[];for(let o=0;o<t[0].length;o++)r.push(t[0][o].x);return("line"==i.type||"area"==i.type)&&"justify"==i.xAxis.boundaryGap&&(l=i.chartData.eachSpacing/2),i.categories||(l=0),isInExactChartArea(e,i,a)&&r.forEach(function(t,i){e.x+o+l>t&&(n=i)}),n}function findLegendIndex(e,t){let i=-1;if(isInExactLegendArea(e,t.area)){let a=t.points,o=-1;for(let t,n=0,l=a.length;n<l;n++){t=a[n];for(let a=0;a<t.length;a++){o+=1;let n=t[a].area;if(e.x>n[0]&&e.x<n[2]&&e.y>n[1]&&e.y<n[3]){i=o;break}}}return i}return i}function isInExactLegendArea(e,t){return e.x>t.start.x&&e.x<t.end.x&&e.y>t.start.y&&e.y<t.end.y}function isInExactChartArea(e,t){return e.x<=t.width-t.area[1]+10&&e.x>=t.area[3]-10&&e.y>=t.area[0]&&e.y<=t.height-t.area[2]}function findRadarChartCurrentIndex(e,t,i){var a=Math.PI,o=2*a/i,n=-1;if(isInExactPieChartArea(e,t.center,t.radius)){var l=function(e){return 0>e&&(e+=2*a),e>2*a&&(e-=2*a),e},r=Math.atan2(t.center.y-e.y,e.x-t.center.x);r=-1*r,0>r&&(r+=2*a);var s=t.angleList.map(function(e){return e=l(-1*e),e});s.forEach(function(e,t){var i=l(e-o/2),s=l(e+o/2);s<i&&(s+=2*a),(r>=i&&r<=s||r+2*a>=i&&r+2*a<=s)&&(n=t)})}return n}function findFunnelChartCurrentIndex(e,t){for(var a,o=-1,n=0,l=t.series.length;n<l;n++)if(a=t.series[n],e.x>a.funnelArea[0]&&e.x<a.funnelArea[2]&&e.y>a.funnelArea[1]&&e.y<a.funnelArea[3]){o=n;break}return o}function findWordChartCurrentIndex(e,t){for(var a,o=-1,n=0,l=t.length;n<l;n++)if(a=t[n],e.x>a.area[0]&&e.x<a.area[2]&&e.y>a.area[1]&&e.y<a.area[3]){o=n;break}return o}function findMapChartCurrentIndex(e,t){for(var a,o=-1,n=t.chartData.mapData,l=t.series,r=pointToCoordinate(e.y,e.x,n.bounds,n.scale,n.xoffset,n.yoffset),s=[r.x,r.y],d=0,h=l.length;d<h;d++)if(a=l[d].geometry.coordinates,isPoiWithinPoly(s,a)){o=d;break}return o}function findPieChartCurrentIndex(e,t){var a=-1;if(isInExactPieChartArea(e,t.center,t.radius)){var o=Math.atan2(t.center.y-e.y,e.x-t.center.x);o=-o;for(var n,l=0,r=t.series.length;l<r;l++)if(n=t.series[l],isInAngleRange(o,n._start_,n._start_+2*n._proportion_*Math.PI)){a=l;break}}return a}function isInExactPieChartArea(e,t,i){var a=Math.pow;return a(e.x-t.x,2)+a(e.y-t.y,2)<=a(i,2)}function splitPoints(e){var t=[],i=[];return e.forEach(function(e){null===e?(i.length&&t.push(i),i=[]):i.push(e)}),i.length&&t.push(i),t}function calLegendData(e,t,i,a){var o=Math.max,n=Math.floor;let l={area:{start:{x:0,y:0},end:{x:0,y:0},width:0,height:0,wholeWidth:0,wholeHeight:0},points:[],widthArr:[],heightArr:[]};if(!1===t.legend.show)return a.legendData=l,l;let r=t.legend.padding,s=t.legend.margin,d=t.legend.fontSize,h=15*t.pixelRatio,x=5*t.pixelRatio,c=o(t.legend.lineHeight*t.pixelRatio,d);if("top"==t.legend.position||"bottom"==t.legend.position){let a=[],n=0,p=[],g=[];for(let o=0;o<e.length;o++){let i=e[o],l=h+x+measureText(i.name||"undefined",d)+t.legend.itemGap;n+l>t.width-t.padding[1]-t.padding[3]?(a.push(g),p.push(n-t.legend.itemGap),n=l,g=[i]):(n+=l,g.push(i))}if(g.length){a.push(g),p.push(n-t.legend.itemGap),l.widthArr=p;let e=o.apply(null,p);switch(t.legend.float){case"left":l.area.start.x=t.padding[3],l.area.end.x=t.padding[3]+2*r;break;case"right":l.area.start.x=t.width-t.padding[1]-e-2*r,l.area.end.x=t.width-t.padding[1];break;default:l.area.start.x=(t.width-e)/2-r,l.area.end.x=(t.width+e)/2+r;}l.area.width=e+2*r,l.area.wholeWidth=e+2*r,l.area.height=a.length*c+2*r,l.area.wholeHeight=a.length*c+2*r+2*s,l.points=a}}else{let i=e.length,a=t.height-t.padding[0]-t.padding[2]-2*s-2*r,o=Math.min(n(a/c),i);switch(l.area.height=o*c+2*r,l.area.wholeHeight=o*c+2*r,t.legend.float){case"top":l.area.start.y=t.padding[0]+s,l.area.end.y=t.padding[0]+s+l.area.height;break;case"bottom":l.area.start.y=t.height-t.padding[2]-s-l.area.height,l.area.end.y=t.height-t.padding[2]-s;break;default:l.area.start.y=(t.height-l.area.height)/2,l.area.end.y=(t.height+l.area.height)/2;}let p=0==i%o?i/o:n(i/o+1),g=[];for(let t,a=0;a<p;a++)t=e.slice(a*o,a*o+o),g.push(t);if(l.points=g,g.length){for(let e=0;e<g.length;e++){let i=g[e],a=0;for(let e,o=0;o<i.length;o++)e=h+x+measureText(i[o].name||"undefined",d)+t.legend.itemGap,e>a&&(a=e);l.widthArr.push(a),l.heightArr.push(i.length*c+2*r)}let e=0;for(let t=0;t<l.widthArr.length;t++)e+=l.widthArr[t];l.area.width=e-t.legend.itemGap+2*r,l.area.wholeWidth=l.area.width+r}}switch(t.legend.position){case"top":l.area.start.y=t.padding[0]+s,l.area.end.y=t.padding[0]+s+l.area.height;break;case"bottom":l.area.start.y=t.height-t.padding[2]-l.area.height-s,l.area.end.y=t.height-t.padding[2]-s;break;case"left":l.area.start.x=t.padding[3],l.area.end.x=t.padding[3]+l.area.width;break;case"right":l.area.start.x=t.width-t.padding[1]-l.area.width,l.area.end.x=t.width-t.padding[1];}return a.legendData=l,l}function calCategoriesData(e,t,i,a){var o={angle:0,xAxisHeight:i.xAxisHeight},n=e.map(function(e){return measureText(e,t.xAxis.fontSize||i.fontSize)}),l=Math.max.apply(this,n);return!0==t.xAxis.rotateLabel&&l+2*i.xAxisTextPadding>a&&(o.angle=45*Math.PI/180,o.xAxisHeight=2*i.xAxisTextPadding+l*Math.sin(o.angle)),o}function getXAxisTextList(e,t){var a=Math.min,o=Math.max,n=4<arguments.length&&void 0!==arguments[4]?arguments[4]:-1,l=dataCombine(e),r=[];l=l.filter(function(e){return"object"==typeof e&&null!==e?e.constructor==Array?null!==e:null!==e.value:null!==e}),l.map(function(e){"object"==typeof e?e.constructor==Array?"candle"==t.type?e.map(function(e){r.push(e)}):r.push(e[0]):r.push(e.value):r.push(e)});var s=0,d=0;if(0<r.length&&(s=a.apply(this,r),d=o.apply(this,r)),-1<n?("number"==typeof t.xAxis.data[n].min&&(s=a(t.xAxis.data[n].min,s)),"number"==typeof t.xAxis.data[n].max&&(d=o(t.xAxis.data[n].max,d))):("number"==typeof t.xAxis.min&&(s=a(t.xAxis.min,s)),"number"==typeof t.xAxis.max&&(d=o(t.xAxis.max,d))),s===d){var h=d||10;d+=h}for(var x=getDataRange(s,d),c=x.minRange,p=x.maxRange,g=[],y=(p-c)/t.xAxis.splitNumber,f=0;f<=t.xAxis.splitNumber;f++)g.push(c+y*f);return g}function calXAxisData(e,t,i){var a={angle:0,xAxisHeight:i.xAxisHeight};a.ranges=getXAxisTextList(e,t,i),a.rangesFormat=a.ranges.map(function(e){return e=t.xAxis.format?t.xAxis.format(e):util.toFixed(e,2),e});var o=a.ranges.map(function(e){return e=util.toFixed(e,2),e=t.xAxis.format?t.xAxis.format(+e):e,e});a=Object.assign(a,getXAxisPoints(o,t,i));var n=a.eachSpacing,l=o.map(function(e){return measureText(e)}),r=Math.max.apply(this,l);return r+2*i.xAxisTextPadding>n&&(a.angle=45*Math.PI/180,a.xAxisHeight=2*i.xAxisTextPadding+r*Math.sin(a.angle)),!0===t.xAxis.disabled&&(a.xAxisHeight=0),a}function getRadarDataPoints(e,t,i,a,o){var n=Math.max,l=5<arguments.length&&void 0!==arguments[5]?arguments[5]:1,r=o.extra.radar||{};r.max=r.max||0;var s=n(r.max,n.apply(null,dataCombine(a))),d=[];for(let n=0;n<a.length;n++){let o=a[n],r={};r.color=o.color,r.legendShape=o.legendShape,r.pointShape=o.pointShape,r.data=[],o.data.forEach(function(a,o){let n={};n.angle=e[o],n.proportion=a/s,n.position=convertCoordinateOrigin(i*n.proportion*l*Math.cos(n.angle),i*n.proportion*l*Math.sin(n.angle),t),r.data.push(n)}),d.push(r)}return d}function getPieDataPoints(e,t){var a=2<arguments.length&&arguments[2]!==void 0?arguments[2]:1,o=0,n=0;for(let a,n=0;n<e.length;n++)a=e[n],a.data=null===a.data?0:a.data,o+=a.data;for(let n,l=0;l<e.length;l++)n=e[l],n.data=null===n.data?0:n.data,n._proportion_=0===o?1/e.length*a:n.data/o*a,n._radius_=t;for(let a,o=0;o<e.length;o++)a=e[o],a._start_=n,n+=2*a._proportion_*Math.PI;return e}function getFunnelDataPoints(e,t){var a=2<arguments.length&&arguments[2]!==void 0?arguments[2]:1;e=e.sort(function(e,t){return parseInt(t.data)-parseInt(e.data)});for(let o=0;o<e.length;o++)e[o].radius=e[o].data/e[0].data*t*a,e[o]._proportion_=e[o].data/e[0].data;return e.reverse()}function getRoseDataPoints(e,t,a,o){var n=4<arguments.length&&arguments[4]!==void 0?arguments[4]:1,l=0,r=0,s=[];for(let n,r=0;r<e.length;r++)n=e[r],n.data=null===n.data?0:n.data,l+=n.data,s.push(n.data);var d=Math.min.apply(null,s),h=Math.max.apply(null,s);for(let r,s=0;s<e.length;s++)r=e[s],r.data=null===r.data?0:r.data,0===l||"area"==t?(r._proportion_=r.data/l*n,r._rose_proportion_=1/e.length*n):(r._proportion_=r.data/l*n,r._rose_proportion_=r.data/l*n),r._radius_=a+(o-a)*((r.data-d)/(h-d));for(let n,l=0;l<e.length;l++)n=e[l],n._start_=r,r+=2*n._rose_proportion_*Math.PI;return e}function getArcbarDataPoints(e,t){var a=2<arguments.length&&arguments[2]!==void 0?arguments[2]:1;1==a&&(a=.999999);for(let o,n=0;n<e.length;n++){o=e[n],o.data=null===o.data?0:o.data;let i;i="circle"==t.type?2:t.endAngle<t.startAngle?2+t.endAngle-t.startAngle:t.startAngle-t.endAngle,o._proportion_=i*o.data*a+t.startAngle,2<=o._proportion_&&(o._proportion_%=2)}return e}function getGaugeAxisPoints(e,t,a){let o=t;for(let n=0;n<e.length;n++)e[n].value=null===e[n].value?0:e[n].value,e[n]._startAngle_=o,e[n]._endAngle_=(t-a+1)*e[n].value+t,2<=e[n]._endAngle_&&(e[n]._endAngle_%=2),o=e[n]._endAngle_;return e}function getGaugeDataPoints(e,t,a){let o=3<arguments.length&&arguments[3]!==void 0?arguments[3]:1;for(let n,l=0;l<e.length;l++){if(n=e[l],n.data=null===n.data?0:n.data,"auto"==a.pointer.color){for(let e=0;e<t.length;e++)if(n.data<=t[e].value){n.color=t[e].color;break}}else n.color=a.pointer.color;let i=a.startAngle-a.endAngle+1;n._endAngle_=i*n.data+a.startAngle,n._oldAngle_=a.oldAngle,a.oldAngle<a.endAngle&&(n._oldAngle_+=2),n._proportion_=n.data>=a.oldData?(n._endAngle_-n._oldAngle_)*o+a.oldAngle:n._oldAngle_-(n._oldAngle_-n._endAngle_)*o,2<=n._proportion_&&(n._proportion_%=2)}return e}function getPieTextMaxLength(e){e=getPieDataPoints(e);let t=0;for(let a=0;a<e.length;a++){let i=e[a],o=i.format?i.format(+i._proportion_.toFixed(2)):util.toFixed(100*i._proportion_)+"%";t=Math.max(t,measureText(o))}return t}function fixColumeData(e,t,i,a,o,n){return e.map(function(e){return null===e?null:(e.width=Math.ceil((t-2*o.columePadding)/i),n.extra.column&&n.extra.column.width&&0<+n.extra.column.width&&(e.width=Math.min(e.width,+n.extra.column.width)),0>=e.width&&(e.width=1),e.x+=(a+.5-i/2)*e.width,e)})}function fixColumeMeterData(e,t,i,a,o,n,l){return e.map(function(e){return null===e?null:(e.width=Math.ceil((t-2*o.columePadding)/2),n.extra.column&&n.extra.column.width&&0<+n.extra.column.width&&(e.width=Math.min(e.width,+n.extra.column.width)),0<a&&(e.width-=2*l),e)})}function fixColumeStackData(e,t,i,a,o,n){return e.map(function(e){return null===e?null:(e.width=Math.ceil((t-2*o.columePadding)/2),n.extra.column&&n.extra.column.width&&0<+n.extra.column.width&&(e.width=Math.min(e.width,+n.extra.column.width)),e)})}function getXAxisPoints(e,t){var i=t.width-t.area[1]-t.area[3],a=t.enableScroll?Math.min(t.xAxis.itemCount,e.length):e.length;("line"==t.type||"area"==t.type)&&1<a&&"justify"==t.xAxis.boundaryGap&&(a-=1);var o=i/a,n=[],l=t.area[3],r=t.width-t.area[1];return e.forEach(function(e,t){n.push(l+t*o)}),"justify"!==t.xAxis.boundaryGap&&(!0===t.enableScroll?n.push(l+e.length*o):n.push(r)),{xAxisPoints:n,startX:l,endX:r,eachSpacing:o}}function getCandleDataPoints(e,t,i,a,o,n){var l=Math.round,r=7<arguments.length&&void 0!==arguments[7]?arguments[7]:1,s=[],d=n.height-n.area[0]-n.area[2];return e.forEach(function(e,h){if(null===e)s.push(null);else{var x=[];e.forEach(function(e){var s={x:a[h]+l(o/2)},c=e.value||e,p=d*(c-t)/(i-t);p*=r,s.y=n.height-l(p)-n.area[2],x.push(s)}),s.push(x)}}),s}function getDataPoints(e,t,i,a,o,n){var l=Math.round,r=7<arguments.length&&void 0!==arguments[7]?arguments[7]:1,s="center";("line"==n.type||"area"==n.type)&&(s=n.xAxis.boundaryGap);var d=[],h=n.height-n.area[0]-n.area[2],x=n.width-n.area[1]-n.area[3];return e.forEach(function(e,c){if(null===e)d.push(null);else{var p={color:e.color,x:a[c]},g=e;if("object"==typeof e&&null!==e)if(e.constructor==Array){let t,i,a;t=[].concat(n.chartData.xAxisData.ranges),i=t.shift(),a=t.pop(),g=e[1],p.x=n.area[3]+x*(e[0]-i)/(a-i)}else g=e.value;"center"==s&&(p.x+=l(o/2));var y=h*(g-t)/(i-t);y*=r,p.y=n.height-l(y)-n.area[2],d.push(p)}}),d}function getStackDataPoints(e,t,i,a,o,n,l,r,s){var d=Math.round,h=9<arguments.length&&void 0!==arguments[9]?arguments[9]:1,x=[],c=n.height-n.area[0]-n.area[2];return e.forEach(function(e,l){if(null===e)x.push(null);else{var p={color:e.color,x:a[l]+d(o/2)};if(0<r){var g=0;for(let e=0;e<=r;e++)g+=s[e].data[l];var y=g-e,f=c*(g-t)/(i-t),u=c*(y-t)/(i-t)}else var g=e,f=c*(g-t)/(i-t),u=0;var m=u;f*=h,m*=h,p.y=n.height-d(f)-n.area[2],p.y0=n.height-d(m)-n.area[2],x.push(p)}}),x}function getYAxisTextList(e,t,a,o){var n,l=Math.min,r=Math.max,s=4<arguments.length&&void 0!==arguments[4]?arguments[4]:-1;n="stack"==o?dataCombineStack(e,t.categories.length):dataCombine(e);var d=[];n=n.filter(function(e){return"object"==typeof e&&null!==e?e.constructor==Array?null!==e:null!==e.value:null!==e}),n.map(function(e){"object"==typeof e?e.constructor==Array?"candle"==t.type?e.map(function(e){d.push(e)}):d.push(e[1]):d.push(e.value):d.push(e)});var h=0,x=0;if(0<d.length&&(h=l.apply(this,d),x=r.apply(this,d)),-1<s?("number"==typeof t.yAxis.data[s].min&&(h=l(t.yAxis.data[s].min,h)),"number"==typeof t.yAxis.data[s].max&&(x=r(t.yAxis.data[s].max,x))):("number"==typeof t.yAxis.min&&(h=l(t.yAxis.min,h)),"number"==typeof t.yAxis.max&&(x=r(t.yAxis.max,x))),h===x){var c=x||10;x+=c}for(var p=getDataRange(h,x),g=p.minRange,y=p.maxRange,f=[],u=(y-g)/t.yAxis.splitNumber,m=0;m<=t.yAxis.splitNumber;m++)f.push(g+u*m);return f.reverse()}function calYAxisData(e,t,a){var o=Math.max,n=assign({},{type:""},t.extra.column),l=t.yAxis.data.length,r=Array(l);if(0<l){for(let t=0;t<l;t++){r[t]=[];for(let i=0;i<e.length;i++)e[i].index==t&&r[t].push(e[i])}var s=Array(l),d=Array(l),h=Array(l);for(let e,x=0;x<l;x++){e=t.yAxis.data[x],!0==t.yAxis.disabled&&(e.disabled=!0),s[x]=getYAxisTextList(r[x],t,a,n.type,x);let i=e.fontSize||a.fontSize;h[x]={position:e.position?e.position:"left",width:0},d[x]=s[x].map(function(t){return t=util.toFixed(t,6),t=e.format?e.format(+t):t,h[x].width=o(h[x].width,measureText(t,i)+5),t});let l=e.calibration?4*t.pixelRatio:0;h[x].width+=l+3*t.pixelRatio,!0===e.disabled&&(h[x].width=0)}}else{var s=[,],d=[,],h=[,];s[0]=getYAxisTextList(e,t,a,n.type),h[0]={position:"left",width:0};var i=t.yAxis.fontSize||a.fontSize;d[0]=s[0].map(function(e){return e=util.toFixed(e,6),e=t.yAxis.format?t.yAxis.format(+e):e,h[0].width=o(h[0].width,measureText(e,i)+5),e}),h[0].width+=3*t.pixelRatio,!0===t.yAxis.disabled?(h[0]={position:"left",width:0},t.yAxis.data[0]={disabled:!0}):t.yAxis.data[0]={disabled:!1,position:"left",max:t.yAxis.max,min:t.yAxis.min,format:t.yAxis.format}}return{rangesFormat:d,ranges:s,yAxisWidth:h}}function calTooltipYAxisData(e,t,a){let o=[].concat(a.chartData.yAxisData.ranges),n=a.height-a.area[0]-a.area[2],l=a.area[0],r=[];for(let s=0;s<o.length;s++){let t=o[s].shift(),i=o[s].pop(),d=t-(t-i)*(e-l)/n;d=a.yAxis.data[s].format?a.yAxis.data[s].format(+d):d.toFixed(0),r.push(d+"")}return r}function calMarkLineData(e,t){let a,o,n=t.height-t.area[0]-t.area[2];for(let l=0;l<e.length;l++){e[l].yAxisIndex=e[l].yAxisIndex?e[l].yAxisIndex:0;let i=[].concat(t.chartData.yAxisData.ranges[e[l].yAxisIndex]);a=i.pop(),o=i.shift();let r=n*(e[l].value-a)/(o-a);e[l].y=t.height-Math.round(r)-t.area[2]}return e}function contextRotate(e,t){var i=Math.PI;!0===t.rotateLock?!0!==t._rotate_&&(e.translate(t.height,0),e.rotate(90*i/180),t._rotate_=!0):(e.translate(t.height,0),e.rotate(90*i/180))}function drawPointShape(e,t,i,a,o){a.beginPath(),"hollow"==o.dataPointShapeType?(a.setStrokeStyle(t),a.setFillStyle(o.background),a.setLineWidth(2*o.pixelRatio)):(a.setStrokeStyle("#ffffff"),a.setFillStyle(t),a.setLineWidth(1*o.pixelRatio)),"diamond"===i?e.forEach(function(e){null!==e&&(a.moveTo(e.x,e.y-4.5),a.lineTo(e.x-4.5,e.y),a.lineTo(e.x,e.y+4.5),a.lineTo(e.x+4.5,e.y),a.lineTo(e.x,e.y-4.5))}):"circle"===i?e.forEach(function(e){null!==e&&(a.moveTo(e.x+2.5*o.pixelRatio,e.y),a.arc(e.x,e.y,3*o.pixelRatio,0,2*Math.PI,!1))}):"rect"===i?e.forEach(function(e){null!==e&&(a.moveTo(e.x-3.5,e.y-3.5),a.rect(e.x-3.5,e.y-3.5,7,7))}):"triangle"==i&&e.forEach(function(e){null!==e&&(a.moveTo(e.x,e.y-4.5),a.lineTo(e.x-4.5,e.y+4.5),a.lineTo(e.x+4.5,e.y+4.5),a.lineTo(e.x,e.y-4.5))}),a.closePath(),a.fill(),a.stroke()}function drawRingTitle(e,t,i,a){var o=e.title.fontSize||t.titleFontSize,n=e.subtitle.fontSize||t.subtitleFontSize,l=e.title.name||"",r=e.subtitle.name||"",s=e.title.color||t.titleColor,d=e.subtitle.color||t.subtitleColor,h=l?o:0,x=r?n:0,c=5;if(r){var p=measureText(r,n),g=a.x-p/2+(e.subtitle.offsetX||0),y=a.y+n/2+(e.subtitle.offsetY||0);l&&(y+=(h+c)/2),i.beginPath(),i.setFontSize(n),i.setFillStyle(d),i.fillText(r,g,y),i.closePath(),i.stroke()}if(l){var f=measureText(l,o),u=a.x-f/2+(e.title.offsetX||0),m=a.y+o/2+(e.title.offsetY||0);r&&(m-=(x+c)/2),i.beginPath(),i.setFontSize(o),i.setFillStyle(s),i.fillText(l,u,m),i.closePath(),i.stroke()}}function drawPointText(e,t,i,a){var o=t.data;e.forEach(function(e,n){if(null!==e){a.beginPath(),a.setFontSize(t.textSize||i.fontSize),a.setFillStyle(t.textColor||"#666666");var l=o[n];"object"==typeof o[n]&&null!==o[n]&&(o[n].constructor==Array?l=o[n][1]:l=o[n].value);var r=t.format?t.format(l):l;a.fillText(r+"",e.x-measureText(r,t.textSize||i.fontSize)/2,e.y-4),a.closePath(),a.stroke()}})}function drawGaugeLabel(e,t,i,a,o,n){var l=Math.PI;t-=e.width/2+o.gaugeLabelTextMargin;let r=e.startAngle-e.endAngle+1,s=r/e.splitLine.splitNumber,d=e.endNumber-e.startNumber,h=d/e.splitLine.splitNumber,x=e.startAngle,c=e.startNumber;for(let r=0;r<e.splitLine.splitNumber+1;r++){var p={x:t*Math.cos(x*l),y:t*Math.sin(x*l)},g=e.labelFormat?e.labelFormat(c):c;p.x+=i.x-measureText(g)/2,p.y+=i.y;var y=p.x,f=p.y;n.beginPath(),n.setFontSize(o.fontSize),n.setFillStyle(e.labelColor||"#666666"),n.fillText(g,y,f+o.fontSize/2),n.closePath(),n.stroke(),x+=s,2<=x&&(x%=2),c+=h}}function drawRadarLabel(e,t,i,a,o,n){var l=a.extra.radar||{};t+=o.radarLabelTextMargin,e.forEach(function(e,r){var s={x:t*Math.cos(e),y:t*Math.sin(e)},d=convertCoordinateOrigin(s.x,s.y,i),h=d.x,x=d.y;util.approximatelyEqual(s.x,0)?h-=measureText(a.categories[r]||"")/2:0>s.x&&(h-=measureText(a.categories[r]||"")),n.beginPath(),n.setFontSize(o.fontSize),n.setFillStyle(l.labelColor||"#666666"),n.fillText(a.categories[r]||"",h,x+o.fontSize/2),n.closePath(),n.stroke()})}function drawPieText(e,t,a,o,i,n){var l=Math.cos,r=Math.sin,s=Math.min,d=Math.max,h=Math.PI,x=a.pieChartLinePadding,c=[],p=null,g=e.map(function(e){var t=e.format?e.format(+e._proportion_.toFixed(2)):util.toFixed(100*e._proportion_.toFixed(4))+"%";e._rose_proportion_&&(e._proportion_=e._rose_proportion_);var i=2*h-(e._start_+2*h*e._proportion_/2),a=e.color,o=e._radius_;return{arc:i,text:t,color:a,radius:o,textColor:e.textColor,textSize:e.textSize}});for(let h=0;h<g.length;h++){let e=g[h],t=l(e.arc)*(e.radius+x),i=r(e.arc)*(e.radius+x),o=l(e.arc)*e.radius,n=r(e.arc)*e.radius,y=0<=t?t+a.pieChartTextPadding:t-a.pieChartTextPadding,f=i,u=measureText(e.text,e.textSize||a.fontSize),m=f;p&&util.isSameXCoordinateArea(p.start,{x:y})&&(0<y?m=s(f,p.start.y):0>t?m=d(f,p.start.y):0<f?m=d(f,p.start.y):m=s(f,p.start.y)),0>y&&(y-=u);let S={lineStart:{x:o,y:n},lineEnd:{x:t,y:i},start:{x:y,y:m},width:u,height:a.fontSize,text:e.text,color:e.color,textColor:e.textColor,textSize:e.textSize};p=avoidCollision(S,p),c.push(p)}for(let l=0;l<c.length;l++){let e=c[l],i=convertCoordinateOrigin(e.lineStart.x,e.lineStart.y,n),r=convertCoordinateOrigin(e.lineEnd.x,e.lineEnd.y,n),s=convertCoordinateOrigin(e.start.x,e.start.y,n);o.setLineWidth(1*t.pixelRatio),o.setFontSize(a.fontSize),o.beginPath(),o.setStrokeStyle(e.color),o.setFillStyle(e.color),o.moveTo(i.x,i.y);let d=0>e.start.x?s.x+e.width:s.x,x=0>e.start.x?s.x-5:s.x+5;o.quadraticCurveTo(r.x,r.y,d,s.y),o.moveTo(i.x,i.y),o.stroke(),o.closePath(),o.beginPath(),o.moveTo(s.x+e.width,s.y),o.arc(d,s.y,2,0,2*h),o.closePath(),o.fill(),o.beginPath(),o.setFontSize(e.textSize||a.fontSize),o.setFillStyle(e.textColor||"#666666"),o.fillText(e.text,x,s.y+3),o.closePath(),o.stroke(),o.closePath()}}function drawToolTipSplitLine(e,t,i,a){var o=t.extra.tooltip||{};o.gridType=null==o.gridType?"solid":o.gridType,o.dashLength=null==o.dashLength?4:o.dashLength;var n=t.area[0],l=t.height-t.area[2];if("dash"==o.gridType&&a.setLineDash([o.dashLength,o.dashLength]),a.setStrokeStyle(o.gridColor||"#cccccc"),a.setLineWidth(1*t.pixelRatio),a.beginPath(),a.moveTo(e,n),a.lineTo(e,l),a.stroke(),a.setLineDash([]),o.xAxisLabel){let n=t.categories[t.tooltip.index];a.setFontSize(i.fontSize);let r=measureText(n,i.fontSize),s=e-.5*r,d=l;a.beginPath(),a.setFillStyle(hexToRgb(o.labelBgColor||i.toolTipBackground,o.labelBgOpacity||i.toolTipOpacity)),a.setStrokeStyle(o.labelBgColor||i.toolTipBackground),a.setLineWidth(1*t.pixelRatio),a.rect(s-i.toolTipPadding,d,r+2*i.toolTipPadding,i.fontSize+2*i.toolTipPadding),a.closePath(),a.stroke(),a.fill(),a.beginPath(),a.setFontSize(i.fontSize),a.setFillStyle(o.labelFontColor||i.fontColor),a.fillText(n+"",s,d+i.toolTipPadding+i.fontSize),a.closePath(),a.stroke()}}function drawMarkLine(e,t,a){let o=assign({},{type:"solid",dashLength:4,data:[]},e.extra.markLine),n=e.area[3],l=e.width-e.area[1],r=calMarkLineData(o.data,e);for(let s,d=0;d<r.length;d++)if(s=assign({},{lineColor:"#DE4A42",showLabel:!1,labelFontColor:"#666666",labelBgColor:"#DFE8FF",labelBgOpacity:.8,yAxisIndex:0},r[d]),"dash"==o.type&&a.setLineDash([o.dashLength,o.dashLength]),a.setStrokeStyle(s.lineColor),a.setLineWidth(1*e.pixelRatio),a.beginPath(),a.moveTo(n,s.y),a.lineTo(l,s.y),a.stroke(),a.setLineDash([]),s.showLabel){let i=e.yAxis.format?e.yAxis.format(+s.value):s.value;a.setFontSize(t.fontSize);let o=measureText(i,t.fontSize),n=e.padding[3]+t.yAxisTitleWidth-t.toolTipPadding,l=Math.max(e.area[3],o+2*t.toolTipPadding),r=l-n,d=s.y;a.setFillStyle(hexToRgb(s.labelBgColor,s.labelBgOpacity)),a.setStrokeStyle(s.labelBgColor),a.setLineWidth(1*e.pixelRatio),a.beginPath(),a.rect(n,d-.5*t.fontSize-t.toolTipPadding,r,t.fontSize+2*t.toolTipPadding),a.closePath(),a.stroke(),a.fill(),a.beginPath(),a.setFontSize(t.fontSize),a.setFillStyle(s.labelFontColor),a.fillText(i+"",n+(r-o)/2,d+.5*t.fontSize),a.stroke()}}function drawToolTipHorizentalLine(e,t,a,i){var o=Math.max,n=assign({},{gridType:"solid",dashLength:4},e.extra.tooltip),l=e.area[3],r=e.width-e.area[1];if("dash"==n.gridType&&a.setLineDash([n.dashLength,n.dashLength]),a.setStrokeStyle(n.gridColor||"#cccccc"),a.setLineWidth(1*e.pixelRatio),a.beginPath(),a.moveTo(l,e.tooltip.offset.y),a.lineTo(r,e.tooltip.offset.y),a.stroke(),a.setLineDash([]),n.yAxisLabel){let l=calTooltipYAxisData(e.tooltip.offset.y,e.series,e,t,i),r=e.chartData.yAxisData.yAxisWidth,s=e.area[3],d=e.width-e.area[1];for(let h=0;h<l.length;h++){a.setFontSize(t.fontSize);let i,x,c,p=measureText(l[h],t.fontSize);"left"==r[h].position?(i=s-r[h].width,x=o(i,i+p+2*t.toolTipPadding)):(i=d,x=o(i+r[h].width,i+p+2*t.toolTipPadding)),c=x-i;let g=i+(c-p)/2,y=e.tooltip.offset.y;a.beginPath(),a.setFillStyle(hexToRgb(n.labelBgColor||t.toolTipBackground,n.labelBgOpacity||t.toolTipOpacity)),a.setStrokeStyle(n.labelBgColor||t.toolTipBackground),a.setLineWidth(1*e.pixelRatio),a.rect(i,y-.5*t.fontSize-t.toolTipPadding,c,t.fontSize+2*t.toolTipPadding),a.closePath(),a.stroke(),a.fill(),a.beginPath(),a.setFontSize(t.fontSize),a.setFillStyle(n.labelFontColor||t.fontColor),a.fillText(l[h],g,y+.5*t.fontSize),a.closePath(),a.stroke(),"left"==r[h].position?s-=r[h].width+e.yAxis.padding:d+=r[h].width+e.yAxis.padding}}}function drawToolTipSplitArea(e,t,i,a,o){var n=assign({},{activeBgColor:"#000000",activeBgOpacity:.08},t.extra.tooltip),l=t.area[0],r=t.height-t.area[2];a.beginPath(),a.setFillStyle(hexToRgb(n.activeBgColor,n.activeBgOpacity)),a.rect(e-o/2,l,o,r-l),a.closePath(),a.fill()}function drawToolTip(e,t,i,a,o){var n=Math.round,l=assign({},{showBox:!0,bgColor:"#000000",bgOpacity:.7,fontColor:"#FFFFFF"},i.extra.tooltip),r=4*i.pixelRatio,s=5*i.pixelRatio,d=8*i.pixelRatio,h=!1;("line"==i.type||"area"==i.type||"candle"==i.type||"mix"==i.type)&&drawToolTipSplitLine(i.tooltip.offset.x,i,a,o),t=assign({x:0,y:0},t),t.y-=8*i.pixelRatio;var x=e.map(function(e){return measureText(e.text,a.fontSize)}),c=r+s+4*a.toolTipPadding+Math.max.apply(null,x),p=2*a.toolTipPadding+e.length*a.toolTipLineHeight;!1==l.showBox||(t.x-Math.abs(i._scrollDistance_)+d+c>i.width&&(h=!0),p+t.y>i.height&&(t.y=i.height-p),o.beginPath(),o.setFillStyle(hexToRgb(l.bgColor||a.toolTipBackground,l.bgOpacity||a.toolTipOpacity)),h?(o.moveTo(t.x,t.y+10*i.pixelRatio),o.lineTo(t.x-d,t.y+10*i.pixelRatio-5*i.pixelRatio),o.lineTo(t.x-d,t.y),o.lineTo(t.x-d-n(c),t.y),o.lineTo(t.x-d-n(c),t.y+p),o.lineTo(t.x-d,t.y+p),o.lineTo(t.x-d,t.y+10*i.pixelRatio+5*i.pixelRatio),o.lineTo(t.x,t.y+10*i.pixelRatio)):(o.moveTo(t.x,t.y+10*i.pixelRatio),o.lineTo(t.x+d,t.y+10*i.pixelRatio-5*i.pixelRatio),o.lineTo(t.x+d,t.y),o.lineTo(t.x+d+n(c),t.y),o.lineTo(t.x+d+n(c),t.y+p),o.lineTo(t.x+d,t.y+p),o.lineTo(t.x+d,t.y+10*i.pixelRatio+5*i.pixelRatio),o.lineTo(t.x,t.y+10*i.pixelRatio)),o.closePath(),o.fill(),e.forEach(function(e,i){if(null!==e.color){o.beginPath(),o.setFillStyle(e.color);var n=t.x+d+2*a.toolTipPadding,l=t.y+(a.toolTipLineHeight-a.fontSize)/2+a.toolTipLineHeight*i+a.toolTipPadding+1;h&&(n=t.x-c-d+2*a.toolTipPadding),o.fillRect(n,l,r,a.fontSize),o.closePath()}}),e.forEach(function(e,i){var n=t.x+d+2*a.toolTipPadding+r+s;h&&(n=t.x-c-d+2*a.toolTipPadding+ +r+s);var x=t.y+(a.toolTipLineHeight-a.fontSize)/2+a.toolTipLineHeight*i+a.toolTipPadding;o.beginPath(),o.setFontSize(a.fontSize),o.setFillStyle(l.fontColor),o.fillText(e.text,n,x+a.fontSize),o.closePath(),o.stroke()}))}function drawYAxisTitle(e,t,i,a){var o=i.xAxisHeight+(t.height-i.xAxisHeight-measureText(e))/2;a.save(),a.beginPath(),a.setFontSize(i.fontSize),a.setFillStyle(t.yAxis.titleFontColor||"#333333"),a.translate(0,t.height),a.rotate(-90*Math.PI/180),a.fillText(e,o,t.padding[3]+.5*i.fontSize),a.closePath(),a.stroke(),a.restore()}function drawColumnDataPoints(e,t,i,a){let o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,n=t.chartData.xAxisData,l=n.xAxisPoints,r=n.eachSpacing,s=assign({},{type:"group",width:r/2,meter:{border:4,fillColor:"#FFFFFF"}},t.extra.column),d=[];a.save();let h=-2,x=l.length+2;return t._scrollDistance_&&0!==t._scrollDistance_&&!0===t.enableScroll&&(a.translate(t._scrollDistance_,0),h=Math.floor(-t._scrollDistance_/r)-2,x=h+t.xAxis.itemCount+4),t.tooltip&&t.tooltip.textList&&t.tooltip.textList.length&&1===o&&drawToolTipSplitArea(t.tooltip.offset.x,t,i,a,r),e.forEach(function(n,c){let p,g,y;p=[].concat(t.chartData.yAxisData.ranges[n.index]),g=p.pop(),y=p.shift();var f=n.data;switch(s.type){case"group":var u=getDataPoints(f,g,y,l,r,t,i,o),m=getStackDataPoints(f,g,y,l,r,t,i,c,e,o);d.push(m),u=fixColumeData(u,r,e.length,c,i,t);for(let e,o=0;o<u.length;o++)if(e=u[o],null!==e&&o>h&&o<x){a.beginPath(),a.setStrokeStyle(e.color||n.color),a.setLineWidth(1),a.setFillStyle(e.color||n.color);var S=e.x-e.width/2,T=t.height-e.y-t.area[2];a.moveTo(S-1,e.y),a.lineTo(S+e.width-2,e.y),a.lineTo(S+e.width-2,t.height-t.area[2]),a.lineTo(S,t.height-t.area[2]),a.lineTo(S,e.y),a.closePath(),a.stroke(),a.fill()};break;case"stack":var u=getStackDataPoints(f,g,y,l,r,t,i,c,e,o);d.push(u),u=fixColumeStackData(u,r,e.length,c,i,t,e);for(let e,o=0;o<u.length;o++)if(e=u[o],null!==e&&o>h&&o<x){a.beginPath(),a.setFillStyle(e.color||n.color);var S=e.x-e.width/2+1,T=t.height-e.y-t.area[2],A=t.height-e.y0-t.area[2];0<c&&(T-=A),a.moveTo(S,e.y),a.fillRect(S,e.y,e.width-2,T),a.closePath(),a.fill()};break;case"meter":var u=getDataPoints(f,g,y,l,r,t,i,o);if(d.push(u),u=fixColumeMeterData(u,r,e.length,c,i,t,s.meter.border),0==c){for(let e,o=0;o<u.length;o++)if(e=u[o],null!==e&&o>h&&o<x){a.beginPath(),a.setFillStyle(s.meter.fillColor);var S=e.x-e.width/2,T=t.height-e.y-t.area[2];a.moveTo(S,e.y),a.fillRect(S,e.y,e.width,T),a.closePath(),a.fill(),0<s.meter.border&&(a.beginPath(),a.setStrokeStyle(n.color),a.setLineWidth(s.meter.border*t.pixelRatio),a.moveTo(S+.5*s.meter.border,e.y+T),a.lineTo(S+.5*s.meter.border,e.y+.5*s.meter.border),a.lineTo(S+e.width-.5*s.meter.border,e.y+.5*s.meter.border),a.lineTo(S+e.width-.5*s.meter.border,e.y+T),a.stroke())}}else for(let e,o=0;o<u.length;o++)if(e=u[o],null!==e&&o>h&&o<x){a.beginPath(),a.setFillStyle(e.color||n.color);var S=e.x-e.width/2,T=t.height-e.y-t.area[2];a.moveTo(S,e.y),a.fillRect(S,e.y,e.width,T),a.closePath(),a.fill()}}}),!1!==t.dataLabel&&1===o&&e.forEach(function(n,d){let h,x,c;h=[].concat(t.chartData.yAxisData.ranges[n.index]),x=h.pop(),c=h.shift();var p=n.data;switch(s.type){case"group":var g=getDataPoints(p,x,c,l,r,t,i,o);g=fixColumeData(g,r,e.length,d,i,t),drawPointText(g,n,i,a);break;case"stack":var g=getStackDataPoints(p,x,c,l,r,t,i,d,e,o);drawPointText(g,n,i,a);break;case"meter":var g=getDataPoints(p,x,c,l,r,t,i,o);drawPointText(g,n,i,a);}}),a.restore(),{xAxisPoints:l,calPoints:d,eachSpacing:r}}function drawCandleDataPoints(e,t,a,i,o){var n=5<arguments.length&&void 0!==arguments[5]?arguments[5]:1,l=assign({},{color:{},average:{}},a.extra.candle);l.color=assign({},{upLine:"#f04864",upFill:"#f04864",downLine:"#2fc25b",downFill:"#2fc25b"},l.color),l.average=assign({},{show:!1,name:[],day:[],color:i.colors},l.average),a.extra.candle=l;let r=a.chartData.xAxisData,s=r.xAxisPoints,d=r.eachSpacing,h=[];o.save();let x=-2,c=s.length+2,p=0,g=a.width+d;return a._scrollDistance_&&0!==a._scrollDistance_&&!0===a.enableScroll&&(o.translate(a._scrollDistance_,0),x=Math.floor(-a._scrollDistance_/d)-2,c=x+a.xAxis.itemCount+4,p=-a._scrollDistance_-d+a.area[3],g=p+(a.xAxis.itemCount+4)*d),l.average.show&&t.forEach(function(e){let t,l,r;t=[].concat(a.chartData.yAxisData.ranges[e.index]),l=t.pop(),r=t.shift();var h=e.data,x=getDataPoints(h,l,r,s,d,a,i,n),c=splitPoints(x);for(let t,a=0;a<c.length;a++){if(t=c[a],o.beginPath(),o.setStrokeStyle(e.color),o.setLineWidth(1),1===t.length)o.moveTo(t[0].x,t[0].y),o.arc(t[0].x,t[0].y,1,0,2*Math.PI);else{o.moveTo(t[0].x,t[0].y);let e=0;for(let i,a=0;a<t.length;a++)if(i=t[a],0==e&&i.x>p&&(o.moveTo(i.x,i.y),e=1),0<a&&i.x>p&&i.x<g){var y=createCurveControlPoints(t,a-1);o.bezierCurveTo(y.ctrA.x,y.ctrA.y,y.ctrB.x,y.ctrB.y,i.x,i.y)}o.moveTo(t[0].x,t[0].y)}o.closePath(),o.stroke()}}),e.forEach(function(e){let t,r,p;t=[].concat(a.chartData.yAxisData.ranges[e.index]),r=t.pop(),p=t.shift();var g=e.data,y=getCandleDataPoints(g,r,p,s,d,a,i,n);h.push(y);var f=splitPoints(y);for(let t=0;t<f[0].length;t++)if(t>x&&t<c){let e=f[0][t];o.beginPath(),0<g[t][1]-g[t][0]?(o.setStrokeStyle(l.color.upLine),o.setFillStyle(l.color.upFill),o.setLineWidth(1*a.pixelRatio),o.moveTo(e[3].x,e[3].y),o.lineTo(e[1].x,e[1].y),o.lineTo(e[1].x-d/4,e[1].y),o.lineTo(e[0].x-d/4,e[0].y),o.lineTo(e[0].x,e[0].y),o.lineTo(e[2].x,e[2].y),o.lineTo(e[0].x,e[0].y),o.lineTo(e[0].x+d/4,e[0].y),o.lineTo(e[1].x+d/4,e[1].y),o.lineTo(e[1].x,e[1].y),o.moveTo(e[3].x,e[3].y)):(o.setStrokeStyle(l.color.downLine),o.setFillStyle(l.color.downFill),o.setLineWidth(1*a.pixelRatio),o.moveTo(e[3].x,e[3].y),o.lineTo(e[0].x,e[0].y),o.lineTo(e[0].x-d/4,e[0].y),o.lineTo(e[1].x-d/4,e[1].y),o.lineTo(e[1].x,e[1].y),o.lineTo(e[2].x,e[2].y),o.lineTo(e[1].x,e[1].y),o.lineTo(e[1].x+d/4,e[1].y),o.lineTo(e[0].x+d/4,e[0].y),o.lineTo(e[0].x,e[0].y),o.moveTo(e[3].x,e[3].y)),o.closePath(),o.fill(),o.stroke()}}),o.restore(),{xAxisPoints:s,calPoints:h,eachSpacing:d}}function drawAreaDataPoints(e,t,i,a){var o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,n=assign({},{type:"straight",opacity:.2,addLine:!1,width:2,gradient:!1},t.extra.area);let l=t.chartData.xAxisData,r=l.xAxisPoints,s=l.eachSpacing,d=t.height-t.area[2],h=[];a.save();let x=0,c=t.width+s;return t._scrollDistance_&&0!==t._scrollDistance_&&!0===t.enableScroll&&(a.translate(t._scrollDistance_,0),x=-t._scrollDistance_-s+t.area[3],c=x+(t.xAxis.itemCount+4)*s),e.forEach(function(e){let l,p,g;l=[].concat(t.chartData.yAxisData.ranges[e.index]),p=l.pop(),g=l.shift();let y=e.data,f=getDataPoints(y,p,g,r,s,t,i,o);h.push(f);let u=splitPoints(f);for(let o,l=0;l<u.length;l++){if(o=u[l],a.beginPath(),a.setStrokeStyle(hexToRgb(e.color,n.opacity)),n.gradient){let i=a.createLinearGradient(0,t.area[0],0,t.height-t.area[2]);i.addColorStop("0",hexToRgb(e.color,n.opacity)),i.addColorStop("1.0",hexToRgb("#FFFFFF",.1)),a.setFillStyle(i)}else a.setFillStyle(hexToRgb(e.color,n.opacity));if(a.setLineWidth(n.width*t.pixelRatio),1<o.length){let e=o[0],t=o[o.length-1];a.moveTo(e.x,e.y);let i=0;if("curve"===n.type){for(let e,t=0;t<o.length;t++)if(e=o[t],0==i&&e.x>x&&(a.moveTo(e.x,e.y),i=1),0<t&&e.x>x&&e.x<c){let i=createCurveControlPoints(o,t-1);a.bezierCurveTo(i.ctrA.x,i.ctrA.y,i.ctrB.x,i.ctrB.y,e.x,e.y)}}else for(let e,t=0;t<o.length;t++)e=o[t],0==i&&e.x>x&&(a.moveTo(e.x,e.y),i=1),0<t&&e.x>x&&e.x<c&&a.lineTo(e.x,e.y);a.lineTo(t.x,d),a.lineTo(e.x,d),a.lineTo(e.x,e.y)}else{let e=o[0];a.moveTo(e.x-s/2,e.y),a.lineTo(e.x+s/2,e.y),a.lineTo(e.x+s/2,d),a.lineTo(e.x-s/2,d),a.moveTo(e.x-s/2,e.y)}if(a.closePath(),a.fill(),n.addLine){if("dash"==e.lineType){let i=e.dashLength?e.dashLength:8;i*=t.pixelRatio,a.setLineDash([i,i])}if(a.beginPath(),a.setStrokeStyle(e.color),a.setLineWidth(n.width*t.pixelRatio),1===o.length)a.moveTo(o[0].x,o[0].y),a.arc(o[0].x,o[0].y,1,0,2*Math.PI);else{a.moveTo(o[0].x,o[0].y);let e=0;if("curve"===n.type){for(let t,i=0;i<o.length;i++)if(t=o[i],0==e&&t.x>x&&(a.moveTo(t.x,t.y),e=1),0<i&&t.x>x&&t.x<c){let e=createCurveControlPoints(o,i-1);a.bezierCurveTo(e.ctrA.x,e.ctrA.y,e.ctrB.x,e.ctrB.y,t.x,t.y)}}else for(let t,i=0;i<o.length;i++)t=o[i],0==e&&t.x>x&&(a.moveTo(t.x,t.y),e=1),0<i&&t.x>x&&t.x<c&&a.lineTo(t.x,t.y);a.moveTo(o[0].x,o[0].y)}a.stroke(),a.setLineDash([])}}!1!==t.dataPointShape&&drawPointShape(f,e.color,e.pointShape,a,t)}),!1!==t.dataLabel&&1===o&&e.forEach(function(e){let n,l,d;n=[].concat(t.chartData.yAxisData.ranges[e.index]),l=n.pop(),d=n.shift();var h=e.data,x=getDataPoints(h,l,d,r,s,t,i,o);drawPointText(x,e,i,a)}),a.restore(),{xAxisPoints:r,calPoints:h,eachSpacing:s}}function drawLineDataPoints(e,t,i,a){var o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,n=assign({},{type:"straight",width:2},t.extra.line);n.width*=t.pixelRatio;let l=t.chartData.xAxisData,r=l.xAxisPoints,s=l.eachSpacing;var d=[];a.save();let h=0,x=t.width+s;return t._scrollDistance_&&0!==t._scrollDistance_&&!0===t.enableScroll&&(a.translate(t._scrollDistance_,0),h=-t._scrollDistance_-s+t.area[3],x=h+(t.xAxis.itemCount+4)*s),e.forEach(function(e){let l,c,p;l=[].concat(t.chartData.yAxisData.ranges[e.index]),c=l.pop(),p=l.shift();var g=e.data,y=getDataPoints(g,c,p,r,s,t,i,o);d.push(y);var f=splitPoints(y);if("dash"==e.lineType){let i=e.dashLength?e.dashLength:8;i*=t.pixelRatio,a.setLineDash([i,i])}a.beginPath(),a.setStrokeStyle(e.color),a.setLineWidth(n.width),f.forEach(function(e){if(1===e.length)a.moveTo(e[0].x,e[0].y),a.arc(e[0].x,e[0].y,1,0,2*Math.PI);else{a.moveTo(e[0].x,e[0].y);let i=0;if("curve"===n.type){for(let o,n=0;n<e.length;n++)if(o=e[n],0==i&&o.x>h&&(a.moveTo(o.x,o.y),i=1),0<n&&o.x>h&&o.x<x){var t=createCurveControlPoints(e,n-1);a.bezierCurveTo(t.ctrA.x,t.ctrA.y,t.ctrB.x,t.ctrB.y,o.x,o.y)}}else for(let t,o=0;o<e.length;o++)t=e[o],0==i&&t.x>h&&(a.moveTo(t.x,t.y),i=1),0<o&&t.x>h&&t.x<x&&a.lineTo(t.x,t.y);a.moveTo(e[0].x,e[0].y)}}),a.stroke(),a.setLineDash([]),!1!==t.dataPointShape&&drawPointShape(y,e.color,e.pointShape,a,t)}),!1!==t.dataLabel&&1===o&&e.forEach(function(e){let n,l,d;n=[].concat(t.chartData.yAxisData.ranges[e.index]),l=n.pop(),d=n.shift();var h=e.data,x=getDataPoints(h,l,d,r,s,t,i,o);drawPointText(x,e,i,a)}),a.restore(),{xAxisPoints:r,calPoints:d,eachSpacing:s}}function drawMixDataPoints(e,t,i,a){let o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,n=t.chartData.xAxisData,l=n.xAxisPoints,r=n.eachSpacing,s=t.height-t.area[2],d=[];var h=0,x=0;e.forEach(function(e){"column"==e.type&&(x+=1)}),a.save();let c=-2,p=l.length+2,g=0,y=t.width+r;if(t._scrollDistance_&&0!==t._scrollDistance_&&!0===t.enableScroll&&(a.translate(t._scrollDistance_,0),c=Math.floor(-t._scrollDistance_/r)-2,p=c+t.xAxis.itemCount+4,g=-t._scrollDistance_-r+t.area[3],y=g+(t.xAxis.itemCount+4)*r),e.forEach(function(e){let n,f,u;n=[].concat(t.chartData.yAxisData.ranges[e.index]),f=n.pop(),u=n.shift();var m=e.data,S=getDataPoints(m,f,u,l,r,t,i,o);if(d.push(S),"column"==e.type){S=fixColumeData(S,r,x,h,i,t);for(let o,n=0;n<S.length;n++)if(o=S[n],null!==o&&n>c&&n<p){a.beginPath(),a.setStrokeStyle(o.color||e.color),a.setLineWidth(1),a.setFillStyle(o.color||e.color);var T=o.x-o.width/2,A=t.height-o.y-t.area[2];a.moveTo(T,o.y),a.moveTo(T-1,o.y),a.lineTo(T+o.width-2,o.y),a.lineTo(T+o.width-2,t.height-t.area[2]),a.lineTo(T,t.height-t.area[2]),a.lineTo(T,o.y),a.closePath(),a.stroke(),a.fill(),a.closePath(),a.fill()}h+=1}if("area"==e.type){let o=splitPoints(S);for(let n,l=0;l<o.length;l++){if(n=o[l],a.beginPath(),a.setStrokeStyle(e.color),a.setFillStyle(hexToRgb(e.color,.2)),a.setLineWidth(2*t.pixelRatio),1<n.length){var b=n[0];let t=n[n.length-1];a.moveTo(b.x,b.y);let i=0;if("curve"===e.style){for(let e,t=0;t<n.length;t++)if(e=n[t],0==i&&e.x>g&&(a.moveTo(e.x,e.y),i=1),0<t&&e.x>g&&e.x<y){var P=createCurveControlPoints(n,t-1);a.bezierCurveTo(P.ctrA.x,P.ctrA.y,P.ctrB.x,P.ctrB.y,e.x,e.y)}}else for(let e,t=0;t<n.length;t++)e=n[t],0==i&&e.x>g&&(a.moveTo(e.x,e.y),i=1),0<t&&e.x>g&&e.x<y&&a.lineTo(e.x,e.y);a.lineTo(t.x,s),a.lineTo(b.x,s),a.lineTo(b.x,b.y)}else{let e=n[0];a.moveTo(e.x-r/2,e.y),a.lineTo(e.x+r/2,e.y),a.lineTo(e.x+r/2,s),a.lineTo(e.x-r/2,s),a.moveTo(e.x-r/2,e.y)}a.closePath(),a.fill()}}if("line"==e.type){var _=splitPoints(S);_.forEach(function(i){if("dash"==e.lineType){let i=e.dashLength?e.dashLength:8;i*=t.pixelRatio,a.setLineDash([i,i])}if(a.beginPath(),a.setStrokeStyle(e.color),a.setLineWidth(2*t.pixelRatio),1===i.length)a.moveTo(i[0].x,i[0].y),a.arc(i[0].x,i[0].y,1,0,2*Math.PI);else{a.moveTo(i[0].x,i[0].y);let t=0;if("curve"==e.style){for(let e,n=0;n<i.length;n++)if(e=i[n],0==t&&e.x>g&&(a.moveTo(e.x,e.y),t=1),0<n&&e.x>g&&e.x<y){var o=createCurveControlPoints(i,n-1);a.bezierCurveTo(o.ctrA.x,o.ctrA.y,o.ctrB.x,o.ctrB.y,e.x,e.y)}}else for(let e,o=0;o<i.length;o++)e=i[o],0==t&&e.x>g&&(a.moveTo(e.x,e.y),t=1),0<o&&e.x>g&&e.x<y&&a.lineTo(e.x,e.y);a.moveTo(i[0].x,i[0].y)}a.stroke(),a.setLineDash([])})}"point"==e.type&&(e.addPoint=!0),!0==e.addPoint&&"column"!==e.type&&drawPointShape(S,e.color,e.pointShape,a,t)}),!1!==t.dataLabel&&1===o){var h=0;e.forEach(function(e){let n,s,d;n=[].concat(t.chartData.yAxisData.ranges[e.index]),s=n.pop(),d=n.shift();var c=e.data,p=getDataPoints(c,s,d,l,r,t,i,o);"column"===e.type?(p=fixColumeData(p,r,x,h,i,t),drawPointText(p,e,i,a),h+=1):drawPointText(p,e,i,a)})}return a.restore(),{xAxisPoints:l,calPoints:d,eachSpacing:r}}function drawToolTipBridge(e,t,i,a,o,n){var l=e.extra.tooltip||{};l.horizentalLine&&e.tooltip&&1===a&&("line"==e.type||"area"==e.type||"column"==e.type||"candle"==e.type||"mix"==e.type)&&drawToolTipHorizentalLine(e,t,i,o,n),i.save(),e._scrollDistance_&&0!==e._scrollDistance_&&!0===e.enableScroll&&i.translate(e._scrollDistance_,0),e.tooltip&&e.tooltip.textList&&e.tooltip.textList.length&&1===a&&drawToolTip(e.tooltip.textList,e.tooltip.offset,e,t,i,o,n),i.restore()}function drawXAxis(e,t,i,a){var o=Math.ceil;let n=t.chartData.xAxisData,l=n.xAxisPoints,r=n.startX,s=n.endX,d=n.eachSpacing;var h="center";("line"==t.type||"area"==t.type)&&(h=t.xAxis.boundaryGap);var x=t.height-t.area[2],c=t.area[0];if(t.enableScroll&&t.xAxis.scrollShow){var p=t.height-t.area[2]+i.xAxisHeight,g=s-r,y=d*(l.length-1),f=0;t._scrollDistance_&&(f=-t._scrollDistance_*g/y),a.beginPath(),a.setLineCap("round"),a.setLineWidth(6*t.pixelRatio),a.setStrokeStyle(t.xAxis.scrollBackgroundColor||"#EFEBEF"),a.moveTo(r,p),a.lineTo(s,p),a.stroke(),a.closePath(),a.beginPath(),a.setLineCap("round"),a.setLineWidth(6*t.pixelRatio),a.setStrokeStyle(t.xAxis.scrollColor||"#A6A6A6"),a.moveTo(r+f,p),a.lineTo(r+f+g*g/y,p),a.stroke(),a.closePath(),a.setLineCap("butt")}if(a.save(),t._scrollDistance_&&0!==t._scrollDistance_&&a.translate(t._scrollDistance_,0),!0===t.xAxis.calibration&&(a.setStrokeStyle(t.xAxis.gridColor||"#cccccc"),a.setLineCap("butt"),a.setLineWidth(1*t.pixelRatio),l.forEach(function(e,i){0<i&&(a.beginPath(),a.moveTo(e-d/2,x),a.lineTo(e-d/2,x+3*t.pixelRatio),a.closePath(),a.stroke())})),!0!==t.xAxis.disableGrid&&(a.setStrokeStyle(t.xAxis.gridColor||"#cccccc"),a.setLineCap("butt"),a.setLineWidth(1*t.pixelRatio),"dash"==t.xAxis.gridType&&a.setLineDash([t.xAxis.dashLength,t.xAxis.dashLength]),t.xAxis.gridEval=t.xAxis.gridEval||1,l.forEach(function(e,i){0==i%t.xAxis.gridEval&&(a.beginPath(),a.moveTo(e,x),a.lineTo(e,c),a.stroke())}),a.setLineDash([])),!0!==t.xAxis.disabled){let n=e.length;t.xAxis.labelCount&&(n=t.xAxis.itemCount?o(e.length/t.xAxis.itemCount*t.xAxis.labelCount):t.xAxis.labelCount,n-=1);let r=o(e.length/n),s=[],c=e.length;for(let t=0;t<c;t++)0==t%r?s.push(e[t]):s.push("");s[c-1]=e[c-1];var u=t.xAxis.fontSize||i.fontSize;0===i._xAxisTextAngle_?s.forEach(function(e,o){var n=-measureText(e+"",u)/2;"center"==h&&(n+=d/2);var r=0;t.xAxis.scrollShow&&(r=6*t.pixelRatio),a.beginPath(),a.setFontSize(u),a.setFillStyle(t.xAxis.fontColor||"#666666"),a.fillText(e+"",l[o]+n,x+u+(i.xAxisHeight-r-u)/2),a.closePath(),a.stroke()}):s.forEach(function(e,o){a.save(),a.beginPath(),a.setFontSize(u),a.setFillStyle(t.xAxis.fontColor||"#666666");var n=measureText(e+"",u),r=-n;"center"==h&&(r+=d/2);var s=calRotateTranslate(l[o]+d/2,x+u/2+5,t.height),c=s.transX,p=s.transY;a.rotate(-1*i._xAxisTextAngle_),a.translate(c,p),a.fillText(e+"",l[o]+r,x+u+5),a.closePath(),a.stroke(),a.restore()})}a.restore(),t.xAxis.axisLine&&(a.beginPath(),a.setStrokeStyle(t.xAxis.axisLineColor),a.setLineWidth(1*t.pixelRatio),a.moveTo(r,t.height-t.area[2]),a.lineTo(s,t.height-t.area[2]),a.stroke())}function drawYAxisGrid(e,t,i,a){if(!0===t.yAxis.disableGrid)return;let o=t.height-t.area[0]-t.area[2],n=o/t.yAxis.splitNumber,l=t.area[3],r=t.chartData.xAxisData.xAxisPoints,s=t.chartData.xAxisData.eachSpacing,d=s*(r.length-1),h=[];for(let o=0;o<t.yAxis.splitNumber+1;o++)h.push(t.height-t.area[2]-n*o);a.save(),t._scrollDistance_&&0!==t._scrollDistance_&&a.translate(t._scrollDistance_,0),"dash"==t.yAxis.gridType&&a.setLineDash([t.yAxis.dashLength,t.yAxis.dashLength]),a.setStrokeStyle(t.yAxis.gridColor),a.setLineWidth(1*t.pixelRatio),h.forEach(function(e){a.beginPath(),a.moveTo(l,e),a.lineTo(l+d,e),a.stroke()}),a.setLineDash([]),a.restore()}function drawYAxis(e,t,a,o){if(!0===t.yAxis.disabled)return;var i=t.height-t.area[0]-t.area[2],n=i/t.yAxis.splitNumber,l=t.area[3],r=t.width-t.area[1],s=t.height-t.area[2],d=s+a.xAxisHeight;t.xAxis.scrollShow&&(d-=3*t.pixelRatio),t.xAxis.rotateLabel&&(d=t.height-t.area[2]+3),o.beginPath(),o.setFillStyle(t.background||"#ffffff"),0>t._scrollDistance_&&o.fillRect(0,0,l,d),!0==t.enableScroll&&o.fillRect(r,0,t.width,d),o.closePath(),o.stroke();var h=[];for(let l=0;l<=t.yAxis.splitNumber;l++)h.push(t.area[0]+n*l);let x=t.area[3],c=t.width-t.area[1];for(let n,l=0;l<t.yAxis.data.length;l++)if(n=t.yAxis.data[l],!0!==n.disabled){let e=t.chartData.yAxisData.rangesFormat[l],i=n.fontSize||a.fontSize,r=t.chartData.yAxisData.yAxisWidth[l];if(e.forEach(function(e,a){var l=h[a]?h[a]:s;o.beginPath(),o.setFontSize(i),o.setLineWidth(1*t.pixelRatio),o.setStrokeStyle(n.axisLineColor||"#cccccc"),o.setFillStyle(n.fontColor||"#666666"),"left"==r.position?(o.fillText(e+"",x-r.width,l+i/2),!0==n.calibration&&(o.moveTo(x,l),o.lineTo(x-3*t.pixelRatio,l))):(o.fillText(e+"",c+4*t.pixelRatio,l+i/2),!0==n.calibration&&(o.moveTo(c,l),o.lineTo(c+3*t.pixelRatio,l))),o.closePath(),o.stroke()}),!1!==n.axisLine&&(o.beginPath(),o.setStrokeStyle(n.axisLineColor||"#cccccc"),o.setLineWidth(1*t.pixelRatio),"left"==r.position?(o.moveTo(x,t.height-t.area[2]),o.lineTo(x,t.area[0])):(o.moveTo(c,t.height-t.area[2]),o.lineTo(c,t.area[0])),o.stroke()),t.yAxis.showTitle){let e=n.titleFontSize||a.fontSize,i=n.title;o.beginPath(),o.setFontSize(e),o.setFillStyle(n.titleFontColor||"#666666"),"left"==r.position?o.fillText(i,x-measureText(i,e)/2,t.area[0]-10*t.pixelRatio):o.fillText(i,c-measureText(i,e)/2,t.area[0]-10*t.pixelRatio),o.closePath(),o.stroke()}"left"==r.position?x-=r.width+t.yAxis.padding:c+=r.width+t.yAxis.padding}}function drawLegend(e,t,i,a,o){if(!1===t.legend.show)return;let n=o.legendData,l=n.points,r=n.area,s=t.legend.padding,d=t.legend.fontSize,h=15*t.pixelRatio,x=5*t.pixelRatio,c=t.legend.itemGap,p=Math.max(t.legend.lineHeight*t.pixelRatio,d);a.beginPath(),a.setLineWidth(t.legend.borderWidth),a.setStrokeStyle(t.legend.borderColor),a.setFillStyle(t.legend.backgroundColor),a.moveTo(r.start.x,r.start.y),a.rect(r.start.x,r.start.y,r.width,r.height),a.closePath(),a.fill(),a.stroke(),l.forEach(function(e,o){let l=0,g=0;l=n.widthArr[o],g=n.heightArr[o];let y=0,f=0;"top"==t.legend.position||"bottom"==t.legend.position?(y=r.start.x+(r.width-l)/2,f=r.start.y+s+o*p):(l=0==o?0:n.widthArr[o-1],y=r.start.x+s+l,f=r.start.y+s+(r.height-g)/2),a.setFontSize(i.fontSize);for(let n,l=0;l<e.length;l++){switch(n=e[l],n.area=[0,0,0,0],n.area[0]=y,n.area[1]=f,n.area[3]=f+p,a.beginPath(),a.setLineWidth(1*t.pixelRatio),a.setStrokeStyle(n.show?n.color:t.legend.hiddenColor),a.setFillStyle(n.show?n.color:t.legend.hiddenColor),n.legendShape){case"line":a.moveTo(y,f+.5*p-2*t.pixelRatio),a.fillRect(y,f+.5*p-2*t.pixelRatio,15*t.pixelRatio,4*t.pixelRatio);break;case"triangle":a.moveTo(y+7.5*t.pixelRatio,f+.5*p-5*t.pixelRatio),a.lineTo(y+2.5*t.pixelRatio,f+.5*p+5*t.pixelRatio),a.lineTo(y+12.5*t.pixelRatio,f+.5*p+5*t.pixelRatio),a.lineTo(y+7.5*t.pixelRatio,f+.5*p-5*t.pixelRatio);break;case"diamond":a.moveTo(y+7.5*t.pixelRatio,f+.5*p-5*t.pixelRatio),a.lineTo(y+2.5*t.pixelRatio,f+.5*p),a.lineTo(y+7.5*t.pixelRatio,f+.5*p+5*t.pixelRatio),a.lineTo(y+12.5*t.pixelRatio,f+.5*p),a.lineTo(y+7.5*t.pixelRatio,f+.5*p-5*t.pixelRatio);break;case"circle":a.moveTo(y+7.5*t.pixelRatio,f+.5*p),a.arc(y+7.5*t.pixelRatio,f+.5*p,5*t.pixelRatio,0,2*Math.PI);break;case"rect":a.moveTo(y,f+.5*p-5*t.pixelRatio),a.fillRect(y,f+.5*p-5*t.pixelRatio,15*t.pixelRatio,10*t.pixelRatio);break;default:a.moveTo(y,f+.5*p-5*t.pixelRatio),a.fillRect(y,f+.5*p-5*t.pixelRatio,15*t.pixelRatio,10*t.pixelRatio);}a.closePath(),a.fill(),a.stroke(),y+=h+x;a.beginPath(),a.setFontSize(d),a.setFillStyle(n.show?t.legend.fontColor:t.legend.hiddenColor),a.fillText(n.name,y,f+(.5*p+.5*d-2)),a.closePath(),a.stroke(),"top"==t.legend.position||"bottom"==t.legend.position?(y+=measureText(n.name,d)+c,n.area[2]=y):(n.area[2]=y+measureText(n.name,d)+c,y-=h+x,f+=p)}})}function drawPieDataPoints(e,t,a,o){var n=Math.PI,l=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,r=assign({},{activeOpacity:.5,activeRadius:10*t.pixelRatio,offsetAngle:0,labelWidth:15*t.pixelRatio,ringWidth:0,border:!1,borderWidth:2,borderColor:"#FFFFFF"},t.extra.pie),s={x:t.area[3]+(t.width-t.area[1]-t.area[3])/2,y:t.area[0]+(t.height-t.area[0]-t.area[2])/2};0==a.pieChartLinePadding&&(a.pieChartLinePadding=r.activeRadius);var d=Math.min((t.width-t.area[1]-t.area[3])/2-a.pieChartLinePadding-a.pieChartTextPadding-a._pieTextMaxLength_,(t.height-t.area[0]-t.area[2])/2-a.pieChartLinePadding-a.pieChartTextPadding);e=getPieDataPoints(e,d,l);var h=r.activeRadius;if(e=e.map(function(e){return e._start_+=r.offsetAngle*n/180,e}),e.forEach(function(e,i){t.tooltip&&t.tooltip.index==i&&(o.beginPath(),o.setFillStyle(hexToRgb(e.color,t.extra.pie.activeOpacity||.5)),o.moveTo(s.x,s.y),o.arc(s.x,s.y,e._radius_+h,e._start_,e._start_+2*e._proportion_*n),o.closePath(),o.fill()),o.beginPath(),o.setLineWidth(r.borderWidth*t.pixelRatio),o.lineJoin="round",o.setStrokeStyle(r.borderColor),o.setFillStyle(e.color),o.moveTo(s.x,s.y),o.arc(s.x,s.y,e._radius_,e._start_,e._start_+2*e._proportion_*n),o.closePath(),o.fill(),!0==r.border&&o.stroke()}),"ring"===t.type){var x=.6*d;"number"==typeof t.extra.pie.ringWidth&&0<t.extra.pie.ringWidth&&(x=Math.max(0,d-t.extra.pie.ringWidth)),o.beginPath(),o.setFillStyle(t.background||"#ffffff"),o.moveTo(s.x,s.y),o.arc(s.x,s.y,x,0,2*n),o.closePath(),o.fill()}if(!1!==t.dataLabel&&1===l){for(var c=!1,p=0,g=e.length;p<g;p++)if(0<e[p].data){c=!0;break}c&&drawPieText(e,t,a,o,d,s)}return 1===l&&"ring"===t.type&&drawRingTitle(t,a,o,s),{center:s,radius:d,series:e}}function drawRoseDataPoints(e,t,a,o){var n=Math.PI,l=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,r=assign({},{type:"area",activeOpacity:.5,activeRadius:10*t.pixelRatio,offsetAngle:0,labelWidth:15*t.pixelRatio,border:!1,borderWidth:2,borderColor:"#FFFFFF"},t.extra.rose);0==a.pieChartLinePadding&&(a.pieChartLinePadding=r.activeRadius);var s={x:t.area[3]+(t.width-t.area[1]-t.area[3])/2,y:t.area[0]+(t.height-t.area[0]-t.area[2])/2},d=Math.min((t.width-t.area[1]-t.area[3])/2-a.pieChartLinePadding-a.pieChartTextPadding-a._pieTextMaxLength_,(t.height-t.area[0]-t.area[2])/2-a.pieChartLinePadding-a.pieChartTextPadding),h=r.minRadius||.5*d;e=getRoseDataPoints(e,r.type,h,d,l);var x=r.activeRadius;if(e=e.map(function(e){return e._start_+=(r.offsetAngle||0)*n/180,e}),e.forEach(function(e,i){t.tooltip&&t.tooltip.index==i&&(o.beginPath(),o.setFillStyle(hexToRgb(e.color,r.activeOpacity||.5)),o.moveTo(s.x,s.y),o.arc(s.x,s.y,x+e._radius_,e._start_,e._start_+2*e._rose_proportion_*n),o.closePath(),o.fill()),o.beginPath(),o.setLineWidth(r.borderWidth*t.pixelRatio),o.lineJoin="round",o.setStrokeStyle(r.borderColor),o.setFillStyle(e.color),o.moveTo(s.x,s.y),o.arc(s.x,s.y,e._radius_,e._start_,e._start_+2*e._rose_proportion_*n),o.closePath(),o.fill(),!0==r.border&&o.stroke()}),!1!==t.dataLabel&&1===l){for(var c=!1,p=0,g=e.length;p<g;p++)if(0<e[p].data){c=!0;break}c&&drawPieText(e,t,a,o,d,s)}return{center:s,radius:d,series:e}}function drawArcbarDataPoints(e,t,i,a){var o=Math.PI,n=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,l=assign({},{startAngle:.75,endAngle:.25,type:"default",width:12*t.pixelRatio,gap:2*t.pixelRatio},t.extra.arcbar);e=getArcbarDataPoints(e,l,n);var r=l.center?l.center:{x:t.width/2,y:t.height/2};var s;l.radius?s=l.radius:(s=Math.min(r.x,r.y),s-=5*t.pixelRatio,s-=l.width/2);for(let n,d=0;d<e.length;d++)n=e[d],a.setLineWidth(l.width),a.setStrokeStyle(l.backgroundColor||"#E9E9E9"),a.setLineCap("round"),a.beginPath(),"default"==l.type?a.arc(r.x,r.y,s-(l.width+l.gap)*d,l.startAngle*o,l.endAngle*o,!1):a.arc(r.x,r.y,s-(l.width+l.gap)*d,0,2*o,!1),a.stroke(),a.setLineWidth(l.width),a.setStrokeStyle(n.color),a.setLineCap("round"),a.beginPath(),a.arc(r.x,r.y,s-(l.width+l.gap)*d,l.startAngle*o,n._proportion_*o,!1),a.stroke();return drawRingTitle(t,i,a,r),{center:r,radius:s,series:e}}function drawGaugeDataPoints(e,t,a,i,o){var n=Math.PI,l=5<arguments.length&&void 0!==arguments[5]?arguments[5]:1,r=assign({},{type:"default",startAngle:.75,endAngle:.25,width:15,splitLine:{fixRadius:0,splitNumber:10,width:15,color:"#FFFFFF",childNumber:5,childWidth:5},pointer:{width:15,color:"auto"}},a.extra.gauge);null==r.oldAngle&&(r.oldAngle=r.startAngle),null==r.oldData&&(r.oldData=0),e=getGaugeAxisPoints(e,r.startAngle,r.endAngle);var s={x:a.width/2,y:a.height/2},d=Math.min(s.x,s.y);d-=5*a.pixelRatio,d-=r.width/2;var h=d-r.width,x=0;if("progress"==r.type){var c=d-3*r.width;o.beginPath();let e=o.createLinearGradient(s.x,s.y-c,s.x,s.y+c);e.addColorStop("0",hexToRgb(t[0].color,.3)),e.addColorStop("1.0",hexToRgb("#FFFFFF",.1)),o.setFillStyle(e),o.arc(s.x,s.y,c,0,2*n,!1),o.fill(),o.setLineWidth(r.width),o.setStrokeStyle(hexToRgb(t[0].color,.3)),o.setLineCap("round"),o.beginPath(),o.arc(s.x,s.y,h,r.startAngle*n,r.endAngle*n,!1),o.stroke(),x=r.startAngle-r.endAngle+1;let i=x/r.splitLine.splitNumber,p=x/r.splitLine.splitNumber/r.splitLine.childNumber,g=-d-.5*r.width-r.splitLine.fixRadius,y=-d-r.width-r.splitLine.fixRadius+r.splitLine.width;o.save(),o.translate(s.x,s.y),o.rotate((r.startAngle-1)*n);let f=r.splitLine.splitNumber*r.splitLine.childNumber+1,u=t[0].data*l;for(let e=0;e<f;e++)o.beginPath(),u>e/f?o.setStrokeStyle(hexToRgb(t[0].color,1)):o.setStrokeStyle(hexToRgb(t[0].color,.3)),o.setLineWidth(3*a.pixelRatio),o.moveTo(g,0),o.lineTo(y,0),o.stroke(),o.rotate(p*n);o.restore(),t=getArcbarDataPoints(t,r,l),o.setLineWidth(r.width),o.setStrokeStyle(t[0].color),o.setLineCap("round"),o.beginPath(),o.arc(s.x,s.y,h,r.startAngle*n,t[0]._proportion_*n,!1),o.stroke();let m=d-2.5*r.width;o.save(),o.translate(s.x,s.y),o.rotate((t[0]._proportion_-1)*n),o.beginPath(),o.setLineWidth(r.width/3);let S=o.createLinearGradient(0,.6*-m,0,.6*m);S.addColorStop("0",hexToRgb("#FFFFFF",0)),S.addColorStop("0.5",hexToRgb(t[0].color,1)),S.addColorStop("1.0",hexToRgb("#FFFFFF",0)),o.setStrokeStyle(S),o.arc(0,0,m,.85*n,1.15*n,!1),o.stroke(),o.beginPath(),o.setLineWidth(1),o.setStrokeStyle(t[0].color),o.setFillStyle(t[0].color),o.moveTo(-m-r.width/3/2,-4),o.lineTo(-m-r.width/3/2-4,0),o.lineTo(-m-r.width/3/2,4),o.lineTo(-m-r.width/3/2,-4),o.stroke(),o.fill(),o.restore()}else{o.setLineWidth(r.width),o.setLineCap("butt");for(let t,a=0;a<e.length;a++)t=e[a],o.beginPath(),o.setStrokeStyle(t.color),o.arc(s.x,s.y,d,t._startAngle_*n,t._endAngle_*n,!1),o.stroke();o.save(),x=r.startAngle-r.endAngle+1;let c=x/r.splitLine.splitNumber,p=x/r.splitLine.splitNumber/r.splitLine.childNumber,g=-d-.5*r.width-r.splitLine.fixRadius,y=-d-.5*r.width-r.splitLine.fixRadius+r.splitLine.width,f=-d-.5*r.width-r.splitLine.fixRadius+r.splitLine.childWidth;o.translate(s.x,s.y),o.rotate((r.startAngle-1)*n);for(let e=0;e<r.splitLine.splitNumber+1;e++)o.beginPath(),o.setStrokeStyle(r.splitLine.color),o.setLineWidth(2*a.pixelRatio),o.moveTo(g,0),o.lineTo(y,0),o.stroke(),o.rotate(c*n);o.restore(),o.save(),o.translate(s.x,s.y),o.rotate((r.startAngle-1)*n);for(let e=0;e<r.splitLine.splitNumber*r.splitLine.childNumber+1;e++)o.beginPath(),o.setStrokeStyle(r.splitLine.color),o.setLineWidth(1*a.pixelRatio),o.moveTo(g,0),o.lineTo(f,0),o.stroke(),o.rotate(p*n);o.restore(),t=getGaugeDataPoints(t,e,r,l);for(let e,a=0;a<t.length;a++)e=t[a],o.save(),o.translate(s.x,s.y),o.rotate((e._proportion_-1)*n),o.beginPath(),o.setFillStyle(e.color),o.moveTo(r.pointer.width,0),o.lineTo(0,-r.pointer.width/2),o.lineTo(-h,0),o.lineTo(0,r.pointer.width/2),o.lineTo(r.pointer.width,0),o.closePath(),o.fill(),o.beginPath(),o.setFillStyle("#FFFFFF"),o.arc(0,0,r.pointer.width/6,0,2*n,!1),o.fill(),o.restore();!1!==a.dataLabel&&drawGaugeLabel(r,d,s,a,i,o)}return drawRingTitle(a,i,o,s),1===l&&"gauge"===a.type&&(a.extra.gauge.oldAngle=t[0]._proportion_,a.extra.gauge.oldData=t[0].data),{center:s,radius:d,innerRadius:h,categories:e,totalAngle:x}}function drawRadarDataPoints(e,t,a,o){var n=Math.cos,l=Math.sin,r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,s=assign({},{gridColor:"#cccccc",labelColor:"#666666",opacity:.2,gridCount:3},t.extra.radar),d=getRadarCoordinateSeries(t.categories.length),h={x:t.area[3]+(t.width-t.area[1]-t.area[3])/2,y:t.area[0]+(t.height-t.area[0]-t.area[2])/2},x=Math.min(h.x-(getMaxTextListLength(t.categories)+a.radarLabelTextMargin),h.y-a.radarLabelTextMargin);x-=t.padding[1],o.beginPath(),o.setLineWidth(1*t.pixelRatio),o.setStrokeStyle(s.gridColor),d.forEach(function(e){var t=convertCoordinateOrigin(x*n(e),x*l(e),h);o.moveTo(h.x,h.y),o.lineTo(t.x,t.y)}),o.stroke(),o.closePath();for(var c=function(e){var i={};o.beginPath(),o.setLineWidth(1*t.pixelRatio),o.setStrokeStyle(s.gridColor),d.forEach(function(t,a){var r=convertCoordinateOrigin(x/s.gridCount*e*n(t),x/s.gridCount*e*l(t),h);0===a?(i=r,o.moveTo(r.x,r.y)):o.lineTo(r.x,r.y)}),o.lineTo(i.x,i.y),o.stroke(),o.closePath()},p=1;p<=s.gridCount;p++)c(p);var g=getRadarDataPoints(d,h,x,e,t,r);return g.forEach(function(e){if(o.beginPath(),o.setFillStyle(hexToRgb(e.color,s.opacity)),e.data.forEach(function(e,t){0===t?o.moveTo(e.position.x,e.position.y):o.lineTo(e.position.x,e.position.y)}),o.closePath(),o.fill(),!1!==t.dataPointShape){var i=e.data.map(function(e){return e.position});drawPointShape(i,e.color,e.pointShape,o,t)}}),drawRadarLabel(d,x,h,t,a,o),{center:h,radius:x,angleList:d}}function normalInt(e,t,a){a=0==a?1:a;for(var o=[],n=0;n<a;n++)o[n]=Math.random();return Math.floor(o.reduce(function(e,t){return e+t})/a*(t-e))+e}function collisionNew(e,t,a,o){var n=!1;for(let l=0;l<t.length;l++)if(t[l].area)if(!(e[3]<t[l].area[1]||e[0]>t[l].area[2]||e[1]>t[l].area[3]||e[2]<t[l].area[0])){n=!0;break}else if(0>e[0]||0>e[1]||e[2]>a||e[3]>o){n=!0;break}else n=!1;return n}function getBoundingBox(e){var t,a={};a.xMin=180,a.xMax=0,a.yMin=90,a.yMax=0;for(var o,n=0;n<e.length;n++){o=e[n].geometry.coordinates;for(var l=0;l<o.length;l++){t=o[l],1==t.length&&(t=t[0]);for(var r=0;r<t.length;r++){var s=t[r][0],d=t[r][1],h={x:s,y:d};a.xMin=a.xMin<h.x?a.xMin:h.x,a.xMax=a.xMax>h.x?a.xMax:h.x,a.yMin=a.yMin<h.y?a.yMin:h.y,a.yMax=a.yMax>h.y?a.yMax:h.y}}}return a}function coordinateToPoint(e,t,i,a,o,n){return{x:(t-i.xMin)*a+o,y:(i.yMax-e)*a+n}}function pointToCoordinate(e,t,i,a,o,n){return{x:(t-o)/a+i.xMin,y:i.yMax-(e-n)/a}}function isRayIntersectsSegment(e,t,i){if(t[1]==i[1])return!1;if(t[1]>e[1]&&i[1]>e[1])return!1;if(t[1]<e[1]&&i[1]<e[1])return!1;if(t[1]==e[1]&&i[1]>e[1])return!1;if(i[1]==e[1]&&t[1]>e[1])return!1;if(t[0]<e[0]&&i[1]<e[1])return!1;let a=i[0]-(i[0]-t[0])*(i[1]-e[1])/(i[1]-t[1]);return!(a<e[0])}function isPoiWithinPoly(e,t){let i=0;for(let a,o=0;o<t.length;o++){a=t[o][0],1==t.length&&(a=t[o][0]);for(let t=0;t<a.length-1;t++){let o=a[t],n=a[t+1];isRayIntersectsSegment(e,o,n)&&(i+=1)}}return!(1!=i%2)}function drawMapDataPoints(e,t,a,o){var n,l,r=Math.abs,s=assign({},{border:!0,borderWidth:1,borderColor:"#666666",fillOpacity:.6,activeBorderColor:"#f04864",activeFillColor:"#facc14",activeFillOpacity:1},t.extra.map),d=e,h=getBoundingBox(d),x=t.width/r(h.xMax-h.xMin),c=t.height/r(h.yMax-h.yMin),p=x<c?x:c,g=t.width/2-r(h.xMax-h.xMin)/2*p,y=t.height/2-r(h.yMax-h.yMin)/2*p;o.beginPath(),o.clearRect(0,0,t.width,t.height),o.setFillStyle(t.background||"#FFFFFF"),o.rect(0,0,t.width,t.height),o.fill();for(var f=0;f<d.length;f++){o.beginPath(),o.setLineWidth(s.borderWidth*t.pixelRatio),o.setStrokeStyle(s.borderColor),o.setFillStyle(hexToRgb(e[f].color,s.fillOpacity)),t.tooltip&&t.tooltip.index==f&&(o.setStrokeStyle(s.activeBorderColor),o.setFillStyle(hexToRgb(s.activeFillColor,s.activeFillOpacity)));for(var u=d[f].geometry.coordinates,m=0;m<u.length;m++){n=u[m],1==n.length&&(n=n[0]);for(var S=0;S<n.length;S++)l=coordinateToPoint(n[S][1],n[S][0],h,p,g,y),0==S?(o.beginPath(),o.moveTo(l.x,l.y)):o.lineTo(l.x,l.y);o.fill(),!0==s.border&&o.stroke()}if(!0==t.dataLabel){var T=d[f].properties.centroid;if(T){l=coordinateToPoint(T[1],T[0],h,p,g,y);let e=d[f].textSize||a.fontSize,t=d[f].properties.name;o.beginPath(),o.setFontSize(e),o.setFillStyle(d[f].textColor||"#666666"),o.fillText(t,l.x-measureText(t,e)/2,l.y+e/2),o.closePath(),o.stroke()}}}t.chartData.mapData={bounds:h,scale:p,xoffset:g,yoffset:y},drawToolTipBridge(t,a,o,1),o.draw()}function getWordCloudPoint(e,t){let a=e.series.sort(function(e,t){return parseInt(t.textSize)-parseInt(e.textSize)});switch(t){case"normal":for(let t=0;t<a.length;t++){let i,o,n,l=a[t].name,r=a[t].textSize,s=measureText(l,r),d=0;for(;;){d++,i=normalInt(-e.width/2,e.width/2,5)-s/2,o=normalInt(-e.height/2,e.height/2,5)+r/2,n=[i-5+e.width/2,o-5-r+e.height/2,i+s+5+e.width/2,o+5+e.height/2];let t=collisionNew(n,a,e.width,e.height);if(!t)break;if(1e3==d){n=[-100,-100,-100,-100];break}}a[t].area=n}break;case"vertical":function o(){return!!(.7<Math.random())};for(let t=0;t<a.length;t++){let i,n,l,r,s=a[t].name,d=a[t].textSize,h=measureText(s,d),x=o(),c=0;for(;;){c++;let t;if(x?(i=normalInt(-e.width/2,e.width/2,5)-h/2,n=normalInt(-e.height/2,e.height/2,5)+d/2,l=[n-5-h+e.width/2,-i-5+e.height/2,n+5+e.width/2,-i+d+5+e.height/2],r=[e.width-(e.width/2-e.height/2)-(-i+d+5+e.height/2)-5,e.height/2-e.width/2+(n-5-h+e.width/2)-5,e.width-(e.width/2-e.height/2)-(-i+d+5+e.height/2)+d,e.height/2-e.width/2+(n-5-h+e.width/2)+h+5],t=collisionNew(r,a,e.height,e.width)):(i=normalInt(-e.width/2,e.width/2,5)-h/2,n=normalInt(-e.height/2,e.height/2,5)+d/2,l=[i-5+e.width/2,n-5-d+e.height/2,i+h+5+e.width/2,n+5+e.height/2],t=collisionNew(l,a,e.width,e.height)),!t)break;if(1e3==c){l=[-1e3,-1e3,-1e3,-1e3];break}}x?(a[t].area=r,a[t].areav=l):a[t].area=l,a[t].rotate=x};}return a}function drawWordCloudDataPoints(e,t,i,a){let o=4<arguments.length&&arguments[4]!==void 0?arguments[4]:1,n=assign({},{type:"normal",autoColors:!0},t.extra.word);a.beginPath(),a.setFillStyle(t.background||"#FFFFFF"),a.rect(0,0,t.width,t.height),a.fill(),a.save();let l=t.chartData.wordCloudData;a.translate(t.width/2,t.height/2);for(let n=0;n<l.length;n++){a.save(),l[n].rotate&&a.rotate(90*Math.PI/180);let e=l[n].name,i=l[n].textSize,r=measureText(e,i);a.beginPath(),a.setStrokeStyle(l[n].color),a.setFillStyle(l[n].color),a.setFontSize(i),l[n].rotate?0<l[n].areav[0]&&(t.tooltip?t.tooltip.index==n?a.strokeText(e,(l[n].areav[0]+5-t.width/2)*o-r*(1-o)/2,(l[n].areav[1]+5+i-t.height/2)*o):a.fillText(e,(l[n].areav[0]+5-t.width/2)*o-r*(1-o)/2,(l[n].areav[1]+5+i-t.height/2)*o):a.fillText(e,(l[n].areav[0]+5-t.width/2)*o-r*(1-o)/2,(l[n].areav[1]+5+i-t.height/2)*o)):0<l[n].area[0]&&(t.tooltip?t.tooltip.index==n?a.strokeText(e,(l[n].area[0]+5-t.width/2)*o-r*(1-o)/2,(l[n].area[1]+5+i-t.height/2)*o):a.fillText(e,(l[n].area[0]+5-t.width/2)*o-r*(1-o)/2,(l[n].area[1]+5+i-t.height/2)*o):a.fillText(e,(l[n].area[0]+5-t.width/2)*o-r*(1-o)/2,(l[n].area[1]+5+i-t.height/2)*o)),a.stroke(),a.restore()}a.restore()}function drawFunnelDataPoints(e,t,i,a){let o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,n=assign({},{activeWidth:10,activeOpacity:.3,border:!1,borderWidth:2,borderColor:"#FFFFFF",fillOpacity:1,labelAlign:"right"},t.extra.funnel),l=(t.height-t.area[0]-t.area[2])/e.length,r={x:t.area[3]+(t.width-t.area[1]-t.area[3])/2,y:t.height-t.area[2]},s=n.activeWidth,d=Math.min((t.width-t.area[1]-t.area[3])/2-s,(t.height-t.area[0]-t.area[2])/2-s);e=getFunnelDataPoints(e,d,o),a.save(),a.translate(r.x,r.y);for(let o=0;o<e.length;o++)0==o?(t.tooltip&&t.tooltip.index==o&&(a.beginPath(),a.setFillStyle(hexToRgb(e[o].color,n.activeOpacity)),a.moveTo(-s,0),a.lineTo(-e[o].radius-s,-l),a.lineTo(e[o].radius+s,-l),a.lineTo(s,0),a.lineTo(-s,0),a.closePath(),a.fill()),e[o].funnelArea=[r.x-e[o].radius,r.y-l,r.x+e[o].radius,r.y],a.beginPath(),a.setLineWidth(n.borderWidth*t.pixelRatio),a.setStrokeStyle(n.borderColor),a.setFillStyle(hexToRgb(e[o].color,n.fillOpacity)),a.moveTo(0,0),a.lineTo(-e[o].radius,-l),a.lineTo(e[o].radius,-l),a.lineTo(0,0),a.closePath(),a.fill(),!0==n.border&&a.stroke()):(t.tooltip&&t.tooltip.index==o&&(a.beginPath(),a.setFillStyle(hexToRgb(e[o].color,n.activeOpacity)),a.moveTo(0,0),a.lineTo(-e[o-1].radius-s,0),a.lineTo(-e[o].radius-s,-l),a.lineTo(e[o].radius+s,-l),a.lineTo(e[o-1].radius+s,0),a.lineTo(0,0),a.closePath(),a.fill()),e[o].funnelArea=[r.x-e[o].radius,r.y-l*(o+1),r.x+e[o].radius,r.y-l*o],a.beginPath(),a.setLineWidth(n.borderWidth*t.pixelRatio),a.setStrokeStyle(n.borderColor),a.setFillStyle(hexToRgb(e[o].color,n.fillOpacity)),a.moveTo(0,0),a.lineTo(-e[o-1].radius,0),a.lineTo(-e[o].radius,-l),a.lineTo(e[o].radius,-l),a.lineTo(e[o-1].radius,0),a.lineTo(0,0),a.closePath(),a.fill(),!0==n.border&&a.stroke()),a.translate(0,-l);return a.restore(),!1!==t.dataLabel&&1===o&&drawFunnelText(e,t,a,l,n.labelAlign,s,r),{center:r,radius:d,series:e}}function drawFunnelText(e,t,a,o,n,l,r){var s=Math.PI;for(let d=0;d<e.length;d++){let i,h,x,c,p=e[d],g=p.format?p.format(+p._proportion_.toFixed(2)):util.toFixed(100*p._proportion_)+"%";"right"==n?(i=0==d?(p.funnelArea[2]+r.x)/2:(p.funnelArea[2]+e[d-1].funnelArea[2])/2,h=i+2*l,x=p.funnelArea[1]+o/2,c=p.textSize||t.fontSize,a.setLineWidth(1*t.pixelRatio),a.setStrokeStyle(p.color),a.setFillStyle(p.color),a.beginPath(),a.moveTo(i,x),a.lineTo(h,x),a.stroke(),a.closePath(),a.beginPath(),a.moveTo(h,x),a.arc(h,x,2,0,2*s),a.closePath(),a.fill(),a.beginPath(),a.setFontSize(c),a.setFillStyle(p.textColor||"#666666"),a.fillText(g,h+5,x+c/2-2),a.closePath(),a.stroke(),a.closePath()):(i=0==d?(p.funnelArea[0]+r.x)/2:(p.funnelArea[0]+e[d-1].funnelArea[0])/2,h=i-2*l,x=p.funnelArea[1]+o/2,c=p.textSize||t.fontSize,a.setLineWidth(1*t.pixelRatio),a.setStrokeStyle(p.color),a.setFillStyle(p.color),a.beginPath(),a.moveTo(i,x),a.lineTo(h,x),a.stroke(),a.closePath(),a.beginPath(),a.moveTo(h,x),a.arc(h,x,2,0,2*s),a.closePath(),a.fill(),a.beginPath(),a.setFontSize(c),a.setFillStyle(p.textColor||"#666666"),a.fillText(g,h-5-measureText(g),x+c/2-2),a.closePath(),a.stroke(),a.closePath())}}function drawCanvas(e,t){t.draw()}var Timing={easeIn:function(e){return Math.pow(e,3)},easeOut:function(e){return Math.pow(e-1,3)+1},easeInOut:function(e){var t=Math.pow;return 1>(e/=.5)?.5*t(e,3):.5*(t(e-2,3)+2)},linear:function(e){return e}};function Animation(e){this.isStop=!1,e.duration="undefined"==typeof e.duration?1e3:e.duration,e.timing=e.timing||"linear";var t=function(){return"undefined"==typeof setTimeout?"undefined"==typeof requestAnimationFrame?function(e){e(null)}:requestAnimationFrame:function(e,t){setTimeout(function(){var t=+new Date;e(t)},t)}}(),i=null,a=function(o){if(null===o||!0===this.isStop)return e.onProcess&&e.onProcess(1),void(e.onAnimationFinish&&e.onAnimationFinish());if(null===i&&(i=o),o-i<e.duration){var n=(o-i)/e.duration,l=Timing[e.timing];n=l(n),e.onProcess&&e.onProcess(n),t(a,17)}else e.onProcess&&e.onProcess(1),e.onAnimationFinish&&e.onAnimationFinish()};a=a.bind(this),t(a,17)}Animation.prototype.stop=function(){this.isStop=!0};function drawCharts(e,t,a,i){var o=this,n=t.series,l=t.categories;n=fillSeries(n,t,a);var r=t.animation?t.duration:0;o.animationInstance&&o.animationInstance.stop();var s=null;if("candle"==e){let e=assign({},t.extra.candle.average);e.show?(s=calCandleMA(e.day,e.name,e.color,n[0].data),s=fillSeries(s,t,a),t.seriesMA=s):t.seriesMA?s=t.seriesMA=fillSeries(t.seriesMA,t,a):s=n}else s=n;t._series_=n=filterSeries(n),t.area=[,,,,];for(let o=0;4>o;o++)t.area[o]=t.padding[o];var d=calLegendData(s,t,a,t.chartData),h=d.area.wholeHeight,x=d.area.wholeWidth;switch(t.legend.position){case"top":t.area[0]+=h;break;case"bottom":t.area[2]+=h;break;case"left":t.area[3]+=x;break;case"right":t.area[1]+=x;}let c={},p=0;if("line"===t.type||"column"===t.type||"area"===t.type||"mix"===t.type||"candle"===t.type){if(c=calYAxisData(n,t,a),p=c.yAxisWidth,t.yAxis.showTitle){let e=0;for(let o=0;o<t.yAxis.data.length;o++)e=Math.max(e,t.yAxis.data[o].titleFontSize?t.yAxis.data[o].titleFontSize:a.fontSize);t.area[0]+=(e+6)*t.pixelRatio}let e=0,o=0;for(let a=0;a<p.length;a++)"left"==p[a].position?(t.area[3]+=0<o?p[a].width+t.yAxis.padding:p[a].width,o+=1):(t.area[1]+=0<e?p[a].width+t.yAxis.padding:p[a].width,e+=1)}else a.yAxisWidth=p;if(t.chartData.yAxisData=c,t.categories&&t.categories.length){t.chartData.xAxisData=getXAxisPoints(t.categories,t,a);let e=calCategoriesData(t.categories,t,a,t.chartData.xAxisData.eachSpacing),i=e.xAxisHeight,o=e.angle;a.xAxisHeight=i,a._xAxisTextAngle_=o,t.area[2]+=i,t.chartData.categoriesData=e}else if("line"===t.type||"area"===t.type||"points"===t.type){t.chartData.xAxisData=calXAxisData(n,t,a),l=t.chartData.xAxisData.rangesFormat;let e=calCategoriesData(l,t,a,t.chartData.xAxisData.eachSpacing),i=e.xAxisHeight,o=e.angle;a.xAxisHeight=i,a._xAxisTextAngle_=o,t.area[2]+=i,t.chartData.categoriesData=e}else t.chartData.xAxisData={xAxisPoints:[]};if(t.enableScroll&&"right"==t.xAxis.scrollAlign&&void 0===t._scrollDistance_){let e=0,i=t.chartData.xAxisData.xAxisPoints,a=t.chartData.xAxisData.startX,n=t.chartData.xAxisData.endX,l=t.chartData.xAxisData.eachSpacing,r=l*(i.length-1);e=n-a-r,o.scrollOption={currentOffset:e,startTouchX:e,distance:0,lastMoveTime:0},t._scrollDistance_=e}switch(("pie"===e||"ring"===e||"rose"===e)&&(a._pieTextMaxLength_=!1===t.dataLabel?0:getPieTextMaxLength(s)),e){case"word":let d=assign({},{type:"normal",autoColors:!0},t.extra.word);(!0==t.updateData||null==t.updateData)&&(t.chartData.wordCloudData=getWordCloudPoint(t,d.type)),this.animationInstance=new Animation({timing:"easeInOut",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),drawWordCloudDataPoints(n,t,a,i,e),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"map":i.clearRect(0,0,t.width,t.height),drawMapDataPoints(n,t,a,i);break;case"funnel":this.animationInstance=new Animation({timing:"easeInOut",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),t.chartData.funnelData=drawFunnelDataPoints(n,t,a,i,e),drawLegend(t.series,t,a,i,t.chartData),drawToolTipBridge(t,a,i,e),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"line":this.animationInstance=new Animation({timing:"easeIn",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),drawYAxisGrid(l,t,a,i),drawXAxis(l,t,a,i);var o=drawLineDataPoints(n,t,a,i,e),r=o.xAxisPoints,s=o.calPoints,d=o.eachSpacing;t.chartData.xAxisPoints=r,t.chartData.calPoints=s,t.chartData.eachSpacing=d,drawYAxis(n,t,a,i),!1!==t.enableMarkLine&&1===e&&drawMarkLine(t,a,i),drawLegend(t.series,t,a,i,t.chartData),drawToolTipBridge(t,a,i,e,d,r),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"mix":this.animationInstance=new Animation({timing:"easeIn",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),drawYAxisGrid(l,t,a,i),drawXAxis(l,t,a,i);var o=drawMixDataPoints(n,t,a,i,e),r=o.xAxisPoints,s=o.calPoints,d=o.eachSpacing;t.chartData.xAxisPoints=r,t.chartData.calPoints=s,t.chartData.eachSpacing=d,drawYAxis(n,t,a,i),!1!==t.enableMarkLine&&1===e&&drawMarkLine(t,a,i),drawLegend(t.series,t,a,i,t.chartData),drawToolTipBridge(t,a,i,e,d,r),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"column":this.animationInstance=new Animation({timing:"easeIn",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),drawYAxisGrid(l,t,a,i),drawXAxis(l,t,a,i);var o=drawColumnDataPoints(n,t,a,i,e),r=o.xAxisPoints,s=o.calPoints,d=o.eachSpacing;t.chartData.xAxisPoints=r,t.chartData.calPoints=s,t.chartData.eachSpacing=d,drawYAxis(n,t,a,i),!1!==t.enableMarkLine&&1===e&&drawMarkLine(t,a,i),drawLegend(t.series,t,a,i,t.chartData),drawToolTipBridge(t,a,i,e,d,r),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"area":this.animationInstance=new Animation({timing:"easeIn",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),drawYAxisGrid(l,t,a,i),drawXAxis(l,t,a,i);var o=drawAreaDataPoints(n,t,a,i,e),r=o.xAxisPoints,s=o.calPoints,d=o.eachSpacing;t.chartData.xAxisPoints=r,t.chartData.calPoints=s,t.chartData.eachSpacing=d,drawYAxis(n,t,a,i),!1!==t.enableMarkLine&&1===e&&drawMarkLine(t,a,i),drawLegend(t.series,t,a,i,t.chartData),drawToolTipBridge(t,a,i,e,d,r),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"ring":case"pie":this.animationInstance=new Animation({timing:"easeInOut",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),t.chartData.pieData=drawPieDataPoints(n,t,a,i,e),drawLegend(t.series,t,a,i,t.chartData),drawToolTipBridge(t,a,i,e),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"rose":this.animationInstance=new Animation({timing:"easeInOut",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),t.chartData.pieData=drawRoseDataPoints(n,t,a,i,e),drawLegend(t.series,t,a,i,t.chartData),drawToolTipBridge(t,a,i,e),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"radar":this.animationInstance=new Animation({timing:"easeInOut",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),t.chartData.radarData=drawRadarDataPoints(n,t,a,i,e),drawLegend(t.series,t,a,i,t.chartData),drawToolTipBridge(t,a,i,e),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"arcbar":this.animationInstance=new Animation({timing:"easeInOut",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),t.chartData.arcbarData=drawArcbarDataPoints(n,t,a,i,e),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"gauge":this.animationInstance=new Animation({timing:"easeInOut",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),t.chartData.gaugeData=drawGaugeDataPoints(l,n,t,a,i,e),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});break;case"candle":this.animationInstance=new Animation({timing:"easeIn",duration:r,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&contextRotate(i,t),drawYAxisGrid(l,t,a,i),drawXAxis(l,t,a,i);var o=drawCandleDataPoints(n,s,t,a,i,e),r=o.xAxisPoints,d=o.calPoints,h=o.eachSpacing;t.chartData.xAxisPoints=r,t.chartData.calPoints=d,t.chartData.eachSpacing=h,drawYAxis(n,t,a,i),!1!==t.enableMarkLine&&1===e&&drawMarkLine(t,a,i),s?drawLegend(s,t,a,i,t.chartData):drawLegend(t.series,t,a,i,t.chartData),drawToolTipBridge(t,a,i,e,h,r),drawCanvas(t,i)},onAnimationFinish:function(){o.event.trigger("renderComplete")}});}}function Event(){this.events={}}Event.prototype.addEventListener=function(e,t){this.events[e]=this.events[e]||[],this.events[e].push(t)},Event.prototype.trigger=function(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];var a=t[0],o=t.slice(1);!this.events[a]||this.events[a].forEach(function(e){try{e.apply(null,o)}catch(t){console.error(t)}})};var Charts=function(e){e.pixelRatio=e.pixelRatio?e.pixelRatio:1,e.fontSize=e.fontSize?e.fontSize*e.pixelRatio:13*e.pixelRatio,e.title=assign({},e.title),e.subtitle=assign({},e.subtitle),e.duration=e.duration?e.duration:1e3,e.yAxis=assign({},{data:[],showTitle:!1,disabled:!1,disableGrid:!1,splitNumber:5,gridType:"solid",dashLength:4*e.pixelRatio,gridColor:"#cccccc",padding:10,fontColor:"#666666"},e.yAxis),e.yAxis.dashLength*=e.pixelRatio,e.yAxis.padding*=e.pixelRatio,e.xAxis=assign({},{rotateLabel:!1,type:"calibration",gridType:"solid",dashLength:4,scrollAlign:"left",boundaryGap:"center",axisLine:!0,axisLineColor:"#cccccc"},e.xAxis),e.xAxis.dashLength*=e.pixelRatio,e.legend=assign({},{show:!0,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:e.fontSize,lineHeight:e.fontSize,fontColor:"#333333",format:{},hiddenColor:"#CECECE"},e.legend),e.legend.borderWidth*=e.pixelRatio,e.legend.itemGap*=e.pixelRatio,e.legend.padding*=e.pixelRatio,e.legend.margin*=e.pixelRatio,e.extra=assign({},e.extra),e.rotate=!!e.rotate,e.animation=!!e.animation,e.rotate=!!e.rotate;let t=JSON.parse(JSON.stringify(config));if(t.colors=e.colors?e.colors:t.colors,t.yAxisTitleWidth=!0!==e.yAxis.disabled&&e.yAxis.title?t.yAxisTitleWidth:0,("pie"==e.type||"ring"==e.type)&&(t.pieChartLinePadding=!1===e.dataLabel?0:e.extra.pie.labelWidth*e.pixelRatio||t.pieChartLinePadding*e.pixelRatio),"rose"==e.type&&(t.pieChartLinePadding=!1===e.dataLabel?0:e.extra.rose.labelWidth*e.pixelRatio||t.pieChartLinePadding*e.pixelRatio),t.pieChartTextPadding=!1===e.dataLabel?0:t.pieChartTextPadding*e.pixelRatio,t.yAxisSplit=e.yAxis.splitNumber?e.yAxis.splitNumber:config.yAxisSplit,t.rotate=e.rotate,e.rotate){let t=e.width,i=e.height;e.width=i,e.height=t}e.padding=e.padding?e.padding:t.padding;for(let t=0;4>t;t++)e.padding[t]*=e.pixelRatio;t.yAxisWidth=config.yAxisWidth*e.pixelRatio,t.xAxisHeight=config.xAxisHeight*e.pixelRatio,e.enableScroll&&e.xAxis.scrollShow&&(t.xAxisHeight+=6*e.pixelRatio),t.xAxisLineHeight=config.xAxisLineHeight*e.pixelRatio,t.fontSize=e.fontSize,t.titleFontSize=config.titleFontSize*e.pixelRatio,t.subtitleFontSize=config.subtitleFontSize*e.pixelRatio,t.toolTipPadding=config.toolTipPadding*e.pixelRatio,t.toolTipLineHeight=config.toolTipLineHeight*e.pixelRatio,t.columePadding=config.columePadding*e.pixelRatio,e.$this=e.$this?e.$this:this,this.context=uni.createCanvasContext(e.canvasId,e.$this),e.chartData={},this.event=new Event,this.scrollOption={currentOffset:0,startTouchX:0,distance:0,lastMoveTime:0},this.opts=e,this.config=t,drawCharts.call(this,e.type,e,t,this.context)};Charts.prototype.updateData=function(){let e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};this.opts=assign({},this.opts,e),this.opts.updateData=!0;let t=e.scrollPosition||"current";switch(t){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 e=calYAxisData(this.opts.series,this.opts,this.config),i=e.yAxisWidth;this.config.yAxisWidth=i;let a=0,o=getXAxisPoints(this.opts.categories,this.opts,this.config),n=o.xAxisPoints,l=o.startX,r=o.endX,s=o.eachSpacing,d=s*(n.length-1);a=r-l-d,this.scrollOption={currentOffset:a,startTouchX:a,distance:0,lastMoveTime:0},this.opts._scrollDistance_=a;}drawCharts.call(this,this.opts.type,this.opts,this.config,this.context)},Charts.prototype.zoom=function(){var e=Math.round,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.opts.xAxis.itemCount;if(!0!==this.opts.enableScroll)return void console.log("\u8BF7\u542F\u7528\u6EDA\u52A8\u6761\u540E\u4F7F\u7528\uFF01");let i=e(Math.abs(this.scrollOption.currentOffset)/this.opts.chartData.eachSpacing)+e(this.opts.xAxis.itemCount/2);this.opts.animation=!1,this.opts.xAxis.itemCount=t.itemCount;let a=calYAxisData(this.opts.series,this.opts,this.config),o=a.yAxisWidth;this.config.yAxisWidth=o;let n=0,l=getXAxisPoints(this.opts.categories,this.opts,this.config),r=l.xAxisPoints,s=l.startX,d=l.endX,h=l.eachSpacing,x=d-s,c=x-h*(r.length-1);n=x/2-h*i,0<n&&(n=0),n<c&&(n=c),this.scrollOption={currentOffset:n,startTouchX:n,distance:0,lastMoveTime:0},this.opts._scrollDistance_=n,drawCharts.call(this,this.opts.type,this.opts,this.config,this.context)},Charts.prototype.stopAnimation=function(){this.animationInstance&&this.animationInstance.stop()},Charts.prototype.addEventListener=function(e,t){this.event.addEventListener(e,t)},Charts.prototype.getCurrentDataIndex=function(t){var e=null;if(e=t.changedTouches?t.changedTouches[0]:t.mp.changedTouches[0],e){let i=getTouches(e,this.opts,t);return"pie"===this.opts.type||"ring"===this.opts.type||"rose"===this.opts.type?findPieChartCurrentIndex({x:i.x,y:i.y},this.opts.chartData.pieData):"radar"===this.opts.type?findRadarChartCurrentIndex({x:i.x,y:i.y},this.opts.chartData.radarData,this.opts.categories.length):"funnel"===this.opts.type?findFunnelChartCurrentIndex({x:i.x,y:i.y},this.opts.chartData.funnelData):"map"===this.opts.type?findMapChartCurrentIndex({x:i.x,y:i.y},this.opts):"word"===this.opts.type?findWordChartCurrentIndex({x:i.x,y:i.y},this.opts.chartData.wordCloudData):findCurrentIndex({x:i.x,y:i.y},this.opts.chartData.calPoints,this.opts,this.config,Math.abs(this.scrollOption.currentOffset))}return-1},Charts.prototype.getLegendDataIndex=function(t){var e=null;if(e=t.changedTouches?t.changedTouches[0]:t.mp.changedTouches[0],e){let i=getTouches(e,this.opts,t);return findLegendIndex({x:i.x,y:i.y},this.opts.chartData.legendData)}return-1},Charts.prototype.touchLegend=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=null;if(i=t.changedTouches?t.changedTouches[0]:t.mp.changedTouches[0],i){var a=getTouches(i,this.opts,t),o=this.getLegendDataIndex(t);0<=o&&(this.opts.series[o].show=!this.opts.series[o].show,this.opts.animation=!!e.animation,this.opts._scrollDistance_=this.scrollOption.currentOffset,drawCharts.call(this,this.opts.type,this.opts,this.config,this.context))}},Charts.prototype.showToolTip=function(t){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},i=null;i=t.changedTouches?t.changedTouches[0]:t.mp.changedTouches[0],i||console.log("touchError");var a=getTouches(i,this.opts,t),o=this.scrollOption.currentOffset,n=assign({},this.opts,{_scrollDistance_:o,animation:!1});if("line"===this.opts.type||"area"===this.opts.type||"column"===this.opts.type){var l=this.getCurrentDataIndex(t);if(-1<l){var r=getSeriesDataItem(this.opts.series,l);if(0!==r.length){var s=getToolTipData(r,this.opts.chartData.calPoints,l,this.opts.categories,e),d=s.textList,h=s.offset;h.y=a.y,n.tooltip={textList:d,offset:h,option:e,index:l}}}drawCharts.call(this,n.type,n,this.config,this.context)}if("mix"===this.opts.type){var l=this.getCurrentDataIndex(t);if(-1<l){var o=this.scrollOption.currentOffset,n=assign({},this.opts,{_scrollDistance_:o,animation:!1}),r=getSeriesDataItem(this.opts.series,l);if(0!==r.length){var x=getMixToolTipData(r,this.opts.chartData.calPoints,l,this.opts.categories,e),d=x.textList,h=x.offset;h.y=a.y,n.tooltip={textList:d,offset:h,option:e,index:l}}}drawCharts.call(this,n.type,n,this.config,this.context)}if("candle"===this.opts.type){var l=this.getCurrentDataIndex(t);if(-1<l){var o=this.scrollOption.currentOffset,n=assign({},this.opts,{_scrollDistance_:o,animation:!1}),r=getSeriesDataItem(this.opts.series,l);if(0!==r.length){var s=getCandleToolTipData(this.opts.series[0].data,r,this.opts.chartData.calPoints,l,this.opts.categories,this.opts.extra.candle,e),d=s.textList,h=s.offset;h.y=a.y,n.tooltip={textList:d,offset:h,option:e,index:l}}}drawCharts.call(this,n.type,n,this.config,this.context)}if("pie"===this.opts.type||"ring"===this.opts.type||"rose"===this.opts.type||"funnel"===this.opts.type){var l=this.getCurrentDataIndex(t);if(-1<l){var o=this.scrollOption.currentOffset,n=assign({},this.opts,{_scrollDistance_:o,animation:!1}),r=this.opts._series_[l],d=[{text:e.format?e.format(r):r.name+": "+r.data,color:r.color}],h={x:a.x,y:a.y};n.tooltip={textList:d,offset:h,option:e,index:l}}drawCharts.call(this,n.type,n,this.config,this.context)}if("map"===this.opts.type||"word"===this.opts.type){var l=this.getCurrentDataIndex(t);if(-1<l){var o=this.scrollOption.currentOffset,n=assign({},this.opts,{_scrollDistance_:o,animation:!1}),r=this.opts._series_[l],d=[{text:e.format?e.format(r):r.properties.name,color:r.color}],h={x:a.x,y:a.y};n.tooltip={textList:d,offset:h,option:e,index:l}}n.updateData=!1,drawCharts.call(this,n.type,n,this.config,this.context)}if("radar"===this.opts.type){var l=this.getCurrentDataIndex(t);if(-1<l){var o=this.scrollOption.currentOffset,n=assign({},this.opts,{_scrollDistance_:o,animation:!1}),r=getSeriesDataItem(this.opts.series,l);if(0!==r.length){var d=r.map(function(t){return{text:e.format?e.format(t):t.name+": "+t.data,color:t.color}}),h={x:a.x,y:a.y};n.tooltip={textList:d,offset:h,option:e,index:l}}}drawCharts.call(this,n.type,n,this.config,this.context)}},Charts.prototype.translate=function(e){this.scrollOption={currentOffset:e,startTouchX:e,distance:0,lastMoveTime:0};let t=assign({},this.opts,{_scrollDistance_:e,animation:!1});drawCharts.call(this,this.opts.type,t,this.config,this.context)},Charts.prototype.scrollStart=function(t){var e=null;e=t.changedTouches?t.changedTouches[0]:t.mp.changedTouches[0];var i=getTouches(e,this.opts,t);e&&!0===this.opts.enableScroll&&(this.scrollOption.startTouchX=i.x)},Charts.prototype.scroll=function(t){0===this.scrollOption.lastMoveTime&&(this.scrollOption.lastMoveTime=Date.now());let e=this.opts.extra.touchMoveLimit||20,i=Date.now(),a=i-this.scrollOption.lastMoveTime;if(!(a<Math.floor(1e3/e))){this.scrollOption.lastMoveTime=i;var o=null;if(o=t.changedTouches?t.changedTouches[0]:t.mp.changedTouches[0],o&&!0===this.opts.enableScroll){var n,l=getTouches(o,this.opts,t);n=l.x-this.scrollOption.startTouchX;var r=this.scrollOption.currentOffset,s=calValidDistance(this,r+n,this.opts.chartData,this.config,this.opts);this.scrollOption.distance=n=s-r;var d=assign({},this.opts,{_scrollDistance_:r+n,animation:!1});return drawCharts.call(this,d.type,d,this.config,this.context),r+n}}},Charts.prototype.scrollEnd=function(){if(!0===this.opts.enableScroll){var e=this.scrollOption,t=e.currentOffset,i=e.distance;this.scrollOption.currentOffset=t+i,this.scrollOption.distance=0}},"object"==typeof module&&"object"==typeof module.exports&&(module.exports=Charts);
\ No newline at end of file
... ...
### Badge 数字角标
数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景,组件名:``uni-badge``,代码块: uBadge。
**使用方式:**
``script`` 中引用组件
```javascript
import uniBadge from "@/components/uni-badge/uni-badge.vue"
export default {
components: {uniBadge}
}
```
``template`` 中使用组件
```html
<uni-badge text="1"></uni-badge>
<uni-badge text="2" type="success" @click="bindClick"></uni-badge>
<uni-badge text="3" type="primary" :inverted="true"></uni-badge>
```
实际效果参考:[https://github.com/dcloudio/uni-ui](https://github.com/dcloudio/uni-ui)
**Badge 属性说明:**
|属性名 |类型 |默认值 |说明 |
|--- |---- |--- |--- |
|text |String |- |角标内容 |
|type |String |default|颜色类型,可选值:default(灰色)、primary(蓝色)、success(绿色)、warning(黄色)、error(红色) |
|size |String |normal|Badge 大小,可取值:normal、small|
|inverted |Boolean |false |是否无需背景颜色,为 true 时,背景颜色将变为文字的字体颜色 |
|@click |EventHandle| - |点击 Badge 触发事件 |
... ...
<template>
<text class="uni-badge" v-if="text" :class="setClass" @click="onClick()">{{text}}</text>
</template>
<script>
export default {
name: 'uni-badge',
props: {
type: {
type: String,
default: 'default'
},
inverted: {
type: Boolean,
default: false
},
text: {
type: String,
default: ''
},
size: { //small.normal
type: String,
default: 'normal'
}
},
computed: {
setClass() {
let classList = ['uni-badge-' + this.type, 'uni-badge--' + this.size];
if (this.inverted === true) {
classList.push('uni-badge-inverted')
}
return classList.join(" ")
}
},
methods: {
onClick() {
this.$emit('click')
}
}
}
</script>
<style lang="scss">
$bage-size:12px;
$bage-small:scale(0.8);
.uni-badge {
font-family: 'Helvetica Neue', Helvetica, sans-serif;
box-sizing: border-box;
font-size: $bage-size;
line-height: 1;
display: inline-block;
padding: 3px 6px;
color: $uni-text-color;
border-radius: 100px;
background-color: $uni-bg-color-hover;
&.uni-badge-inverted {
padding: 0 5px 0 0;
color: $uni-text-color-grey;
background-color: transparent;
}
&-primary {
color: $uni-text-color-inverse;
background-color: $uni-color-primary;
&.uni-badge-inverted {
color: $uni-color-primary;
background-color: transparent
}
}
&-success {
color: $uni-text-color-inverse;
background-color: $uni-color-success;
&.uni-badge-inverted {
color: $uni-color-success;
background-color: transparent
}
}
&-warning {
color: $uni-text-color-inverse;
background-color: $uni-color-warning;
&.uni-badge-inverted {
color: $uni-color-warning;
background-color: transparent
}
}
&-error {
color: $uni-text-color-inverse;
background-color: $uni-color-error;
&.uni-badge-inverted {
color: $uni-color-error;
background-color: transparent
}
}
&--small {
transform: $bage-small;
transform-origin: center center;
}
}
</style>
... ...
### Card 卡片
卡片视图组件,组件名:``uni-card``,代码块: uCard。
**使用方式:**
``script`` 中引用组件
```javascript
import uniCard from "@/components/uni-card/uni-card.vue"
export default {
components: {uniCard}
}
```
一般用法
```html
<uni-card
title="标题文字"
thumbnail="http://img-cdn-qiniu.dcloud.net.cn/new-page/uni.png"
extra="额外信息"
note="Tips">
内容主体,可自定义内容及样式
</uni-card>
```
内容通栏
```html
<uni-card
is-full="true"
title="DCloud"
thumbnail="http://img-cdn-qiniu.dcloud.net.cn/new-page/uni.png"
extra="2018.12.12"
note="Tips">
内容主体,可自定义内容及样式,内容主体,可自定义内容及样式,内容主体,可自定义内容及样式
</uni-card>
```
**uniCard 属性说明:**
|属性名|类型|默认值 |说明|
|---|----|---|---|
|title|String|-|标题文字|
|extra|String|-|标题额外信息|
|note|String|-|底部信息|
|thumbnail|String|-|标题左侧缩略图|
|is-full|Boolean|false|卡片内容是否通栏,为true时将去除padding值|
**uniCard 事件说明:**
|事件称名|说明|返回参数|
|---|----|---|
|click|点击 uniCard 触发事件|-|
Tips
* 组件实际运行效果参考:[https://github.com/dcloudio/uni-ui](https://github.com/dcloudio/uni-ui)
* npm 使用方式参考:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
\ No newline at end of file
... ...
<template>
<view class="uni-card" :class="isFull === true || isFull === 'true' ? 'uni-card--full' : ''" @click="onClick">
<view class="uni-card__header" :style="{'background-color':bgcolor? bgcolor: '#FFFFFF'}" v-if="title">
<view class="uni-card__header-extra-img-view" v-if="thumbnail">
<image class="uni-card__header-extra-img" :src="thumbnail"></image>
</view>
<view class="uni-card__header-title-text">{{title}}</view>
<view class="uni-card__header-extra-text" v-if="extra">{{extra}}</view>
</view>
<view class="uni-card__content uni-card__content--pd">
<image :src="images" mode="scaleToFill" class="demoimages" v-if="images"></image>
<text v-if="texts">{{texts}}</text>
</view>
<view class="uni-card__footer" v-if="note">{{note}}</view>
</view>
</template>
<script>
export default {
name: "uni-card",
props: {
title: String, //标题
bgcolor: String, //背景颜色
extra: String, //扩展信息
note: String, //Tips
images: String,
texts: String,
thumbnail: String, //缩略图
isFull: { //内容区域是否通栏
type: [Boolean, String],
default: false
}
},
methods: {
onClick() {
this.$emit('click')
}
}
}
</script>
<style lang="scss">
$card-extra-width: 30%;
$uni-spacing-marign:16upx;
@mixin text-omit {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.uni-card {
margin-left: $uni-spacing-marign;
margin-right: $uni-spacing-marign;
margin-top: $uni-spacing-marign;
background: $uni-bg-color;
position: relative;
display: flex;
flex-direction: column;
&:after {
content: '';
position: absolute;
transform-origin: center;
box-sizing: border-box;
pointer-events: none;
top: -50%;
left: -50%;
right: -50%;
bottom: -50%;
border: 1px solid $uni-border-color;
border-radius: $uni-border-radius-lg;
transform: scale(.5);
}
&__footer{
position: relative;
display: flex;
flex-direction: row;
padding: $uni-spacing-col-base;
align-items: center;
background-color: $uni-bg-color;
}
&__header {
position: relative;
display: flex;
flex-direction: row;
padding: $uni-spacing-col-base;
align-items: center;
}
&__header {
&:after {
position: absolute;
bottom: 0;
right: 0;
left: 0;
height: 1px;
content: '';
-webkit-transform: scaleY(.5);
transform: scaleY(.5);
background-color: $uni-border-color;
}
&-title {
flex: 1;
margin-right: $uni-spacing-col-base;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
&-text {
font-size: $uni-font-size-lg;
flex: 1;
@include text-omit;
}
}
&-extra {
&-img-view {
display: flex;
}
&-img {
height: $uni-img-size-sm;
width: $uni-img-size-sm;
margin-right: $uni-spacing-col-base;
}
&-text {
flex: 0 0 auto;
width: $card-extra-width;
margin-left: $uni-spacing-col-base;
font-size: $uni-font-size-base;
text-align: right;
@include text-omit;
}
}
}
&__content {
&--pd {
padding: $uni-spacing-col-base;
}
}
&__footer {
justify-content: space-between;
color: $uni-text-color-grey;
font-size: $uni-font-size-sm;
padding-top: 0;
}
&--full{
margin: 0;
}
}
.demoimages{width: 100%;height: 400upx;}
text{font-size: 32upx;color: #000000;}
</style>
... ...
<template>
<view class="uni-grid" :class="{'uni-grid-no-border':!showBorder,'uni-grid-no-out-border':showBorder && !showOutBorder}">
<view class="uni-grid__flex" v-for="(items,i) in gridGroup" :key="i">
<view class="uni-grid-item" hover-class="uni-grid-item-hover" :hover-start-time="20" :hover-stay-time="70" v-for="(item,index) in items"
:key="index" :class="[index == columnNum ? 'uni-grid-item-last' : '','uni-grid-item-' + type]" @click="onClick(i,index,item.url)" :style="{visibility:item.seize ? 'hidden' : 'inherit'}">
<view class="uni-grid-item__content" v-if="!item.seize">
<image class="uni-grid-item-image" :src="item.image"></image>
<text class="uni-grid-item-text">{{item.text}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: "uni-grid",
props: {
options: Array,
type: { //布局格式,长方形oblong,正方形square
type: String,
default: 'square'
},
columnNum: { //每一行有多少个
type: [Number, String],
default: 3
},
showOutBorder: { //显示外边框
type: [Boolean, String],
default: true
},
showBorder: { //是否显示border,如果为false,showOutBorder无效
type: [Boolean, String],
default: true
}
},
data() {
return {}
},
created() {
this.columnNumber = this.gridGroup[0].length
},
computed: {
gridGroup() {
let group = []
let groupItem = []
this.options && this.options.forEach((item, index) => {
groupItem.push(item)
if (index % this.columnNum === this.columnNum - 1) {
group.push(groupItem)
groupItem = []
}
})
if (groupItem.length > 0) {
if (this.columnNum > groupItem.length) {
for (let i = 0,length = groupItem.length; i < this.columnNum - length; i++) {
groupItem.push({seize:true})
}
}
group.push(groupItem)
}
groupItem = null
return group
}
},
methods: {
onClick(index, num,url) {
uni.navigateTo({
url: url
});
}
}
}
</script>
<style>
@charset "UTF-8";
.uni-grid {
position: relative;
display: flex;
flex-direction: column;
}
.uni-grid__flex {
display: flex;
flex-direction: row;
}
.uni-grid-item {
display: flex;
position: relative;
flex-direction: column;
background-color: #FFFFFF;
flex: 1
}
.uni-grid-item:before {
display: block;
content: " ";
padding-bottom: 100%
}
.uni-grid-item:after {
content: '';
position: absolute;
z-index: 1;
transform-origin: center;
box-sizing: border-box;
top: -50%;
left: -50%;
right: -50%;
bottom: -50%;
border-color: #c8c7cc;
border-style: solid;
border-width: 1px;
-webkit-transform: scale(.5);
transform: scale(.5);
border-top-width: 0;
border-left-width: 0
}
.uni-grid-item__content {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center
}
.uni-grid-item-text {
font-size: 32upx;
color: #333;
margin-top: 12upx
}
.uni-grid-item-hover {
background-color: #f1f1f1
}
.uni-grid-item-image {
width: 80upx;
height: 80upx
}
.uni-grid .uni-grid__flex:first-child .uni-grid-item:after {
border-top-width: 1px
}
.uni-grid .uni-grid__flex .uni-grid-item:first-child:after {
border-left-width: 1px
}
.uni-grid.uni-grid-no-out-border .uni-grid__flex:first-child .uni-grid-item:after {
border-top-width: 0
}
.uni-grid.uni-grid-no-out-border .uni-grid__flex:last-child .uni-grid-item:after {
border-bottom-width: 0
}
.uni-grid.uni-grid-no-out-border .uni-grid__flex .uni-grid-item:first-child:after {
border-left-width: 0
}
.uni-grid.uni-grid-no-out-border .uni-grid__flex .uni-grid-item:last-child:after {
border-right-width: 0
}
.uni-grid.uni-grid-no-border .uni-grid-item:after {
border-width: 0
}
.uni-grid.uni-grid-no-border .uni-grid__flex:first-child .uni-grid-item:after {
border-top-width: 0
}
.uni-grid.uni-grid-no-border .uni-grid__flex .uni-grid-item:first-child:after {
border-left-width: 0
}
.uni-grid-item-oblong.uni-grid-item:before {
padding-bottom: 60%
}
.uni-grid-item-oblong .uni-grid-item__content {
flex-direction: row
}
.uni-grid-item-oblong .uni-grid-item-image {
width: 52upx;
height: 52upx
}
.uni-grid-item-oblong .uni-grid-item-text {
margin-top: 0;
margin-left: 12upx
}
</style>
... ...
### Icon 图标
用于展示 icon,组件名:``uni-icon``,代码块: uIcon。
**使用方式:**
``script`` 中引用组件
```javascript
import uniIcon from "@/components/uni-icon/uni-icon.vue"
export default {
components: {uniIcon}
}
```
``template`` 中使用组件
```html
<uni-icon type="contact" size="30"></uni-icon>
```
实际效果参考:[https://github.com/dcloudio/uni-ui](https://github.com/dcloudio/uni-ui)
**Icon 属性说明:**
|属性名 |类型|默认值 |说明|
|---|----|---|---|
|type |String |-|图标图案,参考下表|
|color |String |-|图标颜色 |
|size |Number |24|图标大小|
|@click |EventHandle|-|点击 Icon 触发事件|
**type 类型:**
![icon](https://img-cdn-qiniu.dcloud.net.cn/img/icon.png)
\ No newline at end of file
... ...
<template>
<view class="uni-icon" :class="['uni-icon-'+type]" :style="{color:color,'font-size':fontSize}" @click="onClick()"></view>
</template>
<script>
export default {
name: 'uni-icon',
props: {
/**
* 图标类型
*/
type: String,
/**
* 图标颜色
*/
color: String,
/**
* 图标大小
*/
size: [Number, String]
},
computed: {
fontSize() {
return `${this.size}px`
}
},
methods: {
onClick() {
this.$emit('click')
}
}
}
</script>
<style>
@font-face {
font-family: uniicons;
font-weight: normal;
font-style: normal;
src: url(data:font/truetype;charset=utf-8;base64,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PDgtsDEssAAWILAJI0IgICBGI0ewACsjYTgtsDIssAAWsAMlsAIlRyNHI2GwAFRYLiA8IyEbsAIlsAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbABRWMjIFhiGyFZY7ABRWJgIy4jICA8ijgjIVktsDMssAAWILAJQyAuRyNHI2EgYLAgYGawgGIjICA8ijgtsDQsIyAuRrACJUZSWCA8WS6xJAEUKy2wNSwjIC5GsAIlRlBYIDxZLrEkARQrLbA2LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrEkARQrLbA3LLAuKyMgLkawAiVGUlggPFkusSQBFCstsDgssC8riiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSQBFCuwBEMusCQrLbA5LLAAFrAEJbAEJiAuRyNHI2GwBkUrIyA8IC4jOLEkARQrLbA6LLEJBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmGwAiVGYTgjIDwjOBshICBGI0ewACsjYTghWbEkARQrLbA7LLAuKy6xJAEUKy2wPCywLyshIyAgPLAEI0IjOLEkARQrsARDLrAkKy2wPSywABUgR7AAI0KyAAEBFRQTLrAqKi2wPiywABUgR7AAI0KyAAEBFRQTLrAqKi2wPyyxAAEUE7ArKi2wQCywLSotsEEssAAWRSMgLiBGiiNhOLEkARQrLbBCLLAJI0KwQSstsEMssgAAOistsEQssgABOistsEUssgEAOistsEYssgEBOistsEcssgAAOystsEgssgABOystsEkssgEAOystsEossgEBOystsEsssgAANystsEwssgABNystsE0ssgEANystsE4ssgEBNystsE8ssgAAOSstsFAssgABOSstsFEssgEAOSstsFIssgEBOSstsFMssgAAPCstsFQssgABPCstsFUssgEAPCstsFYssgEBPCstsFcssgAAOCstsFgssgABOCstsFkssgEAOCstsFossgEBOCstsFsssDArLrEkARQrLbBcLLAwK7A0Ky2wXSywMCuwNSstsF4ssAAWsDArsDYrLbBfLLAxKy6xJAEUKy2wYCywMSuw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AVkBWgFbAVwBXQd1bmlFMTAwB3VuaUUxMDEHdW5pRTEwMgd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMjAwB3VuaUUyMDEHdW5pRTIwMgd1bmlFMjAzB3VuaUUyMzAHdW5pRTIzMQd1bmlFMjMyB3VuaUUyMzMHdW5pRTI2MAd1bmlFMjYxB3VuaUUyNjIHdW5pRTI2Mwd1bmlFMjY0B3VuaUUzMDAHdW5pRTMwMQd1bmlFMzAyB3VuaUUzMDMHdW5pRTMzMgd1bmlFMzMzB3VuaUUzNjAHdW5pRTM2Mwd1bmlFMzY0B3VuaUU0MDAHdW5pRTQwMQd1bmlFNDAyB3VuaUU0MDMHdW5pRTQwNAd1bmlFNDA1B3VuaUU0MDYHdW5pRTQwNwd1bmlFNDA4B3VuaUU0MDkHdW5pRTQxMAd1bmlFNDExB3VuaUU0MTMHdW5pRTQzNAd1bmlFNDM3B3VuaUU0MzgHdW5pRTQzOQd1bmlFNDQwB3VuaUU0NDEHdW5pRTQ0Mgd1bmlFNDQzB3VuaUU0NjAHdW5pRTQ2MQd1bmlFNDYyB3VuaUU0NjMHdW5pRTQ2NAd1bmlFNDY1B3VuaUU0NjYHdW5pRTQ2OAd1bmlFNDcwB3VuaUU0NzEHdW5pRTQ3Mgd1bmlFNTAwB3VuaUU1MDEHdW5pRTUwMgd1bmlFNTAzB3VuaUU1MDQHdW5pRTUwNQd1bmlFNTA2B3VuaUU1MDcHdW5pRTUwOAd1bmlFNTMwB3VuaUU1MzIHdW5pRTUzNAd1bmlFNTM1B3VuaUU1MzcHdW5pRTU2MAd1bmlFNTYyB3VuaUU1NjMHdW5pRTU2NQd1bmlFNTY3B3VuaUU1NjgHdW5pRTU4MAd1bmlFNTgxB3VuaUU1ODIHdW5pRTU4Mwd1bmlFNTg0B3VuaUU1ODUHdW5pRTU4Ngd1bmlFNTg3B3VuaUU1ODgHdW5pRTU4OQRFdXJvBEV1cm8AAQAB//8ADwABAAAADAAAABYAAAACAAEAAQBfAAEABAAAAAIAAAAAAAAAAQAAAADVpCcIAAAAANJrTZkAAAAA2DhhuQ==) format('truetype');
}
.uni-icon {
font-family: uniicons;
font-size: 24px;
font-weight: normal;
font-style: normal;
line-height: 1;
display: inline-block;
text-decoration: none;
-webkit-font-smoothing: antialiased;
}
.uni-icon.uni-active {
color: #007aff;
}
.uni-icon-contact:before {
content: '\e100';
}
.uni-icon-person:before {
content: '\e101';
}
.uni-icon-personadd:before {
content: '\e102';
}
.uni-icon-contact-filled:before {
content: '\e130';
}
.uni-icon-person-filled:before {
content: '\e131';
}
.uni-icon-personadd-filled:before {
content: '\e132';
}
.uni-icon-phone:before {
content: '\e200';
}
.uni-icon-email:before {
content: '\e201';
}
.uni-icon-chatbubble:before {
content: '\e202';
}
.uni-icon-chatboxes:before {
content: '\e203';
}
.uni-icon-phone-filled:before {
content: '\e230';
}
.uni-icon-email-filled:before {
content: '\e231';
}
.uni-icon-chatbubble-filled:before {
content: '\e232';
}
.uni-icon-chatboxes-filled:before {
content: '\e233';
}
.uni-icon-weibo:before {
content: '\e260';
}
.uni-icon-weixin:before {
content: '\e261';
}
.uni-icon-pengyouquan:before {
content: '\e262';
}
.uni-icon-chat:before {
content: '\e263';
}
.uni-icon-qq:before {
content: '\e264';
}
.uni-icon-videocam:before {
content: '\e300';
}
.uni-icon-camera:before {
content: '\e301';
}
.uni-icon-mic:before {
content: '\e302';
}
.uni-icon-location:before {
content: '\e303';
}
.uni-icon-mic-filled:before,
.uni-icon-speech:before {
content: '\e332';
}
.uni-icon-location-filled:before {
content: '\e333';
}
.uni-icon-micoff:before {
content: '\e360';
}
.uni-icon-image:before {
content: '\e363';
}
.uni-icon-map:before {
content: '\e364';
}
.uni-icon-compose:before {
content: '\e400';
}
.uni-icon-trash:before {
content: '\e401';
}
.uni-icon-upload:before {
content: '\e402';
}
.uni-icon-download:before {
content: '\e403';
}
.uni-icon-close:before {
content: '\e404';
}
.uni-icon-redo:before {
content: '\e405';
}
.uni-icon-undo:before {
content: '\e406';
}
.uni-icon-refresh:before {
content: '\e407';
}
.uni-icon-star:before {
content: '\e408';
}
.uni-icon-plus:before {
content: '\e409';
}
.uni-icon-minus:before {
content: '\e410';
}
.uni-icon-circle:before,
.uni-icon-checkbox:before {
content: '\e411';
}
.uni-icon-close-filled:before,
.uni-icon-clear:before {
content: '\e434';
}
.uni-icon-refresh-filled:before {
content: '\e437';
}
.uni-icon-star-filled:before {
content: '\e438';
}
.uni-icon-plus-filled:before {
content: '\e439';
}
.uni-icon-minus-filled:before {
content: '\e440';
}
.uni-icon-circle-filled:before {
content: '\e441';
}
.uni-icon-checkbox-filled:before {
content: '\e442';
}
.uni-icon-closeempty:before {
content: '\e460';
}
.uni-icon-refreshempty:before {
content: '\e461';
}
.uni-icon-reload:before {
content: '\e462';
}
.uni-icon-starhalf:before {
content: '\e463';
}
.uni-icon-spinner:before {
content: '\e464';
}
.uni-icon-spinner-cycle:before {
content: '\e465';
}
.uni-icon-search:before {
content: '\e466';
}
.uni-icon-plusempty:before {
content: '\e468';
}
.uni-icon-forward:before {
content: '\e470';
}
.uni-icon-back:before,
.uni-icon-left-nav:before {
content: '\e471';
}
.uni-icon-checkmarkempty:before {
content: '\e472';
}
.uni-icon-home:before {
content: '\e500';
}
.uni-icon-navigate:before {
content: '\e501';
}
.uni-icon-gear:before {
content: '\e502';
}
.uni-icon-paperplane:before {
content: '\e503';
}
.uni-icon-info:before {
content: '\e504';
}
.uni-icon-help:before {
content: '\e505';
}
.uni-icon-locked:before {
content: '\e506';
}
.uni-icon-more:before {
content: '\e507';
}
.uni-icon-flag:before {
content: '\e508';
}
.uni-icon-home-filled:before {
content: '\e530';
}
.uni-icon-gear-filled:before {
content: '\e532';
}
.uni-icon-info-filled:before {
content: '\e534';
}
.uni-icon-help-filled:before {
content: '\e535';
}
.uni-icon-more-filled:before {
content: '\e537';
}
.uni-icon-settings:before {
content: '\e560';
}
.uni-icon-list:before {
content: '\e562';
}
.uni-icon-bars:before {
content: '\e563';
}
.uni-icon-loop:before {
content: '\e565';
}
.uni-icon-paperclip:before {
content: '\e567';
}
.uni-icon-eye:before {
content: '\e568';
}
.uni-icon-arrowup:before {
content: '\e580';
}
.uni-icon-arrowdown:before {
content: '\e581';
}
.uni-icon-arrowleft:before {
content: '\e582';
}
.uni-icon-arrowright:before {
content: '\e583';
}
.uni-icon-arrowthinup:before {
content: '\e584';
}
.uni-icon-arrowthindown:before {
content: '\e585';
}
.uni-icon-arrowthinleft:before {
content: '\e586';
}
.uni-icon-arrowthinright:before {
content: '\e587';
}
.uni-icon-pulldown:before {
content: '\e588';
}
.uni-icon-closefill:before {
content: '\e589';
}
.uni-icon-sound:before {
content: "\e590";
}
.uni-icon-scan:before {
content: "\e612";
}
</style>
... ...
### NoticeBar 通告栏
通告栏组件,组件名:``uni-notice-bar``,代码块: uNoticeBar。
**使用方式:**
``script`` 中引用组件
```javascript
import uniNoticeBar from "@/components/uni-notice-bar/uni-notice-bar.vue"
export default {
components: {uniNoticeBar}
}
```
基本用法
```html
<uni-notice-bar
single="true"
text="[单行] 这是 NoticeBar 通告栏,这是 NoticeBar 通告栏,这是 NoticeBar 通告栏">
</uni-notice-bar>
<uni-notice-bar
text="[多行] 这是 NoticeBar 通告栏,这是 NoticeBar 通告栏,这是 NoticeBar 通告栏,这是 NoticeBar 通告栏">
</uni-notice-bar>
```
文字滚动
```html
<uni-notice-bar
show-icon="true"
scrollable="true" single="true"
text="[单行] 这是 NoticeBar 通告栏,这是 NoticeBar 通告栏,这是 NoticeBar 通告栏">
</uni-notice-bar>
```
显示图标
```html
<uni-notice-bar
show-icon="true"
text="[多行] 这是 NoticeBar 通告栏,这是 NoticeBar 通告栏,这是 NoticeBar 通告栏这是 NoticeBar 通告栏,这是 NoticeBar 通告栏,这是 NoticeBar 通告栏">
</uni-notice-bar>
```
显示关闭按钮
```html
<uni-notice-bar
show-close="true"
show-icon="true" text="这是 NoticeBar 通告栏,这是 NoticeBar 通告栏,这是 NoticeBar 通告栏">
</uni-notice-bar>
```
查看更多
```html
<uni-notice-bar
@getmore="getMore"
more-text="查看更多"
single="true"
text="[单行] 这是 NoticeBar 通告栏,这是 NoticeBar 通告栏,这是 NoticeBar 通告栏">
</uni-notice-bar>
```
**属性说明:**
|属性名|类型|默认值 |说明|
|---|----|---|---|
|text|String|-|显示文字|
|more-text|String|-|“查看更多”的文本,如果设置文字,NoticeBar为单行|
|speed|Number|100|文字滚动的速度,默认100px/秒|
|background-color|String|#fffbe8|背景颜色|
|color|String|#de8c17|文字颜色|
|single|Boolean|false|是否单行|
|scrollable|Boolean|false|是否滚动,为true时,NoticeBar为单行|
|show-icon|Boolean|false|是否显示左侧喇叭图标|
|show-close|Boolean|false|是否显示左侧关闭按钮|
**事件说明:**
|事件名称 |说明 |
|--- |--- |
|click |点击 NoticeBar 触发事件 |
|close |关闭 NoticeBar 触发事件 |
|getmore |点击”查看更多“时触发事件 |
Tips
* 组件实际运行效果参考:[https://github.com/dcloudio/uni-ui](https://github.com/dcloudio/uni-ui)
* npm 使用方式参考:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
* 由于H5端默认加了scope导致此组件的滚动功能将不会生效
\ No newline at end of file
... ...
<template>
<view v-if="show" class="uni-noticebar" :style="{backgroundColor:backgroundColor,color:color}" @click="onClick">
<view v-if="showClose === 'true' || showClose === true" class="uni-noticebar__close">
<uni-icon type="closefill" size="12"></uni-icon>
</view>
<view class="uni-noticebar__content" :class="setContenClass">
<view v-if="showIcon === 'true' || showIcon === true" class="uni-noticebar__content-icon" :style="{backgroundColor:backgroundColor,color:color}">
<uni-icon type="sound" size="14" :color="color"></uni-icon>
</view>
<view class="uni-noticebar__content-text" :class="setTextClass">
<!-- #ifdef H5 -->
<view class="uni-noticebar__content-inner" :id="elId" :style="{'animation-duration': animation,'-webkit-animation-duration': animation}">{{text}}</view>
<!-- #endif -->
<!-- #ifndef H5 -->
<view class="uni-noticebar__content-inner" :id="elId" :style="{'animation': animation,'-webkit-animation': animation}">{{text}}</view>
<!-- #endif -->
</view>
<view class="uni-noticebar__content-more" v-if="showGetMore === 'true' || showGetMore === true" @click="clickMore" :style="{width:moreText ? '180upx' : '20px'}">
<view class="uni-noticebar__content-more-text" v-if="moreText">{{moreText}}</view>
<uni-icon type="arrowright" size="14"></uni-icon>
</view>
</view>
</view>
</template>
<script>
import uniIcon from '../uni-icon/uni-icon.vue'
export default {
name: "uni-notice-bar",
components: {
uniIcon
},
props: {
text: String,
moreText: String,
backgroundColor: {
type: String,
default: '#fffbe8'
},
speed: { //默认1s滚动100px
default: 100
},
color: {
default: '#de8c17'
},
single: { //是否单行
default: false
},
scrollable: { //是否滚动,添加后控制单行效果取消
default: false
},
showIcon: { //是否显示左侧icon
default: false
},
showGetMore: { //是否显示右侧查看更多
default: false
},
showClose: { //是否显示左侧关闭按钮
default: false
}
},
data() {
const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
return {
elId: elId,
show: true,
animation: ''
}
},
watch: {
text(newValue, oldValue) {
this.$nextTick(() => {
setTimeout(this.setAnimation, 200)
})
}
},
computed: {
setTextClass() {
let classList = []
if (this.scrollable === true || this.scrollable === 'true') {
classList.push('uni-noticebar--scrollable')
} else {
if (this.single === 'true' || this.single === true || this.moreText) {
classList.push('uni-noticebar--single')
}
}
return classList
},
setContenClass() {
let classList = []
if (this.scrollable === true || this.scrollable === 'true' || this.single === 'true' || this.single === true ||
this.moreText) {
classList.push('uni-noticebar--flex')
}
return classList
}
},
mounted() {
this.setAnimation()
},
methods: {
clickMore() {
this.$emit('getmore')
},
onClick(e) {
let clientX = e.touches ? (e.touches[0] ? e.touches[0].clientX : e.changedTouches[0].clientX) : e.detail.clientX;
if (uni.upx2px(48) + 12 > clientX && (String(this.showClose) === 'true')) {
this.show = false
this.$emit('close')
}
this.$emit('click')
},
setAnimation() {
if (this.scrollable === false || this.scrollable === 'false') {
return;
}
//#ifdef MP-TOUTIAO
setTimeout(() => {
uni.createSelectorQuery().in(this).select(`#${this.elId}`).boundingClientRect().exec((ret) => {
console.log(ret)
this.animation = `notice ${ret[0].width / this.speed}s linear infinite both`;
});
}, 500)
// #endif
//#ifdef H5
setTimeout(() => {
uni.createSelectorQuery().in(this).select(`#${this.elId}`).boundingClientRect().exec((ret) => {
this.animation = `${ret[0].width / this.speed}s`;
});
}, 200)
// #endif
// #ifndef MP-TOUTIAO || H5
setTimeout(() => {
uni.createSelectorQuery().in(this).select(`#${this.elId}`).boundingClientRect().exec((ret) => {
this.animation = `notice ${ret[0].width / this.speed}s linear infinite both`;
});
}, 200)
// #endif
}
}
}
</script>
<style>
@charset "UTF-8";
.uni-noticebar {
padding: 12upx 24upx;
font-size: 24upx;
line-height: 1.5;
margin: 10upx 0;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
justify-content: left
}
.uni-noticebar__close {
color: #999;
margin-right: 24upx;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center
}
.uni-noticebar__content {
flex: 1;
overflow: hidden
}
.uni-noticebar__content.uni-noticebar--flex {
flex: 1;
display: flex;
flex-direction: row
}
.uni-noticebar__content-icon {
display: inline-block;
z-index: 1;
padding-right: 12upx
}
.uni-noticebar__content-more {
width: 180upx;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
justify-content: flex-end;
word-break: keep-all;
margin-left: 10upx;
color: #999
}
.uni-noticebar__content-more-text {
font-size: 24upx;
white-space: nowrap
}
.uni-noticebar__content-text {
word-break: break-all;
line-height: 1.5;
display: inline
}
.uni-noticebar__content-text.uni-noticebar--single {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden
}
.uni-noticebar__content-text.uni-noticebar--scrollable {
flex: 1;
display: block;
overflow: hidden
}
.uni-noticebar__content-text.uni-noticebar--scrollable .uni-noticebar__content-inner {
padding-left: 100%;
white-space: nowrap;
display: inline-block;
/* #ifdef H5 */
animation-name: notice;
animation-timing-function: linear;
animation-fill-mode: both;
animation-iteration-count: infinite;
/* #endif */
transform: translateZ(0)
}
.uni-noticebar__content-inner {
font-size: 24upx;
display: inline
}
@keyframes notice {
100% {
transform: translate3d(-100%, 0, 0)
}
}
</style>
\ No newline at end of file
... ...
<template>
<view class="uni-swiper__warp">
<slot></slot>
<view v-if="mode === 'default'" class="uni-swiper__dots-box" :style="{'bottom':dots.bottom + 'px'}">
<view class="uni-swiper__dots-item" v-for="(item,index) in info" :style="{
'width': dots.width + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
:key="index"></view>
</view>
<view v-if="mode === 'long'" class="uni-swiper__dots-box" :style="{'bottom':dots.bottom + 'px'}">
<view class="uni-swiper__dots-item " v-for="(item,index) in info" :class="[index === current&&'uni-swiper__dots-long']"
:style="{
'width':(index === current? dots.width*3:dots.width ) + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
:key="index"></view>
</view>
<view v-if="mode === 'nav'" class="uni-swiper__dots-box uni-swiper__dots-nav" :style="{'background-color':dotsStyles.backgroundColor}">
<view class="uni-swiper__dots-nav-item" :style="{'color':dotsStyles.color}">{{(current+1)+"/"+info.length}}
{{info[current][field]}}</view>
</view>
<view v-if="mode === 'indexes'" class="uni-swiper__dots-box" :style="{'bottom':dots.bottom + 'px'}">
<view class="uni-swiper__dots-item uni-swiper__dots-indexes" v-for="(item,index) in info" :style="{
'width':dots.width + 'px','height':dots.height +'px' ,'color':index === current?dots.selectedColor:dots.color,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
:key="index">{{index+1}}</view>
</view>
</view>
</template>
<script>
export default {
name: 'uni-swiper-dot',
props: {
info: {
type: Array,
default () {
return []
}
},
current: {
info: Number,
default: 0
},
dotsStyles: {
type: Object,
default () {
return {}
}
},
// 类型 :default(默认) indexes long nav
mode: {
type: String,
default: 'default'
},
// 只在 nav 模式下生效,变量名称
field: {
type: String,
default: ''
}
},
data() {
return {
dots: {
width: 8,
height: 8,
bottom: 10,
color: '#fff',
backgroundColor: 'rgba(0, 0, 0, .3)',
border: '1px rgba(0, 0, 0, .3) solid',
selectedBackgroundColor: '#333',
selectedBorder: '1px rgba(0, 0, 0, .9) solid'
}
};
},
created() {
if (this.mode === 'indexes') {
this.dots.width = 20
this.dots.height = 20
}
this.dots = Object.assign(this.dots, this.dotsStyles)
},
watch: {
dotsStyles(newVal) {
this.dots = Object.assign(this.dots, this.dotsStyles)
},
mode(newVal) {
if (newVal === 'indexes') {
this.dots.width = 20
this.dots.height = 20
} else {
this.dots.width = 8
this.dots.height = 8
}
}
}
}
</script>
<style>
.uni-swiper__warp {
position: relative;
width: 100%;
box-sizing: border-box;
overflow: hidden;
}
.uni-swiper__dots-box {
position: absolute;
bottom: 20upx;
display: flex;
justify-content: center;
align-items: center;
box-sizing: box-sizing;
width: 100%;
}
.uni-swiper__dots-item {
flex-shrink: 0;
width: 16upx;
border-radius: 50%;
margin-left: 12upx;
background: rgba(0, 0, 0, .3);
transition: all 0.2s linear;
}
.uni-swiper__dots-item:first-child {
margin: 0;
}
.uni-swiper__dots-default {
border-radius: 50%;
}
.uni-swiper__dots-long {
border-radius: 100upx;
}
.uni-swiper__dots-nav {
bottom: 0;
height: 80upx;
justify-content: flex-start;
background: rgba(0, 0, 0, 0.2);
box-sizing: box-sizing;
overflow: hidden;
}
.uni-swiper__dots-nav-item {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 28upx;
color: #fff;
box-sizing: box-sizing;
margin: 0 30upx;
}
.uni-swiper__dots-indexes {
display: flex;
justify-content: center;
align-items: center;
color: #fff;
font-size: 24upx;
}
</style>
... ...
import Vue from 'vue'
import App from './App'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
... ...
{
"name" : "clockIn",
"appid" : "",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
/* 5+App特有相关 */
"app-plus" : {
"usingComponents" : true,
"nvueCompiler" : "uni-app",
"compilerVersion" : 3,
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
},
/* 模块配置 */
"modules" : {},
/* 应用发布信息 */
"distribute" : {
/* android打包配置 */
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
/* ios打包配置 */
"ios" : {},
/* SDK配置 */
"sdkConfigs" : {}
}
},
/* 快应用特有相关 */
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
"appid" : "wx1f51f42105b63343",
"setting" : {
"urlCheck" : false
},
"usingComponents" : true,
"permission" : {
"scope.userLocation" : {
"desc" : ""
}
}
},
"mp-alipay" : {
"usingComponents" : true
},
"mp-baidu" : {
"usingComponents" : true
},
"mp-toutiao" : {
"usingComponents" : true
}
}
... ...
{
"pages": [
//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
// 发现
// 授权
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "发现",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/start/start",
"style": {
"navigationBarTitleText": "赋能师成长数据化",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
// 个人中心
{
"path": "pages/mine/circlepic",
"style": {
"navigationBarTitleText": "个人中心",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
// 个人中心
{
"path": "pages/mine/mine",
"style": {
"navigationBarTitleText": "个人中心",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/mine/allrecordlist",
"style": {
"navigationBarTitleText": "全部打卡记录",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
// 评论
{
"path": "pages/course/courseComment",
"style": {
"navigationBarTitleText": "评论",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/mine/changeinfo",
"style": {
"navigationBarTitleText": "个人信息",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
// 课程列表
{
"path": "pages/course/course",
"style": {
"navigationBarTitleText": "课程列表",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
// 课程介绍
{
"path": "pages/course/courseIntro",
"style": {
"navigationBarTitleText": "课程介绍",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
// 课程详情
{
"path": "pages/course/courseDetail",
"style": {
"navigationBarTitleText": "课程详情",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
// 打卡提交
{
"path": "pages/course/submitClock",
"style": {
"navigationBarTitleText": "提交内容",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
// 打卡记录
{
"path": "pages/course/recordClock",
"style": {
"navigationBarTitleText": "打卡记录",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
},
"tabBar": {
"color": "#BDC4CE",
"selectedColor": "#EE8B27",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [{
"pagePath": "pages/index/index",
"iconPath": "static/index_01.png",
"selectedIconPath": "static/index_06.png",
"text": "首页"
},
{
"pagePath": "pages/course/course",
"iconPath": "static/index_02.png",
"selectedIconPath": "static/index_05.png",
"text": "课程列表"
},
{
"pagePath": "pages/mine/mine",
"iconPath": "static/index_03.png",
"selectedIconPath": "static/index_04.png",
"text": "个人中心"
}
]
}
}
... ...
<template>
<view class="content">
<view class="nodatabox" v-if="courselist.length==0">
<view class="noimg">
<image src="../../static/nodata.png" mode=""></image>
</view>
<view class="zanwushu">暂无内容</view>
<view class="gocourse" @click="goindex">快前往首页解锁课程添加内容吧</view>
</view>
<view class="courselist" v-else>
<view class='courseitem' v-for="(item,index) in courselist" :key="index">
<view class="itemtopname flexone">
<text class="itemtitle">{{item.title}}</text>
</view>
<view class="textcontent flexone">
<view class="textcontentk textcontentleft flexone">
总课时 <text class='kejie'>{{item.lesson}}</text> 课
</view>
<view class="textcontentk textcontentleft youtext flexone">
已完成 <text class='kejie'>{{item.user_lesson}}</text> 课
</view>
<view class="finishimg" v-if="item.state==2">
<image src="../../static/finish.png" mode=""></image>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import app from "../../App.vue";
export default {
data() {
return {
courselist: [],
page:1,
pageNum:10
}
},
methods: {
sure() {
uni.navigateTo({
url: '../registerone/registerone'
})
},
// 获取课程列表
getcourselist(){
let that=this;
let url = "/api/course/course_list";
let param = {
page: that.page,
pageNum: that.pageNum
};
app.post(url, param, 'get').then(r => {
console.log(r)
that.courselist=r.list
}).catch(err => {
console.log(err)
})
},
// 前往首页
goindex(){
uni.switchTab({
url:'/pages/index/index'
})
},
},
onLaunch: function() {
console.log('App Launch,app启动')
},
onShow: function() {
console.log('App Show,app展现在前台')
this.getcourselist();
},
onHide: function() {
console.log('App Hide,app不再展现在前台')
},
onLoad() {
},
}
</script>
<style>
image {
width: 100%;
height: 100%;
}
page {
background: #FCFBFE;
}
.youtext{
margin-left:56rpx;
}
.content {
padding: 32rpx;
box-sizing: border-box;
}
.itemtopname {
color: #3D444D;
font-size: 28rpx;
}
.textcontent {
margin-top: 40rpx;
}
.textcontentk {
color: #8C9198;
font-size: 24rpx;
}
.kejie {
color: #EE8B27;
font-size: 32rpx;
margin: 0 8rpx;
}
.itemname {
color: #3D444D;
font-size: 28rpx;
}
.itemtext {
margin-left: 20rpx;
}
.courseitem {
width: 686rpx;
background: rgba(255, 255, 255, 1);
box-shadow: 0rpx 0rpx 6rpx rgba(0, 0, 0, 0.04);
opacity: 1;
border-radius: 8rpx;
padding: 44rpx 30rpx;
box-sizing: border-box;
margin: 0 auto 24rpx;
background: #fff;
position: relative;
}
.finishimg{
width:171rpx;
height:171rpx;
font-size: 0;
position: absolute;
right:0;
top:0;
}
.zanwushu {
color: #8C9198;
font-size: 28rpx;
margin-top: 86rpx;
text-align: center;
}
.gocourse {
color: #06121E;
font-size: 32rpx;
margin-top: 32rpx;
text-align: center;
}
.noimg {
width: 528rpx;
height: 441rpx;
font-size: 0;
margin: 168rpx auto 0;
}
</style>
... ...
<template>
<!-- 评论 -->
<view class="course_comment">
<view class="comment_content">
<textarea v-model="content" placeholder="请输入评论内容,最多1000字" />
<!-- 字数 -->
<view class="word_num">{{content.length}}/1000</view>
<view v-if="addpic">
<!-- 添加图片 -->
<view class="add_pic layer_star" @click="uploadpic">
<image src="../../static/tupian_icon@2x.png" mode="widthFix"></image>
<view class="add_word">添加图片</view>
</view>
</view>
<view class="picbox" v-else>
<!-- 上传的图片 -->
<view class="upload_pic" @click="uploadImg()">
<image :src="img" mode="widthFix"></image>
</view>
</view>
</view>
<!-- 按钮 -->
<view class="send_wrap">
<view class="send_box">发送</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
content:"",
img:"../../static/addpic.png",
addpic:true
}
},
methods: {
uploadpic(){
console.log(3874273487)
this.addpic=false
},
// 上传图片
uploadImg(){
let t = this;
uni.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: chooseImageRes => {
const tempFilePaths = chooseImageRes.tempFilePaths;
this.img = tempFilePaths[0]
// App.upload(tempFilePaths[0]).then(res => {
// this.front_image = res.url;
// });
}
});
},
},
}
</script>
<style lang="scss">
page{
background-color: #fafbfd;
}
.picbox{
margin-top:85rpx;
}
.course_comment{
padding: 36upx 32upx 150upx;
// 信息
.comment_content{
position: relative;
border:2upx solid rgba(189,196,206,1);
padding: 26upx 28upx 50upx;
background-color: #fff;
textarea{
width: 100%;
box-sizing: border-box;
height: 500upx;
}
// 添加图片
.add_pic{
position: absolute;
left: 26upx;
bottom: 14upx;
image{
width: 36upx;
margin-right: 12upx;
}
.add_word{
color: #3D444D;
font-size: 24upx;
border-bottom: 1px solid #000;
}
}
// 字数
.word_num{
position: absolute;
right: 26upx;
top: 530upx;
color: #3D444D;
font-size: 24upx;
}
}
// 上传的图片
.upload_pic{
width:200upx;
height:200upx;
font-size:0;
}
// 按钮
.send_wrap{
width: 100%;
position: fixed;
left: 0;
padding-bottom: 36upx;
bottom:0;
left:0;
display:flex;
justify-content: center;
background: #fff;
.send_box{
width:686upx;
margin: 0 32upx;
height: 96upx;
text-align: center;
line-height: 96upx;
border-radius: 48upx;
color: #fff;
background-color: #EE8B27;
font-size: 28upx;
}
}
}
</style>
... ...
<template>
<!-- 课程详情 -->
<view class="course_detail">
<!-- 关卡 -->
<view class="checkpoint_wrap layer_between">
<view class="prev_point" v-if="pre!=''" @click="prestep">上一关</view>
<view class="point_num">第 {{number}} 关</view>
<view class="prev_point" @click="nextstep" wx:if="next!=''">下一关</view>
</view>
<!-- 主题 -->
<view class="theme_wrap">
<!-- 标题 -->
<view class="theme_title layer_star">
<image src="../../static/theme.png" mode="widthFix"></image>
<view class="">{{coursedetail.title}}</view>
</view>
<!-- 图片 -->
<view class="theme_pic" @click="enlargeImg()">
<image :src="coursedetail.image" mode="widthFix"></image>
</view>
<!-- 内容 -->
<view class="theme_content" v-html="coursedetail.content">
<!-- 基值支义们京候么眼革下使叫。南石很样好清少去准连究志议构。调研而手开求况做体式达高心置过。装切此报列明子马世志再部增心。
般于须子展新五复通可南成群置接。为技经再议制选时据派断这队片全府好。况感速记中上相组低拉素道北始论与。属书研置约适商才联太的七情力类。
你理边率他次与关好期起金志单马切红。主严拉青民解格速七取学复才太马。前属口质次意指有研叫后先按此。
省每前称非美事起也半专我料叫此没。学想象这志究反规空家很便老。位转信由江空能手立和级各素面亲。认安应活按开重细强说标将研力。生机除打万复办开不场始先值标清。 -->
</view>
<!-- 图片 -->
<!-- <view class="theme_pic" @click="enlargeImg()">
<image src="../../static/theme_01.png" mode="widthFix"></image>
</view> -->
<!-- 按钮 -->
<view class="point_btn" @click="toSubmit()">我要打卡</view>
<!-- 放大图片 -->
<!-- <view class="tx_mask" v-if="isShowImg" @click="closeTheme"></view>
<view class="mask_img" v-if="isShowImg">
<image :src="img" mode="widthFix"></image>
</view> -->
</view>
<!-- 评论 -->
<view class="theme_comment">
<view class="comment_single">
<!-- 人员信息 -->
<view class="single_people layer_between">
<!-- 左侧 -->
<view class="people_l layer_nostar">
<!-- 头像 -->
<image src="../../static/header.png" mode="" @click="toRecord()"></image>
<view class="">
<!-- 姓名 -->
<view class="people_name">张三</view>
<!-- 课程进度 -->
<view class="people_progress">已解锁2课时</view>
</view>
</view>
<!-- 右侧 -->
<view class="people_r" @click="toSubmit()">修改</view>
</view>
<!-- 课程信息 -->
<view class="single_course">
<!-- 课程名称 -->
<view class="layer_star course_name course_single">
<image class="course_icon" src="../../static/icon_01.png" mode=""></image>
<view class="">【深潜挑战】 21天专注力挑战</view>
</view>
<view class="layer_star course_single">
<image class="course_icon" src="../../static/icon_02.png" mode=""></image>
<view class="">第2课</view>
</view>
<view class="layer_star no_icon_single">
<view class="">学习时间:2019年12月26日</view>
</view>
<view class="layer_star no_icon_single">
<view class="">感悟:好</view>
</view>
<view class="layer_star no_icon_single">
完成事件打分:
<picker mode="selector" :range="completeList" @change="changeComplete">
<view class="score_picker layer_between">
<view>{{ completeList[complete] ? completeList[complete] : '请打分' }}</view>
<image src="../../static/start_01.png" mode="widthFix"></image>
</view>
</picker>
</view>
<view class="layer_star no_icon_single">
情绪状态打分:
<picker mode="selector" :range="completeList" @change="changeComplete">
<view class="score_picker layer_between">
<view>{{ completeList[complete] ? completeList[complete] : '请打分' }}</view>
<image src="../../static/start_01.png" mode="widthFix"></image>
</view>
</picker>
</view>
<!-- 评论、点赞按钮 -->
<view class="layer_noend">
<view class="course_btn justify_between">
<image src="../../static/pinglun_icon@2x.png" mode="widthFix"></image>
评论
</view>
<view class="course_btn justify_between" :class="{active:isPoint}" @click="changePoint()">
<image :src="isPoint?pointImg2:pointImg1" mode="widthFix"></image>
点赞
</view>
</view>
</view>
<!-- 评论、点赞信息 -->
<view class="comment_msg">
<!-- 点赞人员 -->
<view class="point_people layer_nostar">
<image src="../../static/dianzan_icon@2x.png" mode="widthFix"></image>
<view class="point_detail flex_wrap_no">
<view class="" v-for="(item, index) in pointList" :key="index">{{ item }},</view>
</view>
</view>
<!-- 评论信息 -->
<view class="msg_detail">
<view class="detail_single ">
<text>风格林:</text>
有意义的人,并不就是年岁活得最大的人,而是对生活最有感受的人。
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import app from "../../App.vue";
export default {
data() {
return {
isShowImg: false,
img: '',
themeImg: require('../../static/banner_img@2x.png'),
completeList: ['1', '2', '3'],
complete: '',
// 点赞
isPoint: false,
pointImg1: require("../../static/zan_icon@2x.png"),
pointImg2: require("../../static/img_03.png"),
// 点赞人员
pointList: ['关心', '思想是根基', '陈cc', '莫妮卡', '莫妮卡', '大鹏', '思想是根基', '陈cc', '思想是根基', '陈cc', '莫妮卡'],
courseid: '',
coursedetail: '',
next:'',
pre:'',
number:1
};
},
methods: {
//获取课程详情
getcoursedetail() {
let that = this;
var url = '/api/course/customs_detail';
var params = {
course_id: that.courseid,
}
app.post(url, params).then((res) => {
console.log(res);
that.coursedetail = res
that.getcordlist()
}).catch((err) => {
})
},
// 获取打卡记录
getcordlist() {
let that = this;
console.log(77889900)
var url = '/api/clock/clock_log';
var params = {
course_id: that.coursedetail.course_id,
customs_id: that.coursedetail.id
}
app.post(url, params).then((res) => {
console.log(res);
}).catch((err) => {
})
},
prestep(){
var that=this;
that.number++;
var url = '/api/course/customs_choose';
var params = {
// course_id: that.courseid,
// customs_id:that.coursedetail.id
course_id: 1,
customs_id: 1
}
app.post(url, params).then((res) => {
console.log(res);
that.next=res.next;
that.per=res.pre
if (res.next != '') {
that.coursedetail = res.next;
} else(
uni.showToast({
title: '没有下一关了',
icon: "none"
})
)
}).catch((err) => {
})
},
nextstep(){
var that = this;
that.number++;
var url = '/api/course/customs_choose';
var params = {
// course_id: that.courseid,
// customs_id:that.coursedetail.id
course_id: 1,
customs_id: 1
}
app.post(url, params).then((res) => {
console.log(res);
that.next=res.next;
that.per=res.pre
if (res.next != '') {
that.coursedetail = res.next;
} else(
uni.showToast({
title: '没有下一关了',
icon: "none"
})
)
}).catch((err) => {
})
},
// 去打卡记录页
toRecord() {
uni.navigateTo({
url: "/pages/course/recordClock"
})
},
// 去提交打卡页
toSubmit() {
uni.navigateTo({
url:'/pages/course/submitClock?courseid='+this.courseid+'&custom_id='+this.coursedetail.id
})
},
// 完成事件打分
changeComplete(e) {
this.complete = e.detail.value;
},
// 放大图片
enlargeImg() {
this.isShowImg = true;
this.img = this.themeImg;
},
// 关闭弹窗
closeTheme() {
this.isShowImg = false;
},
// 点赞
changePoint() {
this.isPoint = !this.isPoint
},
},
onShow() {},
onLoad(options) {
console.log(options)
this.courseid = options.id;
this.getcoursedetail()
}
};
</script>
<style lang="scss">
page {
background-color: #fafbfd;
}
.course_detail {
// 关卡
.checkpoint_wrap {
background-color: #fff;
height: 100upx;
padding: 0 32upx;
border-bottom: 24upx solid #fafbfd;
// 上下关卡
.prev_point {
width: 112upx;
height: 48upx;
border: 1px solid rgba(238, 139, 39, 1);
border-radius: 8upx;
text-align: center;
line-height: 48upx;
font-size: 24upx;
color: #ee8b27;
}
// 第几关
.point_num {
color: #06121e;
font-size: 28upx;
}
}
// 主题
.theme_wrap {
background-color: #fff;
padding: 50upx 32upx;
.theme_title {
color: #595959;
font-size: 36upx;
image {
width: 32upx;
margin-right: 18upx;
}
}
// 图片
.theme_pic {
width: 100%;
// height: 248upx;
margin: 34upx 0;
}
// 内容
.theme_content {
color: #06121e;
font-size: 24upx;
text-align: left;
}
// 按钮
.point_btn {
width: 338upx;
height: 96upx;
background: rgba(238, 139, 39, 1);
box-shadow: 0px 6upx 6upx rgba(238, 139, 39, 0.16);
border-radius: 48upx;
text-align: center;
line-height: 96upx;
color: #fff;
font-size: 28upx;
margin: 0 auto;
}
}
// 课程评论
.theme_comment {
padding: 32upx;
// 单个
.comment_single {
background: rgba(255, 255, 255, 1);
box-shadow: 0px 0px 6upx rgba(0, 0, 0, 0.04);
border-radius: 8upx;
padding: 56upx 32upx;
margin-bottom: 32upx;
// 人员信息
.single_people {
border-bottom: 1px solid #707070;
padding-bottom: 42upx;
// 左侧
.people_l {
// 头像
image {
width: 92upx;
height: 92upx;
margin-right: 32upx;
}
// 姓名
.people_name {
color: #06121e;
font-size: 32upx;
margin-bottom: 12upx;
}
// 课程进度
.people_progress {
color: #8c9198;
font-size: 24upx;
}
}
// 右侧
.people_r {
width: 112upx;
height: 56upx;
border: 1px solid rgba(238, 139, 39, 1);
border-radius: 8upx;
color: #ee8b27;
font-size: 24upx;
text-align: center;
line-height: 56upx;
}
}
// 课程信息
.single_course {
padding: 42upx 0;
font-size: 28upx;
color: #06121e;
.course_icon {
width: 32upx;
height: 32upx;
}
.course_name {
color: #ee8b27;
}
.course_single {
margin-bottom: 14upx;
image {
margin-right: 20upx;
}
view {
width: 432upx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
// 无图标
.no_icon_single {
padding-left: 52upx;
font-size: 28upx;
color: #06121e;
margin-bottom: 14upx;
// 选择框
.score_picker {
width: 156upx;
height: 46upx;
background: rgba(249, 249, 249, 1);
border-radius: 8upx;
padding: 0 12upx 0 46upx;
color: #bdc4ce;
font-size: 24upx;
image {
width: 20upx;
}
}
}
// 评论、点赞图标
.course_btn {
padding: 12upx 28upx;
border: 2upx solid rgba(140, 145, 152, 1);
border-radius: 8upx;
margin-left: 24upx;
margin-top: 34upx;
image {
width: 32upx;
margin-right: 14upx;
}
}
.active {
border-color: #FF7441;
color: #FF7441;
}
}
// 评论信息
.comment_msg {
border-top: 1px solid #eee;
padding-top: 30upx;
// 点赞人员
.point_people {
margin-bottom: 28upx;
image {
width: 32upx;
margin-right: 22upx;
}
.point_detail {
color: #bdc4ce;
font-size: 28upx;
width: 556upx;
}
}
// 评论信息
.msg_detail {
color: #5b5e63;
font-size: 28upx;
.detail_single {
margin-bottom: 16upx;
text {
color: #ee8b27;
font-weight: 600;
margin-right: 10upx;
}
}
}
}
}
}
}
</style>
... ...
<template>
<!-- 课程介绍 -->
<view class="course_intro">
<!-- 课程名称 -->
<view class="intro_title">{{ title }}</view>
<!-- banner -->
<view class="intro_banner">
<view class="banner_box">
<image :src="item.image" mode=""></image>
<!-- 分享 -->
<view class="intro_share layout_row" >
<image src="../../static/fenxiang_icon@2x.png" mode="widthFix"></image>
分享
<button open-type="share"></button>
</view>
</view>
</view>
<!-- 课程介绍 -->
<view class="course_des">
<!-- 标题 -->
<view class="descrip_title">课程介绍</view>
<!-- 介绍内容 -->
<view class="intro" v-html="item.content">
</view>
<view class="contentimg">
<image :src="item.image" mode=""></image>
</view>
</view>
<!-- 进入课程 按钮 -->
<view class="join_box">
<view class="join_course" @click="toDetail()">进入课程</view>
</view>
<!-- 返回首页 -->
<view class="back_index column_center" @click="toIndex">
<image src="../../static/shouye_icon@2x.png" mode=""></image>
首页
</view>
</view>
</template>
<script>
import app from "../../App.vue";
export default {
data() {
return {
title: '【深潜挑战】 21天',
content:"",
courseid:'',
item:'',
};
},
methods: {
// 介绍内容 后台的富文本数据
onEditorReady() {
let t = this;
uni.createSelectorQuery()
.select('#editorDetail')
.context(res => {
this.editorCtx = res.context;
let content = {
html: t.content
};
this.editorCtx.setContents(content); //设置富文本编辑器的内容
})
.exec();
},
// 进入课程
toDetail(){
let token=uni.getStorageSync("token")
if(token==''){
uni.showToast({
title:'请先登录',
icon:'none'
})
setTimeout(function(){
uni.navigateTo({
url:'/pages/index/index'
})
},1500)
}else{
uni.navigateTo({
url:"/pages/course/courseDetail?id="+this.item.id
})
}
},
// 返回首页
toIndex(){
uni.navigateBack({
delta:2
})
},
},
onShareAppMessage(res) {
if (res.from === 'button') {
// 来自页面内分享按钮
console.log(res.target);
}
return {
title: '自定义分享标题',
path: '/pages/test/test?id=123'
};
},
onLoad(options){
var item=wx.getStorageSync("item");
// item=JSON.parse(item);
console.log(item)
// var itemname=JSON.parse(options.item);
// console.log(item)
this.item=item
},
onShareAppMessage: function (res) {
var that = this;
// 来自页面内转发按钮
return {
title: '分享',
path: "/pages/course/courseIntro?id="+that.item.id
}
}
};
</script>
<style lang="scss">
.intro{
width:686rpx;
color:#06121E;
font-size: 24rpx;
margin:28rpx auto 0;
}
.course_intro {
.intro_title {
font-weight: 600;
color: #000;
font-size: 36upx;
padding: 20upx 0;
text-align: center;
}
// banner
.intro_banner {
background-color: #fafbfd;
padding: 42upx 32upx;
.banner_box {
width: 100%;
height: 248upx;
position: relative;
image {
border-radius: 20upx;
}
// 分享
.intro_share {
position: absolute;
width: 122upx;
height: 50upx;
background-color: #06121e;
opacity: 0.54;
border-radius: 40upx 0 0 40upx;
top: 42upx;
right: 0;
color: #fff;
font-size: 24upx;
image {
width: 24upx;
margin: 0 8upx 0 22upx;
}
button{
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 3;
opacity: 0;
}
}
}
}
// 课程介绍
.course_des{
padding: 50upx 32upx;
// 标题
.descrip_title{
position: relative;
margin-left: 24upx;
color: #595959;
font-size: 36upx;
margin-bottom: 28upx;
&::after{
content: '';
position: absolute;
top: 50%;
transform: translateY(-50%);
left: -24upx;
width: 12upx;
height: 30upx;
background-color: #EE8B27;
}
}
}
// 进入课程
.join_box{
width: 100%;
position: fixed;
bottom: 0;
left:0;
background: #fff;
padding-bottom: 32rpx;
.join_course{
margin: 0 32upx;
height: 96upx;
background-color: #EE8B27;
overflow-block: #fff;
text-align: center;
line-height: 96upx;
border-radius: 48upx;
box-shadow:0px 6px 6px rgba(238,139,39,0.16);
font-size: 28upx;
margin-top: 60upx;
color: #fff;
}
}
// 返回首页
.back_index{
width:80upx;
height:80upx;
background:rgba(0,0,0,1);
border-radius:50%;
opacity:0.63;
position: fixed;
right: 0;
top: 50%;
transform: translateY(-50%);
text-align: center;
color: #fff;
font-size: 20upx;
image{
width: 32upx;
height: 32upx;
margin: 0 auto 4upx;
}
}
}
</style>
... ...
<template>
<!-- 打卡记录 -->
<view class="record_clock">
<!-- 打卡人信息 -->
<view class="record_people layer_nostar">
<view class="people_l layer_nostar">
<!-- 头像 -->
<image src="../../static/header.png" mode="" @click="toRecord()"></image>
<view class="">
<!-- 姓名 -->
<view class="people_name">张三</view>
<!-- 课程进度 -->
<view class="people_progress">已解锁2课时</view>
</view>
</view>
</view>
<!-- 本次打卡记录 -->
<view class="record_msg">
<!-- 课程信息 -->
<view class="record_course">
<!-- 右侧 -->
<view class="people_r" @click="toSubmit()">修改</view>
<!-- 课程名称 -->
<view class="layer_star course_name course_single">
<image class="course_icon" src="../../static/icon_01.png" mode=""></image>
<view class="">【深潜挑战】 21天专注力挑战</view>
</view>
<view class="layer_star course_single">
<image class="course_icon" src="../../static/icon_02.png" mode=""></image>
<view class="">第2课</view>
</view>
<view class="layer_star no_icon_single"><view class="">学习时间:2019年12月26日</view></view>
<view class="layer_star no_icon_single"><view class="">感悟:好</view></view>
<view class="layer_star no_icon_single">
完成事件打分:
<picker mode="selector" :range="completeList" @change="changeComplete">
<view class="score_picker layer_between">
<view>{{ completeList[complete] ? completeList[complete] : '请打分' }}</view>
<image src="../../static/start_01.png" mode="widthFix"></image>
</view>
</picker>
</view>
<view class="layer_star no_icon_single">
情绪状态打分:
<picker mode="selector" :range="completeList" @change="changeComplete">
<view class="score_picker layer_between">
<view>{{ completeList[complete] ? completeList[complete] : '请打分' }}</view>
<image src="../../static/start_01.png" mode="widthFix"></image>
</view>
</picker>
</view>
<!-- 评论、点赞按钮 -->
<view class="layer_noend">
<view class="course_btn justify_between" @click="toComment()">
<image src="../../static/pinglun_icon@2x.png" mode="widthFix"></image>
评论
</view>
<view class="course_btn justify_between" :class="{ active: isPoint }" @click="changePoint()">
<image :src="isPoint ? pointImg2 : pointImg1" mode="widthFix"></image>
点赞
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
completeList: ['1', '2', '3'],
complete: '',
// 点赞
isPoint:false,
pointImg1:require("../../static/zan_icon@2x.png"),
pointImg2:require("../../static/img_03.png"),
};
},
methods: {
// 去提交打卡页
toSubmit(){
uni.navigateTo({
url:"/pages/course/submitClock"
})
},
// 去评论页
toComment(){
uni.navigateTo({
url:"/pages/course/courseComment"
})
},
// 完成事件打分
changeComplete(e) {
this.complete = e.detail.value;
},
// 点赞
changePoint(){
this.isPoint = !this.isPoint
},
},
};
</script>
<style lang="scss">
page{
background-color: #fafbfd;
}
.record_clock {
// 打卡人信息
.record_people {
padding: 62upx 32upx;
height: 254upx;
background-color: #ee8b27;
// 左侧
.people_l {
color: #fff;
// 头像
image {
width: 92upx;
height: 92upx;
margin-right: 32upx;
}
// 姓名
.people_name {
font-size: 32upx;
margin-bottom: 12upx;
}
// 课程进度
.people_progress {
font-size: 24upx;
}
}
}
// 本次打卡记录
.record_msg {
padding: 0 32upx;
.record_course {
position: relative;
margin-top: -172upx;
background-color: #fff;
box-shadow: 0 0 12upx rgba(0, 0, 0, 0.04);
border-radius: 8upx;
padding: 56upx 32upx;
// 修改按钮
.people_r {
width: 112upx;
height: 56upx;
position: absolute;
top: 56upx;
right: 32upx;
border: 1px solid rgba(238, 139, 39, 1);
border-radius: 8upx;
color: #ee8b27;
font-size: 24upx;
text-align: center;
line-height: 56upx;
}
.course_icon {
width: 32upx;
height: 32upx;
}
.course_name {
color: #ee8b27;
}
.course_single {
margin-bottom: 14upx;
image {
margin-right: 20upx;
}
view{
width: 432upx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
// 无图标
.no_icon_single {
padding-left: 52upx;
font-size: 28upx;
color: #06121e;
margin-bottom: 14upx;
// 选择框
.score_picker {
width: 156upx;
height: 46upx;
background: rgba(249, 249, 249, 1);
border-radius: 8upx;
padding: 0 12upx 0 46upx;
color: #bdc4ce;
font-size: 24upx;
image {
width: 20upx;
}
}
}
// 评论、点赞
.course_btn {
padding: 12upx 28upx;
color: #8C9198;
font-size: 24upx;
border: 2upx solid rgba(140, 145, 152, 1);
border-radius: 8upx;
margin-left: 24upx;
margin-top: 34upx;
image {
width: 32upx;
margin-right: 14upx;
}
}
.active {
border-color: #ff7441;
color: #ff7441;
}
}
}
}
</style>
... ...