hqchart 1.1.13740 → 1.1.13746
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/umychart.vue.js
CHANGED
|
@@ -1711,7 +1711,7 @@ if(this.FinishChartDrawPicturePoint()){if(drawPicture.IsDrawMain)this.Draw();els
|
|
|
1711
1711
|
{var drawPictrueData={};drawPictrueData.X=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;drawPictrueData.Y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;if(this.GetChartDrawPictureByPoint(drawPictrueData)){if(this.EnableEraseChartDrawPicture)//擦掉画线
|
|
1712
1712
|
{this.CurrentChartDrawPicture=null;this.SelectChartDrawPicture=null;this.ClearChartDrawPicture(drawPictrueData.ChartDrawPicture);}else{this.UpDownDrag=null;//画图优先
|
|
1713
1713
|
this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;//当前已有选中的,需要刷下
|
|
1714
|
-
var bDraw=false;if(drawPictureActive.Select.Guid&&drawPictureActive.Select.Chart&&drawPictureActive.Select.Chart.IsDrawMain)bDraw=true;else if(drawPictrueData.ChartDrawPicture.IsDrawMain)bDraw=true;if(bDraw)this.Draw();drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;//this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;
|
|
1714
|
+
var bDraw=false;if(drawPictureActive.Select.Guid&&drawPictureActive.Select.Chart&&drawPictureActive.Select.Chart.IsDrawMain)bDraw=true;else if(drawPictrueData.ChartDrawPicture.IsDrawMain)bDraw=true;if(bDraw)this.Draw();if(drawPictrueData.ChartDrawPicture.EnableMove==true)drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;//this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;
|
|
1715
1715
|
//this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;
|
|
1716
1716
|
this.SelectChartDrawPicture.DragInfo={Click:{X:e.clientX,Y:e.clientY}};}var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_DRAWPICTURE);//选中画图工具事件
|
|
1717
1717
|
if(event&&event.Callback){var sendData={DrawPicture:drawPictrueData.ChartDrawPicture};event.Callback(event,sendData,this);}else{this.OnSelectChartPicture(drawPictrueData.ChartDrawPicture);//选中画图工具事件
|
|
@@ -1770,7 +1770,7 @@ var selectedChart={Chart:this.SelectedChart.Selected.Chart,Identify:this.Selecte
|
|
|
1770
1770
|
this.PhoneTouchInfo={Start:{X:touches[0].clientX,Y:touches[0].clientY},End:{X:touches[0].clientX,Y:touches[0].clientY}};if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;var isDrawPictrue=false;if(this.CurrentChartDrawPicture)//画图工具模式
|
|
1771
1771
|
{var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==2)this.SetChartDrawPictureThirdPoint(drag.Click.X,drag.Click.Y,true);else{this.SetChartDrawPictureFirstPoint(drag.Click.X,drag.Click.Y,true);//只有1个点 直接完成
|
|
1772
1772
|
if(this.FinishChartDrawPicturePoint()){if(drawPicture.IsDrawMain)this.Draw();else this.DrawDynamicInfo({Corss:false,Tooltip:false});}}if(e.cancelable)e.preventDefault();return;}else{var pt=this.PointAbsoluteToRelative(touches[0].clientX,touches[0].clientY,true);var drawPictrueData={X:pt.X,Y:pt.Y};var pixelTatio=GetDevicePixelRatio();//鼠标移动坐标是原始坐标 需要乘以放大倍速
|
|
1773
|
-
if(this.GetChartDrawPictureByPoint(drawPictrueData)){drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;drawPictrueData.ChartDrawPicture.IsSelected=true;this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_DRAWPICTURE);//选中画图工具事件
|
|
1773
|
+
if(this.GetChartDrawPictureByPoint(drawPictrueData)){if(drawPictrueData.ChartDrawPicture.EnableMove==true)drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;drawPictrueData.ChartDrawPicture.IsSelected=true;this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_DRAWPICTURE);//选中画图工具事件
|
|
1774
1774
|
if(event&&event.Callback){var sendData={DrawPicture:drawPictrueData.ChartDrawPicture};event.Callback(event,sendData,this);}var drawType=0;if(drawPictrueData.ChartDrawPicture.IsDrawMain)drawType=1;else if(drawPictureActive.Select.Guid&&drawPictureActive.Select.Chart&&drawPictureActive.Select.Chart.IsDrawMain)drawType=1;if(drawType==1)this.Draw();if(e.cancelable)e.preventDefault();return;}}if(bStartTimer){//长按2秒,十字光标
|
|
1775
1775
|
var self=this;this.DragTimer=setTimeout(function(){self.IsPress=true;if(drag.Click.X==drag.LastMove.X&&drag.Click.Y==drag.LastMove.Y)//手指没有移动,出现十字光标
|
|
1776
1776
|
{var mouseDrag=self.MouseDrag;self.MouseDrag=null;if(self.DragMode==JSCHART_DRAG_ID.CLICK_TOUCH_MODE_ID)self.TouchStatus.CorssCursorShow=true;//十字显示
|
|
@@ -4080,15 +4080,21 @@ this.newMethod();delete this.newMethod;this.ClassName="ChartMACD";this.UpColor=g
|
|
|
4080
4080
|
return this.PtInBar(x,y,{BarWidth:barWidth});};this.DrawBars=function(lineWidth,bUpBar){var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var isHSCreen=this.ChartFrame.IsHScreen===true;if(isHSCreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Top;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Left;}if(bUpBar)this.Canvas.strokeStyle=this.UpColor;else this.Canvas.strokeStyle=this.DownColor;var yBottom=this.ChartFrame.GetYFromData(0);this.Canvas.beginPath();var drawCount=0;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];if(value==null)continue;if(bUpBar){if(value<0)continue;}else{if(value>=0)continue;}if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}if(x>chartright)break;var y=this.ChartFrame.GetYFromData(value);var xFix=ToFixedPoint2(lineWidth,x);//毛边修正
|
|
4081
4081
|
if(isHSCreen){this.Canvas.moveTo(yBottom,ToFixedPoint(x));this.Canvas.lineTo(y,ToFixedPoint(x));}else{this.Canvas.moveTo(xFix,yBottom);this.Canvas.lineTo(xFix,y);}++drawCount;}if(drawCount>0)this.Canvas.stroke();};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}var dataWidth=this.ChartFrame.DataWidth;var lineWidth=this.LineWidth*GetDevicePixelRatio();if(this.LineWidth==50)lineWidth=dataWidth;else if(lineWidth>dataWidth)lineWidth=dataWidth;var backupLineWidth=this.Canvas.lineWidth;this.Canvas.lineWidth=lineWidth;//上下分开画
|
|
4082
4082
|
this.DrawBars(lineWidth,true);this.DrawBars(lineWidth,false);this.Canvas.lineWidth=backupLineWidth;};this.GetItemData=function(indexData){if(!indexData)return null;if(!IFrameSplitOperator.IsNumber(indexData.Index))return null;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return null;var index=indexData.Index;if(index<0||index>=this.Data.Data.length)return null;var item=this.Data.Data[index];return[{Value:item,Color:item>0?this.UpColor:this.DownColor,Name:this.Name}];};}function ChartClipColorStick(){this.newMethod=IChartPainting;//派生
|
|
4083
|
-
this.newMethod();delete this.newMethod;this.ClassName="ChartClipColorStick";this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.LineWidth=1
|
|
4084
|
-
|
|
4083
|
+
this.newMethod();delete this.newMethod;this.ClassName="ChartClipColorStick";this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.LineWidth=1;this.Style=0;//1=同方向 0=上下两个方向
|
|
4084
|
+
//差值线
|
|
4085
|
+
this.DownDiffColor=g_JSChartResource.DownBarColor;this.UpDiffColor=g_JSChartResource.UpBarColor;//文字
|
|
4086
|
+
this.TextLabelConfig={Font:12*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1',TextMargin:{Left:2,Right:2,Bottom:2,Top:2},TextColor:"rgb(230,230,230)",UpColor:"rgb(137,16,19)",DownColor:"rgb(44,104,57)",UnchangeColor:"rgb(111,112,115)",BorderColor:"rgb(0,0,0)",//缓存
|
|
4087
|
+
LabelWidth:0,TextHeight:0,MaxTextWidth:0};this.BaseLineColor;//基准线
|
|
4085
4088
|
this.BaseValue=0;this.Super_GetMaxMin=this.GetMaxMin;//父类的方法
|
|
4086
4089
|
this.ValueRange;//{ Max:, Min: } //固定最大最小值
|
|
4087
|
-
this.SetOption=function(option){if(!option)return;if(option.UpColor)this.UpColor=option.UpColor;if(option.DownColor)this.DownColor=option.DownColor;if(option.DownDiffColor)this.DownDiffColor=option.DownDiffColor;if(option.UpDiffColor)this.UpDiffColor=option.UpDiffColor;if(option.BaseLineColor)this.BaseLineColor=option.BaseLineColor;if(IFrameSplitOperator.IsNumber(option.BaseValue))this.BaseValue=option.BaseValue;if(option.ValueRange)this.ValueRange=option.ValueRange;};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}this.
|
|
4088
|
-
this.DrawBars(lineWidth,true);this.DrawBars(lineWidth,false);}this.Canvas.restore();};this.DrawBars=function(lineWidth,bUpBar){var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var
|
|
4089
|
-
if(
|
|
4090
|
+
this.IsShowText=false;this.SetOption=function(option){if(!option)return;if(option.UpColor)this.UpColor=option.UpColor;if(option.DownColor)this.DownColor=option.DownColor;if(option.DownDiffColor)this.DownDiffColor=option.DownDiffColor;if(option.UpDiffColor)this.UpDiffColor=option.UpDiffColor;if(option.BaseLineColor)this.BaseLineColor=option.BaseLineColor;if(IFrameSplitOperator.IsNumber(option.BaseValue))this.BaseValue=option.BaseValue;if(IFrameSplitOperator.IsNumber(option.Style))this.Style=option.Style;if(option.ValueRange)this.ValueRange=option.ValueRange;};this.Draw=function(){this.IsShowText=false;this.TextLabelConfig.LabelWidth=0;this.TextLabelConfig.TextHeight=0;this.TextLabelConfig.MaxTextWidth=0;if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var bHScreen=this.ChartFrame.IsHScreen===true;var lineWidth=this.LineWidth*GetDevicePixelRatio();if(this.LineWidth==50)lineWidth=dataWidth;else if(lineWidth>dataWidth)lineWidth=dataWidth;if(!bHScreen){var itemWidth=dataWidth+distanceWidth;var bMinute=this.IsMinuteFrame();if(bMinute){var border=this.ChartBorder.GetBorder();itemWidth=(border.Right-border.Left)/(xPointCount-1);}this.Canvas.font=this.TextLabelConfig.Font;this.TextLabelConfig.MaxTextWidth=this.Canvas.measureText("-888").width;this.TextLabelConfig.LabelWidth=this.TextLabelConfig.MaxTextWidth+this.TextLabelConfig.TextMargin.Left+this.TextLabelConfig.TextMargin.Right;this.IsShowText=itemWidth>this.TextLabelConfig.LabelWidth;this.TextLabelConfig.TextHeight=this.Canvas.measureText("擎").width;}this.Canvas.save();if(IFrameSplitOperator.IsNumber(this.BaseValue)&&this.BaseValue!=0){this.DrawBaseLine();if(this.BaseValue>0)this.DrawBars(lineWidth,true,true);else this.DrawBars(lineWidth,false,true);}else{//上下分开画
|
|
4091
|
+
this.DrawBars(lineWidth,true,true);this.DrawBars(lineWidth,false);}this.Canvas.restore();};this.DrawBars=function(lineWidth,bUpBar,bDrawLabel){var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var bHScreen=this.ChartFrame.IsHScreen===true;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Top;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Left;}var yBottom=this.ChartFrame.GetYFromData(this.BaseValue);var aryBar=[],aryDiffBar=[],aryText=[];var preValue=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];if(value==null)continue;if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}if(x>chartright)break;var textItem={X:x,Value:value};if(IFrameSplitOperator.IsNumber(preValue))textItem.DiffValue=value-preValue;aryText.push(textItem);preValue=value;if(bUpBar){if(value<0)continue;}else{if(value>=0)continue;}var bDiffBar=false;var diffValue=null;if(this.BaseValue>0){if(value<this.BaseValue){bDiffBar=true;if(this.Style==1)diffValue=this.BaseValue+(this.BaseValue-value);else diffValue=this.BaseValue-(this.BaseValue-value);}}else if(this.BaseValue<0){if(value>this.BaseValue){bDiffBar=true;if(this.Style==1)diffValue=this.BaseValue-(value-this.BaseValue);else diffValue=this.BaseValue+(value-this.BaseValue);}}if(!bDiffBar){var y=this.ChartFrame.GetYFromData(value);aryBar.push({X:x,Y:y});}else{var y=this.ChartFrame.GetYFromData(diffValue);aryDiffBar.push({X:x,Y:y});}}this.Canvas.lineWidth=lineWidth;if(bUpBar)this.Canvas.strokeStyle=this.UpColor;else this.Canvas.strokeStyle=this.DownColor;this.DrawStick(aryBar,lineWidth,yBottom);if(this.BaseValue>0){this.Canvas.strokeStyle=this.UpDiffColor;this.DrawStick(aryDiffBar,lineWidth,yBottom);}else if(this.BaseValue<0){this.Canvas.strokeStyle=this.DownDiffColor;this.DrawStick(aryDiffBar,lineWidth,yBottom);}if(this.IsShowText&&bDrawLabel)this.DrawStickText(aryText);};this.DrawStick=function(aryData,lineWidth,yBottom){if(!IFrameSplitOperator.IsNonEmptyArray(aryData))return;var bHScreen=this.ChartFrame.IsHScreen===true;var drawCount=0;this.Canvas.beginPath();for(var i=0;i<aryData.length;++i){var item=aryData[i];var y=item.Y;var xFix=ToFixedPoint2(lineWidth,item.X);//毛边修正
|
|
4092
|
+
if(bHScreen){this.Canvas.moveTo(yBottom,ToFixedPoint(x));this.Canvas.lineTo(y,ToFixedPoint(x));}else{this.Canvas.moveTo(xFix,yBottom);this.Canvas.lineTo(xFix,y);}++drawCount;}if(drawCount>0)this.Canvas.stroke();};this.DrawBaseLine=function(){if(!IFrameSplitOperator.IsNumber(this.BaseValue)||this.BaseValue==0)return;if(!this.BaseLineColor)return;var bHScreen=this.ChartFrame.IsHScreen===true;var border=this.ChartFrame.GetBorder();var y=this.ChartFrame.GetYFromData(this.BaseValue);this.Canvas.strokeStyle=this.BaseLineColor;this.Canvas.lineWidth=1*GetDevicePixelRatio();if(bHScreen){}else{var yFix=ToFixedPoint(y);this.Canvas.beginPath();this.Canvas.moveTo(border.Left,yFix);this.Canvas.lineTo(border.Right,yFix);this.Canvas.stroke();}};this.DrawStickText=function(aryData){var config=this.TextLabelConfig;this.Canvas.font=config.Font;var border=this.ChartBorder.GetBorder();var itemHeight=config.TextHeight*2+config.TextMargin.Bottom+config.TextMargin.Top;for(var i=0;i<aryData.length;++i){var item=aryData[i];var value=item.Value;var xCenter=item.X;var xLeft=xCenter-config.LabelWidth/2;var rtDraw={Left:xLeft,Width:config.LabelWidth,Top:border.BottomEx+1,Height:itemHeight};rtDraw.Right=rtDraw.Left+rtDraw.Width;rtDraw.Bottom=rtDraw.Top+rtDraw.Height;if(IFrameSplitOperator.IsNumber(value)){var bgColor=config.UnchangeColor;if(value>0)bgColor=config.UpColor;else if(value<0)bgColor=config.DownColor;this.DrawTextLabel(value,bgColor,config.BorderColor,config.TextColor,rtDraw,config.TextHeight,config.MaxTextWidth,config.TextMargin);}var value=item.DiffValue;var rtDraw={Left:xLeft,Width:config.LabelWidth,Bottom:border.TopEx-1,Height:itemHeight};rtDraw.Right=rtDraw.Left+rtDraw.Width;rtDraw.Top=rtDraw.Bottom-rtDraw.Height;if(IFrameSplitOperator.IsNumber(value)){var bgColor=config.UnchangeColor;if(value>0)bgColor=config.UpColor;else if(value<0)bgColor=config.DownColor;this.DrawTextLabel(value,bgColor,config.BorderColor,config.TextColor,rtDraw,config.TextHeight,config.MaxTextWidth,config.TextMargin);}}};//数值标签
|
|
4093
|
+
this.DrawTextLabel=function(value,clrGB,clrBorder,clrText,rtDraw,textHeight,textWidth,textMargin){if(clrGB){this.Canvas.fillStyle=clrGB;this.Canvas.fillRect(rtDraw.Left,rtDraw.Top,rtDraw.Width,rtDraw.Height);}if(clrBorder){this.Canvas.lineWidth=2;this.Canvas.strokeStyle=clrBorder;this.Canvas.strokeRect(rtDraw.Left,rtDraw.Top,rtDraw.Width,rtDraw.Height);}else{this.Canvas.lineWidth=1;this.Canvas.strokeStyle="rgb(0,0,0)";this.Canvas.strokeRect(rtDraw.Left,rtDraw.Top,rtDraw.Width,rtDraw.Height);}var aryText=[null,null];//大于3位数的 2行输出
|
|
4094
|
+
var sign="";//负数
|
|
4095
|
+
if(value<0){value=Math.abs(value);sign='-';}if(value>999){var thousand=parseInt(value/1000);var hundred=parseInt(value%1000);aryText[0]=''+sign+thousand;aryText[1]=''+hundred;if(hundred<10)aryText[1]='00'+hundred;else if(hundred<100)aryText[1]='0'+hundred;}else{aryText[1]=''+sign+value.toFixed(0);}this.Canvas.textAlign="right";this.Canvas.textBaseline="top";var xRight=rtDraw.Right-(rtDraw.Right-rtDraw.Left-textWidth)/2;this.Canvas.fillStyle=clrText;var yText=textMargin.Top+rtDraw.Top;for(var i=0;i<aryText.length;++i){var text=aryText[i];if(text){this.Canvas.fillText(text,xRight,yText);}yText+=textHeight;}};this.GetMaxMin=function(){if(!IFrameSplitOperator.IsNumber(this.BaseValue)||this.BaseValue==0)return this.Super_GetMaxMin();if(this.ValueRange)//固定最大最小
|
|
4090
4096
|
{var range={Min:this.ValueRange.Min,Max:this.ValueRange.Max};return range;}var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;if(this.ChartFrame.GlobalOption&&this.ChartFrame.GlobalOption.IsValueFullRange){start=0;xPointCount=this.Data.Data.length;}var range={Min:null,Max:null},maxDiffValue=null;//基准值的差值
|
|
4091
|
-
if(!this.Data||!this.Data.Data)return range;if(this.BaseValue>0)range.Min=this.BaseValue;else range.Max=this.BaseValue;for(var i=start,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(value==null||isNaN(value))continue;if(this.BaseValue>0){if(value<0)continue;if(value<this.BaseValue){var diffValue=this.BaseValue-value;if(maxDiffValue==null||maxDiffValue<diffValue)maxDiffValue=diffValue;continue;}}else{if(value>0)continue;if(value>this.BaseValue){var diffValue=value-this.BaseValue;if(maxDiffValue==null||maxDiffValue<diffValue)maxDiffValue=diffValue;continue;}}if(range.Max==null)range.Max=value;if(range.Min==null)range.Min=value;if(range.Max<value)range.Max=value;if(range.Min>value)range.Min=value;}if(this.BaseValue>0){if(IFrameSplitOperator.IsNumber(maxDiffValue)&&IFrameSplitOperator.IsNumber(range.Min))range.Min-=maxDiffValue;}else{if(IFrameSplitOperator.IsNumber(maxDiffValue)&&IFrameSplitOperator.IsNumber(range.Max))range.Max+=maxDiffValue;}return range;};}//柱子
|
|
4097
|
+
if(!this.Data||!this.Data.Data)return range;if(this.BaseValue>0)range.Min=this.BaseValue;else range.Max=this.BaseValue;for(var i=start,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(value==null||isNaN(value))continue;if(this.BaseValue>0){if(value<0)continue;if(value<this.BaseValue){var diffValue=this.BaseValue-value;if(maxDiffValue==null||maxDiffValue<diffValue)maxDiffValue=diffValue;continue;}}else{if(value>0)continue;if(value>this.BaseValue){var diffValue=value-this.BaseValue;if(maxDiffValue==null||maxDiffValue<diffValue)maxDiffValue=diffValue;continue;}}if(range.Max==null)range.Max=value;if(range.Min==null)range.Min=value;if(range.Max<value)range.Max=value;if(range.Min>value)range.Min=value;}if(this.BaseValue>0){if(this.Style==1){if(IFrameSplitOperator.IsNumber(maxDiffValue)){var value=this.BaseValue+maxDiffValue;if(IFrameSplitOperator.IsNumber(range.Max)||range.Max<value)range.Max=value;}}else{if(IFrameSplitOperator.IsNumber(maxDiffValue)&&IFrameSplitOperator.IsNumber(range.Min))range.Min-=maxDiffValue;}}else{if(this.Style==1){if(IFrameSplitOperator.IsNumber(maxDiffValue)){var value=this.BaseValue-maxDiffValue;if(IFrameSplitOperator.IsNumber(range.Min)||range.Min>value)range.Min=value;}}else{if(IFrameSplitOperator.IsNumber(maxDiffValue)&&IFrameSplitOperator.IsNumber(range.Max))range.Max+=maxDiffValue;}}return range;};}//柱子
|
|
4092
4098
|
function ChartBar(){this.newMethod=IChartPainting;//派生
|
|
4093
4099
|
this.newMethod();delete this.newMethod;this.ClassName="ChartBar";this.UpBarColor=g_JSChartResource.UpBarColor;this.DownBarColor=g_JSChartResource.DownBarColor;this.Draw=function(){if(this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();var xPointCount=this.ChartFrame.XPointCount;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+2.0;var bFirstPoint=true;var drawCount=0;var yBottom=this.ChartFrame.GetYFromData(0);if(dataWidth>=4){yBottom=ToFixedRect(yBottom);//调整为整数
|
|
4094
4100
|
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];if(value==null||value==0)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=this.ChartFrame.GetXFromIndex(j);var y=this.ChartFrame.GetYFromData(value);if(value>0)this.Canvas.fillStyle=this.UpBarColor;else this.Canvas.fillStyle=this.DownBarColor;//高度调整为整数
|
|
@@ -7941,7 +7947,7 @@ var touches=this.GetToucheData(e,this.IsForceLandscape);var pt=this.PointAbsolut
|
|
|
7941
7947
|
{var pt=self.PointAbsoluteToRelative(drag.Click.X,drag.Click.Y,true);var x=pt.X;var y=pt.Y;self.OnMouseMove(x,y,e);}};if(this.ChartDrawOption.IsLockScreen){this.MouseDrag=drag;if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;if(this.CurrentChartDrawPicture)//画图工具模式
|
|
7942
7948
|
{var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==2)this.SetChartDrawPictureThirdPoint(drag.Click.X,drag.Click.Y,true);else{this.SetChartDrawPictureFirstPoint(drag.Click.X,drag.Click.Y,true);//只有1个点 直接完成
|
|
7943
7949
|
if(this.FinishChartDrawPicturePoint())this.DrawDynamicInfo({Corss:false,Tooltip:false});}if(e.cancelable)e.preventDefault();return;}else{var drawPictrueData={};var pixelTatio=GetDevicePixelRatio();//鼠标移动坐标是原始坐标 需要乘以放大倍速
|
|
7944
|
-
drawPictrueData.X=touches[0].clientX-uielement.getBoundingClientRect().left;drawPictrueData.Y=touches[0].clientY-uielement.getBoundingClientRect().top;if(this.GetChartDrawPictureByPoint(drawPictrueData)){drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;drawPictrueData.ChartDrawPicture.IsSelected=true;this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_DRAWPICTURE);//选中画图工具事件
|
|
7950
|
+
drawPictrueData.X=touches[0].clientX-uielement.getBoundingClientRect().left;drawPictrueData.Y=touches[0].clientY-uielement.getBoundingClientRect().top;if(this.GetChartDrawPictureByPoint(drawPictrueData)){if(drawPictrueData.ChartDrawPicture.EnableMove==true)drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;drawPictrueData.ChartDrawPicture.IsSelected=true;this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_DRAWPICTURE);//选中画图工具事件
|
|
7945
7951
|
if(event&&event.Callback){var sendData={DrawPicture:drawPictrueData.ChartDrawPicture};event.Callback(event,sendData,this);}if(e.cancelable)e.preventDefault();return;}}}else{if(this.EnableScrollUpDown==true){this.DragTimer=setTimeout(function(){self.IsPress=true;if(drag.Click.X==drag.LastMove.X&&drag.Click.Y==drag.LastMove.Y){var mouseDrag=self.MouseDrag;self.MouseDrag=null;T_ShowCorssCursor();self.PreventTouchEvent(e);}},800);}this.MouseDrag=drag;this.PhoneTouchInfo={Start:{X:touches[0].clientX,Y:touches[0].clientY},End:{X:touches[0].clientX,Y:touches[0].clientY}};this.SelectChartDrawPicture=null;if(this.EnableScrollUpDown==false)T_ShowCorssCursor();//移动十字光标
|
|
7946
7952
|
else if(this.IsClickShowCorssCursor)T_ShowCorssCursor();}if(this.EnableZoomIndexWindow){this.PhoneDBClick.AddTouchStart(touches[0].clientX,touches[0].clientY,Date.now());JSConsole.Chart.Log("[MinuteChartContainer::OnTouchStart] PhoneDBClick ",this.PhoneDBClick);}this.TouchEvent({EventID:JSCHART_EVENT_ID.ON_PHONE_TOUCH,FunctionName:"OnTouchStart"},e);}else if(this.IsPhonePinching(e)){var phonePinch={"Start":{},"Last":{}};var touches=this.GetToucheData(e,this.IsForceLandscape);phonePinch.Start={"X":touches[0].pageX,"Y":touches[0].pageY,"X2":touches[1].pageX,"Y2":touches[1].pageY};phonePinch.Last={"X":touches[0].pageX,"Y":touches[0].pageY,"X2":touches[1].pageX,"Y2":touches[1].pageY};this.PhonePinch=phonePinch;this.SelectChartDrawPicture=null;}};this.OnTouchMove=function(e){if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var touches=this.GetToucheData(e,this.IsForceLandscape);if(this.IsPhoneDragging(e)){var drag=this.MouseDrag;if(drag==null){var pixelTatio=GetDevicePixelRatio();var x=touches[0].clientX-uielement.getBoundingClientRect().left*pixelTatio;var y=touches[0].clientY-uielement.getBoundingClientRect().top*pixelTatio;this.OnMouseMove(x,y,e);}else{var moveAngle=this.GetMoveAngle(drag.LastMove,{X:touches[0].clientX,Y:touches[0].clientY});var moveSetp=Math.abs(drag.LastMove.X-touches[0].clientX);var moveUpDown=Math.abs(drag.LastMove.Y-touches[0].clientY);moveSetp=parseInt(moveSetp);if(this.CurrentChartDrawPicture&&this.CurrentChartDrawPicture.EnableMove===true){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==1||drawPicture.Status==2){if(moveSetp<5&&moveUpDown<5)return;if(this.SetChartDrawPictureSecondPoint(touches[0].clientX,touches[0].clientY,true)){this.DrawDynamicInfo();}}else if(drawPicture.Status==3){if(this.SetChartDrawPictureThirdPoint(touches[0].clientX,touches[0].clientY,true)){this.DrawDynamicInfo();}}else if(drawPicture.Status==20)//画图工具移动
|
|
7947
7953
|
{if(moveSetp<5&&moveUpDown<5)return;if(this.MoveChartDrawPicture(touches[0].clientX-drag.LastMove.X,touches[0].clientY-drag.LastMove.Y,true)){this.DrawDynamicInfo();}}drag.LastMove.X=touches[0].clientX;drag.LastMove.Y=touches[0].clientY;}else{//上下滚动
|
|
@@ -13780,7 +13786,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
13780
13786
|
this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
13781
13787
|
* 版本信息输出
|
|
13782
13788
|
*
|
|
13783
|
-
*/var HQCHART_VERSION="1.1.
|
|
13789
|
+
*/var HQCHART_VERSION="1.1.13745";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
13784
13790
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
13785
13791
|
// BaseIndex:BaseIndex,
|
|
13786
13792
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -3652,7 +3652,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
3652
3652
|
|
|
3653
3653
|
if (bDraw) this.Draw();
|
|
3654
3654
|
|
|
3655
|
-
drawPictrueData.ChartDrawPicture.
|
|
3655
|
+
if (drawPictrueData.ChartDrawPicture.EnableMove==true)
|
|
3656
|
+
drawPictrueData.ChartDrawPicture.Status=20;
|
|
3657
|
+
|
|
3656
3658
|
drawPictrueData.ChartDrawPicture.ValueToPoint();
|
|
3657
3659
|
drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;
|
|
3658
3660
|
//this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;
|
|
@@ -4655,7 +4657,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
4655
4657
|
var pixelTatio = GetDevicePixelRatio(); //鼠标移动坐标是原始坐标 需要乘以放大倍速
|
|
4656
4658
|
if (this.GetChartDrawPictureByPoint(drawPictrueData))
|
|
4657
4659
|
{
|
|
4658
|
-
drawPictrueData.ChartDrawPicture.
|
|
4660
|
+
if (drawPictrueData.ChartDrawPicture.EnableMove==true)
|
|
4661
|
+
drawPictrueData.ChartDrawPicture.Status=20;
|
|
4659
4662
|
drawPictrueData.ChartDrawPicture.ValueToPoint();
|
|
4660
4663
|
drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;
|
|
4661
4664
|
drawPictrueData.ChartDrawPicture.IsSelected=true;
|
|
@@ -36043,16 +36046,38 @@ function ChartClipColorStick()
|
|
|
36043
36046
|
this.UpColor=g_JSChartResource.UpBarColor;
|
|
36044
36047
|
this.DownColor=g_JSChartResource.DownBarColor;
|
|
36045
36048
|
this.LineWidth=1;
|
|
36049
|
+
this.Style=0; //1=同方向 0=上下两个方向
|
|
36050
|
+
|
|
36046
36051
|
//差值线
|
|
36047
36052
|
this.DownDiffColor=g_JSChartResource.DownBarColor;
|
|
36048
36053
|
this.UpDiffColor=g_JSChartResource.UpBarColor;
|
|
36049
36054
|
|
|
36055
|
+
//文字
|
|
36056
|
+
this.TextLabelConfig=
|
|
36057
|
+
{
|
|
36058
|
+
Font:`${12*GetDevicePixelRatio()}px 微软雅黑`,
|
|
36059
|
+
TextMargin:{ Left:2, Right:2, Bottom:2, Top:2 },
|
|
36060
|
+
TextColor:"rgb(230,230,230)",
|
|
36061
|
+
UpColor:"rgb(137,16,19)",
|
|
36062
|
+
DownColor:"rgb(44,104,57)",
|
|
36063
|
+
UnchangeColor:"rgb(111,112,115)",
|
|
36064
|
+
BorderColor:"rgb(0,0,0)",
|
|
36065
|
+
|
|
36066
|
+
//缓存
|
|
36067
|
+
LabelWidth:0,
|
|
36068
|
+
TextHeight:0,
|
|
36069
|
+
MaxTextWidth:0,
|
|
36070
|
+
}
|
|
36071
|
+
|
|
36050
36072
|
this.BaseLineColor; //基准线
|
|
36051
36073
|
|
|
36052
36074
|
this.BaseValue=0;
|
|
36053
36075
|
this.Super_GetMaxMin=this.GetMaxMin; //父类的方法
|
|
36054
36076
|
this.ValueRange; //{ Max:, Min: } //固定最大最小值
|
|
36055
36077
|
|
|
36078
|
+
this.IsShowText=false;
|
|
36079
|
+
|
|
36080
|
+
|
|
36056
36081
|
this.SetOption=function(option)
|
|
36057
36082
|
{
|
|
36058
36083
|
if (!option) return;
|
|
@@ -36063,11 +36088,18 @@ function ChartClipColorStick()
|
|
|
36063
36088
|
if (option.UpDiffColor) this.UpDiffColor=option.UpDiffColor;
|
|
36064
36089
|
if (option.BaseLineColor) this.BaseLineColor=option.BaseLineColor;
|
|
36065
36090
|
if (IFrameSplitOperator.IsNumber(option.BaseValue)) this.BaseValue=option.BaseValue;
|
|
36091
|
+
if (IFrameSplitOperator.IsNumber(option.Style)) this.Style=option.Style;
|
|
36066
36092
|
if (option.ValueRange) this.ValueRange=option.ValueRange;
|
|
36093
|
+
|
|
36067
36094
|
}
|
|
36068
36095
|
|
|
36069
36096
|
this.Draw=function()
|
|
36070
36097
|
{
|
|
36098
|
+
this.IsShowText=false;
|
|
36099
|
+
this.TextLabelConfig.LabelWidth=0;
|
|
36100
|
+
this.TextLabelConfig.TextHeight=0;
|
|
36101
|
+
this.TextLabelConfig.MaxTextWidth=0;
|
|
36102
|
+
|
|
36071
36103
|
if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
|
|
36072
36104
|
if (this.IsShowIndexTitleOnly()) return;
|
|
36073
36105
|
if (this.IsHideScriptIndex()) return;
|
|
@@ -36078,23 +36110,44 @@ function ChartClipColorStick()
|
|
|
36078
36110
|
return;
|
|
36079
36111
|
}
|
|
36080
36112
|
|
|
36081
|
-
this.Canvas.save();
|
|
36082
36113
|
var dataWidth=this.ChartFrame.DataWidth;
|
|
36114
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
36115
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
36116
|
+
var bHScreen=this.ChartFrame.IsHScreen===true;
|
|
36117
|
+
|
|
36083
36118
|
var lineWidth=this.LineWidth*GetDevicePixelRatio();
|
|
36084
36119
|
if (this.LineWidth==50) lineWidth=dataWidth;
|
|
36085
36120
|
else if (lineWidth>dataWidth) lineWidth=dataWidth;
|
|
36086
|
-
|
|
36121
|
+
|
|
36122
|
+
if (!bHScreen)
|
|
36123
|
+
{
|
|
36124
|
+
var itemWidth=dataWidth+distanceWidth;
|
|
36125
|
+
var bMinute=this.IsMinuteFrame();
|
|
36126
|
+
if (bMinute)
|
|
36127
|
+
{
|
|
36128
|
+
var border=this.ChartBorder.GetBorder();
|
|
36129
|
+
itemWidth=(border.Right-border.Left)/(xPointCount-1);
|
|
36130
|
+
}
|
|
36131
|
+
|
|
36132
|
+
this.Canvas.font=this.TextLabelConfig.Font;
|
|
36133
|
+
this.TextLabelConfig.MaxTextWidth=this.Canvas.measureText("-888").width;
|
|
36134
|
+
this.TextLabelConfig.LabelWidth=this.TextLabelConfig.MaxTextWidth+this.TextLabelConfig.TextMargin.Left+this.TextLabelConfig.TextMargin.Right;
|
|
36135
|
+
this.IsShowText=itemWidth>this.TextLabelConfig.LabelWidth;
|
|
36136
|
+
this.TextLabelConfig.TextHeight=this.Canvas.measureText("擎").width;
|
|
36137
|
+
}
|
|
36138
|
+
|
|
36139
|
+
this.Canvas.save();
|
|
36087
36140
|
if (IFrameSplitOperator.IsNumber(this.BaseValue) && this.BaseValue!=0)
|
|
36088
36141
|
{
|
|
36089
36142
|
this.DrawBaseLine();
|
|
36090
36143
|
|
|
36091
|
-
if (this.BaseValue>0) this.DrawBars(lineWidth, true);
|
|
36092
|
-
else this.DrawBars(lineWidth, false);
|
|
36144
|
+
if (this.BaseValue>0) this.DrawBars(lineWidth, true, true);
|
|
36145
|
+
else this.DrawBars(lineWidth, false, true);
|
|
36093
36146
|
}
|
|
36094
36147
|
else
|
|
36095
36148
|
{
|
|
36096
36149
|
//上下分开画
|
|
36097
|
-
this.DrawBars(lineWidth, true);
|
|
36150
|
+
this.DrawBars(lineWidth, true, true);
|
|
36098
36151
|
this.DrawBars(lineWidth, false);
|
|
36099
36152
|
}
|
|
36100
36153
|
|
|
@@ -36102,15 +36155,15 @@ function ChartClipColorStick()
|
|
|
36102
36155
|
this.Canvas.restore();
|
|
36103
36156
|
}
|
|
36104
36157
|
|
|
36105
|
-
this.DrawBars=function(lineWidth, bUpBar)
|
|
36158
|
+
this.DrawBars=function(lineWidth, bUpBar, bDrawLabel)
|
|
36106
36159
|
{
|
|
36107
36160
|
var isMinute=this.IsMinuteFrame();
|
|
36108
36161
|
var dataWidth=this.ChartFrame.DataWidth;
|
|
36109
36162
|
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
36110
36163
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
36111
|
-
var
|
|
36164
|
+
var bHScreen=this.ChartFrame.IsHScreen===true;
|
|
36112
36165
|
|
|
36113
|
-
if (
|
|
36166
|
+
if (bHScreen)
|
|
36114
36167
|
{
|
|
36115
36168
|
var border=this.ChartBorder.GetHScreenBorder();
|
|
36116
36169
|
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
@@ -36129,19 +36182,12 @@ function ChartClipColorStick()
|
|
|
36129
36182
|
}
|
|
36130
36183
|
|
|
36131
36184
|
var yBottom=this.ChartFrame.GetYFromData(this.BaseValue);
|
|
36132
|
-
var aryBar=[], aryDiffBar=[];
|
|
36185
|
+
var aryBar=[], aryDiffBar=[], aryText=[];
|
|
36186
|
+
var preValue=null;
|
|
36133
36187
|
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
36134
36188
|
{
|
|
36135
36189
|
var value=this.Data.Data[i];
|
|
36136
36190
|
if (value==null) continue;
|
|
36137
|
-
if (bUpBar)
|
|
36138
|
-
{
|
|
36139
|
-
if (value<0) continue;
|
|
36140
|
-
}
|
|
36141
|
-
else
|
|
36142
|
-
{
|
|
36143
|
-
if (value>=0) continue;
|
|
36144
|
-
}
|
|
36145
36191
|
|
|
36146
36192
|
if (isMinute)
|
|
36147
36193
|
{
|
|
@@ -36157,6 +36203,21 @@ function ChartClipColorStick()
|
|
|
36157
36203
|
|
|
36158
36204
|
if (x>chartright) break;
|
|
36159
36205
|
|
|
36206
|
+
var textItem={ X:x, Value:value };
|
|
36207
|
+
if (IFrameSplitOperator.IsNumber(preValue)) textItem.DiffValue=value-preValue;
|
|
36208
|
+
aryText.push(textItem);
|
|
36209
|
+
|
|
36210
|
+
preValue=value;
|
|
36211
|
+
|
|
36212
|
+
if (bUpBar)
|
|
36213
|
+
{
|
|
36214
|
+
if (value<0) continue;
|
|
36215
|
+
}
|
|
36216
|
+
else
|
|
36217
|
+
{
|
|
36218
|
+
if (value>=0) continue;
|
|
36219
|
+
}
|
|
36220
|
+
|
|
36160
36221
|
var bDiffBar=false;
|
|
36161
36222
|
var diffValue=null;
|
|
36162
36223
|
if (this.BaseValue>0)
|
|
@@ -36164,7 +36225,10 @@ function ChartClipColorStick()
|
|
|
36164
36225
|
if (value<this.BaseValue)
|
|
36165
36226
|
{
|
|
36166
36227
|
bDiffBar=true;
|
|
36167
|
-
|
|
36228
|
+
if (this.Style==1)
|
|
36229
|
+
diffValue=this.BaseValue+(this.BaseValue-value);
|
|
36230
|
+
else
|
|
36231
|
+
diffValue=this.BaseValue-(this.BaseValue-value);
|
|
36168
36232
|
}
|
|
36169
36233
|
}
|
|
36170
36234
|
else if (this.BaseValue<0)
|
|
@@ -36172,19 +36236,22 @@ function ChartClipColorStick()
|
|
|
36172
36236
|
if (value>this.BaseValue)
|
|
36173
36237
|
{
|
|
36174
36238
|
bDiffBar=true;
|
|
36175
|
-
|
|
36239
|
+
if (this.Style==1)
|
|
36240
|
+
diffValue=this.BaseValue-(value-this.BaseValue);
|
|
36241
|
+
else
|
|
36242
|
+
diffValue=this.BaseValue+(value-this.BaseValue)
|
|
36176
36243
|
}
|
|
36177
36244
|
}
|
|
36178
36245
|
|
|
36179
36246
|
if (!bDiffBar)
|
|
36180
36247
|
{
|
|
36181
36248
|
var y=this.ChartFrame.GetYFromData(value);
|
|
36182
|
-
aryBar.push({X:x, Y:y});
|
|
36249
|
+
aryBar.push({X:x, Y:y });
|
|
36183
36250
|
}
|
|
36184
36251
|
else
|
|
36185
36252
|
{
|
|
36186
36253
|
var y=this.ChartFrame.GetYFromData(diffValue);
|
|
36187
|
-
aryDiffBar.push({X:x, Y:y});
|
|
36254
|
+
aryDiffBar.push({X:x, Y:y });
|
|
36188
36255
|
}
|
|
36189
36256
|
}
|
|
36190
36257
|
|
|
@@ -36193,6 +36260,7 @@ function ChartClipColorStick()
|
|
|
36193
36260
|
else this.Canvas.strokeStyle=this.DownColor;
|
|
36194
36261
|
|
|
36195
36262
|
this.DrawStick(aryBar,lineWidth,yBottom);
|
|
36263
|
+
|
|
36196
36264
|
|
|
36197
36265
|
if (this.BaseValue>0)
|
|
36198
36266
|
{
|
|
@@ -36205,13 +36273,14 @@ function ChartClipColorStick()
|
|
|
36205
36273
|
this.DrawStick(aryDiffBar,lineWidth,yBottom);
|
|
36206
36274
|
}
|
|
36207
36275
|
|
|
36276
|
+
if (this.IsShowText && bDrawLabel) this.DrawStickText(aryText);
|
|
36208
36277
|
}
|
|
36209
36278
|
|
|
36210
36279
|
this.DrawStick=function(aryData, lineWidth, yBottom)
|
|
36211
36280
|
{
|
|
36212
36281
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryData)) return;
|
|
36213
36282
|
|
|
36214
|
-
var
|
|
36283
|
+
var bHScreen=this.ChartFrame.IsHScreen===true;
|
|
36215
36284
|
var drawCount=0;
|
|
36216
36285
|
this.Canvas.beginPath();
|
|
36217
36286
|
for(var i=0; i<aryData.length; ++i)
|
|
@@ -36220,7 +36289,7 @@ function ChartClipColorStick()
|
|
|
36220
36289
|
var y=item.Y;
|
|
36221
36290
|
var xFix=ToFixedPoint2(lineWidth, item.X); //毛边修正
|
|
36222
36291
|
|
|
36223
|
-
if (
|
|
36292
|
+
if (bHScreen)
|
|
36224
36293
|
{
|
|
36225
36294
|
this.Canvas.moveTo(yBottom,ToFixedPoint(x));
|
|
36226
36295
|
this.Canvas.lineTo(y,ToFixedPoint(x));
|
|
@@ -36242,14 +36311,14 @@ function ChartClipColorStick()
|
|
|
36242
36311
|
if (!IFrameSplitOperator.IsNumber(this.BaseValue) || this.BaseValue==0) return;
|
|
36243
36312
|
if (!this.BaseLineColor) return;
|
|
36244
36313
|
|
|
36245
|
-
var
|
|
36314
|
+
var bHScreen=this.ChartFrame.IsHScreen===true;
|
|
36246
36315
|
var border=this.ChartFrame.GetBorder();
|
|
36247
36316
|
var y=this.ChartFrame.GetYFromData(this.BaseValue);
|
|
36248
36317
|
|
|
36249
36318
|
this.Canvas.strokeStyle=this.BaseLineColor;
|
|
36250
36319
|
this.Canvas.lineWidth=1*GetDevicePixelRatio();
|
|
36251
36320
|
|
|
36252
|
-
if (
|
|
36321
|
+
if (bHScreen)
|
|
36253
36322
|
{
|
|
36254
36323
|
|
|
36255
36324
|
}
|
|
@@ -36263,6 +36332,107 @@ function ChartClipColorStick()
|
|
|
36263
36332
|
}
|
|
36264
36333
|
}
|
|
36265
36334
|
|
|
36335
|
+
this.DrawStickText=function(aryData)
|
|
36336
|
+
{
|
|
36337
|
+
var config=this.TextLabelConfig;
|
|
36338
|
+
this.Canvas.font=config.Font;
|
|
36339
|
+
var border=this.ChartBorder.GetBorder();
|
|
36340
|
+
var itemHeight=config.TextHeight*2+config.TextMargin.Bottom+config.TextMargin.Top;
|
|
36341
|
+
for(var i=0; i<aryData.length; ++i)
|
|
36342
|
+
{
|
|
36343
|
+
var item=aryData[i];
|
|
36344
|
+
var value=item.Value;
|
|
36345
|
+
var xCenter=item.X;
|
|
36346
|
+
var xLeft=xCenter-config.LabelWidth/2;
|
|
36347
|
+
|
|
36348
|
+
var rtDraw={ Left:xLeft, Width:config.LabelWidth, Top:border.BottomEx+1, Height:itemHeight };
|
|
36349
|
+
rtDraw.Right=rtDraw.Left+rtDraw.Width;
|
|
36350
|
+
rtDraw.Bottom=rtDraw.Top+rtDraw.Height;
|
|
36351
|
+
if (IFrameSplitOperator.IsNumber(value))
|
|
36352
|
+
{
|
|
36353
|
+
var bgColor=config.UnchangeColor;
|
|
36354
|
+
if (value>0) bgColor=config.UpColor;
|
|
36355
|
+
else if (value<0) bgColor=config.DownColor;
|
|
36356
|
+
this.DrawTextLabel(value, bgColor, config.BorderColor, config.TextColor, rtDraw, config.TextHeight, config.MaxTextWidth, config.TextMargin);
|
|
36357
|
+
}
|
|
36358
|
+
|
|
36359
|
+
var value=item.DiffValue;
|
|
36360
|
+
var rtDraw={ Left:xLeft, Width:config.LabelWidth, Bottom:border.TopEx-1, Height:itemHeight };
|
|
36361
|
+
rtDraw.Right=rtDraw.Left+rtDraw.Width;
|
|
36362
|
+
rtDraw.Top=rtDraw.Bottom-rtDraw.Height;
|
|
36363
|
+
if (IFrameSplitOperator.IsNumber(value))
|
|
36364
|
+
{
|
|
36365
|
+
var bgColor=config.UnchangeColor;
|
|
36366
|
+
if (value>0) bgColor=config.UpColor;
|
|
36367
|
+
else if (value<0) bgColor=config.DownColor;
|
|
36368
|
+
this.DrawTextLabel(value, bgColor, config.BorderColor, config.TextColor, rtDraw, config.TextHeight, config.MaxTextWidth, config.TextMargin);
|
|
36369
|
+
}
|
|
36370
|
+
}
|
|
36371
|
+
}
|
|
36372
|
+
|
|
36373
|
+
//数值标签
|
|
36374
|
+
this.DrawTextLabel=function(value, clrGB, clrBorder, clrText, rtDraw, textHeight, textWidth, textMargin)
|
|
36375
|
+
{
|
|
36376
|
+
if (clrGB)
|
|
36377
|
+
{
|
|
36378
|
+
this.Canvas.fillStyle=clrGB;
|
|
36379
|
+
this.Canvas.fillRect(rtDraw.Left ,rtDraw.Top, (rtDraw.Width), (rtDraw.Height));
|
|
36380
|
+
}
|
|
36381
|
+
|
|
36382
|
+
if (clrBorder)
|
|
36383
|
+
{
|
|
36384
|
+
this.Canvas.lineWidth=2;
|
|
36385
|
+
this.Canvas.strokeStyle=clrBorder;
|
|
36386
|
+
this.Canvas.strokeRect(rtDraw.Left, rtDraw.Top, rtDraw.Width, rtDraw.Height);
|
|
36387
|
+
}
|
|
36388
|
+
else
|
|
36389
|
+
{
|
|
36390
|
+
this.Canvas.lineWidth=1;
|
|
36391
|
+
this.Canvas.strokeStyle="rgb(0,0,0)";
|
|
36392
|
+
this.Canvas.strokeRect(rtDraw.Left, rtDraw.Top, rtDraw.Width, rtDraw.Height);
|
|
36393
|
+
}
|
|
36394
|
+
|
|
36395
|
+
var aryText=[null, null]; //大于3位数的 2行输出
|
|
36396
|
+
var sign=""; //负数
|
|
36397
|
+
if (value<0)
|
|
36398
|
+
{
|
|
36399
|
+
value=Math.abs(value);
|
|
36400
|
+
sign='-';
|
|
36401
|
+
}
|
|
36402
|
+
|
|
36403
|
+
if (value>999)
|
|
36404
|
+
{
|
|
36405
|
+
var thousand=parseInt(value/1000);
|
|
36406
|
+
var hundred=parseInt(value%1000);
|
|
36407
|
+
|
|
36408
|
+
aryText[0]=`${sign}${thousand}`;
|
|
36409
|
+
aryText[1]=`${hundred}`;
|
|
36410
|
+
if (hundred<10) aryText[1]=`00${hundred}`;
|
|
36411
|
+
else if (hundred<100) aryText[1]=`0${hundred}`;
|
|
36412
|
+
}
|
|
36413
|
+
else
|
|
36414
|
+
{
|
|
36415
|
+
aryText[1]=`${sign}${value.toFixed(0)}`;
|
|
36416
|
+
}
|
|
36417
|
+
|
|
36418
|
+
this.Canvas.textAlign="right";
|
|
36419
|
+
this.Canvas.textBaseline="top";
|
|
36420
|
+
var xRight=rtDraw.Right-(rtDraw.Right-rtDraw.Left-textWidth)/2;
|
|
36421
|
+
|
|
36422
|
+
this.Canvas.fillStyle=clrText;
|
|
36423
|
+
var yText=textMargin.Top+rtDraw.Top;
|
|
36424
|
+
for(var i=0;i<aryText.length;++i)
|
|
36425
|
+
{
|
|
36426
|
+
var text=aryText[i];
|
|
36427
|
+
if (text)
|
|
36428
|
+
{
|
|
36429
|
+
this.Canvas.fillText(text,xRight,yText);
|
|
36430
|
+
}
|
|
36431
|
+
|
|
36432
|
+
yText+=textHeight;
|
|
36433
|
+
}
|
|
36434
|
+
}
|
|
36435
|
+
|
|
36266
36436
|
this.GetMaxMin=function()
|
|
36267
36437
|
{
|
|
36268
36438
|
if (!IFrameSplitOperator.IsNumber(this.BaseValue) || this.BaseValue==0)
|
|
@@ -36325,13 +36495,36 @@ function ChartClipColorStick()
|
|
|
36325
36495
|
|
|
36326
36496
|
if (this.BaseValue>0)
|
|
36327
36497
|
{
|
|
36328
|
-
if (
|
|
36329
|
-
|
|
36498
|
+
if (this.Style==1)
|
|
36499
|
+
{
|
|
36500
|
+
if (IFrameSplitOperator.IsNumber(maxDiffValue))
|
|
36501
|
+
{
|
|
36502
|
+
var value=this.BaseValue+maxDiffValue;
|
|
36503
|
+
if (IFrameSplitOperator.IsNumber(range.Max) || range.Max<value) range.Max=value;
|
|
36504
|
+
}
|
|
36505
|
+
}
|
|
36506
|
+
else
|
|
36507
|
+
{
|
|
36508
|
+
if (IFrameSplitOperator.IsNumber(maxDiffValue) && IFrameSplitOperator.IsNumber(range.Min))
|
|
36509
|
+
range.Min-=maxDiffValue;
|
|
36510
|
+
}
|
|
36511
|
+
|
|
36330
36512
|
}
|
|
36331
36513
|
else
|
|
36332
36514
|
{
|
|
36333
|
-
if (
|
|
36334
|
-
|
|
36515
|
+
if (this.Style==1)
|
|
36516
|
+
{
|
|
36517
|
+
if (IFrameSplitOperator.IsNumber(maxDiffValue))
|
|
36518
|
+
{
|
|
36519
|
+
var value=this.BaseValue-maxDiffValue;
|
|
36520
|
+
if (IFrameSplitOperator.IsNumber(range.Min) || range.Min>value) range.Min=value;
|
|
36521
|
+
}
|
|
36522
|
+
}
|
|
36523
|
+
else
|
|
36524
|
+
{
|
|
36525
|
+
if (IFrameSplitOperator.IsNumber(maxDiffValue) && IFrameSplitOperator.IsNumber(range.Max))
|
|
36526
|
+
range.Max+=maxDiffValue;
|
|
36527
|
+
}
|
|
36335
36528
|
}
|
|
36336
36529
|
|
|
36337
36530
|
return range;
|
|
@@ -79590,8 +79783,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79590
79783
|
drawPictrueData.Y=(touches[0].clientY-uielement.getBoundingClientRect().top);
|
|
79591
79784
|
if (this.GetChartDrawPictureByPoint(drawPictrueData))
|
|
79592
79785
|
{
|
|
79593
|
-
|
|
79594
|
-
|
|
79786
|
+
if (drawPictrueData.ChartDrawPicture.EnableMove==true)
|
|
79787
|
+
drawPictrueData.ChartDrawPicture.Status=20;
|
|
79595
79788
|
drawPictrueData.ChartDrawPicture.ValueToPoint();
|
|
79596
79789
|
drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;
|
|
79597
79790
|
drawPictrueData.ChartDrawPicture.IsSelected=true;
|