h&&bK?K:L,D=D>K?K:D,M=M>K?K:M,R=R>K?K:R,L=L<0?0:L,D=D<0?0:D,M=M<0?0:M,R=R<0?0:R,r.arc(P+L,C+L,L,-Math.PI,-Math.PI/2),r.arc(P+E-D,C+D,D,-Math.PI/2,0),r.arc(P+E-M,C+F-M,M,0,Math.PI/2),r.arc(P+R,C+F-R,R,Math.PI/2,Math.PI)}else r.moveTo(k,w.y),r.lineTo(k+w.width,w.y),r.lineTo(k+w.width,t.height-t.area[2]),r.lineTo(k,t.height-t.area[2]),r.lineTo(k,w.y),r.setLineWidth(1),r.setStrokeStyle(O);r.setFillStyle(T),r.closePath(),r.fill()}}break;case"stack":x=ye(m,v,y,s,c,t,n,u,e,o);d.push(x),x=ue(x,c,e.length,u,n,t,e);for(var j=0;jh&&j0&&(S-=U),r.setFillStyle(T),r.moveTo(k,z.y),r.fillRect(k,z.y,z.width,S),r.closePath(),r.fill()}}break;case"meter":x=pe(m,v,y,s,c,t,n,o);d.push(x),x=le(x,c,e.length,u,n,t,l.meterBorder);for(var B=0;Bh&&B0&&(r.setStrokeStyle(a.color),r.setLineWidth(l.meterBorder*t.pix)),0==u?r.setFillStyle(l.meterFillColor):r.setFillStyle(N.color||a.color);k=N.x-N.width/2,S=t.height-N.y-t.area[2];if(l.barBorderRadius&&4===l.barBorderRadius.length||!0===l.barBorderCircle){var W=k,H=N.y,Z=N.width,V=t.height-t.area[2]-N.y;l.barBorderCircle&&(l.barBorderRadius=[Z/2,Z/2,0,0]);var q=i(l.barBorderRadius,4),J=q[0],X=q[1],G=q[2],Q=q[3],Y=Math.min(Z/2,V/2);J=J>Y?Y:J,X=X>Y?Y:X,G=G>Y?Y:G,Q=Q>Y?Y:Q,J=J<0?0:J,X=X<0?0:X,G=G<0?0:G,Q=Q<0?0:Q,r.arc(W+J,H+J,J,-Math.PI,-Math.PI/2),r.arc(W+Z-X,H+X,X,-Math.PI/2,0),r.arc(W+Z-G,H+V-G,G,0,Math.PI/2),r.arc(W+Q,H+V-Q,Q,Math.PI/2,Math.PI),r.fill()}else r.moveTo(k,N.y),r.lineTo(k+N.width,N.y),r.lineTo(k+N.width,t.height-t.area[2]),r.lineTo(k,t.height-t.area[2]),r.lineTo(k,N.y),r.fill();0==u&&l.meterBorder>0&&(r.closePath(),r.stroke())}}break}})),!1!==t.dataLabel&&1===o&&e.forEach((function(i,a){var u,d,f;u=[].concat(t.chartData.yAxisData.ranges[i.index]),d=u.pop(),f=u.shift();var h=i.data;switch(l.type){case"group":var p=pe(h,d,f,s,c,t,n,o);p=se(p,c,e.length,a,n,t),Oe(p,i,n,r,t);break;case"stack":p=ye(h,d,f,s,c,t,n,a,e,o);Oe(p,i,n,r,t);break;case"meter":p=pe(h,d,f,s,c,t,n,o);Oe(p,i,n,r,t);break}})),r.restore(),{xAxisPoints:s,calPoints:d,eachSpacing:c}}function ze(e,t,n,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,a=t.chartData.xAxisData,s=a.xAxisPoints,c=a.eachSpacing,l=u({},{type:"mount",widthRatio:1,borderWidth:1,barBorderCircle:!1,barBorderRadius:[],linearType:"none",linearOpacity:1,customColor:[],colorStop:0},t.extra.mount);l.widthRatio=l.widthRatio<=0?0:l.widthRatio,l.widthRatio=l.widthRatio>=2?2:l.widthRatio;r.save();var d,h,p,g=-2,v=s.length+2;t._scrollDistance_&&0!==t._scrollDistance_&&!0===t.enableScroll&&(r.translate(t._scrollDistance_,0),g=Math.floor(-t._scrollDistance_/c)-2,v=g+t.xAxis.itemCount+4),l.customColor=w(l.linearType,l.customColor,e,n),d=[].concat(t.chartData.yAxisData.ranges[0]),h=d.pop(),p=d.shift();var y=ge(e,h,p,s,c,t,l,o);switch(l.type){case"bar":for(var m=0;mg&&mM?M:F,I=I>M?M:I,L=L>M?M:L,D=D>M?M:D,F=F<0?0:F,I=I<0?0:I,L=L<0?0:L,D=D<0?0:D,r.arc(O+F,_+F,F,-Math.PI,-Math.PI/2),r.arc(O+P-I,_+I,I,-Math.PI/2,0),r.arc(O+P-L,_+C-L,L,0,Math.PI/2),r.arc(O+D,_+C-D,D,Math.PI/2,Math.PI)}else r.moveTo(A,x.y),r.lineTo(A+x.width,x.y),r.lineTo(A+x.width,t.height-t.area[2]),r.lineTo(A,t.height-t.area[2]),r.lineTo(A,x.y);r.setStrokeStyle(S),r.setFillStyle(k),l.borderWidth>0&&(r.setLineWidth(l.borderWidth*t.pix),r.closePath(),r.stroke()),r.fill()}}break;case"triangle":for(var R=0;Rg&&R0&&(r.setLineWidth(l.borderWidth*t.pix),r.stroke()),r.fill()}}break;case"mount":for(var j=0;jg&&j0&&(r.setLineWidth(l.borderWidth*t.pix),r.stroke()),r.fill()}}break;case"sharp":for(var U=0;Ug&&U0&&(r.setLineWidth(l.borderWidth*t.pix),r.stroke()),r.fill()}}break}if(!1!==t.dataLabel&&1===o){var N,W,H;N=[].concat(t.chartData.yAxisData.ranges[0]),W=N.pop(),H=N.shift();y=ge(e,W,H,s,c,t,l,o);_e(y,e,n,r,t)}return r.restore(),{xAxisPoints:s,calPoints:y,eachSpacing:c}}function Ue(e,t,n,r){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,a=[],s=(t.height-t.area[0]-t.area[2])/t.categories.length,c=0;ch&&bK?K:L,D=D>K?K:D,M=M>K?K:M,R=R>K?K:R,L=L<0?0:L,D=D<0?0:D,M=M<0?0:M,R=R<0?0:R,r.arc(P+R,E+R,R,-Math.PI,-Math.PI/2),r.arc(w.x-L,E+L,L,-Math.PI/2,0),r.arc(w.x-D,E+C-D,D,0,Math.PI/2),r.arc(P+M,E+C-M,M,Math.PI/2,Math.PI)}else r.moveTo(k,S),r.lineTo(w.x,S),r.lineTo(w.x,S+w.width),r.lineTo(k,S+w.width),r.lineTo(k,S),r.setLineWidth(1),r.setStrokeStyle(O);r.setFillStyle(T),r.closePath(),r.fill()}}break;case"stack":x=me(m,v,y,a,s,t,n,u,e,o);d.push(x),x=de(x,s,e.length,u,n,t,e);for(var j=0;jh&&j5&&void 0!==arguments[5]?arguments[5]:1,a=u({},{color:{},average:{}},n.extra.candle);a.color=u({},{upLine:"#f04864",upFill:"#f04864",downLine:"#2fc25b",downFill:"#2fc25b"},a.color),a.average=u({},{show:!1,name:[],day:[],color:i.color},a.average),n.extra.candle=a;var s=n.chartData.xAxisData,c=s.xAxisPoints,l=s.eachSpacing,d=[];r.save();var f=-2,h=c.length+2,p=0,g=n.width+l;return n._scrollDistance_&&0!==n._scrollDistance_&&!0===n.enableScroll&&(r.translate(n._scrollDistance_,0),f=Math.floor(-n._scrollDistance_/l)-2,h=f+n.xAxis.itemCount+4,p=-n._scrollDistance_-2*l+n.area[3],g=p+(n.xAxis.itemCount+4)*l),(a.average.show||t)&&t.forEach((function(e,t){var a,s,u;a=[].concat(n.chartData.yAxisData.ranges[e.index]),s=a.pop(),u=a.shift();for(var d=e.data,f=pe(d,s,u,c,l,n,i,o),h=q(f,e),v=0;vp&&(r.moveTo(b.x,b.y),x=1),A>0&&b.x>p&&b.xf&&m0?(r.setStrokeStyle(a.color.upLine),r.setFillStyle(a.color.upFill),r.setLineWidth(1*n.pix),r.moveTo(x[3].x,x[3].y),r.lineTo(x[1].x,x[1].y),r.lineTo(x[1].x-l/4,x[1].y),r.lineTo(x[0].x-l/4,x[0].y),r.lineTo(x[0].x,x[0].y),r.lineTo(x[2].x,x[2].y),r.lineTo(x[0].x,x[0].y),r.lineTo(x[0].x+l/4,x[0].y),r.lineTo(x[1].x+l/4,x[1].y),r.lineTo(x[1].x,x[1].y),r.moveTo(x[3].x,x[3].y)):(r.setStrokeStyle(a.color.downLine),r.setFillStyle(a.color.downFill),r.setLineWidth(1*n.pix),r.moveTo(x[3].x,x[3].y),r.lineTo(x[0].x,x[0].y),r.lineTo(x[0].x-l/4,x[0].y),r.lineTo(x[1].x-l/4,x[1].y),r.lineTo(x[1].x,x[1].y),r.lineTo(x[2].x,x[2].y),r.lineTo(x[1].x,x[1].y),r.lineTo(x[1].x+l/4,x[1].y),r.lineTo(x[0].x+l/4,x[0].y),r.lineTo(x[0].x,x[0].y),r.moveTo(x[3].x,x[3].y)),r.closePath(),r.fill(),r.stroke()}})),r.restore(),{xAxisPoints:c,calPoints:d,eachSpacing:l}}function Ne(e,t,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,o=u({},{type:"straight",opacity:.2,addLine:!1,width:2,gradient:!1},t.extra.area),a=t.chartData.xAxisData,s=a.xAxisPoints,c=a.eachSpacing,l=t.height-t.area[2],d=[];i.save();var h=0,p=t.width+c;return t._scrollDistance_&&0!==t._scrollDistance_&&!0===t.enableScroll&&(i.translate(t._scrollDistance_,0),h=-t._scrollDistance_-2*c+t.area[3],p=h+(t.xAxis.itemCount+4)*c),e.forEach((function(e,a){var u,g,v;u=[].concat(t.chartData.yAxisData.ranges[e.index]),g=u.pop(),v=u.shift();var m=e.data,x=pe(m,g,v,s,c,t,n,r);d.push(x);for(var A=q(x,e),b=0;b1){var S=w[0],T=w[w.length-1];i.moveTo(S.x,S.y);var O=0;if("curve"===o.type)for(var _=0;_h&&(i.moveTo(P.x,P.y),O=1),_>0&&P.x>h&&P.xh&&(i.moveTo(F.x,F.y),O=1),E>0&&F.x>h&&F.x
h&&(i.moveTo(L.x,L.y),O=1),I>0&&L.x>h&&L.x
h&&(i.moveTo(j.x,j.y),R=1),K>0&&j.x>h&&j.x
h&&(i.moveTo(B.x,B.y),R=1),U>0&&B.x>h&&B.x
h&&(i.moveTo(W.x,W.y),R=1),N>0&&W.x>h&&W.x
4&&void 0!==arguments[4]?arguments[4]:1,o=(u({},{type:"circle"},t.extra.scatter),t.chartData.xAxisData),a=o.xAxisPoints,s=o.eachSpacing,c=[];i.save();var l=0;t.width;return t._scrollDistance_&&0!==t._scrollDistance_&&!0===t.enableScroll&&(i.translate(t._scrollDistance_,0),l=-t._scrollDistance_-2*s+t.area[3],l+(t.xAxis.itemCount+4)*s),e.forEach((function(e,o){var c,l,u;c=[].concat(t.chartData.yAxisData.ranges[e.index]),l=c.pop(),u=c.shift();var d=e.data,f=pe(d,l,u,a,s,t,n,r);i.beginPath(),i.setStrokeStyle(e.color),i.setFillStyle(e.color),i.setLineWidth(1*t.pix);var h=e.pointShape;if("diamond"===h)f.forEach((function(e,t){null!==e&&(i.moveTo(e.x,e.y-4.5),i.lineTo(e.x-4.5,e.y),i.lineTo(e.x,e.y+4.5),i.lineTo(e.x+4.5,e.y),i.lineTo(e.x,e.y-4.5))}));else if("circle"===h)f.forEach((function(e,n){null!==e&&(i.moveTo(e.x+2.5*t.pix,e.y),i.arc(e.x,e.y,3*t.pix,0,2*Math.PI,!1))}));else if("square"===h)f.forEach((function(e,t){null!==e&&(i.moveTo(e.x-3.5,e.y-3.5),i.rect(e.x-3.5,e.y-3.5,7,7))}));else if("triangle"===h)f.forEach((function(e,t){null!==e&&(i.moveTo(e.x,e.y-4.5),i.lineTo(e.x-4.5,e.y+4.5),i.lineTo(e.x+4.5,e.y+4.5),i.lineTo(e.x,e.y-4.5))}));else if("triangle"===h)return;i.closePath(),i.fill(),i.stroke()})),!1!==t.dataLabel&&1===r&&e.forEach((function(e,o){var c,l,u;c=[].concat(t.chartData.yAxisData.ranges[e.index]),l=c.pop(),u=c.shift();var d=e.data,f=pe(d,l,u,a,s,t,n,r);Oe(f,e,n,i,t)})),i.restore(),{xAxisPoints:a,calPoints:c,eachSpacing:s}}function He(e,t,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,o=u({},{opacity:1,border:2},t.extra.bubble),a=t.chartData.xAxisData,s=a.xAxisPoints,c=a.eachSpacing,l=[];i.save();var d=0;t.width;return t._scrollDistance_&&0!==t._scrollDistance_&&!0===t.enableScroll&&(i.translate(t._scrollDistance_,0),d=-t._scrollDistance_-2*c+t.area[3],d+(t.xAxis.itemCount+4)*c),e.forEach((function(a,l){var u,d,h;u=[].concat(t.chartData.yAxisData.ranges[a.index]),d=u.pop(),h=u.shift();var p=a.data,g=pe(p,d,h,s,c,t,n,r);i.beginPath(),i.setStrokeStyle(a.color),i.setLineWidth(o.border*t.pix),i.setFillStyle(f(a.color,o.opacity)),g.forEach((function(e,n){i.moveTo(e.x+e.r,e.y),i.arc(e.x,e.y,e.r*t.pix,0,2*Math.PI,!1)})),i.closePath(),i.fill(),i.stroke(),!1!==t.dataLabel&&1===r&&g.forEach((function(r,o){i.beginPath();var a=e.textSize*t.pix||n.fontSize;i.setFontSize(a),i.setFillStyle(e.textColor||"#FFFFFF"),i.setTextAlign("center"),i.fillText(String(r.t),r.x,r.y+a/2),i.closePath(),i.stroke(),i.setTextAlign("left")}))})),i.restore(),{xAxisPoints:s,calPoints:l,eachSpacing:c}}function Ze(e,t,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,o=u({},{type:"straight",width:2},t.extra.line);o.width*=t.pix;var a=t.chartData.xAxisData,s=a.xAxisPoints,c=a.eachSpacing,l=[];i.save();var d=0,f=t.width+c;return t._scrollDistance_&&0!==t._scrollDistance_&&!0===t.enableScroll&&(i.translate(t._scrollDistance_,0),d=-t._scrollDistance_-2*c+t.area[3],f=d+(t.xAxis.itemCount+4)*c),e.forEach((function(e,a){var u,h,p;u=[].concat(t.chartData.yAxisData.ranges[e.index]),h=u.pop(),p=u.shift();var g=e.data,v=pe(g,h,p,s,c,t,n,r);l.push(v);var m=q(v,e);if("dash"==e.lineType){var x=e.dashLength?e.dashLength:8;x*=t.pix,i.setLineDash([x,x])}i.beginPath(),i.setStrokeStyle(e.color),i.setLineWidth(o.width),m.forEach((function(e,t){if(1===e.length)i.moveTo(e[0].x,e[0].y),i.arc(e[0].x,e[0].y,1,0,2*Math.PI);else{i.moveTo(e[0].x,e[0].y);var n=0;if("curve"===o.type)for(var r=0;rd&&(i.moveTo(a.x,a.y),n=1),r>0&&a.x>d&&a.xd&&(i.moveTo(l.x,l.y),n=1),c>0&&l.x>d&&l.xd&&(i.moveTo(h.x,h.y),n=1),u>0&&h.x>d&&h.x4&&void 0!==arguments[4]?arguments[4]:1,a=t.chartData.xAxisData,s=a.xAxisPoints,c=a.eachSpacing,l=u({},{width:c/2,barBorderCircle:!1,barBorderRadius:[],seriesGap:2,linearType:"none",linearOpacity:1,customColor:[],colorStop:0},t.extra.mix.column),d=u({},{opacity:.2,gradient:!1},t.extra.mix.area),h=t.height-t.area[2],p=[],g=0,v=0;e.forEach((function(e,t){"column"==e.type&&(v+=1)})),r.save();var m=-2,x=s.length+2,A=0,b=t.width+c;if(t._scrollDistance_&&0!==t._scrollDistance_&&!0===t.enableScroll&&(r.translate(t._scrollDistance_,0),m=Math.floor(-t._scrollDistance_/c)-2,x=m+t.xAxis.itemCount+4,A=-t._scrollDistance_-2*c+t.area[3],b=A+(t.xAxis.itemCount+4)*c),l.customColor=w(l.linearType,l.customColor,e,n),e.forEach((function(e,a){var u,w,k;u=[].concat(t.chartData.yAxisData.ranges[e.index]),w=u.pop(),k=u.shift();var S=e.data,T=pe(S,w,k,s,c,t,n,o);if(p.push(T),"column"==e.type){T=se(T,c,v,g,n,t);for(var O=0;Om&&OB?B:K,j=j>B?B:j,z=z>B?B:z,U=U>B?B:U,K=K<0?0:K,j=j<0?0:j,z=z<0?0:z,U=U<0?0:U,r.arc(I+K,L+K,K,-Math.PI,-Math.PI/2),r.arc(I+D-j,L+j,j,-Math.PI/2,0),r.arc(I+D-z,L+M-z,z,0,Math.PI/2),r.arc(I+U,L+M-U,U,Math.PI/2,Math.PI)}else r.moveTo(P,_.y),r.lineTo(P+_.width,_.y),r.lineTo(P+_.width,t.height-t.area[2]),r.lineTo(P,t.height-t.area[2]),r.lineTo(P,_.y),r.setLineWidth(1),r.setStrokeStyle(E);r.setFillStyle(C),r.closePath(),r.fill()}}g+=1}if("area"==e.type)for(var N=q(T,e),W=0;W1){var V=H[0],J=H[H.length-1];r.moveTo(V.x,V.y);var X=0;if("curve"===e.style)for(var G=0;GA&&(r.moveTo(Q.x,Q.y),X=1),G>0&&Q.x>A&&Q.xA&&(r.moveTo(ee.x,ee.y),X=1),$>0&&ee.x>A&&ee.xA&&(r.moveTo(c.x,c.y),a=1),s>0&&c.x>A&&c.xA&&(r.moveTo(d.x,d.y),a=1),u>0&&d.x>A&&d.x1&&(t.extra.mount.widthRatio>2&&(t.extra.mount.widthRatio=2),p+=(t.extra.mount.widthRatio-1)*c);var g=h*h/p,v=0;t._scrollDistance_&&(v=-t._scrollDistance_*h/p),i.beginPath(),i.setLineCap("round"),i.setLineWidth(6*t.pix),i.setStrokeStyle(t.xAxis.scrollBackgroundColor||"#EFEBEF"),i.moveTo(a,f),i.lineTo(s,f),i.stroke(),i.closePath(),i.beginPath(),i.setLineCap("round"),i.setLineWidth(6*t.pix),i.setStrokeStyle(t.xAxis.scrollColor||"#A6A6A6"),i.moveTo(a+v,f),i.lineTo(a+v+g,f),i.stroke(),i.closePath(),i.setLineCap("butt")}if(i.save(),t._scrollDistance_&&0!==t._scrollDistance_&&i.translate(t._scrollDistance_,0),!0===t.xAxis.calibration&&(i.setStrokeStyle(t.xAxis.gridColor||"#cccccc"),i.setLineCap("butt"),i.setLineWidth(1*t.pix),o.forEach((function(e,n){n>0&&(i.beginPath(),i.moveTo(e-c/2,u),i.lineTo(e-c/2,u+3*t.pix),i.closePath(),i.stroke())}))),!0!==t.xAxis.disableGrid&&(i.setStrokeStyle(t.xAxis.gridColor||"#cccccc"),i.setLineCap("butt"),i.setLineWidth(1*t.pix),"dash"==t.xAxis.gridType&&i.setLineDash([t.xAxis.dashLength*t.pix,t.xAxis.dashLength*t.pix]),t.xAxis.gridEval=t.xAxis.gridEval||1,o.forEach((function(e,n){n%t.xAxis.gridEval==0&&(i.beginPath(),i.moveTo(e,u),i.lineTo(e,d),i.stroke())})),i.setLineDash([])),!0!==t.xAxis.disabled){var y=e.length;t.xAxis.labelCount&&(y=t.xAxis.itemCount?Math.ceil(e.length/t.xAxis.itemCount*t.xAxis.labelCount):t.xAxis.labelCount,y-=1);for(var m=Math.ceil(e.length/y),x=[],A=e.length,b=0;b1&&(t.extra.mount.widthRatio>2&&(t.extra.mount.widthRatio=2),l+=(t.extra.mount.widthRatio-1)*c);var u=a+l,d=[],f=1;!1===t.xAxis.axisLine&&(f=0);for(var h=f;h4&&void 0!==arguments[4]?arguments[4]:1,o=u({},{activeOpacity:.5,activeRadius:10,offsetAngle:0,labelWidth:15,ringWidth:30,customRadius:0,border:!1,borderWidth:2,borderColor:"#FFFFFF",centerColor:"#FFFFFF",linearType:"none",customColor:[]},"pie"==t.type?t.extra.pie:t.extra.ring),a={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==n.pieChartLinePadding&&(n.pieChartLinePadding=o.activeRadius*t.pix);var s=Math.min((t.width-t.area[1]-t.area[3])/2-n.pieChartLinePadding-n.pieChartTextPadding-n._pieTextMaxLength_,(t.height-t.area[0]-t.area[2])/2-n.pieChartLinePadding-n.pieChartTextPadding);s=s<10?10:s,o.customRadius>0&&(s=o.customRadius*t.pix),e=$(e,s,r);var c=o.activeRadius*t.pix;if(o.customColor=w(o.linearType,o.customColor,e,n),e=e.map((function(e){return e._start_+=o.offsetAngle*Math.PI/180,e})),e.forEach((function(e,n){t.tooltip&&t.tooltip.index==n&&(i.beginPath(),i.setFillStyle(f(e.color,o.activeOpacity||.5)),i.moveTo(a.x,a.y),i.arc(a.x,a.y,e._radius_+c,e._start_,e._start_+2*e._proportion_*Math.PI),i.closePath(),i.fill()),i.beginPath(),i.setLineWidth(o.borderWidth*t.pix),i.lineJoin="round",i.setStrokeStyle(o.borderColor);var r,s=e.color;"custom"==o.linearType&&(r=i.createCircularGradient?i.createCircularGradient(a.x,a.y,e._radius_):i.createRadialGradient(a.x,a.y,0,a.x,a.y,e._radius_),r.addColorStop(0,f(o.customColor[e.linearIndex],1)),r.addColorStop(1,f(e.color,1)),s=r);i.setFillStyle(s),i.moveTo(a.x,a.y),i.arc(a.x,a.y,e._radius_,e._start_,e._start_+2*e._proportion_*Math.PI),i.closePath(),i.fill(),1==o.border&&i.stroke()})),"ring"===t.type){var l=.6*s;"number"===typeof o.ringWidth&&o.ringWidth>0&&(l=Math.max(0,s-o.ringWidth*t.pix)),i.beginPath(),i.setFillStyle(o.centerColor),i.moveTo(a.x,a.y),i.arc(a.x,a.y,l,0,2*Math.PI),i.closePath(),i.fill()}return!1!==t.dataLabel&&1===r&&Fe(e,t,n,i,s,a),1===r&&"ring"===t.type&&Te(t,n,i,a),{center:a,radius:s,series:e}}function $e(e,t,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,o=u({},{type:"area",activeOpacity:.5,activeRadius:10,offsetAngle:0,labelWidth:15,border:!1,borderWidth:2,borderColor:"#FFFFFF",linearType:"none",customColor:[]},t.extra.rose);0==n.pieChartLinePadding&&(n.pieChartLinePadding=o.activeRadius*t.pix);var a={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},s=Math.min((t.width-t.area[1]-t.area[3])/2-n.pieChartLinePadding-n.pieChartTextPadding-n._pieTextMaxLength_,(t.height-t.area[0]-t.area[2])/2-n.pieChartLinePadding-n.pieChartTextPadding);s=s<10?10:s;var c=o.minRadius||.5*s;e=te(e,o.type,c,s,r);var l=o.activeRadius*t.pix;return o.customColor=w(o.linearType,o.customColor,e,n),e=e.map((function(e){return e._start_+=(o.offsetAngle||0)*Math.PI/180,e})),e.forEach((function(e,n){t.tooltip&&t.tooltip.index==n&&(i.beginPath(),i.setFillStyle(f(e.color,o.activeOpacity||.5)),i.moveTo(a.x,a.y),i.arc(a.x,a.y,l+e._radius_,e._start_,e._start_+2*e._rose_proportion_*Math.PI),i.closePath(),i.fill()),i.beginPath(),i.setLineWidth(o.borderWidth*t.pix),i.lineJoin="round",i.setStrokeStyle(o.borderColor);var r,s=e.color;"custom"==o.linearType&&(r=i.createCircularGradient?i.createCircularGradient(a.x,a.y,e._radius_):i.createRadialGradient(a.x,a.y,0,a.x,a.y,e._radius_),r.addColorStop(0,f(o.customColor[e.linearIndex],1)),r.addColorStop(1,f(e.color,1)),s=r);i.setFillStyle(s),i.moveTo(a.x,a.y),i.arc(a.x,a.y,e._radius_,e._start_,e._start_+2*e._rose_proportion_*Math.PI),i.closePath(),i.fill(),1==o.border&&i.stroke()})),!1!==t.dataLabel&&1===r&&Fe(e,t,n,i,s,a),{center:a,radius:s,series:e}}function et(e,t,n,i){var r,o,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,s=u({},{startAngle:.75,endAngle:.25,type:"default",lineCap:"round",width:12,gap:2,linearType:"none",customColor:[]},t.extra.arcbar);e=ne(e,s,a),r=s.centerX||s.centerY?{x:s.centerX?s.centerX:t.width/2,y:s.centerY?s.centerY:t.height/2}:{x:t.width/2,y:t.height/2},s.radius?o=s.radius:(o=Math.min(r.x,r.y),o-=5*t.pix,o-=s.width/2),o=o<10?10:o,s.customColor=w(s.linearType,s.customColor,e,n);for(var c=0;c5&&void 0!==arguments[5]?arguments[5]:1,a=u({},{type:"default",startAngle:.75,endAngle:.25,width:15,labelOffset:13,splitLine:{fixRadius:0,splitNumber:10,width:15,color:"#FFFFFF",childNumber:5,childWidth:5},pointer:{width:15,color:"auto"}},n.extra.gauge);void 0==a.oldAngle&&(a.oldAngle=a.startAngle),void 0==a.oldData&&(a.oldData=0),e=re(e,a.startAngle,a.endAngle);var s={x:n.width/2,y:n.height/2},c=Math.min(s.x,s.y);c-=5*n.pix,c-=a.width/2,c=c<10?10:c;var l=c-a.width,d=0;if("progress"==a.type){var h=c-3*a.width;r.beginPath();var p=r.createLinearGradient(s.x,s.y-h,s.x,s.y+h);p.addColorStop("0",f(t[0].color,.3)),p.addColorStop("1.0",f("#FFFFFF",.1)),r.setFillStyle(p),r.arc(s.x,s.y,h,0,2*Math.PI,!1),r.fill(),r.setLineWidth(a.width),r.setStrokeStyle(f(t[0].color,.3)),r.setLineCap("round"),r.beginPath(),r.arc(s.x,s.y,l,a.startAngle*Math.PI,a.endAngle*Math.PI,!1),r.stroke(),d=a.startAngle-a.endAngle+1;a.splitLine.splitNumber;var g=d/a.splitLine.splitNumber/a.splitLine.childNumber,v=-c-.5*a.width-a.splitLine.fixRadius,y=-c-a.width-a.splitLine.fixRadius+a.splitLine.width;r.save(),r.translate(s.x,s.y),r.rotate((a.startAngle-1)*Math.PI);for(var m=a.splitLine.splitNumber*a.splitLine.childNumber+1,x=t[0].data*o,A=0;AA/m?r.setStrokeStyle(f(t[0].color,1)):r.setStrokeStyle(f(t[0].color,.3)),r.setLineWidth(3*n.pix),r.moveTo(v,0),r.lineTo(y,0),r.stroke(),r.rotate(g*Math.PI);r.restore(),t=ie(t,a,o),r.setLineWidth(a.width),r.setStrokeStyle(t[0].color),r.setLineCap("round"),r.beginPath(),r.arc(s.x,s.y,l,a.startAngle*Math.PI,t[0]._proportion_*Math.PI,!1),r.stroke();var b=c-2.5*a.width;r.save(),r.translate(s.x,s.y),r.rotate((t[0]._proportion_-1)*Math.PI),r.beginPath(),r.setLineWidth(a.width/3);var w=r.createLinearGradient(0,.6*-b,0,.6*b);w.addColorStop("0",f("#FFFFFF",0)),w.addColorStop("0.5",f(t[0].color,1)),w.addColorStop("1.0",f("#FFFFFF",0)),r.setStrokeStyle(w),r.arc(0,0,b,.85*Math.PI,1.15*Math.PI,!1),r.stroke(),r.beginPath(),r.setLineWidth(1),r.setStrokeStyle(t[0].color),r.setFillStyle(t[0].color),r.moveTo(-b-a.width/3/2,-4),r.lineTo(-b-a.width/3/2-4,0),r.lineTo(-b-a.width/3/2,4),r.lineTo(-b-a.width/3/2,-4),r.stroke(),r.fill(),r.restore()}else{r.setLineWidth(a.width),r.setLineCap("butt");for(var k=0;k4&&void 0!==arguments[4]?arguments[4]:1,o=u({},{gridColor:"#cccccc",gridType:"radar",gridEval:1,axisLabel:!1,axisLabelTofix:0,labelColor:"#666666",labelPointShow:!1,labelPointRadius:3,labelPointColor:"#cccccc",opacity:.2,gridCount:3,border:!1,borderWidth:2,linearType:"none",customColor:[]},t.extra.radar),a=E(t.categories.length),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},c=(t.width-t.area[1]-t.area[3])/2,l=(t.height-t.area[0]-t.area[2])/2,d=Math.min(c-(C(t.categories,n.fontSize,i)+n.radarLabelTextMargin),l-n.radarLabelTextMargin);d-=n.radarLabelTextMargin*t.pix,d=d<10?10:d,i.beginPath(),i.setLineWidth(1*t.pix),i.setStrokeStyle(o.gridColor),a.forEach((function(e,t){var n=m(d*Math.cos(e),d*Math.sin(e),s);i.moveTo(s.x,s.y),t%o.gridEval==0&&i.lineTo(n.x,n.y)})),i.stroke(),i.closePath();for(var h=function(e){var n={};if(i.beginPath(),i.setLineWidth(1*t.pix),i.setStrokeStyle(o.gridColor),"radar"==o.gridType)a.forEach((function(t,r){var a=m(d/o.gridCount*e*Math.cos(t),d/o.gridCount*e*Math.sin(t),s);0===r?(n=a,i.moveTo(a.x,a.y)):i.lineTo(a.x,a.y)})),i.lineTo(n.x,n.y);else{var r=m(d/o.gridCount*e*Math.cos(1.5),d/o.gridCount*e*Math.sin(1.5),s);i.arc(s.x,s.y,s.y-r.y,0,2*Math.PI,!1)}i.stroke(),i.closePath()},p=1;p<=o.gridCount;p++)h(p);o.customColor=w(o.linearType,o.customColor,e,n);var g=Y(a,s,d,e,t,r);if(g.forEach((function(n,r){i.beginPath(),i.setLineWidth(o.borderWidth*t.pix),i.setStrokeStyle(n.color);var a,c=f(n.color,o.opacity);"custom"==o.linearType&&(a=i.createCircularGradient?i.createCircularGradient(s.x,s.y,d):i.createRadialGradient(s.x,s.y,0,s.x,s.y,d),a.addColorStop(0,f(o.customColor[e[r].linearIndex],o.opacity)),a.addColorStop(1,f(n.color,o.opacity)),c=a);if(i.setFillStyle(c),n.data.forEach((function(e,t){0===t?i.moveTo(e.position.x,e.position.y):i.lineTo(e.position.x,e.position.y)})),i.closePath(),i.fill(),!0===o.border&&i.stroke(),i.closePath(),!1!==t.dataPointShape){var l=n.data.map((function(e){return e.position}));Se(l,n.color,n.pointShape,i,t)}})),!0===o.axisLabel){var v=Math.max(o.max,Math.max.apply(null,T(e))),y=d/o.gridCount,x=t.fontSize*t.pix;i.setFontSize(x),i.setFillStyle(t.fontColor),i.setTextAlign("left");for(p=0;pl.x?n.xMax:l.x,n.yMin=n.yMinl.y?n.yMax:l.y}}return n}function ot(e,t,n,i,r,o){return{x:(t-n.xMin)*i+r,y:(n.yMax-e)*i+o}}function at(e,t,n,i,r,o){return{x:(t-r)/i+n.xMin,y:n.yMax-(e-o)/i}}function st(e,t,n){if(t[1]==n[1])return!1;if(t[1]>e[1]&&n[1]>e[1])return!1;if(t[1]e[1])return!1;if(n[1]==e[1]&&t[1]>e[1])return!1;if(t[0]t[o].area[2]||e[1]>t[o].area[3]||e[2]n||e[3]>i){r=!0;break}r=!1}return r}function ft(e,t,n){var i=e.series;switch(t){case"normal":for(var r=0;r.7},p=0;p4&&void 0!==arguments[4]?arguments[4]:1,o=u({},{type:"normal",autoColors:!0},t.extra.word);t.chartData.wordCloudData||(t.chartData.wordCloudData=ft(t,o.type,i)),i.beginPath(),i.setFillStyle(t.background),i.rect(0,0,t.width,t.height),i.fill(),i.save();var a=t.chartData.wordCloudData;i.translate(t.width/2,t.height/2);for(var s=0;s0&&(t.tooltip&&t.tooltip.index==s?i.strokeText(c,(a[s].areav[0]+5-t.width/2)*r-d*(1-r)/2,(a[s].areav[1]+5+l-t.height/2)*r):i.fillText(c,(a[s].areav[0]+5-t.width/2)*r-d*(1-r)/2,(a[s].areav[1]+5+l-t.height/2)*r)):a[s].area[0]>0&&(t.tooltip&&t.tooltip.index==s?i.strokeText(c,(a[s].area[0]+5-t.width/2)*r-d*(1-r)/2,(a[s].area[1]+5+l-t.height/2)*r):i.fillText(c,(a[s].area[0]+5-t.width/2)*r-d*(1-r)/2,(a[s].area[1]+5+l-t.height/2)*r)),i.stroke(),i.restore()}i.restore()}function pt(e,t,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,o=u({},{type:"funnel",activeWidth:10,activeOpacity:.3,border:!1,borderWidth:2,borderColor:"#FFFFFF",fillOpacity:1,labelAlign:"right",linearType:"none",customColor:[]},t.extra.funnel),a=(t.height-t.area[0]-t.area[2])/e.length,s={x:t.area[3]+(t.width-t.area[1]-t.area[3])/2,y:t.height-t.area[2]},c=o.activeWidth*t.pix,l=Math.min((t.width-t.area[1]-t.area[3])/2-c,(t.height-t.area[0]-t.area[2])/2-c);if(e=ee(e,l,o.type,a,r),i.save(),i.translate(s.x,s.y),o.customColor=w(o.linearType,o.customColor,e,n),"pyramid"==o.type)for(var d=0;d0?m[T].width+t.yAxis.padding*t.pix:m[T].width,S+=1):"right"==m[T].position&&(t.area[1]+=k>0?m[T].width+t.yAxis.padding*t.pix:m[T].width,k+=1)}else n.yAxisWidth=m;if(t.chartData.yAxisData=y,t.categories&&t.categories.length&&"radar"!==t.type&&"gauge"!==t.type&&"bar"!==t.type){t.chartData.xAxisData=fe(t.categories,t,n);var O=X(t.categories,t,n,t.chartData.xAxisData.eachSpacing,i),_=O.xAxisHeight,P=O.angle;n.xAxisHeight=_,n._xAxisTextAngle_=P,t.area[2]+=_,t.chartData.categoriesData=O}else if("line"===t.type||"area"===t.type||"scatter"===t.type||"bubble"===t.type||"bar"===t.type){t.chartData.xAxisData=Q(o,t,n,i),a=t.chartData.xAxisData.rangesFormat;var C=X(a,t,n,t.chartData.xAxisData.eachSpacing,i),E=C.xAxisHeight,F=C.angle;n.xAxisHeight=E,n._xAxisTextAngle_=F,t.area[2]+=E,t.chartData.categoriesData=C}else t.chartData.xAxisData={xAxisPoints:[]};if(t.enableScroll&&"right"==t.xAxis.scrollAlign&&void 0===t._scrollDistance_){var I=0,L=t.chartData.xAxisData.xAxisPoints,M=t.chartData.xAxisData.startX,R=t.chartData.xAxisData.endX,K=t.chartData.xAxisData.eachSpacing,j=K*(L.length-1),z=R-M;I=z-j,r.scrollOption.currentOffset=I,r.scrollOption.startTouchX=I,r.scrollOption.distance=0,r.scrollOption.lastMoveTime=0,t._scrollDistance_=I}switch("pie"!==e&&"ring"!==e&&"rose"!==e||(n._pieTextMaxLength_=!1===t.dataLabel?0:ae(l,n,i,t)),e){case"word":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),ht(o,t,n,i,e),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"map":i.clearRect(0,0,t.width,t.height),lt(o,t,n,i);break;case"funnel":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),t.chartData.funnelData=pt(o,t,n,i,e),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"line":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),Xe(a,t,n,i),Je(a,t,n,i);var r=Ze(o,t,n,i,e),s=r.xAxisPoints,c=r.calPoints,l=r.eachSpacing;t.chartData.xAxisPoints=s,t.chartData.calPoints=c,t.chartData.eachSpacing=l,Ge(o,t,n,i),!1!==t.enableMarkLine&&1===e&&Le(t,n,i),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e,l,s),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"scatter":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),Xe(a,t,n,i),Je(a,t,n,i);var r=We(o,t,n,i,e),s=r.xAxisPoints,c=r.calPoints,l=r.eachSpacing;t.chartData.xAxisPoints=s,t.chartData.calPoints=c,t.chartData.eachSpacing=l,Ge(o,t,n,i),!1!==t.enableMarkLine&&1===e&&Le(t,n,i),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e,l,s),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"bubble":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),Xe(a,t,n,i),Je(a,t,n,i);var r=He(o,t,n,i,e),s=r.xAxisPoints,c=r.calPoints,l=r.eachSpacing;t.chartData.xAxisPoints=s,t.chartData.calPoints=c,t.chartData.eachSpacing=l,Ge(o,t,n,i),!1!==t.enableMarkLine&&1===e&&Le(t,n,i),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e,l,s),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"mix":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),Xe(a,t,n,i),Je(a,t,n,i);var r=Ve(o,t,n,i,e),s=r.xAxisPoints,c=r.calPoints,l=r.eachSpacing;t.chartData.xAxisPoints=s,t.chartData.calPoints=c,t.chartData.eachSpacing=l,Ge(o,t,n,i),!1!==t.enableMarkLine&&1===e&&Le(t,n,i),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e,l,s),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"column":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),Xe(a,t,n,i),Je(a,t,n,i);var r=je(o,t,n,i,e),s=r.xAxisPoints,c=r.calPoints,l=r.eachSpacing;t.chartData.xAxisPoints=s,t.chartData.calPoints=c,t.chartData.eachSpacing=l,Ge(o,t,n,i),!1!==t.enableMarkLine&&1===e&&Le(t,n,i),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e,l,s),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"mount":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),Xe(a,t,n,i),Je(a,t,n,i);var r=ze(o,t,n,i,e),s=r.xAxisPoints,c=r.calPoints,l=r.eachSpacing;t.chartData.xAxisPoints=s,t.chartData.calPoints=c,t.chartData.eachSpacing=l,Ge(o,t,n,i),!1!==t.enableMarkLine&&1===e&&Le(t,n,i),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e,l,s),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"bar":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),Je(a,t,n,i);var r=Ue(o,t,n,i,e),s=r.yAxisPoints,c=r.calPoints,l=r.eachSpacing;t.chartData.yAxisPoints=s,t.chartData.xAxisPoints=t.chartData.xAxisData.xAxisPoints,t.chartData.calPoints=c,t.chartData.eachSpacing=l,Ge(o,t,n,i),!1!==t.enableMarkLine&&1===e&&Le(t,n,i),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e,l,s),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"area":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),Xe(a,t,n,i),Je(a,t,n,i);var r=Ne(o,t,n,i,e),s=r.xAxisPoints,c=r.calPoints,l=r.eachSpacing;t.chartData.xAxisPoints=s,t.chartData.calPoints=c,t.chartData.eachSpacing=l,Ge(o,t,n,i),!1!==t.enableMarkLine&&1===e&&Le(t,n,i),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e,l,s),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"ring":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),t.chartData.pieData=Ye(o,t,n,i,e),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"pie":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),t.chartData.pieData=Ye(o,t,n,i,e),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"rose":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),t.chartData.pieData=$e(o,t,n,i,e),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"radar":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),t.chartData.radarData=nt(o,t,n,i,e),Qe(t.series,t,n,i,t.chartData),qe(t,n,i,e),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"arcbar":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),t.chartData.arcbarData=et(o,t,n,i,e),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"gauge":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),t.chartData.gaugeData=tt(a,o,t,n,i,e),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break;case"candle":this.animationInstance=new mt({timing:t.timing,duration:c,onProcess:function(e){i.clearRect(0,0,t.width,t.height),t.rotate&&ke(i,t),Xe(a,t,n,i),Je(a,t,n,i);var r=Be(o,l,t,n,i,e),s=r.xAxisPoints,c=r.calPoints,u=r.eachSpacing;t.chartData.xAxisPoints=s,t.chartData.calPoints=c,t.chartData.eachSpacing=u,Ge(o,t,n,i),!1!==t.enableMarkLine&&1===e&&Le(t,n,i),Qe(l||t.series,t,n,i,t.chartData),qe(t,n,i,e,u,s),vt(t,i)},onAnimationFinish:function(){r.uevent.trigger("renderComplete")}});break}}function At(){this.events={}}mt.prototype.stop=function(){this.isStop=!0},At.prototype.addEventListener=function(e,t){this.events[e]=this.events[e]||[],this.events[e].push(t)},At.prototype.delEventListener=function(e){this.events[e]=[]},At.prototype.trigger=function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.opts=u({},this.opts,e),this.opts.updateData=!0;var 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":var n=Ae(this.opts.series,this.opts,this.config,this.context),i=n.yAxisWidth;this.config.yAxisWidth=i;var r=0,o=fe(this.opts.categories,this.opts,this.config),a=o.xAxisPoints,s=o.startX,c=o.endX,l=o.eachSpacing,d=l*(a.length-1),f=c-s;r=f-d,this.scrollOption={currentOffset:r,startTouchX:r,distance:0,lastMoveTime:0},this.opts._scrollDistance_=r;break}xt.call(this,this.opts.type,this.opts,this.config,this.context)},bt.prototype.zoom=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.opts.xAxis.itemCount;if(!0===this.opts.enableScroll){var t=Math.round(Math.abs(this.scrollOption.currentOffset)/this.opts.chartData.eachSpacing)+Math.round(this.opts.xAxis.itemCount/2);this.opts.animation=!1,this.opts.xAxis.itemCount=e.itemCount;var n=Ae(this.opts.series,this.opts,this.config,this.context),i=n.yAxisWidth;this.config.yAxisWidth=i;var r=0,o=fe(this.opts.categories,this.opts,this.config),a=o.xAxisPoints,s=o.startX,c=o.endX,l=o.eachSpacing,u=l*t,d=c-s,f=d-l*(a.length-1);r=d/2-u,r>0&&(r=0),r=this.opts.categories.length?this.opts.categories.length:d,this.opts.animation=!1,this.opts.xAxis.itemCount=d;var f=0,h=fe(this.opts.categories,this.opts,this.config),p=h.xAxisPoints,v=h.startX,y=h.endX,m=h.eachSpacing,x=m*this.scrollOption.moveCurrent1,A=y-v,b=A-m*(p.length-1);f=-x+Math.min(i[0].x,i[1].x)-this.opts.area[3]-m,f>0&&(f=0),f1&&void 0!==arguments[1]?arguments[1]:{},n=null;if(n=e.changedTouches?e.changedTouches[0]:e.mp.changedTouches[0],n){_(n,this.opts,e);var i=this.getLegendDataIndex(e);i>=0&&("candle"==this.opts.type?this.opts.seriesMA[i].show=!this.opts.seriesMA[i].show:this.opts.series[i].show=!this.opts.series[i].show,this.opts.animation=!!t.animation,this.opts._scrollDistance_=this.scrollOption.currentOffset,xt.call(this,this.opts.type,this.opts,this.config,this.context))}},bt.prototype.showToolTip=function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null;i=e.changedTouches?e.changedTouches[0]:e.mp.changedTouches[0],i||console.log("[uCharts] 未获取到event坐标信息");var r=_(i,this.opts,e),o=this.scrollOption.currentOffset,a=u({},this.opts,{_scrollDistance_:o,animation:!1});if("line"===this.opts.type||"area"===this.opts.type||"column"===this.opts.type||"scatter"===this.opts.type||"bubble"===this.opts.type){var s=this.getCurrentDataIndex(e),c=void 0==n.index?s.index:n.index;if(c>-1||c.length>0){var l=P(this.opts.series,c,s.group);if(0!==l.length){var d=F(l,this.opts,c,s.group,this.opts.categories,n),f=d.textList,h=d.offset;h.y=r.y,a.tooltip={textList:void 0!==n.textList?n.textList:f,offset:void 0!==n.offset?n.offset:h,option:n,index:c}}}xt.call(this,a.type,a,this.config,this.context)}if("mount"===this.opts.type){c=void 0==n.index?this.getCurrentDataIndex(e).index:n.index;if(c>-1){a=u({},this.opts,{animation:!1}),l=u({},a._series_[c]),f=[{text:n.formatter?n.formatter(l,void 0,c,a):l.name+": "+l.data,color:l.color}],h={x:a.chartData.calPoints[c].x,y:r.y};a.tooltip={textList:n.textList?n.textList:f,offset:void 0!==n.offset?n.offset:h,option:n,index:c}}xt.call(this,a.type,a,this.config,this.context)}if("bar"===this.opts.type){s=this.getCurrentDataIndex(e),c=void 0==n.index?s.index:n.index;if(c>-1||c.length>0){l=P(this.opts.series,c,s.group);if(0!==l.length){d=F(l,this.opts,c,s.group,this.opts.categories,n),f=d.textList,h=d.offset;h.x=r.x,a.tooltip={textList:void 0!==n.textList?n.textList:f,offset:void 0!==n.offset?n.offset:h,option:n,index:c}}}xt.call(this,a.type,a,this.config,this.context)}if("mix"===this.opts.type){s=this.getCurrentDataIndex(e),c=void 0==n.index?s.index:n.index;if(c>-1){o=this.scrollOption.currentOffset,a=u({},this.opts,{_scrollDistance_:o,animation:!1}),l=P(this.opts.series,c);if(0!==l.length){var p=I(l,this.opts,c,this.opts.categories,n);f=p.textList,h=p.offset;h.y=r.y,a.tooltip={textList:n.textList?n.textList:f,offset:void 0!==n.offset?n.offset:h,option:n,index:c}}}xt.call(this,a.type,a,this.config,this.context)}if("candle"===this.opts.type){s=this.getCurrentDataIndex(e),c=void 0==n.index?s.index:n.index;if(c>-1){o=this.scrollOption.currentOffset,a=u({},this.opts,{_scrollDistance_:o,animation:!1}),l=P(this.opts.series,c);if(0!==l.length){d=L(this.opts.series[0].data,l,this.opts,c,this.opts.categories,this.opts.extra.candle,n),f=d.textList,h=d.offset;h.y=r.y,a.tooltip={textList:n.textList?n.textList:f,offset:void 0!==n.offset?n.offset:h,option:n,index:c}}}xt.call(this,a.type,a,this.config,this.context)}if("pie"===this.opts.type||"ring"===this.opts.type||"rose"===this.opts.type||"funnel"===this.opts.type){c=void 0==n.index?this.getCurrentDataIndex(e):n.index;if(c>-1){a=u({},this.opts,{animation:!1}),l=u({},a._series_[c]),f=[{text:n.formatter?n.formatter(l,void 0,c,a):l.name+": "+l.data,color:l.color}],h={x:r.x,y:r.y};a.tooltip={textList:n.textList?n.textList:f,offset:void 0!==n.offset?n.offset:h,option:n,index:c}}xt.call(this,a.type,a,this.config,this.context)}if("map"===this.opts.type){c=void 0==n.index?this.getCurrentDataIndex(e):n.index;if(c>-1){a=u({},this.opts,{animation:!1}),l=u({},this.opts.series[c]);l.name=l.properties.name;f=[{text:n.formatter?n.formatter(l,void 0,c,this.opts):l.name,color:l.color}],h={x:r.x,y:r.y};a.tooltip={textList:n.textList?n.textList:f,offset:void 0!==n.offset?n.offset:h,option:n,index:c}}a.updateData=!1,xt.call(this,a.type,a,this.config,this.context)}if("word"===this.opts.type){c=void 0==n.index?this.getCurrentDataIndex(e):n.index;if(c>-1){a=u({},this.opts,{animation:!1}),l=u({},this.opts.series[c]),f=[{text:n.formatter?n.formatter(l,void 0,c,this.opts):l.name,color:l.color}],h={x:r.x,y:r.y};a.tooltip={textList:n.textList?n.textList:f,offset:void 0!==n.offset?n.offset:h,option:n,index:c}}a.updateData=!1,xt.call(this,a.type,a,this.config,this.context)}if("radar"===this.opts.type){c=void 0==n.index?this.getCurrentDataIndex(e):n.index;if(c>-1){a=u({},this.opts,{animation:!1}),l=P(this.opts.series,c);if(0!==l.length){f=l.map((function(e){return{text:n.formatter?n.formatter(e,t.opts.categories[c],c,t.opts):e.name+": "+e.data,color:e.color}})),h={x:r.x,y:r.y};a.tooltip={textList:n.textList?n.textList:f,offset:void 0!==n.offset?n.offset:h,option:n,index:c}}}xt.call(this,a.type,a,this.config,this.context)}},bt.prototype.translate=function(e){this.scrollOption={currentOffset:e,startTouchX:e,distance:0,lastMoveTime:0};var t=u({},this.opts,{_scrollDistance_:e,animation:!1});xt.call(this,this.opts.type,t,this.config,this.context)},bt.prototype.scrollStart=function(e){var t=null;t=e.changedTouches?e.changedTouches[0]:e.mp.changedTouches[0];var n=_(t,this.opts,e);t&&!0===this.opts.enableScroll&&(this.scrollOption.startTouchX=n.x)},bt.prototype.scroll=function(e){0===this.scrollOption.lastMoveTime&&(this.scrollOption.lastMoveTime=Date.now());var t=this.opts.touchMoveLimit||60,n=Date.now(),i=n-this.scrollOption.lastMoveTime;if(!(i arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}
+
+var realAtob;
+
+var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+var b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
+
+if (typeof atob !== 'function') {
+ realAtob = function realAtob(str) {
+ str = String(str).replace(/[\t\n\f\r ]+/g, '');
+ if (!b64re.test(str)) {throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");}
+
+ // Adding the padding if missing, for semplicity
+ str += '=='.slice(2 - (str.length & 3));
+ var bitmap;var result = '';var r1;var r2;var i = 0;
+ for (; i < str.length;) {
+ bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 |
+ (r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++)));
+
+ result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) :
+ r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) :
+ String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
+ }
+ return result;
+ };
+} else {
+ // 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法
+ realAtob = atob;
+}
+
+function b64DecodeUnicode(str) {
+ return decodeURIComponent(realAtob(str).split('').map(function (c) {
+ return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
+ }).join(''));
+}
+
+function getCurrentUserInfo() {
+ var token = wx.getStorageSync('uni_id_token') || '';
+ var tokenArr = token.split('.');
+ if (!token || tokenArr.length !== 3) {
+ return {
+ uid: null,
+ role: [],
+ permission: [],
+ tokenExpired: 0 };
+
+ }
+ var userInfo;
+ try {
+ userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));
+ } catch (error) {
+ throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message);
+ }
+ userInfo.tokenExpired = userInfo.exp * 1000;
+ delete userInfo.exp;
+ delete userInfo.iat;
+ return userInfo;
+}
+
+function uniIdMixin(Vue) {
+ Vue.prototype.uniIDHasRole = function (roleId) {var _getCurrentUserInfo =
+
+
+ getCurrentUserInfo(),role = _getCurrentUserInfo.role;
+ return role.indexOf(roleId) > -1;
+ };
+ Vue.prototype.uniIDHasPermission = function (permissionId) {var _getCurrentUserInfo2 =
+
+
+ getCurrentUserInfo(),permission = _getCurrentUserInfo2.permission;
+ return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1;
+ };
+ Vue.prototype.uniIDTokenValid = function () {var _getCurrentUserInfo3 =
+
+
+ getCurrentUserInfo(),tokenExpired = _getCurrentUserInfo3.tokenExpired;
+ return tokenExpired > Date.now();
+ };
+}
+
+var _toString = Object.prototype.toString;
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+function isFn(fn) {
+ return typeof fn === 'function';
+}
+
+function isStr(str) {
+ return typeof str === 'string';
+}
+
+function isPlainObject(obj) {
+ return _toString.call(obj) === '[object Object]';
+}
+
+function hasOwn(obj, key) {
+ return hasOwnProperty.call(obj, key);
+}
+
+function noop() {}
+
+/**
+ * Create a cached version of a pure function.
+ */
+function cached(fn) {
+ var cache = Object.create(null);
+ return function cachedFn(str) {
+ var hit = cache[str];
+ return hit || (cache[str] = fn(str));
+ };
+}
+
+/**
+ * Camelize a hyphen-delimited string.
+ */
+var camelizeRE = /-(\w)/g;
+var camelize = cached(function (str) {
+ return str.replace(camelizeRE, function (_, c) {return c ? c.toUpperCase() : '';});
+});
+
+var HOOKS = [
+'invoke',
+'success',
+'fail',
+'complete',
+'returnValue'];
+
+
+var globalInterceptors = {};
+var scopedInterceptors = {};
+
+function mergeHook(parentVal, childVal) {
+ var res = childVal ?
+ parentVal ?
+ parentVal.concat(childVal) :
+ Array.isArray(childVal) ?
+ childVal : [childVal] :
+ parentVal;
+ return res ?
+ dedupeHooks(res) :
+ res;
+}
+
+function dedupeHooks(hooks) {
+ var res = [];
+ for (var i = 0; i < hooks.length; i++) {
+ if (res.indexOf(hooks[i]) === -1) {
+ res.push(hooks[i]);
+ }
+ }
+ return res;
+}
+
+function removeHook(hooks, hook) {
+ var index = hooks.indexOf(hook);
+ if (index !== -1) {
+ hooks.splice(index, 1);
+ }
+}
+
+function mergeInterceptorHook(interceptor, option) {
+ Object.keys(option).forEach(function (hook) {
+ if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {
+ interceptor[hook] = mergeHook(interceptor[hook], option[hook]);
+ }
+ });
+}
+
+function removeInterceptorHook(interceptor, option) {
+ if (!interceptor || !option) {
+ return;
+ }
+ Object.keys(option).forEach(function (hook) {
+ if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {
+ removeHook(interceptor[hook], option[hook]);
+ }
+ });
+}
+
+function addInterceptor(method, option) {
+ if (typeof method === 'string' && isPlainObject(option)) {
+ mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), option);
+ } else if (isPlainObject(method)) {
+ mergeInterceptorHook(globalInterceptors, method);
+ }
+}
+
+function removeInterceptor(method, option) {
+ if (typeof method === 'string') {
+ if (isPlainObject(option)) {
+ removeInterceptorHook(scopedInterceptors[method], option);
+ } else {
+ delete scopedInterceptors[method];
+ }
+ } else if (isPlainObject(method)) {
+ removeInterceptorHook(globalInterceptors, method);
+ }
+}
+
+function wrapperHook(hook) {
+ return function (data) {
+ return hook(data) || data;
+ };
+}
+
+function isPromise(obj) {
+ return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
+}
+
+function queue(hooks, data) {
+ var promise = false;
+ for (var i = 0; i < hooks.length; i++) {
+ var hook = hooks[i];
+ if (promise) {
+ promise = Promise.resolve(wrapperHook(hook));
+ } else {
+ var res = hook(data);
+ if (isPromise(res)) {
+ promise = Promise.resolve(res);
+ }
+ if (res === false) {
+ return {
+ then: function then() {} };
+
+ }
+ }
+ }
+ return promise || {
+ then: function then(callback) {
+ return callback(data);
+ } };
+
+}
+
+function wrapperOptions(interceptor) {var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ ['success', 'fail', 'complete'].forEach(function (name) {
+ if (Array.isArray(interceptor[name])) {
+ var oldCallback = options[name];
+ options[name] = function callbackInterceptor(res) {
+ queue(interceptor[name], res).then(function (res) {
+ /* eslint-disable no-mixed-operators */
+ return isFn(oldCallback) && oldCallback(res) || res;
+ });
+ };
+ }
+ });
+ return options;
+}
+
+function wrapperReturnValue(method, returnValue) {
+ var returnValueHooks = [];
+ if (Array.isArray(globalInterceptors.returnValue)) {
+ returnValueHooks.push.apply(returnValueHooks, _toConsumableArray(globalInterceptors.returnValue));
+ }
+ var interceptor = scopedInterceptors[method];
+ if (interceptor && Array.isArray(interceptor.returnValue)) {
+ returnValueHooks.push.apply(returnValueHooks, _toConsumableArray(interceptor.returnValue));
+ }
+ returnValueHooks.forEach(function (hook) {
+ returnValue = hook(returnValue) || returnValue;
+ });
+ return returnValue;
+}
+
+function getApiInterceptorHooks(method) {
+ var interceptor = Object.create(null);
+ Object.keys(globalInterceptors).forEach(function (hook) {
+ if (hook !== 'returnValue') {
+ interceptor[hook] = globalInterceptors[hook].slice();
+ }
+ });
+ var scopedInterceptor = scopedInterceptors[method];
+ if (scopedInterceptor) {
+ Object.keys(scopedInterceptor).forEach(function (hook) {
+ if (hook !== 'returnValue') {
+ interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);
+ }
+ });
+ }
+ return interceptor;
+}
+
+function invokeApi(method, api, options) {for (var _len = arguments.length, params = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {params[_key - 3] = arguments[_key];}
+ var interceptor = getApiInterceptorHooks(method);
+ if (interceptor && Object.keys(interceptor).length) {
+ if (Array.isArray(interceptor.invoke)) {
+ var res = queue(interceptor.invoke, options);
+ return res.then(function (options) {
+ return api.apply(void 0, [wrapperOptions(interceptor, options)].concat(params));
+ });
+ } else {
+ return api.apply(void 0, [wrapperOptions(interceptor, options)].concat(params));
+ }
+ }
+ return api.apply(void 0, [options].concat(params));
+}
+
+var promiseInterceptor = {
+ returnValue: function returnValue(res) {
+ if (!isPromise(res)) {
+ return res;
+ }
+ return new Promise(function (resolve, reject) {
+ res.then(function (res) {
+ if (res[0]) {
+ reject(res[0]);
+ } else {
+ resolve(res[1]);
+ }
+ });
+ });
+ } };
+
+
+var SYNC_API_RE =
+/^\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale/;
+
+var CONTEXT_API_RE = /^create|Manager$/;
+
+// Context例外情况
+var CONTEXT_API_RE_EXC = ['createBLEConnection'];
+
+// 同步例外情况
+var ASYNC_API = ['createBLEConnection'];
+
+var CALLBACK_API_RE = /^on|^off/;
+
+function isContextApi(name) {
+ return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1;
+}
+function isSyncApi(name) {
+ return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1;
+}
+
+function isCallbackApi(name) {
+ return CALLBACK_API_RE.test(name) && name !== 'onPush';
+}
+
+function handlePromise(promise) {
+ return promise.then(function (data) {
+ return [null, data];
+ }).
+ catch(function (err) {return [err];});
+}
+
+function shouldPromise(name) {
+ if (
+ isContextApi(name) ||
+ isSyncApi(name) ||
+ isCallbackApi(name))
+ {
+ return false;
+ }
+ return true;
+}
+
+/* eslint-disable no-extend-native */
+if (!Promise.prototype.finally) {
+ Promise.prototype.finally = function (callback) {
+ var promise = this.constructor;
+ return this.then(
+ function (value) {return promise.resolve(callback()).then(function () {return value;});},
+ function (reason) {return promise.resolve(callback()).then(function () {
+ throw reason;
+ });});
+
+ };
+}
+
+function promisify(name, api) {
+ if (!shouldPromise(name)) {
+ return api;
+ }
+ return function promiseApi() {var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {params[_key2 - 1] = arguments[_key2];}
+ if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) {
+ return wrapperReturnValue(name, invokeApi.apply(void 0, [name, api, options].concat(params)));
+ }
+ return wrapperReturnValue(name, handlePromise(new Promise(function (resolve, reject) {
+ invokeApi.apply(void 0, [name, api, Object.assign({}, options, {
+ success: resolve,
+ fail: reject })].concat(
+ params));
+ })));
+ };
+}
+
+var EPS = 1e-4;
+var BASE_DEVICE_WIDTH = 750;
+var isIOS = false;
+var deviceWidth = 0;
+var deviceDPR = 0;
+
+function checkDeviceWidth() {var _wx$getSystemInfoSync =
+
+
+
+
+ wx.getSystemInfoSync(),platform = _wx$getSystemInfoSync.platform,pixelRatio = _wx$getSystemInfoSync.pixelRatio,windowWidth = _wx$getSystemInfoSync.windowWidth; // uni=>wx runtime 编译目标是 uni 对象,内部不允许直接使用 uni
+
+ deviceWidth = windowWidth;
+ deviceDPR = pixelRatio;
+ isIOS = platform === 'ios';
+}
+
+function upx2px(number, newDeviceWidth) {
+ if (deviceWidth === 0) {
+ checkDeviceWidth();
+ }
+
+ number = Number(number);
+ if (number === 0) {
+ return 0;
+ }
+ var result = number / BASE_DEVICE_WIDTH * (newDeviceWidth || deviceWidth);
+ if (result < 0) {
+ result = -result;
+ }
+ result = Math.floor(result + EPS);
+ if (result === 0) {
+ if (deviceDPR === 1 || !isIOS) {
+ result = 1;
+ } else {
+ result = 0.5;
+ }
+ }
+ return number < 0 ? -result : result;
+}
+
+function getLocale() {
+ // 优先使用 $locale
+ var app = getApp({
+ allowDefault: true });
+
+ if (app && app.$vm) {
+ return app.$vm.$locale;
+ }
+ return wx.getSystemInfoSync().language || 'zh-Hans';
+}
+
+function setLocale(locale) {
+ var app = getApp();
+ if (!app) {
+ return false;
+ }
+ var oldLocale = app.$vm.$locale;
+ if (oldLocale !== locale) {
+ app.$vm.$locale = locale;
+ onLocaleChangeCallbacks.forEach(function (fn) {return fn({
+ locale: locale });});
+
+ return true;
+ }
+ return false;
+}
+
+var onLocaleChangeCallbacks = [];
+function onLocaleChange(fn) {
+ if (onLocaleChangeCallbacks.indexOf(fn) === -1) {
+ onLocaleChangeCallbacks.push(fn);
+ }
+}
+
+if (typeof global !== 'undefined') {
+ global.getLocale = getLocale;
+}
+
+var interceptors = {
+ promiseInterceptor: promiseInterceptor };
+
+
+var baseApi = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ upx2px: upx2px,
+ getLocale: getLocale,
+ setLocale: setLocale,
+ onLocaleChange: onLocaleChange,
+ addInterceptor: addInterceptor,
+ removeInterceptor: removeInterceptor,
+ interceptors: interceptors });
+
+
+function findExistsPageIndex(url) {
+ var pages = getCurrentPages();
+ var len = pages.length;
+ while (len--) {
+ var page = pages[len];
+ if (page.$page && page.$page.fullPath === url) {
+ return len;
+ }
+ }
+ return -1;
+}
+
+var redirectTo = {
+ name: function name(fromArgs) {
+ if (fromArgs.exists === 'back' && fromArgs.delta) {
+ return 'navigateBack';
+ }
+ return 'redirectTo';
+ },
+ args: function args(fromArgs) {
+ if (fromArgs.exists === 'back' && fromArgs.url) {
+ var existsPageIndex = findExistsPageIndex(fromArgs.url);
+ if (existsPageIndex !== -1) {
+ var delta = getCurrentPages().length - 1 - existsPageIndex;
+ if (delta > 0) {
+ fromArgs.delta = delta;
+ }
+ }
+ }
+ } };
+
+
+var previewImage = {
+ args: function args(fromArgs) {
+ var currentIndex = parseInt(fromArgs.current);
+ if (isNaN(currentIndex)) {
+ return;
+ }
+ var urls = fromArgs.urls;
+ if (!Array.isArray(urls)) {
+ return;
+ }
+ var len = urls.length;
+ if (!len) {
+ return;
+ }
+ if (currentIndex < 0) {
+ currentIndex = 0;
+ } else if (currentIndex >= len) {
+ currentIndex = len - 1;
+ }
+ if (currentIndex > 0) {
+ fromArgs.current = urls[currentIndex];
+ fromArgs.urls = urls.filter(
+ function (item, index) {return index < currentIndex ? item !== urls[currentIndex] : true;});
+
+ } else {
+ fromArgs.current = urls[0];
+ }
+ return {
+ indicator: false,
+ loop: false };
+
+ } };
+
+
+var UUID_KEY = '__DC_STAT_UUID';
+var deviceId;
+function addUuid(result) {
+ deviceId = deviceId || wx.getStorageSync(UUID_KEY);
+ if (!deviceId) {
+ deviceId = Date.now() + '' + Math.floor(Math.random() * 1e7);
+ wx.setStorage({
+ key: UUID_KEY,
+ data: deviceId });
+
+ }
+ result.deviceId = deviceId;
+}
+
+function addSafeAreaInsets(result) {
+ if (result.safeArea) {
+ var safeArea = result.safeArea;
+ result.safeAreaInsets = {
+ top: safeArea.top,
+ left: safeArea.left,
+ right: result.windowWidth - safeArea.right,
+ bottom: result.windowHeight - safeArea.bottom };
+
+ }
+}
+
+var getSystemInfo = {
+ returnValue: function returnValue(result) {
+ addUuid(result);
+ addSafeAreaInsets(result);
+ } };
+
+
+var showActionSheet = {
+ args: function args(fromArgs) {
+ if (typeof fromArgs === 'object') {
+ fromArgs.alertText = fromArgs.title;
+ }
+ } };
+
+
+// import navigateTo from 'uni-helpers/navigate-to'
+
+var protocols = {
+ redirectTo: redirectTo,
+ // navigateTo, // 由于在微信开发者工具的页面参数,会显示__id__参数,因此暂时关闭mp-weixin对于navigateTo的AOP
+ previewImage: previewImage,
+ getSystemInfo: getSystemInfo,
+ getSystemInfoSync: getSystemInfo,
+ showActionSheet: showActionSheet };
+
+var todos = [
+'vibrate',
+'preloadPage',
+'unPreloadPage',
+'loadSubPackage'];
+
+var canIUses = [];
+
+var CALLBACKS = ['success', 'fail', 'cancel', 'complete'];
+
+function processCallback(methodName, method, returnValue) {
+ return function (res) {
+ return method(processReturnValue(methodName, res, returnValue));
+ };
+}
+
+function processArgs(methodName, fromArgs) {var argsOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};var returnValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};var keepFromArgs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
+ if (isPlainObject(fromArgs)) {// 一般 api 的参数解析
+ var toArgs = keepFromArgs === true ? fromArgs : {}; // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值
+ if (isFn(argsOption)) {
+ argsOption = argsOption(fromArgs, toArgs) || {};
+ }
+ for (var key in fromArgs) {
+ if (hasOwn(argsOption, key)) {
+ var keyOption = argsOption[key];
+ if (isFn(keyOption)) {
+ keyOption = keyOption(fromArgs[key], fromArgs, toArgs);
+ }
+ if (!keyOption) {// 不支持的参数
+ console.warn("The '".concat(methodName, "' method of platform '\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F' does not support option '").concat(key, "'"));
+ } else if (isStr(keyOption)) {// 重写参数 key
+ toArgs[keyOption] = fromArgs[key];
+ } else if (isPlainObject(keyOption)) {// {name:newName,value:value}可重新指定参数 key:value
+ toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;
+ }
+ } else if (CALLBACKS.indexOf(key) !== -1) {
+ if (isFn(fromArgs[key])) {
+ toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);
+ }
+ } else {
+ if (!keepFromArgs) {
+ toArgs[key] = fromArgs[key];
+ }
+ }
+ }
+ return toArgs;
+ } else if (isFn(fromArgs)) {
+ fromArgs = processCallback(methodName, fromArgs, returnValue);
+ }
+ return fromArgs;
+}
+
+function processReturnValue(methodName, res, returnValue) {var keepReturnValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+ if (isFn(protocols.returnValue)) {// 处理通用 returnValue
+ res = protocols.returnValue(methodName, res);
+ }
+ return processArgs(methodName, res, returnValue, {}, keepReturnValue);
+}
+
+function wrapper(methodName, method) {
+ if (hasOwn(protocols, methodName)) {
+ var protocol = protocols[methodName];
+ if (!protocol) {// 暂不支持的 api
+ return function () {
+ console.error("Platform '\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F' does not support '".concat(methodName, "'."));
+ };
+ }
+ return function (arg1, arg2) {// 目前 api 最多两个参数
+ var options = protocol;
+ if (isFn(protocol)) {
+ options = protocol(arg1);
+ }
+
+ arg1 = processArgs(methodName, arg1, options.args, options.returnValue);
+
+ var args = [arg1];
+ if (typeof arg2 !== 'undefined') {
+ args.push(arg2);
+ }
+ if (isFn(options.name)) {
+ methodName = options.name(arg1);
+ } else if (isStr(options.name)) {
+ methodName = options.name;
+ }
+ var returnValue = wx[methodName].apply(wx, args);
+ if (isSyncApi(methodName)) {// 同步 api
+ return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName));
+ }
+ return returnValue;
+ };
+ }
+ return method;
+}
+
+var todoApis = Object.create(null);
+
+var TODOS = [
+'onTabBarMidButtonTap',
+'subscribePush',
+'unsubscribePush',
+'onPush',
+'offPush',
+'share'];
+
+
+function createTodoApi(name) {
+ return function todoApi(_ref)
+
+
+ {var fail = _ref.fail,complete = _ref.complete;
+ var res = {
+ errMsg: "".concat(name, ":fail method '").concat(name, "' not supported") };
+
+ isFn(fail) && fail(res);
+ isFn(complete) && complete(res);
+ };
+}
+
+TODOS.forEach(function (name) {
+ todoApis[name] = createTodoApi(name);
+});
+
+var providers = {
+ oauth: ['weixin'],
+ share: ['weixin'],
+ payment: ['wxpay'],
+ push: ['weixin'] };
+
+
+function getProvider(_ref2)
+
+
+
+
+{var service = _ref2.service,success = _ref2.success,fail = _ref2.fail,complete = _ref2.complete;
+ var res = false;
+ if (providers[service]) {
+ res = {
+ errMsg: 'getProvider:ok',
+ service: service,
+ provider: providers[service] };
+
+ isFn(success) && success(res);
+ } else {
+ res = {
+ errMsg: 'getProvider:fail service not found' };
+
+ isFn(fail) && fail(res);
+ }
+ isFn(complete) && complete(res);
+}
+
+var extraApi = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ getProvider: getProvider });
+
+
+var getEmitter = function () {
+ var Emitter;
+ return function getUniEmitter() {
+ if (!Emitter) {
+ Emitter = new _vue.default();
+ }
+ return Emitter;
+ };
+}();
+
+function apply(ctx, method, args) {
+ return ctx[method].apply(ctx, args);
+}
+
+function $on() {
+ return apply(getEmitter(), '$on', Array.prototype.slice.call(arguments));
+}
+function $off() {
+ return apply(getEmitter(), '$off', Array.prototype.slice.call(arguments));
+}
+function $once() {
+ return apply(getEmitter(), '$once', Array.prototype.slice.call(arguments));
+}
+function $emit() {
+ return apply(getEmitter(), '$emit', Array.prototype.slice.call(arguments));
+}
+
+var eventApi = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ $on: $on,
+ $off: $off,
+ $once: $once,
+ $emit: $emit });
+
+
+var api = /*#__PURE__*/Object.freeze({
+ __proto__: null });
+
+
+var MPPage = Page;
+var MPComponent = Component;
+
+var customizeRE = /:/g;
+
+var customize = cached(function (str) {
+ return camelize(str.replace(customizeRE, '-'));
+});
+
+function initTriggerEvent(mpInstance) {
+ var oldTriggerEvent = mpInstance.triggerEvent;
+ var newTriggerEvent = function newTriggerEvent(event) {for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {args[_key3 - 1] = arguments[_key3];}
+ return oldTriggerEvent.apply(mpInstance, [customize(event)].concat(args));
+ };
+ try {
+ // 京东小程序 triggerEvent 为只读
+ mpInstance.triggerEvent = newTriggerEvent;
+ } catch (error) {
+ mpInstance._triggerEvent = newTriggerEvent;
+ }
+}
+
+function initHook(name, options, isComponent) {
+ var oldHook = options[name];
+ if (!oldHook) {
+ options[name] = function () {
+ initTriggerEvent(this);
+ };
+ } else {
+ options[name] = function () {
+ initTriggerEvent(this);for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {args[_key4] = arguments[_key4];}
+ return oldHook.apply(this, args);
+ };
+ }
+}
+if (!MPPage.__$wrappered) {
+ MPPage.__$wrappered = true;
+ Page = function Page() {var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ initHook('onLoad', options);
+ return MPPage(options);
+ };
+ Page.after = MPPage.after;
+
+ Component = function Component() {var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ initHook('created', options);
+ return MPComponent(options);
+ };
+}
+
+var PAGE_EVENT_HOOKS = [
+'onPullDownRefresh',
+'onReachBottom',
+'onAddToFavorites',
+'onShareTimeline',
+'onShareAppMessage',
+'onPageScroll',
+'onResize',
+'onTabItemTap'];
+
+
+function initMocks(vm, mocks) {
+ var mpInstance = vm.$mp[vm.mpType];
+ mocks.forEach(function (mock) {
+ if (hasOwn(mpInstance, mock)) {
+ vm[mock] = mpInstance[mock];
+ }
+ });
+}
+
+function hasHook(hook, vueOptions) {
+ if (!vueOptions) {
+ return true;
+ }
+
+ if (_vue.default.options && Array.isArray(_vue.default.options[hook])) {
+ return true;
+ }
+
+ vueOptions = vueOptions.default || vueOptions;
+
+ if (isFn(vueOptions)) {
+ if (isFn(vueOptions.extendOptions[hook])) {
+ return true;
+ }
+ if (vueOptions.super &&
+ vueOptions.super.options &&
+ Array.isArray(vueOptions.super.options[hook])) {
+ return true;
+ }
+ return false;
+ }
+
+ if (isFn(vueOptions[hook])) {
+ return true;
+ }
+ var mixins = vueOptions.mixins;
+ if (Array.isArray(mixins)) {
+ return !!mixins.find(function (mixin) {return hasHook(hook, mixin);});
+ }
+}
+
+function initHooks(mpOptions, hooks, vueOptions) {
+ hooks.forEach(function (hook) {
+ if (hasHook(hook, vueOptions)) {
+ mpOptions[hook] = function (args) {
+ return this.$vm && this.$vm.__call_hook(hook, args);
+ };
+ }
+ });
+}
+
+function initVueComponent(Vue, vueOptions) {
+ vueOptions = vueOptions.default || vueOptions;
+ var VueComponent;
+ if (isFn(vueOptions)) {
+ VueComponent = vueOptions;
+ } else {
+ VueComponent = Vue.extend(vueOptions);
+ }
+ vueOptions = VueComponent.options;
+ return [VueComponent, vueOptions];
+}
+
+function initSlots(vm, vueSlots) {
+ if (Array.isArray(vueSlots) && vueSlots.length) {
+ var $slots = Object.create(null);
+ vueSlots.forEach(function (slotName) {
+ $slots[slotName] = true;
+ });
+ vm.$scopedSlots = vm.$slots = $slots;
+ }
+}
+
+function initVueIds(vueIds, mpInstance) {
+ vueIds = (vueIds || '').split(',');
+ var len = vueIds.length;
+
+ if (len === 1) {
+ mpInstance._$vueId = vueIds[0];
+ } else if (len === 2) {
+ mpInstance._$vueId = vueIds[0];
+ mpInstance._$vuePid = vueIds[1];
+ }
+}
+
+function initData(vueOptions, context) {
+ var data = vueOptions.data || {};
+ var methods = vueOptions.methods || {};
+
+ if (typeof data === 'function') {
+ try {
+ data = data.call(context); // 支持 Vue.prototype 上挂的数据
+ } catch (e) {
+ if (Object({"VUE_APP_NAME":"Jinan_app","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
+ console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);
+ }
+ }
+ } else {
+ try {
+ // 对 data 格式化
+ data = JSON.parse(JSON.stringify(data));
+ } catch (e) {}
+ }
+
+ if (!isPlainObject(data)) {
+ data = {};
+ }
+
+ Object.keys(methods).forEach(function (methodName) {
+ if (context.__lifecycle_hooks__.indexOf(methodName) === -1 && !hasOwn(data, methodName)) {
+ data[methodName] = methods[methodName];
+ }
+ });
+
+ return data;
+}
+
+var PROP_TYPES = [String, Number, Boolean, Object, Array, null];
+
+function createObserver(name) {
+ return function observer(newVal, oldVal) {
+ if (this.$vm) {
+ this.$vm[name] = newVal; // 为了触发其他非 render watcher
+ }
+ };
+}
+
+function initBehaviors(vueOptions, initBehavior) {
+ var vueBehaviors = vueOptions.behaviors;
+ var vueExtends = vueOptions.extends;
+ var vueMixins = vueOptions.mixins;
+
+ var vueProps = vueOptions.props;
+
+ if (!vueProps) {
+ vueOptions.props = vueProps = [];
+ }
+
+ var behaviors = [];
+ if (Array.isArray(vueBehaviors)) {
+ vueBehaviors.forEach(function (behavior) {
+ behaviors.push(behavior.replace('uni://', "wx".concat("://")));
+ if (behavior === 'uni://form-field') {
+ if (Array.isArray(vueProps)) {
+ vueProps.push('name');
+ vueProps.push('value');
+ } else {
+ vueProps.name = {
+ type: String,
+ default: '' };
+
+ vueProps.value = {
+ type: [String, Number, Boolean, Array, Object, Date],
+ default: '' };
+
+ }
+ }
+ });
+ }
+ if (isPlainObject(vueExtends) && vueExtends.props) {
+ behaviors.push(
+ initBehavior({
+ properties: initProperties(vueExtends.props, true) }));
+
+
+ }
+ if (Array.isArray(vueMixins)) {
+ vueMixins.forEach(function (vueMixin) {
+ if (isPlainObject(vueMixin) && vueMixin.props) {
+ behaviors.push(
+ initBehavior({
+ properties: initProperties(vueMixin.props, true) }));
+
+
+ }
+ });
+ }
+ return behaviors;
+}
+
+function parsePropType(key, type, defaultValue, file) {
+ // [String]=>String
+ if (Array.isArray(type) && type.length === 1) {
+ return type[0];
+ }
+ return type;
+}
+
+function initProperties(props) {var isBehavior = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;var file = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
+ var properties = {};
+ if (!isBehavior) {
+ properties.vueId = {
+ type: String,
+ value: '' };
+
+ // 用于字节跳动小程序模拟抽象节点
+ properties.generic = {
+ type: Object,
+ value: null };
+
+ // scopedSlotsCompiler auto
+ properties.scopedSlotsCompiler = {
+ type: String,
+ value: '' };
+
+ properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
+ type: null,
+ value: [],
+ observer: function observer(newVal, oldVal) {
+ var $slots = Object.create(null);
+ newVal.forEach(function (slotName) {
+ $slots[slotName] = true;
+ });
+ this.setData({
+ $slots: $slots });
+
+ } };
+
+ }
+ if (Array.isArray(props)) {// ['title']
+ props.forEach(function (key) {
+ properties[key] = {
+ type: null,
+ observer: createObserver(key) };
+
+ });
+ } else if (isPlainObject(props)) {// {title:{type:String,default:''},content:String}
+ Object.keys(props).forEach(function (key) {
+ var opts = props[key];
+ if (isPlainObject(opts)) {// title:{type:String,default:''}
+ var value = opts.default;
+ if (isFn(value)) {
+ value = value();
+ }
+
+ opts.type = parsePropType(key, opts.type);
+
+ properties[key] = {
+ type: PROP_TYPES.indexOf(opts.type) !== -1 ? opts.type : null,
+ value: value,
+ observer: createObserver(key) };
+
+ } else {// content:String
+ var type = parsePropType(key, opts);
+ properties[key] = {
+ type: PROP_TYPES.indexOf(type) !== -1 ? type : null,
+ observer: createObserver(key) };
+
+ }
+ });
+ }
+ return properties;
+}
+
+function wrapper$1(event) {
+ // TODO 又得兼容 mpvue 的 mp 对象
+ try {
+ event.mp = JSON.parse(JSON.stringify(event));
+ } catch (e) {}
+
+ event.stopPropagation = noop;
+ event.preventDefault = noop;
+
+ event.target = event.target || {};
+
+ if (!hasOwn(event, 'detail')) {
+ event.detail = {};
+ }
+
+ if (hasOwn(event, 'markerId')) {
+ event.detail = typeof event.detail === 'object' ? event.detail : {};
+ event.detail.markerId = event.markerId;
+ }
+
+ if (isPlainObject(event.detail)) {
+ event.target = Object.assign({}, event.target, event.detail);
+ }
+
+ return event;
+}
+
+function getExtraValue(vm, dataPathsArray) {
+ var context = vm;
+ dataPathsArray.forEach(function (dataPathArray) {
+ var dataPath = dataPathArray[0];
+ var value = dataPathArray[2];
+ if (dataPath || typeof value !== 'undefined') {// ['','',index,'disable']
+ var propPath = dataPathArray[1];
+ var valuePath = dataPathArray[3];
+
+ var vFor;
+ if (Number.isInteger(dataPath)) {
+ vFor = dataPath;
+ } else if (!dataPath) {
+ vFor = context;
+ } else if (typeof dataPath === 'string' && dataPath) {
+ if (dataPath.indexOf('#s#') === 0) {
+ vFor = dataPath.substr(3);
+ } else {
+ vFor = vm.__get_value(dataPath, context);
+ }
+ }
+
+ if (Number.isInteger(vFor)) {
+ context = value;
+ } else if (!propPath) {
+ context = vFor[value];
+ } else {
+ if (Array.isArray(vFor)) {
+ context = vFor.find(function (vForItem) {
+ return vm.__get_value(propPath, vForItem) === value;
+ });
+ } else if (isPlainObject(vFor)) {
+ context = Object.keys(vFor).find(function (vForKey) {
+ return vm.__get_value(propPath, vFor[vForKey]) === value;
+ });
+ } else {
+ console.error('v-for 暂不支持循环数据:', vFor);
+ }
+ }
+
+ if (valuePath) {
+ context = vm.__get_value(valuePath, context);
+ }
+ }
+ });
+ return context;
+}
+
+function processEventExtra(vm, extra, event) {
+ var extraObj = {};
+
+ if (Array.isArray(extra) && extra.length) {
+ /**
+ *[
+ * ['data.items', 'data.id', item.data.id],
+ * ['metas', 'id', meta.id]
+ *],
+ *[
+ * ['data.items', 'data.id', item.data.id],
+ * ['metas', 'id', meta.id]
+ *],
+ *'test'
+ */
+ extra.forEach(function (dataPath, index) {
+ if (typeof dataPath === 'string') {
+ if (!dataPath) {// model,prop.sync
+ extraObj['$' + index] = vm;
+ } else {
+ if (dataPath === '$event') {// $event
+ extraObj['$' + index] = event;
+ } else if (dataPath === 'arguments') {
+ if (event.detail && event.detail.__args__) {
+ extraObj['$' + index] = event.detail.__args__;
+ } else {
+ extraObj['$' + index] = [event];
+ }
+ } else if (dataPath.indexOf('$event.') === 0) {// $event.target.value
+ extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event);
+ } else {
+ extraObj['$' + index] = vm.__get_value(dataPath);
+ }
+ }
+ } else {
+ extraObj['$' + index] = getExtraValue(vm, dataPath);
+ }
+ });
+ }
+
+ return extraObj;
+}
+
+function getObjByArray(arr) {
+ var obj = {};
+ for (var i = 1; i < arr.length; i++) {
+ var element = arr[i];
+ obj[element[0]] = element[1];
+ }
+ return obj;
+}
+
+function processEventArgs(vm, event) {var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];var extra = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];var isCustom = arguments.length > 4 ? arguments[4] : undefined;var methodName = arguments.length > 5 ? arguments[5] : undefined;
+ var isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象
+ if (isCustom) {// 自定义事件
+ isCustomMPEvent = event.currentTarget &&
+ event.currentTarget.dataset &&
+ event.currentTarget.dataset.comType === 'wx';
+ if (!args.length) {// 无参数,直接传入 event 或 detail 数组
+ if (isCustomMPEvent) {
+ return [event];
+ }
+ return event.detail.__args__ || event.detail;
+ }
+ }
+
+ var extraObj = processEventExtra(vm, extra, event);
+
+ var ret = [];
+ args.forEach(function (arg) {
+ if (arg === '$event') {
+ if (methodName === '__set_model' && !isCustom) {// input v-model value
+ ret.push(event.target.value);
+ } else {
+ if (isCustom && !isCustomMPEvent) {
+ ret.push(event.detail.__args__[0]);
+ } else {// wxcomponent 组件或内置组件
+ ret.push(event);
+ }
+ }
+ } else {
+ if (Array.isArray(arg) && arg[0] === 'o') {
+ ret.push(getObjByArray(arg));
+ } else if (typeof arg === 'string' && hasOwn(extraObj, arg)) {
+ ret.push(extraObj[arg]);
+ } else {
+ ret.push(arg);
+ }
+ }
+ });
+
+ return ret;
+}
+
+var ONCE = '~';
+var CUSTOM = '^';
+
+function isMatchEventType(eventType, optType) {
+ return eventType === optType ||
+
+ optType === 'regionchange' && (
+
+ eventType === 'begin' ||
+ eventType === 'end');
+
+
+}
+
+function getContextVm(vm) {
+ var $parent = vm.$parent;
+ // 父组件是 scoped slots 或者其他自定义组件时继续查找
+ while ($parent && $parent.$parent && ($parent.$options.generic || $parent.$parent.$options.generic || $parent.$scope._$vuePid)) {
+ $parent = $parent.$parent;
+ }
+ return $parent && $parent.$parent;
+}
+
+function handleEvent(event) {var _this = this;
+ event = wrapper$1(event);
+
+ // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]]
+ var dataset = (event.currentTarget || event.target).dataset;
+ if (!dataset) {
+ return console.warn('事件信息不存在');
+ }
+ var eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰
+ if (!eventOpts) {
+ return console.warn('事件信息不存在');
+ }
+
+ // [['handle',[1,2,a]],['handle1',[1,2,a]]]
+ var eventType = event.type;
+
+ var ret = [];
+
+ eventOpts.forEach(function (eventOpt) {
+ var type = eventOpt[0];
+ var eventsArray = eventOpt[1];
+
+ var isCustom = type.charAt(0) === CUSTOM;
+ type = isCustom ? type.slice(1) : type;
+ var isOnce = type.charAt(0) === ONCE;
+ type = isOnce ? type.slice(1) : type;
+
+ if (eventsArray && isMatchEventType(eventType, type)) {
+ eventsArray.forEach(function (eventArray) {
+ var methodName = eventArray[0];
+ if (methodName) {
+ var handlerCtx = _this.$vm;
+ if (handlerCtx.$options.generic) {// mp-weixin,mp-toutiao 抽象节点模拟 scoped slots
+ handlerCtx = getContextVm(handlerCtx) || handlerCtx;
+ }
+ if (methodName === '$emit') {
+ handlerCtx.$emit.apply(handlerCtx,
+ processEventArgs(
+ _this.$vm,
+ event,
+ eventArray[1],
+ eventArray[2],
+ isCustom,
+ methodName));
+
+ return;
+ }
+ var handler = handlerCtx[methodName];
+ if (!isFn(handler)) {
+ throw new Error(" _vm.".concat(methodName, " is not a function"));
+ }
+ if (isOnce) {
+ if (handler.once) {
+ return;
+ }
+ handler.once = true;
+ }
+ var params = processEventArgs(
+ _this.$vm,
+ event,
+ eventArray[1],
+ eventArray[2],
+ isCustom,
+ methodName);
+
+ params = Array.isArray(params) ? params : [];
+ // 参数尾部增加原始事件对象用于复杂表达式内获取额外数据
+ if (/=\s*\S+\.eventParams\s*\|\|\s*\S+\[['"]event-params['"]\]/.test(handler.toString())) {
+ // eslint-disable-next-line no-sparse-arrays
+ params = params.concat([,,,,,,,,,, event]);
+ }
+ ret.push(handler.apply(handlerCtx, params));
+ }
+ });
+ }
+ });
+
+ if (
+ eventType === 'input' &&
+ ret.length === 1 &&
+ typeof ret[0] !== 'undefined')
+ {
+ return ret[0];
+ }
+}
+
+var messages = {};
+
+var locale;
+
+{
+ locale = wx.getSystemInfoSync().language;
+}
+
+function initI18nMessages() {
+ if (!isEnableLocale()) {
+ return;
+ }
+ var localeKeys = Object.keys(__uniConfig.locales);
+ if (localeKeys.length) {
+ localeKeys.forEach(function (locale) {
+ var curMessages = messages[locale];
+ var userMessages = __uniConfig.locales[locale];
+ if (curMessages) {
+ Object.assign(curMessages, userMessages);
+ } else {
+ messages[locale] = userMessages;
+ }
+ });
+ }
+}
+
+initI18nMessages();
+
+var i18n = (0, _uniI18n.initVueI18n)(
+locale,
+{});
+
+var t = i18n.t;
+var i18nMixin = i18n.mixin = {
+ beforeCreate: function beforeCreate() {var _this2 = this;
+ var unwatch = i18n.i18n.watchLocale(function () {
+ _this2.$forceUpdate();
+ });
+ this.$once('hook:beforeDestroy', function () {
+ unwatch();
+ });
+ },
+ methods: {
+ $$t: function $$t(key, values) {
+ return t(key, values);
+ } } };
+
+
+var setLocale$1 = i18n.setLocale;
+var getLocale$1 = i18n.getLocale;
+
+function initAppLocale(Vue, appVm, locale) {
+ var state = Vue.observable({
+ locale: locale || i18n.getLocale() });
+
+ var localeWatchers = [];
+ appVm.$watchLocale = function (fn) {
+ localeWatchers.push(fn);
+ };
+ Object.defineProperty(appVm, '$locale', {
+ get: function get() {
+ return state.locale;
+ },
+ set: function set(v) {
+ state.locale = v;
+ localeWatchers.forEach(function (watch) {return watch(v);});
+ } });
+
+}
+
+function isEnableLocale() {
+ return typeof __uniConfig !== 'undefined' && __uniConfig.locales && !!Object.keys(__uniConfig.locales).length;
+}
+
+// export function initI18n() {
+// const localeKeys = Object.keys(__uniConfig.locales || {})
+// if (localeKeys.length) {
+// localeKeys.forEach((locale) =>
+// i18n.add(locale, __uniConfig.locales[locale])
+// )
+// }
+// }
+
+var eventChannels = {};
+
+var eventChannelStack = [];
+
+function getEventChannel(id) {
+ if (id) {
+ var eventChannel = eventChannels[id];
+ delete eventChannels[id];
+ return eventChannel;
+ }
+ return eventChannelStack.shift();
+}
+
+var hooks = [
+'onShow',
+'onHide',
+'onError',
+'onPageNotFound',
+'onThemeChange',
+'onUnhandledRejection'];
+
+
+function initEventChannel() {
+ _vue.default.prototype.getOpenerEventChannel = function () {
+ // 微信小程序使用自身getOpenerEventChannel
+ {
+ return this.$scope.getOpenerEventChannel();
+ }
+ };
+ var callHook = _vue.default.prototype.__call_hook;
+ _vue.default.prototype.__call_hook = function (hook, args) {
+ if (hook === 'onLoad' && args && args.__id__) {
+ this.__eventChannel__ = getEventChannel(args.__id__);
+ delete args.__id__;
+ }
+ return callHook.call(this, hook, args);
+ };
+}
+
+function initScopedSlotsParams() {
+ var center = {};
+ var parents = {};
+
+ _vue.default.prototype.$hasScopedSlotsParams = function (vueId) {
+ var has = center[vueId];
+ if (!has) {
+ parents[vueId] = this;
+ this.$on('hook:destroyed', function () {
+ delete parents[vueId];
+ });
+ }
+ return has;
+ };
+
+ _vue.default.prototype.$getScopedSlotsParams = function (vueId, name, key) {
+ var data = center[vueId];
+ if (data) {
+ var object = data[name] || {};
+ return key ? object[key] : object;
+ } else {
+ parents[vueId] = this;
+ this.$on('hook:destroyed', function () {
+ delete parents[vueId];
+ });
+ }
+ };
+
+ _vue.default.prototype.$setScopedSlotsParams = function (name, value) {
+ var vueIds = this.$options.propsData.vueId;
+ if (vueIds) {
+ var vueId = vueIds.split(',')[0];
+ var object = center[vueId] = center[vueId] || {};
+ object[name] = value;
+ if (parents[vueId]) {
+ parents[vueId].$forceUpdate();
+ }
+ }
+ };
+
+ _vue.default.mixin({
+ destroyed: function destroyed() {
+ var propsData = this.$options.propsData;
+ var vueId = propsData && propsData.vueId;
+ if (vueId) {
+ delete center[vueId];
+ delete parents[vueId];
+ }
+ } });
+
+}
+
+function parseBaseApp(vm, _ref3)
+
+
+{var mocks = _ref3.mocks,initRefs = _ref3.initRefs;
+ initEventChannel();
+ {
+ initScopedSlotsParams();
+ }
+ if (vm.$options.store) {
+ _vue.default.prototype.$store = vm.$options.store;
+ }
+ uniIdMixin(_vue.default);
+
+ _vue.default.prototype.mpHost = "mp-weixin";
+
+ _vue.default.mixin({
+ beforeCreate: function beforeCreate() {
+ if (!this.$options.mpType) {
+ return;
+ }
+
+ this.mpType = this.$options.mpType;
+
+ this.$mp = _defineProperty({
+ data: {} },
+ this.mpType, this.$options.mpInstance);
+
+
+ this.$scope = this.$options.mpInstance;
+
+ delete this.$options.mpType;
+ delete this.$options.mpInstance;
+ if (this.mpType === 'page' && typeof getApp === 'function') {// hack vue-i18n
+ var app = getApp();
+ if (app.$vm && app.$vm.$i18n) {
+ this._i18n = app.$vm.$i18n;
+ }
+ }
+ if (this.mpType !== 'app') {
+ initRefs(this);
+ initMocks(this, mocks);
+ }
+ } });
+
+
+ var appOptions = {
+ onLaunch: function onLaunch(args) {
+ if (this.$vm) {// 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前
+ return;
+ }
+ {
+ if (wx.canIUse && !wx.canIUse('nextTick')) {// 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断
+ console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');
+ }
+ }
+
+ this.$vm = vm;
+
+ this.$vm.$mp = {
+ app: this };
+
+
+ this.$vm.$scope = this;
+ // vm 上也挂载 globalData
+ this.$vm.globalData = this.globalData;
+
+ this.$vm._isMounted = true;
+ this.$vm.__call_hook('mounted', args);
+
+ this.$vm.__call_hook('onLaunch', args);
+ } };
+
+
+ // 兼容旧版本 globalData
+ appOptions.globalData = vm.$options.globalData || {};
+ // 将 methods 中的方法挂在 getApp() 中
+ var methods = vm.$options.methods;
+ if (methods) {
+ Object.keys(methods).forEach(function (name) {
+ appOptions[name] = methods[name];
+ });
+ }
+
+ initAppLocale(_vue.default, vm, wx.getSystemInfoSync().language || 'zh-Hans');
+
+ initHooks(appOptions, hooks);
+
+ return appOptions;
+}
+
+var mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];
+
+function findVmByVueId(vm, vuePid) {
+ var $children = vm.$children;
+ // 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)
+ for (var i = $children.length - 1; i >= 0; i--) {
+ var childVm = $children[i];
+ if (childVm.$scope._$vueId === vuePid) {
+ return childVm;
+ }
+ }
+ // 反向递归查找
+ var parentVm;
+ for (var _i = $children.length - 1; _i >= 0; _i--) {
+ parentVm = findVmByVueId($children[_i], vuePid);
+ if (parentVm) {
+ return parentVm;
+ }
+ }
+}
+
+function initBehavior(options) {
+ return Behavior(options);
+}
+
+function isPage() {
+ return !!this.route;
+}
+
+function initRelation(detail) {
+ this.triggerEvent('__l', detail);
+}
+
+function selectAllComponents(mpInstance, selector, $refs) {
+ var components = mpInstance.selectAllComponents(selector);
+ components.forEach(function (component) {
+ var ref = component.dataset.ref;
+ $refs[ref] = component.$vm || component;
+ {
+ if (component.dataset.vueGeneric === 'scoped') {
+ component.selectAllComponents('.scoped-ref').forEach(function (scopedComponent) {
+ selectAllComponents(scopedComponent, selector, $refs);
+ });
+ }
+ }
+ });
+}
+
+function initRefs(vm) {
+ var mpInstance = vm.$scope;
+ Object.defineProperty(vm, '$refs', {
+ get: function get() {
+ var $refs = {};
+ selectAllComponents(mpInstance, '.vue-ref', $refs);
+ // TODO 暂不考虑 for 中的 scoped
+ var forComponents = mpInstance.selectAllComponents('.vue-ref-in-for');
+ forComponents.forEach(function (component) {
+ var ref = component.dataset.ref;
+ if (!$refs[ref]) {
+ $refs[ref] = [];
+ }
+ $refs[ref].push(component.$vm || component);
+ });
+ return $refs;
+ } });
+
+}
+
+function handleLink(event) {var _ref4 =
+
+
+
+ event.detail || event.value,vuePid = _ref4.vuePid,vueOptions = _ref4.vueOptions; // detail 是微信,value 是百度(dipatch)
+
+ var parentVm;
+
+ if (vuePid) {
+ parentVm = findVmByVueId(this.$vm, vuePid);
+ }
+
+ if (!parentVm) {
+ parentVm = this.$vm;
+ }
+
+ vueOptions.parent = parentVm;
+}
+
+function parseApp(vm) {
+ return parseBaseApp(vm, {
+ mocks: mocks,
+ initRefs: initRefs });
+
+}
+
+function createApp(vm) {
+ App(parseApp(vm));
+ return vm;
+}
+
+var encodeReserveRE = /[!'()*]/g;
+var encodeReserveReplacer = function encodeReserveReplacer(c) {return '%' + c.charCodeAt(0).toString(16);};
+var commaRE = /%2C/g;
+
+// fixed encodeURIComponent which is more conformant to RFC3986:
+// - escapes [!'()*]
+// - preserve commas
+var encode = function encode(str) {return encodeURIComponent(str).
+ replace(encodeReserveRE, encodeReserveReplacer).
+ replace(commaRE, ',');};
+
+function stringifyQuery(obj) {var encodeStr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : encode;
+ var res = obj ? Object.keys(obj).map(function (key) {
+ var val = obj[key];
+
+ if (val === undefined) {
+ return '';
+ }
+
+ if (val === null) {
+ return encodeStr(key);
+ }
+
+ if (Array.isArray(val)) {
+ var result = [];
+ val.forEach(function (val2) {
+ if (val2 === undefined) {
+ return;
+ }
+ if (val2 === null) {
+ result.push(encodeStr(key));
+ } else {
+ result.push(encodeStr(key) + '=' + encodeStr(val2));
+ }
+ });
+ return result.join('&');
+ }
+
+ return encodeStr(key) + '=' + encodeStr(val);
+ }).filter(function (x) {return x.length > 0;}).join('&') : null;
+ return res ? "?".concat(res) : '';
+}
+
+function parseBaseComponent(vueComponentOptions)
+
+
+{var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},isPage = _ref5.isPage,initRelation = _ref5.initRelation;var _initVueComponent =
+ initVueComponent(_vue.default, vueComponentOptions),_initVueComponent2 = _slicedToArray(_initVueComponent, 2),VueComponent = _initVueComponent2[0],vueOptions = _initVueComponent2[1];
+
+ var options = _objectSpread({
+ multipleSlots: true,
+ addGlobalClass: true },
+ vueOptions.options || {});
+
+
+ {
+ // 微信 multipleSlots 部分情况有 bug,导致内容顺序错乱 如 u-list,提供覆盖选项
+ if (vueOptions['mp-weixin'] && vueOptions['mp-weixin'].options) {
+ Object.assign(options, vueOptions['mp-weixin'].options);
+ }
+ }
+
+ var componentOptions = {
+ options: options,
+ data: initData(vueOptions, _vue.default.prototype),
+ behaviors: initBehaviors(vueOptions, initBehavior),
+ properties: initProperties(vueOptions.props, false, vueOptions.__file),
+ lifetimes: {
+ attached: function attached() {
+ var properties = this.properties;
+
+ var options = {
+ mpType: isPage.call(this) ? 'page' : 'component',
+ mpInstance: this,
+ propsData: properties };
+
+
+ initVueIds(properties.vueId, this);
+
+ // 处理父子关系
+ initRelation.call(this, {
+ vuePid: this._$vuePid,
+ vueOptions: options });
+
+
+ // 初始化 vue 实例
+ this.$vm = new VueComponent(options);
+
+ // 处理$slots,$scopedSlots(暂不支持动态变化$slots)
+ initSlots(this.$vm, properties.vueSlots);
+
+ // 触发首次 setData
+ this.$vm.$mount();
+ },
+ ready: function ready() {
+ // 当组件 props 默认值为 true,初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发
+ // https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800
+ if (this.$vm) {
+ this.$vm._isMounted = true;
+ this.$vm.__call_hook('mounted');
+ this.$vm.__call_hook('onReady');
+ }
+ },
+ detached: function detached() {
+ this.$vm && this.$vm.$destroy();
+ } },
+
+ pageLifetimes: {
+ show: function show(args) {
+ this.$vm && this.$vm.__call_hook('onPageShow', args);
+ },
+ hide: function hide() {
+ this.$vm && this.$vm.__call_hook('onPageHide');
+ },
+ resize: function resize(size) {
+ this.$vm && this.$vm.__call_hook('onPageResize', size);
+ } },
+
+ methods: {
+ __l: handleLink,
+ __e: handleEvent } };
+
+
+ // externalClasses
+ if (vueOptions.externalClasses) {
+ componentOptions.externalClasses = vueOptions.externalClasses;
+ }
+
+ if (Array.isArray(vueOptions.wxsCallMethods)) {
+ vueOptions.wxsCallMethods.forEach(function (callMethod) {
+ componentOptions.methods[callMethod] = function (args) {
+ return this.$vm[callMethod](args);
+ };
+ });
+ }
+
+ if (isPage) {
+ return componentOptions;
+ }
+ return [componentOptions, VueComponent];
+}
+
+function parseComponent(vueComponentOptions) {
+ return parseBaseComponent(vueComponentOptions, {
+ isPage: isPage,
+ initRelation: initRelation });
+
+}
+
+var hooks$1 = [
+'onShow',
+'onHide',
+'onUnload'];
+
+
+hooks$1.push.apply(hooks$1, PAGE_EVENT_HOOKS);
+
+function parseBasePage(vuePageOptions, _ref6)
+
+
+{var isPage = _ref6.isPage,initRelation = _ref6.initRelation;
+ var pageOptions = parseComponent(vuePageOptions);
+
+ initHooks(pageOptions.methods, hooks$1, vuePageOptions);
+
+ pageOptions.methods.onLoad = function (query) {
+ this.options = query;
+ var copyQuery = Object.assign({}, query);
+ delete copyQuery.__id__;
+ this.$page = {
+ fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery) };
+
+ this.$vm.$mp.query = query; // 兼容 mpvue
+ this.$vm.__call_hook('onLoad', query);
+ };
+
+ return pageOptions;
+}
+
+function parsePage(vuePageOptions) {
+ return parseBasePage(vuePageOptions, {
+ isPage: isPage,
+ initRelation: initRelation });
+
+}
+
+function createPage(vuePageOptions) {
+ {
+ return Component(parsePage(vuePageOptions));
+ }
+}
+
+function createComponent(vueOptions) {
+ {
+ return Component(parseComponent(vueOptions));
+ }
+}
+
+function createSubpackageApp(vm) {
+ var appOptions = parseApp(vm);
+ var app = getApp({
+ allowDefault: true });
+
+ vm.$scope = app;
+ var globalData = app.globalData;
+ if (globalData) {
+ Object.keys(appOptions.globalData).forEach(function (name) {
+ if (!hasOwn(globalData, name)) {
+ globalData[name] = appOptions.globalData[name];
+ }
+ });
+ }
+ Object.keys(appOptions).forEach(function (name) {
+ if (!hasOwn(app, name)) {
+ app[name] = appOptions[name];
+ }
+ });
+ if (isFn(appOptions.onShow) && wx.onAppShow) {
+ wx.onAppShow(function () {for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {args[_key5] = arguments[_key5];}
+ vm.__call_hook('onShow', args);
+ });
+ }
+ if (isFn(appOptions.onHide) && wx.onAppHide) {
+ wx.onAppHide(function () {for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {args[_key6] = arguments[_key6];}
+ vm.__call_hook('onHide', args);
+ });
+ }
+ if (isFn(appOptions.onLaunch)) {
+ var args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();
+ vm.__call_hook('onLaunch', args);
+ }
+ return vm;
+}
+
+function createPlugin(vm) {
+ var appOptions = parseApp(vm);
+ if (isFn(appOptions.onShow) && wx.onAppShow) {
+ wx.onAppShow(function () {for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {args[_key7] = arguments[_key7];}
+ vm.__call_hook('onShow', args);
+ });
+ }
+ if (isFn(appOptions.onHide) && wx.onAppHide) {
+ wx.onAppHide(function () {for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {args[_key8] = arguments[_key8];}
+ vm.__call_hook('onHide', args);
+ });
+ }
+ if (isFn(appOptions.onLaunch)) {
+ var args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();
+ vm.__call_hook('onLaunch', args);
+ }
+ return vm;
+}
+
+todos.forEach(function (todoApi) {
+ protocols[todoApi] = false;
+});
+
+canIUses.forEach(function (canIUseApi) {
+ var apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name :
+ canIUseApi;
+ if (!wx.canIUse(apiName)) {
+ protocols[canIUseApi] = false;
+ }
+});
+
+var uni = {};
+
+if (typeof Proxy !== 'undefined' && "mp-weixin" !== 'app-plus') {
+ uni = new Proxy({}, {
+ get: function get(target, name) {
+ if (hasOwn(target, name)) {
+ return target[name];
+ }
+ if (baseApi[name]) {
+ return baseApi[name];
+ }
+ if (api[name]) {
+ return promisify(name, api[name]);
+ }
+ {
+ if (extraApi[name]) {
+ return promisify(name, extraApi[name]);
+ }
+ if (todoApis[name]) {
+ return promisify(name, todoApis[name]);
+ }
+ }
+ if (eventApi[name]) {
+ return eventApi[name];
+ }
+ if (!hasOwn(wx, name) && !hasOwn(protocols, name)) {
+ return;
+ }
+ return promisify(name, wrapper(name, wx[name]));
+ },
+ set: function set(target, name, value) {
+ target[name] = value;
+ return true;
+ } });
+
+} else {
+ Object.keys(baseApi).forEach(function (name) {
+ uni[name] = baseApi[name];
+ });
+
+ {
+ Object.keys(todoApis).forEach(function (name) {
+ uni[name] = promisify(name, todoApis[name]);
+ });
+ Object.keys(extraApi).forEach(function (name) {
+ uni[name] = promisify(name, todoApis[name]);
+ });
+ }
+
+ Object.keys(eventApi).forEach(function (name) {
+ uni[name] = eventApi[name];
+ });
+
+ Object.keys(api).forEach(function (name) {
+ uni[name] = promisify(name, api[name]);
+ });
+
+ Object.keys(wx).forEach(function (name) {
+ if (hasOwn(wx, name) || hasOwn(protocols, name)) {
+ uni[name] = promisify(name, wrapper(name, wx[name]));
+ }
+ });
+}
+
+wx.createApp = createApp;
+wx.createPage = createPage;
+wx.createComponent = createComponent;
+wx.createSubpackageApp = createSubpackageApp;
+wx.createPlugin = createPlugin;
+
+var uni$1 = uni;var _default =
+
+uni$1;exports.default = _default;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 2)))
+
+/***/ }),
+
+/***/ 103:
+/*!************************************************!*\
+ !*** D:/项目/济南项目微信小程序/Jinan_app/static/447.png ***!
+ \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "data:image/png;base64,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"
+
+/***/ }),
+
+/***/ 104:
+/*!************************************************!*\
+ !*** D:/项目/济南项目微信小程序/Jinan_app/static/446.png ***!
+ \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "data:image/png;base64,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"
+
+/***/ }),
+
+/***/ 105:
+/*!*******************************************************!*\
+ !*** D:/项目/济南项目微信小程序/Jinan_app/static/zeren/4508.png ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAMAAAAKE/YAAAAAn1BMVEUAAABis0pYpzlis0piskpis0ljs0pYrkFis0tis0tisklis0lgskhgskhisklesERbsURis0pgskdis0pesEZis0lis0pgskhis0phsklis0pfsUdis0pis0piskpis0pis0pis0pis0pis0pis0phs0lhsklhskhjs0pis0pis0pis0pis0pis0pisklis0pis0pjs0phsklhs0ljs0skK+OrAAAANHRSTlMAgAb4piXICvPmZok0KkgTD7wgtxxxky/RU9YX4Zhr68xir6qyWT863J12e47AXsSh70ROX0/pQwAAIcpJREFUeNrMmAeT4jgQhWUJJxxwzgkb25jgAO///7az4fZuZmdhwoa7ryhDUSC9br1uWSa/FJHSdns8rcphUDtP6foy9bIwdmKDkv8hlDTbbpemZ26SpAQAw0KAGSFgibDiQt8g/x9E53AMXGlvsz5DnoBNACa8Qdql3EUk/z2idd2kSqIASEtMDEya5H0h7MqZnVDs5Vxi/8oGmO1a/6lwUT0WEuR6hLkoiuzMvbb8hr7yzYZXr65nFy9SH5ya/0q3xkVcgpk8kParrLFuljW0S5hlyt+4Wdjw4t1DbTZG+Bs2cj7544jqGUAKgMllZt2MorvpkGMhwivkVMkuzhKTs64ShnudCv2G/Em0k3mVMMMKpREJtXSuqxiQr+7OlbDAltc3WFIpR2OWSVtOkHAj+YPp9pWpkGQGREd/VnxRhBzIb3I7zAxJUJjZbleei0hmkCJpCYMlLNDX27qZdWuH4B7UVLbkD0D9HUsACfk4T2/oXY6/YdPZ9NyrH4vGJo5j3povG0N0nDDzSmFiiKphl+S2TsmM2skAsyWkFiW/Gb9imDlf3c2sOE3+doAUrNwLz7f1Ma12O9s8n+3Var6a9q6svEOoWpp+OF3k1DYTpuu1x1MSu4UUsD2TlN+c7fWEGWZqhDhcxHAj6GprdrUdmN2xbi1nI/6TOypuHL7tlZUZVIdLbF0zU4Ygy0IkcA4RLzZTZEgJx5PfhahZ6U2ySqg23jPMkpMqzqWVVJlGn9qqdcvEPKqidkoZZMbARp8S1bw3k+Pvadz0Ggy3Ha0htNnle4AhOjbadnUee+2D9bCuzLHmW4U77zFjhyJp7oZLf4ez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"
+
+/***/ }),
+
+/***/ 106:
+/*!*******************************************************!*\
+ !*** D:/项目/济南项目微信小程序/Jinan_app/static/zeren/4511.png ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAMAAAAKE/YAAAAAulBMVEUAAADnAADnFxLmHxfnHhflFBLmHhfmHhfmEwLmGhTlGA7mHhbmGxPmHhbmHRbmGhLlGRPmHhbmHhfmHhfmGxTnHhfmHhfmHRblHBXmHRbmHRbmHhfmHRbmHRbmHBbnHhfmHRXmHhfnHhbmHBTmHhfmHRXmHhfmHhfmHBXmGxbmHRfmHRbmHhfmHRbmHRbmHRbmHRbmHBXmHRfmHRbmHhfmHhfmHhfmHhbmHRbmHhfmHRXmHhfmHhfmHhdrZsU4AAAAPXRSTlMABBb6fwyw9ggxEZUpu2gbH5DO1iTy34MtbnO2pE5Y51O/qzTKPOvEQTici7JjXHegSodF48fumXzRYNuomxwsYQAAISNJREFUeNrMmOeW4kgMhVUuHMAZZwNOOIBJBoyJev/X2rZ3eneYHjpNz+x+h+MfHE5xJV1JUPClCIIwX20WY64o5qW4Ky/cUVciRmVYAf6HEJhdyuXxGDuNZdmIyGOL0T7SM7UP417UH8D/B0HdnM4eb4/o2sPcRtogYoMtFL/D4o69PQv/PYK2HYi7eoGIRw4biryVh3Z6WHIth9QOc4vHZ/in18jT/lOvsNNTymMdVFRuE2mMFH8yNxly55uBOZ94ujxs8Bl6XmT/VcJdx+jV+EQ+tK5jL9M6y7LSLPC83Td8JZpJnUBWy7zK+Ed35fThj8NOY0R6bEtec4oGQJ6M4h0PObZc8Y7wuPP2aqtdVZKa/2b2dP1nG9PV5YnVmTTdZSwQbetUCUXMx7RzLv/chd/Zub45J5YhIMydw7e3655L4A/R3zWpFVJE4+QKQGa7NEcMu/lQtqIL+5zKynLJFakR8mgZlkUtpDYdbpXLOiMguJtzFxS1uDn8AYi7pHWbwnCcERjsyxy/QZtYFv2Jy7AD5glTe3oMBqyqRorOHRqKRnJY2vlo22V3WoWIdGShqP3ubJN+wrcpKrb+ANi9WCPSzhHnsb+XzGx9OibcUpbjeDS+xXEsj5bcTdxEc03ab/RZKI7kmm63a1EiwHipdaY2b+1+c7aVpsupLAFoPYNix7kKNG3bGw3l6hTMTXXAEviGwDKqmV2csXxONjNGmyhyiGlYH4yDowG7H9FFiFbdM+F3wUrasZM8ByJVnWKL2vqczZzUvnmvNxWZ+5wtn6aspB95GvIU6bhPYCr/XakTC78DMhkWFqVUnhGSLXO7dYlxyqTVOK4uEnlfPyi3uArMbNGLr9haOhIgu3XhHwUCX4465vUa8bYXSJRkbfcNdxPtMoqd7EPjlpntiiRQZ+Mr18qOIyJsD4jY3Bzy5WmuEfUw9wQwuTAfIea61tft45x84rBZZSwkIcqx5ZARwcstRLqCL5XNlJ3xShUkIbl6eD5vpGAkv77StNcOVGJuom2Mrq0TF9SSR+R7py/cka6BFPG8JaxTpzZf1yvNO4hTAV6ltwaALQM/R8iqYsVcOtnNbkD2Z8SzrEy/yhoej2jbIguuw48R8xOjXHUN3iLi1/2YI/AQ83heM36I7frPCCs2RpFPlS+xyKDEJ9IpMMFa1uPw6F4K3XxPfXjKYwavIZVxZOoW0oZWKjAlYm1s4NeRhvhEogIzHE17Ijfdx6X5rj7YUUSDvBXZWM7cEUXkE4aoCaI+uTC/rLmtHj0RYVsOrXy51W7Fd0uXDUj7hJcQpdvwfI+8OUqGpRrZzqIcKizZ8Ilv9GbwS0RjRLQnIJSLK6WcuzrceY7IPgwUB14imFkw4pf67e3OEjZFoElpknOcC9vSUcJ6DZ+H+A2PmLpAgqKpG6U/+tEZIj2m1qOenA/38K67A+mWmOsD6sFwDebGGg+v7Oc1bygiygNYXxGbtRkYE/gBHxF1eADrvaY4IgDP24Ssja12oDzyO8IuQ0yVAD6HsLPQpkeB3ReIVDTLpfaii3hEHD9MiwqvsCgFyPTBc7JlXV3wqY03hogU0XKET2nu8dSod4Iq8xY2l3nh/3iMuRideTwbCYFPEOC4svx/y9KTpWBnIxYaceghasRPqCZ6O4c2RDUQmzoLzjN4CRFie2+uPiXaRcR68L1fjL10RcQDEJ+36HFGPqw5orHN+8RM2mPcXvyg2/rciwoxjCZtI+WJyXYqaQPy05Wl2IhoqHdhpJ5ZIFomgNdYjn76qGq/sK7UJ+4IETm1Og7ggWjz/kJvkfjK6RRcZpMoehLuLMSKuzmBS37Q3IuvFjZ2wtzto7HO3BBvBMiqjcmHD8HswmG8IWzBI620eEceOv8fwZLPHd1ozhC4h7DMzC/TxDPJvbN6ud/373uVPXJMify+zRrF8LyCDzCIOT7YEPfaekuS/Tc/P1uMqsuzg7RZFsx839cuqzkrqSy0uMoice5uw7Sx+tKVu0QradqmotfOkA/sRsGLo6onmDZy8cIsLm/Yf77gFp0cVmCE9cWRb0Y7CdOzlTc7PjRi/dIXutB0vaf9+y0/VeTJjEO33SRAxNx9d565az8QBdWwD7Qyz+tXB66wLsqZ0Npjs7Abyw75Jr6ceqfVJbpETsmdLdqOobBUWnuwM8dXhWeDwM/wDsyR+3u9HxANBt7HwgrjmDAc5nUlFWsAWJoA7BZewngjR22T3ZNbZcOjl70IUNv71TBHtNKeRABM5xi8qsSXtaPZqS4Q8SbAeyAycieXjCkip8mdN6qh5I1fVor1Rx4DoHkcRXrWJ+bjfjWD4xCxOa1UAFVZvHqr5N0YF1qk63tHiCSIy3IPTjuf1cKHllV8puKLsRAMFRag7/DtVaL0ZkaEvpNTq5JaA3rHPjyi7UYCmgQC7FNEuoc3YYZsjD0IKOJVqpzukOnyYNSrF2tFZIBknBw2yZ689099EvLnsk9A9RXp8cdKXbVD6RSAh4hX9c1jS9yMOOIuEfO502XXHKe0oKkxu2tWJ5kCtDd7XE+CD6DtcrS9Nujqwj4sys2b5yIZTmHczqG3UjKhyCWq0C6V9VoedCeoblTEiifDv0wPigCMmKN1YuCDqDveKlYCsJfbQzXMYR807vjAMgaPNHjjwBqxykBHRD07/1sX5czezfGRBCTw+HTBwCdQRcNKpgT6yeWRbMmQFiNG1mHbIDbaq+YY13oZtOnGVCq+84O6v/uJsGPBVDBc9uGTzGXjIA5goOsDuOc5ikhWD9uBEcEOEV/98bsPsSlY1UbMzbH3yJXOjEAU0zAi8GmEdd7dvq4PGtyx3naOBHB0bcmmtSYM8VWDsJxC+S0pEenqkjyYYe6GAARVqqvwS5gjansCZPIUvmfWzNjLUAVg5e06ELEiGY9oDOARa9HBimwpYjI1Hmja+wPQNl6yJfCLCL6FiQqSvL2LJbSGePr7Ms7czBs6ISIi78ADBn/xZqbriTJBFK4G2WRRREEWxRU17rvGnPu/rS8Q4jh2Z2Z+JN/55aM2vHRXn6ouvJZ8qlXz4LDsPQnVm+tkLa7f8zZtnJ68Jkn26tH+UyD9uLrzVg/mOFRrKbKk/lW1tkvSsEiFy9AkoV4jRtP+iy3Rt6g2wWFMVbV7j72iPSuXzZVBt/d6gEsOAJOJd/St7ydFWrGto/jBliYRm7tzhb5J0gCH7Tt1OddsH7lH2V/0Ox+PMJFMFyeDTQBtKpzoAey6xd6AlrF4FWeeF51IT0JG3yb2gtY79UNcTw+BXis31Nq1LjcM2FQGhP1Xq4XWhWYyYPb6TJwTFOoFkzWjbxTbydo7df/uIUpg0f3zdXhZQx4zVxYXTucY8jRfiLQ9aZNAxoXRVP1O5rInlMe1ZdfvYfpogHYz6uPIZlr/aAsiWj7AZj0ZiBxXaOJ2m4bp9VIyf2uE+E2a9pWns3Kht1601NBl8cAW9LoHmizP9EleCQp3oX5RSFJv5+9g5neTJ9Gr0B/adnWVDEb6UAZi9vxjC7CLomMZ7Uig7pZRsosV+gFJE6gKM0W7n226bce5dSkGWs+ljgtgT5GMW1N8luwppExGEv2I6qm8pqrdFL6JkC5m3y4M5PyUDA/ASKkNZKwvgShZuk1iiVenH9JY06Y0s3XilTgrI5NnyhFIpacWJhBSBciskShDR6/EHL9DP6a17NdovRZN9bHuXLQBrWxgSY8aAVmtrgHu65x4DRNdd7INox+TbiNhysIiXpttZd2S61KKhv0bFGRs6AJoVl8wji3a1Et9iX5Q1knu0Fg0L2O1tjgioDOAxzL20gJmSiPDYLwQDFvOqTa5bulH5cCrspe9aBEs0/E9ZQjAfMwsMa6keBk6m57Aka5VCpEw+lHpfQRUPyqCxwmmfVvukK3B//VzTQUuFAGedRMMWq9orGUW/bBmrZZFF4c41TzpiuOGpv5jAcLeoLXZAHDDncBEY4XFCOjH9VLsRYF5vXUDf3SVmrlRPDgaRvo4gzwVbcOuQWPtUKUfV7PVMnJz5bRXZ61Go6NPgKtyj44DKjQG/HbMeOuIqxQjpP9Bc2yoJqqbR/Xbbe7SWoPc/jS8FNqYbTTNDdeCUAtpKPtV+h9Uy7Q6zfeCp1kFcm+tD0/A+l5qn3x9CmCsGvxEHyWKP/7KJIn9sYL4hqk+k2ULrDpp314kS/dl9D8Li9Db0A5Iq33eO6YmWVpW8EiA9EejTRQSin01wiyua5jOvdbUJLLbvOnaSpwHRgJoSjlD/VudTVrYbE3idB5SgIT+Dr3VkDzfCx869EjFgyr0IRXFynag5uMrlUqQ4q2yeCFOydDUQoWWAMro0YO4Xs9ueDV7/DMudhBK5ZmRGWJorP8B2sSnUoVfk/U2zQKqacD83g6mvQbNEpSenUt3hEwtFAOx+qkLxxyfoXWeoBtExDLUSb2TkvoVdP99rk/wofHnKsOuhy8e0RXoU6kqrTXZMzzi5BrkIqK/hAcLgVhnJlBhHPQMMQmgDTyqQWbxtYsUXsDn+JvSbaUGXe7tJ7I61Gs0Bt0zT/OO4sszqVAbaEulFHqQ8gZs9DzhA7b0DH1G99+hhwBswRstdRrKhxfWvaI1LLqg4dJgJrB2u7xJmzSDSJVHg/GBiLFipTNkS/YbNMtOSk6adEqNhOFRQrMboA74MI0urydtoBsa0MtjXJavkrI7y9sJ/99K3tS2Kx+aA/NKqSndyc5AuqexV8Rz8wj0jUfoKc5Ego0ohqYzoDoO79RvQ7OdF5yQV7mbNExTMY7RyRgRp75EI3lPX8e0EmXAQiIKAOfDigAkzV/QCYyCr18p5T1An/Mvkif3UI2ED+qrXtxuVPiWbvcXITmQbUvlz7MTKdBaLjfThSQiJfSBtFfmlhJmOMqxhyW0cvIZ0VfuUeoJmgmmz65RLvOGhk56L/TGdNk07L3Jp8O5gS9lEEWAFnzuySXKsoo5KeCU0GQi+hq6a7wrfAwP5QqV3iw+vczKRC97ErHdpFal2B+ZTsh7+koxkRhi5bDu40uMCFdWBs1lfg8PxddqQmhxTJOKBa15Swi6Rr2YGTmtUTsy4w51ZaznWz6HtynBiv5Vjk6C5LKCK45pMfQcE9ryTv26XkY60R6nwYw6h97CUGygl1i8OypsJA87f3S8Cqeg/ZQRT/pX7tFX3zX6DbqCG9UGgsJtGLaJDC3NptSLd3vJ6ssYqjXOGt50ydeUP0NDIOsRmhKMP2Z6gkHpl8KN6JTQqc74w4ilWv5Oomo88hyqyDjT2FdR409ntRfWbPnUQeNpAR6hzSdlwJJ+gw7gfAzplC2AmS4IjwSfOtXYgGdRq7i5xPaDnUIukLLmLjtV+Y6o5dIQdgld+vQTNKdKyfwAXUHlY4iiHVge+lrMOOiHAJLbZNb5clPJQp2Yl027lAAe9c5zT7K5JRlWqIPN36F55qfw6JZDBtiSsgFMnYceof15hRnNLS5lLKq3Tu5XUepQDIyIuQdP6vN1vUNLVP4FWmIccwndWbkarHLIFpOhh6zwI/OpYDpB+rxEhy4zbn/F0vEUEu1ut5AWQIWWwMjid+xqRRGiO7QFKGLouu9NOeYSGoD5OYT5KJK+ALoK7f7cK4r2fD+xdrxZRJHv9WkCzGkHTAQJ3+nRBcs7dIAjiaG7GfCiPDMX0FIlHP4a8gq8Pm6anJ8VoTDG5A7t0JI/Q8X1+GYvKcBim0OrOfTia+hpY1AeTlbDdX6Hi9p9Do8EOKg58xP0k+GwEd7YryVPMSWpUXTc1jj/DXoAuJRAa9JEg0oXWQgdTclEycciDWfdA7zAIoFWGYCQ/gJNbe2hwRagwXJKTyFaoPtXaBlvdD5E+Z+h0n+8nOl2okoUhXeBCCKICiLggPM8j3HY7/9ad4mtWdHytp3ule+HKzFRP8sjVcU5h+PHTiY97yLL5OFK6JMrASdqkuyEJiTbfPKU+T9pbTAuI5dschK6ZBuA6HOUfMnfGOkqsv2tgo8kPErqi/BIcSqscELy1nXhlTekvrAk1fikfnwhXWSxT9JOpNwuAOR7LCP5QWd3ThtXVi+lF2QBZ71zRLakt1Amm69i+rQj2dsHuCOWFZIrPLHukRmpdMQL/XI7mVvICLB83rLZ5ZEXJ9GxZMIL6epFeqFumliR28tNJzjjkWMdkUo2x0+9cFaVbTzj+Tn5SC/ZG9VuMRVsL0Fsng+3OwS01UkAMHRyF+v1F4e8i3S4La4SX8zJ4qvJpWBAhgIZ2tffUrn7Uwl8IpTnf1aut4qG6qvJpUimkG2pI4zJE7rz0kkyjQ9TaHCEH6bJtnwa91U9gq2ydZGOxXBL3bRlC6YhK/hhTvqLBdOqp8/gkiM4PfbMgauuNMnSdC+sg4ufxdBjR5wlS1Nlu5sMMSTHqPf0sxOQHUeyCagaykY38KNYqqsJ+/nultXUGeRdMsTStg+BeSCXZw+PTDRRVDP4UZZqBUoLj6yz+XaVZkYn6zBztf0SF//CGo+MLJw5w48ScSzb2E7nlpUuYk2yC7EgZ+iQ2TCHR8IZ5izgR6lyJj+FkMrmlpiSah6Y+ywjS1aWz3brMdalBd5GCPwtxiUeWwEeWQwXxf0CY3KjQNQC2ohIP3gOJNOG0dXwNpbe/Fvt/GknRFHgETvvcnFEmixqQDUqH7QBuWv38UTTxDzbxrvM2MRf0ijuEchOQOZ7pXWgFckJgFQp8h1nw561VZ4jqYYxy3hJlneuieLCQ85FTg0vyap1SE71Ds/ejmlH6V2TLg2Wdl04PsNsTZaQ67Iv3pWOuf5LaVHcODjn8Uj4MVO5MQOSMwCZEvUQmR6rs6yk5+WSvnBeR2DmSj2RDqhrXx6tfDLjQblj4BUZjoQpSV+0BiPSFkde0xemTy4QlvxipigZygym2Sl+RyaR/mCcvbHEV2os4g0KDDF4jkdxUjrkGNlboqhCulie6iVZcVtjDnM6eVPa5Sepb0kbsT5EoYtHgma+RDbgUk/fNmV0vJ3O+tPwAE5aiNUmeEt6SKYSYlZSg29JD5p9w5BULB5TdTJ2FPI0xoU1yZzokKOGZPIbZVDm8i3p6q/NqdA5AL4lnY2jy4wmyQPsyYNo3Leqms7rutpXZAn9AgLdzb8h7dwS1x7p4BdaJvMH0s5WV5DOSCY5zddZQIG8LTptcmOsyVMweY4D0TFRKEWQo6Su7Ensb43vDcYPwf6u9IojWE1IEnKeq/eHIqirfVwJSb1r7Kh/RCGeCOcY6K75aoTvtMkcO9eDd/V70spJ9zCuSYtU9NLOyHQqmzmueCpZxoL0hxUhqZs2ke6EL6XTV2yXNjZJXLjMyaR36Rse5OTKVTgTaTnQRFUXOPq5unZfWJFbY80XhVcfUwzUWHsZy79I6R72jK4hLZP+JAMp5vnYRiSZFAaTIM2zIfqMm8Z99Ek9MDfkOCrLStwMw96VfyeNABiwA3ywD5l0nLqhQMrKHQltIvnjYjZXGSteya9Gn3GuknOMSDdwDTyRqmOwib3X0ndEzLbwGeI7Me2kVwHmOUmou06RXIiQjewaNzSXPGCpkstqTVa2qaGgVsXvpbFitUHd/I60OG9XcIqSMJyWu75bqqHDbFH7Wqfevqi3Bi0h+4LA6ZSWb0jnSZ8FfEd6xomJfU1aIGuOJrZhdVx1/3DkWqD8shS5EqCm+srvpZN6Lu870qYbrzGUfZztiUh16jmkCkUOH4q+fTOpNs2VIauLE8ZIzf6PtDO/n3Ou4hvSxmICGOkAz+wbVpG6p2z48BQzkiFGKv2gYz6fZBSFGbxKf/lC2pzaZBJtxpbsfWekj6cpEH3gGa+Tn4dcYUpyKmlkyKg8zcupu2pk3PW3eXTV2JJIG7WWnlxGCYBRoe7z8OdfxLbrD9C2NdlAh2FqcW3BiR1Jy4io0D0F99gVnSnEcIYL3YqBbKlv4itrskfyECWPMSvkzNqxYv6htBP7Q5i2JRvog1I8j2zRVcmRpDmngoZPHsvlm3R/s68uNSTMP4RZ1h+62sWB5G6UQUL7RE6TLNghiRDtug/LJIR0M5+YD1fm4EQT4xwkZGd1xicPE3L7+KZEmlTbhk3Vv7VBaXWfqr7GFaO6hpZuPrT1tVjMaUhQsqReBxLrXU4ko/zWzlZUK5GCurTDymqaB6p9ZFRK9gZdXvugWuo8HCcBvSFZ2lj3sC5aGG55/Boe945mb0e6FhKGPrl6W1qM1QEw3JqQsKhHJGeYUNp/s2rFW0/0ddUNks9BG4Ydkp+dT23bQa20qUPOaDc3Pi/jsjXwJqJcnTnwKh4kdJueTxbFUPctSPB6WQMIDvY81/i1Qi0zOlYX95dfpjUxK/mhgAxF+aLyvrMaKzDtLiQY28GYVAei5WcgQ7TUVCojzq7eDyrX4Yya4svr51oCU1+tCfwzRIF6DZrdgIxwZPXIiug2lZdNX+TW8GonqxxsnWTKeXz7UVbD8VAqaPhHmFX2ajAXU1xoOPiC18+nydIQU/P1MotkDvVKe3uMCslTCjwQZoWoldS0iX+CU2E8gLY4IiGX1iCWGm4spvWezj1g4CWevmPPQdR3c1ZzAClRy8AwpmvhHzDcLg4WTHuKKw2Op+4CN+oVEeSbsWkI/A/hf83dCY+iSBQA4FeUCHLfl4ogKsrlgQce7///rbWxt7O7GY/u6ZnZLzExppQneWiqinpFEUVIHKrr0+OdLFK6KlgpzioCP4lfm1RXwfrIZ1Ih4lmDd5ZpAQiHIdHLhx9zRJx5RMSUK/0BDz+07nsgbGZ0wMBP0br745qFRX8KLV4K7X9OubNFNIxu19oFHokoosySob6fWZd73y+Z1O3tHc6awJcRz7SNGki4kz5eOcQc4iiBm+VBHc08AN5wLHiErCh2fSC9uXyRdgn8mDpuePD6SC/Wl2P2j3YugJBnwr8Ob2eGocKbOtVixBAg3/amHjwiTArZEK4NJ3I4v5fWwC+7FvDKCGcuA1/A6LmqTAn0ZIX8+5w1wEreLaF7LiI3hfV2vkg1eGjNJI4hsDukg6q8v+B6mlYE1BWHW5+FTxIaG7kIgA9iD/6FRALcCOk64pC7CMyknnMhPEYCRfNz0hvZ+Wyh5+TukfWVBzCVKTpLDT5B6oyQG/cAFmP3fkmjrGnrfCzgEELxfPkmowIfVhDaNjrSeAn3kGmxEYCvZcTZakrgJWQ93iPXvTZXxYsHd+mZZba9q+DEhmcVXsDqdg2uOaaptSvhLr6clARIUnBbem6s5xFLrkORDjwANjAiAnctZSFGxBzmyvxMa3hFaI9WEskiGXMrDeE+ptOtGADJPVKObpa1Ru4GDEl+oZQz3nJJVYqAhfsUmWkLXfFaZ2jjEl5SOeI8AqbryE5kxTU8oC77S7Ut33d2KDWzTblg4D8EthRFT7FXhpuwAJpb+MzDw8eWSBF3KquHe3rh4TXzVVBbhMjNjllaxxoe4U9GlhAAwpzksznrmPZoMj50gtPVsnPoKsvO1o7Lculbb63mlzR8HEY1YYRdLBsWGSgjNBl4Va+Y2DqBzYyjbpshj5B5VjTtsgZ27lvDriwfkMO2FrZN5SlkaTDX3gJlk05fT+AxJWYiRXR1jzSVgzMPXqctHdohiYNID15awhNMpBdiqL3v39KbVtHSvVqWIQPAwxsrXHXzuQBPLGVVOA6IoIGiOGiv4VP0PlUgMfo2ZtauIfAMmyyLyaFMWPKftoQICyWbFIHHwzO8LjMuqyYAoCgGciV8DnMYmyciOXvEsTZ+rYgRv1D0fnelu0EZrq+iMujoq6IQy4SHFwiHFT9dtNlYl33EDnxWuUnf5swdREylvK/Ci3hGSuqo9K9O0TyxGB5eZKUNC3xbaOe06CO6BD6LJKPRSbkVjzwvSnMBv1htDnshtErf1fFL5XFIXHUHLtFSRJyF80lJ4Bfig7SXDG5LvZW1u5xlPHyFynaks8gzF6RIc288UOElLAufZnUPTGi0Q6+kqd3z9sDD15DTwMQ+y2/waqcp5hxekeTwWeE5JKAqtAHgx25/RF0CX9Y7XXDiQeXHiLNqEevqS0VRKrLIF/Aya9WXPGvDwnwIVj+fINch8DMEXz+vgQ3EAulKCtKKvFCgyJbtDF7FKztFO9i3QcP5Md+grcDPIgM7IDyoW6RxIvVl6Vn7DYf4eoGbZLeyqpF9CE8A4NtUprM1/DzVGWkAUt8YyNsOE01y9eEfTLO1EY0Xg7YOaS0VdltXGZgVnaSc6cF3qHeKByAIPXdjsZXkTzoPQiLScNCORMBzmpieJH1v6/BmbnJHeTtm4FtEliWpAbndlun5gRqYD7vhgT0dis+vJfVgKkxwHJgJabv4Ms3HzpKH78G2c2arW8ekt58Np4JrbKy7UW1ceIr0xN2SCVeBH2USAEkmOAutbg3fyTUOaduvazCTu5JvlfE4upMCAg9PCGEhh5bSH9ni4kTamI9OyCxV+FZGh2cIaASkwg669d7VhGlm6hJ8QXI46z0r3+Jgc5YFADIsVrndA5XA92LbD9SmUyBhI+rKOuUGtebH/cBj4ROEpIllRZsyDTcqIv82/cghbvs8/CJ8E7ELQpiO3UWkKAbTxC9kPdLgFcQKxXiseElTKEk3nmpA3rtY2+2QhV9FkiC0vbcc3FB8w503U2YtGsfDyXoS8CkzJ3ktCKexMub0S6Z97OhAmmMFv1TZjQK5ZkFzj9xt+9RtVllSmMtGVwyiRGMEFj6wAqMlUSAWhryJLGahByPTI5HRH7azfmG3977E6BcjASLdKQywdebQ2+Q4d3GjuerVymbQLfpXl+zqcn1SFMVgo9QSM1WyyRYx1hc8wFAAYJR0n2nwm5zeN/JMAIRpOaZtmuw7pnPu6/6wpwmMpkmLK0nTGEH11koushWHLZMVvVsdo6253Vrwu/QK5xbBMbD49jd3f7T75ch2LuMRReS2x106vop3k/eWsjpGtBH3sTvngVi+gXiBJiPw25DracIWlzYSANGEZpV09cXGofgjW3OGdCt3IosAL/mpjZx4qAAY+K2YaIItGgEfqQAEiFpl6Qh/YD+umkhiCIBwGjgz+va2jGfhD0hEZ8ftCwLQoWZWJgz7vvluFSz1d01Q1T3hNrJA6tzV8YY6Pvwh7LSSBICosdvzeSxype4xBD68D5NpSl6IMZN0sU1xaop/fl9pneIHs+OJURLH2apeDcQ4NZ3RnnvLGaPUNxyOKScH3h+P+IqtN/LodrLj3irD0fXBcfaZm3B4JesGyvLF79vbuFr/HwL+m5BUnfFkMqGIKLY7Pdl7m7ZBc6JzHK5XDZv8nzZJ/8Cz/GJY+Xkn3+12pb6TM/my6fhRogo8fKO/AIDQ+L8tq+pwAAAAAElFTkSuQmCC"
+
+/***/ }),
+
+/***/ 11:
+/*!**********************************************************************************************************!*\
+ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***!
+ \**********************************************************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; });
+/* globals __VUE_SSR_CONTEXT__ */
+
+// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
+// This module is a runtime utility for cleaner component module output and will
+// be included in the final webpack user bundle.
+
+function normalizeComponent (
+ scriptExports,
+ render,
+ staticRenderFns,
+ functionalTemplate,
+ injectStyles,
+ scopeId,
+ moduleIdentifier, /* server only */
+ shadowMode, /* vue-cli only */
+ components, // fixed by xxxxxx auto components
+ renderjs // fixed by xxxxxx renderjs
+) {
+ // Vue.extend constructor export interop
+ var options = typeof scriptExports === 'function'
+ ? scriptExports.options
+ : scriptExports
+
+ // fixed by xxxxxx auto components
+ if (components) {
+ if (!options.components) {
+ options.components = {}
+ }
+ var hasOwn = Object.prototype.hasOwnProperty
+ for (var name in components) {
+ if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {
+ options.components[name] = components[name]
+ }
+ }
+ }
+ // fixed by xxxxxx renderjs
+ if (renderjs) {
+ (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {
+ this[renderjs.__module] = this
+ });
+ (options.mixins || (options.mixins = [])).push(renderjs)
+ }
+
+ // render functions
+ if (render) {
+ options.render = render
+ options.staticRenderFns = staticRenderFns
+ options._compiled = true
+ }
+
+ // functional template
+ if (functionalTemplate) {
+ options.functional = true
+ }
+
+ // scopedId
+ if (scopeId) {
+ options._scopeId = 'data-v-' + scopeId
+ }
+
+ var hook
+ if (moduleIdentifier) { // server build
+ hook = function (context) {
+ // 2.3 injection
+ context =
+ context || // cached call
+ (this.$vnode && this.$vnode.ssrContext) || // stateful
+ (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
+ // 2.2 with runInNewContext: true
+ if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
+ context = __VUE_SSR_CONTEXT__
+ }
+ // inject component styles
+ if (injectStyles) {
+ injectStyles.call(this, context)
+ }
+ // register component module identifier for async chunk inferrence
+ if (context && context._registeredComponents) {
+ context._registeredComponents.add(moduleIdentifier)
+ }
+ }
+ // used by ssr in case component is cached and beforeCreate
+ // never gets called
+ options._ssrRegister = hook
+ } else if (injectStyles) {
+ hook = shadowMode
+ ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
+ : injectStyles
+ }
+
+ if (hook) {
+ if (options.functional) {
+ // for template-only hot-reload because in that case the render fn doesn't
+ // go through the normalizer
+ options._injectStyles = hook
+ // register for functioal component in vue file
+ var originalRender = options.render
+ options.render = function renderWithStyleInjection (h, context) {
+ hook.call(context)
+ return originalRender(h, context)
+ }
+ } else {
+ // inject component registration as beforeCreate hook
+ var existing = options.beforeCreate
+ options.beforeCreate = existing
+ ? [].concat(existing, hook)
+ : [hook]
+ }
+ }
+
+ return {
+ exports: scriptExports,
+ options: options
+ }
+}
+
+
+/***/ }),
+
+/***/ 12:
+/*!**********************************************!*\
+ !*** D:/项目/济南项目微信小程序/Jinan_app/libs/auth.js ***!
+ \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _store = _interopRequireDefault(__webpack_require__(/*! ../store.js */ 13));
+var _request = _interopRequireDefault(__webpack_require__(/*! ./request.js */ 15));
+var _alert = _interopRequireDefault(__webpack_require__(/*! ./alert.js */ 20));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
+
+var login = {
+ checkAuth: function checkAuth(callback) {
+ console.log(1);
+ if (this.getLocalUserInfo()) {
+ console.log(2);
+ callback(true);
+ } else {
+ console.log(3);
+ callback(false);
+ console.log('未获取到用户本地数据,去获取授权设置', 22222222);
+ this.askLogin();
+ }
+ },
+
+ getLocalUserInfo: function getLocalUserInfo() {
+ var user = uni.getStorageSync("token");
+ console.log('从本地存储中获取用户数据', user, 11111111);
+ if (!user) return false;
+ if (!user.token) return false;
+ _store.default.commit('saveToken', user);
+ return true;
+ },
+
+ noCase: function noCase() {
+ _alert.default.showError('案件不存在');
+ setTimeout(function () {
+ uni.switchTab({
+ url: '/pages/case/caseList/caseList' });
+
+ }, 1500);
+ },
+
+ askLogin: function askLogin() {
+ uni.showModal({
+ title: '尚未登录',
+ content: '前往授权登录页面吗?',
+ success: function success(res) {
+ console.log(res);
+ if (res.confirm) {
+ uni.navigateTo({
+ url: '/pages/login/login' });
+
+ }
+ } });
+
+ },
+
+ getUserProfile: function getUserProfile(data) {
+ var that = this;
+ console.log(data);
+ // return
+ wx.getUserProfile({
+ lang: 'zh_CN',
+ desc: '用于完善会员资料',
+ success: function success(res) {
+ that.login(data, res);
+ },
+ fail: function fail(e) {
+ console.error('获取用户身份信息失败了', e);
+ _alert.default.showError('获取失败');
+ } });
+
+ },
+
+ login: function login(data) {
+ var that = this;
+ uni.showLoading({
+ title: '登录中' });
+
+ wx.login({
+ success: function success(res) {
+ console.log(res, '----------- login获取的 -----------');
+ var code = res.code;
+ console.log(res.code);
+ _request.default.post('/api/Accounts/SignIn', {
+ wechatToken: code,
+ username: data.name,
+ password: data.password },
+ function (data, res) {
+ uni.hideLoading();
+ console.log(data, res, '----------后端传回来的----------');
+ if (res.status == 500) {
+ return _alert.default.showError("用户名或密码错误");
+ }
+ uni.setStorageSync("token", res);
+ _store.default.commit('saveToken', res);
+ console.log(_store.default.state.token);
+ _request.default.get("/api/Accounts/Profile", {}, function (data, res) {
+ console.log(res);
+ uni.setStorageSync("user", res);
+ uni.reLaunch({
+ url: "/pages/index/index" });
+
+
+ });
+
+ });
+ },
+ fail: function fail(err) {
+ console.error(err, 8877897);
+ } });
+
+ },
+
+ logout: function logout() {
+ _store.default.state.user = {
+ user: null,
+ path: '/pages/login/login' };
+
+ _store.default.commit('saveToken', null);
+ // uni.setStorageSync("token",null);
+ uni.clearStorage();
+ uni.reLaunch({
+ url: '/pages/login/login' });
+
+
+ console.log('退出登录。。。', this.user);
+ } };var _default =
+
+
+
+
+
+login;exports.default = _default;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
+
+/***/ }),
+
+/***/ 13:
+/*!******************************************!*\
+ !*** D:/项目/济南项目微信小程序/Jinan_app/store.js ***!
+ \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 3));
+var _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 14));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
+_vue.default.use(_vuex.default);
+
+var store = new _vuex.default.Store({
+ state: {
+ token: null,
+ path: '/pages/index/index',
+ people: {
+ id: null,
+ name: null,
+ tag: null },
+
+ taskType: '' },
+
+ mutations: {
+ savePath: function savePath(state, path) {
+ state.path = path;
+ },
+ saveToken: function saveToken(state, token) {
+ state.token = token;
+ },
+ savePeople: function savePeople(state, people) {
+ state.people = people;
+ },
+ saveTaskType: function saveTaskType(state, taskType) {
+ state.taskType = taskType;
+ } },
+
+ actions: {} });var _default =
+
+store;exports.default = _default;
+
+/***/ }),
+
+/***/ 132:
+/*!************************************************************************************!*\
+ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js ***!
+ \************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global, uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 16));var _uniI18n = __webpack_require__(/*! @dcloudio/uni-i18n */ 4);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};}function _toConsumableArray(arr) {return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();}function _nonIterableSpread() {throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _iterableToArray(iter) {if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);}function _arrayWithoutHoles(arr) {if (Array.isArray(arr)) return _arrayLikeToArray(arr);}function _createForOfIteratorHelper(o, allowArrayLike) {var it;if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {if (it) o = it;var i = 0;var F = function F() {};return { s: F, n: function n() {if (i >= o.length) return { done: true };return { done: false, value: o[i++] };}, e: function e(_e26) {throw _e26;}, f: F };}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var normalCompletion = true,didErr = false,err;return { s: function s() {it = o[Symbol.iterator]();}, n: function n() {var step = it.next();normalCompletion = step.done;return step;}, e: function e(_e27) {didErr = true;err = _e27;}, f: function f() {try {if (!normalCompletion && it.return != null) it.return();} finally {if (didErr) throw err;}} };}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === "string") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === "Object" && o.constructor) n = o.constructor.name;if (n === "Map" || n === "Set") return Array.from(o);if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}function _defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}function _createClass(Constructor, protoProps, staticProps) {if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass, superClass) {if (typeof superClass !== "function" && superClass !== null) {throw new TypeError("Super expression must either be null or a function");}subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });if (superClass) _setPrototypeOf(subClass, superClass);}function _createSuper(Derived) {var hasNativeReflectConstruct = _isNativeReflectConstruct();return function _createSuperInternal() {var Super = _getPrototypeOf(Derived),result;if (hasNativeReflectConstruct) {var NewTarget = _getPrototypeOf(this).constructor;result = Reflect.construct(Super, arguments, NewTarget);} else {result = Super.apply(this, arguments);}return _possibleConstructorReturn(this, result);};}function _possibleConstructorReturn(self, call) {if (call && (typeof call === "object" || typeof call === "function")) {return call;}return _assertThisInitialized(self);}function _assertThisInitialized(self) {if (self === void 0) {throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _wrapNativeSuper(Class) {var _cache = typeof Map === "function" ? new Map() : undefined;_wrapNativeSuper = function _wrapNativeSuper(Class) {if (Class === null || !_isNativeFunction(Class)) return Class;if (typeof Class !== "function") {throw new TypeError("Super expression must either be null or a function");}if (typeof _cache !== "undefined") {if (_cache.has(Class)) return _cache.get(Class);_cache.set(Class, Wrapper);}function Wrapper() {return _construct(Class, arguments, _getPrototypeOf(this).constructor);}Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });return _setPrototypeOf(Wrapper, Class);};return _wrapNativeSuper(Class);}function _construct(Parent, args, Class) {if (_isNativeReflectConstruct()) {_construct = Reflect.construct;} else {_construct = function _construct(Parent, args, Class) {var a = [null];a.push.apply(a, args);var Constructor = Function.bind.apply(Parent, a);var instance = new Constructor();if (Class) _setPrototypeOf(instance, Class.prototype);return instance;};}return _construct.apply(null, arguments);}function _isNativeReflectConstruct() {if (typeof Reflect === "undefined" || !Reflect.construct) return false;if (Reflect.construct.sham) return false;if (typeof Proxy === "function") return true;try {Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));return true;} catch (e) {return false;}}function _isNativeFunction(fn) {return Function.toString.call(fn).indexOf("[native code]") !== -1;}function _setPrototypeOf(o, p) {_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {o.__proto__ = p;return o;};return _setPrototypeOf(o, p);}function _getPrototypeOf(o) {_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {return o.__proto__ || Object.getPrototypeOf(o);};return _getPrototypeOf(o);}"undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self && self;function t(e) {return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;}function n(e, t, n) {return e(n = { path: t, exports: {}, require: function require(e, t) {return function () {throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs");}(null == t && n.path);} }, n.exports), n.exports;}var s = n(function (e, t) {var n;e.exports = (n = n || function (e, t) {var n = Object.create || function () {function e() {}return function (t) {var n;return e.prototype = t, n = new e(), e.prototype = null, n;};}(),s = {},r = s.lib = {},o = r.Base = { extend: function extend(e) {var t = n(this);return e && t.mixIn(e), t.hasOwnProperty("init") && this.init !== t.init || (t.init = function () {t.$super.init.apply(this, arguments);}), t.init.prototype = t, t.$super = this, t;}, create: function create() {var e = this.extend();return e.init.apply(e, arguments), e;}, init: function init() {}, mixIn: function mixIn(e) {for (var t in e) {e.hasOwnProperty(t) && (this[t] = e[t]);}e.hasOwnProperty("toString") && (this.toString = e.toString);}, clone: function clone() {return this.init.prototype.extend(this);} },i = r.WordArray = o.extend({ init: function init(e, n) {e = this.words = e || [], this.sigBytes = n != t ? n : 4 * e.length;}, toString: function toString(e) {return (e || c).stringify(this);}, concat: function concat(e) {var t = this.words,n = e.words,s = this.sigBytes,r = e.sigBytes;if (this.clamp(), s % 4) for (var o = 0; o < r; o++) {var i = n[o >>> 2] >>> 24 - o % 4 * 8 & 255;t[s + o >>> 2] |= i << 24 - (s + o) % 4 * 8;} else for (o = 0; o < r; o += 4) {t[s + o >>> 2] = n[o >>> 2];}return this.sigBytes += r, this;}, clamp: function clamp() {var t = this.words,n = this.sigBytes;t[n >>> 2] &= 4294967295 << 32 - n % 4 * 8, t.length = e.ceil(n / 4);}, clone: function clone() {var e = o.clone.call(this);return e.words = this.words.slice(0), e;}, random: function random(t) {for (var n, s = [], r = function r(t) {t = t;var n = 987654321,s = 4294967295;return function () {var r = ((n = 36969 * (65535 & n) + (n >> 16) & s) << 16) + (t = 18e3 * (65535 & t) + (t >> 16) & s) & s;return r /= 4294967296, (r += .5) * (e.random() > .5 ? 1 : -1);};}, o = 0; o < t; o += 4) {var a = r(4294967296 * (n || e.random()));n = 987654071 * a(), s.push(4294967296 * a() | 0);}return new i.init(s, t);} }),a = s.enc = {},c = a.Hex = { stringify: function stringify(e) {for (var t = e.words, n = e.sigBytes, s = [], r = 0; r < n; r++) {var o = t[r >>> 2] >>> 24 - r % 4 * 8 & 255;s.push((o >>> 4).toString(16)), s.push((15 & o).toString(16));}return s.join("");}, parse: function parse(e) {for (var t = e.length, n = [], s = 0; s < t; s += 2) {n[s >>> 3] |= parseInt(e.substr(s, 2), 16) << 24 - s % 8 * 4;}return new i.init(n, t / 2);} },u = a.Latin1 = { stringify: function stringify(e) {for (var t = e.words, n = e.sigBytes, s = [], r = 0; r < n; r++) {var o = t[r >>> 2] >>> 24 - r % 4 * 8 & 255;s.push(String.fromCharCode(o));}return s.join("");}, parse: function parse(e) {for (var t = e.length, n = [], s = 0; s < t; s++) {n[s >>> 2] |= (255 & e.charCodeAt(s)) << 24 - s % 4 * 8;}return new i.init(n, t);} },h = a.Utf8 = { stringify: function stringify(e) {try {return decodeURIComponent(escape(u.stringify(e)));} catch (e) {throw new Error("Malformed UTF-8 data");}}, parse: function parse(e) {return u.parse(unescape(encodeURIComponent(e)));} },l = r.BufferedBlockAlgorithm = o.extend({ reset: function reset() {this._data = new i.init(), this._nDataBytes = 0;}, _append: function _append(e) {"string" == typeof e && (e = h.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes;}, _process: function _process(t) {var n = this._data,s = n.words,r = n.sigBytes,o = this.blockSize,a = r / (4 * o),c = (a = t ? e.ceil(a) : e.max((0 | a) - this._minBufferSize, 0)) * o,u = e.min(4 * c, r);if (c) {for (var h = 0; h < c; h += o) {this._doProcessBlock(s, h);}var l = s.splice(0, c);n.sigBytes -= u;}return new i.init(l, u);}, clone: function clone() {var e = o.clone.call(this);return e._data = this._data.clone(), e;}, _minBufferSize: 0 });r.Hasher = l.extend({ cfg: o.extend(), init: function init(e) {this.cfg = this.cfg.extend(e), this.reset();}, reset: function reset() {l.reset.call(this), this._doReset();}, update: function update(e) {return this._append(e), this._process(), this;}, finalize: function finalize(e) {return e && this._append(e), this._doFinalize();}, blockSize: 16, _createHelper: function _createHelper(e) {return function (t, n) {return new e.init(n).finalize(t);};}, _createHmacHelper: function _createHmacHelper(e) {return function (t, n) {return new d.HMAC.init(e, n).finalize(t);};} });var d = s.algo = {};return s;}(Math), n);}),r = (n(function (e, t) {var n;e.exports = (n = s, function (e) {var t = n,s = t.lib,r = s.WordArray,o = s.Hasher,i = t.algo,a = [];!function () {for (var t = 0; t < 64; t++) {a[t] = 4294967296 * e.abs(e.sin(t + 1)) | 0;}}();var c = i.MD5 = o.extend({ _doReset: function _doReset() {this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878]);}, _doProcessBlock: function _doProcessBlock(e, t) {for (var n = 0; n < 16; n++) {var s = t + n,r = e[s];e[s] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8);}var o = this._hash.words,i = e[t + 0],c = e[t + 1],f = e[t + 2],p = e[t + 3],g = e[t + 4],m = e[t + 5],y = e[t + 6],_ = e[t + 7],w = e[t + 8],k = e[t + 9],S = e[t + 10],v = e[t + 11],T = e[t + 12],A = e[t + 13],P = e[t + 14],I = e[t + 15],b = o[0],O = o[1],E = o[2],C = o[3];b = u(b, O, E, C, i, 7, a[0]), C = u(C, b, O, E, c, 12, a[1]), E = u(E, C, b, O, f, 17, a[2]), O = u(O, E, C, b, p, 22, a[3]), b = u(b, O, E, C, g, 7, a[4]), C = u(C, b, O, E, m, 12, a[5]), E = u(E, C, b, O, y, 17, a[6]), O = u(O, E, C, b, _, 22, a[7]), b = u(b, O, E, C, w, 7, a[8]), C = u(C, b, O, E, k, 12, a[9]), E = u(E, C, b, O, S, 17, a[10]), O = u(O, E, C, b, v, 22, a[11]), b = u(b, O, E, C, T, 7, a[12]), C = u(C, b, O, E, A, 12, a[13]), E = u(E, C, b, O, P, 17, a[14]), b = h(b, O = u(O, E, C, b, I, 22, a[15]), E, C, c, 5, a[16]), C = h(C, b, O, E, y, 9, a[17]), E = h(E, C, b, O, v, 14, a[18]), O = h(O, E, C, b, i, 20, a[19]), b = h(b, O, E, C, m, 5, a[20]), C = h(C, b, O, E, S, 9, a[21]), E = h(E, C, b, O, I, 14, a[22]), O = h(O, E, C, b, g, 20, a[23]), b = h(b, O, E, C, k, 5, a[24]), C = h(C, b, O, E, P, 9, a[25]), E = h(E, C, b, O, p, 14, a[26]), O = h(O, E, C, b, w, 20, a[27]), b = h(b, O, E, C, A, 5, a[28]), C = h(C, b, O, E, f, 9, a[29]), E = h(E, C, b, O, _, 14, a[30]), b = l(b, O = h(O, E, C, b, T, 20, a[31]), E, C, m, 4, a[32]), C = l(C, b, O, E, w, 11, a[33]), E = l(E, C, b, O, v, 16, a[34]), O = l(O, E, C, b, P, 23, a[35]), b = l(b, O, E, C, c, 4, a[36]), C = l(C, b, O, E, g, 11, a[37]), E = l(E, C, b, O, _, 16, a[38]), O = l(O, E, C, b, S, 23, a[39]), b = l(b, O, E, C, A, 4, a[40]), C = l(C, b, O, E, i, 11, a[41]), E = l(E, C, b, O, p, 16, a[42]), O = l(O, E, C, b, y, 23, a[43]), b = l(b, O, E, C, k, 4, a[44]), C = l(C, b, O, E, T, 11, a[45]), E = l(E, C, b, O, I, 16, a[46]), b = d(b, O = l(O, E, C, b, f, 23, a[47]), E, C, i, 6, a[48]), C = d(C, b, O, E, _, 10, a[49]), E = d(E, C, b, O, P, 15, a[50]), O = d(O, E, C, b, m, 21, a[51]), b = d(b, O, E, C, T, 6, a[52]), C = d(C, b, O, E, p, 10, a[53]), E = d(E, C, b, O, S, 15, a[54]), O = d(O, E, C, b, c, 21, a[55]), b = d(b, O, E, C, w, 6, a[56]), C = d(C, b, O, E, I, 10, a[57]), E = d(E, C, b, O, y, 15, a[58]), O = d(O, E, C, b, A, 21, a[59]), b = d(b, O, E, C, g, 6, a[60]), C = d(C, b, O, E, v, 10, a[61]), E = d(E, C, b, O, f, 15, a[62]), O = d(O, E, C, b, k, 21, a[63]), o[0] = o[0] + b | 0, o[1] = o[1] + O | 0, o[2] = o[2] + E | 0, o[3] = o[3] + C | 0;}, _doFinalize: function _doFinalize() {var t = this._data,n = t.words,s = 8 * this._nDataBytes,r = 8 * t.sigBytes;n[r >>> 5] |= 128 << 24 - r % 32;var o = e.floor(s / 4294967296),i = s;n[15 + (r + 64 >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), n[14 + (r + 64 >>> 9 << 4)] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8), t.sigBytes = 4 * (n.length + 1), this._process();for (var a = this._hash, c = a.words, u = 0; u < 4; u++) {var h = c[u];c[u] = 16711935 & (h << 8 | h >>> 24) | 4278255360 & (h << 24 | h >>> 8);}return a;}, clone: function clone() {var e = o.clone.call(this);return e._hash = this._hash.clone(), e;} });function u(e, t, n, s, r, o, i) {var a = e + (t & n | ~t & s) + r + i;return (a << o | a >>> 32 - o) + t;}function h(e, t, n, s, r, o, i) {var a = e + (t & s | n & ~s) + r + i;return (a << o | a >>> 32 - o) + t;}function l(e, t, n, s, r, o, i) {var a = e + (t ^ n ^ s) + r + i;return (a << o | a >>> 32 - o) + t;}function d(e, t, n, s, r, o, i) {var a = e + (n ^ (t | ~s)) + r + i;return (a << o | a >>> 32 - o) + t;}t.MD5 = o._createHelper(c), t.HmacMD5 = o._createHmacHelper(c);}(Math), n.MD5);}), n(function (e, t) {var n, r, o;e.exports = (r = (n = s).lib.Base, o = n.enc.Utf8, void (n.algo.HMAC = r.extend({ init: function init(e, t) {e = this._hasher = new e.init(), "string" == typeof t && (t = o.parse(t));var n = e.blockSize,s = 4 * n;t.sigBytes > s && (t = e.finalize(t)), t.clamp();for (var r = this._oKey = t.clone(), i = this._iKey = t.clone(), a = r.words, c = i.words, u = 0; u < n; u++) {a[u] ^= 1549556828, c[u] ^= 909522486;}r.sigBytes = i.sigBytes = s, this.reset();}, reset: function reset() {var e = this._hasher;e.reset(), e.update(this._iKey);}, update: function update(e) {return this._hasher.update(e), this;}, finalize: function finalize(e) {var t = this._hasher,n = t.finalize(e);return t.reset(), t.finalize(this._oKey.clone().concat(n));} })));}), n(function (e, t) {e.exports = s.HmacMD5;}));var o = "FUNCTION",i = "OBJECT",a = "CLIENT_DB";function c(e) {return Object.prototype.toString.call(e).slice(8, -1).toLowerCase();}function u(e) {return "object" === c(e);}function h(e) {return e && "string" == typeof e ? JSON.parse(e) : e;}var l = "development" === "development",d = "mp-weixin",f = h(undefined),p = h([]),g = true;var m = "";try {{var _e2 = __webpack_require__(/*! uni-stat-config */ 133).default || __webpack_require__(/*! uni-stat-config */ 133);m = _e2.appid;}} catch (e) {}var y = {};function _(e) {var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};var n, s;return n = y, s = e, Object.prototype.hasOwnProperty.call(n, s) || (y[e] = t), y[e];}"app-plus" === d && (y = uni._globalUniCloudObj ? uni._globalUniCloudObj : uni._globalUniCloudObj = {});var w = ["invoke", "success", "fail", "complete"],k = _("_globalUniCloudInterceptor");function S(e, t) {k[e] || (k[e] = {}), u(t) && Object.keys(t).forEach(function (n) {w.indexOf(n) > -1 && function (e, t, n) {var s = k[e][t];s || (s = k[e][t] = []), -1 === s.indexOf(n) && "function" == typeof n && s.push(n);}(e, n, t[n]);});}function v(e, t) {k[e] || (k[e] = {}), u(t) ? Object.keys(t).forEach(function (n) {w.indexOf(n) > -1 && function (e, t, n) {var s = k[e][t];if (!s) return;var r = s.indexOf(n);r > -1 && s.splice(r, 1);}(e, n, t[n]);}) : delete k[e];}function T(e, t) {return e && 0 !== e.length ? e.reduce(function (e, n) {return e.then(function () {return n(t);});}, Promise.resolve()) : Promise.resolve();}function A(e, t) {return k[e] && k[e][t] || [];}function P(e, t) {return t ? function (n) {var _this = this;var s,r = !1;if ("callFunction" === t) {var _e3 = n && n.type || o;r = _e3 !== o;}s = this.isReady ? Promise.resolve() : this.initUniCloud, n = n || {};var i = s.then(function () {return r ? Promise.resolve() : T(A(t, "invoke"), n);}).then(function () {return e.call(_this, n);}).then(function (e) {return r ? Promise.resolve(e) : T(A(t, "success"), e).then(function () {return T(A(t, "complete"), e);}).then(function () {return Promise.resolve(e);});}, function (e) {return r ? Promise.reject(e) : T(A(t, "fail"), e).then(function () {return T(A(t, "complete"), e);}).then(function () {return Promise.reject(e);});});if (!(n.success || n.fail || n.complete)) return i;i.then(function (e) {n.success && n.success(e), n.complete && n.complete(e);}, function (e) {n.fail && n.fail(e), n.complete && n.complete(e);});} : function (t) {if (!((t = t || {}).success || t.fail || t.complete)) return e.call(this, t);e.call(this, t).then(function (e) {t.success && t.success(e), t.complete && t.complete(e);}, function (e) {t.fail && t.fail(e), t.complete && t.complete(e);});};}var I = /*#__PURE__*/function (_Error) {_inherits(I, _Error);var _super = _createSuper(I);function I(e) {var _this2;_classCallCheck(this, I);_this2 = _super.call(this, e.message), _this2.errMsg = e.message || "", _this2.errCode = _this2.code = e.code, _this2.requestId = e.requestId, Object.defineProperties(_assertThisInitialized(_this2), { message: { get: function get() {return this.errMsg;}, set: function set(e) {this.errMsg = e;} } });return _this2;}return I;}( /*#__PURE__*/_wrapNativeSuper(Error));var b;function O() {var e = uni.getLocale && uni.getLocale() || "en";if (b) return _objectSpread(_objectSpread({}, b), {}, { LOCALE: e });var _uni$getSystemInfoSyn = uni.getSystemInfoSync(),t = _uni$getSystemInfoSyn.deviceId,n = _uni$getSystemInfoSyn.platform;return b = { PLATFORM: d, OS: n, APPID: m, DEVICEID: t, CLIENT_SDK_VERSION: "1.0.25" }, _objectSpread(_objectSpread({}, b), {}, { LOCALE: e });}var E = { sign: function sign(e, t) {var n = "";return Object.keys(e).sort().forEach(function (t) {e[t] && (n = n + "&" + t + "=" + e[t]);}), n = n.slice(1), r(n, t).toString();}, wrappedRequest: function wrappedRequest(e, t) {return new Promise(function (n, s) {t(Object.assign(e, { complete: function complete(e) {e || (e = {}), l && "h5" === d && e.errMsg && 0 === e.errMsg.indexOf("request:fail") && console.warn("发布H5,需要在uniCloud后台操作,绑定安全域名,否则会因为跨域问题而无法访问。教程参考:https://uniapp.dcloud.io/uniCloud/quickstart?id=useinh5");var t = e.data && e.data.header && e.data.header["x-serverless-request-id"] || e.header && e.header["request-id"];if (!e.statusCode || e.statusCode >= 400) return s(new I({ code: "SYS_ERR", message: e.errMsg || "request:fail", requestId: t }));var r = e.data;if (r.error) return s(new I({ code: r.error.code, message: r.error.message, requestId: t }));r.result = r.data, r.requestId = t, delete r.data, n(r);} }));});} };var C = { request: function request(e) {return uni.request(e);}, uploadFile: function uploadFile(e) {return uni.uploadFile(e);}, setStorageSync: function setStorageSync(e, t) {return uni.setStorageSync(e, t);}, getStorageSync: function getStorageSync(e) {return uni.getStorageSync(e);}, removeStorageSync: function removeStorageSync(e) {return uni.removeStorageSync(e);}, clearStorageSync: function clearStorageSync() {return uni.clearStorageSync();} },U = { "uniCloud.init.paramRequired": "{param} required", "uniCloud.uploadFile.fileError": "filePath should be instance of File" };var _e4 = (0, _uniI18n.initVueI18n)({ "zh-Hans": { "uniCloud.init.paramRequired": "缺少参数:{param}", "uniCloud.uploadFile.fileError": "filePath应为File对象" }, "zh-Hant": { "uniCloud.init.paramRequired": "缺少参数:{param}", "uniCloud.uploadFile.fileError": "filePath应为File对象" }, en: U, fr: { "uniCloud.init.paramRequired": "{param} required", "uniCloud.uploadFile.fileError": "filePath should be instance of File" }, es: { "uniCloud.init.paramRequired": "{param} required", "uniCloud.uploadFile.fileError": "filePath should be instance of File" }, ja: U }, "zh-Hans"),x = _e4.t;var D = /*#__PURE__*/function () {function D(e) {_classCallCheck(this, D);["spaceId", "clientSecret"].forEach(function (t) {if (!Object.prototype.hasOwnProperty.call(e, t)) throw new Error(x("uniCloud.init.paramRequired", { param: t }));}), this.config = Object.assign({}, { endpoint: "https://api.bspapp.com" }, e), this.config.provider = "aliyun", this.config.requestUrl = this.config.endpoint + "/client", this.config.envType = this.config.envType || "public", this.config.accessTokenKey = "access_token_" + this.config.spaceId, this.adapter = C, this._getAccessTokenPromise = null, this._getAccessTokenPromiseStatus = null;}_createClass(D, [{ key: "setAccessToken", value: function setAccessToken(e) {this.accessToken = e;} }, { key: "requestWrapped", value: function requestWrapped(e) {return E.wrappedRequest(e, this.adapter.request);} }, { key: "requestAuth", value: function requestAuth(e) {return this.requestWrapped(e);} }, { key: "request", value: function request(e, t) {var _this3 = this;return Promise.resolve().then(function () {return _this3.hasAccessToken ? t ? _this3.requestWrapped(e) : _this3.requestWrapped(e).catch(function (t) {return new Promise(function (e, n) {!t || "GATEWAY_INVALID_TOKEN" !== t.code && "InvalidParameter.InvalidToken" !== t.code ? n(t) : e();}).then(function () {return _this3.getAccessToken();}).then(function () {var t = _this3.rebuildRequest(e);return _this3.request(t, !0);});}) : _this3.getAccessToken().then(function () {var t = _this3.rebuildRequest(e);return _this3.request(t, !0);});});} }, { key: "rebuildRequest", value: function rebuildRequest(e) {var t = Object.assign({}, e);return t.data.token = this.accessToken, t.header["x-basement-token"] = this.accessToken, t.header["x-serverless-sign"] = E.sign(t.data, this.config.clientSecret), t;} }, { key: "setupRequest", value: function setupRequest(e, t) {var n = Object.assign({}, e, { spaceId: this.config.spaceId, timestamp: Date.now() }),s = { "Content-Type": "application/json" };return "auth" !== t && (n.token = this.accessToken, s["x-basement-token"] = this.accessToken), s["x-serverless-sign"] = E.sign(n, this.config.clientSecret), { url: this.config.requestUrl, method: "POST", data: n, dataType: "json", header: s };} }, { key: "getAccessToken", value: function getAccessToken() {var _this4 = this;if ("pending" === this._getAccessTokenPromiseStatus) return this._getAccessTokenPromise;this._getAccessTokenPromiseStatus = "pending";return this._getAccessTokenPromise = this.requestAuth(this.setupRequest({ method: "serverless.auth.user.anonymousAuthorize", params: "{}" }, "auth")).then(function (e) {return new Promise(function (t, n) {e.result && e.result.accessToken ? (_this4.setAccessToken(e.result.accessToken), _this4._getAccessTokenPromiseStatus = "fulfilled", t(_this4.accessToken)) : (_this4._getAccessTokenPromiseStatus = "rejected", n(new I({ code: "AUTH_FAILED", message: "获取accessToken失败" })));});}, function (e) {return _this4._getAccessTokenPromiseStatus = "rejected", Promise.reject(e);}), this._getAccessTokenPromise;} }, { key: "authorize", value: function authorize() {this.getAccessToken();} }, { key: "callFunction", value: function callFunction(e) {var t = { method: "serverless.function.runtime.invoke", params: JSON.stringify({ functionTarget: e.name, functionArgs: e.data || {} }) };return this.request(this.setupRequest(t));} }, { key: "getOSSUploadOptionsFromPath", value: function getOSSUploadOptionsFromPath(e) {var t = { method: "serverless.file.resource.generateProximalSign", params: JSON.stringify(e) };return this.request(this.setupRequest(t));} }, { key: "uploadFileToOSS", value: function uploadFileToOSS(_ref) {var _this5 = this;var e = _ref.url,t = _ref.formData,n = _ref.name,s = _ref.filePath,r = _ref.fileType,o = _ref.onUploadProgress;return new Promise(function (i, a) {var c = _this5.adapter.uploadFile({ url: e, formData: t, name: n, filePath: s, fileType: r, header: { "X-OSS-server-side-encrpytion": "AES256" }, success: function success(e) {e && e.statusCode < 400 ? i(e) : a(new I({ code: "UPLOAD_FAILED", message: "文件上传失败" }));}, fail: function fail(e) {a(new I({ code: e.code || "UPLOAD_FAILED", message: e.message || e.errMsg || "文件上传失败" }));} });"function" == typeof o && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (e) {o({ loaded: e.totalBytesSent, total: e.totalBytesExpectedToSend });});});} }, { key: "reportOSSUpload", value: function reportOSSUpload(e) {var t = { method: "serverless.file.resource.report", params: JSON.stringify(e) };return this.request(this.setupRequest(t));} }, { key: "uploadFile", value: function uploadFile(_ref2) {var _this6 = this;var e = _ref2.filePath,t = _ref2.cloudPath,_ref2$fileType = _ref2.fileType,n = _ref2$fileType === void 0 ? "image" : _ref2$fileType,s = _ref2.onUploadProgress,r = _ref2.config;if ("string" !== c(t)) throw new I({ code: "INVALID_PARAM", message: "cloudPath必须为字符串类型" });if (!(t = t.trim())) throw new I({ code: "CLOUDPATH_REQUIRED", message: "cloudPath不可为空" });if (/:\/\//.test(t)) throw new I({ code: "INVALID_PARAM", message: "cloudPath不合法" });var o = r && r.envType || this.config.envType;var i, a;return this.getOSSUploadOptionsFromPath({ env: o, filename: t }).then(function (t) {var r = t.result;i = r.id, a = "https://" + r.cdnDomain + "/" + r.ossPath;var o = { url: "https://" + r.host, formData: { "Cache-Control": "max-age=2592000", "Content-Disposition": "attachment", OSSAccessKeyId: r.accessKeyId, Signature: r.signature, host: r.host, id: i, key: r.ossPath, policy: r.policy, success_action_status: 200 }, fileName: "file", name: "file", filePath: e, fileType: n };return _this6.uploadFileToOSS(Object.assign({}, o, { onUploadProgress: s }));}).then(function () {return _this6.reportOSSUpload({ id: i });}).then(function (t) {return new Promise(function (n, s) {t.success ? n({ success: !0, filePath: e, fileID: a }) : s(new I({ code: "UPLOAD_FAILED", message: "文件上传失败" }));});});} }, { key: "deleteFile", value: function deleteFile(_ref3) {var e = _ref3.fileList;var t = { method: "serverless.file.resource.delete", params: JSON.stringify({ id: e[0] }) };return this.request(this.setupRequest(t));} }, { key: "getTempFileURL", value: function getTempFileURL() {var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},e = _ref4.fileList;return new Promise(function (t, n) {Array.isArray(e) && 0 !== e.length || n(new I({ code: "INVALID_PARAM", message: "fileList的元素必须是非空的字符串" })), t({ fileList: e.map(function (e) {return { fileID: e, tempFileURL: e };}) });});} }, { key: "hasAccessToken", get: function get() {return !!this.accessToken;} }]);return D;}();var q = { init: function init(e) {var t = new D(e),n = { signInAnonymously: function signInAnonymously() {return t.authorize();}, getLoginState: function getLoginState() {return Promise.resolve(!1);} };return t.auth = function () {return n;}, t.customAuth = t.auth, t;} };var R = "undefined" != typeof location && "http:" === location.protocol ? "http:" : "https:";var L;!function (e) {e.local = "local", e.none = "none", e.session = "session";}(L || (L = {}));var F = function F() {};var N = function N() {var e;if (!Promise) {e = function e() {}, e.promise = {};var _t2 = function _t2() {throw new Error('Your Node runtime does support ES6 Promises. Set "global.Promise" to your preferred implementation of promises.');};return Object.defineProperty(e.promise, "then", { get: _t2 }), Object.defineProperty(e.promise, "catch", { get: _t2 }), e;}var t = new Promise(function (t, n) {e = function e(_e5, s) {return _e5 ? n(_e5) : t(s);};});return e.promise = t, e;};function $(e) {return void 0 === e;}function j(e) {return "[object Null]" === Object.prototype.toString.call(e);}var M;function B(e) {var t = (n = e, "[object Array]" === Object.prototype.toString.call(n) ? e : [e]);var n;var _iterator = _createForOfIteratorHelper(t),_step;try {for (_iterator.s(); !(_step = _iterator.n()).done;) {var _e6 = _step.value;var _t3 = _e6.isMatch,_n = _e6.genAdapter,_s = _e6.runtime;if (_t3()) return { adapter: _n(), runtime: _s };}} catch (err) {_iterator.e(err);} finally {_iterator.f();}}!function (e) {e.WEB = "web", e.WX_MP = "wx_mp";}(M || (M = {}));var K = { adapter: null, runtime: void 0 },H = ["anonymousUuidKey"];var W = /*#__PURE__*/function (_F) {_inherits(W, _F);var _super2 = _createSuper(W);function W() {var _this7;_classCallCheck(this, W);_this7 = _super2.call(this), K.adapter.root.tcbObject || (K.adapter.root.tcbObject = {});return _this7;}_createClass(W, [{ key: "setItem", value: function setItem(e, t) {K.adapter.root.tcbObject[e] = t;} }, { key: "getItem", value: function getItem(e) {return K.adapter.root.tcbObject[e];} }, { key: "removeItem", value: function removeItem(e) {delete K.adapter.root.tcbObject[e];} }, { key: "clear", value: function clear() {delete K.adapter.root.tcbObject;} }]);return W;}(F);function z(e, t) {switch (e) {case "local":return t.localStorage || new W();case "none":return new W();default:return t.sessionStorage || new W();}}var J = /*#__PURE__*/function () {function J(e) {_classCallCheck(this, J);if (!this._storage) {this._persistence = K.adapter.primaryStorage || e.persistence, this._storage = z(this._persistence, K.adapter);var _t4 = "access_token_".concat(e.env),_n2 = "access_token_expire_".concat(e.env),_s2 = "refresh_token_".concat(e.env),_r = "anonymous_uuid_".concat(e.env),_o = "login_type_".concat(e.env),_i = "user_info_".concat(e.env);this.keys = { accessTokenKey: _t4, accessTokenExpireKey: _n2, refreshTokenKey: _s2, anonymousUuidKey: _r, loginTypeKey: _o, userInfoKey: _i };}}_createClass(J, [{ key: "updatePersistence", value: function updatePersistence(e) {if (e === this._persistence) return;var t = "local" === this._persistence;this._persistence = e;var n = z(e, K.adapter);for (var _e7 in this.keys) {var _s3 = this.keys[_e7];if (t && H.includes(_e7)) continue;var _r2 = this._storage.getItem(_s3);$(_r2) || j(_r2) || (n.setItem(_s3, _r2), this._storage.removeItem(_s3));}this._storage = n;} }, { key: "setStore", value: function setStore(e, t, n) {if (!this._storage) return;var s = { version: n || "localCachev1", content: t },r = JSON.stringify(s);try {this._storage.setItem(e, r);} catch (e) {throw e;}} }, { key: "getStore", value: function getStore(e, t) {try {if (!this._storage) return;} catch (e) {return "";}t = t || "localCachev1";var n = this._storage.getItem(e);if (!n) return "";if (n.indexOf(t) >= 0) {return JSON.parse(n).content;}return "";} }, { key: "removeStore", value: function removeStore(e) {this._storage.removeItem(e);} }]);return J;}();var V = {},Y = {};function X(e) {return V[e];}var G = function G(e, t) {_classCallCheck(this, G);this.data = t || null, this.name = e;};var Q = /*#__PURE__*/function (_G) {_inherits(Q, _G);var _super3 = _createSuper(Q);function Q(e, t) {var _this8;_classCallCheck(this, Q);_this8 = _super3.call(this, "error", { error: e, data: t }), _this8.error = e;return _this8;}return Q;}(G);var Z = new ( /*#__PURE__*/function () {function _class() {_classCallCheck(this, _class);this._listeners = {};}_createClass(_class, [{ key: "on", value: function on(e, t) {return function (e, t, n) {n[e] = n[e] || [], n[e].push(t);}(e, t, this._listeners), this;} }, { key: "off", value: function off(e, t) {return function (e, t, n) {if (n && n[e]) {var _s4 = n[e].indexOf(t);-1 !== _s4 && n[e].splice(_s4, 1);}}(e, t, this._listeners), this;} }, { key: "fire", value: function fire(e, t) {if (e instanceof Q) return console.error(e.error), this;var n = "string" == typeof e ? new G(e, t || {}) : e;var s = n.name;if (this._listens(s)) {n.target = this;var _e8 = this._listeners[s] ? _toConsumableArray(this._listeners[s]) : [];var _iterator2 = _createForOfIteratorHelper(_e8),_step2;try {for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {var _t5 = _step2.value;_t5.call(this, n);}} catch (err) {_iterator2.e(err);} finally {_iterator2.f();}}return this;} }, { key: "_listens", value: function _listens(e) {return this._listeners[e] && this._listeners[e].length > 0;} }]);return _class;}())();function ee(e, t) {Z.on(e, t);}function te(e) {var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};Z.fire(e, t);}function ne(e, t) {Z.off(e, t);}var se = "loginStateChanged",re = "loginStateExpire",oe = "loginTypeChanged",ie = "anonymousConverted",ae = "refreshAccessToken";var ce;!function (e) {e.ANONYMOUS = "ANONYMOUS", e.WECHAT = "WECHAT", e.WECHAT_PUBLIC = "WECHAT-PUBLIC", e.WECHAT_OPEN = "WECHAT-OPEN", e.CUSTOM = "CUSTOM", e.EMAIL = "EMAIL", e.USERNAME = "USERNAME", e.NULL = "NULL";}(ce || (ce = {}));var ue = ["auth.getJwt", "auth.logout", "auth.signInWithTicket", "auth.signInAnonymously", "auth.signIn", "auth.fetchAccessTokenWithRefreshToken", "auth.signUpWithEmailAndPassword", "auth.activateEndUserMail", "auth.sendPasswordResetEmail", "auth.resetPasswordWithToken", "auth.isUsernameRegistered"],he = { "X-SDK-Version": "1.3.5" };function le(e, t, n) {var s = e[t];e[t] = function (t) {var r = {},o = {};n.forEach(function (n) {var _n$call = n.call(e, t),s = _n$call.data,i = _n$call.headers;Object.assign(r, s), Object.assign(o, i);});var i = t.data;return i && function () {var e;if (e = i, "[object FormData]" !== Object.prototype.toString.call(e)) t.data = _objectSpread(_objectSpread({}, i), r);else for (var _e9 in r) {i.append(_e9, r[_e9]);}}(), t.headers = _objectSpread(_objectSpread({}, t.headers || {}), o), s.call(e, t);};}function de() {var e = Math.random().toString(16).slice(2);return { data: { seqId: e }, headers: _objectSpread(_objectSpread({}, he), {}, { "x-seqid": e }) };}var fe = /*#__PURE__*/function () {function fe() {var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};_classCallCheck(this, fe);var t;this.config = e, this._reqClass = new K.adapter.reqClass({ timeout: this.config.timeout, timeoutMsg: "\u8BF7\u6C42\u5728".concat(this.config.timeout / 1e3, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD"), restrictedMethods: ["post"] }), this._cache = X(this.config.env), this._localCache = (t = this.config.env, Y[t]), le(this._reqClass, "post", [de]), le(this._reqClass, "upload", [de]), le(this._reqClass, "download", [de]);}_createClass(fe, [{ key: "post", value: function () {var _post = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee(e) {return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:_context.next = 2;return this._reqClass.post(e);case 2:return _context.abrupt("return", _context.sent);case 3:case "end":return _context.stop();}}}, _callee, this);}));function post(_x) {return _post.apply(this, arguments);}return post;}() }, { key: "upload", value: function () {var _upload = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee2(e) {return _regenerator.default.wrap(function _callee2$(_context2) {while (1) {switch (_context2.prev = _context2.next) {case 0:_context2.next = 2;return this._reqClass.upload(e);case 2:return _context2.abrupt("return", _context2.sent);case 3:case "end":return _context2.stop();}}}, _callee2, this);}));function upload(_x2) {return _upload.apply(this, arguments);}return upload;}() }, { key: "download", value: function () {var _download = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee3(e) {return _regenerator.default.wrap(function _callee3$(_context3) {while (1) {switch (_context3.prev = _context3.next) {case 0:_context3.next = 2;return this._reqClass.download(e);case 2:return _context3.abrupt("return", _context3.sent);case 3:case "end":return _context3.stop();}}}, _callee3, this);}));function download(_x3) {return _download.apply(this, arguments);}return download;}() }, { key: "refreshAccessToken", value: function () {var _refreshAccessToken2 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee4() {var e, t;return _regenerator.default.wrap(function _callee4$(_context4) {while (1) {switch (_context4.prev = _context4.next) {case 0:this._refreshAccessTokenPromise || (this._refreshAccessTokenPromise = this._refreshAccessToken());_context4.prev = 1;_context4.next = 4;return this._refreshAccessTokenPromise;case 4:e = _context4.sent;_context4.next = 10;break;case 7:_context4.prev = 7;_context4.t0 = _context4["catch"](1);t = _context4.t0;case 10:if (!(this._refreshAccessTokenPromise = null, this._shouldRefreshAccessTokenHook = null, t)) {_context4.next = 12;break;}throw t;case 12:return _context4.abrupt("return", e);case 13:case "end":return _context4.stop();}}}, _callee4, this, [[1, 7]]);}));function refreshAccessToken() {return _refreshAccessToken2.apply(this, arguments);}return refreshAccessToken;}() }, { key: "_refreshAccessToken", value: function () {var _refreshAccessToken3 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee5() {var _this$_cache$keys, e, t, n, s, r, o, i, a, _e10, _e11, _t6, _s5;return _regenerator.default.wrap(function _callee5$(_context5) {while (1) {switch (_context5.prev = _context5.next) {case 0:_this$_cache$keys = this._cache.keys, e = _this$_cache$keys.accessTokenKey, t = _this$_cache$keys.accessTokenExpireKey, n = _this$_cache$keys.refreshTokenKey, s = _this$_cache$keys.loginTypeKey, r = _this$_cache$keys.anonymousUuidKey;this._cache.removeStore(e), this._cache.removeStore(t);o = this._cache.getStore(n);if (o) {_context5.next = 5;break;}throw new Error("未登录CloudBase");case 5:i = { refresh_token: o };_context5.next = 8;return this.request("auth.fetchAccessTokenWithRefreshToken", i);case 8:a = _context5.sent;if (!a.data.code) {_context5.next = 21;break;}_e10 = a.data.code;if (!("SIGN_PARAM_INVALID" === _e10 || "REFRESH_TOKEN_EXPIRED" === _e10 || "INVALID_REFRESH_TOKEN" === _e10)) {_context5.next = 20;break;}if (!(this._cache.getStore(s) === ce.ANONYMOUS && "INVALID_REFRESH_TOKEN" === _e10)) {_context5.next = 19;break;}_e11 = this._cache.getStore(r);_t6 = this._cache.getStore(n);_context5.next = 17;return this.send("auth.signInAnonymously", { anonymous_uuid: _e11, refresh_token: _t6 });case 17:_s5 = _context5.sent;return _context5.abrupt("return", (this.setRefreshToken(_s5.refresh_token), this._refreshAccessToken()));case 19:te(re), this._cache.removeStore(n);case 20:throw new Error("\u5237\u65B0access token\u5931\u8D25\uFF1A".concat(a.data.code));case 21:if (!a.data.access_token) {_context5.next = 23;break;}return _context5.abrupt("return", (te(ae), this._cache.setStore(e, a.data.access_token), this._cache.setStore(t, a.data.access_token_expire + Date.now()), { accessToken: a.data.access_token, accessTokenExpire: a.data.access_token_expire }));case 23:a.data.refresh_token && (this._cache.removeStore(n), this._cache.setStore(n, a.data.refresh_token), this._refreshAccessToken());case 24:case "end":return _context5.stop();}}}, _callee5, this);}));function _refreshAccessToken() {return _refreshAccessToken3.apply(this, arguments);}return _refreshAccessToken;}() }, { key: "getAccessToken", value: function () {var _getAccessToken = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee6() {var _this$_cache$keys2, e, t, n, s, r, o;return _regenerator.default.wrap(function _callee6$(_context6) {while (1) {switch (_context6.prev = _context6.next) {case 0:_this$_cache$keys2 = this._cache.keys, e = _this$_cache$keys2.accessTokenKey, t = _this$_cache$keys2.accessTokenExpireKey, n = _this$_cache$keys2.refreshTokenKey;if (this._cache.getStore(n)) {_context6.next = 3;break;}throw new Error("refresh token不存在,登录状态异常");case 3:s = this._cache.getStore(e), r = this._cache.getStore(t), o = !0;_context6.t0 = this._shouldRefreshAccessTokenHook;if (!_context6.t0) {_context6.next = 9;break;}_context6.next = 8;return this._shouldRefreshAccessTokenHook(s, r);case 8:_context6.t0 = !_context6.sent;case 9:_context6.t1 = _context6.t0;if (!_context6.t1) {_context6.next = 12;break;}o = !1;case 12:return _context6.abrupt("return", (!s || !r || r < Date.now()) && o ? this.refreshAccessToken() : { accessToken: s, accessTokenExpire: r });case 13:case "end":return _context6.stop();}}}, _callee6, this);}));function getAccessToken() {return _getAccessToken.apply(this, arguments);}return getAccessToken;}() }, { key: "request", value: function () {var _request = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee7(e, t, n) {var s, r, o, _e12, i, _e13, _e14, a, c, u, h, l, d, f, p, g;return _regenerator.default.wrap(function _callee7$(_context7) {while (1) {switch (_context7.prev = _context7.next) {case 0:s = "x-tcb-trace_".concat(this.config.env);r = "application/x-www-form-urlencoded";o = _objectSpread({ action: e, env: this.config.env, dataVersion: "2019-08-16" }, t);if (!(-1 === ue.indexOf(e))) {_context7.next = 10;break;}_e12 = this._cache.keys.refreshTokenKey;_context7.t0 = this._cache.getStore(_e12);if (!_context7.t0) {_context7.next = 10;break;}_context7.next = 9;return this.getAccessToken();case 9:o.access_token = _context7.sent.accessToken;case 10:if ("storage.uploadFile" === e) {i = new FormData();for (_e13 in i) {i.hasOwnProperty(_e13) && void 0 !== i[_e13] && i.append(_e13, o[_e13]);}r = "multipart/form-data";} else {r = "application/json", i = {};for (_e14 in o) {void 0 !== o[_e14] && (i[_e14] = o[_e14]);}}a = { headers: { "content-type": r } };n && n.onUploadProgress && (a.onUploadProgress = n.onUploadProgress);c = this._localCache.getStore(s);c && (a.headers["X-TCB-Trace"] = c);u = t.parse, h = t.inQuery, l = t.search;d = { env: this.config.env };u && (d.parse = !0), h && (d = _objectSpread(_objectSpread({}, h), d));f = function (e, t) {var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};var s = /\?/.test(t);var r = "";for (var _e15 in n) {"" === r ? !s && (t += "?") : r += "&", r += "".concat(_e15, "=").concat(encodeURIComponent(n[_e15]));}return /^http(s)?\:\/\//.test(t += r) ? t : "".concat(e).concat(t);}(R, "//tcb-api.tencentcloudapi.com/web", d);l && (f += l);_context7.next = 22;return this.post(_objectSpread({ url: f, data: i }, a));case 22:p = _context7.sent;g = p.header && p.header["x-tcb-trace"];if (!(g && this._localCache.setStore(s, g), 200 !== Number(p.status) && 200 !== Number(p.statusCode) || !p.data)) {_context7.next = 26;break;}throw new Error("network request error");case 26:return _context7.abrupt("return", p);case 27:case "end":return _context7.stop();}}}, _callee7, this);}));function request(_x4, _x5, _x6) {return _request.apply(this, arguments);}return request;}() }, { key: "send", value: function () {var _send = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee8(e) {var t,n,_n3,_args8 = arguments;return _regenerator.default.wrap(function _callee8$(_context8) {while (1) {switch (_context8.prev = _context8.next) {case 0:t = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : {};_context8.next = 3;return this.request(e, t, { onUploadProgress: t.onUploadProgress });case 3:n = _context8.sent;if (!("ACCESS_TOKEN_EXPIRED" === n.data.code && -1 === ue.indexOf(e))) {_context8.next = 13;break;}_context8.next = 7;return this.refreshAccessToken();case 7:_context8.next = 9;return this.request(e, t, { onUploadProgress: t.onUploadProgress });case 9:_n3 = _context8.sent;if (!_n3.data.code) {_context8.next = 12;break;}throw new Error("[".concat(_n3.data.code, "] ").concat(_n3.data.message));case 12:return _context8.abrupt("return", _n3.data);case 13:if (!n.data.code) {_context8.next = 15;break;}throw new Error("[".concat(n.data.code, "] ").concat(n.data.message));case 15:return _context8.abrupt("return", n.data);case 16:case "end":return _context8.stop();}}}, _callee8, this);}));function send(_x7) {return _send.apply(this, arguments);}return send;}() }, { key: "setRefreshToken", value: function setRefreshToken(e) {var _this$_cache$keys3 = this._cache.keys,t = _this$_cache$keys3.accessTokenKey,n = _this$_cache$keys3.accessTokenExpireKey,s = _this$_cache$keys3.refreshTokenKey;this._cache.removeStore(t), this._cache.removeStore(n), this._cache.setStore(s, e);} }]);return fe;}();var pe = {};function ge(e) {return pe[e];}var me = /*#__PURE__*/function () {function me(e) {_classCallCheck(this, me);this.config = e, this._cache = X(e.env), this._request = ge(e.env);}_createClass(me, [{ key: "setRefreshToken", value: function setRefreshToken(e) {var _this$_cache$keys4 = this._cache.keys,t = _this$_cache$keys4.accessTokenKey,n = _this$_cache$keys4.accessTokenExpireKey,s = _this$_cache$keys4.refreshTokenKey;this._cache.removeStore(t), this._cache.removeStore(n), this._cache.setStore(s, e);} }, { key: "setAccessToken", value: function setAccessToken(e, t) {var _this$_cache$keys5 = this._cache.keys,n = _this$_cache$keys5.accessTokenKey,s = _this$_cache$keys5.accessTokenExpireKey;this._cache.setStore(n, e), this._cache.setStore(s, t);} }, { key: "refreshUserInfo", value: function () {var _refreshUserInfo = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee9() {var _yield$this$_request$, e;return _regenerator.default.wrap(function _callee9$(_context9) {while (1) {switch (_context9.prev = _context9.next) {case 0:_context9.next = 2;return this._request.send("auth.getUserInfo", {});case 2:_yield$this$_request$ = _context9.sent;e = _yield$this$_request$.data;return _context9.abrupt("return", (this.setLocalUserInfo(e), e));case 5:case "end":return _context9.stop();}}}, _callee9, this);}));function refreshUserInfo() {return _refreshUserInfo.apply(this, arguments);}return refreshUserInfo;}() }, { key: "setLocalUserInfo", value: function setLocalUserInfo(e) {var t = this._cache.keys.userInfoKey;this._cache.setStore(t, e);} }]);return me;}();var ye = /*#__PURE__*/function () {function ye(e) {_classCallCheck(this, ye);if (!e) throw new Error("envId is not defined");this._envId = e, this._cache = X(this._envId), this._request = ge(this._envId), this.setUserInfo();}_createClass(ye, [{ key: "linkWithTicket", value: function linkWithTicket(e) {if ("string" != typeof e) throw new Error("ticket must be string");return this._request.send("auth.linkWithTicket", { ticket: e });} }, { key: "linkWithRedirect", value: function linkWithRedirect(e) {e.signInWithRedirect();} }, { key: "updatePassword", value: function updatePassword(e, t) {return this._request.send("auth.updatePassword", { oldPassword: t, newPassword: e });} }, { key: "updateEmail", value: function updateEmail(e) {return this._request.send("auth.updateEmail", { newEmail: e });} }, { key: "updateUsername", value: function updateUsername(e) {if ("string" != typeof e) throw new Error("username must be a string");return this._request.send("auth.updateUsername", { username: e });} }, { key: "getLinkedUidList", value: function () {var _getLinkedUidList = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee10() {var _yield$this$_request$2, e, t, n;return _regenerator.default.wrap(function _callee10$(_context10) {while (1) {switch (_context10.prev = _context10.next) {case 0:_context10.next = 2;return this._request.send("auth.getLinkedUidList", {});case 2:_yield$this$_request$2 = _context10.sent;e = _yield$this$_request$2.data;t = !1;n = e.users;return _context10.abrupt("return", (n.forEach(function (e) {e.wxOpenId && e.wxPublicId && (t = !0);}), { users: n, hasPrimaryUid: t }));case 7:case "end":return _context10.stop();}}}, _callee10, this);}));function getLinkedUidList() {return _getLinkedUidList.apply(this, arguments);}return getLinkedUidList;}() }, { key: "setPrimaryUid", value: function setPrimaryUid(e) {return this._request.send("auth.setPrimaryUid", { uid: e });} }, { key: "unlink", value: function unlink(e) {return this._request.send("auth.unlink", { platform: e });} }, { key: "update", value: function () {var _update = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee11(e) {var t, n, s, r, o, i, _yield$this$_request$3, a;return _regenerator.default.wrap(function _callee11$(_context11) {while (1) {switch (_context11.prev = _context11.next) {case 0:t = e.nickName;n = e.gender;s = e.avatarUrl;r = e.province;o = e.country;i = e.city;_context11.next = 8;return this._request.send("auth.updateUserInfo", { nickName: t, gender: n, avatarUrl: s, province: r, country: o, city: i });case 8:_yield$this$_request$3 = _context11.sent;a = _yield$this$_request$3.data;this.setLocalUserInfo(a);case 11:case "end":return _context11.stop();}}}, _callee11, this);}));function update(_x8) {return _update.apply(this, arguments);}return update;}() }, { key: "refresh", value: function () {var _refresh = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee12() {var _yield$this$_request$4, e;return _regenerator.default.wrap(function _callee12$(_context12) {while (1) {switch (_context12.prev = _context12.next) {case 0:_context12.next = 2;return this._request.send("auth.getUserInfo", {});case 2:_yield$this$_request$4 = _context12.sent;e = _yield$this$_request$4.data;return _context12.abrupt("return", (this.setLocalUserInfo(e), e));case 5:case "end":return _context12.stop();}}}, _callee12, this);}));function refresh() {return _refresh.apply(this, arguments);}return refresh;}() }, { key: "setUserInfo", value: function setUserInfo() {var _this9 = this;var e = this._cache.keys.userInfoKey,t = this._cache.getStore(e);["uid", "loginType", "openid", "wxOpenId", "wxPublicId", "unionId", "qqMiniOpenId", "email", "hasPassword", "customUserId", "nickName", "gender", "avatarUrl"].forEach(function (e) {_this9[e] = t[e];}), this.location = { country: t.country, province: t.province, city: t.city };} }, { key: "setLocalUserInfo", value: function setLocalUserInfo(e) {var t = this._cache.keys.userInfoKey;this._cache.setStore(t, e), this.setUserInfo();} }]);return ye;}();var _e = /*#__PURE__*/function () {function _e(e) {_classCallCheck(this, _e);if (!e) throw new Error("envId is not defined");this._cache = X(e);var _this$_cache$keys6 = this._cache.keys,t = _this$_cache$keys6.refreshTokenKey,n = _this$_cache$keys6.accessTokenKey,s = _this$_cache$keys6.accessTokenExpireKey,r = this._cache.getStore(t),o = this._cache.getStore(n),i = this._cache.getStore(s);this.credential = { refreshToken: r, accessToken: o, accessTokenExpire: i }, this.user = new ye(e);}_createClass(_e, [{ key: "isAnonymousAuth", get: function get() {return this.loginType === ce.ANONYMOUS;} }, { key: "isCustomAuth", get: function get() {return this.loginType === ce.CUSTOM;} }, { key: "isWeixinAuth", get: function get() {return this.loginType === ce.WECHAT || this.loginType === ce.WECHAT_OPEN || this.loginType === ce.WECHAT_PUBLIC;} }, { key: "loginType", get: function get() {return this._cache.getStore(this._cache.keys.loginTypeKey);} }]);return _e;}();var we = /*#__PURE__*/function (_me) {_inherits(we, _me);var _super4 = _createSuper(we);function we() {_classCallCheck(this, we);return _super4.apply(this, arguments);}_createClass(we, [{ key: "signIn", value: function () {var _signIn = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee13() {var _this$_cache$keys7, e, t, n, s, r, _e16;return _regenerator.default.wrap(function _callee13$(_context13) {while (1) {switch (_context13.prev = _context13.next) {case 0:this._cache.updatePersistence("local");_this$_cache$keys7 = this._cache.keys;e = _this$_cache$keys7.anonymousUuidKey;t = _this$_cache$keys7.refreshTokenKey;n = this._cache.getStore(e) || void 0;s = this._cache.getStore(t) || void 0;_context13.next = 8;return this._request.send("auth.signInAnonymously", { anonymous_uuid: n, refresh_token: s });case 8:r = _context13.sent;if (!(r.uuid && r.refresh_token)) {_context13.next = 20;break;}this._setAnonymousUUID(r.uuid);this.setRefreshToken(r.refresh_token);_context13.next = 14;return this._request.refreshAccessToken();case 14:te(se);te(oe, { env: this.config.env, loginType: ce.ANONYMOUS, persistence: "local" });_e16 = new _e(this.config.env);_context13.next = 19;return _e16.user.refresh();case 19:return _context13.abrupt("return", _e16);case 20:throw new Error("匿名登录失败");case 21:case "end":return _context13.stop();}}}, _callee13, this);}));function signIn() {return _signIn.apply(this, arguments);}return signIn;}() }, { key: "linkAndRetrieveDataWithTicket", value: function () {var _linkAndRetrieveDataWithTicket = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee14(e) {var _this$_cache$keys8, t, n, s, r, o;return _regenerator.default.wrap(function _callee14$(_context14) {while (1) {switch (_context14.prev = _context14.next) {case 0:_this$_cache$keys8 = this._cache.keys;t = _this$_cache$keys8.anonymousUuidKey;n = _this$_cache$keys8.refreshTokenKey;s = this._cache.getStore(t);r = this._cache.getStore(n);_context14.next = 7;return this._request.send("auth.linkAndRetrieveDataWithTicket", { anonymous_uuid: s, refresh_token: r, ticket: e });case 7:o = _context14.sent;if (!o.refresh_token) {_context14.next = 16;break;}this._clearAnonymousUUID();this.setRefreshToken(o.refresh_token);_context14.next = 13;return this._request.refreshAccessToken();case 13:te(ie, { env: this.config.env });te(oe, { loginType: ce.CUSTOM, persistence: "local" });return _context14.abrupt("return", { credential: { refreshToken: o.refresh_token } });case 16:throw new Error("匿名转化失败");case 17:case "end":return _context14.stop();}}}, _callee14, this);}));function linkAndRetrieveDataWithTicket(_x9) {return _linkAndRetrieveDataWithTicket.apply(this, arguments);}return linkAndRetrieveDataWithTicket;}() }, { key: "_setAnonymousUUID", value: function _setAnonymousUUID(e) {var _this$_cache$keys9 = this._cache.keys,t = _this$_cache$keys9.anonymousUuidKey,n = _this$_cache$keys9.loginTypeKey;this._cache.removeStore(t), this._cache.setStore(t, e), this._cache.setStore(n, ce.ANONYMOUS);} }, { key: "_clearAnonymousUUID", value: function _clearAnonymousUUID() {this._cache.removeStore(this._cache.keys.anonymousUuidKey);} }]);return we;}(me);var ke = /*#__PURE__*/function (_me2) {_inherits(ke, _me2);var _super5 = _createSuper(ke);function ke() {_classCallCheck(this, ke);return _super5.apply(this, arguments);}_createClass(ke, [{ key: "signIn", value: function () {var _signIn2 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee15(e) {var t, n;return _regenerator.default.wrap(function _callee15$(_context15) {while (1) {switch (_context15.prev = _context15.next) {case 0:if (!("string" != typeof e)) {_context15.next = 2;break;}throw new Error("ticket must be a string");case 2:t = this._cache.keys.refreshTokenKey;_context15.next = 5;return this._request.send("auth.signInWithTicket", { ticket: e, refresh_token: this._cache.getStore(t) || "" });case 5:n = _context15.sent;if (!n.refresh_token) {_context15.next = 15;break;}this.setRefreshToken(n.refresh_token);_context15.next = 10;return this._request.refreshAccessToken();case 10:te(se);te(oe, { env: this.config.env, loginType: ce.CUSTOM, persistence: this.config.persistence });_context15.next = 14;return this.refreshUserInfo();case 14:return _context15.abrupt("return", new _e(this.config.env));case 15:throw new Error("自定义登录失败");case 16:case "end":return _context15.stop();}}}, _callee15, this);}));function signIn(_x10) {return _signIn2.apply(this, arguments);}return signIn;}() }]);return ke;}(me);var Se = /*#__PURE__*/function (_me3) {_inherits(Se, _me3);var _super6 = _createSuper(Se);function Se() {_classCallCheck(this, Se);return _super6.apply(this, arguments);}_createClass(Se, [{ key: "signIn", value: function () {var _signIn3 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee16(e, t) {var n, s, r, o, i;return _regenerator.default.wrap(function _callee16$(_context16) {while (1) {switch (_context16.prev = _context16.next) {case 0:if (!("string" != typeof e)) {_context16.next = 2;break;}throw new Error("email must be a string");case 2:n = this._cache.keys.refreshTokenKey;_context16.next = 5;return this._request.send("auth.signIn", { loginType: "EMAIL", email: e, password: t, refresh_token: this._cache.getStore(n) || "" });case 5:s = _context16.sent;r = s.refresh_token;o = s.access_token;i = s.access_token_expire;if (!r) {_context16.next = 22;break;}this.setRefreshToken(r);if (!(o && i)) {_context16.next = 15;break;}this.setAccessToken(o, i);_context16.next = 17;break;case 15:_context16.next = 17;return this._request.refreshAccessToken();case 17:_context16.next = 19;return this.refreshUserInfo();case 19:te(se);te(oe, { env: this.config.env, loginType: ce.EMAIL, persistence: this.config.persistence });return _context16.abrupt("return", new _e(this.config.env));case 22:throw s.code ? new Error("\u90AE\u7BB1\u767B\u5F55\u5931\u8D25: [".concat(s.code, "] ").concat(s.message)) : new Error("邮箱登录失败");case 23:case "end":return _context16.stop();}}}, _callee16, this);}));function signIn(_x11, _x12) {return _signIn3.apply(this, arguments);}return signIn;}() }, { key: "activate", value: function () {var _activate = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee17(e) {return _regenerator.default.wrap(function _callee17$(_context17) {while (1) {switch (_context17.prev = _context17.next) {case 0:return _context17.abrupt("return", this._request.send("auth.activateEndUserMail", { token: e }));case 1:case "end":return _context17.stop();}}}, _callee17, this);}));function activate(_x13) {return _activate.apply(this, arguments);}return activate;}() }, { key: "resetPasswordWithToken", value: function () {var _resetPasswordWithToken = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee18(e, t) {return _regenerator.default.wrap(function _callee18$(_context18) {while (1) {switch (_context18.prev = _context18.next) {case 0:return _context18.abrupt("return", this._request.send("auth.resetPasswordWithToken", { token: e, newPassword: t }));case 1:case "end":return _context18.stop();}}}, _callee18, this);}));function resetPasswordWithToken(_x14, _x15) {return _resetPasswordWithToken.apply(this, arguments);}return resetPasswordWithToken;}() }]);return Se;}(me);var ve = /*#__PURE__*/function (_me4) {_inherits(ve, _me4);var _super7 = _createSuper(ve);function ve() {_classCallCheck(this, ve);return _super7.apply(this, arguments);}_createClass(ve, [{ key: "signIn", value: function () {var _signIn4 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee19(e, t) {var n, s, r, o, i;return _regenerator.default.wrap(function _callee19$(_context19) {while (1) {switch (_context19.prev = _context19.next) {case 0:if (!("string" != typeof e)) {_context19.next = 2;break;}throw new Error("username must be a string");case 2:"string" != typeof t && (t = "", console.warn("password is empty"));n = this._cache.keys.refreshTokenKey;_context19.next = 6;return this._request.send("auth.signIn", { loginType: ce.USERNAME, username: e, password: t, refresh_token: this._cache.getStore(n) || "" });case 6:s = _context19.sent;r = s.refresh_token;o = s.access_token_expire;i = s.access_token;if (!r) {_context19.next = 23;break;}this.setRefreshToken(r);if (!(i && o)) {_context19.next = 16;break;}this.setAccessToken(i, o);_context19.next = 18;break;case 16:_context19.next = 18;return this._request.refreshAccessToken();case 18:_context19.next = 20;return this.refreshUserInfo();case 20:te(se);te(oe, { env: this.config.env, loginType: ce.USERNAME, persistence: this.config.persistence });return _context19.abrupt("return", new _e(this.config.env));case 23:throw s.code ? new Error("\u7528\u6237\u540D\u5BC6\u7801\u767B\u5F55\u5931\u8D25: [".concat(s.code, "] ").concat(s.message)) : new Error("用户名密码登录失败");case 24:case "end":return _context19.stop();}}}, _callee19, this);}));function signIn(_x16, _x17) {return _signIn4.apply(this, arguments);}return signIn;}() }]);return ve;}(me);var Te = /*#__PURE__*/function () {function Te(e) {_classCallCheck(this, Te);this.config = e, this._cache = X(e.env), this._request = ge(e.env), this._onAnonymousConverted = this._onAnonymousConverted.bind(this), this._onLoginTypeChanged = this._onLoginTypeChanged.bind(this), ee(oe, this._onLoginTypeChanged);}_createClass(Te, [{ key: "anonymousAuthProvider", value: function anonymousAuthProvider() {return new we(this.config);} }, { key: "customAuthProvider", value: function customAuthProvider() {return new ke(this.config);} }, { key: "emailAuthProvider", value: function emailAuthProvider() {return new Se(this.config);} }, { key: "usernameAuthProvider", value: function usernameAuthProvider() {return new ve(this.config);} }, { key: "signInAnonymously", value: function () {var _signInAnonymously = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee20() {return _regenerator.default.wrap(function _callee20$(_context20) {while (1) {switch (_context20.prev = _context20.next) {case 0:return _context20.abrupt("return", new we(this.config).signIn());case 1:case "end":return _context20.stop();}}}, _callee20, this);}));function signInAnonymously() {return _signInAnonymously.apply(this, arguments);}return signInAnonymously;}() }, { key: "signInWithEmailAndPassword", value: function () {var _signInWithEmailAndPassword = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee21(e, t) {return _regenerator.default.wrap(function _callee21$(_context21) {while (1) {switch (_context21.prev = _context21.next) {case 0:return _context21.abrupt("return", new Se(this.config).signIn(e, t));case 1:case "end":return _context21.stop();}}}, _callee21, this);}));function signInWithEmailAndPassword(_x18, _x19) {return _signInWithEmailAndPassword.apply(this, arguments);}return signInWithEmailAndPassword;}() }, { key: "signInWithUsernameAndPassword", value: function signInWithUsernameAndPassword(e, t) {return new ve(this.config).signIn(e, t);} }, { key: "linkAndRetrieveDataWithTicket", value: function () {var _linkAndRetrieveDataWithTicket2 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee22(e) {return _regenerator.default.wrap(function _callee22$(_context22) {while (1) {switch (_context22.prev = _context22.next) {case 0:this._anonymousAuthProvider || (this._anonymousAuthProvider = new we(this.config)), ee(ie, this._onAnonymousConverted);_context22.next = 3;return this._anonymousAuthProvider.linkAndRetrieveDataWithTicket(e);case 3:return _context22.abrupt("return", _context22.sent);case 4:case "end":return _context22.stop();}}}, _callee22, this);}));function linkAndRetrieveDataWithTicket(_x20) {return _linkAndRetrieveDataWithTicket2.apply(this, arguments);}return linkAndRetrieveDataWithTicket;}() }, { key: "signOut", value: function () {var _signOut = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee23() {var _this$_cache$keys10, e, t, n, s, r;return _regenerator.default.wrap(function _callee23$(_context23) {while (1) {switch (_context23.prev = _context23.next) {case 0:if (!(this.loginType === ce.ANONYMOUS)) {_context23.next = 2;break;}throw new Error("匿名用户不支持登出操作");case 2:_this$_cache$keys10 = this._cache.keys, e = _this$_cache$keys10.refreshTokenKey, t = _this$_cache$keys10.accessTokenKey, n = _this$_cache$keys10.accessTokenExpireKey, s = this._cache.getStore(e);if (s) {_context23.next = 5;break;}return _context23.abrupt("return");case 5:_context23.next = 7;return this._request.send("auth.logout", { refresh_token: s });case 7:r = _context23.sent;return _context23.abrupt("return", (this._cache.removeStore(e), this._cache.removeStore(t), this._cache.removeStore(n), te(se), te(oe, { env: this.config.env, loginType: ce.NULL, persistence: this.config.persistence }), r));case 9:case "end":return _context23.stop();}}}, _callee23, this);}));function signOut() {return _signOut.apply(this, arguments);}return signOut;}() }, { key: "signUpWithEmailAndPassword", value: function () {var _signUpWithEmailAndPassword = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee24(e, t) {return _regenerator.default.wrap(function _callee24$(_context24) {while (1) {switch (_context24.prev = _context24.next) {case 0:return _context24.abrupt("return", this._request.send("auth.signUpWithEmailAndPassword", { email: e, password: t }));case 1:case "end":return _context24.stop();}}}, _callee24, this);}));function signUpWithEmailAndPassword(_x21, _x22) {return _signUpWithEmailAndPassword.apply(this, arguments);}return signUpWithEmailAndPassword;}() }, { key: "sendPasswordResetEmail", value: function () {var _sendPasswordResetEmail = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee25(e) {return _regenerator.default.wrap(function _callee25$(_context25) {while (1) {switch (_context25.prev = _context25.next) {case 0:return _context25.abrupt("return", this._request.send("auth.sendPasswordResetEmail", { email: e }));case 1:case "end":return _context25.stop();}}}, _callee25, this);}));function sendPasswordResetEmail(_x23) {return _sendPasswordResetEmail.apply(this, arguments);}return sendPasswordResetEmail;}() }, { key: "onLoginStateChanged", value: function onLoginStateChanged(e) {var _this10 = this;ee(se, function () {var t = _this10.hasLoginState();e.call(_this10, t);});var t = this.hasLoginState();e.call(this, t);} }, { key: "onLoginStateExpired", value: function onLoginStateExpired(e) {ee(re, e.bind(this));} }, { key: "onAccessTokenRefreshed", value: function onAccessTokenRefreshed(e) {ee(ae, e.bind(this));} }, { key: "onAnonymousConverted", value: function onAnonymousConverted(e) {ee(ie, e.bind(this));} }, { key: "onLoginTypeChanged", value: function onLoginTypeChanged(e) {var _this11 = this;ee(oe, function () {var t = _this11.hasLoginState();e.call(_this11, t);});} }, { key: "getAccessToken", value: function () {var _getAccessToken2 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee26() {return _regenerator.default.wrap(function _callee26$(_context26) {while (1) {switch (_context26.prev = _context26.next) {case 0:_context26.next = 2;return this._request.getAccessToken();case 2:_context26.t0 = _context26.sent.accessToken;_context26.t1 = this.config.env;return _context26.abrupt("return", { accessToken: _context26.t0, env: _context26.t1 });case 5:case "end":return _context26.stop();}}}, _callee26, this);}));function getAccessToken() {return _getAccessToken2.apply(this, arguments);}return getAccessToken;}() }, { key: "hasLoginState", value: function hasLoginState() {var e = this._cache.keys.refreshTokenKey;return this._cache.getStore(e) ? new _e(this.config.env) : null;} }, { key: "isUsernameRegistered", value: function () {var _isUsernameRegistered = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee27(e) {var _yield$this$_request$5, t;return _regenerator.default.wrap(function _callee27$(_context27) {while (1) {switch (_context27.prev = _context27.next) {case 0:if (!("string" != typeof e)) {_context27.next = 2;break;}throw new Error("username must be a string");case 2:_context27.next = 4;return this._request.send("auth.isUsernameRegistered", { username: e });case 4:_yield$this$_request$5 = _context27.sent;t = _yield$this$_request$5.data;return _context27.abrupt("return", t && t.isRegistered);case 7:case "end":return _context27.stop();}}}, _callee27, this);}));function isUsernameRegistered(_x24) {return _isUsernameRegistered.apply(this, arguments);}return isUsernameRegistered;}() }, { key: "getLoginState", value: function getLoginState() {return Promise.resolve(this.hasLoginState());} }, { key: "signInWithTicket", value: function () {var _signInWithTicket = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee28(e) {return _regenerator.default.wrap(function _callee28$(_context28) {while (1) {switch (_context28.prev = _context28.next) {case 0:return _context28.abrupt("return", new ke(this.config).signIn(e));case 1:case "end":return _context28.stop();}}}, _callee28, this);}));function signInWithTicket(_x25) {return _signInWithTicket.apply(this, arguments);}return signInWithTicket;}() }, { key: "shouldRefreshAccessToken", value: function shouldRefreshAccessToken(e) {this._request._shouldRefreshAccessTokenHook = e.bind(this);} }, { key: "getUserInfo", value: function getUserInfo() {return this._request.send("auth.getUserInfo", {}).then(function (e) {return e.code ? e : _objectSpread(_objectSpread({}, e.data), {}, { requestId: e.seqId });});} }, { key: "getAuthHeader", value: function getAuthHeader() {var _this$_cache$keys11 = this._cache.keys,e = _this$_cache$keys11.refreshTokenKey,t = _this$_cache$keys11.accessTokenKey,n = this._cache.getStore(e);return { "x-cloudbase-credentials": this._cache.getStore(t) + "/@@/" + n };} }, { key: "_onAnonymousConverted", value: function _onAnonymousConverted(e) {var t = e.data.env;t === this.config.env && this._cache.updatePersistence(this.config.persistence);} }, { key: "_onLoginTypeChanged", value: function _onLoginTypeChanged(e) {var _e$data = e.data,t = _e$data.loginType,n = _e$data.persistence,s = _e$data.env;s === this.config.env && (this._cache.updatePersistence(n), this._cache.setStore(this._cache.keys.loginTypeKey, t));} }, { key: "currentUser", get: function get() {var e = this.hasLoginState();return e && e.user || null;} }, { key: "loginType", get: function get() {return this._cache.getStore(this._cache.keys.loginTypeKey);} }]);return Te;}();var Ae = function Ae(e, t) {t = t || N();var n = ge(this.config.env),s = e.cloudPath,r = e.filePath,o = e.onUploadProgress,_e$fileType = e.fileType,i = _e$fileType === void 0 ? "image" : _e$fileType;return n.send("storage.getUploadMetadata", { path: s }).then(function (e) {var _e$data2 = e.data,a = _e$data2.url,c = _e$data2.authorization,u = _e$data2.token,h = _e$data2.fileId,l = _e$data2.cosFileId,d = e.requestId,f = { key: s, signature: c, "x-cos-meta-fileid": l, success_action_status: "201", "x-cos-security-token": u };n.upload({ url: a, data: f, file: r, name: s, fileType: i, onUploadProgress: o }).then(function (e) {201 === e.statusCode ? t(null, { fileID: h, requestId: d }) : t(new Error("STORAGE_REQUEST_FAIL: ".concat(e.data)));}).catch(function (e) {t(e);});}).catch(function (e) {t(e);}), t.promise;},Pe = function Pe(e, t) {t = t || N();var n = ge(this.config.env),s = e.cloudPath;return n.send("storage.getUploadMetadata", { path: s }).then(function (e) {t(null, e);}).catch(function (e) {t(e);}), t.promise;},Ie = function Ie(_ref5, t) {var e = _ref5.fileList;if (t = t || N(), !e || !Array.isArray(e)) return { code: "INVALID_PARAM", message: "fileList必须是非空的数组" };var _iterator3 = _createForOfIteratorHelper(e),_step3;try {for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {var _t7 = _step3.value;if (!_t7 || "string" != typeof _t7) return { code: "INVALID_PARAM", message: "fileList的元素必须是非空的字符串" };}} catch (err) {_iterator3.e(err);} finally {_iterator3.f();}var n = { fileid_list: e };return ge(this.config.env).send("storage.batchDeleteFile", n).then(function (e) {e.code ? t(null, e) : t(null, { fileList: e.data.delete_list, requestId: e.requestId });}).catch(function (e) {t(e);}), t.promise;},be = function be(_ref6, t) {var e = _ref6.fileList;t = t || N(), e && Array.isArray(e) || t(null, { code: "INVALID_PARAM", message: "fileList必须是非空的数组" });var n = [];var _iterator4 = _createForOfIteratorHelper(e),_step4;try {for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {var _s6 = _step4.value;"object" == typeof _s6 ? (_s6.hasOwnProperty("fileID") && _s6.hasOwnProperty("maxAge") || t(null, { code: "INVALID_PARAM", message: "fileList的元素必须是包含fileID和maxAge的对象" }), n.push({ fileid: _s6.fileID, max_age: _s6.maxAge })) : "string" == typeof _s6 ? n.push({ fileid: _s6 }) : t(null, { code: "INVALID_PARAM", message: "fileList的元素必须是字符串" });}} catch (err) {_iterator4.e(err);} finally {_iterator4.f();}var s = { file_list: n };return ge(this.config.env).send("storage.batchGetDownloadUrl", s).then(function (e) {e.code ? t(null, e) : t(null, { fileList: e.data.download_list, requestId: e.requestId });}).catch(function (e) {t(e);}), t.promise;},Oe = /*#__PURE__*/function () {var _ref8 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee29(_ref7, t) {var e, n, s, r;return _regenerator.default.wrap(function _callee29$(_context29) {while (1) {switch (_context29.prev = _context29.next) {case 0:e = _ref7.fileID;_context29.next = 3;return be.call(this, { fileList: [{ fileID: e, maxAge: 600 }] });case 3:n = _context29.sent.fileList[0];if (!("SUCCESS" !== n.code)) {_context29.next = 6;break;}return _context29.abrupt("return", t ? t(n) : new Promise(function (e) {e(n);}));case 6:s = ge(this.config.env);r = n.download_url;if (!(r = encodeURI(r), !t)) {_context29.next = 10;break;}return _context29.abrupt("return", s.download({ url: r }));case 10:_context29.t0 = t;_context29.next = 13;return s.download({ url: r });case 13:_context29.t1 = _context29.sent;(0, _context29.t0)(_context29.t1);case 15:case "end":return _context29.stop();}}}, _callee29, this);}));return function Oe(_x26, _x27) {return _ref8.apply(this, arguments);};}(),Ee = function Ee(_ref9, o) {var e = _ref9.name,t = _ref9.data,n = _ref9.query,s = _ref9.parse,r = _ref9.search;var i = o || N();var a;try {a = t ? JSON.stringify(t) : "";} catch (e) {return Promise.reject(e);}if (!e) return Promise.reject(new Error("函数名不能为空"));var c = { inQuery: n, parse: s, search: r, function_name: e, request_data: a };return ge(this.config.env).send("functions.invokeFunction", c).then(function (e) {if (e.code) i(null, e);else {var _t8 = e.data.response_data;if (s) i(null, { result: _t8, requestId: e.requestId });else try {_t8 = JSON.parse(e.data.response_data), i(null, { result: _t8, requestId: e.requestId });} catch (e) {i(new Error("response data must be json"));}}return i.promise;}).catch(function (e) {i(e);}), i.promise;},Ce = { timeout: 15e3, persistence: "session" },Ue = {};var xe = /*#__PURE__*/function () {function xe(e) {_classCallCheck(this, xe);this.config = e || this.config, this.authObj = void 0;}_createClass(xe, [{ key: "init", value: function init(e) {switch (K.adapter || (this.requestClient = new K.adapter.reqClass({ timeout: e.timeout || 5e3, timeoutMsg: "\u8BF7\u6C42\u5728".concat((e.timeout || 5e3) / 1e3, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD") })), this.config = _objectSpread(_objectSpread({}, Ce), e), !0) {case this.config.timeout > 6e5:console.warn("timeout大于可配置上限[10分钟],已重置为上限数值"), this.config.timeout = 6e5;break;case this.config.timeout < 100:console.warn("timeout小于可配置下限[100ms],已重置为下限数值"), this.config.timeout = 100;}return new xe(this.config);} }, { key: "auth", value: function auth() {var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},e = _ref10.persistence;if (this.authObj) return this.authObj;var t = e || K.adapter.primaryStorage || Ce.persistence;var n;return t !== this.config.persistence && (this.config.persistence = t), function (e) {var t = e.env;V[t] = new J(e), Y[t] = new J(_objectSpread(_objectSpread({}, e), {}, { persistence: "local" }));}(this.config), n = this.config, pe[n.env] = new fe(n), this.authObj = new Te(this.config), this.authObj;} }, { key: "on", value: function on(e, t) {return ee.apply(this, [e, t]);} }, { key: "off", value: function off(e, t) {return ne.apply(this, [e, t]);} }, { key: "callFunction", value: function callFunction(e, t) {return Ee.apply(this, [e, t]);} }, { key: "deleteFile", value: function deleteFile(e, t) {return Ie.apply(this, [e, t]);} }, { key: "getTempFileURL", value: function getTempFileURL(e, t) {return be.apply(this, [e, t]);} }, { key: "downloadFile", value: function downloadFile(e, t) {return Oe.apply(this, [e, t]);} }, { key: "uploadFile", value: function uploadFile(e, t) {return Ae.apply(this, [e, t]);} }, { key: "getUploadMetadata", value: function getUploadMetadata(e, t) {return Pe.apply(this, [e, t]);} }, { key: "registerExtension", value: function registerExtension(e) {Ue[e.name] = e;} }, { key: "invokeExtension", value: function () {var _invokeExtension = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee30(e, t) {var n;return _regenerator.default.wrap(function _callee30$(_context30) {while (1) {switch (_context30.prev = _context30.next) {case 0:n = Ue[e];if (n) {_context30.next = 3;break;}throw Error("\u6269\u5C55".concat(e, " \u5FC5\u987B\u5148\u6CE8\u518C"));case 3:_context30.next = 5;return n.invoke(t, this);case 5:return _context30.abrupt("return", _context30.sent);case 6:case "end":return _context30.stop();}}}, _callee30, this);}));function invokeExtension(_x28, _x29) {return _invokeExtension.apply(this, arguments);}return invokeExtension;}() }, { key: "useAdapters", value: function useAdapters(e) {var _ref11 = B(e) || {},t = _ref11.adapter,n = _ref11.runtime;t && (K.adapter = t), n && (K.runtime = n);} }]);return xe;}();var De = new xe();function qe(e, t, n) {void 0 === n && (n = {});var s = /\?/.test(t),r = "";for (var o in n) {"" === r ? !s && (t += "?") : r += "&", r += o + "=" + encodeURIComponent(n[o]);}return /^http(s)?:\/\//.test(t += r) ? t : "" + e + t;}var Re = /*#__PURE__*/function () {function Re() {_classCallCheck(this, Re);}_createClass(Re, [{ key: "post", value: function post(e) {var t = e.url,n = e.data,s = e.headers;return new Promise(function (e, r) {C.request({ url: qe("https:", t), data: n, method: "POST", header: s, success: function success(t) {e(t);}, fail: function fail(e) {r(e);} });});} }, { key: "upload", value: function upload(e) {return new Promise(function (t, n) {var s = e.url,r = e.file,o = e.data,i = e.headers,a = e.fileType,c = C.uploadFile({ url: qe("https:", s), name: "file", formData: Object.assign({}, o), filePath: r, fileType: a, header: i, success: function success(e) {var n = { statusCode: e.statusCode, data: e.data || {} };200 === e.statusCode && o.success_action_status && (n.statusCode = parseInt(o.success_action_status, 10)), t(n);}, fail: function fail(e) {l && "mp-alipay" === d && console.warn("支付宝小程序开发工具上传腾讯云时无法准确判断是否上传成功,请使用真机测试"), n(new Error(e.errMsg || "uploadFile:fail"));} });"function" == typeof e.onUploadProgress && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (t) {e.onUploadProgress({ loaded: t.totalBytesSent, total: t.totalBytesExpectedToSend });});});} }]);return Re;}();var Le = { setItem: function setItem(e, t) {C.setStorageSync(e, t);}, getItem: function getItem(e) {return C.getStorageSync(e);}, removeItem: function removeItem(e) {C.removeStorageSync(e);}, clear: function clear() {C.clearStorageSync();} };var Fe = { genAdapter: function genAdapter() {return { root: {}, reqClass: Re, localStorage: Le, primaryStorage: "local" };}, isMatch: function isMatch() {return !0;}, runtime: "uni_app" };De.useAdapters(Fe);var Ne = De,$e = Ne.init;Ne.init = function (e) {e.env = e.spaceId;var t = $e.call(this, e);t.config.provider = "tencent", t.config.spaceId = e.spaceId;var n = t.auth;return t.auth = function (e) {var t = n.call(this, e);return ["linkAndRetrieveDataWithTicket", "signInAnonymously", "signOut", "getAccessToken", "getLoginState", "signInWithTicket", "getUserInfo"].forEach(function (e) {t[e] = P(t[e]).bind(t);}), t;}, t.customAuth = t.auth, t;};var je = Ne;function Me() {return { token: C.getStorageSync("uni_id_token") || C.getStorageSync("uniIdToken"), tokenExpired: C.getStorageSync("uni_id_token_expired") };}function Be() {if (!l || "h5" !== d) return;uni.getStorageSync("__LAST_DCLOUD_APPID") !== m && (uni.setStorageSync("__LAST_DCLOUD_APPID", m), console.warn("检测到当前项目与上次运行到此端口的项目不一致,自动清理uni-id保存的token信息(仅开发调试时生效)"), C.removeStorageSync("uni_id_token"), C.removeStorageSync("uniIdToken"), C.removeStorageSync("uni_id_token_expired"));}var Ke = /*#__PURE__*/function (_D) {_inherits(Ke, _D);var _super8 = _createSuper(Ke);function Ke() {_classCallCheck(this, Ke);return _super8.apply(this, arguments);}_createClass(Ke, [{ key: "getAccessToken", value: function getAccessToken() {var _this12 = this;return new Promise(function (e, t) {var n = "Anonymous_Access_token";_this12.setAccessToken(n), e(n);});} }, { key: "setupRequest", value: function setupRequest(e, t) {var n = Object.assign({}, e, { spaceId: this.config.spaceId, timestamp: Date.now() }),s = { "Content-Type": "application/json" };"auth" !== t && (n.token = this.accessToken, s["x-basement-token"] = this.accessToken), s["x-serverless-sign"] = E.sign(n, this.config.clientSecret);var r = O();s["x-client-info"] = JSON.stringify(r);var _Me = Me(),o = _Me.token;return s["x-client-token"] = o, { url: this.config.requestUrl, method: "POST", data: n, dataType: "json", header: JSON.parse(JSON.stringify(s)) };} }, { key: "uploadFileToOSS", value: function uploadFileToOSS(_ref12) {var _this13 = this;var e = _ref12.url,t = _ref12.formData,n = _ref12.name,s = _ref12.filePath,r = _ref12.fileType,o = _ref12.onUploadProgress;return new Promise(function (i, a) {var c = _this13.adapter.uploadFile({ url: e, formData: t, name: n, filePath: s, fileType: r, success: function success(e) {e && e.statusCode < 400 ? i(e) : a(new I({ code: "UPLOAD_FAILED", message: "文件上传失败" }));}, fail: function fail(e) {a(new I({ code: e.code || "UPLOAD_FAILED", message: e.message || e.errMsg || "文件上传失败" }));} });"function" == typeof o && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (e) {o({ loaded: e.totalBytesSent, total: e.totalBytesExpectedToSend });});});} }, { key: "uploadFile", value: function uploadFile(_ref13) {var _this14 = this;var e = _ref13.filePath,t = _ref13.cloudPath,_ref13$fileType = _ref13.fileType,n = _ref13$fileType === void 0 ? "image" : _ref13$fileType,s = _ref13.onUploadProgress;if (!t) throw new I({ code: "CLOUDPATH_REQUIRED", message: "cloudPath不可为空" });var r;return this.getOSSUploadOptionsFromPath({ cloudPath: t }).then(function (t) {var _t$result = t.result,o = _t$result.url,i = _t$result.formData,a = _t$result.name;r = t.result.fileUrl;var c = { url: o, formData: i, name: a, filePath: e, fileType: n };return _this14.uploadFileToOSS(Object.assign({}, c, { onUploadProgress: s }));}).then(function () {return _this14.reportOSSUpload({ cloudPath: t });}).then(function (t) {return new Promise(function (n, s) {t.success ? n({ success: !0, filePath: e, fileID: r }) : s(new I({ code: "UPLOAD_FAILED", message: "文件上传失败" }));});});} }, { key: "deleteFile", value: function deleteFile(_ref14) {var e = _ref14.fileList;var t = { method: "serverless.file.resource.delete", params: JSON.stringify({ fileList: e }) };return this.request(this.setupRequest(t));} }, { key: "getTempFileURL", value: function getTempFileURL() {var _ref15 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},e = _ref15.fileList;var t = { method: "serverless.file.resource.getTempFileURL", params: JSON.stringify({ fileList: e }) };return this.request(this.setupRequest(t));} }]);return Ke;}(D);var He = { init: function init(e) {var t = new Ke(e),n = { signInAnonymously: function signInAnonymously() {return t.authorize();}, getLoginState: function getLoginState() {return Promise.resolve(!1);} };return t.auth = function () {return n;}, t.customAuth = t.auth, t;} };function We(_ref16) {var e = _ref16.data;var t;t = O();var n = JSON.parse(JSON.stringify(e || {}));if (Object.assign(n, { clientInfo: t }), !n.uniIdToken) {var _Me2 = Me(),_e17 = _Me2.token;_e17 && (n.uniIdToken = _e17);}return n;}function ze(_ref17) {var _this15 = this;var e = _ref17.name,t = _ref17.data;var n = this.localAddress,s = this.localPort,r = { aliyun: "aliyun", tencent: "tcb" }[this.config.provider],o = this.config.spaceId,i = "http://".concat(n, ":").concat(s, "/system/check-function"),a = "http://".concat(n, ":").concat(s, "/cloudfunctions/").concat(e);return new Promise(function (t, n) {C.request({ method: "POST", url: i, data: { name: e, platform: d, provider: r, spaceId: o }, timeout: 3e3, success: function success(e) {t(e);}, fail: function fail() {t({ data: { code: "NETWORK_ERROR", message: "连接本地调试服务失败,请检查客户端是否和主机在同一局域网下,自动切换为已部署的云函数。" } });} });}).then(function () {var _ref18 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},e = _ref18.data;var _ref19 = e || {},t = _ref19.code,n = _ref19.message;return { code: 0 === t ? 0 : t || "SYS_ERR", message: n || "SYS_ERR" };}).then(function (_ref20) {var n = _ref20.code,s = _ref20.message;if (0 !== n) {switch (n) {case "MODULE_ENCRYPTED":console.error("\u6B64\u4E91\u51FD\u6570\uFF08".concat(e, "\uFF09\u4F9D\u8D56\u52A0\u5BC6\u516C\u5171\u6A21\u5757\u4E0D\u53EF\u672C\u5730\u8C03\u8BD5\uFF0C\u81EA\u52A8\u5207\u6362\u4E3A\u4E91\u7AEF\u5DF2\u90E8\u7F72\u7684\u4E91\u51FD\u6570"));break;case "FUNCTION_ENCRYPTED":console.error("\u6B64\u4E91\u51FD\u6570\uFF08".concat(e, "\uFF09\u5DF2\u52A0\u5BC6\u4E0D\u53EF\u672C\u5730\u8C03\u8BD5\uFF0C\u81EA\u52A8\u5207\u6362\u4E3A\u4E91\u7AEF\u5DF2\u90E8\u7F72\u7684\u4E91\u51FD\u6570"));break;case "ACTION_ENCRYPTED":console.error(s || "需要访问加密的uni-clientDB-action,自动切换为云端环境");break;case "NETWORK_ERROR":{var _e18 = "连接本地调试服务失败,请检查客户端是否和主机在同一局域网下";throw console.error(_e18), new Error(_e18);}case "SWITCH_TO_CLOUD":break;default:{var _e19 = "\u68C0\u6D4B\u672C\u5730\u8C03\u8BD5\u670D\u52A1\u51FA\u73B0\u9519\u8BEF\uFF1A".concat(s, "\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u73AF\u5883\u6216\u91CD\u542F\u5BA2\u6237\u7AEF\u518D\u8BD5");throw console.error(_e19), new Error(_e19);}}return _this15._originCallFunction({ name: e, data: t });}return new Promise(function (e, n) {var s = We.call(_this15, { data: t });C.request({ method: "POST", url: a, data: { provider: r, platform: d, param: s }, success: function success() {var _ref21 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},t = _ref21.statusCode,s = _ref21.data;return !t || t >= 400 ? n(new I({ code: s.code || "SYS_ERR", message: s.message || "request:fail" })) : e({ result: s });}, fail: function fail(e) {n(new I({ code: e.code || e.errCode || "SYS_ERR", message: e.message || e.errMsg || "request:fail" }));} });});});}var Je = [{ rule: /fc_function_not_found|FUNCTION_NOT_FOUND/, content: ",云函数[{functionName}]在云端不存在,请检查此云函数名称是否正确以及该云函数是否已上传到服务空间", mode: "append" }];var Ve = /[\\^$.*+?()[\]{}|]/g,Ye = RegExp(Ve.source);function Xe(e, t, n) {return e.replace(new RegExp((s = t) && Ye.test(s) ? s.replace(Ve, "\\$&") : s, "g"), n);var s;}function Ge(_ref22) {var e = _ref22.functionName,t = _ref22.result,n = _ref22.logPvd;if (this.config.useDebugFunction && t && t.requestId) {var _s7 = JSON.stringify({ spaceId: this.config.spaceId, functionName: e, requestId: t.requestId });console.log("[".concat(n, "-request]").concat(_s7, "[/").concat(n, "-request]"));}}function Qe(e) {var t = e.callFunction,n = function n(_n4) {var _this16 = this;var s = _n4.name;_n4.data = We.call(e, { data: _n4.data });var r = { aliyun: "aliyun", tencent: "tcb" }[this.config.provider];return t.call(this, _n4).then(function (e) {return Ge.call(_this16, { functionName: s, result: e, logPvd: r }), Promise.resolve(e);}, function (e) {return Ge.call(_this16, { functionName: s, result: e, logPvd: r }), e && e.message && (e.message = function () {var _ref23 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},_ref23$message = _ref23.message,e = _ref23$message === void 0 ? "" : _ref23$message,_ref23$extraInfo = _ref23.extraInfo,t = _ref23$extraInfo === void 0 ? {} : _ref23$extraInfo,_ref23$formatter = _ref23.formatter,n = _ref23$formatter === void 0 ? [] : _ref23$formatter;for (var _s8 = 0; _s8 < n.length; _s8++) {var _n$_s = n[_s8],_r3 = _n$_s.rule,_o2 = _n$_s.content,i = _n$_s.mode,_a = e.match(_r3);if (!_a) continue;var _c = _o2;for (var _e20 = 1; _e20 < _a.length; _e20++) {_c = Xe(_c, "{$".concat(_e20, "}"), _a[_e20]);}for (var _e21 in t) {_c = Xe(_c, "{".concat(_e21, "}"), t[_e21]);}return "replace" === i ? _c : e + _c;}return e;}({ message: "[".concat(_n4.name, "]: ").concat(e.message), formatter: Je, extraInfo: { functionName: s } })), Promise.reject(e);});};e.callFunction = function (t) {var s;return l && e.debugInfo && !e.debugInfo.forceRemote && p ? (e._originCallFunction || (e._originCallFunction = n), s = ze.call(this, t)) : s = n.call(this, t), Object.defineProperty(s, "result", { get: function get() {return console.warn("当前返回结果为Promise类型,不可直接访问其result属性,详情请参考:https://uniapp.dcloud.net.cn/uniCloud/faq?id=promise"), {};} }), s;};}var Ze = Symbol("CLIENT_DB_INTERNAL");function et(e, t) {return e.then = "DoNotReturnProxyWithAFunctionNamedThen", e._internalType = Ze, e.__ob__ = void 0, new Proxy(e, { get: function get(e, n, s) {if ("_uniClient" === n) return null;if (n in e || "string" != typeof n) {var _t9 = e[n];return "function" == typeof _t9 ? _t9.bind(e) : _t9;}return t.get(e, n, s);} });}function tt(e) {return { on: function on(t, n) {e[t] = e[t] || [], e[t].indexOf(n) > -1 || e[t].push(n);}, off: function off(t, n) {e[t] = e[t] || [];var s = e[t].indexOf(n);-1 !== s && e[t].splice(s, 1);} };}var nt = ["db.Geo", "db.command", "command.aggregate"];function st(e, t) {return nt.indexOf("".concat(e, ".").concat(t)) > -1;}function rt(e) {switch (c(e)) {case "array":return e.map(function (e) {return rt(e);});case "object":return e._internalType === Ze || Object.keys(e).forEach(function (t) {e[t] = rt(e[t]);}), e;case "regexp":return { $regexp: { source: e.source, flags: e.flags } };case "date":return { $date: e.toISOString() };default:return e;}}var ot = /*#__PURE__*/function () {function ot(e, t, n) {_classCallCheck(this, ot);this.content = e, this.prevStage = t || null, this.udb = null, this._database = n;}_createClass(ot, [{ key: "toJSON", value: function toJSON() {var e = this;var t = [e.content];for (; e.prevStage;) {e = e.prevStage, t.push(e.content);}return { $db: t.reverse().map(function (e) {return { $method: e.$method, $param: rt(e.$param) };}) };} }, { key: "getAction", value: function getAction() {var e = this.toJSON().$db.find(function (e) {return "action" === e.$method;});return e && e.$param && e.$param[0];} }, { key: "getCommand", value: function getCommand() {return { $db: this.toJSON().$db.filter(function (e) {return "action" !== e.$method;}) };} }, { key: "get", value: function get() {return this._send("get", Array.from(arguments));} }, { key: "add", value: function add() {return this._send("add", Array.from(arguments));} }, { key: "remove", value: function remove() {return this._send("remove", Array.from(arguments));} }, { key: "update", value: function update() {return this._send("update", Array.from(arguments));} }, { key: "end", value: function end() {return this._send("end", Array.from(arguments));} }, { key: "set", value: function set() {throw new Error("clientDB禁止使用set方法");} }, { key: "_send", value: function _send(e, t) {var n = this.getAction(),s = this.getCommand();if (s.$db.push({ $method: e, $param: rt(t) }), l) {var _e22 = s.$db.find(function (e) {return "collection" === e.$method;}),_t10 = _e22 && _e22.$param;_t10 && 1 === _t10.length && "string" == typeof _e22.$param[0] && _e22.$param[0].indexOf(",") > -1 && console.warn("检测到使用JQL语法联表查询时,未使用getTemp先过滤主表数据,在主表数据量大的情况下可能会查询缓慢。\n- 如何优化请参考此文档:https://uniapp.dcloud.net.cn/uniCloud/jql?id=lookup-with-temp \n- 如果主表数据量很小请忽略此信息,项目发行时不会出现此提示。");}return this._database._callCloudFunction({ action: n, command: s });} }, { key: "useAggregate", get: function get() {var e = this,t = !1;for (; e.prevStage;) {e = e.prevStage;var _n5 = e.content.$method;if ("aggregate" === _n5 || "pipeline" === _n5) {t = !0;break;}}return t;} }, { key: "count", get: function get() {if (!this.useAggregate) return function () {return this._send("count", Array.from(arguments));};var e = this;return function () {return it({ $method: "count", $param: rt(Array.from(arguments)) }, e, this._database);};} }]);return ot;}();function it(e, t, n) {return et(new ot(e, t, n), { get: function get(e, t) {var s = "db";return e && e.content && (s = e.content.$method), st(s, t) ? it({ $method: t }, e, n) : function () {return it({ $method: t, $param: rt(Array.from(arguments)) }, e, n);};} });}function at(_ref24) {var e = _ref24.path,t = _ref24.method;return /*#__PURE__*/function () {function _class2() {_classCallCheck(this, _class2);this.param = Array.from(arguments);}_createClass(_class2, [{ key: "toJSON", value: function toJSON() {return { $newDb: [].concat(_toConsumableArray(e.map(function (e) {return { $method: e };})), [{ $method: t, $param: this.param }]) };} }]);return _class2;}();}var ct = /*#__PURE__*/function (_ref25) {_inherits(ct, _ref25);var _super9 = _createSuper(ct);function ct() {_classCallCheck(this, ct);return _super9.apply(this, arguments);}_createClass(ct, [{ key: "_callCloudFunction", value: function _callCloudFunction(_ref26) {var _this17 = this;var e = _ref26.action,t = _ref26.command,n = _ref26.multiCommand,s = _ref26.queryList;function r(e, t) {if (n && s) for (var _n6 = 0; _n6 < s.length; _n6++) {var _r4 = s[_n6];_r4.udb && "function" == typeof _r4.udb.setResult && (t ? _r4.udb.setResult(t) : _r4.udb.setResult(e.result.dataList[_n6]));}}var o = T(A("database", "invoke")),i = this._uniClient;return o.then(function () {return i.callFunction({ name: "DCloud-clientDB", type: a, data: { action: e, command: t, multiCommand: n } });}).then(function (e) {var _e$result = e.result,t = _e$result.code,n = _e$result.message,s = _e$result.token,o = _e$result.tokenExpired,_e$result$systemInfo = _e$result.systemInfo,i = _e$result$systemInfo === void 0 ? [] : _e$result$systemInfo;if (i) for (var _e23 = 0; _e23 < i.length; _e23++) {var _i$_e = i[_e23],_t11 = _i$_e.level,_n7 = _i$_e.message,_s9 = _i$_e.detail,_r5 = console["app-plus" === d && "warn" === _t11 ? "error" : _t11] || console.log;var _o3 = "[System Info]" + _n7;_s9 && (_o3 = "".concat(_o3, "\n\u8BE6\u7EC6\u4FE1\u606F\uFF1A").concat(_s9)), _r5(_o3);}if (t) {var _s10 = new I({ message: n, code: t, requestId: e.requestId });return _this17._callback("error", [_s10]), Promise.reject(_s10);}s && o && (!function () {var _ref27 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},e = _ref27.token,t = _ref27.tokenExpired;e && C.setStorageSync("uni_id_token", e), t && C.setStorageSync("uni_id_token_expired", t);}({ token: s, tokenExpired: o }), _this17._callbackAuth("refreshToken", [{ token: s, tokenExpired: o }]), _this17._callback("refreshToken", [{ token: s, tokenExpired: o }]));var a = e.result.affectedDocs;return "number" == typeof a && Object.defineProperty(e.result, "affectedDocs", { get: function get() {return console.warn("affectedDocs不再推荐使用,请使用inserted/deleted/updated/data.length替代"), a;} }), T(A("database", "success"), e).then(function () {return T(A("database", "complete"), e);}).then(function () {return r(e, null), Promise.resolve(e);});}, function (e) {var t = new I({ code: e.code || "SYSTEM_ERROR", message: e.message, requestId: e.requestId });return _this17._callback("error", [t]), /fc_function_not_found|FUNCTION_NOT_FOUND/g.test(e.message) && console.warn("clientDB未初始化,请在web控制台保存一次schema以开启clientDB"), T(A("database", "fail"), e).then(function () {return T(A("database", "complete"), e);}).then(function () {return r(null, e), Promise.reject(e);});});} }]);return ct;}( /*#__PURE__*/function () {function _class3() {var _ref28 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},_ref28$uniClient = _ref28.uniClient,e = _ref28$uniClient === void 0 ? {} : _ref28$uniClient;_classCallCheck(this, _class3);this._uniClient = e, this._authCallBacks = {}, this._dbCallBacks = {}, e.isDefault && (this._dbCallBacks = _("_globalUniCloudDatabaseCallback")), this.auth = tt(this._authCallBacks), Object.assign(this, tt(this._dbCallBacks)), this.env = et({}, { get: function get(e, t) {return { $env: t };} }), this.Geo = et({}, { get: function get(e, t) {return at({ path: ["Geo"], method: t });} }), this.serverDate = at({ path: [], method: "serverDate" }), this.RegExp = at({ path: [], method: "RegExp" });}_createClass(_class3, [{ key: "getCloudEnv", value: function getCloudEnv(e) {if ("string" != typeof e || !e.trim()) throw new Error("getCloudEnv参数错误");return { $env: e.replace("$cloudEnv_", "") };} }, { key: "_callback", value: function _callback(e, t) {var n = this._dbCallBacks;n[e] && n[e].forEach(function (e) {e.apply(void 0, _toConsumableArray(t));});} }, { key: "_callbackAuth", value: function _callbackAuth(e, t) {var n = this._authCallBacks;n[e] && n[e].forEach(function (e) {e.apply(void 0, _toConsumableArray(t));});} }, { key: "multiSend", value: function multiSend() {var e = Array.from(arguments),t = e.map(function (e) {var t = e.getAction(),n = e.getCommand();if ("getTemp" !== n.$db[n.$db.length - 1].$method) throw new Error("multiSend只支持子命令内使用getTemp");return { action: t, command: n };});return this._callCloudFunction({ multiCommand: t, queryList: e });} }]);return _class3;}());function ut(e) {e.database = function (t) {if (t && Object.keys(t).length > 0) return e.init(t).database();if (this._database) return this._database;var n = function (e) {var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};return et(new e(t), { get: function get(e, t) {return st("db", t) ? it({ $method: t }, null, e) : function () {return it({ $method: t, $param: rt(Array.from(arguments)) }, null, e);};} });}(ct, { uniClient: e });return this._database = n, n;};}var ht;var lt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",dt = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;function ft() {var e = Me().token || "",t = e.split(".");if (!e || 3 !== t.length) return { uid: null, role: [], permission: [], tokenExpired: 0 };var n;try {n = JSON.parse((s = t[1], decodeURIComponent(ht(s).split("").map(function (e) {return "%" + ("00" + e.charCodeAt(0).toString(16)).slice(-2);}).join(""))));} catch (e) {throw new Error("获取当前用户信息出错,详细错误信息为:" + e.message);}var s;return n.tokenExpired = 1e3 * n.exp, delete n.exp, delete n.iat, n;}ht = "function" != typeof atob ? function (e) {if (e = String(e).replace(/[\t\n\f\r ]+/g, ""), !dt.test(e)) throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");var t;e += "==".slice(2 - (3 & e.length));for (var n, s, r = "", o = 0; o < e.length;) {t = lt.indexOf(e.charAt(o++)) << 18 | lt.indexOf(e.charAt(o++)) << 12 | (n = lt.indexOf(e.charAt(o++))) << 6 | (s = lt.indexOf(e.charAt(o++))), r += 64 === n ? String.fromCharCode(t >> 16 & 255) : 64 === s ? String.fromCharCode(t >> 16 & 255, t >> 8 & 255) : String.fromCharCode(t >> 16 & 255, t >> 8 & 255, 255 & t);}return r;} : atob;var pt = t(n(function (e, t) {Object.defineProperty(t, "__esModule", { value: !0 });var n = "chooseAndUploadFile:ok",s = "chooseAndUploadFile:fail";function r(e, t) {return e.tempFiles.forEach(function (e, n) {e.name || (e.name = e.path.substring(e.path.lastIndexOf("/") + 1)), t && (e.fileType = t), e.cloudPath = Date.now() + "_" + n + e.name.substring(e.name.lastIndexOf("."));}), e.tempFilePaths || (e.tempFilePaths = e.tempFiles.map(function (e) {return e.path;})), e;}function o(e, t, _ref29) {var s = _ref29.onChooseFile,r = _ref29.onUploadProgress;return t.then(function (e) {if (s) {var _t12 = s(e);if (void 0 !== _t12) return Promise.resolve(_t12).then(function (t) {return void 0 === t ? e : t;});}return e;}).then(function (t) {return !1 === t ? { errMsg: n, tempFilePaths: [], tempFiles: [] } : function (e, t) {var s = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;var r = arguments.length > 3 ? arguments[3] : undefined;(t = Object.assign({}, t)).errMsg = n;var o = t.tempFiles,i = o.length;var a = 0;return new Promise(function (n) {for (; a < s;) {c();}function c() {var s = a++;if (s >= i) return void (!o.find(function (e) {return !e.url && !e.errMsg;}) && n(t));var u = o[s];e.uploadFile({ filePath: u.path, cloudPath: u.cloudPath, fileType: u.fileType, onUploadProgress: function onUploadProgress(e) {e.index = s, e.tempFile = u, e.tempFilePath = u.path, r && r(e);} }).then(function (e) {u.url = e.fileID, s < i && c();}).catch(function (e) {u.errMsg = e.errMsg || e.message, s < i && c();});}});}(e, t, 5, r);});}t.initChooseAndUploadFile = function (e) {return function () {var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { type: "all" };return "image" === t.type ? o(e, function (e) {var t = e.count,n = e.sizeType,_e$sourceType = e.sourceType,o = _e$sourceType === void 0 ? ["album", "camera"] : _e$sourceType,i = e.extension;return new Promise(function (e, a) {uni.chooseImage({ count: t, sizeType: n, sourceType: o, extension: i, success: function success(t) {e(r(t, "image"));}, fail: function fail(e) {a({ errMsg: e.errMsg.replace("chooseImage:fail", s) });} });});}(t), t) : "video" === t.type ? o(e, function (e) {var t = e.camera,n = e.compressed,o = e.maxDuration,_e$sourceType2 = e.sourceType,i = _e$sourceType2 === void 0 ? ["album", "camera"] : _e$sourceType2,a = e.extension;return new Promise(function (e, c) {uni.chooseVideo({ camera: t, compressed: n, maxDuration: o, sourceType: i, extension: a, success: function success(t) {var n = t.tempFilePath,s = t.duration,o = t.size,i = t.height,a = t.width;e(r({ errMsg: "chooseVideo:ok", tempFilePaths: [n], tempFiles: [{ name: t.tempFile && t.tempFile.name || "", path: n, size: o, type: t.tempFile && t.tempFile.type || "", width: a, height: i, duration: s, fileType: "video", cloudPath: "" }] }, "video"));}, fail: function fail(e) {c({ errMsg: e.errMsg.replace("chooseVideo:fail", s) });} });});}(t), t) : o(e, function (e) {var t = e.count,n = e.extension;return new Promise(function (e, o) {var i = uni.chooseFile;if ("undefined" != typeof wx && "function" == typeof wx.chooseMessageFile && (i = wx.chooseMessageFile), "function" != typeof i) return o({ errMsg: s + " 请指定 type 类型,该平台仅支持选择 image 或 video。" });i({ type: "all", count: t, extension: n, success: function success(t) {e(r(t));}, fail: function fail(e) {o({ errMsg: e.errMsg.replace("chooseFile:fail", s) });} });});}(t), t);};};}));var gt = "manual";function mt(e) {return { props: { localdata: { type: Array, default: function _default() {return [];} }, options: { type: [Object, Array], default: function _default() {return {};} }, spaceInfo: { type: Object, default: function _default() {return {};} }, collection: { type: [String, Array], default: "" }, action: { type: String, default: "" }, field: { type: String, default: "" }, orderby: { type: String, default: "" }, where: { type: [String, Object], default: "" }, pageData: { type: String, default: "add" }, pageCurrent: { type: Number, default: 1 }, pageSize: { type: Number, default: 20 }, getcount: { type: [Boolean, String], default: !1 }, gettree: { type: [Boolean, String], default: !1 }, gettreepath: { type: [Boolean, String], default: !1 }, startwith: { type: String, default: "" }, limitlevel: { type: Number, default: 10 }, groupby: { type: String, default: "" }, groupField: { type: String, default: "" }, distinct: { type: [Boolean, String], default: !1 }, foreignKey: { type: String, default: "" }, loadtime: { type: String, default: "auto" }, manual: { type: Boolean, default: !1 } }, data: function data() {return { mixinDatacomLoading: !1, mixinDatacomHasMore: !1, mixinDatacomResData: [], mixinDatacomErrorMessage: "", mixinDatacomPage: {} };}, created: function created() {var _this18 = this;this.mixinDatacomPage = { current: this.pageCurrent, size: this.pageSize, count: 0 }, this.$watch(function () {var e = [];return ["pageCurrent", "pageSize", "localdata", "collection", "action", "field", "orderby", "where", "getont", "getcount", "gettree", "groupby", "groupField", "distinct"].forEach(function (t) {e.push(_this18[t]);}), e;}, function (e, t) {if (_this18.loadtime === gt) return;var n = !1;var s = [];for (var _r6 = 2; _r6 < e.length; _r6++) {e[_r6] !== t[_r6] && (s.push(e[_r6]), n = !0);}e[0] !== t[0] && (_this18.mixinDatacomPage.current = _this18.pageCurrent), _this18.mixinDatacomPage.size = _this18.pageSize, _this18.onMixinDatacomPropsChange(n, s);});}, methods: { onMixinDatacomPropsChange: function onMixinDatacomPropsChange(e, t) {}, mixinDatacomEasyGet: function mixinDatacomEasyGet() {var _this19 = this;var _ref30 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},_ref30$getone = _ref30.getone,e = _ref30$getone === void 0 ? !1 : _ref30$getone,t = _ref30.success,n = _ref30.fail;this.mixinDatacomLoading || (this.mixinDatacomLoading = !0, this.mixinDatacomErrorMessage = "", this.mixinDatacomGet().then(function (n) {_this19.mixinDatacomLoading = !1;var _n$result = n.result,s = _n$result.data,r = _n$result.count;_this19.getcount && (_this19.mixinDatacomPage.count = r), _this19.mixinDatacomHasMore = s.length < _this19.pageSize;var o = e ? s.length ? s[0] : void 0 : s;_this19.mixinDatacomResData = o, t && t(o);}).catch(function (e) {_this19.mixinDatacomLoading = !1, _this19.mixinDatacomErrorMessage = e, n && n(e);}));}, mixinDatacomGet: function mixinDatacomGet() {var _n8;var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};var n = e.database(this.spaceInfo);var s = t.action || this.action;s && (n = n.action(s));var r = t.collection || this.collection;n = Array.isArray(r) ? (_n8 = n).collection.apply(_n8, _toConsumableArray(r)) : n.collection(r);var o = t.where || this.where;o && Object.keys(o).length && (n = n.where(o));var i = t.field || this.field;i && (n = n.field(i));var a = t.foreignKey || this.foreignKey;a && (n = n.foreignKey(a));var c = t.groupby || this.groupby;c && (n = n.groupBy(c));var u = t.groupField || this.groupField;u && (n = n.groupField(u));!0 === (void 0 !== t.distinct ? t.distinct : this.distinct) && (n = n.distinct());var h = t.orderby || this.orderby;h && (n = n.orderBy(h));var l = void 0 !== t.pageCurrent ? t.pageCurrent : this.mixinDatacomPage.current,d = void 0 !== t.pageSize ? t.pageSize : this.mixinDatacomPage.size,f = void 0 !== t.getcount ? t.getcount : this.getcount,p = void 0 !== t.gettree ? t.gettree : this.gettree,g = void 0 !== t.gettreepath ? t.gettreepath : this.gettreepath,m = { getCount: f },y = { limitLevel: void 0 !== t.limitlevel ? t.limitlevel : this.limitlevel, startWith: void 0 !== t.startwith ? t.startwith : this.startwith };return p && (m.getTree = y), g && (m.getTreePath = y), n = n.skip(d * (l - 1)).limit(d).get(m), n;} } };}function yt(e) {return function (t) {var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};n = function (e) {var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};return e.customUI = t.customUI || e.customUI, Object.assign(e.loadingOptions, t.loadingOptions), Object.assign(e.errorOptions, t.errorOptions), e;}({ customUI: !1, loadingOptions: { text: "加载中...", mask: !0 }, errorOptions: { type: "modal", retry: !1 } }, n);var _n9 = n,s = _n9.customUI,r = _n9.loadingOptions,o = _n9.errorOptions,a = !s;return new Proxy({}, { get: function get(n, s) {return /*#__PURE__*/function () {var _n10 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee32() {var u,_len,c,_key,_ref31,h,l,_yield,_e25,_e24,_args32 = arguments;return _regenerator.default.wrap(function _callee32$(_context32) {while (1) {switch (_context32.prev = _context32.next) {case 0:a && uni.showLoading({ title: r.title, mask: r.mask });for (_len = _args32.length, c = new Array(_len), _key = 0; _key < _len; _key++) {c[_key] = _args32[_key];}_context32.prev = 2;_context32.next = 5;return e.callFunction({ name: t, type: i, data: { method: s, params: c } });case 5:u = _context32.sent;_context32.next = 11;break;case 8:_context32.prev = 8;_context32.t0 = _context32["catch"](2);u = { result: _context32.t0 };case 11:_ref31 = u.result || {}, h = _ref31.errCode, l = _ref31.errMsg;if (!(a && uni.hideLoading(), h)) {_context32.next = 28;break;}if (!a) {_context32.next = 26;break;}if (!("toast" === o.type)) {_context32.next = 18;break;}uni.showToast({ title: l, icon: "none" });_context32.next = 26;break;case 18:if (!("modal" !== o.type)) {_context32.next = 20;break;}throw new Error("Invalid errorOptions.type: ".concat(o.type));case 20:_context32.next = 22;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee31() {var _ref33,e,t,n,s,r,_args31 = arguments;return _regenerator.default.wrap(function _callee31$(_context31) {while (1) {switch (_context31.prev = _context31.next) {case 0:_ref33 = _args31.length > 0 && _args31[0] !== undefined ? _args31[0] : {}, e = _ref33.title, t = _ref33.content, n = _ref33.showCancel, s = _ref33.cancelText, r = _ref33.confirmText;return _context31.abrupt("return", new Promise(function (o, i) {uni.showModal({ title: e, content: t, showCancel: n, cancelText: s, confirmText: r, success: function success(e) {o(e);}, fail: function fail() {o({ confirm: !1, cancel: !0 });} });}));case 2:case "end":return _context31.stop();}}}, _callee31);}))({ title: "提示", content: l, showCancel: o.retry, cancelText: "取消", confirmText: o.retry ? "重试" : "确定" });case 22:_yield = _context32.sent;_e25 = _yield.confirm;if (!(o.retry && _e25)) {_context32.next = 26;break;}return _context32.abrupt("return", n.apply(void 0, c));case 26:_e24 = new I({ code: h, message: l, requestId: u.requestId });throw _e24.detail = u.result, _e24;case 28:return _context32.abrupt("return", u.result);case 29:case "end":return _context32.stop();}}}, _callee32, null, [[2, 8]]);}));function n() {return _n10.apply(this, arguments);}return n;}();} });};}function _t(_x30, _x31) {return _t13.apply(this, arguments);}function _t13() {_t13 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee34(e, t) {var n, _e28, s;return _regenerator.default.wrap(function _callee34$(_context34) {while (1) {switch (_context34.prev = _context34.next) {case 0:n = "http://".concat(e, ":").concat(t, "/system/ping");_context34.prev = 1;_context34.next = 4;return s = { url: n, timeout: 500 }, new Promise(function (e, t) {C.request(_objectSpread(_objectSpread({}, s), {}, { success: function success(t) {e(t);}, fail: function fail(e) {t(e);} }));});case 4:_e28 = _context34.sent;return _context34.abrupt("return", !(!_e28.data || 0 !== _e28.data.code));case 8:_context34.prev = 8;_context34.t0 = _context34["catch"](1);return _context34.abrupt("return", !1);case 11:case "end":return _context34.stop();}}}, _callee34, null, [[1, 8]]);}));return _t13.apply(this, arguments);}function wt(e) {if (e.initUniCloudStatus && "rejected" !== e.initUniCloudStatus) return;var t = Promise.resolve();var n;n = 1, t = new Promise(function (e, t) {setTimeout(function () {e();}, n);}), e.isReady = !1, e.isDefault = !1;var s = e.auth();e.initUniCloudStatus = "pending", e.initUniCloud = t.then(function () {return s.getLoginState();}).then(function (e) {return e ? Promise.resolve() : s.signInAnonymously();}).then(function () {if (!l) return Promise.resolve();if (l && e.debugInfo) {var _e$debugInfo = e.debugInfo,_t14 = _e$debugInfo.address,_n11 = _e$debugInfo.servePort;return function () {var _ref34 = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee33(e, t) {var n, _s11, _r7;return _regenerator.default.wrap(function _callee33$(_context33) {while (1) {switch (_context33.prev = _context33.next) {case 0:_s11 = 0;case 1:if (!(_s11 < e.length)) {_context33.next = 11;break;}_r7 = e[_s11];_context33.next = 5;return _t(_r7, t);case 5:if (!_context33.sent) {_context33.next = 8;break;}n = _r7;return _context33.abrupt("break", 11);case 8:_s11++;_context33.next = 1;break;case 11:return _context33.abrupt("return", { address: n, port: t });case 12:case "end":return _context33.stop();}}}, _callee33);}));return function (_x32, _x33) {return _ref34.apply(this, arguments);};}()(_t14, _n11);}}).then(function () {var _ref35 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},t = _ref35.address,n = _ref35.port;if (!l) return Promise.resolve();if (t) e.localAddress = t, e.localPort = n;else if (e.debugInfo) {var _t15 = console["app-plus" === d ? "error" : "warn"];var _n12 = "";"remote" === e.debugInfo.initialLaunchType ? (e.debugInfo.forceRemote = !0, _n12 = "当前客户端和HBuilderX不在同一局域网下(或其他网络原因无法连接HBuilderX),uniCloud本地调试服务不对当前客户端生效。\n- 如果不使用uniCloud本地调试服务,请直接忽略此信息。\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。\n- 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试\n- 检查系统防火墙是否拦截了HBuilderX自带的nodejs") : _n12 = "无法连接uniCloud本地调试服务,请检查当前客户端是否与主机在同一局域网下。\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。\n- 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试\n- 检查系统防火墙是否拦截了HBuilderX自带的nodejs", "h5" === d && (_n12 += "\n- 部分浏览器开启节流模式之后访问本地地址受限,请检查是否启用了节流模式"), _t15(_n12);}}).then(function () {Be(), e.isReady = !0, e.initUniCloudStatus = "fulfilled";}).catch(function (t) {console.error(t), e.initUniCloudStatus = "rejected";});}var kt = new ( /*#__PURE__*/function () {function _class4() {_classCallCheck(this, _class4);}_createClass(_class4, [{ key: "init", value: function init(e) {var t = {};var n = !1 !== e.debugFunction && l && ("h5" === d && navigator.userAgent.indexOf("HBuilderX") > 0 || "app-plus" === d);switch (e.provider) {case "tencent":t = je.init(Object.assign(e, { useDebugFunction: n }));break;case "aliyun":t = q.init(Object.assign(e, { useDebugFunction: n }));break;case "private":t = He.init(Object.assign(e, { useDebugFunction: n }));break;default:throw new Error("未提供正确的provider参数");}var s = f;l && s && !s.code && (t.debugInfo = s), wt(t), t.reInit = function () {wt(this);}, Qe(t), function (e) {var t = e.uploadFile;e.uploadFile = function (e) {return t.call(this, e);};}(t), ut(t), function (e) {e.getCurrentUserInfo = ft, e.chooseAndUploadFile = pt.initChooseAndUploadFile(e), Object.assign(e, { get mixinDatacom() {return mt(e);} }), e.importObject = yt(e);}(t);return ["callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "chooseAndUploadFile"].forEach(function (e) {if (!t[e]) return;var n = t[e];t[e] = function () {return t.reInit(), n.apply(t, Array.from(arguments));}, t[e] = P(t[e], e).bind(t);}), t.init = this.init, t;} }]);return _class4;}())();(function () {{var e = p;var t = {};if (1 === e.length) t = e[0], kt = kt.init(t), kt.isDefault = !0;else {var _t16 = ["auth", "callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "database", "getCurrentUSerInfo", "importObject"];var _n13;_n13 = e && e.length > 0 ? "应用有多个服务空间,请通过uniCloud.init方法指定要使用的服务空间" : g ? "应用未关联服务空间,请在uniCloud目录右键关联服务空间" : "uni-app cli项目内使用uniCloud需要使用HBuilderX的运行菜单运行项目,且需要在uniCloud目录关联服务空间", _t16.forEach(function (e) {kt[e] = function () {return console.error(_n13), Promise.reject(new I({ code: "SYS_ERR", message: _n13 }));};});}Object.assign(kt, { get mixinDatacom() {return mt(kt);} }), kt.addInterceptor = S, kt.removeInterceptor = v, l && "h5" === d && (window.uniCloud = kt);}})();var St = kt;exports.default = St;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 2), __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
+
+/***/ }),
+
+/***/ 133:
+/*!************************************************************!*\
+ !*** D:/项目/济南项目微信小程序/Jinan_app/pages.json?{"type":"stat"} ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _default = { "appid": "__UNI__915967A" };exports.default = _default;
+
+/***/ }),
+
+/***/ 134:
+/*!******************************************************************************************!*\
+ !*** D:/项目/济南项目微信小程序/Jinan_app/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js ***!
+ \******************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/*
+ * uCharts (R)
+ * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台
+ * Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved.
+ * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+ * 复制使用请保留本段注释,感谢支持开源!
+ *
+ * uCharts (R) 官方网站
+ * https://www.uCharts.cn
+ *
+ * 开源地址:
+ * https://gitee.com/uCharts/uCharts
+ *
+ * uni-app插件市场地址:
+ * http://ext.dcloud.net.cn/plugin?id=271
+ *
+ */
+
+Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;function _slicedToArray(arr, i) {return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();}function _nonIterableRest() {throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === "string") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === "Object" && o.constructor) n = o.constructor.name;if (n === "Map" || n === "Set") return Array.from(o);if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}function _iterableToArrayLimit(arr, i) {if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;var _arr = [];var _n = true;var _d = false;var _e = undefined;try {for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {_arr.push(_s.value);if (i && _arr.length === i) break;}} catch (err) {_d = true;_e = err;} finally {try {if (!_n && _i["return"] != null) _i["return"]();} finally {if (_d) throw _e;}}return _arr;}function _arrayWithHoles(arr) {if (Array.isArray(arr)) return arr;}
+
+var config = {
+ version: 'v2.4.3-20220505',
+ yAxisWidth: 15,
+ xAxisHeight: 22,
+ xAxisTextPadding: 3,
+ padding: [10, 10, 10, 10],
+ pixelRatio: 1,
+ rotate: false,
+ fontSize: 13,
+ fontColor: '#666666',
+ dataPointShape: ['circle', 'circle', 'circle', 'circle'],
+ color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],
+ linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'],
+ pieChartLinePadding: 15,
+ pieChartTextPadding: 5,
+ titleFontSize: 20,
+ subtitleFontSize: 15,
+ toolTipPadding: 3,
+ toolTipBackground: '#000000',
+ toolTipOpacity: 0.7,
+ toolTipLineHeight: 20,
+ radarLabelTextMargin: 13 };
+
+
+var assign = function assign(target) {for (var _len2 = arguments.length, varArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {varArgs[_key2 - 1] = arguments[_key2];}
+ if (target == null) {
+ throw new TypeError('[uCharts] Cannot convert undefined or null to object');
+ }
+ if (!varArgs || varArgs.length <= 0) {
+ return target;
+ }
+ // 深度合并对象
+ function deepAssign(obj1, obj2) {
+ for (var key in obj2) {
+ obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ?
+ deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];
+ }
+ return obj1;
+ }
+ varArgs.forEach(function (val) {
+ target = deepAssign(target, val);
+ });
+ return target;
+};
+
+var util = {
+ toFixed: function toFixed(num, limit) {
+ limit = limit || 2;
+ if (this.isFloat(num)) {
+ num = num.toFixed(limit);
+ }
+ return num;
+ },
+ isFloat: function isFloat(num) {
+ return num % 1 !== 0;
+ },
+ approximatelyEqual: function approximatelyEqual(num1, num2) {
+ return Math.abs(num1 - num2) < 1e-10;
+ },
+ isSameSign: function isSameSign(num1, num2) {
+ return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;
+ },
+ isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {
+ return this.isSameSign(p1.x, p2.x);
+ },
+ isCollision: function isCollision(obj1, obj2) {
+ obj1.end = {};
+ obj1.end.x = obj1.start.x + obj1.width;
+ obj1.end.y = obj1.start.y - obj1.height;
+ obj2.end = {};
+ obj2.end.x = obj2.start.x + obj2.width;
+ obj2.end.y = obj2.start.y - obj2.height;
+ var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;
+ return !flag;
+ } };
+
+
+//兼容H5点击事件
+function getH5Offset(e) {
+ e.mp = {
+ changedTouches: [] };
+
+ e.mp.changedTouches.push({
+ x: e.offsetX,
+ y: e.offsetY });
+
+ return e;
+}
+
+// hex 转 rgba
+function hexToRgb(hexValue, opc) {
+ var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
+ var hex = hexValue.replace(rgx, function (m, r, g, b) {
+ return r + r + g + g + b + b;
+ });
+ var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+ var r = parseInt(rgb[1], 16);
+ var g = parseInt(rgb[2], 16);
+ var b = parseInt(rgb[3], 16);
+ return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';
+}
+
+function findRange(num, type, limit) {
+ if (isNaN(num)) {
+ throw new Error('[uCharts] series数据需为Number格式');
+ }
+ limit = limit || 10;
+ type = type ? type : 'upper';
+ var multiple = 1;
+ while (limit < 1) {
+ limit *= 10;
+ multiple *= 10;
+ }
+ if (type === 'upper') {
+ num = Math.ceil(num * multiple);
+ } else {
+ num = Math.floor(num * multiple);
+ }
+ while (num % limit !== 0) {
+ if (type === 'upper') {
+ if (num == num + 1) {//修复数据值过大num++无效的bug by 向日葵 @xrk_jy
+ break;
+ }
+ num++;
+ } else {
+ num--;
+ }
+ }
+ return num / multiple;
+}
+
+function calCandleMA(dayArr, nameArr, colorArr, kdata) {
+ var seriesTemp = [];
+ for (var k = 0; k < dayArr.length; k++) {
+ var seriesItem = {
+ data: [],
+ name: nameArr[k],
+ color: colorArr[k] };
+
+ for (var i = 0, len = kdata.length; i < len; i++) {
+ if (i < dayArr[k]) {
+ seriesItem.data.push(null);
+ continue;
+ }
+ var sum = 0;
+ for (var j = 0; j < dayArr[k]; j++) {
+ sum += kdata[i - j][1];
+ }
+ seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));
+ }
+ seriesTemp.push(seriesItem);
+ }
+ return seriesTemp;
+}
+
+function calValidDistance(self, distance, chartData, config, opts) {
+ var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];
+ var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1);
+ if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
+ if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
+ dataChartWidth += (opts.extra.mount.widthRatio - 1) * chartData.eachSpacing;
+ }
+ var validDistance = distance;
+ if (distance >= 0) {
+ validDistance = 0;
+ self.uevent.trigger('scrollLeft');
+ self.scrollOption.position = 'left';
+ opts.xAxis.scrollPosition = 'left';
+ } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {
+ validDistance = dataChartAreaWidth - dataChartWidth;
+ self.uevent.trigger('scrollRight');
+ self.scrollOption.position = 'right';
+ opts.xAxis.scrollPosition = 'right';
+ } else {
+ self.scrollOption.position = distance;
+ opts.xAxis.scrollPosition = distance;
+ }
+ return validDistance;
+}
+
+function isInAngleRange(angle, startAngle, endAngle) {
+ function adjust(angle) {
+ while (angle < 0) {
+ angle += 2 * Math.PI;
+ }
+ while (angle > 2 * Math.PI) {
+ angle -= 2 * Math.PI;
+ }
+ return angle;
+ }
+ angle = adjust(angle);
+ startAngle = adjust(startAngle);
+ endAngle = adjust(endAngle);
+ if (startAngle > endAngle) {
+ endAngle += 2 * Math.PI;
+ if (angle < startAngle) {
+ angle += 2 * Math.PI;
+ }
+ }
+ return angle >= startAngle && angle <= endAngle;
+}
+
+function createCurveControlPoints(points, i) {
+ function isNotMiddlePoint(points, i) {
+ if (points[i - 1] && points[i + 1]) {
+ return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y,
+ points[i + 1].y);
+ } else {
+ return false;
+ }
+ }
+ function isNotMiddlePointX(points, i) {
+ if (points[i - 1] && points[i + 1]) {
+ return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x,
+ points[i + 1].x);
+ } else {
+ return false;
+ }
+ }
+ var a = 0.2;
+ var b = 0.2;
+ var pAx = null;
+ var pAy = null;
+ var pBx = null;
+ var pBy = null;
+ if (i < 1) {
+ pAx = points[0].x + (points[1].x - points[0].x) * a;
+ pAy = points[0].y + (points[1].y - points[0].y) * a;
+ } else {
+ pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;
+ pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;
+ }
+
+ if (i > points.length - 3) {
+ var last = points.length - 1;
+ pBx = points[last].x - (points[last].x - points[last - 1].x) * b;
+ pBy = points[last].y - (points[last].y - points[last - 1].y) * b;
+ } else {
+ pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;
+ pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;
+ }
+ if (isNotMiddlePoint(points, i + 1)) {
+ pBy = points[i + 1].y;
+ }
+ if (isNotMiddlePoint(points, i)) {
+ pAy = points[i].y;
+ }
+ if (isNotMiddlePointX(points, i + 1)) {
+ pBx = points[i + 1].x;
+ }
+ if (isNotMiddlePointX(points, i)) {
+ pAx = points[i].x;
+ }
+ if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {
+ pAy = points[i].y;
+ }
+ if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {
+ pBy = points[i + 1].y;
+ }
+ if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {
+ pAx = points[i].x;
+ }
+ if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {
+ pBx = points[i + 1].x;
+ }
+ return {
+ ctrA: {
+ x: pAx,
+ y: pAy },
+
+ ctrB: {
+ x: pBx,
+ y: pBy } };
+
+
+}
+
+
+function convertCoordinateOrigin(x, y, center) {
+ return {
+ x: center.x + x,
+ y: center.y - y };
+
+}
+
+function avoidCollision(obj, target) {
+ if (target) {
+ // is collision test
+ while (util.isCollision(obj, target)) {
+ if (obj.start.x > 0) {
+ obj.start.y--;
+ } else if (obj.start.x < 0) {
+ obj.start.y++;
+ } else {
+ if (obj.start.y > 0) {
+ obj.start.y++;
+ } else {
+ obj.start.y--;
+ }
+ }
+ }
+ }
+ return obj;
+}
+
+function fixPieSeries(series, opts, config) {
+ var pieSeriesArr = [];
+ if (series.length > 0 && series[0].data.constructor.toString().indexOf('Array') > -1) {
+ opts._pieSeries_ = series;
+ var oldseries = series[0].data;
+ for (var i = 0; i < oldseries.length; i++) {
+ oldseries[i].formatter = series[0].formatter;
+ oldseries[i].data = oldseries[i].value;
+ pieSeriesArr.push(oldseries[i]);
+ }
+ opts.series = pieSeriesArr;
+ } else {
+ pieSeriesArr = series;
+ }
+ return pieSeriesArr;
+}
+
+function fillSeries(series, opts, config) {
+ var index = 0;
+ for (var i = 0; i < series.length; i++) {
+ var item = series[i];
+ if (!item.color) {
+ item.color = config.color[index];
+ index = (index + 1) % config.color.length;
+ }
+ if (!item.linearIndex) {
+ item.linearIndex = i;
+ }
+ if (!item.index) {
+ item.index = 0;
+ }
+ if (!item.type) {
+ item.type = opts.type;
+ }
+ if (typeof item.show == "undefined") {
+ item.show = true;
+ }
+ if (!item.type) {
+ item.type = opts.type;
+ }
+ if (!item.pointShape) {
+ item.pointShape = "circle";
+ }
+ if (!item.legendShape) {
+ switch (item.type) {
+ case 'line':
+ item.legendShape = "line";
+ break;
+ case 'column':
+ case 'bar':
+ item.legendShape = "rect";
+ break;
+ case 'area':
+ case 'mount':
+ item.legendShape = "triangle";
+ break;
+ default:
+ item.legendShape = "circle";}
+
+ }
+ }
+ return series;
+}
+
+function fillCustomColor(linearType, customColor, series, config) {
+ var newcolor = customColor || [];
+ if (linearType == 'custom' && newcolor.length == 0) {
+ newcolor = config.linearColor;
+ }
+ if (linearType == 'custom' && newcolor.length < series.length) {
+ var chazhi = series.length - newcolor.length;
+ for (var i = 0; i < chazhi; i++) {
+ newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]);
+ }
+ }
+ return newcolor;
+}
+
+function getDataRange(minData, maxData) {
+ var limit = 0;
+ var range = maxData - minData;
+ if (range >= 10000) {
+ limit = 1000;
+ } else if (range >= 1000) {
+ limit = 100;
+ } else if (range >= 100) {
+ limit = 10;
+ } else if (range >= 10) {
+ limit = 5;
+ } else if (range >= 1) {
+ limit = 1;
+ } else if (range >= 0.1) {
+ limit = 0.1;
+ } else if (range >= 0.01) {
+ limit = 0.01;
+ } else if (range >= 0.001) {
+ limit = 0.001;
+ } else if (range >= 0.0001) {
+ limit = 0.0001;
+ } else if (range >= 0.00001) {
+ limit = 0.00001;
+ } else {
+ limit = 0.000001;
+ }
+ return {
+ minRange: findRange(minData, 'lower', limit),
+ maxRange: findRange(maxData, 'upper', limit) };
+
+}
+
+function measureText(text, fontSize, context) {
+ var width = 0;
+ text = String(text);
+
+
+
+ if (context !== false && context !== undefined && context.setFontSize && context.measureText) {
+ context.setFontSize(fontSize);
+ return context.measureText(text).width;
+ } else {
+ var text = text.split('');
+ for (var i = 0; i < text.length; i++) {
+ var item = text[i];
+ if (/[a-zA-Z]/.test(item)) {
+ width += 7;
+ } else if (/[0-9]/.test(item)) {
+ width += 5.5;
+ } else if (/\./.test(item)) {
+ width += 2.7;
+ } else if (/-/.test(item)) {
+ width += 3.25;
+ } else if (/:/.test(item)) {
+ width += 2.5;
+ } else if (/[\u4e00-\u9fa5]/.test(item)) {
+ width += 10;
+ } else if (/\(|\)/.test(item)) {
+ width += 3.73;
+ } else if (/\s/.test(item)) {
+ width += 2.5;
+ } else if (/%/.test(item)) {
+ width += 8;
+ } else {
+ width += 10;
+ }
+ }
+ return width * fontSize / 10;
+ }
+}
+
+function dataCombine(series) {
+ return series.reduce(function (a, b) {
+ return (a.data ? a.data : a).concat(b.data);
+ }, []);
+}
+
+function dataCombineStack(series, len) {
+ var sum = new Array(len);
+ for (var j = 0; j < sum.length; j++) {
+ sum[j] = 0;
+ }
+ for (var i = 0; i < series.length; i++) {
+ for (var j = 0; j < sum.length; j++) {
+ sum[j] += series[i].data[j];
+ }
+ }
+ return series.reduce(function (a, b) {
+ return (a.data ? a.data : a).concat(b.data).concat(sum);
+ }, []);
+}
+
+function getTouches(touches, opts, e) {
+ var x, y;
+ if (touches.clientX) {
+ if (opts.rotate) {
+ y = opts.height - touches.clientX * opts.pix;
+ x = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;
+ } else {
+ x = touches.clientX * opts.pix;
+ y = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;
+ }
+ } else {
+ if (opts.rotate) {
+ y = opts.height - touches.x * opts.pix;
+ x = touches.y * opts.pix;
+ } else {
+ x = touches.x * opts.pix;
+ y = touches.y * opts.pix;
+ }
+ }
+ return {
+ x: x,
+ y: y };
+
+}
+
+function getSeriesDataItem(series, index, group) {
+ var data = [];
+ var newSeries = [];
+ var indexIsArr = index.constructor.toString().indexOf('Array') > -1;
+ if (indexIsArr) {
+ var tempSeries = filterSeries(series);
+ for (var i = 0; i < group.length; i++) {
+ newSeries.push(tempSeries[group[i]]);
+ }
+ } else {
+ newSeries = series;
+ };
+ for (var _i = 0; _i < newSeries.length; _i++) {
+ var item = newSeries[_i];
+ var tmpindex = -1;
+ if (indexIsArr) {
+ tmpindex = index[_i];
+ } else {
+ tmpindex = index;
+ }
+ if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) {
+ var seriesItem = {};
+ seriesItem.color = item.color;
+ seriesItem.type = item.type;
+ seriesItem.style = item.style;
+ seriesItem.pointShape = item.pointShape;
+ seriesItem.disableLegend = item.disableLegend;
+ seriesItem.name = item.name;
+ seriesItem.show = item.show;
+ seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex];
+ data.push(seriesItem);
+ }
+ }
+ return data;
+}
+
+function getMaxTextListLength(list, fontSize, context) {
+ var lengthList = list.map(function (item) {
+ return measureText(item, fontSize, context);
+ });
+ return Math.max.apply(null, lengthList);
+}
+
+function getRadarCoordinateSeries(length) {
+ var eachAngle = 2 * Math.PI / length;
+ var CoordinateSeries = [];
+ for (var i = 0; i < length; i++) {
+ CoordinateSeries.push(eachAngle * i);
+ }
+ return CoordinateSeries.map(function (item) {
+ return -1 * item + Math.PI / 2;
+ });
+}
+
+function getToolTipData(seriesData, opts, index, group, categories) {
+ var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
+ var calPoints = opts.chartData.calPoints ? opts.chartData.calPoints : [];
+ var points = {};
+ if (group.length > 0) {
+ var filterPoints = [];
+ for (var i = 0; i < group.length; i++) {
+ filterPoints.push(calPoints[group[i]]);
+ }
+ points = filterPoints[0][index[0]];
+ } else {
+ for (var _i2 = 0; _i2 < calPoints.length; _i2++) {
+ if (calPoints[_i2][index]) {
+ points = calPoints[_i2][index];
+ break;
+ }
+ }
+ };
+ var textList = seriesData.map(function (item) {
+ var titleText = null;
+ if (opts.categories && opts.categories.length > 0) {
+ titleText = categories[index];
+ };
+ return {
+ text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data,
+ color: item.color };
+
+ });
+ var offset = {
+ x: Math.round(points.x),
+ y: Math.round(points.y) };
+
+ return {
+ textList: textList,
+ offset: offset };
+
+}
+
+function getMixToolTipData(seriesData, opts, index, categories) {
+ var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
+ var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2;
+ var textList = seriesData.map(function (item) {
+ return {
+ text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data,
+ color: item.color,
+ disableLegend: item.disableLegend ? true : false };
+
+ });
+ textList = textList.filter(function (item) {
+ if (item.disableLegend !== true) {
+ return item;
+ }
+ });
+ var offset = {
+ x: Math.round(points),
+ y: 0 };
+
+ return {
+ textList: textList,
+ offset: offset };
+
+}
+
+function getCandleToolTipData(series, seriesData, opts, index, categories, extra) {
+ var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
+ var calPoints = opts.chartData.calPoints;
+ var upColor = extra.color.upFill;
+ var downColor = extra.color.downFill;
+ //颜色顺序为开盘,收盘,最低,最高
+ var color = [upColor, upColor, downColor, upColor];
+ var textList = [];
+ seriesData.map(function (item) {
+ if (index == 0) {
+ if (item.data[1] - item.data[0] < 0) {
+ color[1] = downColor;
+ } else {
+ color[1] = upColor;
+ }
+ } else {
+ if (item.data[0] < series[index - 1][1]) {
+ color[0] = downColor;
+ }
+ if (item.data[1] < item.data[0]) {
+ color[1] = downColor;
+ }
+ if (item.data[2] > series[index - 1][1]) {
+ color[2] = upColor;
+ }
+ if (item.data[3] < series[index - 1][1]) {
+ color[3] = downColor;
+ }
+ }
+ var text1 = {
+ text: '开盘:' + item.data[0],
+ color: color[0] };
+
+ var text2 = {
+ text: '收盘:' + item.data[1],
+ color: color[1] };
+
+ var text3 = {
+ text: '最低:' + item.data[2],
+ color: color[2] };
+
+ var text4 = {
+ text: '最高:' + item.data[3],
+ color: color[3] };
+
+ textList.push(text1, text2, text3, text4);
+ });
+ var validCalPoints = [];
+ var offset = {
+ x: 0,
+ y: 0 };
+
+ for (var i = 0; i < calPoints.length; i++) {
+ var points = calPoints[i];
+ if (typeof points[index] !== 'undefined' && points[index] !== null) {
+ validCalPoints.push(points[index]);
+ }
+ }
+ offset.x = Math.round(validCalPoints[0][0].x);
+ return {
+ textList: textList,
+ offset: offset };
+
+}
+
+function filterSeries(series) {
+ var tempSeries = [];
+ for (var i = 0; i < series.length; i++) {
+ if (series[i].show == true) {
+ tempSeries.push(series[i]);
+ }
+ }
+ return tempSeries;
+}
+
+function findCurrentIndex(currentPoints, calPoints, opts, config) {
+ var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+ var current = { index: -1, group: [] };
+ var spacing = opts.chartData.eachSpacing / 2;
+ var xAxisPoints = [];
+ if (calPoints && calPoints.length > 0) {
+ if (!opts.categories) {
+ spacing = 0;
+ } else {
+ for (var i = 1; i < opts.chartData.xAxisPoints.length; i++) {
+ xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing);
+ }
+ if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') {
+ xAxisPoints = opts.chartData.xAxisPoints;
+ }
+ }
+ if (isInExactChartArea(currentPoints, opts, config)) {
+ if (!opts.categories) {
+ var timePoints = Array(calPoints.length);
+ for (var _i3 = 0; _i3 < calPoints.length; _i3++) {
+ timePoints[_i3] = Array(calPoints[_i3].length);
+ for (var j = 0; j < calPoints[_i3].length; j++) {
+ timePoints[_i3][j] = Math.abs(calPoints[_i3][j].x - currentPoints.x);
+ }
+ };
+ var pointValue = Array(timePoints.length);
+ var pointIndex = Array(timePoints.length);
+ for (var _i4 = 0; _i4 < timePoints.length; _i4++) {
+ pointValue[_i4] = Math.min.apply(null, timePoints[_i4]);
+ pointIndex[_i4] = timePoints[_i4].indexOf(pointValue[_i4]);
+ }
+ var minValue = Math.min.apply(null, pointValue);
+ current.index = [];
+ for (var _i5 = 0; _i5 < pointValue.length; _i5++) {
+ if (pointValue[_i5] == minValue) {
+ current.group.push(_i5);
+ current.index.push(pointIndex[_i5]);
+ }
+ };
+ } else {
+ xAxisPoints.forEach(function (item, index) {
+ if (currentPoints.x + offset + spacing > item) {
+ current.index = index;
+ }
+ });
+ }
+ }
+ }
+ return current;
+}
+
+function findBarChartCurrentIndex(currentPoints, calPoints, opts, config) {
+ var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+ var current = { index: -1, group: [] };
+ var spacing = opts.chartData.eachSpacing / 2;
+ var yAxisPoints = opts.chartData.yAxisPoints;
+ if (calPoints && calPoints.length > 0) {
+ if (isInExactChartArea(currentPoints, opts, config)) {
+ yAxisPoints.forEach(function (item, index) {
+ if (currentPoints.y + offset + spacing > item) {
+ current.index = index;
+ }
+ });
+ }
+ }
+ return current;
+}
+
+function findLegendIndex(currentPoints, legendData, opts) {
+ var currentIndex = -1;
+ var gap = 0;
+ if (isInExactLegendArea(currentPoints, legendData.area)) {
+ var points = legendData.points;
+ var index = -1;
+ for (var i = 0, len = points.length; i < len; i++) {
+ var item = points[i];
+ for (var j = 0; j < item.length; j++) {
+ index += 1;
+ var area = item[j]['area'];
+ if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) {
+ currentIndex = index;
+ break;
+ }
+ }
+ }
+ return currentIndex;
+ }
+ return currentIndex;
+}
+
+function isInExactLegendArea(currentPoints, area) {
+ return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y;
+}
+
+function isInExactChartArea(currentPoints, opts, config) {
+ return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];
+}
+
+function findRadarChartCurrentIndex(currentPoints, radarData, count) {
+ var eachAngleArea = 2 * Math.PI / count;
+ var currentIndex = -1;
+ if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {
+ var fixAngle = function fixAngle(angle) {
+ if (angle < 0) {
+ angle += 2 * Math.PI;
+ }
+ if (angle > 2 * Math.PI) {
+ angle -= 2 * Math.PI;
+ }
+ return angle;
+ };
+ var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);
+ angle = -1 * angle;
+ if (angle < 0) {
+ angle += 2 * Math.PI;
+ }
+ var angleList = radarData.angleList.map(function (item) {
+ item = fixAngle(-1 * item);
+ return item;
+ });
+ angleList.forEach(function (item, index) {
+ var rangeStart = fixAngle(item - eachAngleArea / 2);
+ var rangeEnd = fixAngle(item + eachAngleArea / 2);
+ if (rangeEnd < rangeStart) {
+ rangeEnd += 2 * Math.PI;
+ }
+ if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) {
+ currentIndex = index;
+ }
+ });
+ }
+ return currentIndex;
+}
+
+function findFunnelChartCurrentIndex(currentPoints, funnelData) {
+ var currentIndex = -1;
+ for (var i = 0, len = funnelData.series.length; i < len; i++) {
+ var item = funnelData.series[i];
+ if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {
+ currentIndex = i;
+ break;
+ }
+ }
+ return currentIndex;
+}
+
+function findWordChartCurrentIndex(currentPoints, wordData) {
+ var currentIndex = -1;
+ for (var i = 0, len = wordData.length; i < len; i++) {
+ var item = wordData[i];
+ if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {
+ currentIndex = i;
+ break;
+ }
+ }
+ return currentIndex;
+}
+
+function findMapChartCurrentIndex(currentPoints, opts) {
+ var currentIndex = -1;
+ var cData = opts.chartData.mapData;
+ var data = opts.series;
+ var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset);
+ var poi = [tmp.x, tmp.y];
+ for (var i = 0, len = data.length; i < len; i++) {
+ var item = data[i].geometry.coordinates;
+ if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) {
+ currentIndex = i;
+ break;
+ }
+ }
+ return currentIndex;
+}
+
+function findRoseChartCurrentIndex(currentPoints, pieData, opts) {
+ var currentIndex = -1;
+ var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius);
+ if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {
+ var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);
+ angle = -angle;
+ if (opts.extra.rose && opts.extra.rose.offsetAngle) {
+ angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180;
+ }
+ for (var i = 0, len = series.length; i < len; i++) {
+ if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) {
+ currentIndex = i;
+ break;
+ }
+ }
+ }
+ return currentIndex;
+}
+
+function findPieChartCurrentIndex(currentPoints, pieData, opts) {
+ var currentIndex = -1;
+ var series = getPieDataPoints(pieData.series);
+ if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {
+ var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);
+ angle = -angle;
+ if (opts.extra.pie && opts.extra.pie.offsetAngle) {
+ angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180;
+ }
+ if (opts.extra.ring && opts.extra.ring.offsetAngle) {
+ angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180;
+ }
+ for (var i = 0, len = series.length; i < len; i++) {
+ if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) {
+ currentIndex = i;
+ break;
+ }
+ }
+ }
+ return currentIndex;
+}
+
+function isInExactPieChartArea(currentPoints, center, radius) {
+ return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);
+}
+
+
+function splitPoints(points, eachSeries) {
+ var newPoints = [];
+ var items = [];
+ points.forEach(function (item, index) {
+ if (eachSeries.connectNulls) {
+ if (item !== null) {
+ items.push(item);
+ }
+ } else {
+ if (item !== null) {
+ items.push(item);
+ } else {
+ if (items.length) {
+ newPoints.push(items);
+ }
+ items = [];
+ }
+ }
+
+ });
+ if (items.length) {
+ newPoints.push(items);
+ }
+ return newPoints;
+}
+
+
+function calLegendData(series, opts, config, chartData, context) {
+ var legendData = {
+ area: {
+ start: {
+ x: 0,
+ y: 0 },
+
+ end: {
+ x: 0,
+ y: 0 },
+
+ width: 0,
+ height: 0,
+ wholeWidth: 0,
+ wholeHeight: 0 },
+
+ points: [],
+ widthArr: [],
+ heightArr: [] };
+
+ if (opts.legend.show === false) {
+ chartData.legendData = legendData;
+ return legendData;
+ }
+ var padding = opts.legend.padding * opts.pix;
+ var margin = opts.legend.margin * opts.pix;
+ var fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize;
+ var shapeWidth = 15 * opts.pix;
+ var shapeRight = 5 * opts.pix;
+ var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);
+ if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
+ var legendList = [];
+ var widthCount = 0;
+ var widthCountArr = [];
+ var currentRow = [];
+ for (var i = 0; i < series.length; i++) {
+ var item = series[i];
+ var legendText = item.legendText ? item.legendText : item.name;
+ var itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;
+ if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) {
+ legendList.push(currentRow);
+ widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);
+ widthCount = itemWidth;
+ currentRow = [item];
+ } else {
+ widthCount += itemWidth;
+ currentRow.push(item);
+ }
+ }
+ if (currentRow.length) {
+ legendList.push(currentRow);
+ widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);
+ legendData.widthArr = widthCountArr;
+ var legendWidth = Math.max.apply(null, widthCountArr);
+ switch (opts.legend.float) {
+ case 'left':
+ legendData.area.start.x = opts.area[3];
+ legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding;
+ break;
+ case 'right':
+ legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding;
+ legendData.area.end.x = opts.width - opts.area[1];
+ break;
+ default:
+ legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;
+ legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;}
+
+ legendData.area.width = legendWidth + 2 * padding;
+ legendData.area.wholeWidth = legendWidth + 2 * padding;
+ legendData.area.height = legendList.length * lineHeight + 2 * padding;
+ legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;
+ legendData.points = legendList;
+ }
+ } else {
+ var len = series.length;
+ var maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding;
+ var maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);
+ legendData.area.height = maxLength * lineHeight + padding * 2;
+ legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;
+ switch (opts.legend.float) {
+ case 'top':
+ legendData.area.start.y = opts.area[0] + margin;
+ legendData.area.end.y = opts.area[0] + margin + legendData.area.height;
+ break;
+ case 'bottom':
+ legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height;
+ legendData.area.end.y = opts.height - opts.area[2] - margin;
+ break;
+ default:
+ legendData.area.start.y = (opts.height - legendData.area.height) / 2;
+ legendData.area.end.y = (opts.height + legendData.area.height) / 2;}
+
+ var lineNum = len % maxLength === 0 ? len / maxLength : Math.floor(len / maxLength + 1);
+ var _currentRow = [];
+ for (var _i6 = 0; _i6 < lineNum; _i6++) {
+ var temp = series.slice(_i6 * maxLength, _i6 * maxLength + maxLength);
+ _currentRow.push(temp);
+ }
+ legendData.points = _currentRow;
+ if (_currentRow.length) {
+ for (var _i7 = 0; _i7 < _currentRow.length; _i7++) {
+ var _item = _currentRow[_i7];
+ var maxWidth = 0;
+ for (var j = 0; j < _item.length; j++) {
+ var _itemWidth = shapeWidth + shapeRight + measureText(_item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;
+ if (_itemWidth > maxWidth) {
+ maxWidth = _itemWidth;
+ }
+ }
+ legendData.widthArr.push(maxWidth);
+ legendData.heightArr.push(_item.length * lineHeight + padding * 2);
+ }
+ var _legendWidth = 0;
+ for (var _i8 = 0; _i8 < legendData.widthArr.length; _i8++) {
+ _legendWidth += legendData.widthArr[_i8];
+ }
+ legendData.area.width = _legendWidth - opts.legend.itemGap * opts.pix + 2 * padding;
+ legendData.area.wholeWidth = legendData.area.width + padding;
+ }
+ }
+ switch (opts.legend.position) {
+ case 'top':
+ legendData.area.start.y = opts.area[0] + margin;
+ legendData.area.end.y = opts.area[0] + margin + legendData.area.height;
+ break;
+ case 'bottom':
+ legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin;
+ legendData.area.end.y = opts.height - opts.area[2] - margin;
+ break;
+ case 'left':
+ legendData.area.start.x = opts.area[3];
+ legendData.area.end.x = opts.area[3] + legendData.area.width;
+ break;
+ case 'right':
+ legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width;
+ legendData.area.end.x = opts.width - opts.area[1];
+ break;}
+
+ chartData.legendData = legendData;
+ return legendData;
+}
+
+function calCategoriesData(categories, opts, config, eachSpacing, context) {
+ var result = {
+ angle: 0,
+ xAxisHeight: config.xAxisHeight };
+
+ var fontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;
+ var categoriesTextLenth = categories.map(function (item, index) {
+ var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;
+ return measureText(String(xitem), fontSize, context);
+ });
+
+ var maxTextLength = Math.max.apply(this, categoriesTextLenth);
+ if (opts.xAxis.rotateLabel == true) {
+ result.angle = opts.xAxis.rotateAngle * Math.PI / 180;
+ var tempHeight = 2 * config.xAxisTextPadding + Math.abs(maxTextLength * Math.sin(result.angle));
+ tempHeight = tempHeight < fontSize + 2 * config.xAxisTextPadding ? tempHeight + 2 * config.xAxisTextPadding : tempHeight;
+ if (opts.enableScroll == true && opts.xAxis.scrollShow == true) {
+ tempHeight += 12 * opts.pix;
+ }
+ result.xAxisHeight = tempHeight;
+ }
+ if (opts.xAxis.disabled) {
+ result.xAxisHeight = 0;
+ }
+ return result;
+}
+
+function getXAxisTextList(series, opts, config, stack) {
+ var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;
+ var data;
+ if (stack == 'stack') {
+ data = dataCombineStack(series, opts.categories.length);
+ } else {
+ data = dataCombine(series);
+ }
+ var sorted = [];
+ // remove null from data
+ data = data.filter(function (item) {
+ //return item !== null;
+ if (typeof item === 'object' && item !== null) {
+ if (item.constructor.toString().indexOf('Array') > -1) {
+ return item !== null;
+ } else {
+ return item.value !== null;
+ }
+ } else {
+ return item !== null;
+ }
+ });
+ data.map(function (item) {
+ if (typeof item === 'object') {
+ if (item.constructor.toString().indexOf('Array') > -1) {
+ if (opts.type == 'candle') {
+ item.map(function (subitem) {
+ sorted.push(subitem);
+ });
+ } else {
+ sorted.push(item[0]);
+ }
+ } else {
+ sorted.push(item.value);
+ }
+ } else {
+ sorted.push(item);
+ }
+ });
+
+ var minData = 0;
+ var maxData = 0;
+ if (sorted.length > 0) {
+ minData = Math.min.apply(this, sorted);
+ maxData = Math.max.apply(this, sorted);
+ }
+ //为了兼容v1.9.0之前的项目
+ if (index > -1) {
+ if (typeof opts.xAxis.data[index].min === 'number') {
+ minData = Math.min(opts.xAxis.data[index].min, minData);
+ }
+ if (typeof opts.xAxis.data[index].max === 'number') {
+ maxData = Math.max(opts.xAxis.data[index].max, maxData);
+ }
+ } else {
+ if (typeof opts.xAxis.min === 'number') {
+ minData = Math.min(opts.xAxis.min, minData);
+ }
+ if (typeof opts.xAxis.max === 'number') {
+ maxData = Math.max(opts.xAxis.max, maxData);
+ }
+ }
+ if (minData === maxData) {
+ var rangeSpan = maxData || 10;
+ maxData += rangeSpan;
+ }
+ //var dataRange = getDataRange(minData, maxData);
+ var minRange = minData;
+ var maxRange = maxData;
+ var range = [];
+ var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;
+ for (var i = 0; i <= opts.xAxis.splitNumber; i++) {
+ range.push(minRange + eachRange * i);
+ }
+ return range;
+}
+
+function calXAxisData(series, opts, config, context) {
+ //堆叠图重算Y轴
+ var columnstyle = assign({}, {
+ type: "" },
+ opts.extra.bar);
+ var result = {
+ angle: 0,
+ xAxisHeight: config.xAxisHeight };
+
+ result.ranges = getXAxisTextList(series, opts, config, columnstyle.type);
+ result.rangesFormat = result.ranges.map(function (item) {
+ //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2);
+ item = util.toFixed(item, 2);
+ return item;
+ });
+ var xAxisScaleValues = result.ranges.map(function (item) {
+ // 如果刻度值是浮点数,则保留两位小数
+ item = util.toFixed(item, 2);
+ // 若有自定义格式则调用自定义的格式化函数
+ //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item;
+ return item;
+ });
+ result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config));
+ // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\结束点以及总长
+ var eachSpacing = result.eachSpacing;
+ var textLength = xAxisScaleValues.map(function (item) {
+ return measureText(item, opts.xAxis.fontSize * opts.pix || config.fontSize, context);
+ });
+ // get max length of categories text
+ var maxTextLength = Math.max.apply(this, textLength);
+ // 如果刻度值文本内容过长,则将其逆时针旋转45°
+ if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {
+ result.angle = 45 * Math.PI / 180;
+ result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);
+ }
+ if (opts.xAxis.disabled === true) {
+ result.xAxisHeight = 0;
+ }
+ return result;
+}
+
+function getRadarDataPoints(angleList, center, radius, series, opts) {
+ var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+ var radarOption = opts.extra.radar || {};
+ radarOption.max = radarOption.max || 0;
+ var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));
+ var data = [];var _loop2 = function _loop2(
+ i) {
+ var each = series[i];
+ var listItem = {};
+ listItem.color = each.color;
+ listItem.legendShape = each.legendShape;
+ listItem.pointShape = each.pointShape;
+ listItem.data = [];
+ each.data.forEach(function (item, index) {
+ var tmp = {};
+ tmp.angle = angleList[index];
+ tmp.proportion = item / maxData;
+ tmp.value = item;
+ tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center);
+ listItem.data.push(tmp);
+ });
+ data.push(listItem);};for (var i = 0; i < series.length; i++) {_loop2(i);
+ }
+ return data;
+}
+
+function getPieDataPoints(series, radius) {
+ var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+ var count = 0;
+ var _start_ = 0;
+ for (var i = 0; i < series.length; i++) {
+ var item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ count += item.data;
+ }
+ for (var _i9 = 0; _i9 < series.length; _i9++) {
+ var _item2 = series[_i9];
+ _item2.data = _item2.data === null ? 0 : _item2.data;
+ if (count === 0) {
+ _item2._proportion_ = 1 / series.length * process;
+ } else {
+ _item2._proportion_ = _item2.data / count * process;
+ }
+ _item2._radius_ = radius;
+ }
+ for (var _i10 = 0; _i10 < series.length; _i10++) {
+ var _item3 = series[_i10];
+ _item3._start_ = _start_;
+ _start_ += 2 * _item3._proportion_ * Math.PI;
+ }
+ return series;
+}
+
+function getFunnelDataPoints(series, radius, type, eachSpacing) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ series = series.sort(function (a, b) {
+ return parseInt(b.data) - parseInt(a.data);
+ });
+ for (var i = 0; i < series.length; i++) {
+ if (type == 'funnel') {
+ series[i].radius = series[i].data / series[0].data * radius * process;
+ } else {
+ series[i].radius = eachSpacing * (series.length - i) / (eachSpacing * series.length) * radius * process;
+ }
+ series[i]._proportion_ = series[i].data / series[0].data;
+ }
+ if (type !== 'pyramid') {
+ series.reverse();
+ }
+ return series;
+}
+
+function getRoseDataPoints(series, type, minRadius, radius) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var count = 0;
+ var _start_ = 0;
+ var dataArr = [];
+ for (var i = 0; i < series.length; i++) {
+ var item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ count += item.data;
+ dataArr.push(item.data);
+ }
+ var minData = Math.min.apply(null, dataArr);
+ var maxData = Math.max.apply(null, dataArr);
+ var radiusLength = radius - minRadius;
+ for (var _i11 = 0; _i11 < series.length; _i11++) {
+ var _item4 = series[_i11];
+ _item4.data = _item4.data === null ? 0 : _item4.data;
+ if (count === 0) {
+ _item4._proportion_ = 1 / series.length * process;
+ _item4._rose_proportion_ = 1 / series.length * process;
+ } else {
+ _item4._proportion_ = _item4.data / count * process;
+ if (type == 'area') {
+ _item4._rose_proportion_ = 1 / series.length * process;
+ } else {
+ _item4._rose_proportion_ = _item4.data / count * process;
+ }
+ }
+ _item4._radius_ = minRadius + radiusLength * ((_item4.data - minData) / (maxData - minData)) || radius;
+ }
+ for (var _i12 = 0; _i12 < series.length; _i12++) {
+ var _item5 = series[_i12];
+ _item5._start_ = _start_;
+ _start_ += 2 * _item5._rose_proportion_ * Math.PI;
+ }
+ return series;
+}
+
+function getArcbarDataPoints(series, arcbarOption) {
+ var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+ if (process == 1) {
+ process = 0.999999;
+ }
+ for (var i = 0; i < series.length; i++) {
+ var item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ var totalAngle = void 0;
+ if (arcbarOption.type == 'circle') {
+ totalAngle = 2;
+ } else {
+ if (arcbarOption.endAngle < arcbarOption.startAngle) {
+ totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;
+ } else {
+ totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
+ }
+ }
+ item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;
+ if (item._proportion_ >= 2) {
+ item._proportion_ = item._proportion_ % 2;
+ }
+ }
+ return series;
+}
+
+function getGaugeArcbarDataPoints(series, arcbarOption) {
+ var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+ if (process == 1) {
+ process = 0.999999;
+ }
+ for (var i = 0; i < series.length; i++) {
+ var item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ var totalAngle = void 0;
+ if (arcbarOption.type == 'circle') {
+ totalAngle = 2;
+ } else {
+ if (arcbarOption.endAngle < arcbarOption.startAngle) {
+ totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;
+ } else {
+ totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
+ }
+ }
+ item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;
+ if (item._proportion_ >= 2) {
+ item._proportion_ = item._proportion_ % 2;
+ }
+ }
+ return series;
+}
+
+function getGaugeAxisPoints(categories, startAngle, endAngle) {
+ var totalAngle = startAngle - endAngle + 1;
+ var tempStartAngle = startAngle;
+ for (var i = 0; i < categories.length; i++) {
+ categories[i].value = categories[i].value === null ? 0 : categories[i].value;
+ categories[i]._startAngle_ = tempStartAngle;
+ categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;
+ if (categories[i]._endAngle_ >= 2) {
+ categories[i]._endAngle_ = categories[i]._endAngle_ % 2;
+ }
+ tempStartAngle = categories[i]._endAngle_;
+ }
+ return categories;
+}
+
+function getGaugeDataPoints(series, categories, gaugeOption) {
+ var process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
+ for (var i = 0; i < series.length; i++) {
+ var item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ if (gaugeOption.pointer.color == 'auto') {
+ for (var _i13 = 0; _i13 < categories.length; _i13++) {
+ if (item.data <= categories[_i13].value) {
+ item.color = categories[_i13].color;
+ break;
+ }
+ }
+ } else {
+ item.color = gaugeOption.pointer.color;
+ }
+ var totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+ item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;
+ item._oldAngle_ = gaugeOption.oldAngle;
+ if (gaugeOption.oldAngle < gaugeOption.endAngle) {
+ item._oldAngle_ += 2;
+ }
+ if (item.data >= gaugeOption.oldData) {
+ item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;
+ } else {
+ item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;
+ }
+ if (item._proportion_ >= 2) {
+ item._proportion_ = item._proportion_ % 2;
+ }
+ }
+ return series;
+}
+
+function getPieTextMaxLength(series, config, context, opts) {
+ series = getPieDataPoints(series);
+ var maxLength = 0;
+ for (var i = 0; i < series.length; i++) {
+ var item = series[i];
+ var text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';
+ maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context));
+ }
+ return maxLength;
+}
+
+function fixColumeData(points, eachSpacing, columnLen, index, config, opts) {
+ return points.map(function (item) {
+ if (item === null) {
+ return null;
+ }
+ var seriesGap = 0;
+ var categoryGap = 0;
+ if (opts.type == 'mix') {
+ seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0;
+ categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0;
+ } else {
+ seriesGap = opts.extra.column.seriesGap * opts.pix || 0;
+ categoryGap = opts.extra.column.categoryGap * opts.pix || 0;
+ }
+ seriesGap = Math.min(seriesGap, eachSpacing / columnLen);
+ categoryGap = Math.min(categoryGap, eachSpacing / columnLen);
+ item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);
+ if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) {
+ item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix);
+ }
+ if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
+ item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);
+ }
+ if (item.width <= 0) {
+ item.width = 1;
+ }
+ item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);
+ return item;
+ });
+}
+
+function fixBarData(points, eachSpacing, columnLen, index, config, opts) {
+ return points.map(function (item) {
+ if (item === null) {
+ return null;
+ }
+ var seriesGap = 0;
+ var categoryGap = 0;
+ seriesGap = opts.extra.bar.seriesGap * opts.pix || 0;
+ categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;
+ seriesGap = Math.min(seriesGap, eachSpacing / columnLen);
+ categoryGap = Math.min(categoryGap, eachSpacing / columnLen);
+ item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);
+ if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {
+ item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);
+ }
+ if (item.width <= 0) {
+ item.width = 1;
+ }
+ item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);
+ return item;
+ });
+}
+
+function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {
+ var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;
+ return points.map(function (item) {
+ if (item === null) {
+ return null;
+ }
+ item.width = eachSpacing - 2 * categoryGap;
+ if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
+ item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);
+ }
+ if (index > 0) {
+ item.width -= border;
+ }
+ return item;
+ });
+}
+
+function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {
+ var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;
+ return points.map(function (item, indexn) {
+ if (item === null) {
+ return null;
+ }
+ item.width = Math.ceil(eachSpacing - 2 * categoryGap);
+ if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
+ item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);
+ }
+ if (item.width <= 0) {
+ item.width = 1;
+ }
+ return item;
+ });
+}
+
+function fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) {
+ var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;
+ return points.map(function (item, indexn) {
+ if (item === null) {
+ return null;
+ }
+ item.width = Math.ceil(eachSpacing - 2 * categoryGap);
+ if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {
+ item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);
+ }
+ if (item.width <= 0) {
+ item.width = 1;
+ }
+ return item;
+ });
+}
+
+function getXAxisPoints(categories, opts, config) {
+ var spacingValid = opts.width - opts.area[1] - opts.area[3];
+ var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;
+ if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') {
+ dataCount -= 1;
+ }
+ var widthRatio = 0;
+ if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
+ if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
+ widthRatio = opts.extra.mount.widthRatio - 1;
+ dataCount += widthRatio;
+ }
+ var eachSpacing = spacingValid / dataCount;
+ var xAxisPoints = [];
+ var startX = opts.area[3];
+ var endX = opts.width - opts.area[1];
+ categories.forEach(function (item, index) {
+ xAxisPoints.push(startX + widthRatio / 2 * eachSpacing + index * eachSpacing);
+ });
+ if (opts.xAxis.boundaryGap !== 'justify') {
+ if (opts.enableScroll === true) {
+ xAxisPoints.push(startX + widthRatio * eachSpacing + categories.length * eachSpacing);
+ } else {
+ xAxisPoints.push(endX);
+ }
+ }
+ return {
+ xAxisPoints: xAxisPoints,
+ startX: startX,
+ endX: endX,
+ eachSpacing: eachSpacing };
+
+}
+
+function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
+ var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
+ var points = [];
+ var validHeight = opts.height - opts.area[0] - opts.area[2];
+ data.forEach(function (item, index) {
+ if (item === null) {
+ points.push(null);
+ } else {
+ var cPoints = [];
+ item.forEach(function (items, indexs) {
+ var point = {};
+ point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
+ var value = items.value || items;
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ height *= process;
+ point.y = opts.height - Math.round(height) - opts.area[2];
+ cPoints.push(point);
+ });
+ points.push(cPoints);
+ }
+ });
+ return points;
+}
+
+function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
+ var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
+ var boundaryGap = 'center';
+ if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {
+ boundaryGap = opts.xAxis.boundaryGap;
+ }
+ var points = [];
+ var validHeight = opts.height - opts.area[0] - opts.area[2];
+ var validWidth = opts.width - opts.area[1] - opts.area[3];
+ data.forEach(function (item, index) {
+ if (item === null) {
+ points.push(null);
+ } else {
+ var point = {};
+ point.color = item.color;
+ point.x = xAxisPoints[index];
+ var value = item;
+ if (typeof item === 'object' && item !== null) {
+ if (item.constructor.toString().indexOf('Array') > -1) {
+ var xranges, xminRange, xmaxRange;
+ xranges = [].concat(opts.chartData.xAxisData.ranges);
+ xminRange = xranges.shift();
+ xmaxRange = xranges.pop();
+ value = item[1];
+ point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);
+ if (opts.type == 'bubble') {
+ point.r = item[2];
+ point.t = item[3];
+ }
+ } else {
+ value = item.value;
+ }
+ }
+ if (boundaryGap == 'center') {
+ point.x += eachSpacing / 2;
+ }
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ height *= process;
+ point.y = opts.height - height - opts.area[2];
+ points.push(point);
+ }
+ });
+ return points;
+}
+
+function getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption) {
+ var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
+ var points = [];
+ var validHeight = opts.height - opts.area[0] - opts.area[2];
+ var validWidth = opts.width - opts.area[1] - opts.area[3];
+ var mountWidth = eachSpacing * mountOption.widthRatio;
+ series.forEach(function (item, index) {
+ if (item === null) {
+ points.push(null);
+ } else {
+ var point = {};
+ point.color = item.color;
+ point.x = xAxisPoints[index];
+ point.x += eachSpacing / 2;
+ var value = item.data;
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ height *= process;
+ point.y = opts.height - height - opts.area[2];
+ point.value = value;
+ point.width = mountWidth;
+ points.push(point);
+ }
+ });
+ return points;
+}
+
+function getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) {
+ var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
+ var points = [];
+ var validHeight = opts.height - opts.area[0] - opts.area[2];
+ var validWidth = opts.width - opts.area[1] - opts.area[3];
+ data.forEach(function (item, index) {
+ if (item === null) {
+ points.push(null);
+ } else {
+ var point = {};
+ point.color = item.color;
+ point.y = yAxisPoints[index];
+ var value = item;
+ if (typeof item === 'object' && item !== null) {
+ value = item.value;
+ }
+ var height = validWidth * (value - minRange) / (maxRange - minRange);
+ height *= process;
+ point.height = height;
+ point.value = value;
+ point.x = height + opts.area[3];
+ points.push(point);
+ }
+ });
+ return points;
+}
+
+function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {
+ var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
+ var points = [];
+ var validHeight = opts.height - opts.area[0] - opts.area[2];
+ data.forEach(function (item, index) {
+ if (item === null) {
+ points.push(null);
+ } else {
+ var point = {};
+ point.color = item.color;
+ point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
+
+ if (seriesIndex > 0) {
+ var value = 0;
+ for (var i = 0; i <= seriesIndex; i++) {
+ value += stackSeries[i].data[index];
+ }
+ var value0 = value - item;
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);
+ } else {
+ var value = item;
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ var height0 = 0;
+ }
+ var heightc = height0;
+ height *= process;
+ heightc *= process;
+ point.y = opts.height - Math.round(height) - opts.area[2];
+ point.y0 = opts.height - Math.round(heightc) - opts.area[2];
+ points.push(point);
+ }
+ });
+ return points;
+}
+
+function getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {
+ var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
+ var points = [];
+ var validHeight = opts.width - opts.area[1] - opts.area[3];
+ data.forEach(function (item, index) {
+ if (item === null) {
+ points.push(null);
+ } else {
+ var point = {};
+ point.color = item.color;
+ point.y = yAxisPoints[index];
+ if (seriesIndex > 0) {
+ var value = 0;
+ for (var i = 0; i <= seriesIndex; i++) {
+ value += stackSeries[i].data[index];
+ }
+ var value0 = value - item;
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);
+ } else {
+ var value = item;
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ var height0 = 0;
+ }
+ var heightc = height0;
+ height *= process;
+ heightc *= process;
+ point.height = height - heightc;
+ point.x = opts.area[3] + height;
+ point.x0 = opts.area[3] + heightc;
+ points.push(point);
+ }
+ });
+ return points;
+}
+
+function getYAxisTextList(series, opts, config, stack, yData) {
+ var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1;
+ var data;
+ if (stack == 'stack') {
+ data = dataCombineStack(series, opts.categories.length);
+ } else {
+ data = dataCombine(series);
+ }
+ var sorted = [];
+ // remove null from data
+ data = data.filter(function (item) {
+ //return item !== null;
+ if (typeof item === 'object' && item !== null) {
+ if (item.constructor.toString().indexOf('Array') > -1) {
+ return item !== null;
+ } else {
+ return item.value !== null;
+ }
+ } else {
+ return item !== null;
+ }
+ });
+ data.map(function (item) {
+ if (typeof item === 'object') {
+ if (item.constructor.toString().indexOf('Array') > -1) {
+ if (opts.type == 'candle') {
+ item.map(function (subitem) {
+ sorted.push(subitem);
+ });
+ } else {
+ sorted.push(item[1]);
+ }
+ } else {
+ sorted.push(item.value);
+ }
+ } else {
+ sorted.push(item);
+ }
+ });
+ var minData = yData.min || 0;
+ var maxData = yData.max || 0;
+ if (sorted.length > 0) {
+ minData = Math.min.apply(this, sorted);
+ maxData = Math.max.apply(this, sorted);
+ }
+ if (minData === maxData) {
+ // var rangeSpan = maxData || 10;
+ // maxData += rangeSpan;
+ if (maxData == 0) {
+ maxData = 10;
+ } else {
+ minData = 0;
+ }
+ }
+ var dataRange = getDataRange(minData, maxData);
+ var minRange = yData.min === undefined || yData.min === null ? dataRange.minRange : yData.min;
+ var maxRange = yData.max === undefined || yData.max === null ? dataRange.maxRange : yData.max;
+ var range = [];
+ var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;
+ for (var i = 0; i <= opts.yAxis.splitNumber; i++) {
+ range.push(minRange + eachRange * i);
+ }
+ return range.reverse();
+}
+
+function calYAxisData(series, opts, config, context) {
+ //堆叠图重算Y轴
+ var columnstyle = assign({}, {
+ type: "" },
+ opts.extra.column);
+ //如果是多Y轴,重新计算
+ var YLength = opts.yAxis.data.length;
+ var newSeries = new Array(YLength);
+ if (YLength > 0) {
+ for (var i = 0; i < YLength; i++) {
+ newSeries[i] = [];
+ for (var j = 0; j < series.length; j++) {
+ if (series[j].index == i) {
+ newSeries[i].push(series[j]);
+ }
+ }
+ }
+ var rangesArr = new Array(YLength);
+ var rangesFormatArr = new Array(YLength);
+ var yAxisWidthArr = new Array(YLength);var _loop3 = function _loop3(
+
+ _i14) {
+ var yData = opts.yAxis.data[_i14];
+ //如果总开关不显示,强制每个Y轴为不显示
+ if (opts.yAxis.disabled == true) {
+ yData.disabled = true;
+ }
+ if (yData.type === 'categories') {
+ if (!yData.formatter) {
+ yData.formatter = function (val, index, opts) {return val + (yData.unit || '');};
+ }
+ yData.categories = yData.categories || opts.categories;
+ rangesArr[_i14] = yData.categories;
+ } else {
+ if (!yData.formatter) {
+ yData.formatter = function (val, index, opts) {return val.toFixed(yData.tofix) + (yData.unit || '');};
+ }
+ rangesArr[_i14] = getYAxisTextList(newSeries[_i14], opts, config, columnstyle.type, yData, _i14);
+ }
+ var yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize;
+ yAxisWidthArr[_i14] = {
+ position: yData.position ? yData.position : 'left',
+ width: 0 };
+
+ rangesFormatArr[_i14] = rangesArr[_i14].map(function (items, index) {
+ items = yData.formatter(items, index, opts);
+ yAxisWidthArr[_i14].width = Math.max(yAxisWidthArr[_i14].width, measureText(items, yAxisFontSizes, context) + 5);
+ return items;
+ });
+ var calibration = yData.calibration ? 4 * opts.pix : 0;
+ yAxisWidthArr[_i14].width += calibration + 3 * opts.pix;
+ if (yData.disabled === true) {
+ yAxisWidthArr[_i14].width = 0;
+ }};for (var _i14 = 0; _i14 < YLength; _i14++) {_loop3(_i14);
+ }
+ } else {
+ var rangesArr = new Array(1);
+ var rangesFormatArr = new Array(1);
+ var yAxisWidthArr = new Array(1);
+ if (opts.type === 'bar') {
+ rangesArr[0] = opts.categories;
+ if (!opts.yAxis.formatter) {
+ opts.yAxis.formatter = function (val, index, opts) {return val + (opts.yAxis.unit || '');};
+ }
+ } else {
+ if (!opts.yAxis.formatter) {
+ opts.yAxis.formatter = function (val, index, opts) {return val.toFixed(opts.yAxis.tofix) + (opts.yAxis.unit || '');};
+ }
+ rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {});
+ }
+ yAxisWidthArr[0] = {
+ position: 'left',
+ width: 0 };
+
+ var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize;
+ rangesFormatArr[0] = rangesArr[0].map(function (item, index) {
+ item = opts.yAxis.formatter(item, index, opts);
+ yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5);
+ return item;
+ });
+ yAxisWidthArr[0].width += 3 * opts.pix;
+ if (opts.yAxis.disabled === true) {
+ yAxisWidthArr[0] = {
+ position: 'left',
+ width: 0 };
+
+ opts.yAxis.data[0] = {
+ disabled: true };
+
+ } else {
+ opts.yAxis.data[0] = {
+ disabled: false,
+ position: 'left',
+ max: opts.yAxis.max,
+ min: opts.yAxis.min,
+ formatter: opts.yAxis.formatter };
+
+ if (opts.type === 'bar') {
+ opts.yAxis.data[0].categories = opts.categories;
+ opts.yAxis.data[0].type = 'categories';
+ }
+ }
+ }
+ return {
+ rangesFormat: rangesFormatArr,
+ ranges: rangesArr,
+ yAxisWidth: yAxisWidthArr };
+
+}
+
+function calTooltipYAxisData(point, series, opts, config, eachSpacing) {
+ var ranges = [].concat(opts.chartData.yAxisData.ranges);
+ var spacingValid = opts.height - opts.area[0] - opts.area[2];
+ var minAxis = opts.area[0];
+ var items = [];
+ for (var i = 0; i < ranges.length; i++) {
+ var maxVal = ranges[i].shift();
+ var minVal = ranges[i].pop();
+ var item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;
+ item = opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item) : item.toFixed(0);
+ items.push(String(item));
+ }
+ return items;
+}
+
+function calMarkLineData(points, opts) {
+ var minRange, maxRange;
+ var spacingValid = opts.height - opts.area[0] - opts.area[2];
+ for (var i = 0; i < points.length; i++) {
+ points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0;
+ var range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);
+ minRange = range.pop();
+ maxRange = range.shift();
+ var height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);
+ points[i].y = opts.height - Math.round(height) - opts.area[2];
+ }
+ return points;
+}
+
+function contextRotate(context, opts) {
+ if (opts.rotateLock !== true) {
+ context.translate(opts.height, 0);
+ context.rotate(90 * Math.PI / 180);
+ } else if (opts._rotate_ !== true) {
+ context.translate(opts.height, 0);
+ context.rotate(90 * Math.PI / 180);
+ opts._rotate_ = true;
+ }
+}
+
+function drawPointShape(points, color, shape, context, opts) {
+ context.beginPath();
+ if (opts.dataPointShapeType == 'hollow') {
+ context.setStrokeStyle(color);
+ context.setFillStyle(opts.background);
+ context.setLineWidth(2 * opts.pix);
+ } else {
+ context.setStrokeStyle("#ffffff");
+ context.setFillStyle(color);
+ context.setLineWidth(1 * opts.pix);
+ }
+ if (shape === 'diamond') {
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.moveTo(item.x, item.y - 4.5);
+ context.lineTo(item.x - 4.5, item.y);
+ context.lineTo(item.x, item.y + 4.5);
+ context.lineTo(item.x + 4.5, item.y);
+ context.lineTo(item.x, item.y - 4.5);
+ }
+ });
+ } else if (shape === 'circle') {
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.moveTo(item.x + 2.5 * opts.pix, item.y);
+ context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);
+ }
+ });
+ } else if (shape === 'square') {
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.moveTo(item.x - 3.5, item.y - 3.5);
+ context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
+ }
+ });
+ } else if (shape === 'triangle') {
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.moveTo(item.x, item.y - 4.5);
+ context.lineTo(item.x - 4.5, item.y + 4.5);
+ context.lineTo(item.x + 4.5, item.y + 4.5);
+ context.lineTo(item.x, item.y - 4.5);
+ }
+ });
+ } else if (shape === 'triangle') {
+ return;
+ }
+ context.closePath();
+ context.fill();
+ context.stroke();
+}
+
+function drawRingTitle(opts, config, context, center) {
+ var titlefontSize = opts.title.fontSize || config.titleFontSize;
+ var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;
+ var title = opts.title.name || '';
+ var subtitle = opts.subtitle.name || '';
+ var titleFontColor = opts.title.color || opts.fontColor;
+ var subtitleFontColor = opts.subtitle.color || opts.fontColor;
+ var titleHeight = title ? titlefontSize : 0;
+ var subtitleHeight = subtitle ? subtitlefontSize : 0;
+ var margin = 5;
+ if (subtitle) {
+ var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context);
+ var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0) * opts.pix;
+ var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix;
+ if (title) {
+ startY += (titleHeight * opts.pix + margin) / 2;
+ }
+ context.beginPath();
+ context.setFontSize(subtitlefontSize * opts.pix);
+ context.setFillStyle(subtitleFontColor);
+ context.fillText(subtitle, startX, startY);
+ context.closePath();
+ context.stroke();
+ }
+ if (title) {
+ var _textWidth = measureText(title, titlefontSize * opts.pix, context);
+ var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);
+ var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix;
+ if (subtitle) {
+ _startY -= (subtitleHeight * opts.pix + margin) / 2;
+ }
+ context.beginPath();
+ context.setFontSize(titlefontSize * opts.pix);
+ context.setFillStyle(titleFontColor);
+ context.fillText(title, _startX, _startY);
+ context.closePath();
+ context.stroke();
+ }
+}
+
+function drawPointText(points, series, config, context, opts) {
+ // 绘制数据文案
+ var data = series.data;
+ var textOffset = series.textOffset ? series.textOffset : 0;
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.beginPath();
+ var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;
+ context.setFontSize(fontSize);
+ context.setFillStyle(series.textColor || opts.fontColor);
+ var value = data[index];
+ if (typeof data[index] === 'object' && data[index] !== null) {
+ if (data[index].constructor.toString().indexOf('Array') > -1) {
+ value = data[index][1];
+ } else {
+ value = data[index].value;
+ }
+ }
+ var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;
+ context.setTextAlign('center');
+ context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);
+ context.closePath();
+ context.stroke();
+ context.setTextAlign('left');
+ }
+ });
+}
+
+function drawMountPointText(points, series, config, context, opts) {
+ // 绘制数据文案
+ var data = series.data;
+ var textOffset = series.textOffset ? series.textOffset : 0;
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.beginPath();
+ var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize;
+ context.setFontSize(fontSize);
+ context.setFillStyle(series[index].textColor || opts.fontColor);
+ var value = item.value;
+ var formatVal = series[index].formatter ? series[index].formatter(value, index, series, opts) : value;
+ context.setTextAlign('center');
+ context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);
+ context.closePath();
+ context.stroke();
+ context.setTextAlign('left');
+ }
+ });
+}
+
+function drawBarPointText(points, series, config, context, opts) {
+ // 绘制数据文案
+ var data = series.data;
+ var textOffset = series.textOffset ? series.textOffset : 0;
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.beginPath();
+ var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;
+ context.setFontSize(fontSize);
+ context.setFillStyle(series.textColor || opts.fontColor);
+ var value = data[index];
+ if (typeof data[index] === 'object' && data[index] !== null) {
+ value = data[index].value;
+ }
+ var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;
+ context.setTextAlign('left');
+ context.fillText(String(formatVal), item.x + 4 * opts.pix, item.y + fontSize / 2 - 3);
+ context.closePath();
+ context.stroke();
+ }
+ });
+}
+
+function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {
+ radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix;
+ radius = radius < 10 ? 10 : radius;
+ var totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+ var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
+ var totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;
+ var splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;
+ var nowAngle = gaugeOption.startAngle;
+ var nowNumber = gaugeOption.startNumber;
+ for (var i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {
+ var pos = {
+ x: radius * Math.cos(nowAngle * Math.PI),
+ y: radius * Math.sin(nowAngle * Math.PI) };
+
+ var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber, i, opts) : nowNumber;
+ pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2;
+ pos.y += centerPosition.y;
+ var startX = pos.x;
+ var startY = pos.y;
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(gaugeOption.labelColor || opts.fontColor);
+ context.fillText(labelText, startX, startY + config.fontSize / 2);
+ context.closePath();
+ context.stroke();
+ nowAngle += splitAngle;
+ if (nowAngle >= 2) {
+ nowAngle = nowAngle % 2;
+ }
+ nowNumber += splitNumber;
+ }
+}
+
+function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {
+ var radarOption = opts.extra.radar || {};
+ angleList.forEach(function (angle, index) {
+ if (radarOption.labelPointShow === true && opts.categories[index] !== '') {
+ var posPoint = {
+ x: radius * Math.cos(angle),
+ y: radius * Math.sin(angle) };
+
+ var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition);
+ context.setFillStyle(radarOption.labelPointColor);
+ context.beginPath();
+ context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false);
+ context.closePath();
+ context.fill();
+ }
+ var pos = {
+ x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle),
+ y: (radius + config.radarLabelTextMargin * opts.pix) * Math.sin(angle) };
+
+ var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);
+ var startX = posRelativeCanvas.x;
+ var startY = posRelativeCanvas.y;
+ if (util.approximatelyEqual(pos.x, 0)) {
+ startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2;
+ } else if (pos.x < 0) {
+ startX -= measureText(opts.categories[index] || '', config.fontSize, context);
+ }
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(radarOption.labelColor || opts.fontColor);
+ context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);
+ context.closePath();
+ context.stroke();
+ });
+
+}
+
+function drawPieText(series, opts, config, context, radius, center) {
+ var lineRadius = config.pieChartLinePadding;
+ var textObjectCollection = [];
+ var lastTextObject = null;
+ var seriesConvert = series.map(function (item, index) {
+ var text = item.formatter ? item.formatter(item, index, series, opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%';
+ text = item.labelText ? item.labelText : text;
+ var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);
+ if (item._rose_proportion_) {
+ arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2);
+ }
+ var color = item.color;
+ var radius = item._radius_;
+ return {
+ arc: arc,
+ text: text,
+ color: color,
+ radius: radius,
+ textColor: item.textColor,
+ textSize: item.textSize,
+ labelShow: item.labelShow };
+
+ });
+ for (var i = 0; i < seriesConvert.length; i++) {
+ var item = seriesConvert[i];
+ // line end
+ var orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);
+ var orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);
+ // line start
+ var orginX2 = Math.cos(item.arc) * item.radius;
+ var orginY2 = Math.sin(item.arc) * item.radius;
+ // text start
+ var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;
+ var orginY3 = orginY1;
+ var textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context);
+ var startY = orginY3;
+ if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {
+ x: orginX3 }))
+ {
+ if (orginX3 > 0) {
+ startY = Math.min(orginY3, lastTextObject.start.y);
+ } else if (orginX1 < 0) {
+ startY = Math.max(orginY3, lastTextObject.start.y);
+ } else {
+ if (orginY3 > 0) {
+ startY = Math.max(orginY3, lastTextObject.start.y);
+ } else {
+ startY = Math.min(orginY3, lastTextObject.start.y);
+ }
+ }
+ }
+ if (orginX3 < 0) {
+ orginX3 -= textWidth;
+ }
+ var textObject = {
+ lineStart: {
+ x: orginX2,
+ y: orginY2 },
+
+ lineEnd: {
+ x: orginX1,
+ y: orginY1 },
+
+ start: {
+ x: orginX3,
+ y: startY },
+
+ width: textWidth,
+ height: config.fontSize,
+ text: item.text,
+ color: item.color,
+ textColor: item.textColor,
+ textSize: item.textSize };
+
+ lastTextObject = avoidCollision(textObject, lastTextObject);
+ textObjectCollection.push(lastTextObject);
+ }
+ for (var _i15 = 0; _i15 < textObjectCollection.length; _i15++) {
+ if (seriesConvert[_i15].labelShow === false) {
+ continue;
+ }
+ var _item6 = textObjectCollection[_i15];
+ var lineStartPoistion = convertCoordinateOrigin(_item6.lineStart.x, _item6.lineStart.y, center);
+ var lineEndPoistion = convertCoordinateOrigin(_item6.lineEnd.x, _item6.lineEnd.y, center);
+ var textPosition = convertCoordinateOrigin(_item6.start.x, _item6.start.y, center);
+ context.setLineWidth(1 * opts.pix);
+ context.setFontSize(_item6.textSize * opts.pix || config.fontSize);
+ context.beginPath();
+ context.setStrokeStyle(_item6.color);
+ context.setFillStyle(_item6.color);
+ context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
+ var curveStartX = _item6.start.x < 0 ? textPosition.x + _item6.width : textPosition.x;
+ var textStartX = _item6.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;
+ context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);
+ context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
+ context.stroke();
+ context.closePath();
+ context.beginPath();
+ context.moveTo(textPosition.x + _item6.width, textPosition.y);
+ context.arc(curveStartX, textPosition.y, 2 * opts.pix, 0, 2 * Math.PI);
+ context.closePath();
+ context.fill();
+ context.beginPath();
+ context.setFontSize(_item6.textSize * opts.pix || config.fontSize);
+ context.setFillStyle(_item6.textColor || opts.fontColor);
+ context.fillText(_item6.text, textStartX, textPosition.y + 3);
+ context.closePath();
+ context.stroke();
+ context.closePath();
+ }
+}
+
+function drawToolTipSplitLine(offsetX, opts, config, context) {
+ var toolTipOption = opts.extra.tooltip || {};
+ toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;
+ toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;
+ var startY = opts.area[0];
+ var endY = opts.height - opts.area[2];
+ if (toolTipOption.gridType == 'dash') {
+ context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
+ }
+ context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
+ context.setLineWidth(1 * opts.pix);
+ context.beginPath();
+ context.moveTo(offsetX, startY);
+ context.lineTo(offsetX, endY);
+ context.stroke();
+ context.setLineDash([]);
+ if (toolTipOption.xAxisLabel) {
+ var labelText = opts.categories[opts.tooltip.index];
+ context.setFontSize(config.fontSize);
+ var textWidth = measureText(labelText, config.fontSize, context);
+ var textX = offsetX - 0.5 * textWidth;
+ var textY = endY;
+ context.beginPath();
+ context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
+ context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
+ context.setLineWidth(1 * opts.pix);
+ context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding);
+ context.closePath();
+ context.stroke();
+ context.fill();
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);
+ context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize);
+ context.closePath();
+ context.stroke();
+ }
+}
+
+function drawMarkLine(opts, config, context) {
+ var markLineOption = assign({}, {
+ type: 'solid',
+ dashLength: 4,
+ data: [] },
+ opts.extra.markLine);
+ var startX = opts.area[3];
+ var endX = opts.width - opts.area[1];
+ var points = calMarkLineData(markLineOption.data, opts);
+ for (var i = 0; i < points.length; i++) {
+ var item = assign({}, {
+ lineColor: '#DE4A42',
+ showLabel: false,
+ labelFontColor: '#666666',
+ labelBgColor: '#DFE8FF',
+ labelBgOpacity: 0.8,
+ labelAlign: 'left',
+ labelOffsetX: 0,
+ labelOffsetY: 0 },
+ points[i]);
+ if (markLineOption.type == 'dash') {
+ context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);
+ }
+ context.setStrokeStyle(item.lineColor);
+ context.setLineWidth(1 * opts.pix);
+ context.beginPath();
+ context.moveTo(startX, item.y);
+ context.lineTo(endX, item.y);
+ context.stroke();
+ context.setLineDash([]);
+ if (item.showLabel) {
+ var labelText = item.labelText ? item.labelText : item.value;
+ context.setFontSize(config.fontSize);
+ var textWidth = measureText(labelText, config.fontSize, context);
+ var bgWidth = textWidth + config.toolTipPadding * 2;
+ var bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1];
+ bgStartX += item.labelOffsetX;
+ var bgStartY = item.y - 0.5 * config.fontSize - config.toolTipPadding;
+ bgStartY += item.labelOffsetY;
+ var textX = bgStartX + config.toolTipPadding;
+ var textY = item.y;
+ context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));
+ context.setStrokeStyle(item.labelBgColor);
+ context.setLineWidth(1 * opts.pix);
+ context.beginPath();
+ context.rect(bgStartX, bgStartY, bgWidth, config.fontSize + 2 * config.toolTipPadding);
+ context.closePath();
+ context.stroke();
+ context.fill();
+ context.setFontSize(config.fontSize);
+ context.setTextAlign('left');
+ context.setFillStyle(item.labelFontColor);
+ context.fillText(String(labelText), textX, bgStartY + config.fontSize + config.toolTipPadding / 2);
+ context.stroke();
+ context.setTextAlign('left');
+ }
+ }
+}
+
+function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {
+ var toolTipOption = assign({}, {
+ gridType: 'solid',
+ dashLength: 4 },
+ opts.extra.tooltip);
+ var startX = opts.area[3];
+ var endX = opts.width - opts.area[1];
+ if (toolTipOption.gridType == 'dash') {
+ context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
+ }
+ context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
+ context.setLineWidth(1 * opts.pix);
+ context.beginPath();
+ context.moveTo(startX, opts.tooltip.offset.y);
+ context.lineTo(endX, opts.tooltip.offset.y);
+ context.stroke();
+ context.setLineDash([]);
+ if (toolTipOption.yAxisLabel) {
+ var labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);
+ var widthArr = opts.chartData.yAxisData.yAxisWidth;
+ var tStartLeft = opts.area[3];
+ var tStartRight = opts.width - opts.area[1];
+ for (var i = 0; i < labelText.length; i++) {
+ context.setFontSize(config.fontSize);
+ var textWidth = measureText(labelText[i], config.fontSize, context);
+ var bgStartX = void 0,bgEndX = void 0,bgWidth = void 0;
+ if (widthArr[i].position == 'left') {
+ bgStartX = tStartLeft - widthArr[i].width;
+ bgEndX = Math.max(bgStartX, bgStartX + textWidth + config.toolTipPadding * 2);
+ } else {
+ bgStartX = tStartRight;
+ bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + config.toolTipPadding * 2);
+ }
+ bgWidth = bgEndX - bgStartX;
+ var textX = bgStartX + (bgWidth - textWidth) / 2;
+ var textY = opts.tooltip.offset.y;
+ context.beginPath();
+ context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
+ context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
+ context.setLineWidth(1 * opts.pix);
+ context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 *
+ config.toolTipPadding);
+ context.closePath();
+ context.stroke();
+ context.fill();
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);
+ context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);
+ context.closePath();
+ context.stroke();
+ if (widthArr[i].position == 'left') {
+ tStartLeft -= widthArr[i].width + opts.yAxis.padding * opts.pix;
+ } else {
+ tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix;
+ }
+ }
+ }
+}
+
+function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {
+ var toolTipOption = assign({}, {
+ activeBgColor: '#000000',
+ activeBgOpacity: 0.08,
+ activeWidth: eachSpacing },
+ opts.extra.column);
+ toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth;
+ var startY = opts.area[0];
+ var endY = opts.height - opts.area[2];
+ context.beginPath();
+ context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));
+ context.rect(offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY);
+ context.closePath();
+ context.fill();
+ context.setFillStyle("#FFFFFF");
+}
+
+function drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {
+ var toolTipOption = assign({}, {
+ activeBgColor: '#000000',
+ activeBgOpacity: 0.08 },
+ opts.extra.bar);
+ var startX = opts.area[3];
+ var endX = opts.width - opts.area[1];
+ context.beginPath();
+ context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));
+ context.rect(startX, offsetX - eachSpacing / 2, endX - startX, eachSpacing);
+ context.closePath();
+ context.fill();
+ context.setFillStyle("#FFFFFF");
+}
+
+
+function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {
+ var toolTipOption = assign({}, {
+ showBox: true,
+ showArrow: true,
+ showCategory: false,
+ bgColor: '#000000',
+ bgOpacity: 0.7,
+ borderColor: '#000000',
+ borderWidth: 0,
+ borderRadius: 0,
+ borderOpacity: 0.7,
+ fontColor: '#FFFFFF',
+ splitLine: true },
+ opts.extra.tooltip);
+ if (toolTipOption.showCategory == true && opts.categories) {
+ textList.unshift({ text: opts.categories[opts.tooltip.index], color: null });
+ }
+ var legendWidth = 4 * opts.pix;
+ var legendMarginRight = 5 * opts.pix;
+ var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0;
+ var isOverRightBorder = false;
+ if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {
+ if (toolTipOption.splitLine == true) {
+ drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);
+ }
+ }
+ offset = assign({
+ x: 0,
+ y: 0 },
+ offset);
+ offset.y -= 8 * opts.pix;
+ var textWidth = textList.map(function (item) {
+ return measureText(item.text, config.fontSize, context);
+ });
+ var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth);
+ var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight;
+ if (toolTipOption.showBox == false) {
+ return;
+ }
+ // if beyond the right border
+ if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) {
+ isOverRightBorder = true;
+ }
+ if (toolTipHeight + offset.y > opts.height) {
+ offset.y = opts.height - toolTipHeight;
+ }
+ // draw background rect
+ context.beginPath();
+ context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity));
+ context.setLineWidth(toolTipOption.borderWidth * opts.pix);
+ context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity));
+ var radius = toolTipOption.borderRadius;
+ if (isOverRightBorder) {
+ if (toolTipOption.showArrow) {
+ context.moveTo(offset.x, offset.y + 10 * opts.pix);
+ context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);
+ }
+ context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);
+ context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius,
+ Math.PI / 2, Math.PI, false);
+ context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);
+ context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);
+ if (toolTipOption.showArrow) {
+ context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);
+ context.lineTo(offset.x, offset.y + 10 * opts.pix);
+ }
+ } else {
+ if (toolTipOption.showArrow) {
+ context.moveTo(offset.x, offset.y + 10 * opts.pix);
+ context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);
+ }
+ context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);
+ context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0,
+ false);
+ context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0,
+ Math.PI / 2, false);
+ context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);
+ if (toolTipOption.showArrow) {
+ context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);
+ context.lineTo(offset.x, offset.y + 10 * opts.pix);
+ }
+ }
+ context.closePath();
+ context.fill();
+ if (toolTipOption.borderWidth > 0) {
+ context.stroke();
+ }
+ // draw legend
+ textList.forEach(function (item, index) {
+ if (item.color !== null) {
+ context.beginPath();
+ context.setFillStyle(item.color);
+ var startX = offset.x + arrowWidth + 2 * config.toolTipPadding;
+ var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding + 1;
+ if (isOverRightBorder) {
+ startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding;
+ }
+ context.fillRect(startX, startY, legendWidth, config.fontSize);
+ context.closePath();
+ }
+ });
+ // draw text list
+ textList.forEach(function (item, index) {
+ var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight;
+ if (isOverRightBorder) {
+ startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight;
+ }
+ var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding;
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(toolTipOption.fontColor);
+ context.fillText(item.text, startX, startY + config.fontSize);
+ context.closePath();
+ context.stroke();
+ });
+}
+
+function drawColumnDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+ var columnOption = assign({}, {
+ type: 'group',
+ width: eachSpacing / 2,
+ meterBorder: 4,
+ meterFillColor: '#FFFFFF',
+ barBorderCircle: false,
+ barBorderRadius: [],
+ seriesGap: 2,
+ linearType: 'none',
+ linearOpacity: 1,
+ customColor: [],
+ colorStop: 0 },
+ opts.extra.column);
+ var calPoints = [];
+ context.save();
+ var leftNum = -2;
+ var rightNum = xAxisPoints.length + 2;
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
+ rightNum = leftNum + opts.xAxis.itemCount + 4;
+ }
+ if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
+ drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);
+ }
+ columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ switch (columnOption.type) {
+ case 'group':
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
+ calPoints.push(tooltipPoints);
+ points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
+ for (var i = 0; i < points.length; i++) {
+ var item = points[i];
+ //fix issues/I27B1N yyoinge & Joeshu
+ if (item !== null && i > leftNum && i < rightNum) {
+ var startX = item.x - item.width / 2;
+ var height = opts.height - item.y - opts.area[2];
+ context.beginPath();
+ var fillColor = item.color || eachSeries.color;
+ var strokeColor = item.color || eachSeries.color;
+ if (columnOption.linearType !== 'none') {
+ var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);
+ //透明渐变
+ if (columnOption.linearType == 'opacity') {
+ grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ } else {
+ grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
+ grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ }
+ fillColor = grd;
+ }
+ // 圆角边框
+ if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {
+ var left = startX;
+ var top = item.y;
+ var width = item.width;
+ var _height = opts.height - opts.area[2] - item.y;
+ if (columnOption.barBorderCircle) {
+ columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];
+ }var _columnOption$barBord = _slicedToArray(
+ columnOption.barBorderRadius, 4),r0 = _columnOption$barBord[0],r1 = _columnOption$barBord[1],r2 = _columnOption$barBord[2],r3 = _columnOption$barBord[3];
+ var minRadius = Math.min(width / 2, _height / 2);
+ r0 = r0 > minRadius ? minRadius : r0;
+ r1 = r1 > minRadius ? minRadius : r1;
+ r2 = r2 > minRadius ? minRadius : r2;
+ r3 = r3 > minRadius ? minRadius : r3;
+ r0 = r0 < 0 ? 0 : r0;
+ r1 = r1 < 0 ? 0 : r1;
+ r2 = r2 < 0 ? 0 : r2;
+ r3 = r3 < 0 ? 0 : r3;
+ context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);
+ context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);
+ context.arc(left + width - r2, top + _height - r2, r2, 0, Math.PI / 2);
+ context.arc(left + r3, top + _height - r3, r3, Math.PI / 2, Math.PI);
+ } else {
+ context.moveTo(startX, item.y);
+ context.lineTo(startX + item.width, item.y);
+ context.lineTo(startX + item.width, opts.height - opts.area[2]);
+ context.lineTo(startX, opts.height - opts.area[2]);
+ context.lineTo(startX, item.y);
+ context.setLineWidth(1);
+ context.setStrokeStyle(strokeColor);
+ }
+ context.setFillStyle(fillColor);
+ context.closePath();
+ //context.stroke();
+ context.fill();
+ }
+ };
+ break;
+ case 'stack':
+ // 绘制堆叠数据图
+ var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
+ calPoints.push(points);
+ points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);
+ for (var _i16 = 0; _i16 < points.length; _i16++) {
+ var _item7 = points[_i16];
+ if (_item7 !== null && _i16 > leftNum && _i16 < rightNum) {
+ context.beginPath();
+ var fillColor = _item7.color || eachSeries.color;
+ var startX = _item7.x - _item7.width / 2 + 1;
+ var height = opts.height - _item7.y - opts.area[2];
+ var height0 = opts.height - _item7.y0 - opts.area[2];
+ if (seriesIndex > 0) {
+ height -= height0;
+ }
+ context.setFillStyle(fillColor);
+ context.moveTo(startX, _item7.y);
+ context.fillRect(startX, _item7.y, _item7.width, height);
+ context.closePath();
+ context.fill();
+ }
+ };
+ break;
+ case 'meter':
+ // 绘制温度计数据图
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ calPoints.push(points);
+ points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder);
+ for (var _i17 = 0; _i17 < points.length; _i17++) {
+ var _item8 = points[_i17];
+ if (_item8 !== null && _i17 > leftNum && _i17 < rightNum) {
+ //画背景颜色
+ context.beginPath();
+ if (seriesIndex == 0 && columnOption.meterBorder > 0) {
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(columnOption.meterBorder * opts.pix);
+ }
+ if (seriesIndex == 0) {
+ context.setFillStyle(columnOption.meterFillColor);
+ } else {
+ context.setFillStyle(_item8.color || eachSeries.color);
+ }
+ var startX = _item8.x - _item8.width / 2;
+ var height = opts.height - _item8.y - opts.area[2];
+ if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {
+ var _left = startX;
+ var _top = _item8.y;
+ var _width = _item8.width;
+ var _height2 = opts.height - opts.area[2] - _item8.y;
+ if (columnOption.barBorderCircle) {
+ columnOption.barBorderRadius = [_width / 2, _width / 2, 0, 0];
+ }var _columnOption$barBord2 = _slicedToArray(
+ columnOption.barBorderRadius, 4),_r = _columnOption$barBord2[0],_r2 = _columnOption$barBord2[1],_r3 = _columnOption$barBord2[2],_r4 = _columnOption$barBord2[3];
+ var _minRadius = Math.min(_width / 2, _height2 / 2);
+ _r = _r > _minRadius ? _minRadius : _r;
+ _r2 = _r2 > _minRadius ? _minRadius : _r2;
+ _r3 = _r3 > _minRadius ? _minRadius : _r3;
+ _r4 = _r4 > _minRadius ? _minRadius : _r4;
+ _r = _r < 0 ? 0 : _r;
+ _r2 = _r2 < 0 ? 0 : _r2;
+ _r3 = _r3 < 0 ? 0 : _r3;
+ _r4 = _r4 < 0 ? 0 : _r4;
+ context.arc(_left + _r, _top + _r, _r, -Math.PI, -Math.PI / 2);
+ context.arc(_left + _width - _r2, _top + _r2, _r2, -Math.PI / 2, 0);
+ context.arc(_left + _width - _r3, _top + _height2 - _r3, _r3, 0, Math.PI / 2);
+ context.arc(_left + _r4, _top + _height2 - _r4, _r4, Math.PI / 2, Math.PI);
+ context.fill();
+ } else {
+ context.moveTo(startX, _item8.y);
+ context.lineTo(startX + _item8.width, _item8.y);
+ context.lineTo(startX + _item8.width, opts.height - opts.area[2]);
+ context.lineTo(startX, opts.height - opts.area[2]);
+ context.lineTo(startX, _item8.y);
+ context.fill();
+ }
+ if (seriesIndex == 0 && columnOption.meterBorder > 0) {
+ context.closePath();
+ context.stroke();
+ }
+ }
+ }
+ break;}
+
+ });
+
+ if (opts.dataLabel !== false && process === 1) {
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ switch (columnOption.type) {
+ case 'group':
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
+ drawPointText(points, eachSeries, config, context, opts);
+ break;
+ case 'stack':
+ var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
+ drawPointText(points, eachSeries, config, context, opts);
+ break;
+ case 'meter':
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ drawPointText(points, eachSeries, config, context, opts);
+ break;}
+
+ });
+ }
+ context.restore();
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing };
+
+}
+
+function drawMountDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+ var mountOption = assign({}, {
+ type: 'mount',
+ widthRatio: 1,
+ borderWidth: 1,
+ barBorderCircle: false,
+ barBorderRadius: [],
+ linearType: 'none',
+ linearOpacity: 1,
+ customColor: [],
+ colorStop: 0 },
+ opts.extra.mount);
+ mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio;
+ mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio;
+ var calPoints = [];
+ context.save();
+ var leftNum = -2;
+ var rightNum = xAxisPoints.length + 2;
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
+ rightNum = leftNum + opts.xAxis.itemCount + 4;
+ }
+ mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config);
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[0]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, process);
+ switch (mountOption.type) {
+ case 'bar':
+ for (var i = 0; i < points.length; i++) {
+ var item = points[i];
+ if (item !== null && i > leftNum && i < rightNum) {
+ var startX = item.x - eachSpacing * mountOption.widthRatio / 2;
+ var height = opts.height - item.y - opts.area[2];
+ context.beginPath();
+ var fillColor = item.color || series[i].color;
+ var strokeColor = item.color || series[i].color;
+ if (mountOption.linearType !== 'none') {
+ var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);
+ //透明渐变
+ if (mountOption.linearType == 'opacity') {
+ grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ } else {
+ grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));
+ grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ }
+ fillColor = grd;
+ }
+ // 圆角边框
+ if (mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4 || mountOption.barBorderCircle === true) {
+ var left = startX;
+ var top = item.y;
+ var width = item.width;
+ var _height3 = opts.height - opts.area[2] - item.y - mountOption.borderWidth * opts.pix / 2;
+ if (mountOption.barBorderCircle) {
+ mountOption.barBorderRadius = [width / 2, width / 2, 0, 0];
+ }var _mountOption$barBorde = _slicedToArray(
+ mountOption.barBorderRadius, 4),r0 = _mountOption$barBorde[0],r1 = _mountOption$barBorde[1],r2 = _mountOption$barBorde[2],r3 = _mountOption$barBorde[3];
+ var minRadius = Math.min(width / 2, _height3 / 2);
+ r0 = r0 > minRadius ? minRadius : r0;
+ r1 = r1 > minRadius ? minRadius : r1;
+ r2 = r2 > minRadius ? minRadius : r2;
+ r3 = r3 > minRadius ? minRadius : r3;
+ r0 = r0 < 0 ? 0 : r0;
+ r1 = r1 < 0 ? 0 : r1;
+ r2 = r2 < 0 ? 0 : r2;
+ r3 = r3 < 0 ? 0 : r3;
+ context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);
+ context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);
+ context.arc(left + width - r2, top + _height3 - r2, r2, 0, Math.PI / 2);
+ context.arc(left + r3, top + _height3 - r3, r3, Math.PI / 2, Math.PI);
+ } else {
+ context.moveTo(startX, item.y);
+ context.lineTo(startX + item.width, item.y);
+ context.lineTo(startX + item.width, opts.height - opts.area[2]);
+ context.lineTo(startX, opts.height - opts.area[2]);
+ context.lineTo(startX, item.y);
+ }
+ context.setStrokeStyle(strokeColor);
+ context.setFillStyle(fillColor);
+ if (mountOption.borderWidth > 0) {
+ context.setLineWidth(mountOption.borderWidth * opts.pix);
+ context.closePath();
+ context.stroke();
+ }
+ context.fill();
+ }
+ };
+ break;
+ case 'triangle':
+ for (var _i18 = 0; _i18 < points.length; _i18++) {
+ var _item9 = points[_i18];
+ if (_item9 !== null && _i18 > leftNum && _i18 < rightNum) {
+ var startX = _item9.x - eachSpacing * mountOption.widthRatio / 2;
+ var height = opts.height - _item9.y - opts.area[2];
+ context.beginPath();
+ var fillColor = _item9.color || series[_i18].color;
+ var strokeColor = _item9.color || series[_i18].color;
+ if (mountOption.linearType !== 'none') {
+ var grd = context.createLinearGradient(startX, _item9.y, startX, opts.height - opts.area[2]);
+ //透明渐变
+ if (mountOption.linearType == 'opacity') {
+ grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ } else {
+ grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));
+ grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ }
+ fillColor = grd;
+ }
+ context.moveTo(startX, opts.height - opts.area[2]);
+ context.lineTo(_item9.x, _item9.y);
+ context.lineTo(startX + _item9.width, opts.height - opts.area[2]);
+ context.setStrokeStyle(strokeColor);
+ context.setFillStyle(fillColor);
+ if (mountOption.borderWidth > 0) {
+ context.setLineWidth(mountOption.borderWidth * opts.pix);
+ context.stroke();
+ }
+ context.fill();
+ }
+ };
+ break;
+ case 'mount':
+ for (var _i19 = 0; _i19 < points.length; _i19++) {
+ var _item10 = points[_i19];
+ if (_item10 !== null && _i19 > leftNum && _i19 < rightNum) {
+ var startX = _item10.x - eachSpacing * mountOption.widthRatio / 2;
+ var height = opts.height - _item10.y - opts.area[2];
+ context.beginPath();
+ var fillColor = _item10.color || series[_i19].color;
+ var strokeColor = _item10.color || series[_i19].color;
+ if (mountOption.linearType !== 'none') {
+ var grd = context.createLinearGradient(startX, _item10.y, startX, opts.height - opts.area[2]);
+ //透明渐变
+ if (mountOption.linearType == 'opacity') {
+ grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ } else {
+ grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));
+ grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ }
+ fillColor = grd;
+ }
+ context.moveTo(startX, opts.height - opts.area[2]);
+ context.bezierCurveTo(_item10.x - _item10.width / 4, opts.height - opts.area[2], _item10.x - _item10.width / 4, _item10.y, _item10.x, _item10.y);
+ context.bezierCurveTo(_item10.x + _item10.width / 4, _item10.y, _item10.x + _item10.width / 4, opts.height - opts.area[2], startX + _item10.width, opts.height - opts.area[2]);
+ context.setStrokeStyle(strokeColor);
+ context.setFillStyle(fillColor);
+ if (mountOption.borderWidth > 0) {
+ context.setLineWidth(mountOption.borderWidth * opts.pix);
+ context.stroke();
+ }
+ context.fill();
+ }
+ };
+ break;
+ case 'sharp':
+ for (var _i20 = 0; _i20 < points.length; _i20++) {
+ var _item11 = points[_i20];
+ if (_item11 !== null && _i20 > leftNum && _i20 < rightNum) {
+ var startX = _item11.x - eachSpacing * mountOption.widthRatio / 2;
+ var height = opts.height - _item11.y - opts.area[2];
+ context.beginPath();
+ var fillColor = _item11.color || series[_i20].color;
+ var strokeColor = _item11.color || series[_i20].color;
+ if (mountOption.linearType !== 'none') {
+ var grd = context.createLinearGradient(startX, _item11.y, startX, opts.height - opts.area[2]);
+ //透明渐变
+ if (mountOption.linearType == 'opacity') {
+ grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ } else {
+ grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));
+ grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ }
+ fillColor = grd;
+ }
+ context.moveTo(startX, opts.height - opts.area[2]);
+ context.quadraticCurveTo(_item11.x - 0, opts.height - opts.area[2] - height / 4, _item11.x, _item11.y);
+ context.quadraticCurveTo(_item11.x + 0, opts.height - opts.area[2] - height / 4, startX + _item11.width, opts.height - opts.area[2]);
+ context.setStrokeStyle(strokeColor);
+ context.setFillStyle(fillColor);
+ if (mountOption.borderWidth > 0) {
+ context.setLineWidth(mountOption.borderWidth * opts.pix);
+ context.stroke();
+ }
+ context.fill();
+ }
+ };
+ break;}
+
+
+ if (opts.dataLabel !== false && process === 1) {
+ var _ranges, _minRange, _maxRange;
+ _ranges = [].concat(opts.chartData.yAxisData.ranges[0]);
+ _minRange = _ranges.pop();
+ _maxRange = _ranges.shift();
+ var points = getMountDataPoints(series, _minRange, _maxRange, xAxisPoints, eachSpacing, opts, mountOption, process);
+ drawMountPointText(points, series, config, context, opts);
+ }
+ context.restore();
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: points,
+ eachSpacing: eachSpacing };
+
+}
+
+function drawBarDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var yAxisPoints = [];
+ var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / opts.categories.length;
+ for (var i = 0; i < opts.categories.length; i++) {
+ yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i);
+ }
+ var columnOption = assign({}, {
+ type: 'group',
+ width: eachSpacing / 2,
+ meterBorder: 4,
+ meterFillColor: '#FFFFFF',
+ barBorderCircle: false,
+ barBorderRadius: [],
+ seriesGap: 2,
+ linearType: 'none',
+ linearOpacity: 1,
+ customColor: [],
+ colorStop: 0 },
+ opts.extra.bar);
+ var calPoints = [];
+ context.save();
+ var leftNum = -2;
+ var rightNum = yAxisPoints.length + 2;
+ if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
+ drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing);
+ }
+ columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.xAxisData.ranges);
+ maxRange = ranges.pop();
+ minRange = ranges.shift();
+ var data = eachSeries.data;
+ switch (columnOption.type) {
+ case 'group':
+ var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);
+ var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
+ calPoints.push(tooltipPoints);
+ points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);
+ for (var _i21 = 0; _i21 < points.length; _i21++) {
+ var item = points[_i21];
+ //fix issues/I27B1N yyoinge & Joeshu
+ if (item !== null && _i21 > leftNum && _i21 < rightNum) {
+ //var startX = item.x - item.width / 2;
+ var startX = opts.area[3];
+ var startY = item.y - item.width / 2;
+ var height = item.height;
+ context.beginPath();
+ var fillColor = item.color || eachSeries.color;
+ var strokeColor = item.color || eachSeries.color;
+ if (columnOption.linearType !== 'none') {
+ var grd = context.createLinearGradient(startX, item.y, item.x, item.y);
+ //透明渐变
+ if (columnOption.linearType == 'opacity') {
+ grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ } else {
+ grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
+ grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ }
+ fillColor = grd;
+ }
+ // 圆角边框
+ if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {
+ var left = startX;
+ var width = item.width;
+ var top = item.y - item.width / 2;
+ var _height4 = item.height;
+ if (columnOption.barBorderCircle) {
+ columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];
+ }var _columnOption$barBord3 = _slicedToArray(
+ columnOption.barBorderRadius, 4),r0 = _columnOption$barBord3[0],r1 = _columnOption$barBord3[1],r2 = _columnOption$barBord3[2],r3 = _columnOption$barBord3[3];
+ var minRadius = Math.min(width / 2, _height4 / 2);
+ r0 = r0 > minRadius ? minRadius : r0;
+ r1 = r1 > minRadius ? minRadius : r1;
+ r2 = r2 > minRadius ? minRadius : r2;
+ r3 = r3 > minRadius ? minRadius : r3;
+ r0 = r0 < 0 ? 0 : r0;
+ r1 = r1 < 0 ? 0 : r1;
+ r2 = r2 < 0 ? 0 : r2;
+ r3 = r3 < 0 ? 0 : r3;
+
+ context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2);
+ context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0);
+ context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2);
+ context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI);
+ } else {
+ context.moveTo(startX, startY);
+ context.lineTo(item.x, startY);
+ context.lineTo(item.x, startY + item.width);
+ context.lineTo(startX, startY + item.width);
+ context.lineTo(startX, startY);
+ context.setLineWidth(1);
+ context.setStrokeStyle(strokeColor);
+ }
+ context.setFillStyle(fillColor);
+ context.closePath();
+ //context.stroke();
+ context.fill();
+ }
+ };
+ break;
+ case 'stack':
+ // 绘制堆叠数据图
+ var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
+ calPoints.push(points);
+ points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);
+ for (var _i22 = 0; _i22 < points.length; _i22++) {
+ var _item12 = points[_i22];
+ if (_item12 !== null && _i22 > leftNum && _i22 < rightNum) {
+ context.beginPath();
+ var fillColor = _item12.color || eachSeries.color;
+ var startX = _item12.x0;
+ context.setFillStyle(fillColor);
+ context.moveTo(startX, _item12.y - _item12.width / 2);
+ context.fillRect(startX, _item12.y - _item12.width / 2, _item12.height, _item12.width);
+ context.closePath();
+ context.fill();
+ }
+ };
+ break;}
+
+ });
+
+ if (opts.dataLabel !== false && process === 1) {
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.xAxisData.ranges);
+ maxRange = ranges.pop();
+ minRange = ranges.shift();
+ var data = eachSeries.data;
+ switch (columnOption.type) {
+ case 'group':
+ var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);
+ points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);
+ drawBarPointText(points, eachSeries, config, context, opts);
+ break;
+ case 'stack':
+ var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
+ drawBarPointText(points, eachSeries, config, context, opts);
+ break;}
+
+ });
+ }
+ return {
+ yAxisPoints: yAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing };
+
+}
+
+function drawCandleDataPoints(series, seriesMA, opts, config, context) {
+ var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+ var candleOption = assign({}, {
+ color: {},
+ average: {} },
+ opts.extra.candle);
+ candleOption.color = assign({}, {
+ upLine: '#f04864',
+ upFill: '#f04864',
+ downLine: '#2fc25b',
+ downFill: '#2fc25b' },
+ candleOption.color);
+ candleOption.average = assign({}, {
+ show: false,
+ name: [],
+ day: [],
+ color: config.color },
+ candleOption.average);
+ opts.extra.candle = candleOption;
+ var xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+ var calPoints = [];
+ context.save();
+ var leftNum = -2;
+ var rightNum = xAxisPoints.length + 2;
+ var leftSpace = 0;
+ var rightSpace = opts.width + eachSpacing;
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
+ rightNum = leftNum + opts.xAxis.itemCount + 4;
+ leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
+ rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
+ }
+ //画均线
+ if (candleOption.average.show || seriesMA) {//Merge pull request !12 from 邱贵翔
+ seriesMA.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ var splitPointList = splitPoints(points, eachSeries);
+ for (var i = 0; i < splitPointList.length; i++) {
+ var _points = splitPointList[i];
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(1);
+ if (_points.length === 1) {
+ context.moveTo(_points[0].x, _points[0].y);
+ context.arc(_points[0].x, _points[0].y, 1, 0, 2 * Math.PI);
+ } else {
+ context.moveTo(_points[0].x, _points[0].y);
+ var startPoint = 0;
+ for (var j = 0; j < _points.length; j++) {
+ var item = _points[j];
+ if (startPoint == 0 && item.x > leftSpace) {
+ context.moveTo(item.x, item.y);
+ startPoint = 1;
+ }
+ if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+ var ctrlPoint = createCurveControlPoints(_points, j - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x,
+ item.y);
+ }
+ }
+ context.moveTo(_points[0].x, _points[0].y);
+ }
+ context.closePath();
+ context.stroke();
+ }
+ });
+ }
+ //画K线
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ calPoints.push(points);
+ var splitPointList = splitPoints(points, eachSeries);
+ for (var i = 0; i < splitPointList[0].length; i++) {
+ if (i > leftNum && i < rightNum) {
+ var item = splitPointList[0][i];
+ context.beginPath();
+ //如果上涨
+ if (data[i][1] - data[i][0] > 0) {
+ context.setStrokeStyle(candleOption.color.upLine);
+ context.setFillStyle(candleOption.color.upFill);
+ context.setLineWidth(1 * opts.pix);
+ context.moveTo(item[3].x, item[3].y); //顶点
+ context.lineTo(item[1].x, item[1].y); //收盘中间点
+ context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点
+ context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点
+ context.lineTo(item[0].x, item[0].y); //开盘中间点
+ context.lineTo(item[2].x, item[2].y); //底点
+ context.lineTo(item[0].x, item[0].y); //开盘中间点
+ context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点
+ context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点
+ context.lineTo(item[1].x, item[1].y); //收盘中间点
+ context.moveTo(item[3].x, item[3].y); //顶点
+ } else {
+ context.setStrokeStyle(candleOption.color.downLine);
+ context.setFillStyle(candleOption.color.downFill);
+ context.setLineWidth(1 * opts.pix);
+ context.moveTo(item[3].x, item[3].y); //顶点
+ context.lineTo(item[0].x, item[0].y); //开盘中间点
+ context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点
+ context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点
+ context.lineTo(item[1].x, item[1].y); //收盘中间点
+ context.lineTo(item[2].x, item[2].y); //底点
+ context.lineTo(item[1].x, item[1].y); //收盘中间点
+ context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点
+ context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点
+ context.lineTo(item[0].x, item[0].y); //开盘中间点
+ context.moveTo(item[3].x, item[3].y); //顶点
+ }
+ context.closePath();
+ context.fill();
+ context.stroke();
+ }
+ }
+ });
+ context.restore();
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing };
+
+}
+
+function drawAreaDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var areaOption = assign({}, {
+ type: 'straight',
+ opacity: 0.2,
+ addLine: false,
+ width: 2,
+ gradient: false },
+ opts.extra.area);
+ var xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+ var endY = opts.height - opts.area[2];
+ var calPoints = [];
+ context.save();
+ var leftSpace = 0;
+ var rightSpace = opts.width + eachSpacing;
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
+ rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
+ }
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ calPoints.push(points);
+ var splitPointList = splitPoints(points, eachSeries);
+ for (var i = 0; i < splitPointList.length; i++) {
+ var _points2 = splitPointList[i];
+ // 绘制区域数
+ context.beginPath();
+ context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));
+ if (areaOption.gradient) {
+ var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);
+ gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));
+ gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
+ context.setFillStyle(gradient);
+ } else {
+ context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));
+ }
+ context.setLineWidth(areaOption.width * opts.pix);
+ if (_points2.length > 1) {
+ var firstPoint = _points2[0];
+ var lastPoint = _points2[_points2.length - 1];
+ context.moveTo(firstPoint.x, firstPoint.y);
+ var startPoint = 0;
+ if (areaOption.type === 'curve') {
+ for (var j = 0; j < _points2.length; j++) {
+ var item = _points2[j];
+ if (startPoint == 0 && item.x > leftSpace) {
+ context.moveTo(item.x, item.y);
+ startPoint = 1;
+ }
+ if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+ var ctrlPoint = createCurveControlPoints(_points2, j - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
+ }
+ };
+ }
+ if (areaOption.type === 'straight') {
+ for (var _j = 0; _j < _points2.length; _j++) {
+ var _item13 = _points2[_j];
+ if (startPoint == 0 && _item13.x > leftSpace) {
+ context.moveTo(_item13.x, _item13.y);
+ startPoint = 1;
+ }
+ if (_j > 0 && _item13.x > leftSpace && _item13.x < rightSpace) {
+ context.lineTo(_item13.x, _item13.y);
+ }
+ };
+ }
+ if (areaOption.type === 'step') {
+ for (var _j2 = 0; _j2 < _points2.length; _j2++) {
+ var _item14 = _points2[_j2];
+ if (startPoint == 0 && _item14.x > leftSpace) {
+ context.moveTo(_item14.x, _item14.y);
+ startPoint = 1;
+ }
+ if (_j2 > 0 && _item14.x > leftSpace && _item14.x < rightSpace) {
+ context.lineTo(_item14.x, _points2[_j2 - 1].y);
+ context.lineTo(_item14.x, _item14.y);
+ }
+ };
+ }
+ context.lineTo(lastPoint.x, endY);
+ context.lineTo(firstPoint.x, endY);
+ context.lineTo(firstPoint.x, firstPoint.y);
+ } else {
+ var _item15 = _points2[0];
+ context.moveTo(_item15.x - eachSpacing / 2, _item15.y);
+ context.lineTo(_item15.x + eachSpacing / 2, _item15.y);
+ context.lineTo(_item15.x + eachSpacing / 2, endY);
+ context.lineTo(_item15.x - eachSpacing / 2, endY);
+ context.moveTo(_item15.x - eachSpacing / 2, _item15.y);
+ }
+ context.closePath();
+ context.fill();
+ //画连线
+ if (areaOption.addLine) {
+ if (eachSeries.lineType == 'dash') {
+ var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
+ dashLength *= opts.pix;
+ context.setLineDash([dashLength, dashLength]);
+ }
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(areaOption.width * opts.pix);
+ if (_points2.length === 1) {
+ context.moveTo(_points2[0].x, _points2[0].y);
+ context.arc(_points2[0].x, _points2[0].y, 1, 0, 2 * Math.PI);
+ } else {
+ context.moveTo(_points2[0].x, _points2[0].y);
+ var _startPoint = 0;
+ if (areaOption.type === 'curve') {
+ for (var _j3 = 0; _j3 < _points2.length; _j3++) {
+ var _item16 = _points2[_j3];
+ if (_startPoint == 0 && _item16.x > leftSpace) {
+ context.moveTo(_item16.x, _item16.y);
+ _startPoint = 1;
+ }
+ if (_j3 > 0 && _item16.x > leftSpace && _item16.x < rightSpace) {
+ var _ctrlPoint = createCurveControlPoints(_points2, _j3 - 1);
+ context.bezierCurveTo(_ctrlPoint.ctrA.x, _ctrlPoint.ctrA.y, _ctrlPoint.ctrB.x, _ctrlPoint.ctrB.y, _item16.x, _item16.y);
+ }
+ };
+ }
+ if (areaOption.type === 'straight') {
+ for (var _j4 = 0; _j4 < _points2.length; _j4++) {
+ var _item17 = _points2[_j4];
+ if (_startPoint == 0 && _item17.x > leftSpace) {
+ context.moveTo(_item17.x, _item17.y);
+ _startPoint = 1;
+ }
+ if (_j4 > 0 && _item17.x > leftSpace && _item17.x < rightSpace) {
+ context.lineTo(_item17.x, _item17.y);
+ }
+ };
+ }
+ if (areaOption.type === 'step') {
+ for (var _j5 = 0; _j5 < _points2.length; _j5++) {
+ var _item18 = _points2[_j5];
+ if (_startPoint == 0 && _item18.x > leftSpace) {
+ context.moveTo(_item18.x, _item18.y);
+ _startPoint = 1;
+ }
+ if (_j5 > 0 && _item18.x > leftSpace && _item18.x < rightSpace) {
+ context.lineTo(_item18.x, _points2[_j5 - 1].y);
+ context.lineTo(_item18.x, _item18.y);
+ }
+ };
+ }
+ context.moveTo(_points2[0].x, _points2[0].y);
+ }
+ context.stroke();
+ context.setLineDash([]);
+ }
+ }
+ //画点
+ if (opts.dataPointShape !== false) {
+ drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
+ }
+ });
+
+ if (opts.dataLabel !== false && process === 1) {
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ drawPointText(points, eachSeries, config, context, opts);
+ });
+ }
+ context.restore();
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing };
+
+}
+
+function drawScatterDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var scatterOption = assign({}, {
+ type: 'circle' },
+ opts.extra.scatter);
+ var xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+ var calPoints = [];
+ context.save();
+ var leftSpace = 0;
+ var rightSpace = opts.width + eachSpacing;
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
+ rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
+ }
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setFillStyle(eachSeries.color);
+ context.setLineWidth(1 * opts.pix);
+ var shape = eachSeries.pointShape;
+ if (shape === 'diamond') {
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.moveTo(item.x, item.y - 4.5);
+ context.lineTo(item.x - 4.5, item.y);
+ context.lineTo(item.x, item.y + 4.5);
+ context.lineTo(item.x + 4.5, item.y);
+ context.lineTo(item.x, item.y - 4.5);
+ }
+ });
+ } else if (shape === 'circle') {
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.moveTo(item.x + 2.5 * opts.pix, item.y);
+ context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);
+ }
+ });
+ } else if (shape === 'square') {
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.moveTo(item.x - 3.5, item.y - 3.5);
+ context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
+ }
+ });
+ } else if (shape === 'triangle') {
+ points.forEach(function (item, index) {
+ if (item !== null) {
+ context.moveTo(item.x, item.y - 4.5);
+ context.lineTo(item.x - 4.5, item.y + 4.5);
+ context.lineTo(item.x + 4.5, item.y + 4.5);
+ context.lineTo(item.x, item.y - 4.5);
+ }
+ });
+ } else if (shape === 'triangle') {
+ return;
+ }
+ context.closePath();
+ context.fill();
+ context.stroke();
+ });
+ if (opts.dataLabel !== false && process === 1) {
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ drawPointText(points, eachSeries, config, context, opts);
+ });
+ }
+ context.restore();
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing };
+
+}
+
+function drawBubbleDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var bubbleOption = assign({}, {
+ opacity: 1,
+ border: 2 },
+ opts.extra.bubble);
+ var xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+ var calPoints = [];
+ context.save();
+ var leftSpace = 0;
+ var rightSpace = opts.width + eachSpacing;
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
+ rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
+ }
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(bubbleOption.border * opts.pix);
+ context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity));
+ points.forEach(function (item, index) {
+ context.moveTo(item.x + item.r, item.y);
+ context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false);
+ });
+ context.closePath();
+ context.fill();
+ context.stroke();
+
+ if (opts.dataLabel !== false && process === 1) {
+ points.forEach(function (item, index) {
+ context.beginPath();
+ var fontSize = series.textSize * opts.pix || config.fontSize;
+ context.setFontSize(fontSize);
+ context.setFillStyle(series.textColor || "#FFFFFF");
+ context.setTextAlign('center');
+ context.fillText(String(item.t), item.x, item.y + fontSize / 2);
+ context.closePath();
+ context.stroke();
+ context.setTextAlign('left');
+ });
+ }
+ });
+ context.restore();
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing };
+
+}
+
+function drawLineDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var lineOption = assign({}, {
+ type: 'straight',
+ width: 2 },
+ opts.extra.line);
+ lineOption.width *= opts.pix;
+ var xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+ var calPoints = [];
+ context.save();
+ var leftSpace = 0;
+ var rightSpace = opts.width + eachSpacing;
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
+ rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
+ }
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ calPoints.push(points);
+ var splitPointList = splitPoints(points, eachSeries);
+ if (eachSeries.lineType == 'dash') {
+ var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
+ dashLength *= opts.pix;
+ context.setLineDash([dashLength, dashLength]);
+ }
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(lineOption.width);
+ splitPointList.forEach(function (points, index) {
+ if (points.length === 1) {
+ context.moveTo(points[0].x, points[0].y);
+ context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+ } else {
+ context.moveTo(points[0].x, points[0].y);
+ var startPoint = 0;
+ if (lineOption.type === 'curve') {
+ for (var j = 0; j < points.length; j++) {
+ var item = points[j];
+ if (startPoint == 0 && item.x > leftSpace) {
+ context.moveTo(item.x, item.y);
+ startPoint = 1;
+ }
+ if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+ var ctrlPoint = createCurveControlPoints(points, j - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
+ }
+ };
+ }
+ if (lineOption.type === 'straight') {
+ for (var _j6 = 0; _j6 < points.length; _j6++) {
+ var _item19 = points[_j6];
+ if (startPoint == 0 && _item19.x > leftSpace) {
+ context.moveTo(_item19.x, _item19.y);
+ startPoint = 1;
+ }
+ if (_j6 > 0 && _item19.x > leftSpace && _item19.x < rightSpace) {
+ context.lineTo(_item19.x, _item19.y);
+ }
+ };
+ }
+ if (lineOption.type === 'step') {
+ for (var _j7 = 0; _j7 < points.length; _j7++) {
+ var _item20 = points[_j7];
+ if (startPoint == 0 && _item20.x > leftSpace) {
+ context.moveTo(_item20.x, _item20.y);
+ startPoint = 1;
+ }
+ if (_j7 > 0 && _item20.x > leftSpace && _item20.x < rightSpace) {
+ context.lineTo(_item20.x, points[_j7 - 1].y);
+ context.lineTo(_item20.x, _item20.y);
+ }
+ };
+ }
+ context.moveTo(points[0].x, points[0].y);
+ }
+ });
+ context.stroke();
+ context.setLineDash([]);
+ if (opts.dataPointShape !== false) {
+ drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
+ }
+ });
+ if (opts.dataLabel !== false && process === 1) {
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ drawPointText(points, eachSeries, config, context, opts);
+ });
+ }
+ context.restore();
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing };
+
+}
+
+function drawMixDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+ var columnOption = assign({}, {
+ width: eachSpacing / 2,
+ barBorderCircle: false,
+ barBorderRadius: [],
+ seriesGap: 2,
+ linearType: 'none',
+ linearOpacity: 1,
+ customColor: [],
+ colorStop: 0 },
+ opts.extra.mix.column);
+ var areaOption = assign({}, {
+ opacity: 0.2,
+ gradient: false },
+ opts.extra.mix.area);
+ var endY = opts.height - opts.area[2];
+ var calPoints = [];
+ var columnIndex = 0;
+ var columnLength = 0;
+ series.forEach(function (eachSeries, seriesIndex) {
+ if (eachSeries.type == 'column') {
+ columnLength += 1;
+ }
+ });
+ context.save();
+ var leftNum = -2;
+ var rightNum = xAxisPoints.length + 2;
+ var leftSpace = 0;
+ var rightSpace = opts.width + eachSpacing;
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
+ rightNum = leftNum + opts.xAxis.itemCount + 4;
+ leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
+ rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
+ }
+ columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ calPoints.push(points);
+ // 绘制柱状数据图
+ if (eachSeries.type == 'column') {
+ points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
+ for (var i = 0; i < points.length; i++) {
+ var item = points[i];
+ if (item !== null && i > leftNum && i < rightNum) {
+ var startX = item.x - item.width / 2;
+ var height = opts.height - item.y - opts.area[2];
+ context.beginPath();
+ var fillColor = item.color || eachSeries.color;
+ var strokeColor = item.color || eachSeries.color;
+ if (columnOption.linearType !== 'none') {
+ var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);
+ //透明渐变
+ if (columnOption.linearType == 'opacity') {
+ grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ } else {
+ grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
+ grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
+ grd.addColorStop(1, hexToRgb(fillColor, 1));
+ }
+ fillColor = grd;
+ }
+ // 圆角边框
+ if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle) {
+ var left = startX;
+ var top = item.y;
+ var width = item.width;
+ var _height5 = opts.height - opts.area[2] - item.y;
+ if (columnOption.barBorderCircle) {
+ columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];
+ }var _columnOption$barBord4 = _slicedToArray(
+ columnOption.barBorderRadius, 4),r0 = _columnOption$barBord4[0],r1 = _columnOption$barBord4[1],r2 = _columnOption$barBord4[2],r3 = _columnOption$barBord4[3];
+ var minRadius = Math.min(width / 2, _height5 / 2);
+ r0 = r0 > minRadius ? minRadius : r0;
+ r1 = r1 > minRadius ? minRadius : r1;
+ r2 = r2 > minRadius ? minRadius : r2;
+ r3 = r3 > minRadius ? minRadius : r3;
+ r0 = r0 < 0 ? 0 : r0;
+ r1 = r1 < 0 ? 0 : r1;
+ r2 = r2 < 0 ? 0 : r2;
+ r3 = r3 < 0 ? 0 : r3;
+ context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);
+ context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);
+ context.arc(left + width - r2, top + _height5 - r2, r2, 0, Math.PI / 2);
+ context.arc(left + r3, top + _height5 - r3, r3, Math.PI / 2, Math.PI);
+ } else {
+ context.moveTo(startX, item.y);
+ context.lineTo(startX + item.width, item.y);
+ context.lineTo(startX + item.width, opts.height - opts.area[2]);
+ context.lineTo(startX, opts.height - opts.area[2]);
+ context.lineTo(startX, item.y);
+ context.setLineWidth(1);
+ context.setStrokeStyle(strokeColor);
+ }
+ context.setFillStyle(fillColor);
+ context.closePath();
+ context.fill();
+ }
+ }
+ columnIndex += 1;
+ }
+ //绘制区域图数据
+ if (eachSeries.type == 'area') {
+ var _splitPointList = splitPoints(points, eachSeries);
+ for (var _i23 = 0; _i23 < _splitPointList.length; _i23++) {
+ var _points3 = _splitPointList[_i23];
+ // 绘制区域数据
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));
+ if (areaOption.gradient) {
+ var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);
+ gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));
+ gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
+ context.setFillStyle(gradient);
+ } else {
+ context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));
+ }
+ context.setLineWidth(2 * opts.pix);
+ if (_points3.length > 1) {
+ var firstPoint = _points3[0];
+ var lastPoint = _points3[_points3.length - 1];
+ context.moveTo(firstPoint.x, firstPoint.y);
+ var startPoint = 0;
+ if (eachSeries.style === 'curve') {
+ for (var j = 0; j < _points3.length; j++) {
+ var _item21 = _points3[j];
+ if (startPoint == 0 && _item21.x > leftSpace) {
+ context.moveTo(_item21.x, _item21.y);
+ startPoint = 1;
+ }
+ if (j > 0 && _item21.x > leftSpace && _item21.x < rightSpace) {
+ var ctrlPoint = createCurveControlPoints(_points3, j - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item21.x, _item21.y);
+ }
+ };
+ } else {
+ for (var _j8 = 0; _j8 < _points3.length; _j8++) {
+ var _item22 = _points3[_j8];
+ if (startPoint == 0 && _item22.x > leftSpace) {
+ context.moveTo(_item22.x, _item22.y);
+ startPoint = 1;
+ }
+ if (_j8 > 0 && _item22.x > leftSpace && _item22.x < rightSpace) {
+ context.lineTo(_item22.x, _item22.y);
+ }
+ };
+ }
+ context.lineTo(lastPoint.x, endY);
+ context.lineTo(firstPoint.x, endY);
+ context.lineTo(firstPoint.x, firstPoint.y);
+ } else {
+ var _item23 = _points3[0];
+ context.moveTo(_item23.x - eachSpacing / 2, _item23.y);
+ context.lineTo(_item23.x + eachSpacing / 2, _item23.y);
+ context.lineTo(_item23.x + eachSpacing / 2, endY);
+ context.lineTo(_item23.x - eachSpacing / 2, endY);
+ context.moveTo(_item23.x - eachSpacing / 2, _item23.y);
+ }
+ context.closePath();
+ context.fill();
+ }
+ }
+ // 绘制折线数据图
+ if (eachSeries.type == 'line') {
+ var splitPointList = splitPoints(points, eachSeries);
+ splitPointList.forEach(function (points, index) {
+ if (eachSeries.lineType == 'dash') {
+ var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
+ dashLength *= opts.pix;
+ context.setLineDash([dashLength, dashLength]);
+ }
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(2 * opts.pix);
+ if (points.length === 1) {
+ context.moveTo(points[0].x, points[0].y);
+ context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+ } else {
+ context.moveTo(points[0].x, points[0].y);
+ var _startPoint2 = 0;
+ if (eachSeries.style == 'curve') {
+ for (var _j9 = 0; _j9 < points.length; _j9++) {
+ var _item24 = points[_j9];
+ if (_startPoint2 == 0 && _item24.x > leftSpace) {
+ context.moveTo(_item24.x, _item24.y);
+ _startPoint2 = 1;
+ }
+ if (_j9 > 0 && _item24.x > leftSpace && _item24.x < rightSpace) {
+ var ctrlPoint = createCurveControlPoints(points, _j9 - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,
+ _item24.x, _item24.y);
+ }
+ }
+ } else {
+ for (var _j10 = 0; _j10 < points.length; _j10++) {
+ var _item25 = points[_j10];
+ if (_startPoint2 == 0 && _item25.x > leftSpace) {
+ context.moveTo(_item25.x, _item25.y);
+ _startPoint2 = 1;
+ }
+ if (_j10 > 0 && _item25.x > leftSpace && _item25.x < rightSpace) {
+ context.lineTo(_item25.x, _item25.y);
+ }
+ }
+ }
+ context.moveTo(points[0].x, points[0].y);
+ }
+ context.stroke();
+ context.setLineDash([]);
+ });
+ }
+ // 绘制点数据图
+ if (eachSeries.type == 'point') {
+ eachSeries.addPoint = true;
+ }
+ if (eachSeries.addPoint == true && eachSeries.type !== 'column') {
+ drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
+ }
+ });
+ if (opts.dataLabel !== false && process === 1) {
+ var columnIndex = 0;
+ series.forEach(function (eachSeries, seriesIndex) {
+ var ranges, minRange, maxRange;
+ ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+ minRange = ranges.pop();
+ maxRange = ranges.shift();
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ if (eachSeries.type !== 'column') {
+ drawPointText(points, eachSeries, config, context, opts);
+ } else {
+ points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
+ drawPointText(points, eachSeries, config, context, opts);
+ columnIndex += 1;
+ }
+ });
+ }
+ context.restore();
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing };
+
+}
+
+
+function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {
+ var toolTipOption = opts.extra.tooltip || {};
+ if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'mount' || opts.type == 'candle' || opts.type == 'mix')) {
+ drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints);
+ }
+ context.save();
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+ if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
+ drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);
+ }
+ context.restore();
+
+}
+
+function drawXAxis(categories, opts, config, context) {
+
+ var xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ startX = xAxisData.startX,
+ endX = xAxisData.endX,
+ eachSpacing = xAxisData.eachSpacing;
+ var boundaryGap = 'center';
+ if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {
+ boundaryGap = opts.xAxis.boundaryGap;
+ }
+ var startY = opts.height - opts.area[2];
+ var endY = opts.area[0];
+
+ //绘制滚动条
+ if (opts.enableScroll && opts.xAxis.scrollShow) {
+ var scrollY = opts.height - opts.area[2] + config.xAxisHeight;
+ var scrollScreenWidth = endX - startX;
+ var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);
+ if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
+ if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
+ scrollTotalWidth += (opts.extra.mount.widthRatio - 1) * eachSpacing;
+ }
+ var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;
+ var scrollLeft = 0;
+ if (opts._scrollDistance_) {
+ scrollLeft = -opts._scrollDistance_ * scrollScreenWidth / scrollTotalWidth;
+ }
+ context.beginPath();
+ context.setLineCap('round');
+ context.setLineWidth(6 * opts.pix);
+ context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF");
+ context.moveTo(startX, scrollY);
+ context.lineTo(endX, scrollY);
+ context.stroke();
+ context.closePath();
+ context.beginPath();
+ context.setLineCap('round');
+ context.setLineWidth(6 * opts.pix);
+ context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6");
+ context.moveTo(startX + scrollLeft, scrollY);
+ context.lineTo(startX + scrollLeft + scrollWidth, scrollY);
+ context.stroke();
+ context.closePath();
+ context.setLineCap('butt');
+ }
+ context.save();
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+ //绘制X轴刻度线
+ if (opts.xAxis.calibration === true) {
+ context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
+ context.setLineCap('butt');
+ context.setLineWidth(1 * opts.pix);
+ xAxisPoints.forEach(function (item, index) {
+ if (index > 0) {
+ context.beginPath();
+ context.moveTo(item - eachSpacing / 2, startY);
+ context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix);
+ context.closePath();
+ context.stroke();
+ }
+ });
+ }
+ //绘制X轴网格
+ if (opts.xAxis.disableGrid !== true) {
+ context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
+ context.setLineCap('butt');
+ context.setLineWidth(1 * opts.pix);
+ if (opts.xAxis.gridType == 'dash') {
+ context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]);
+ }
+ opts.xAxis.gridEval = opts.xAxis.gridEval || 1;
+ xAxisPoints.forEach(function (item, index) {
+ if (index % opts.xAxis.gridEval == 0) {
+ context.beginPath();
+ context.moveTo(item, startY);
+ context.lineTo(item, endY);
+ context.stroke();
+ }
+ });
+ context.setLineDash([]);
+ }
+ //绘制X轴文案
+ if (opts.xAxis.disabled !== true) {
+ // 对X轴列表做抽稀处理
+ //默认全部显示X轴标签
+ var maxXAxisListLength = categories.length;
+ //如果设置了X轴单屏数量
+ if (opts.xAxis.labelCount) {
+ //如果设置X轴密度
+ if (opts.xAxis.itemCount) {
+ maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);
+ } else {
+ maxXAxisListLength = opts.xAxis.labelCount;
+ }
+ maxXAxisListLength -= 1;
+ }
+
+ var ratio = Math.ceil(categories.length / maxXAxisListLength);
+
+ var newCategories = [];
+ var cgLength = categories.length;
+ for (var i = 0; i < cgLength; i++) {
+ if (i % ratio !== 0) {
+ newCategories.push("");
+ } else {
+ newCategories.push(categories[i]);
+ }
+ }
+ newCategories[cgLength - 1] = categories[cgLength - 1];
+ var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;
+ if (config._xAxisTextAngle_ === 0) {
+ newCategories.forEach(function (item, index) {
+ var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;
+ var offset = -measureText(String(xitem), xAxisFontSize, context) / 2;
+ if (boundaryGap == 'center') {
+ offset += eachSpacing / 2;
+ }
+ var scrollHeight = 0;
+ if (opts.xAxis.scrollShow) {
+ scrollHeight = 6 * opts.pix;
+ }
+ context.beginPath();
+ context.setFontSize(xAxisFontSize);
+ context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);
+ context.fillText(String(xitem), xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - scrollHeight - xAxisFontSize) / 2);
+ context.closePath();
+ context.stroke();
+ });
+ } else {
+ newCategories.forEach(function (item, index) {
+ var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item;
+ context.save();
+ context.beginPath();
+ context.setFontSize(xAxisFontSize);
+ context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);
+ var textWidth = measureText(String(xitem), xAxisFontSize, context);
+ var offsetX = xAxisPoints[index];
+ if (boundaryGap == 'center') {
+ offsetX = xAxisPoints[index] + eachSpacing / 2;
+ }
+ var scrollHeight = 0;
+ if (opts.xAxis.scrollShow) {
+ scrollHeight = 6 * opts.pix;
+ }
+ var offsetY = startY + 6 * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_));
+ if (opts.xAxis.rotateAngle < 0) {
+ offsetX -= xAxisFontSize / 2;
+ textWidth = 0;
+ } else {
+ offsetX += xAxisFontSize / 2;
+ textWidth = -textWidth;
+ }
+ context.translate(offsetX, offsetY);
+ context.rotate(-1 * config._xAxisTextAngle_);
+ context.fillText(String(xitem), textWidth, 0);
+ context.closePath();
+ context.stroke();
+ context.restore();
+ });
+ }
+ }
+ context.restore();
+ //绘制X轴轴线
+ if (opts.xAxis.axisLine) {
+ context.beginPath();
+ context.setStrokeStyle(opts.xAxis.axisLineColor);
+ context.setLineWidth(1 * opts.pix);
+ context.moveTo(startX, opts.height - opts.area[2]);
+ context.lineTo(endX, opts.height - opts.area[2]);
+ context.stroke();
+ }
+}
+
+function drawYAxisGrid(categories, opts, config, context) {
+ if (opts.yAxis.disableGrid === true) {
+ return;
+ }
+ var spacingValid = opts.height - opts.area[0] - opts.area[2];
+ var eachSpacing = spacingValid / opts.yAxis.splitNumber;
+ var startX = opts.area[3];
+ var xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
+ xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;
+ var TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);
+ if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
+ if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
+ TotalWidth += (opts.extra.mount.widthRatio - 1) * xAxiseachSpacing;
+ }
+ var endX = startX + TotalWidth;
+ var points = [];
+ var startY = 1;
+ if (opts.xAxis.axisLine === false) {
+ startY = 0;
+ }
+ for (var i = startY; i < opts.yAxis.splitNumber + 1; i++) {
+ points.push(opts.height - opts.area[2] - eachSpacing * i);
+ }
+ context.save();
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+ if (opts.yAxis.gridType == 'dash') {
+ context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]);
+ }
+ context.setStrokeStyle(opts.yAxis.gridColor);
+ context.setLineWidth(1 * opts.pix);
+ points.forEach(function (item, index) {
+ context.beginPath();
+ context.moveTo(startX, item);
+ context.lineTo(endX, item);
+ context.stroke();
+ });
+ context.setLineDash([]);
+ context.restore();
+}
+
+function drawYAxis(series, opts, config, context) {
+ if (opts.yAxis.disabled === true) {
+ return;
+ }
+ var spacingValid = opts.height - opts.area[0] - opts.area[2];
+ var eachSpacing = spacingValid / opts.yAxis.splitNumber;
+ var startX = opts.area[3];
+ var endX = opts.width - opts.area[1];
+ var endY = opts.height - opts.area[2];
+ var fillEndY = endY + config.xAxisHeight;
+ if (opts.xAxis.scrollShow) {
+ fillEndY -= 3 * opts.pix;
+ }
+ if (opts.xAxis.rotateLabel) {
+ fillEndY = opts.height - opts.area[2] + opts.fontSize * opts.pix / 2;
+ }
+ // set YAxis background
+ context.beginPath();
+ context.setFillStyle(opts.background);
+ if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') {
+ context.fillRect(0, 0, startX, fillEndY);
+ }
+ if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') {
+ context.fillRect(endX, 0, opts.width, fillEndY);
+ }
+ context.closePath();
+ context.stroke();
+
+ var tStartLeft = opts.area[3];
+ var tStartRight = opts.width - opts.area[1];
+ var tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2;
+ if (opts.yAxis.data) {var _loop4 = function _loop4(
+ i) {
+ var yData = opts.yAxis.data[i];
+ points = [];
+ if (yData.type === 'categories') {
+ for (var _i24 = 0; _i24 <= yData.categories.length; _i24++) {
+ points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * _i24);
+ }
+ } else {
+ for (var _i25 = 0; _i25 <= opts.yAxis.splitNumber; _i25++) {
+ points.push(opts.area[0] + eachSpacing * _i25);
+ }
+ }
+ if (yData.disabled !== true) {
+ var rangesFormat = opts.chartData.yAxisData.rangesFormat[i];
+ var yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize;
+ var yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];
+ var textAlign = yData.textAlign || "right";
+ //画Y轴刻度及文案
+ rangesFormat.forEach(function (item, index) {
+ var pos = points[index];
+ context.beginPath();
+ context.setFontSize(yAxisFontSize);
+ context.setLineWidth(1 * opts.pix);
+ context.setStrokeStyle(yData.axisLineColor || '#cccccc');
+ context.setFillStyle(yData.fontColor || opts.fontColor);
+ var tmpstrat = 0;
+ var gapwidth = 4 * opts.pix;
+ if (yAxisWidth.position == 'left') {
+ //画刻度线
+ if (yData.calibration == true) {
+ context.moveTo(tStartLeft, pos);
+ context.lineTo(tStartLeft - 3 * opts.pix, pos);
+ gapwidth += 3 * opts.pix;
+ }
+ //画文字
+ switch (textAlign) {
+ case "left":
+ context.setTextAlign('left');
+ tmpstrat = tStartLeft - yAxisWidth.width;
+ break;
+ case "right":
+ context.setTextAlign('right');
+ tmpstrat = tStartLeft - gapwidth;
+ break;
+ default:
+ context.setTextAlign('center');
+ tmpstrat = tStartLeft - yAxisWidth.width / 2;}
+
+ context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);
+
+ } else if (yAxisWidth.position == 'right') {
+ //画刻度线
+ if (yData.calibration == true) {
+ context.moveTo(tStartRight, pos);
+ context.lineTo(tStartRight + 3 * opts.pix, pos);
+ gapwidth += 3 * opts.pix;
+ }
+ switch (textAlign) {
+ case "left":
+ context.setTextAlign('left');
+ tmpstrat = tStartRight + gapwidth;
+ break;
+ case "right":
+ context.setTextAlign('right');
+ tmpstrat = tStartRight + yAxisWidth.width;
+ break;
+ default:
+ context.setTextAlign('center');
+ tmpstrat = tStartRight + yAxisWidth.width / 2;}
+
+ context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);
+ } else if (yAxisWidth.position == 'center') {
+ //画刻度线
+ if (yData.calibration == true) {
+ context.moveTo(tStartCenter, pos);
+ context.lineTo(tStartCenter - 3 * opts.pix, pos);
+ gapwidth += 3 * opts.pix;
+ }
+ //画文字
+ switch (textAlign) {
+ case "left":
+ context.setTextAlign('left');
+ tmpstrat = tStartCenter - yAxisWidth.width;
+ break;
+ case "right":
+ context.setTextAlign('right');
+ tmpstrat = tStartCenter - gapwidth;
+ break;
+ default:
+ context.setTextAlign('center');
+ tmpstrat = tStartCenter - yAxisWidth.width / 2;}
+
+ context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);
+ }
+ context.closePath();
+ context.stroke();
+ context.setTextAlign('left');
+ });
+ //画Y轴轴线
+ if (yData.axisLine !== false) {
+ context.beginPath();
+ context.setStrokeStyle(yData.axisLineColor || '#cccccc');
+ context.setLineWidth(1 * opts.pix);
+ if (yAxisWidth.position == 'left') {
+ context.moveTo(tStartLeft, opts.height - opts.area[2]);
+ context.lineTo(tStartLeft, opts.area[0]);
+ } else if (yAxisWidth.position == 'right') {
+ context.moveTo(tStartRight, opts.height - opts.area[2]);
+ context.lineTo(tStartRight, opts.area[0]);
+ } else if (yAxisWidth.position == 'center') {
+ context.moveTo(tStartCenter, opts.height - opts.area[2]);
+ context.lineTo(tStartCenter, opts.area[0]);
+ }
+ context.stroke();
+ }
+ //画Y轴标题
+ if (opts.yAxis.showTitle) {
+ var titleFontSize = yData.titleFontSize * opts.pix || config.fontSize;
+ var title = yData.title;
+ context.beginPath();
+ context.setFontSize(titleFontSize);
+ context.setFillStyle(yData.titleFontColor || opts.fontColor);
+ if (yAxisWidth.position == 'left') {
+ context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);
+ } else if (yAxisWidth.position == 'right') {
+ context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);
+ } else if (yAxisWidth.position == 'center') {
+ context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);
+ }
+ context.closePath();
+ context.stroke();
+ }
+ if (yAxisWidth.position == 'left') {
+ tStartLeft -= yAxisWidth.width + opts.yAxis.padding * opts.pix;
+ } else {
+ tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix;
+ }
+ }};for (var i = 0; i < opts.yAxis.data.length; i++) {var points;_loop4(i);
+ }
+ }
+
+}
+
+function drawLegend(series, opts, config, context, chartData) {
+ if (opts.legend.show === false) {
+ return;
+ }
+ var legendData = chartData.legendData;
+ var legendList = legendData.points;
+ var legendArea = legendData.area;
+ var padding = opts.legend.padding * opts.pix;
+ var fontSize = opts.legend.fontSize * opts.pix;
+ var shapeWidth = 15 * opts.pix;
+ var shapeRight = 5 * opts.pix;
+ var itemGap = opts.legend.itemGap * opts.pix;
+ var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);
+ //画背景及边框
+ context.beginPath();
+ context.setLineWidth(opts.legend.borderWidth * opts.pix);
+ context.setStrokeStyle(opts.legend.borderColor);
+ context.setFillStyle(opts.legend.backgroundColor);
+ context.moveTo(legendArea.start.x, legendArea.start.y);
+ context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);
+ context.closePath();
+ context.fill();
+ context.stroke();
+ legendList.forEach(function (itemList, listIndex) {
+ var width = 0;
+ var height = 0;
+ width = legendData.widthArr[listIndex];
+ height = legendData.heightArr[listIndex];
+ var startX = 0;
+ var startY = 0;
+ if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
+ switch (opts.legend.float) {
+ case 'left':
+ startX = legendArea.start.x + padding;
+ break;
+ case 'right':
+ startX = legendArea.start.x + legendArea.width - width;
+ break;
+ default:
+ startX = legendArea.start.x + (legendArea.width - width) / 2;}
+
+ startY = legendArea.start.y + padding + listIndex * lineHeight;
+ } else {
+ if (listIndex == 0) {
+ width = 0;
+ } else {
+ width = legendData.widthArr[listIndex - 1];
+ }
+ startX = legendArea.start.x + padding + width;
+ startY = legendArea.start.y + padding + (legendArea.height - height) / 2;
+ }
+ context.setFontSize(config.fontSize);
+ for (var i = 0; i < itemList.length; i++) {
+ var item = itemList[i];
+ item.area = [0, 0, 0, 0];
+ item.area[0] = startX;
+ item.area[1] = startY;
+ item.area[3] = startY + lineHeight;
+ context.beginPath();
+ context.setLineWidth(1 * opts.pix);
+ context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);
+ context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);
+ switch (item.legendShape) {
+ case 'line':
+ context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix);
+ context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix);
+ break;
+ case 'triangle':
+ context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
+ context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);
+ context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);
+ context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
+ break;
+ case 'diamond':
+ context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
+ context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight);
+ context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);
+ context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight);
+ context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
+ break;
+ case 'circle':
+ context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight);
+ context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI);
+ break;
+ case 'rect':
+ context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);
+ context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);
+ break;
+ case 'square':
+ context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
+ context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);
+ break;
+ case 'none':
+ break;
+ default:
+ context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);
+ context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);}
+
+ context.closePath();
+ context.fill();
+ context.stroke();
+ startX += shapeWidth + shapeRight;
+ var fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;
+ var legendText = item.legendText ? item.legendText : item.name;
+ context.beginPath();
+ context.setFontSize(fontSize);
+ context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);
+ context.fillText(legendText, startX, startY + fontTrans);
+ context.closePath();
+ context.stroke();
+ if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
+ startX += measureText(legendText, fontSize, context) + itemGap;
+ item.area[2] = startX;
+ } else {
+ item.area[2] = startX + measureText(legendText, fontSize, context) + itemGap;;
+ startX -= shapeWidth + shapeRight;
+ startY += lineHeight;
+ }
+ }
+ });
+}
+
+function drawPieDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var pieOption = assign({}, {
+ activeOpacity: 0.5,
+ activeRadius: 10,
+ offsetAngle: 0,
+ labelWidth: 15,
+ ringWidth: 30,
+ customRadius: 0,
+ border: false,
+ borderWidth: 2,
+ borderColor: '#FFFFFF',
+ centerColor: '#FFFFFF',
+ linearType: 'none',
+ customColor: [] },
+ opts.type == "pie" ? opts.extra.pie : opts.extra.ring);
+ var centerPosition = {
+ x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+ y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 };
+
+ if (config.pieChartLinePadding == 0) {
+ config.pieChartLinePadding = pieOption.activeRadius * opts.pix;
+ }
+
+ var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
+ radius = radius < 10 ? 10 : radius;
+ if (pieOption.customRadius > 0) {
+ radius = pieOption.customRadius * opts.pix;
+ }
+ series = getPieDataPoints(series, radius, process);
+ var activeRadius = pieOption.activeRadius * opts.pix;
+ pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config);
+ series = series.map(function (eachSeries) {
+ eachSeries._start_ += pieOption.offsetAngle * Math.PI / 180;
+ return eachSeries;
+ });
+ series.forEach(function (eachSeries, seriesIndex) {
+ if (opts.tooltip) {
+ if (opts.tooltip.index == seriesIndex) {
+ context.beginPath();
+ context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5));
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
+ context.closePath();
+ context.fill();
+ }
+ }
+ context.beginPath();
+ context.setLineWidth(pieOption.borderWidth * opts.pix);
+ context.lineJoin = "round";
+ context.setStrokeStyle(pieOption.borderColor);
+ var fillcolor = eachSeries.color;
+ if (pieOption.linearType == 'custom') {
+ var grd;
+ if (context.createCircularGradient) {
+ grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);
+ } else {
+ grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);
+ }
+ grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1));
+ grd.addColorStop(1, hexToRgb(eachSeries.color, 1));
+ fillcolor = grd;
+ }
+ context.setFillStyle(fillcolor);
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
+ context.closePath();
+ context.fill();
+ if (pieOption.border == true) {
+ context.stroke();
+ }
+ });
+ if (opts.type === 'ring') {
+ var innerPieWidth = radius * 0.6;
+ if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) {
+ innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix);
+ }
+ context.beginPath();
+ context.setFillStyle(pieOption.centerColor);
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);
+ context.closePath();
+ context.fill();
+ }
+ if (opts.dataLabel !== false && process === 1) {
+ drawPieText(series, opts, config, context, radius, centerPosition);
+ }
+ if (process === 1 && opts.type === 'ring') {
+ drawRingTitle(opts, config, context, centerPosition);
+ }
+ return {
+ center: centerPosition,
+ radius: radius,
+ series: series };
+
+}
+
+function drawRoseDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var roseOption = assign({}, {
+ type: 'area',
+ activeOpacity: 0.5,
+ activeRadius: 10,
+ offsetAngle: 0,
+ labelWidth: 15,
+ border: false,
+ borderWidth: 2,
+ borderColor: '#FFFFFF',
+ linearType: 'none',
+ customColor: [] },
+ opts.extra.rose);
+ if (config.pieChartLinePadding == 0) {
+ config.pieChartLinePadding = roseOption.activeRadius * opts.pix;
+ }
+ var centerPosition = {
+ x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+ y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 };
+
+ var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
+ radius = radius < 10 ? 10 : radius;
+ var minRadius = roseOption.minRadius || radius * 0.5;
+ series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);
+ var activeRadius = roseOption.activeRadius * opts.pix;
+ roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config);
+ series = series.map(function (eachSeries) {
+ eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;
+ return eachSeries;
+ });
+ series.forEach(function (eachSeries, seriesIndex) {
+ if (opts.tooltip) {
+ if (opts.tooltip.index == seriesIndex) {
+ context.beginPath();
+ context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);
+ context.closePath();
+ context.fill();
+ }
+ }
+ context.beginPath();
+ context.setLineWidth(roseOption.borderWidth * opts.pix);
+ context.lineJoin = "round";
+ context.setStrokeStyle(roseOption.borderColor);
+ var fillcolor = eachSeries.color;
+ if (roseOption.linearType == 'custom') {
+ var grd;
+ if (context.createCircularGradient) {
+ grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);
+ } else {
+ grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);
+ }
+ grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1));
+ grd.addColorStop(1, hexToRgb(eachSeries.color, 1));
+ fillcolor = grd;
+ }
+ context.setFillStyle(fillcolor);
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);
+ context.closePath();
+ context.fill();
+ if (roseOption.border == true) {
+ context.stroke();
+ }
+ });
+
+ if (opts.dataLabel !== false && process === 1) {
+ drawPieText(series, opts, config, context, radius, centerPosition);
+ }
+ return {
+ center: centerPosition,
+ radius: radius,
+ series: series };
+
+}
+
+function drawArcbarDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var arcbarOption = assign({}, {
+ startAngle: 0.75,
+ endAngle: 0.25,
+ type: 'default',
+ lineCap: 'round',
+ width: 12,
+ gap: 2,
+ linearType: 'none',
+ customColor: [] },
+ opts.extra.arcbar);
+ series = getArcbarDataPoints(series, arcbarOption, process);
+ var centerPosition;
+ if (arcbarOption.centerX || arcbarOption.centerY) {
+ centerPosition = {
+ x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2,
+ y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2 };
+
+ } else {
+ centerPosition = {
+ x: opts.width / 2,
+ y: opts.height / 2 };
+
+ }
+ var radius;
+ if (arcbarOption.radius) {
+ radius = arcbarOption.radius;
+ } else {
+ radius = Math.min(centerPosition.x, centerPosition.y);
+ radius -= 5 * opts.pix;
+ radius -= arcbarOption.width / 2;
+ }
+ radius = radius < 10 ? 10 : radius;
+ arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config);
+
+ for (var i = 0; i < series.length; i++) {
+ var eachSeries = series[i];
+ //背景颜色
+ context.setLineWidth(arcbarOption.width * opts.pix);
+ context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');
+ context.setLineCap(arcbarOption.lineCap);
+ context.beginPath();
+ if (arcbarOption.type == 'default') {
+ context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, false);
+ } else {
+ context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, false);
+ }
+ context.stroke();
+ //进度条
+ var fillColor = eachSeries.color;
+ if (arcbarOption.linearType == 'custom') {
+ var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y);
+ grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1));
+ grd.addColorStop(0, hexToRgb(eachSeries.color, 1));
+ fillColor = grd;
+ }
+ context.setLineWidth(arcbarOption.width * opts.pix);
+ context.setStrokeStyle(fillColor);
+ context.setLineCap(arcbarOption.lineCap);
+ context.beginPath();
+ context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, false);
+ context.stroke();
+ }
+ drawRingTitle(opts, config, context, centerPosition);
+ return {
+ center: centerPosition,
+ radius: radius,
+ series: series };
+
+}
+
+function drawGaugeDataPoints(categories, series, opts, config, context) {
+ var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+ var gaugeOption = assign({}, {
+ type: 'default',
+ startAngle: 0.75,
+ endAngle: 0.25,
+ width: 15,
+ labelOffset: 13,
+ splitLine: {
+ fixRadius: 0,
+ splitNumber: 10,
+ width: 15,
+ color: '#FFFFFF',
+ childNumber: 5,
+ childWidth: 5 },
+
+ pointer: {
+ width: 15,
+ color: 'auto' } },
+
+ opts.extra.gauge);
+ if (gaugeOption.oldAngle == undefined) {
+ gaugeOption.oldAngle = gaugeOption.startAngle;
+ }
+ if (gaugeOption.oldData == undefined) {
+ gaugeOption.oldData = 0;
+ }
+ categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);
+ var centerPosition = {
+ x: opts.width / 2,
+ y: opts.height / 2 };
+
+ var radius = Math.min(centerPosition.x, centerPosition.y);
+ radius -= 5 * opts.pix;
+ radius -= gaugeOption.width / 2;
+ radius = radius < 10 ? 10 : radius;
+ var innerRadius = radius - gaugeOption.width;
+ var totalAngle = 0;
+ //判断仪表盘的样式:default百度样式,progress新样式
+ if (gaugeOption.type == 'progress') {
+ //## 第一步画中心圆形背景和进度条背景
+ //中心圆形背景
+ var pieRadius = radius - gaugeOption.width * 3;
+ context.beginPath();
+ var gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius);
+ //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)
+ gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));
+ gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
+ context.setFillStyle(gradient);
+ context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false);
+ context.fill();
+ //画进度条背景
+ context.setLineWidth(gaugeOption.width);
+ context.setStrokeStyle(hexToRgb(series[0].color, 0.3));
+ context.setLineCap('round');
+ context.beginPath();
+ context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false);
+ context.stroke();
+ //## 第二步画刻度线
+ totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+ var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
+ var childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
+ var startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
+ var endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
+ context.save();
+ context.translate(centerPosition.x, centerPosition.y);
+ context.rotate((gaugeOption.startAngle - 1) * Math.PI);
+ var len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;
+ var proc = series[0].data * process;
+ for (var i = 0; i < len; i++) {
+ context.beginPath();
+ //刻度线随进度变色
+ if (proc > i / len) {
+ context.setStrokeStyle(hexToRgb(series[0].color, 1));
+ } else {
+ context.setStrokeStyle(hexToRgb(series[0].color, 0.3));
+ }
+ context.setLineWidth(3 * opts.pix);
+ context.moveTo(startX, 0);
+ context.lineTo(endX, 0);
+ context.stroke();
+ context.rotate(childAngle * Math.PI);
+ }
+ context.restore();
+ //## 第三步画进度条
+ series = getGaugeArcbarDataPoints(series, gaugeOption, process);
+ context.setLineWidth(gaugeOption.width);
+ context.setStrokeStyle(series[0].color);
+ context.setLineCap('round');
+ context.beginPath();
+ context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false);
+ context.stroke();
+ //## 第四步画指针
+ var pointerRadius = radius - gaugeOption.width * 2.5;
+ context.save();
+ context.translate(centerPosition.x, centerPosition.y);
+ context.rotate((series[0]._proportion_ - 1) * Math.PI);
+ context.beginPath();
+ context.setLineWidth(gaugeOption.width / 3);
+ var gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6);
+ gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));
+ gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));
+ gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));
+ context.setStrokeStyle(gradient3);
+ context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false);
+ context.stroke();
+ context.beginPath();
+ context.setLineWidth(1);
+ context.setStrokeStyle(series[0].color);
+ context.setFillStyle(series[0].color);
+ context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);
+ context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0);
+ context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4);
+ context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);
+ context.stroke();
+ context.fill();
+ context.restore();
+ //default百度样式
+ } else {
+ //画背景
+ context.setLineWidth(gaugeOption.width);
+ context.setLineCap('butt');
+ for (var _i26 = 0; _i26 < categories.length; _i26++) {
+ var eachCategories = categories[_i26];
+ context.beginPath();
+ context.setStrokeStyle(eachCategories.color);
+ context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false);
+ context.stroke();
+ }
+ context.save();
+ //画刻度线
+ totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+ var _splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
+ var _childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
+ var _startX2 = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
+ var _endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
+ var childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;
+ context.translate(centerPosition.x, centerPosition.y);
+ context.rotate((gaugeOption.startAngle - 1) * Math.PI);
+ for (var _i27 = 0; _i27 < gaugeOption.splitLine.splitNumber + 1; _i27++) {
+ context.beginPath();
+ context.setStrokeStyle(gaugeOption.splitLine.color);
+ context.setLineWidth(2 * opts.pix);
+ context.moveTo(_startX2, 0);
+ context.lineTo(_endX, 0);
+ context.stroke();
+ context.rotate(_splitAngle * Math.PI);
+ }
+ context.restore();
+ context.save();
+ context.translate(centerPosition.x, centerPosition.y);
+ context.rotate((gaugeOption.startAngle - 1) * Math.PI);
+ for (var _i28 = 0; _i28 < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; _i28++) {
+ context.beginPath();
+ context.setStrokeStyle(gaugeOption.splitLine.color);
+ context.setLineWidth(1 * opts.pix);
+ context.moveTo(_startX2, 0);
+ context.lineTo(childendX, 0);
+ context.stroke();
+ context.rotate(_childAngle * Math.PI);
+ }
+ context.restore();
+ //画指针
+ series = getGaugeDataPoints(series, categories, gaugeOption, process);
+ for (var _i29 = 0; _i29 < series.length; _i29++) {
+ var eachSeries = series[_i29];
+ context.save();
+ context.translate(centerPosition.x, centerPosition.y);
+ context.rotate((eachSeries._proportion_ - 1) * Math.PI);
+ context.beginPath();
+ context.setFillStyle(eachSeries.color);
+ context.moveTo(gaugeOption.pointer.width, 0);
+ context.lineTo(0, -gaugeOption.pointer.width / 2);
+ context.lineTo(-innerRadius, 0);
+ context.lineTo(0, gaugeOption.pointer.width / 2);
+ context.lineTo(gaugeOption.pointer.width, 0);
+ context.closePath();
+ context.fill();
+ context.beginPath();
+ context.setFillStyle('#FFFFFF');
+ context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);
+ context.fill();
+ context.restore();
+ }
+ if (opts.dataLabel !== false) {
+ drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);
+ }
+ }
+ //画仪表盘标题,副标题
+ drawRingTitle(opts, config, context, centerPosition);
+ if (process === 1 && opts.type === 'gauge') {
+ opts.extra.gauge.oldAngle = series[0]._proportion_;
+ opts.extra.gauge.oldData = series[0].data;
+ }
+ return {
+ center: centerPosition,
+ radius: radius,
+ innerRadius: innerRadius,
+ categories: categories,
+ totalAngle: totalAngle };
+
+}
+
+function drawRadarDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var radarOption = assign({}, {
+ gridColor: '#cccccc',
+ gridType: 'radar',
+ gridEval: 1,
+ axisLabel: false,
+ axisLabelTofix: 0,
+ labelColor: '#666666',
+ labelPointShow: false,
+ labelPointRadius: 3,
+ labelPointColor: '#cccccc',
+ opacity: 0.2,
+ gridCount: 3,
+ border: false,
+ borderWidth: 2,
+ linearType: 'none',
+ customColor: [] },
+ opts.extra.radar);
+ var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);
+ var centerPosition = {
+ x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+ y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 };
+
+ var xr = (opts.width - opts.area[1] - opts.area[3]) / 2;
+ var yr = (opts.height - opts.area[0] - opts.area[2]) / 2;
+ var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin);
+ radius -= config.radarLabelTextMargin * opts.pix;
+ radius = radius < 10 ? 10 : radius;
+ // 画分割线
+ context.beginPath();
+ context.setLineWidth(1 * opts.pix);
+ context.setStrokeStyle(radarOption.gridColor);
+ coordinateAngle.forEach(function (angle, index) {
+ var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);
+ context.moveTo(centerPosition.x, centerPosition.y);
+ if (index % radarOption.gridEval == 0) {
+ context.lineTo(pos.x, pos.y);
+ }
+ });
+ context.stroke();
+ context.closePath();
+
+ // 画背景网格
+ var _loop = function _loop(i) {
+ var startPos = {};
+ context.beginPath();
+ context.setLineWidth(1 * opts.pix);
+ context.setStrokeStyle(radarOption.gridColor);
+ if (radarOption.gridType == 'radar') {
+ coordinateAngle.forEach(function (angle, index) {
+ var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius /
+ radarOption.gridCount * i * Math.sin(angle), centerPosition);
+ if (index === 0) {
+ startPos = pos;
+ context.moveTo(pos.x, pos.y);
+ } else {
+ context.lineTo(pos.x, pos.y);
+ }
+ });
+ context.lineTo(startPos.x, startPos.y);
+ } else {
+ var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition);
+ context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false);
+ }
+ context.stroke();
+ context.closePath();
+ };
+ for (var i = 1; i <= radarOption.gridCount; i++) {
+ _loop(i);
+ }
+ radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config);
+ var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);
+ radarDataPoints.forEach(function (eachSeries, seriesIndex) {
+ // 绘制区域数据
+ context.beginPath();
+ context.setLineWidth(radarOption.borderWidth * opts.pix);
+ context.setStrokeStyle(eachSeries.color);
+
+ var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity);
+ if (radarOption.linearType == 'custom') {
+ var grd;
+ if (context.createCircularGradient) {
+ grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius);
+ } else {
+ grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, radius);
+ }
+ grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity));
+ grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity));
+ fillcolor = grd;
+ }
+
+ context.setFillStyle(fillcolor);
+ eachSeries.data.forEach(function (item, index) {
+ if (index === 0) {
+ context.moveTo(item.position.x, item.position.y);
+ } else {
+ context.lineTo(item.position.x, item.position.y);
+ }
+ });
+ context.closePath();
+ context.fill();
+ if (radarOption.border === true) {
+ context.stroke();
+ }
+ context.closePath();
+ if (opts.dataPointShape !== false) {
+ var points = eachSeries.data.map(function (item) {
+ return item.position;
+ });
+ drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
+ }
+ });
+ // 画刻度值
+ if (radarOption.axisLabel === true) {
+ var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));
+ var stepLength = radius / radarOption.gridCount;
+ var fontSize = opts.fontSize * opts.pix;
+ context.setFontSize(fontSize);
+ context.setFillStyle(opts.fontColor);
+ context.setTextAlign('left');
+ for (var i = 0; i < radarOption.gridCount + 1; i++) {
+ var label = i * maxData / radarOption.gridCount;
+ label = label.toFixed(radarOption.axisLabelTofix);
+ context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2);
+ }
+ }
+
+ // draw label text
+ drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);
+
+ // draw dataLabel
+ if (opts.dataLabel !== false && process === 1) {
+ radarDataPoints.forEach(function (eachSeries, seriesIndex) {
+ context.beginPath();
+ var fontSize = eachSeries.textSize * opts.pix || config.fontSize;
+ context.setFontSize(fontSize);
+ context.setFillStyle(eachSeries.textColor || opts.fontColor);
+ eachSeries.data.forEach(function (item, index) {
+ //如果是中心点垂直的上下点位
+ if (Math.abs(item.position.x - centerPosition.x) < 2) {
+ //如果在上面
+ if (item.position.y < centerPosition.y) {
+ context.setTextAlign('center');
+ context.fillText(item.value, item.position.x, item.position.y - 4);
+ } else {
+ context.setTextAlign('center');
+ context.fillText(item.value, item.position.x, item.position.y + fontSize + 2);
+ }
+ } else {
+ //如果在左侧
+ if (item.position.x < centerPosition.x) {
+ context.setTextAlign('right');
+ context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2);
+ } else {
+ context.setTextAlign('left');
+ context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2);
+ }
+ }
+ });
+ context.closePath();
+ context.stroke();
+ });
+ context.setTextAlign('left');
+ }
+
+ return {
+ center: centerPosition,
+ radius: radius,
+ angleList: coordinateAngle };
+
+}
+
+// 经纬度转墨卡托
+function lonlat2mercator(longitude, latitude) {
+ var mercator = Array(2);
+ var x = longitude * 20037508.34 / 180;
+ var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180);
+ y = y * 20037508.34 / 180;
+ mercator[0] = x;
+ mercator[1] = y;
+ return mercator;
+}
+
+// 墨卡托转经纬度
+function mercator2lonlat(longitude, latitude) {
+ var lonlat = Array(2);
+ var x = longitude / 20037508.34 * 180;
+ var y = latitude / 20037508.34 * 180;
+ y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);
+ lonlat[0] = x;
+ lonlat[1] = y;
+ return lonlat;
+}
+
+function getBoundingBox(data) {
+ var bounds = {},coords;
+ bounds.xMin = 180;
+ bounds.xMax = 0;
+ bounds.yMin = 90;
+ bounds.yMax = 0;
+ for (var i = 0; i < data.length; i++) {
+ var coorda = data[i].geometry.coordinates;
+ for (var k = 0; k < coorda.length; k++) {
+ coords = coorda[k];
+ if (coords.length == 1) {
+ coords = coords[0];
+ }
+ for (var j = 0; j < coords.length; j++) {
+ var longitude = coords[j][0];
+ var latitude = coords[j][1];
+ var point = {
+ x: longitude,
+ y: latitude };
+
+ bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;
+ bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;
+ bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;
+ bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;
+ }
+ }
+ }
+ return bounds;
+}
+
+function coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) {
+ return {
+ x: (longitude - bounds.xMin) * scale + xoffset,
+ y: (bounds.yMax - latitude) * scale + yoffset };
+
+}
+
+function pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) {
+ return {
+ x: (pointX - xoffset) / scale + bounds.xMin,
+ y: bounds.yMax - (pointY - yoffset) / scale };
+
+}
+
+function isRayIntersectsSegment(poi, s_poi, e_poi) {
+ if (s_poi[1] == e_poi[1]) {
+ return false;
+ }
+ if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) {
+ return false;
+ }
+ if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) {
+ return false;
+ }
+ if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) {
+ return false;
+ }
+ if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) {
+ return false;
+ }
+ if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) {
+ return false;
+ }
+ var xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]);
+ if (xseg < poi[0]) {
+ return false;
+ } else {
+ return true;
+ }
+}
+
+function isPoiWithinPoly(poi, poly, mercator) {
+ var sinsc = 0;
+ for (var i = 0; i < poly.length; i++) {
+ var epoly = poly[i][0];
+ if (poly.length == 1) {
+ epoly = poly[i][0];
+ }
+ for (var j = 0; j < epoly.length - 1; j++) {
+ var s_poi = epoly[j];
+ var e_poi = epoly[j + 1];
+ if (mercator) {
+ s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]);
+ e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]);
+ }
+ if (isRayIntersectsSegment(poi, s_poi, e_poi)) {
+ sinsc += 1;
+ }
+ }
+ }
+ if (sinsc % 2 == 1) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+function drawMapDataPoints(series, opts, config, context) {
+ var mapOption = assign({}, {
+ border: true,
+ mercator: false,
+ borderWidth: 1,
+ borderColor: '#666666',
+ fillOpacity: 0.6,
+ activeBorderColor: '#f04864',
+ activeFillColor: '#facc14',
+ activeFillOpacity: 1 },
+ opts.extra.map);
+ var coords, point;
+ var data = series;
+ var bounds = getBoundingBox(data);
+ if (mapOption.mercator) {
+ var max = lonlat2mercator(bounds.xMax, bounds.yMax);
+ var min = lonlat2mercator(bounds.xMin, bounds.yMin);
+ bounds.xMax = max[0];
+ bounds.yMax = max[1];
+ bounds.xMin = min[0];
+ bounds.yMin = min[1];
+ }
+ var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);
+ var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);
+ var scale = xScale < yScale ? xScale : yScale;
+ var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale;
+ var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale;
+ for (var i = 0; i < data.length; i++) {
+ context.beginPath();
+ context.setLineWidth(mapOption.borderWidth * opts.pix);
+ context.setStrokeStyle(mapOption.borderColor);
+ context.setFillStyle(hexToRgb(series[i].color, mapOption.fillOpacity));
+ if (opts.tooltip) {
+ if (opts.tooltip.index == i) {
+ context.setStrokeStyle(mapOption.activeBorderColor);
+ context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));
+ }
+ }
+ var coorda = data[i].geometry.coordinates;
+ for (var k = 0; k < coorda.length; k++) {
+ coords = coorda[k];
+ if (coords.length == 1) {
+ coords = coords[0];
+ }
+ for (var j = 0; j < coords.length; j++) {
+ var gaosi = Array(2);
+ if (mapOption.mercator) {
+ gaosi = lonlat2mercator(coords[j][0], coords[j][1]);
+ } else {
+ gaosi = coords[j];
+ }
+ point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset);
+ if (j === 0) {
+ context.beginPath();
+ context.moveTo(point.x, point.y);
+ } else {
+ context.lineTo(point.x, point.y);
+ }
+ }
+ context.fill();
+ if (mapOption.border == true) {
+ context.stroke();
+ }
+ }
+ }
+ if (opts.dataLabel == true) {
+ for (var i = 0; i < data.length; i++) {
+ var centerPoint = data[i].properties.centroid;
+ if (centerPoint) {
+ if (mapOption.mercator) {
+ centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]);
+ }
+ point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset);
+ var fontSize = data[i].textSize * opts.pix || config.fontSize;
+ var text = data[i].properties.name;
+ context.beginPath();
+ context.setFontSize(fontSize);
+ context.setFillStyle(data[i].textColor || opts.fontColor);
+ context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2);
+ context.closePath();
+ context.stroke();
+ }
+ }
+ }
+ opts.chartData.mapData = {
+ bounds: bounds,
+ scale: scale,
+ xoffset: xoffset,
+ yoffset: yoffset,
+ mercator: mapOption.mercator };
+
+ drawToolTipBridge(opts, config, context, 1);
+ context.draw();
+}
+
+function normalInt(min, max, iter) {
+ iter = iter == 0 ? 1 : iter;
+ var arr = [];
+ for (var i = 0; i < iter; i++) {
+ arr[i] = Math.random();
+ };
+ return Math.floor(arr.reduce(function (i, j) {
+ return i + j;
+ }) / iter * (max - min)) + min;
+};
+
+function collisionNew(area, points, width, height) {
+ var isIn = false;
+ for (var i = 0; i < points.length; i++) {
+ if (points[i].area) {
+ if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) {
+ if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) {
+ isIn = true;
+ break;
+ } else {
+ isIn = false;
+ }
+ } else {
+ isIn = true;
+ break;
+ }
+ }
+ }
+ return isIn;
+};
+
+function getWordCloudPoint(opts, type, context) {
+ var points = opts.series;
+ switch (type) {
+ case 'normal':
+ for (var i = 0; i < points.length; i++) {
+ var text = points[i].name;
+ var tHeight = points[i].textSize * opts.pix;
+ var tWidth = measureText(text, tHeight, context);
+ var x = void 0,y = void 0;
+ var area = void 0;
+ var breaknum = 0;
+ while (true) {
+ breaknum++;
+ x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;
+ y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;
+ area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 +
+ opts.height / 2];
+
+ var isCollision = collisionNew(area, points, opts.width, opts.height);
+ if (!isCollision) break;
+ if (breaknum == 1000) {
+ area = [-100, -100, -100, -100];
+ break;
+ }
+ };
+ points[i].area = area;
+ }
+ break;
+ case 'vertical':var
+ Spin = function Spin() {
+ //获取均匀随机值,是否旋转,旋转的概率为(1-0.5)
+ if (Math.random() > 0.7) {
+ return true;
+ } else {
+ return false;
+ };
+ };;
+ for (var _i30 = 0; _i30 < points.length; _i30++) {
+ var _text = points[_i30].name;
+ var _tHeight = points[_i30].textSize * opts.pix;
+ var _tWidth = measureText(_text, _tHeight, context);
+ var isSpin = Spin();
+ var _x = void 0,_y = void 0,_area = void 0,areav = void 0;
+ var _breaknum = 0;
+ while (true) {
+ _breaknum++;
+ var _isCollision = void 0;
+ if (isSpin) {
+ _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;
+ _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;
+ _area = [_y - 5 - _tWidth + opts.width / 2, -_x - 5 + opts.height / 2, _y + 5 + opts.width / 2, -_x + _tHeight + 5 + opts.height / 2];
+ areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) - 5, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) + _tHeight, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) + _tWidth + 5];
+ _isCollision = collisionNew(areav, points, opts.height, opts.width);
+ } else {
+ _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;
+ _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;
+ _area = [_x - 5 + opts.width / 2, _y - 5 - _tHeight + opts.height / 2, _x + _tWidth + 5 + opts.width / 2, _y + 5 + opts.height / 2];
+ _isCollision = collisionNew(_area, points, opts.width, opts.height);
+ }
+ if (!_isCollision) break;
+ if (_breaknum == 1000) {
+ _area = [-1000, -1000, -1000, -1000];
+ break;
+ }
+ };
+ if (isSpin) {
+ points[_i30].area = areav;
+ points[_i30].areav = _area;
+ } else {
+ points[_i30].area = _area;
+ }
+ points[_i30].rotate = isSpin;
+ };
+ break;}
+
+ return points;
+}
+
+function drawWordCloudDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var wordOption = assign({}, {
+ type: 'normal',
+ autoColors: true },
+ opts.extra.word);
+ if (!opts.chartData.wordCloudData) {
+ opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context);
+ }
+ context.beginPath();
+ context.setFillStyle(opts.background);
+ context.rect(0, 0, opts.width, opts.height);
+ context.fill();
+ context.save();
+ var points = opts.chartData.wordCloudData;
+ context.translate(opts.width / 2, opts.height / 2);
+ for (var i = 0; i < points.length; i++) {
+ context.save();
+ if (points[i].rotate) {
+ context.rotate(90 * Math.PI / 180);
+ }
+ var text = points[i].name;
+ var tHeight = points[i].textSize * opts.pix;
+ var tWidth = measureText(text, tHeight, context);
+ context.beginPath();
+ context.setStrokeStyle(points[i].color);
+ context.setFillStyle(points[i].color);
+ context.setFontSize(tHeight);
+ if (points[i].rotate) {
+ if (points[i].areav[0] > 0) {
+ if (opts.tooltip) {
+ if (opts.tooltip.index == i) {
+ context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
+ } else {
+ context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
+ }
+ } else {
+ context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
+ }
+ }
+ } else {
+ if (points[i].area[0] > 0) {
+ if (opts.tooltip) {
+ if (opts.tooltip.index == i) {
+ context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
+ } else {
+ context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
+ }
+ } else {
+ context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
+ }
+ }
+ }
+ context.stroke();
+ context.restore();
+ }
+ context.restore();
+}
+
+function drawFunnelDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var funnelOption = assign({}, {
+ type: 'funnel',
+ activeWidth: 10,
+ activeOpacity: 0.3,
+ border: false,
+ borderWidth: 2,
+ borderColor: '#FFFFFF',
+ fillOpacity: 1,
+ labelAlign: 'right',
+ linearType: 'none',
+ customColor: [] },
+ opts.extra.funnel);
+ var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length;
+ var centerPosition = {
+ x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+ y: opts.height - opts.area[2] };
+
+ var activeWidth = funnelOption.activeWidth * opts.pix;
+ var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);
+ series = getFunnelDataPoints(series, radius, funnelOption.type, eachSpacing, process);
+ context.save();
+ context.translate(centerPosition.x, centerPosition.y);
+ funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config);
+ if (funnelOption.type == 'pyramid') {
+ for (var i = 0; i < series.length; i++) {
+ if (i == series.length - 1) {
+ if (opts.tooltip) {
+ if (opts.tooltip.index == i) {
+ context.beginPath();
+ context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));
+ context.moveTo(-activeWidth, -eachSpacing);
+ context.lineTo(-series[i].radius - activeWidth, 0);
+ context.lineTo(series[i].radius + activeWidth, 0);
+ context.lineTo(activeWidth, -eachSpacing);
+ context.lineTo(-activeWidth, -eachSpacing);
+ context.closePath();
+ context.fill();
+ }
+ }
+ series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i];
+ context.beginPath();
+ context.setLineWidth(funnelOption.borderWidth * opts.pix);
+ context.setStrokeStyle(funnelOption.borderColor);
+ var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);
+ if (funnelOption.linearType == 'custom') {
+ var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);
+ grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));
+ grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));
+ grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));
+ fillColor = grd;
+ }
+ context.setFillStyle(fillColor);
+ context.moveTo(0, -eachSpacing);
+ context.lineTo(-series[i].radius, 0);
+ context.lineTo(series[i].radius, 0);
+ context.lineTo(0, -eachSpacing);
+ context.closePath();
+ context.fill();
+ if (funnelOption.border == true) {
+ context.stroke();
+ }
+ } else {
+ if (opts.tooltip) {
+ if (opts.tooltip.index == i) {
+ context.beginPath();
+ context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));
+ context.moveTo(0, 0);
+ context.lineTo(-series[i].radius - activeWidth, 0);
+ context.lineTo(-series[i + 1].radius - activeWidth, -eachSpacing);
+ context.lineTo(series[i + 1].radius + activeWidth, -eachSpacing);
+ context.lineTo(series[i].radius + activeWidth, 0);
+ context.lineTo(0, 0);
+ context.closePath();
+ context.fill();
+ }
+ }
+ series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i];
+ context.beginPath();
+ context.setLineWidth(funnelOption.borderWidth * opts.pix);
+ context.setStrokeStyle(funnelOption.borderColor);
+ var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);
+ if (funnelOption.linearType == 'custom') {
+ var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);
+ grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));
+ grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));
+ grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));
+ fillColor = grd;
+ }
+ context.setFillStyle(fillColor);
+ context.moveTo(0, 0);
+ context.lineTo(-series[i].radius, 0);
+ context.lineTo(-series[i + 1].radius, -eachSpacing);
+ context.lineTo(series[i + 1].radius, -eachSpacing);
+ context.lineTo(series[i].radius, 0);
+ context.lineTo(0, 0);
+ context.closePath();
+ context.fill();
+ if (funnelOption.border == true) {
+ context.stroke();
+ }
+ }
+ context.translate(0, -eachSpacing);
+ }
+ } else {
+ for (var _i31 = 0; _i31 < series.length; _i31++) {
+ if (_i31 == 0) {
+ if (opts.tooltip) {
+ if (opts.tooltip.index == _i31) {
+ context.beginPath();
+ context.setFillStyle(hexToRgb(series[_i31].color, funnelOption.activeOpacity));
+ context.moveTo(-activeWidth, 0);
+ context.lineTo(-series[_i31].radius - activeWidth, -eachSpacing);
+ context.lineTo(series[_i31].radius + activeWidth, -eachSpacing);
+ context.lineTo(activeWidth, 0);
+ context.lineTo(-activeWidth, 0);
+ context.closePath();
+ context.fill();
+ }
+ }
+ series[_i31].funnelArea = [centerPosition.x - series[_i31].radius, centerPosition.y - eachSpacing, centerPosition.x + series[_i31].radius, centerPosition.y];
+ context.beginPath();
+ context.setLineWidth(funnelOption.borderWidth * opts.pix);
+ context.setStrokeStyle(funnelOption.borderColor);
+ var fillColor = hexToRgb(series[_i31].color, funnelOption.fillOpacity);
+ if (funnelOption.linearType == 'custom') {
+ var grd = context.createLinearGradient(series[_i31].radius, -eachSpacing, -series[_i31].radius, -eachSpacing);
+ grd.addColorStop(0, hexToRgb(series[_i31].color, funnelOption.fillOpacity));
+ grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[_i31].linearIndex], funnelOption.fillOpacity));
+ grd.addColorStop(1, hexToRgb(series[_i31].color, funnelOption.fillOpacity));
+ fillColor = grd;
+ }
+ context.setFillStyle(fillColor);
+ context.moveTo(0, 0);
+ context.lineTo(-series[_i31].radius, -eachSpacing);
+ context.lineTo(series[_i31].radius, -eachSpacing);
+ context.lineTo(0, 0);
+ context.closePath();
+ context.fill();
+ if (funnelOption.border == true) {
+ context.stroke();
+ }
+ } else {
+ if (opts.tooltip) {
+ if (opts.tooltip.index == _i31) {
+ context.beginPath();
+ context.setFillStyle(hexToRgb(series[_i31].color, funnelOption.activeOpacity));
+ context.moveTo(0, 0);
+ context.lineTo(-series[_i31 - 1].radius - activeWidth, 0);
+ context.lineTo(-series[_i31].radius - activeWidth, -eachSpacing);
+ context.lineTo(series[_i31].radius + activeWidth, -eachSpacing);
+ context.lineTo(series[_i31 - 1].radius + activeWidth, 0);
+ context.lineTo(0, 0);
+ context.closePath();
+ context.fill();
+ }
+ }
+ series[_i31].funnelArea = [centerPosition.x - series[_i31].radius, centerPosition.y - eachSpacing * (_i31 + 1), centerPosition.x + series[_i31].radius, centerPosition.y - eachSpacing * _i31];
+ context.beginPath();
+ context.setLineWidth(funnelOption.borderWidth * opts.pix);
+ context.setStrokeStyle(funnelOption.borderColor);
+ var fillColor = hexToRgb(series[_i31].color, funnelOption.fillOpacity);
+ if (funnelOption.linearType == 'custom') {
+ var grd = context.createLinearGradient(series[_i31].radius, -eachSpacing, -series[_i31].radius, -eachSpacing);
+ grd.addColorStop(0, hexToRgb(series[_i31].color, funnelOption.fillOpacity));
+ grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[_i31].linearIndex], funnelOption.fillOpacity));
+ grd.addColorStop(1, hexToRgb(series[_i31].color, funnelOption.fillOpacity));
+ fillColor = grd;
+ }
+ context.setFillStyle(fillColor);
+ context.moveTo(0, 0);
+ context.lineTo(-series[_i31 - 1].radius, 0);
+ context.lineTo(-series[_i31].radius, -eachSpacing);
+ context.lineTo(series[_i31].radius, -eachSpacing);
+ context.lineTo(series[_i31 - 1].radius, 0);
+ context.lineTo(0, 0);
+ context.closePath();
+ context.fill();
+ if (funnelOption.border == true) {
+ context.stroke();
+ }
+ }
+ context.translate(0, -eachSpacing);
+ }
+ }
+
+ context.restore();
+ if (opts.dataLabel !== false && process === 1) {
+ drawFunnelText(series, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);
+ }
+ return {
+ center: centerPosition,
+ radius: radius,
+ series: series };
+
+}
+
+function drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {
+ for (var i = 0; i < series.length; i++) {
+ var item = series[i];
+ if (item.labelShow === false) {
+ continue;
+ }
+ var startX = void 0,endX = void 0,startY = void 0,fontSize = void 0;
+ var text = item.formatter ? item.formatter(item, i, series, opts) : util.toFixed(item._proportion_ * 100) + '%';
+ text = item.labelText ? item.labelText : text;
+ if (labelAlign == 'right') {
+ if (opts.extra.funnel.type === 'pyramid') {
+ if (i == series.length - 1) {
+ startX = (item.funnelArea[2] + centerPosition.x) / 2;
+ } else {
+ startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2;
+ }
+ } else {
+ if (i == 0) {
+ startX = (item.funnelArea[2] + centerPosition.x) / 2;
+ } else {
+ startX = (item.funnelArea[2] + series[i - 1].funnelArea[2]) / 2;
+ }
+ }
+ endX = startX + activeWidth * 2;
+ startY = item.funnelArea[1] + eachSpacing / 2;
+ fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;
+ context.setLineWidth(1 * opts.pix);
+ context.setStrokeStyle(item.color);
+ context.setFillStyle(item.color);
+ context.beginPath();
+ context.moveTo(startX, startY);
+ context.lineTo(endX, startY);
+ context.stroke();
+ context.closePath();
+ context.beginPath();
+ context.moveTo(endX, startY);
+ context.arc(endX, startY, 2 * opts.pix, 0, 2 * Math.PI);
+ context.closePath();
+ context.fill();
+ context.beginPath();
+ context.setFontSize(fontSize);
+ context.setFillStyle(item.textColor || opts.fontColor);
+ context.fillText(text, endX + 5, startY + fontSize / 2 - 2);
+ context.closePath();
+ context.stroke();
+ context.closePath();
+ } else {
+ if (opts.extra.funnel.type === 'pyramid') {
+ if (i == series.length - 1) {
+ startX = (item.funnelArea[0] + centerPosition.x) / 2;
+ } else {
+ startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2;
+ }
+ } else {
+ if (i == 0) {
+ startX = (item.funnelArea[0] + centerPosition.x) / 2;
+ } else {
+ startX = (item.funnelArea[0] + series[i - 1].funnelArea[0]) / 2;
+ }
+ }
+ endX = startX - activeWidth * 2;
+ startY = item.funnelArea[1] + eachSpacing / 2;
+ fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;
+ context.setLineWidth(1 * opts.pix);
+ context.setStrokeStyle(item.color);
+ context.setFillStyle(item.color);
+ context.beginPath();
+ context.moveTo(startX, startY);
+ context.lineTo(endX, startY);
+ context.stroke();
+ context.closePath();
+ context.beginPath();
+ context.moveTo(endX, startY);
+ context.arc(endX, startY, 2, 0, 2 * Math.PI);
+ context.closePath();
+ context.fill();
+ context.beginPath();
+ context.setFontSize(fontSize);
+ context.setFillStyle(item.textColor || opts.fontColor);
+ context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2);
+ context.closePath();
+ context.stroke();
+ context.closePath();
+ }
+
+ }
+}
+
+
+function drawCanvas(opts, context) {
+ context.draw();
+}
+
+var Timing = {
+ easeIn: function easeIn(pos) {
+ return Math.pow(pos, 3);
+ },
+ easeOut: function easeOut(pos) {
+ return Math.pow(pos - 1, 3) + 1;
+ },
+ easeInOut: function easeInOut(pos) {
+ if ((pos /= 0.5) < 1) {
+ return 0.5 * Math.pow(pos, 3);
+ } else {
+ return 0.5 * (Math.pow(pos - 2, 3) + 2);
+ }
+ },
+ linear: function linear(pos) {
+ return pos;
+ } };
+
+
+function Animation(opts) {
+ this.isStop = false;
+ opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;
+ opts.timing = opts.timing || 'easeInOut';
+ var delay = 17;
+ function createAnimationFrame() {
+ if (typeof setTimeout !== 'undefined') {
+ return function (step, delay) {
+ setTimeout(function () {
+ var timeStamp = +new Date();
+ step(timeStamp);
+ }, delay);
+ };
+ } else if (typeof requestAnimationFrame !== 'undefined') {
+ return requestAnimationFrame;
+ } else {
+ return function (step) {
+ step(null);
+ };
+ }
+ };
+ var animationFrame = createAnimationFrame();
+ var startTimeStamp = null;
+ var _step = function step(timestamp) {
+ if (timestamp === null || this.isStop === true) {
+ opts.onProcess && opts.onProcess(1);
+ opts.onAnimationFinish && opts.onAnimationFinish();
+ return;
+ }
+ if (startTimeStamp === null) {
+ startTimeStamp = timestamp;
+ }
+ if (timestamp - startTimeStamp < opts.duration) {
+ var process = (timestamp - startTimeStamp) / opts.duration;
+ var timingFunction = Timing[opts.timing];
+ process = timingFunction(process);
+ opts.onProcess && opts.onProcess(process);
+ animationFrame(_step, delay);
+ } else {
+ opts.onProcess && opts.onProcess(1);
+ opts.onAnimationFinish && opts.onAnimationFinish();
+ }
+ };
+ _step = _step.bind(this);
+ animationFrame(_step, delay);
+}
+
+Animation.prototype.stop = function () {
+ this.isStop = true;
+};
+
+function drawCharts(type, opts, config, context) {
+ var _this = this;
+ var series = opts.series;
+ //兼容ECharts饼图类数据格式
+ if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') {
+ series = fixPieSeries(series, opts, config);
+ }
+ var categories = opts.categories;
+ if (type === 'mount') {
+ categories = [];
+ for (var j = 0; j < series.length; j++) {
+ if (series[j].show !== false) categories.push(series[j].name);
+ }
+ opts.categories = categories;
+ }
+ series = fillSeries(series, opts, config);
+ var duration = opts.animation ? opts.duration : 0;
+ _this.animationInstance && _this.animationInstance.stop();
+ var seriesMA = null;
+ if (type == 'candle') {
+ var average = assign({}, opts.extra.candle.average);
+ if (average.show) {
+ seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);
+ seriesMA = fillSeries(seriesMA, opts, config);
+ opts.seriesMA = seriesMA;
+ } else if (opts.seriesMA) {
+ seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);
+ } else {
+ seriesMA = series;
+ }
+ } else {
+ seriesMA = series;
+ }
+ /* 过滤掉show=false的series */
+ opts._series_ = series = filterSeries(series);
+ //重新计算图表区域
+ opts.area = new Array(4);
+ //复位绘图区域
+ for (var _j11 = 0; _j11 < 4; _j11++) {
+ opts.area[_j11] = opts.padding[_j11] * opts.pix;
+ }
+ //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域
+ var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context),
+ legendHeight = _calLegendData.area.wholeHeight,
+ legendWidth = _calLegendData.area.wholeWidth;
+
+ switch (opts.legend.position) {
+ case 'top':
+ opts.area[0] += legendHeight;
+ break;
+ case 'bottom':
+ opts.area[2] += legendHeight;
+ break;
+ case 'left':
+ opts.area[3] += legendWidth;
+ break;
+ case 'right':
+ opts.area[1] += legendWidth;
+ break;}
+
+
+ var _calYAxisData = {},
+ yAxisWidth = 0;
+ if (opts.type === 'line' || opts.type === 'column' || opts.type === 'mount' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {
+ _calYAxisData = calYAxisData(series, opts, config, context);
+ yAxisWidth = _calYAxisData.yAxisWidth;
+ //如果显示Y轴标题
+ if (opts.yAxis.showTitle) {
+ var maxTitleHeight = 0;
+ for (var i = 0; i < opts.yAxis.data.length; i++) {
+ maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize);
+ }
+ opts.area[0] += maxTitleHeight;
+ }
+ var rightIndex = 0,
+ leftIndex = 0;
+ //计算主绘图区域左右位置
+ for (var _i32 = 0; _i32 < yAxisWidth.length; _i32++) {
+ if (yAxisWidth[_i32].position == 'left') {
+ if (leftIndex > 0) {
+ opts.area[3] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;
+ } else {
+ opts.area[3] += yAxisWidth[_i32].width;
+ }
+ leftIndex += 1;
+ } else if (yAxisWidth[_i32].position == 'right') {
+ if (rightIndex > 0) {
+ opts.area[1] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;
+ } else {
+ opts.area[1] += yAxisWidth[_i32].width;
+ }
+ rightIndex += 1;
+ }
+ }
+ } else {
+ config.yAxisWidth = yAxisWidth;
+ }
+ opts.chartData.yAxisData = _calYAxisData;
+
+ if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') {
+ opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);
+ var _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),
+ xAxisHeight = _calCategoriesData.xAxisHeight,
+ angle = _calCategoriesData.angle;
+ config.xAxisHeight = xAxisHeight;
+ config._xAxisTextAngle_ = angle;
+ opts.area[2] += xAxisHeight;
+ opts.chartData.categoriesData = _calCategoriesData;
+ } else {
+ if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {
+ opts.chartData.xAxisData = calXAxisData(series, opts, config, context);
+ categories = opts.chartData.xAxisData.rangesFormat;
+ var _calCategoriesData2 = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),
+ _xAxisHeight = _calCategoriesData2.xAxisHeight,
+ _angle = _calCategoriesData2.angle;
+ config.xAxisHeight = _xAxisHeight;
+ config._xAxisTextAngle_ = _angle;
+ opts.area[2] += _xAxisHeight;
+ opts.chartData.categoriesData = _calCategoriesData2;
+ } else {
+ opts.chartData.xAxisData = {
+ xAxisPoints: [] };
+
+ }
+ }
+
+ //计算右对齐偏移距离
+ if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {
+ var offsetLeft = 0,
+ xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
+ startX = opts.chartData.xAxisData.startX,
+ endX = opts.chartData.xAxisData.endX,
+ eachSpacing = opts.chartData.xAxisData.eachSpacing;
+ var totalWidth = eachSpacing * (xAxisPoints.length - 1);
+ var screenWidth = endX - startX;
+ offsetLeft = screenWidth - totalWidth;
+ _this.scrollOption.currentOffset = offsetLeft;
+ _this.scrollOption.startTouchX = offsetLeft;
+ _this.scrollOption.distance = 0;
+ _this.scrollOption.lastMoveTime = 0;
+ opts._scrollDistance_ = offsetLeft;
+ }
+
+ if (type === 'pie' || type === 'ring' || type === 'rose') {
+ config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts);
+ }
+
+ switch (type) {
+ case 'word':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ drawWordCloudDataPoints(series, opts, config, context, process);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'map':
+ context.clearRect(0, 0, opts.width, opts.height);
+ drawMapDataPoints(series, opts, config, context);
+ break;
+ case 'funnel':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'line':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ drawYAxisGrid(categories, opts, config, context);
+ drawXAxis(categories, opts, config, context);
+ var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),
+ xAxisPoints = _drawLineDataPoints.xAxisPoints,
+ calPoints = _drawLineDataPoints.calPoints,
+ eachSpacing = _drawLineDataPoints.eachSpacing;
+ opts.chartData.xAxisPoints = xAxisPoints;
+ opts.chartData.calPoints = calPoints;
+ opts.chartData.eachSpacing = eachSpacing;
+ drawYAxis(series, opts, config, context);
+ if (opts.enableMarkLine !== false && process === 1) {
+ drawMarkLine(opts, config, context);
+ }
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'scatter':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ drawYAxisGrid(categories, opts, config, context);
+ drawXAxis(categories, opts, config, context);
+ var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process),
+ xAxisPoints = _drawScatterDataPoints.xAxisPoints,
+ calPoints = _drawScatterDataPoints.calPoints,
+ eachSpacing = _drawScatterDataPoints.eachSpacing;
+ opts.chartData.xAxisPoints = xAxisPoints;
+ opts.chartData.calPoints = calPoints;
+ opts.chartData.eachSpacing = eachSpacing;
+ drawYAxis(series, opts, config, context);
+ if (opts.enableMarkLine !== false && process === 1) {
+ drawMarkLine(opts, config, context);
+ }
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'bubble':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ drawYAxisGrid(categories, opts, config, context);
+ drawXAxis(categories, opts, config, context);
+ var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process),
+ xAxisPoints = _drawBubbleDataPoints.xAxisPoints,
+ calPoints = _drawBubbleDataPoints.calPoints,
+ eachSpacing = _drawBubbleDataPoints.eachSpacing;
+ opts.chartData.xAxisPoints = xAxisPoints;
+ opts.chartData.calPoints = calPoints;
+ opts.chartData.eachSpacing = eachSpacing;
+ drawYAxis(series, opts, config, context);
+ if (opts.enableMarkLine !== false && process === 1) {
+ drawMarkLine(opts, config, context);
+ }
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'mix':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ drawYAxisGrid(categories, opts, config, context);
+ drawXAxis(categories, opts, config, context);
+ var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),
+ xAxisPoints = _drawMixDataPoints.xAxisPoints,
+ calPoints = _drawMixDataPoints.calPoints,
+ eachSpacing = _drawMixDataPoints.eachSpacing;
+ opts.chartData.xAxisPoints = xAxisPoints;
+ opts.chartData.calPoints = calPoints;
+ opts.chartData.eachSpacing = eachSpacing;
+ drawYAxis(series, opts, config, context);
+ if (opts.enableMarkLine !== false && process === 1) {
+ drawMarkLine(opts, config, context);
+ }
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'column':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ drawYAxisGrid(categories, opts, config, context);
+ drawXAxis(categories, opts, config, context);
+ var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),
+ xAxisPoints = _drawColumnDataPoints.xAxisPoints,
+ calPoints = _drawColumnDataPoints.calPoints,
+ eachSpacing = _drawColumnDataPoints.eachSpacing;
+ opts.chartData.xAxisPoints = xAxisPoints;
+ opts.chartData.calPoints = calPoints;
+ opts.chartData.eachSpacing = eachSpacing;
+ drawYAxis(series, opts, config, context);
+ if (opts.enableMarkLine !== false && process === 1) {
+ drawMarkLine(opts, config, context);
+ }
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'mount':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ drawYAxisGrid(categories, opts, config, context);
+ drawXAxis(categories, opts, config, context);
+ var _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process),
+ xAxisPoints = _drawMountDataPoints.xAxisPoints,
+ calPoints = _drawMountDataPoints.calPoints,
+ eachSpacing = _drawMountDataPoints.eachSpacing;
+ opts.chartData.xAxisPoints = xAxisPoints;
+ opts.chartData.calPoints = calPoints;
+ opts.chartData.eachSpacing = eachSpacing;
+ drawYAxis(series, opts, config, context);
+ if (opts.enableMarkLine !== false && process === 1) {
+ drawMarkLine(opts, config, context);
+ }
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'bar':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ drawXAxis(categories, opts, config, context);
+ var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process),
+ yAxisPoints = _drawBarDataPoints.yAxisPoints,
+ calPoints = _drawBarDataPoints.calPoints,
+ eachSpacing = _drawBarDataPoints.eachSpacing;
+ opts.chartData.yAxisPoints = yAxisPoints;
+ opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints;
+ opts.chartData.calPoints = calPoints;
+ opts.chartData.eachSpacing = eachSpacing;
+ drawYAxis(series, opts, config, context);
+ if (opts.enableMarkLine !== false && process === 1) {
+ drawMarkLine(opts, config, context);
+ }
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'area':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ drawYAxisGrid(categories, opts, config, context);
+ drawXAxis(categories, opts, config, context);
+ var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),
+ xAxisPoints = _drawAreaDataPoints.xAxisPoints,
+ calPoints = _drawAreaDataPoints.calPoints,
+ eachSpacing = _drawAreaDataPoints.eachSpacing;
+ opts.chartData.xAxisPoints = xAxisPoints;
+ opts.chartData.calPoints = calPoints;
+ opts.chartData.eachSpacing = eachSpacing;
+ drawYAxis(series, opts, config, context);
+ if (opts.enableMarkLine !== false && process === 1) {
+ drawMarkLine(opts, config, context);
+ }
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'ring':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'pie':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'rose':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'radar':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ drawToolTipBridge(opts, config, context, process);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'arcbar':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'gauge':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;
+ case 'candle':
+ this.animationInstance = new Animation({
+ timing: opts.timing,
+ duration: duration,
+ onProcess: function onProcess(process) {
+ context.clearRect(0, 0, opts.width, opts.height);
+ if (opts.rotate) {
+ contextRotate(context, opts);
+ }
+ drawYAxisGrid(categories, opts, config, context);
+ drawXAxis(categories, opts, config, context);
+ var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),
+ xAxisPoints = _drawCandleDataPoints.xAxisPoints,
+ calPoints = _drawCandleDataPoints.calPoints,
+ eachSpacing = _drawCandleDataPoints.eachSpacing;
+ opts.chartData.xAxisPoints = xAxisPoints;
+ opts.chartData.calPoints = calPoints;
+ opts.chartData.eachSpacing = eachSpacing;
+ drawYAxis(series, opts, config, context);
+ if (opts.enableMarkLine !== false && process === 1) {
+ drawMarkLine(opts, config, context);
+ }
+ if (seriesMA) {
+ drawLegend(seriesMA, opts, config, context, opts.chartData);
+ } else {
+ drawLegend(opts.series, opts, config, context, opts.chartData);
+ }
+ drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+ drawCanvas(opts, context);
+ },
+ onAnimationFinish: function onAnimationFinish() {
+ _this.uevent.trigger('renderComplete');
+ } });
+
+ break;}
+
+}
+
+function uChartsEvent() {
+ this.events = {};
+}
+
+uChartsEvent.prototype.addEventListener = function (type, listener) {
+ this.events[type] = this.events[type] || [];
+ this.events[type].push(listener);
+};
+
+uChartsEvent.prototype.delEventListener = function (type) {
+ this.events[type] = [];
+};
+
+uChartsEvent.prototype.trigger = function () {
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ var type = args[0];
+ var params = args.slice(1);
+ if (!!this.events[type]) {
+ this.events[type].forEach(function (listener) {
+ try {
+ listener.apply(null, params);
+ } catch (e) {
+ //console.log('[uCharts] '+e);
+ }
+ });
+ }
+};
+
+var uCharts = function uCharts(opts) {
+ opts.pix = opts.pixelRatio ? opts.pixelRatio : 1;
+ opts.fontSize = opts.fontSize ? opts.fontSize : 13;
+ opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor;
+ if (opts.background == "" || opts.background == "none") {
+ opts.background = "#FFFFFF";
+ }
+ opts.title = assign({}, opts.title);
+ opts.subtitle = assign({}, opts.subtitle);
+ opts.duration = opts.duration ? opts.duration : 1000;
+ opts.yAxis = assign({}, {
+ data: [],
+ showTitle: false,
+ disabled: false,
+ disableGrid: false,
+ splitNumber: 5,
+ gridType: 'solid',
+ dashLength: 4 * opts.pix,
+ gridColor: '#cccccc',
+ padding: 10,
+ fontColor: '#666666' },
+ opts.yAxis);
+ opts.xAxis = assign({}, {
+ rotateLabel: false,
+ rotateAngle: 45,
+ disabled: false,
+ disableGrid: false,
+ splitNumber: 5,
+ calibration: false,
+ gridType: 'solid',
+ dashLength: 4,
+ scrollAlign: 'left',
+ boundaryGap: 'center',
+ axisLine: true,
+ axisLineColor: '#cccccc' },
+ opts.xAxis);
+ opts.xAxis.scrollPosition = opts.xAxis.scrollAlign;
+ opts.legend = assign({}, {
+ show: true,
+ position: 'bottom',
+ float: 'center',
+ backgroundColor: 'rgba(0,0,0,0)',
+ borderColor: 'rgba(0,0,0,0)',
+ borderWidth: 0,
+ padding: 5,
+ margin: 5,
+ itemGap: 10,
+ fontSize: opts.fontSize,
+ lineHeight: opts.fontSize,
+ fontColor: opts.fontColor,
+ formatter: {},
+ hiddenColor: '#CECECE' },
+ opts.legend);
+ opts.extra = assign({}, opts.extra);
+ opts.rotate = opts.rotate ? true : false;
+ opts.animation = opts.animation ? true : false;
+ opts.rotate = opts.rotate ? true : false;
+ opts.canvas2d = opts.canvas2d ? true : false;
+
+ var config$$1 = assign({}, config);
+ config$$1.color = opts.color ? opts.color : config$$1.color;
+ if (opts.type == 'pie') {
+ config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;
+ }
+ if (opts.type == 'ring') {
+ config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;
+ }
+ if (opts.type == 'rose') {
+ config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;
+ }
+ config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix;
+
+ //屏幕旋转
+ config$$1.rotate = opts.rotate;
+ if (opts.rotate) {
+ var tempWidth = opts.width;
+ var tempHeight = opts.height;
+ opts.width = tempHeight;
+ opts.height = tempWidth;
+ }
+
+ //适配高分屏
+ opts.padding = opts.padding ? opts.padding : config$$1.padding;
+ config$$1.yAxisWidth = config.yAxisWidth * opts.pix;
+ config$$1.xAxisHeight = config.xAxisHeight * opts.pix;
+ if (opts.enableScroll && opts.xAxis.scrollShow) {
+ config$$1.xAxisHeight += 6 * opts.pix;
+ }
+ config$$1.fontSize = opts.fontSize * opts.pix;
+ config$$1.titleFontSize = config.titleFontSize * opts.pix;
+ config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix;
+ config$$1.toolTipPadding = config.toolTipPadding * opts.pix;
+ config$$1.toolTipLineHeight = config.toolTipLineHeight * opts.pix;
+ if (!opts.context) {
+ throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!');
+ }
+ this.context = opts.context;
+ if (!this.context.setTextAlign) {
+ this.context.setStrokeStyle = function (e) {
+ return this.strokeStyle = e;
+ };
+ this.context.setLineWidth = function (e) {
+ return this.lineWidth = e;
+ };
+ this.context.setLineCap = function (e) {
+ return this.lineCap = e;
+ };
+ this.context.setFontSize = function (e) {
+ return this.font = e + "px sans-serif";
+ };
+ this.context.setFillStyle = function (e) {
+ return this.fillStyle = e;
+ };
+ this.context.setTextAlign = function (e) {
+ return this.textAlign = e;
+ };
+ this.context.draw = function () {};
+ }
+ //兼容NVUEsetLineDash
+ if (!this.context.setLineDash) {
+ this.context.setLineDash = function (e) {};
+ }
+ opts.chartData = {};
+ this.uevent = new uChartsEvent();
+ this.scrollOption = {
+ currentOffset: 0,
+ startTouchX: 0,
+ distance: 0,
+ lastMoveTime: 0 };
+
+ this.opts = opts;
+ this.config = config$$1;
+ drawCharts.call(this, opts.type, opts, config$$1, this.context);
+};
+
+uCharts.prototype.updateData = function () {
+ var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ this.opts = assign({}, this.opts, data);
+ this.opts.updateData = true;
+ var scrollPosition = data.scrollPosition || 'current';
+ switch (scrollPosition) {
+ case 'current':
+ this.opts._scrollDistance_ = this.scrollOption.currentOffset;
+ break;
+ case 'left':
+ this.opts._scrollDistance_ = 0;
+ this.scrollOption = {
+ currentOffset: 0,
+ startTouchX: 0,
+ distance: 0,
+ lastMoveTime: 0 };
+
+ break;
+ case 'right':
+ var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),yAxisWidth = _calYAxisData.yAxisWidth;
+ this.config.yAxisWidth = yAxisWidth;
+ var offsetLeft = 0;
+ var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),xAxisPoints = _getXAxisPoints0.xAxisPoints,
+ startX = _getXAxisPoints0.startX,
+ endX = _getXAxisPoints0.endX,
+ eachSpacing = _getXAxisPoints0.eachSpacing;
+ var totalWidth = eachSpacing * (xAxisPoints.length - 1);
+ var screenWidth = endX - startX;
+ offsetLeft = screenWidth - totalWidth;
+ this.scrollOption = {
+ currentOffset: offsetLeft,
+ startTouchX: offsetLeft,
+ distance: 0,
+ lastMoveTime: 0 };
+
+ this.opts._scrollDistance_ = offsetLeft;
+ break;}
+
+ drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+};
+
+uCharts.prototype.zoom = function () {
+ var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;
+ if (this.opts.enableScroll !== true) {
+ console.log('[uCharts] 请启用滚动条后使用');
+ return;
+ }
+ //当前屏幕中间点
+ var centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2);
+ this.opts.animation = false;
+ this.opts.xAxis.itemCount = val.itemCount;
+ //重新计算x轴偏移距离
+ var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),
+ yAxisWidth = _calYAxisData.yAxisWidth;
+ this.config.yAxisWidth = yAxisWidth;
+ var offsetLeft = 0;
+ var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
+ xAxisPoints = _getXAxisPoints0.xAxisPoints,
+ startX = _getXAxisPoints0.startX,
+ endX = _getXAxisPoints0.endX,
+ eachSpacing = _getXAxisPoints0.eachSpacing;
+ var centerLeft = eachSpacing * centerPoint;
+ var screenWidth = endX - startX;
+ var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);
+ offsetLeft = screenWidth / 2 - centerLeft;
+ if (offsetLeft > 0) {
+ offsetLeft = 0;
+ }
+ if (offsetLeft < MaxLeft) {
+ offsetLeft = MaxLeft;
+ }
+ this.scrollOption = {
+ currentOffset: offsetLeft,
+ startTouchX: 0,
+ distance: 0,
+ lastMoveTime: 0 };
+
+ calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);
+ this.opts._scrollDistance_ = offsetLeft;
+ drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+};
+
+uCharts.prototype.dobuleZoom = function (e) {
+ if (this.opts.enableScroll !== true) {
+ console.log('[uCharts] 请启用滚动条后使用');
+ return;
+ }
+ var tcs = e.changedTouches;
+ if (tcs.length < 2) {
+ return;
+ }
+ for (var i = 0; i < tcs.length; i++) {
+ tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX;
+ tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY;
+ }
+ var ntcs = [getTouches(tcs[0], this.opts, e), getTouches(tcs[1], this.opts, e)];
+ var xlength = Math.abs(ntcs[0].x - ntcs[1].x);
+ // 记录初始的两指之间的数据
+ if (!this.scrollOption.moveCount) {
+ var cts0 = { changedTouches: [{ x: tcs[0].x, y: this.opts.area[0] / this.opts.pix + 2 }] };
+ var cts1 = { changedTouches: [{ x: tcs[1].x, y: this.opts.area[0] / this.opts.pix + 2 }] };
+ if (this.opts.rotate) {
+ cts0 = { changedTouches: [{ x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2, y: tcs[0].y }] };
+ cts1 = { changedTouches: [{ x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2, y: tcs[1].y }] };
+ }
+ var moveCurrent1 = this.getCurrentDataIndex(cts0).index;
+ var moveCurrent2 = this.getCurrentDataIndex(cts1).index;
+ var moveCount = Math.abs(moveCurrent1 - moveCurrent2);
+ this.scrollOption.moveCount = moveCount;
+ this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2);
+ this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2);
+ return;
+ }
+
+ var currentEachSpacing = xlength / this.scrollOption.moveCount;
+ var itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing;
+ itemCount = itemCount <= 2 ? 2 : itemCount;
+ itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount;
+ this.opts.animation = false;
+ this.opts.xAxis.itemCount = itemCount;
+ // 重新计算滚动条偏移距离
+ var offsetLeft = 0;
+ var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
+ xAxisPoints = _getXAxisPoints0.xAxisPoints,
+ startX = _getXAxisPoints0.startX,
+ endX = _getXAxisPoints0.endX,
+ eachSpacing = _getXAxisPoints0.eachSpacing;
+ var currentLeft = eachSpacing * this.scrollOption.moveCurrent1;
+ var screenWidth = endX - startX;
+ var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);
+ offsetLeft = -currentLeft + Math.min(ntcs[0].x, ntcs[1].x) - this.opts.area[3] - eachSpacing;
+ if (offsetLeft > 0) {
+ offsetLeft = 0;
+ }
+ if (offsetLeft < MaxLeft) {
+ offsetLeft = MaxLeft;
+ }
+ this.scrollOption.currentOffset = offsetLeft;
+ this.scrollOption.startTouchX = 0;
+ this.scrollOption.distance = 0;
+ calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);
+ this.opts._scrollDistance_ = offsetLeft;
+ drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+};
+
+uCharts.prototype.stopAnimation = function () {
+ this.animationInstance && this.animationInstance.stop();
+};
+
+uCharts.prototype.addEventListener = function (type, listener) {
+ this.uevent.addEventListener(type, listener);
+};
+
+uCharts.prototype.delEventListener = function (type) {
+ this.uevent.delEventListener(type);
+};
+
+uCharts.prototype.getCurrentDataIndex = function (e) {
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ if (touches) {
+ var _touches$ = getTouches(touches, this.opts, e);
+ if (this.opts.type === 'pie' || this.opts.type === 'ring') {
+ return findPieChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y },
+ this.opts.chartData.pieData, this.opts);
+ } else if (this.opts.type === 'rose') {
+ return findRoseChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y },
+ this.opts.chartData.pieData, this.opts);
+ } else if (this.opts.type === 'radar') {
+ return findRadarChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y },
+ this.opts.chartData.radarData, this.opts.categories.length);
+ } else if (this.opts.type === 'funnel') {
+ return findFunnelChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y },
+ this.opts.chartData.funnelData);
+ } else if (this.opts.type === 'map') {
+ return findMapChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y },
+ this.opts);
+ } else if (this.opts.type === 'word') {
+ return findWordChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y },
+ this.opts.chartData.wordCloudData);
+ } else if (this.opts.type === 'bar') {
+ return findBarChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y },
+ this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));
+ } else {
+ return findCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y },
+ this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));
+ }
+ }
+ return -1;
+};
+
+uCharts.prototype.getLegendDataIndex = function (e) {
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ if (touches) {
+ var _touches$ = getTouches(touches, this.opts, e);
+ return findLegendIndex({
+ x: _touches$.x,
+ y: _touches$.y },
+ this.opts.chartData.legendData);
+ }
+ return -1;
+};
+
+uCharts.prototype.touchLegend = function (e) {
+ var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ if (touches) {
+ var _touches$ = getTouches(touches, this.opts, e);
+ var index = this.getLegendDataIndex(e);
+ if (index >= 0) {
+ if (this.opts.type == 'candle') {
+ this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show;
+ } else {
+ this.opts.series[index].show = !this.opts.series[index].show;
+ }
+ this.opts.animation = option.animation ? true : false;
+ this.opts._scrollDistance_ = this.scrollOption.currentOffset;
+ drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+ }
+ }
+
+};
+
+uCharts.prototype.showToolTip = function (e) {var _this2 = this;
+ var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ if (!touches) {
+ console.log("[uCharts] 未获取到event坐标信息");
+ }
+ var _touches$ = getTouches(touches, this.opts, e);
+ var currentOffset = this.scrollOption.currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset,
+ animation: false });
+
+ if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') {
+ var current = this.getCurrentDataIndex(e);
+ var index = option.index == undefined ? current.index : option.index;
+ if (index > -1 || index.length > 0) {
+ var seriesData = getSeriesDataItem(this.opts.series, index, current.group);
+ if (seriesData.length !== 0) {
+ var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),
+ textList = _getToolTipData.textList,
+ offset = _getToolTipData.offset;
+ offset.y = _touches$.y;
+ opts.tooltip = {
+ textList: option.textList !== undefined ? option.textList : textList,
+ offset: option.offset !== undefined ? option.offset : offset,
+ option: option,
+ index: index };
+
+ }
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'mount') {
+ var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index;
+ if (index > -1) {
+ var opts = assign({}, this.opts, { animation: false });
+ var seriesData = assign({}, opts._series_[index]);
+ var textList = [{
+ text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,
+ color: seriesData.color }];
+
+ var offset = {
+ x: opts.chartData.calPoints[index].x,
+ y: _touches$.y };
+
+ opts.tooltip = {
+ textList: option.textList ? option.textList : textList,
+ offset: option.offset !== undefined ? option.offset : offset,
+ option: option,
+ index: index };
+
+ }
+
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'bar') {
+ var current = this.getCurrentDataIndex(e);
+ var index = option.index == undefined ? current.index : option.index;
+ if (index > -1 || index.length > 0) {
+ var seriesData = getSeriesDataItem(this.opts.series, index, current.group);
+ if (seriesData.length !== 0) {
+ var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),
+ textList = _getToolTipData.textList,
+ offset = _getToolTipData.offset;
+ offset.x = _touches$.x;
+ opts.tooltip = {
+ textList: option.textList !== undefined ? option.textList : textList,
+ offset: option.offset !== undefined ? option.offset : offset,
+ option: option,
+ index: index };
+
+ }
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'mix') {
+ var current = this.getCurrentDataIndex(e);
+ var index = option.index == undefined ? current.index : option.index;
+ if (index > -1) {
+ var currentOffset = this.scrollOption.currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset,
+ animation: false });
+
+ var seriesData = getSeriesDataItem(this.opts.series, index);
+ if (seriesData.length !== 0) {
+ var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option),
+ textList = _getMixToolTipData.textList,
+ offset = _getMixToolTipData.offset;
+ offset.y = _touches$.y;
+ opts.tooltip = {
+ textList: option.textList ? option.textList : textList,
+ offset: option.offset !== undefined ? option.offset : offset,
+ option: option,
+ index: index };
+
+ }
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'candle') {
+ var current = this.getCurrentDataIndex(e);
+ var index = option.index == undefined ? current.index : option.index;
+ if (index > -1) {
+ var currentOffset = this.scrollOption.currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset,
+ animation: false });
+
+ var seriesData = getSeriesDataItem(this.opts.series, index);
+ if (seriesData.length !== 0) {
+ var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option),
+ textList = _getToolTipData.textList,
+ offset = _getToolTipData.offset;
+ offset.y = _touches$.y;
+ opts.tooltip = {
+ textList: option.textList ? option.textList : textList,
+ offset: option.offset !== undefined ? option.offset : offset,
+ option: option,
+ index: index };
+
+ }
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') {
+ var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
+ if (index > -1) {
+ var opts = assign({}, this.opts, { animation: false });
+ var seriesData = assign({}, opts._series_[index]);
+ var textList = [{
+ text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,
+ color: seriesData.color }];
+
+ var offset = {
+ x: _touches$.x,
+ y: _touches$.y };
+
+ opts.tooltip = {
+ textList: option.textList ? option.textList : textList,
+ offset: option.offset !== undefined ? option.offset : offset,
+ option: option,
+ index: index };
+
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'map') {
+ var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
+ if (index > -1) {
+ var opts = assign({}, this.opts, { animation: false });
+ var seriesData = assign({}, this.opts.series[index]);
+ seriesData.name = seriesData.properties.name;
+ var textList = [{
+ text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,
+ color: seriesData.color }];
+
+ var offset = {
+ x: _touches$.x,
+ y: _touches$.y };
+
+ opts.tooltip = {
+ textList: option.textList ? option.textList : textList,
+ offset: option.offset !== undefined ? option.offset : offset,
+ option: option,
+ index: index };
+
+ }
+ opts.updateData = false;
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'word') {
+ var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
+ if (index > -1) {
+ var opts = assign({}, this.opts, { animation: false });
+ var seriesData = assign({}, this.opts.series[index]);
+ var textList = [{
+ text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,
+ color: seriesData.color }];
+
+ var offset = {
+ x: _touches$.x,
+ y: _touches$.y };
+
+ opts.tooltip = {
+ textList: option.textList ? option.textList : textList,
+ offset: option.offset !== undefined ? option.offset : offset,
+ option: option,
+ index: index };
+
+ }
+ opts.updateData = false;
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'radar') {
+ var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
+ if (index > -1) {
+ var opts = assign({}, this.opts, { animation: false });
+ var seriesData = getSeriesDataItem(this.opts.series, index);
+ if (seriesData.length !== 0) {
+ var textList = seriesData.map(function (item) {
+ return {
+ text: option.formatter ? option.formatter(item, _this2.opts.categories[index], index, _this2.opts) : item.name + ': ' + item.data,
+ color: item.color };
+
+ });
+ var offset = {
+ x: _touches$.x,
+ y: _touches$.y };
+
+ opts.tooltip = {
+ textList: option.textList ? option.textList : textList,
+ offset: option.offset !== undefined ? option.offset : offset,
+ option: option,
+ index: index };
+
+ }
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+};
+
+uCharts.prototype.translate = function (distance) {
+ this.scrollOption = {
+ currentOffset: distance,
+ startTouchX: distance,
+ distance: 0,
+ lastMoveTime: 0 };
+
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: distance,
+ animation: false });
+
+ drawCharts.call(this, this.opts.type, opts, this.config, this.context);
+};
+
+uCharts.prototype.scrollStart = function (e) {
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ var _touches$ = getTouches(touches, this.opts, e);
+ if (touches && this.opts.enableScroll === true) {
+ this.scrollOption.startTouchX = _touches$.x;
+ }
+};
+
+uCharts.prototype.scroll = function (e) {
+ if (this.scrollOption.lastMoveTime === 0) {
+ this.scrollOption.lastMoveTime = Date.now();
+ }
+ var Limit = this.opts.touchMoveLimit || 60;
+ var currMoveTime = Date.now();
+ var duration = currMoveTime - this.scrollOption.lastMoveTime;
+ if (duration < Math.floor(1000 / Limit)) return;
+ if (this.scrollOption.startTouchX == 0) return;
+ this.scrollOption.lastMoveTime = currMoveTime;
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ if (touches && this.opts.enableScroll === true) {
+ var _touches$ = getTouches(touches, this.opts, e);
+ var _distance;
+ _distance = _touches$.x - this.scrollOption.startTouchX;
+ var currentOffset = this.scrollOption.currentOffset;
+ var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts);
+ this.scrollOption.distance = _distance = validDistance - currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset + _distance,
+ animation: false });
+
+ this.opts = opts;
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ return currentOffset + _distance;
+ }
+};
+
+uCharts.prototype.scrollEnd = function (e) {
+ if (this.opts.enableScroll === true) {
+ var _scrollOption = this.scrollOption,
+ currentOffset = _scrollOption.currentOffset,
+ distance = _scrollOption.distance;
+ this.scrollOption.currentOffset = currentOffset + distance;
+ this.scrollOption.distance = 0;
+ this.scrollOption.moveCount = 0;
+ }
+};var _default =
+
+uCharts;exports.default = _default;
+
+/***/ }),
+
+/***/ 135:
+/*!************************************************************************************************!*\
+ !*** D:/项目/济南项目微信小程序/Jinan_app/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js ***!
+ \************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
+ * uCharts®
+ * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台
+ * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.
+ * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+ * 复制使用请保留本段注释,感谢支持开源!
+ *
+ * uCharts®官方网站
+ * https://www.uCharts.cn
+ *
+ * 开源地址:
+ * https://gitee.com/uCharts/uCharts
+ *
+ * uni-app插件市场地址:
+ * http://ext.dcloud.net.cn/plugin?id=271
+ *
+ */
+
+// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性
+var color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];
+
+//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改
+var formatDateTime = function formatDateTime(timeStamp, returnType) {
+ var date = new Date();
+ date.setTime(timeStamp * 1000);
+ var y = date.getFullYear();
+ var m = date.getMonth() + 1;
+ m = m < 10 ? '0' + m : m;
+ var d = date.getDate();
+ d = d < 10 ? '0' + d : d;
+ var h = date.getHours();
+ h = h < 10 ? '0' + h : h;
+ var minute = date.getMinutes();
+ var second = date.getSeconds();
+ minute = minute < 10 ? '0' + minute : minute;
+ second = second < 10 ? '0' + second : second;
+ if (returnType == 'full') {return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;}
+ if (returnType == 'y-m-d') {return y + '-' + m + '-' + d;}
+ if (returnType == 'h:m') {return h + ':' + minute;}
+ if (returnType == 'h:m:s') {return h + ':' + minute + ':' + second;}
+ return [y, m, d, h, minute, second];
+};
+
+var cfu = {
+ //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可
+ "type": ["pie", "ring", "rose", "word", "funnel", "map", "arcbar", "line", "column", "mount", "bar", "area", "radar", "gauge", "candle", "mix", "tline", "tarea", "scatter", "bubble", "demotype"],
+ "range": ["饼状图", "圆环图", "玫瑰图", "词云图", "漏斗图", "地图", "圆弧进度条", "折线图", "柱状图", "山峰图", "条状图", "区域图", "雷达图", "仪表盘", "K线图", "混合图", "时间轴折线", "时间轴区域", "散点图", "气泡图", "自定义类型"],
+ //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype"
+ //自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories
+ "categories": ["line", "column", "mount", "bar", "area", "radar", "gauge", "candle", "mix", "demotype"],
+ //instance为实例变量承载属性,不要删除
+ "instance": {},
+ //option为opts及eopts承载属性,不要删除
+ "option": {},
+ //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
+ "formatter": {
+ "yAxisDemo1": function yAxisDemo1(val, index, opts) {return val + '元';},
+ "yAxisDemo2": function yAxisDemo2(val, index, opts) {return val.toFixed(2);},
+ "xAxisDemo1": function xAxisDemo1(val, index, opts) {return val + '年';},
+ "xAxisDemo2": function xAxisDemo2(val, index, opts) {return formatDateTime(val, 'h:m');},
+ "seriesDemo1": function seriesDemo1(val, index, series, opts) {return val + '元';},
+ "tooltipDemo1": function tooltipDemo1(item, category, index, opts) {
+ if (index == 0) {
+ return '随便用' + item.data + '年';
+ } else {
+ return '其他我没改' + item.data + '天';
+ }
+ },
+ "pieDemo": function pieDemo(val, index, series, opts) {
+ if (index !== undefined) {
+ return series[index].name + ':' + series[index].data + '元';
+ }
+ } },
+
+ //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。
+ "demotype": {
+ //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置
+ "type": "line",
+ "color": color,
+ "padding": [15, 10, 0, 15],
+ "xAxis": {
+ "disableGrid": true },
+
+ "yAxis": {
+ "gridType": "dash",
+ "dashLength": 2 },
+
+ "legend": {},
+
+ "extra": {
+ "line": {
+ "type": "curve",
+ "width": 2 } } },
+
+
+
+ //下面是自定义配置,请添加项目所需的通用配置
+ "pie": {
+ "type": "pie",
+ "color": color,
+ "padding": [5, 5, 5, 5],
+ "extra": {
+ "pie": {
+ "activeOpacity": 0.5,
+ "activeRadius": 10,
+ "offsetAngle": 0,
+ "labelWidth": 15,
+ "border": true,
+ "borderWidth": 3,
+ "borderColor": "#FFFFFF" } } },
+
+
+
+ "ring": {
+ "type": "ring",
+ "color": color,
+ "padding": [5, 5, 5, 5],
+ "rotate": false,
+ "dataLabel": true,
+ "legend": {
+ "show": true,
+ "position": "right",
+ "lineHeight": 25 },
+
+ "title": {
+ "name": "收益率",
+ "fontSize": 15,
+ "color": "#666666" },
+
+ "subtitle": {
+ "name": "70%",
+ "fontSize": 25,
+ "color": "#7cb5ec" },
+
+ "extra": {
+ "ring": {
+ "ringWidth": 30,
+ "activeOpacity": 0.5,
+ "activeRadius": 10,
+ "offsetAngle": 0,
+ "labelWidth": 15,
+ "border": true,
+ "borderWidth": 3,
+ "borderColor": "#FFFFFF" } } },
+
+
+
+ "rose": {
+ "type": "rose",
+ "color": color,
+ "padding": [5, 5, 5, 5],
+ "legend": {
+ "show": true,
+ "position": "left",
+ "lineHeight": 25 },
+
+ "extra": {
+ "rose": {
+ "type": "area",
+ "minRadius": 50,
+ "activeOpacity": 0.5,
+ "activeRadius": 10,
+ "offsetAngle": 0,
+ "labelWidth": 15,
+ "border": false,
+ "borderWidth": 2,
+ "borderColor": "#FFFFFF" } } },
+
+
+
+ "word": {
+ "type": "word",
+ "color": color,
+ "extra": {
+ "word": {
+ "type": "normal",
+ "autoColors": false } } },
+
+
+
+ "funnel": {
+ "type": "funnel",
+ "color": color,
+ "padding": [15, 15, 0, 15],
+ "extra": {
+ "funnel": {
+ "activeOpacity": 0.3,
+ "activeWidth": 10,
+ "border": true,
+ "borderWidth": 2,
+ "borderColor": "#FFFFFF",
+ "fillOpacity": 1,
+ "labelAlign": "right" } } },
+
+
+
+ "map": {
+ "type": "map",
+ "color": color,
+ "padding": [0, 0, 0, 0],
+ "dataLabel": true,
+ "extra": {
+ "map": {
+ "border": true,
+ "borderWidth": 1,
+ "borderColor": "#666666",
+ "fillOpacity": 0.6,
+ "activeBorderColor": "#F04864",
+ "activeFillColor": "#FACC14",
+ "activeFillOpacity": 1 } } },
+
+
+
+ "arcbar": {
+ "type": "arcbar",
+ "color": color,
+ "title": {
+ "name": "百分比",
+ "fontSize": 25,
+ "color": "#00FF00" },
+
+ "subtitle": {
+ "name": "默认标题",
+ "fontSize": 15,
+ "color": "#666666" },
+
+ "extra": {
+ "arcbar": {
+ "type": "default",
+ "width": 12,
+ "backgroundColor": "#E9E9E9",
+ "startAngle": 0.75,
+ "endAngle": 0.25,
+ "gap": 2 } } },
+
+
+
+ "line": {
+ "type": "line",
+ "color": color,
+ "padding": [15, 10, 0, 15],
+ "xAxis": {
+ "disableGrid": true },
+
+ "yAxis": {
+ "gridType": "dash",
+ "dashLength": 2 },
+
+ "legend": {},
+
+ "extra": {
+ "line": {
+ "type": "straight",
+ "width": 2 } } },
+
+
+
+ "tline": {
+ "type": "line",
+ "color": color,
+ "padding": [15, 10, 0, 15],
+ "xAxis": {
+ "disableGrid": false,
+ "boundaryGap": "justify" },
+
+ "yAxis": {
+ "gridType": "dash",
+ "dashLength": 2,
+ "data": [
+ {
+ "min": 0,
+ "max": 80 }] },
+
+
+
+ "legend": {},
+
+ "extra": {
+ "line": {
+ "type": "curve",
+ "width": 2 } } },
+
+
+
+ "tarea": {
+ "type": "area",
+ "color": color,
+ "padding": [15, 10, 0, 15],
+ "xAxis": {
+ "disableGrid": true,
+ "boundaryGap": "justify" },
+
+ "yAxis": {
+ "gridType": "dash",
+ "dashLength": 2,
+ "data": [
+ {
+ "min": 0,
+ "max": 80 }] },
+
+
+
+ "legend": {},
+
+ "extra": {
+ "area": {
+ "type": "curve",
+ "opacity": 0.2,
+ "addLine": true,
+ "width": 2,
+ "gradient": true } } },
+
+
+
+ "column": {
+ "type": "column",
+ "color": color,
+ "padding": [15, 15, 0, 5],
+ "xAxis": {
+ "disableGrid": true },
+
+ "yAxis": {
+ "data": [{ "min": 0 }] },
+
+ "legend": {},
+
+ "extra": {
+ "column": {
+ "type": "group",
+ "width": 30,
+ "activeBgColor": "#000000",
+ "activeBgOpacity": 0.08 } } },
+
+
+
+ "mount": {
+ "type": "mount",
+ "color": color,
+ "padding": [15, 15, 0, 5],
+ "xAxis": {
+ "disableGrid": true },
+
+ "yAxis": {
+ "data": [{ "min": 0 }] },
+
+ "legend": {},
+
+ "extra": {
+ "mount": {
+ "type": "mount",
+ "widthRatio": 1.5 } } },
+
+
+
+ "bar": {
+ "type": "bar",
+ "color": color,
+ "padding": [15, 30, 0, 5],
+ "xAxis": {
+ "boundaryGap": "justify",
+ "disableGrid": false,
+ "min": 0,
+ "axisLine": false },
+
+ "yAxis": {},
+
+ "legend": {},
+
+ "extra": {
+ "bar": {
+ "type": "group",
+ "width": 30,
+ "meterBorde": 1,
+ "meterFillColor": "#FFFFFF",
+ "activeBgColor": "#000000",
+ "activeBgOpacity": 0.08 } } },
+
+
+
+ "area": {
+ "type": "area",
+ "color": color,
+ "padding": [15, 15, 0, 15],
+ "xAxis": {
+ "disableGrid": true },
+
+ "yAxis": {
+ "gridType": "dash",
+ "dashLength": 2 },
+
+ "legend": {},
+
+ "extra": {
+ "area": {
+ "type": "straight",
+ "opacity": 0.2,
+ "addLine": true,
+ "width": 2,
+ "gradient": false } } },
+
+
+
+ "radar": {
+ "type": "radar",
+ "color": color,
+ "padding": [5, 5, 5, 5],
+ "dataLabel": false,
+ "legend": {
+ "show": true,
+ "position": "right",
+ "lineHeight": 25 },
+
+ "extra": {
+ "radar": {
+ "gridType": "radar",
+ "gridColor": "#CCCCCC",
+ "gridCount": 3,
+ "opacity": 0.2,
+ "max": 200 } } },
+
+
+
+ "gauge": {
+ "type": "gauge",
+ "color": color,
+ "title": {
+ "name": "66Km/H",
+ "fontSize": 25,
+ "color": "#2fc25b",
+ "offsetY": 50 },
+
+ "subtitle": {
+ "name": "实时速度",
+ "fontSize": 15,
+ "color": "#1890ff",
+ "offsetY": -50 },
+
+ "extra": {
+ "gauge": {
+ "type": "default",
+ "width": 30,
+ "labelColor": "#666666",
+ "startAngle": 0.75,
+ "endAngle": 0.25,
+ "startNumber": 0,
+ "endNumber": 100,
+ "labelFormat": "",
+ "splitLine": {
+ "fixRadius": 0,
+ "splitNumber": 10,
+ "width": 30,
+ "color": "#FFFFFF",
+ "childNumber": 5,
+ "childWidth": 12 },
+
+ "pointer": {
+ "width": 24,
+ "color": "auto" } } } },
+
+
+
+
+ "candle": {
+ "type": "candle",
+ "color": color,
+ "padding": [15, 15, 0, 15],
+ "enableScroll": true,
+ "enableMarkLine": true,
+ "dataLabel": false,
+ "xAxis": {
+ "labelCount": 4,
+ "itemCount": 40,
+ "disableGrid": true,
+ "gridColor": "#CCCCCC",
+ "gridType": "solid",
+ "dashLength": 4,
+ "scrollShow": true,
+ "scrollAlign": "left",
+ "scrollColor": "#A6A6A6",
+ "scrollBackgroundColor": "#EFEBEF" },
+
+ "yAxis": {},
+
+ "legend": {},
+
+ "extra": {
+ "candle": {
+ "color": {
+ "upLine": "#f04864",
+ "upFill": "#f04864",
+ "downLine": "#2fc25b",
+ "downFill": "#2fc25b" },
+
+ "average": {
+ "show": true,
+ "name": ["MA5", "MA10", "MA30"],
+ "day": [5, 10, 20],
+ "color": ["#1890ff", "#2fc25b", "#facc14"] } },
+
+
+ "markLine": {
+ "type": "dash",
+ "dashLength": 5,
+ "data": [
+ {
+ "value": 2150,
+ "lineColor": "#f04864",
+ "showLabel": true },
+
+ {
+ "value": 2350,
+ "lineColor": "#f04864",
+ "showLabel": true }] } } },
+
+
+
+
+
+ "mix": {
+ "type": "mix",
+ "color": color,
+ "padding": [15, 15, 0, 15],
+ "xAxis": {
+ "disableGrid": true },
+
+ "yAxis": {
+ "disabled": false,
+ "disableGrid": false,
+ "splitNumber": 5,
+ "gridType": "dash",
+ "dashLength": 4,
+ "gridColor": "#CCCCCC",
+ "padding": 10,
+ "showTitle": true,
+ "data": [] },
+
+ "legend": {},
+
+ "extra": {
+ "mix": {
+ "column": {
+ "width": 20 } } } },
+
+
+
+
+ "scatter": {
+ "type": "scatter",
+ "color": color,
+ "padding": [15, 15, 0, 15],
+ "dataLabel": false,
+ "xAxis": {
+ "disableGrid": false,
+ "gridType": "dash",
+ "splitNumber": 5,
+ "boundaryGap": "justify",
+ "min": 0 },
+
+ "yAxis": {
+ "disableGrid": false,
+ "gridType": "dash" },
+
+ "legend": {},
+
+ "extra": {
+ "scatter": {} } },
+
+
+
+ "bubble": {
+ "type": "bubble",
+ "color": color,
+ "padding": [15, 15, 0, 15],
+ "xAxis": {
+ "disableGrid": false,
+ "gridType": "dash",
+ "splitNumber": 5,
+ "boundaryGap": "justify",
+ "min": 0,
+ "max": 250 },
+
+ "yAxis": {
+ "disableGrid": false,
+ "gridType": "dash",
+ "data": [{
+ "min": 0,
+ "max": 150 }] },
+
+
+ "legend": {},
+
+ "extra": {
+ "bubble": {
+ "border": 2,
+ "opacity": 0.5 } } } };var _default =
+
+
+
+
+
+cfu;exports.default = _default;
+
+/***/ }),
+
+/***/ 14:
+/*!**************************************************************************************!*\
+ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vuex3/dist/vuex.common.js ***!
+ \**************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/*!
* vuex v3.6.2
* (c) 2021 Evan You
* @license MIT
*/
-function n(e){var t=Number(e.version.split(".")[0]);if(t>=2)e.mixin({beforeCreate:i});else{var n=e.prototype._init;e.prototype._init=function(e){void 0===e&&(e={}),e.init=e.init?[i].concat(e.init):i,n.call(this,e)}}function i(){var e=this.$options;e.store?this.$store="function"===typeof e.store?e.store():e.store:e.parent&&e.parent.$store&&(this.$store=e.parent.$store)}}var i="undefined"!==typeof window?window:"undefined"!==typeof t?t:{},r=i.__VUE_DEVTOOLS_GLOBAL_HOOK__;function o(e){r&&(e._devtoolHook=r,r.emit("vuex:init",e),r.on("vuex:travel-to-state",(function(t){e.replaceState(t)})),e.subscribe((function(e,t){r.emit("vuex:mutation",e,t)}),{prepend:!0}),e.subscribeAction((function(e,t){r.emit("vuex:action",e,t)}),{prepend:!0}))}function a(e,t){return e.filter(t)[0]}function s(e,t){if(void 0===t&&(t=[]),null===e||"object"!==typeof e)return e;var n=a(t,(function(t){return t.original===e}));if(n)return n.copy;var i=Array.isArray(e)?[]:{};return t.push({original:e,copy:i}),Object.keys(e).forEach((function(n){i[n]=s(e[n],t)})),i}function c(e,t){Object.keys(e).forEach((function(n){return t(e[n],n)}))}function l(e){return null!==e&&"object"===typeof e}function u(e){return e&&"function"===typeof e.then}function d(e,t){if(!e)throw new Error("[vuex] "+t)}function f(e,t){return function(){return e(t)}}var h=function(e,t){this.runtime=t,this._children=Object.create(null),this._rawModule=e;var n=e.state;this.state=("function"===typeof n?n():n)||{}},p={namespaced:{configurable:!0}};p.namespaced.get=function(){return!!this._rawModule.namespaced},h.prototype.addChild=function(e,t){this._children[e]=t},h.prototype.removeChild=function(e){delete this._children[e]},h.prototype.getChild=function(e){return this._children[e]},h.prototype.hasChild=function(e){return e in this._children},h.prototype.update=function(e){this._rawModule.namespaced=e.namespaced,e.actions&&(this._rawModule.actions=e.actions),e.mutations&&(this._rawModule.mutations=e.mutations),e.getters&&(this._rawModule.getters=e.getters)},h.prototype.forEachChild=function(e){c(this._children,e)},h.prototype.forEachGetter=function(e){this._rawModule.getters&&c(this._rawModule.getters,e)},h.prototype.forEachAction=function(e){this._rawModule.actions&&c(this._rawModule.actions,e)},h.prototype.forEachMutation=function(e){this._rawModule.mutations&&c(this._rawModule.mutations,e)},Object.defineProperties(h.prototype,p);var g=function(e){this.register([],e,!1)};function v(e,t,n){if(b(e,n),t.update(n),n.modules)for(var i in n.modules){if(!t.getChild(i))return void console.warn("[vuex] trying to add a new module '"+i+"' on hot reloading, manual reload is needed");v(e.concat(i),t.getChild(i),n.modules[i])}}g.prototype.get=function(e){return e.reduce((function(e,t){return e.getChild(t)}),this.root)},g.prototype.getNamespace=function(e){var t=this.root;return e.reduce((function(e,n){return t=t.getChild(n),e+(t.namespaced?n+"/":"")}),"")},g.prototype.update=function(e){v([],this.root,e)},g.prototype.register=function(e,t,n){var i=this;void 0===n&&(n=!0),b(e,t);var r=new h(t,n);if(0===e.length)this.root=r;else{var o=this.get(e.slice(0,-1));o.addChild(e[e.length-1],r)}t.modules&&c(t.modules,(function(t,r){i.register(e.concat(r),t,n)}))},g.prototype.unregister=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1],i=t.getChild(n);i?i.runtime&&t.removeChild(n):console.warn("[vuex] trying to unregister module '"+n+"', which is not registered")},g.prototype.isRegistered=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1];return!!t&&t.hasChild(n)};var y,m={assert:function(e){return"function"===typeof e},expected:"function"},x={assert:function(e){return"function"===typeof e||"object"===typeof e&&"function"===typeof e.handler},expected:'function or object with "handler" function'},A={getters:m,mutations:m,actions:x};function b(e,t){Object.keys(A).forEach((function(n){if(t[n]){var i=A[n];c(t[n],(function(t,r){d(i.assert(t),w(e,n,r,t,i.expected))}))}}))}function w(e,t,n,i,r){var o=t+" should be "+r+' but "'+t+"."+n+'"';return e.length>0&&(o+=' in module "'+e.join(".")+'"'),o+=" is "+JSON.stringify(i)+".",o}var k=function e(t){var n=this;void 0===t&&(t={}),!y&&"undefined"!==typeof window&&window.Vue&&K(window.Vue),d(y,"must call Vue.use(Vuex) before creating a store instance."),d("undefined"!==typeof Promise,"vuex requires a Promise polyfill in this browser."),d(this instanceof e,"store must be called with the new operator.");var i=t.plugins;void 0===i&&(i=[]);var r=t.strict;void 0===r&&(r=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new g(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new y,this._makeLocalGettersCache=Object.create(null);var a=this,s=this,c=s.dispatch,l=s.commit;this.dispatch=function(e,t){return c.call(a,e,t)},this.commit=function(e,t,n){return l.call(a,e,t,n)},this.strict=r;var u=this._modules.root.state;P(this,u,[],this._modules.root),_(this,u),i.forEach((function(e){return e(n)}));var f=void 0!==t.devtools?t.devtools:y.config.devtools;f&&o(this)},S={state:{configurable:!0}};function T(e,t,n){return t.indexOf(e)<0&&(n&&n.prepend?t.unshift(e):t.push(e)),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function O(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;P(e,n,[],e._modules.root,!0),_(e,n,t)}function _(e,t,n){var i=e._vm;e.getters={},e._makeLocalGettersCache=Object.create(null);var r=e._wrappedGetters,o={};c(r,(function(t,n){o[n]=f(t,e),Object.defineProperty(e.getters,n,{get:function(){return e._vm[n]},enumerable:!0})}));var a=y.config.silent;y.config.silent=!0,e._vm=new y({data:{$$state:t},computed:o}),y.config.silent=a,e.strict&&D(e),i&&(n&&e._withCommit((function(){i._data.$$state=null})),y.nextTick((function(){return i.$destroy()})))}function P(e,t,n,i,r){var o=!n.length,a=e._modules.getNamespace(n);if(i.namespaced&&(e._modulesNamespaceMap[a]&&console.error("[vuex] duplicate namespace "+a+" for the namespaced module "+n.join("/")),e._modulesNamespaceMap[a]=i),!o&&!r){var s=M(t,n.slice(0,-1)),c=n[n.length-1];e._withCommit((function(){c in s&&console.warn('[vuex] state field "'+c+'" was overridden by a module with the same name at "'+n.join(".")+'"'),y.set(s,c,i.state)}))}var l=i.context=C(e,a,n);i.forEachMutation((function(t,n){var i=a+n;F(e,i,t,l)})),i.forEachAction((function(t,n){var i=t.root?n:a+n,r=t.handler||t;I(e,i,r,l)})),i.forEachGetter((function(t,n){var i=a+n;L(e,i,t,l)})),i.forEachChild((function(i,o){P(e,t,n.concat(o),i,r)}))}function C(e,t,n){var i=""===t,r={dispatch:i?e.dispatch:function(n,i,r){var o=R(n,i,r),a=o.payload,s=o.options,c=o.type;if(s&&s.root||(c=t+c,e._actions[c]))return e.dispatch(c,a);console.error("[vuex] unknown local action type: "+o.type+", global type: "+c)},commit:i?e.commit:function(n,i,r){var o=R(n,i,r),a=o.payload,s=o.options,c=o.type;s&&s.root||(c=t+c,e._mutations[c])?e.commit(c,a,s):console.error("[vuex] unknown local mutation type: "+o.type+", global type: "+c)}};return Object.defineProperties(r,{getters:{get:i?function(){return e.getters}:function(){return E(e,t)}},state:{get:function(){return M(e.state,n)}}}),r}function E(e,t){if(!e._makeLocalGettersCache[t]){var n={},i=t.length;Object.keys(e.getters).forEach((function(r){if(r.slice(0,i)===t){var o=r.slice(i);Object.defineProperty(n,o,{get:function(){return e.getters[r]},enumerable:!0})}})),e._makeLocalGettersCache[t]=n}return e._makeLocalGettersCache[t]}function F(e,t,n,i){var r=e._mutations[t]||(e._mutations[t]=[]);r.push((function(t){n.call(e,i.state,t)}))}function I(e,t,n,i){var r=e._actions[t]||(e._actions[t]=[]);r.push((function(t){var r=n.call(e,{dispatch:i.dispatch,commit:i.commit,getters:i.getters,state:i.state,rootGetters:e.getters,rootState:e.state},t);return u(r)||(r=Promise.resolve(r)),e._devtoolHook?r.catch((function(t){throw e._devtoolHook.emit("vuex:error",t),t})):r}))}function L(e,t,n,i){e._wrappedGetters[t]?console.error("[vuex] duplicate getter key: "+t):e._wrappedGetters[t]=function(e){return n(i.state,i.getters,e.state,e.getters)}}function D(e){e._vm.$watch((function(){return this._data.$$state}),(function(){d(e._committing,"do not mutate vuex store state outside mutation handlers.")}),{deep:!0,sync:!0})}function M(e,t){return t.reduce((function(e,t){return e[t]}),e)}function R(e,t,n){return l(e)&&e.type&&(n=t,t=e,e=e.type),d("string"===typeof e,"expects string as the type, but found "+typeof e+"."),{type:e,payload:t,options:n}}function K(e){y&&e===y?console.error("[vuex] already installed. Vue.use(Vuex) should be called only once."):(y=e,n(y))}S.state.get=function(){return this._vm._data.$$state},S.state.set=function(e){d(!1,"use store.replaceState() to explicit replace store state.")},k.prototype.commit=function(e,t,n){var i=this,r=R(e,t,n),o=r.type,a=r.payload,s=r.options,c={type:o,payload:a},l=this._mutations[o];l?(this._withCommit((function(){l.forEach((function(e){e(a)}))})),this._subscribers.slice().forEach((function(e){return e(c,i.state)})),s&&s.silent&&console.warn("[vuex] mutation type: "+o+". Silent option has been removed. Use the filter functionality in the vue-devtools")):console.error("[vuex] unknown mutation type: "+o)},k.prototype.dispatch=function(e,t){var n=this,i=R(e,t),r=i.type,o=i.payload,a={type:r,payload:o},s=this._actions[r];if(s){try{this._actionSubscribers.slice().filter((function(e){return e.before})).forEach((function(e){return e.before(a,n.state)}))}catch(l){console.warn("[vuex] error in before action subscribers: "),console.error(l)}var c=s.length>1?Promise.all(s.map((function(e){return e(o)}))):s[0](o);return new Promise((function(e,t){c.then((function(t){try{n._actionSubscribers.filter((function(e){return e.after})).forEach((function(e){return e.after(a,n.state)}))}catch(l){console.warn("[vuex] error in after action subscribers: "),console.error(l)}e(t)}),(function(e){try{n._actionSubscribers.filter((function(e){return e.error})).forEach((function(t){return t.error(a,n.state,e)}))}catch(l){console.warn("[vuex] error in error action subscribers: "),console.error(l)}t(e)}))}))}console.error("[vuex] unknown action type: "+r)},k.prototype.subscribe=function(e,t){return T(e,this._subscribers,t)},k.prototype.subscribeAction=function(e,t){var n="function"===typeof e?{before:e}:e;return T(n,this._actionSubscribers,t)},k.prototype.watch=function(e,t,n){var i=this;return d("function"===typeof e,"store.watch only accepts a function."),this._watcherVM.$watch((function(){return e(i.state,i.getters)}),t,n)},k.prototype.replaceState=function(e){var t=this;this._withCommit((function(){t._vm._data.$$state=e}))},k.prototype.registerModule=function(e,t,n){void 0===n&&(n={}),"string"===typeof e&&(e=[e]),d(Array.isArray(e),"module path must be a string or an Array."),d(e.length>0,"cannot register the root module by using registerModule."),this._modules.register(e,t),P(this,this.state,e,this._modules.get(e),n.preserveState),_(this,this.state)},k.prototype.unregisterModule=function(e){var t=this;"string"===typeof e&&(e=[e]),d(Array.isArray(e),"module path must be a string or an Array."),this._modules.unregister(e),this._withCommit((function(){var n=M(t.state,e.slice(0,-1));y.delete(n,e[e.length-1])})),O(this)},k.prototype.hasModule=function(e){return"string"===typeof e&&(e=[e]),d(Array.isArray(e),"module path must be a string or an Array."),this._modules.isRegistered(e)},k.prototype[[104,111,116,85,112,100,97,116,101].map((function(e){return String.fromCharCode(e)})).join("")]=function(e){this._modules.update(e),O(this,!0)},k.prototype._withCommit=function(e){var t=this._committing;this._committing=!0,e(),this._committing=t},Object.defineProperties(k.prototype,S);var j=Z((function(e,t){var n={};return H(t)||console.error("[vuex] mapState: mapper parameter must be either an Array or an Object"),W(t).forEach((function(t){var i=t.key,r=t.val;n[i]=function(){var t=this.$store.state,n=this.$store.getters;if(e){var i=V(this.$store,"mapState",e);if(!i)return;t=i.context.state,n=i.context.getters}return"function"===typeof r?r.call(this,t,n):t[r]},n[i].vuex=!0})),n})),z=Z((function(e,t){var n={};return H(t)||console.error("[vuex] mapMutations: mapper parameter must be either an Array or an Object"),W(t).forEach((function(t){var i=t.key,r=t.val;n[i]=function(){var t=[],n=arguments.length;while(n--)t[n]=arguments[n];var i=this.$store.commit;if(e){var o=V(this.$store,"mapMutations",e);if(!o)return;i=o.context.commit}return"function"===typeof r?r.apply(this,[i].concat(t)):i.apply(this.$store,[r].concat(t))}})),n})),U=Z((function(e,t){var n={};return H(t)||console.error("[vuex] mapGetters: mapper parameter must be either an Array or an Object"),W(t).forEach((function(t){var i=t.key,r=t.val;r=e+r,n[i]=function(){if(!e||V(this.$store,"mapGetters",e)){if(r in this.$store.getters)return this.$store.getters[r];console.error("[vuex] unknown getter: "+r)}},n[i].vuex=!0})),n})),B=Z((function(e,t){var n={};return H(t)||console.error("[vuex] mapActions: mapper parameter must be either an Array or an Object"),W(t).forEach((function(t){var i=t.key,r=t.val;n[i]=function(){var t=[],n=arguments.length;while(n--)t[n]=arguments[n];var i=this.$store.dispatch;if(e){var o=V(this.$store,"mapActions",e);if(!o)return;i=o.context.dispatch}return"function"===typeof r?r.apply(this,[i].concat(t)):i.apply(this.$store,[r].concat(t))}})),n})),N=function(e){return{mapState:j.bind(null,e),mapGetters:U.bind(null,e),mapMutations:z.bind(null,e),mapActions:B.bind(null,e)}};function W(e){return H(e)?Array.isArray(e)?e.map((function(e){return{key:e,val:e}})):Object.keys(e).map((function(t){return{key:t,val:e[t]}})):[]}function H(e){return Array.isArray(e)||l(e)}function Z(e){return function(t,n){return"string"!==typeof t?(n=t,t=""):"/"!==t.charAt(t.length-1)&&(t+="/"),e(t,n)}}function V(e,t,n){var i=e._modulesNamespaceMap[n];return i||console.error("[vuex] module namespace not found in "+t+"(): "+n),i}function q(e){void 0===e&&(e={});var t=e.collapsed;void 0===t&&(t=!0);var n=e.filter;void 0===n&&(n=function(e,t,n){return!0});var i=e.transformer;void 0===i&&(i=function(e){return e});var r=e.mutationTransformer;void 0===r&&(r=function(e){return e});var o=e.actionFilter;void 0===o&&(o=function(e,t){return!0});var a=e.actionTransformer;void 0===a&&(a=function(e){return e});var c=e.logMutations;void 0===c&&(c=!0);var l=e.logActions;void 0===l&&(l=!0);var u=e.logger;return void 0===u&&(u=console),function(e){var d=s(e.state);"undefined"!==typeof u&&(c&&e.subscribe((function(e,o){var a=s(o);if(n(e,d,a)){var c=G(),l=r(e),f="mutation "+e.type+c;J(u,f,t),u.log("%c prev state","color: #9E9E9E; font-weight: bold",i(d)),u.log("%c mutation","color: #03A9F4; font-weight: bold",l),u.log("%c next state","color: #4CAF50; font-weight: bold",i(a)),X(u)}d=a})),l&&e.subscribeAction((function(e,n){if(o(e,n)){var i=G(),r=a(e),s="action "+e.type+i;J(u,s,t),u.log("%c action","color: #03A9F4; font-weight: bold",r),X(u)}})))}}function J(e,t,n){var i=n?e.groupCollapsed:e.group;try{i.call(e,t)}catch(r){e.log(t)}}function X(e){try{e.groupEnd()}catch(t){e.log("—— log end ——")}}function G(){var e=new Date;return" @ "+Y(e.getHours(),2)+":"+Y(e.getMinutes(),2)+":"+Y(e.getSeconds(),2)+"."+Y(e.getMilliseconds(),3)}function Q(e,t){return new Array(t+1).join(e)}function Y(e,t){return Q("0",t-e.toString().length)+e}var $={Store:k,install:K,version:"3.6.2",mapState:j,mapMutations:z,mapGetters:U,mapActions:B,createNamespacedHelpers:N,createLogger:q};e.exports=$}).call(this,n(2))},15:function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=s(n(16)),r=s(n(19)),o=s(n(20)),a=s(n(13));function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t,n,i,r,o,a){try{var s=e[o](a),c=s.value}catch(l){return void n(l)}s.done?t(c):Promise.resolve(c).then(i,r)}function l(e){return function(){var t=this,n=arguments;return new Promise((function(i,r){var o=e.apply(t,n);function a(e){c(o,i,r,a,s,"next",e)}function s(e){c(o,i,r,a,s,"throw",e)}a(void 0)}))}}var u={getToken:function(){var t=a.default.state.token;t&&this.post("/api/Accounts/RefreshToken",{token:t.token,refreshToken:t.refreshToken},(function(t,n){a.default.commit("saveToken",n),e.setStorageSync("token",n)}))},uploadFile:function(t,n){var i=a.default.state.token||{};console.log(t,n,2222222),e.uploadFile({url:r.default.domain+"/api/Objects/integration/xxx",filePath:t,name:"file",header:{Authorization:"Bearer "+i.token||!1},success:function(e){console.log(e,333333);var t=JSON.parse(e.data);-100==t.status?o.default.askLogin():-1==t.status?o.default.showError(t.msg):n(t.data,t)}})},uploadFile2:function(t,n,i){var s=a.default.state.user||{};if(!s.lawyerInfo)return o.default.askLogin();console.log("1111111111111"+t),console.log("2222222222222"+n),console.log("3333333333333"+i),e.uploadFile({url:r.default.domain+"/file/uploadFile2",filePath:t,name:"file",formData:n,header:{token:s.lawyerInfo.token||"",login_type:s.login_type||0,who:s.who},success:function(e){console.log(e);var t=JSON.parse(e.data);-100==t.status?o.default.askLogin():-1==t.status?o.default.showError(t.msg):i(t.data,t)}})},get:function(t,n,s){var c=this;return l(i.default.mark((function l(){var u;return i.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return c.getToken(),u=a.default.state.token||{},i.next=4,e.request({url:r.default.api+t,method:"GET",data:n,header:{Authorization:"Bearer "+u.token||!1,"content-type":"application/json"},success:function(e){var t=e.data;-100==t.status?(console.log("没有登录"),o.default.askLogin()):-1==t.status?o.default.showError(t.msg):s(t.data,t)}});case 4:case"end":return i.stop()}}),l)})))()},post:function(t,n,i){"/api/Accounts/RefreshToken"!=t&&s!={}&&this.getToken();var s=a.default.state.token||{};try{e.request({url:r.default.api+t,method:"POST",data:n,header:{Authorization:"Bearer "+s.token||!1},success:function(e){var t=e.data;-100==t.status?(console.log("没有登录"),o.default.askLogin()):-1==t.status?(o.default.showError(t.msg),i(t.data,t)):i(t.data,t)},fail:function(e){console.error(e,8877897)}})}catch(c){console.log(c)}},patch:function(t,n,i){"/api/Accounts/RefreshToken"!=t&&s!={}&&this.getToken();var s=a.default.state.token||{};try{e.request({url:r.default.api+t,method:"PATCH",data:n,header:{Authorization:"Bearer "+s.token||!1},success:function(e){var t=e.data;-100==t.status?(console.log("没有登录"),o.default.askLogin()):-1==t.status?(o.default.showError(t.msg),i(t.data,t)):i(t.data,t)},fail:function(e){console.error(e,8877897)}})}catch(c){console.log(c)}},get2:function(t,n,i){var s=a.default.state.user||{};e.request({url:r.default.domain+t,method:"GET",data:n,header:{token:s.token||"",login_type:s.login_type||0},success:function(e){var t=e.data;-100==t.status?(console.log("没有登录"),o.default.askLogin()):-1==t.status?o.default.showError(t.msg):i(t.data,t)}})},post2:function(t,n,i){var s=a.default.state.user||{};try{e.request({url:r.default.domain+t,method:"POST",data:n,header:{token:s.lawyerInfo.token||"",login_type:s.login_type||0,who:s.who},success:function(e){var t=e.data;console.log(t,"------------- 请求返回的数据 -------------"),-100==t.status?(console.log("没有登录"),o.default.askLogin()):-1==t.status?(o.default.showError(t.msg),i(t.data,t)):i(t.data,t)},fail:function(e){console.error(e,8877897)}})}catch(c){console.log(c)}}},d=u;t.default=d}).call(this,n(1)["default"])},16:function(e,t,n){e.exports=n(17)},17:function(e,t,n){var i=function(){return this||"object"===typeof self&&self}()||Function("return this")(),r=i.regeneratorRuntime&&Object.getOwnPropertyNames(i).indexOf("regeneratorRuntime")>=0,o=r&&i.regeneratorRuntime;if(i.regeneratorRuntime=void 0,e.exports=n(18),r)i.regeneratorRuntime=o;else try{delete i.regeneratorRuntime}catch(a){i.regeneratorRuntime=void 0}},18:function(e,t){!function(t){"use strict";var n,i=Object.prototype,r=i.hasOwnProperty,o="function"===typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag",l="object"===typeof e,u=t.regeneratorRuntime;if(u)l&&(e.exports=u);else{u=t.regeneratorRuntime=l?e.exports:{},u.wrap=A;var d="suspendedStart",f="suspendedYield",h="executing",p="completed",g={},v={};v[a]=function(){return this};var y=Object.getPrototypeOf,m=y&&y(y(I([])));m&&m!==i&&r.call(m,a)&&(v=m);var x=S.prototype=w.prototype=Object.create(v);k.prototype=x.constructor=S,S.constructor=k,S[c]=k.displayName="GeneratorFunction",u.isGeneratorFunction=function(e){var t="function"===typeof e&&e.constructor;return!!t&&(t===k||"GeneratorFunction"===(t.displayName||t.name))},u.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,S):(e.__proto__=S,c in e||(e[c]="GeneratorFunction")),e.prototype=Object.create(x),e},u.awrap=function(e){return{__await:e}},T(O.prototype),O.prototype[s]=function(){return this},u.AsyncIterator=O,u.async=function(e,t,n,i){var r=new O(A(e,t,n,i));return u.isGeneratorFunction(t)?r:r.next().then((function(e){return e.done?e.value:r.next()}))},T(x),x[c]="Generator",x[a]=function(){return this},x.toString=function(){return"[object Generator]"},u.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){while(t.length){var i=t.pop();if(i in e)return n.value=i,n.done=!1,n}return n.done=!0,n}},u.values=I,F.prototype={constructor:F,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(E),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var e=this.tryEntries[0],t=e.completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function i(i,r){return s.type="throw",s.arg=e,t.next=i,r&&(t.method="next",t.arg=n),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(c&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;E(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,i){return this.delegate={iterator:I(e),resultName:t,nextLoc:i},"next"===this.method&&(this.arg=n),g}}}function A(e,t,n,i){var r=t&&t.prototype instanceof w?t:w,o=Object.create(r.prototype),a=new F(i||[]);return o._invoke=_(e,n,a),o}function b(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(i){return{type:"throw",arg:i}}}function w(){}function k(){}function S(){}function T(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function O(e){function t(n,i,o,a){var s=b(e[n],e,i);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"===typeof l&&r.call(l,"__await")?Promise.resolve(l.__await).then((function(e){t("next",e,o,a)}),(function(e){t("throw",e,o,a)})):Promise.resolve(l).then((function(e){c.value=e,o(c)}),(function(e){return t("throw",e,o,a)}))}a(s.arg)}var n;function i(e,i){function r(){return new Promise((function(n,r){t(e,i,n,r)}))}return n=n?n.then(r,r):r()}this._invoke=i}function _(e,t,n){var i=d;return function(r,o){if(i===h)throw new Error("Generator is already running");if(i===p){if("throw"===r)throw o;return L()}n.method=r,n.arg=o;while(1){var a=n.delegate;if(a){var s=P(a,n);if(s){if(s===g)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===d)throw i=p,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=h;var c=b(e,t,n);if("normal"===c.type){if(i=n.done?p:f,c.arg===g)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(i=p,n.method="throw",n.arg=c.arg)}}}function P(e,t){var i=e.iterator[t.method];if(i===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=n,P(e,t),"throw"===t.method))return g;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var r=b(i,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,g;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,g):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,g)}function C(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(C,this),this.reset(!0)}function I(e){if(e){var t=e[a];if(t)return t.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function t(){while(++i0?_+O:""}},23:function(e,t,n){"use strict";var i=Object.prototype.hasOwnProperty,r=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),o=function(e){var t;while(e.length){var n=e.pop();if(t=n.obj[n.prop],Array.isArray(t)){for(var i=[],r=0;r=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122?n+=t.charAt(i):o<128?n+=r[o]:o<2048?n+=r[192|o>>6]+r[128|63&o]:o<55296||o>=57344?n+=r[224|o>>12]+r[128|o>>6&63]+r[128|63&o]:(i+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(i)),n+=r[240|o>>18]+r[128|o>>12&63]+r[128|o>>6&63]+r[128|63&o])}return n},d=function(e){for(var t=[{obj:{o:e},prop:"o"}],n=[],i=0;i=0;--r){var o,a=e[r];if("[]"===a)o=[],o=o.concat(i);else{o=n.plainObjects?Object.create(null):{};var s="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,c=parseInt(s,10);!isNaN(c)&&a!==s&&String(c)===s&&c>=0&&n.parseArrays&&c<=n.arrayLimit?(o=[],o[c]=i):o[s]=i}i=o}return i},c=function(e,t,n){if(e){var i=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/,a=/(\[[^[\]]*])/g,c=o.exec(i),l=c?i.slice(0,c.index):i,u=[];if(l){if(!n.plainObjects&&r.call(Object.prototype,l)&&!n.allowPrototypes)return;u.push(l)}var d=0;while(null!==(c=a.exec(i))&&d0&&void 0!==arguments[0]?arguments[0]:{};n(this,t),this.baseUrl=e.baseUrl||"",this.url=e.url||"",this.method="GET",this.data=null,this.header=e.header||{},this.beforeRequest=null,this.afterRequest=null}return r(t,[{key:"get",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.method="GET",this.url=this.baseUrl+e,this.data=t,this._()}},{key:"post",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.method="POST",this.url=this.baseUrl+e,this.data=t,this._()}},{key:"put",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.method="PUT",this.url=this.baseUrl+e,this.data=t,this._()}},{key:"delete",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.method="DELETE",this.url=this.baseUrl+e,this.data=t,this._()}},{key:"_",value:function(){var t=this;return this.header={},this.beforeRequest&&"function"===typeof this.beforeRequest&&this.beforeRequest(this),new Promise((function(n,i){var r=wx;"undefined"!==typeof e&&(r=e),r.request({url:t.url,method:t.method,data:t.data,header:t.header,success:function(e){n(e)},fail:function(e){i(e)},complete:function(e){t.afterRequest&&"function"===typeof t.afterRequest&&t.afterRequest(e)}})}))}}]),t}(),a=new o;t.$http=a}).call(this,n(1)["default"])},3:function(e,t,n){"use strict";(function(e,n){function i(e,t){return c(e)||s(e,t)||o(e,t)||r()}function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(e,t){if(e){if("string"===typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n2&&void 0!==arguments[2]?arguments[2]:p;if(!t)return[e];var i=this._caches[e];return i||(i=m(e,n),this._caches[e]=i),x(i,t)}}]),e}();t.Formatter=g;var v=/^(?:\d)+/,y=/^(?:\w)+/;function m(e,t){var n=i(t,2),r=n[0],o=n[1],a=[],s=0,c="";while(s-1?A:e.indexOf("-hant")>-1||P(e,["-tw","-hk","-mo","-cht"])?b:A;var n=C(e,[w,k,S]);return n||void 0}}var F=function(){function e(t){var n=t.locale,i=t.fallbackLocale,r=t.messages,o=t.watcher,a=t.formater;l(this,e),this.locale=w,this.fallbackLocale=w,this.message={},this.messages={},this.watchers=[],i&&(this.fallbackLocale=i),this.formater=a||_,this.messages=r||{},this.setLocale(n||w),o&&this.watchLocale(o)}return d(e,[{key:"setLocale",value:function(e){var t=this,n=this.locale;this.locale=E(e,this.messages)||this.fallbackLocale,this.messages[this.locale]||(this.messages[this.locale]={}),this.message=this.messages[this.locale],n!==this.locale&&this.watchers.forEach((function(e){e(t.locale,n)}))}},{key:"getLocale",value:function(){return this.locale}},{key:"watchLocale",value:function(e){var t=this,n=this.watchers.push(e)-1;return function(){t.watchers.splice(n,1)}}},{key:"add",value:function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=this.messages[e];i?n?Object.assign(i,t):Object.keys(t).forEach((function(e){O(i,e)||(i[e]=t[e])})):this.messages[e]=t}},{key:"f",value:function(e,t,n){return this.formater.interpolate(e,t,n).join("")}},{key:"t",value:function(e,t,n){var i=this.message;return"string"===typeof t?(t=E(t,this.messages),t&&(i=this.messages[t])):n=t,O(i,e)?this.formater.interpolate(i[e],n).join(""):(console.warn("Cannot translate the value of keypath ".concat(e,". Use the value of keypath as default.")),e)}}]),e}();function I(e,t){e.$watchLocale?e.$watchLocale((function(e){t.setLocale(e)})):e.$watch((function(){return e.$locale}),(function(e){t.setLocale(e)}))}function L(){return"undefined"!==typeof e&&e.getLocale?e.getLocale():"undefined"!==typeof n&&n.getLocale?n.getLocale():w}function D(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if("string"!==typeof e){var r=[t,e];e=r[0],t=r[1]}"string"!==typeof e&&(e=L()),"string"!==typeof n&&(n="undefined"!==typeof __uniConfig&&__uniConfig.fallbackLocale||w);var o=new F({locale:e,fallbackLocale:n,messages:t,watcher:i}),a=function(e,t){if("function"!==typeof getApp)a=function(e,t){return o.t(e,t)};else{var n=!1;a=function(e,t){var i=getApp().$vm;return i&&(i.$locale,n||(n=!0,I(i,o))),o.t(e,t)}}return a(e,t)};return{i18n:o,f:function(e,t,n){return o.f(e,t,n)},t:function(e,t){return a(e,t)},add:function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return o.add(e,t,n)},watch:function(e){return o.watchLocale(e)},getLocale:function(){return o.getLocale()},setLocale:function(e){return o.setLocale(e)}}}t.I18n=F;var M,R=function(e){return"string"===typeof e};function K(e,t){return M||(M=new g),H(e,(function(e,n){var i=e[n];return R(i)?!!U(i,t)||void 0:K(i,t)}))}function j(e,t,n){return M||(M=new g),H(e,(function(e,i){var r=e[i];R(r)?U(r,n)&&(e[i]=B(r,t,n)):j(r,t,n)})),e}function z(e,t){var n=t.locale,i=t.locales,r=t.delimiters;if(!U(e,r))return e;M||(M=new g);var o=[];Object.keys(i).forEach((function(e){e!==n&&o.push({locale:e,values:i[e]})})),o.unshift({locale:n,values:i[n]});try{return JSON.stringify(W(JSON.parse(e),o,r),null,2)}catch(a){}return e}function U(e,t){return e.indexOf(t[0])>-1}function B(e,t,n){return M.interpolate(e,t,n).join("")}function N(e,t,n,i){var r=e[t];if(R(r)){if(U(r,i)&&(e[t]=B(r,n[0].values,i),n.length>1)){var o=e[t+"Locales"]={};n.forEach((function(e){o[e.locale]=B(r,e.values,i)}))}}else W(r,n,i)}function W(e,t,n){return H(e,(function(e,i){N(e,i,t,n)})),e}function H(e,t){if(f(e)){for(var n=0;n-1}))):t}}function V(e){var t=[],n=e.split("-");while(n.length)t.push(n.join("-")),n.pop();return t}t.isString=R}).call(this,n(1)["default"],n(2))},31:function(e,t){e.exports="/static/login/banner.jpg"},32:function(e,t){e.exports="/static/login/title.png"},4:function(e,t,n){"use strict";n.r(t),function(e){
-/*!
+
+
+function applyMixin (Vue) {
+ var version = Number(Vue.version.split('.')[0]);
+
+ if (version >= 2) {
+ Vue.mixin({ beforeCreate: vuexInit });
+ } else {
+ // override init and inject vuex init procedure
+ // for 1.x backwards compatibility.
+ var _init = Vue.prototype._init;
+ Vue.prototype._init = function (options) {
+ if ( options === void 0 ) options = {};
+
+ options.init = options.init
+ ? [vuexInit].concat(options.init)
+ : vuexInit;
+ _init.call(this, options);
+ };
+ }
+
+ /**
+ * Vuex init hook, injected into each instances init hooks list.
+ */
+
+ function vuexInit () {
+ var options = this.$options;
+ // store injection
+ if (options.store) {
+ this.$store = typeof options.store === 'function'
+ ? options.store()
+ : options.store;
+ } else if (options.parent && options.parent.$store) {
+ this.$store = options.parent.$store;
+ }
+ }
+}
+
+var target = typeof window !== 'undefined'
+ ? window
+ : typeof global !== 'undefined'
+ ? global
+ : {};
+var devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;
+
+function devtoolPlugin (store) {
+ if (!devtoolHook) { return }
+
+ store._devtoolHook = devtoolHook;
+
+ devtoolHook.emit('vuex:init', store);
+
+ devtoolHook.on('vuex:travel-to-state', function (targetState) {
+ store.replaceState(targetState);
+ });
+
+ store.subscribe(function (mutation, state) {
+ devtoolHook.emit('vuex:mutation', mutation, state);
+ }, { prepend: true });
+
+ store.subscribeAction(function (action, state) {
+ devtoolHook.emit('vuex:action', action, state);
+ }, { prepend: true });
+}
+
+/**
+ * Get the first item that pass the test
+ * by second argument function
+ *
+ * @param {Array} list
+ * @param {Function} f
+ * @return {*}
+ */
+function find (list, f) {
+ return list.filter(f)[0]
+}
+
+/**
+ * Deep copy the given object considering circular structure.
+ * This function caches all nested objects and its copies.
+ * If it detects circular structure, use cached copy to avoid infinite loop.
+ *
+ * @param {*} obj
+ * @param {Array