hqchart 1.1.15883 → 1.1.15912
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 +27 -15
- package/package.json +1 -1
- package/src/jscommon/umychart/umychart.js +238 -46
- package/src/jscommon/umychart/umychart.min.js +1 -1
- package/src/jscommon/umychart.js +237 -45
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +239 -46
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +239 -46
package/lib/umychart.vue.js
CHANGED
|
@@ -2554,7 +2554,7 @@ this.GetSymbolDecimal=function(){return GetfloatPrecision(this.Symbol);};this.Tr
|
|
|
2554
2554
|
this.GetSymbolDecimalV2=function(){var symbol=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.Symbol;if(this.GlobalOption&&this.GlobalOption.DecimalPlaces){var result={Type:0,Decimal:2};var item=this.GlobalOption.DecimalPlaces;if(IFrameSplitOperator.IsPlusNumber(item.Decimal))result.Decimal=item.Decimal;if(IFrameSplitOperator.IsNumber(item.Denominator)){result.Type=1;result.Denominator=item.Denominator;}return result;}else{var dec=GetfloatPrecision(symbol);return{Type:0,Decimal:dec};}};//strDefault 默认值
|
|
2555
2555
|
this.FormatPriceString=function(value,dec){var strDefault=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"";if(!IFrameSplitOperator.IsNumber(value))return strDefault;if(!dec)return"".concat(value);if(dec.Type==1){var intValue=Math.floor(value);//整数
|
|
2556
2556
|
var floatValue=value-intValue;var decValue=parseInt(floatValue/(1/dec.Denominator));//固定小数位数
|
|
2557
|
-
var strDec=decValue.toString();var zeroCount=dec.Decimal-strDec.length;if(zeroCount>0)strDec
|
|
2557
|
+
var strDec=decValue.toString();var zeroCount=dec.Decimal-strDec.length;if(zeroCount>0)strDec='0'.repeat(zeroCount)+strDec;return"".concat(intValue,"'").concat(strDec);}else{return value.toFixed(dec.Decimal);}};this.GetDecimalPlacesMenu=function(){var decimalPlaces=this.GlobalOption.DecimalPlaces;var decimalMenu={Name:"价格小数位数",SubMenu:[{Name:"默认",Data:{ID:JSCHART_MENU_ID.CMD_SET_DECIMAL_PLACES_ID,Args:[null]},Checked:decimalPlaces===null}]};if(this.DecimalPlacesConfig&&IFrameSplitOperator.IsNonEmptyArray(this.DecimalPlacesConfig.Data)){for(var i=0;i<this.DecimalPlacesConfig.Data.length;++i){var item=this.DecimalPlacesConfig.Data[i];if(!item)continue;var bChecked=false;if(decimalPlaces&&decimalPlaces.ID==item.ID)bChecked=true;decimalMenu.SubMenu.push({Name:item.Name,Data:{ID:JSCHART_MENU_ID.CMD_SET_DECIMAL_PLACES_ID,Args:[item]},Checked:bChecked});}}return decimalMenu;};}function GetDevicePixelRatio(){if(typeof window=='undefined')return 1;return window.devicePixelRatio||1;}function _GetFontHeight(context,font,word){if(!context)return null;if(font)context.font=font;var text='擎';if(IFrameSplitOperator.IsString(word))text=word;var fontInfo=context.measureText(text);var textHeight=fontInfo.fontBoundingBoxAscent+fontInfo.fontBoundingBoxDescent;if(!IFrameSplitOperator.IsNumber(textHeight))textHeight=fontInfo.width+2*GetDevicePixelRatio();return textHeight;}function IsPhoneWeb(){var userAgentInfo=navigator.userAgent;var Agents=new Array("Android","iPhone","SymbianOS","Windows Phone","iPad","iPod");for(var v=0;v<Agents.length;v++){if(userAgentInfo.indexOf(Agents[v])>0)return true;}return false;}function OnKeyDown(e)//键盘事件
|
|
2558
2558
|
{if(this.JSChartContainer&&this.JSChartContainer.OnKeyDown)this.JSChartContainer.OnKeyDown(e);}function OnKeyUp(e)//键盘事件
|
|
2559
2559
|
{if(this.JSChartContainer&&this.JSChartContainer.OnKeyUp)this.JSChartContainer.OnKeyUp(e);}function OnWheel(e)//上下滚动事件
|
|
2560
2560
|
{if(this.JSChartContainer&&this.JSChartContainer.OnWheel)this.JSChartContainer.OnWheel(e);}function ToFixed(number,precision){var b=1;if(isNaN(number))return number;if(number<0)b=-1;var multiplier=Math.pow(10,precision);var value=Math.round(Math.abs(number)*multiplier)/multiplier*b;if(/^(\d+(?:\.\d+)?)(e)([\-]?\d+)$/.test(value))var s=value.toFixed2(precision);else var s=value.toString();var rs=s.indexOf('.');if(rs<0&&precision>0){rs=s.length;s+='.';}while(s.length<=rs+precision){s+='0';}return s;}function IsRectOverlap(rt,rt2){if(Math.max(rt.Left,rt2.Left)<Math.min(rt.Right,rt2.Right)&&Math.max(rt.Top,rt2.Top)<Math.min(rt.Bottom,rt2.Bottom))return true;return false;}//获取文字高度和宽度
|
|
@@ -3943,18 +3943,19 @@ this.TooltipRect.push([i,rect]);//[0]数据索引 [1]数据区域
|
|
|
3943
3943
|
preKItemInfo=kItemInfo;}this.DrawLastPointEvent(ptLast);//通知外部绘制最后一个点
|
|
3944
3944
|
this.PtMax=ptMax;this.PtMin=ptMin;};this.DrawKBar_Up=function(data,dataWidth,upColor,drawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen)//阳线
|
|
3945
3945
|
{var isEmptyBar=false;if(drawType==3||drawType==6)isEmptyBar=true;if(dataWidth>=4){if(isEmptyBar){if(dataWidth%2!=0)dataWidth-=1;}this.Canvas.strokeStyle=upColor;if(data.High>data.Close)//上影线
|
|
3946
|
-
{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(
|
|
3946
|
+
{this.Canvas.beginPath();if(isHScreen){if(isEmptyBar){this.Canvas.moveTo(ToFixedPoint(yHigh),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yClose),ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yClose),ToFixedPoint(x));}}else{if(isEmptyBar){var xFixed=left+dataWidth/2;this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(yHigh));this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(yClose));}else{this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yClose));}}this.Canvas.stroke();y=yClose;}else{y=yClose;}this.Canvas.fillStyle=upColor;if(isHScreen){if(Math.abs(yOpen-y)<1){this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),1,ToFixedRect(dataWidth));//高度小于1,统一使用高度1
|
|
3947
3947
|
}else{if(isEmptyBar)//空心柱
|
|
3948
3948
|
{this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(y),ToFixedPoint(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));this.Canvas.stroke();}else{this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));}}}else{if(Math.abs(yOpen-y)<1){this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1);//高度小于1,统一使用高度1
|
|
3949
3949
|
}else{if(isEmptyBar)//空心柱
|
|
3950
3950
|
{this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(y),ToFixedRect(dataWidth),ToFixedRect(yOpen-y));this.Canvas.stroke();}else{this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(Math.min(y,yOpen)),ToFixedRect(dataWidth),ToFixedRect(Math.abs(yOpen-y)));}}}if(data.Open>data.Low)//下影线
|
|
3951
|
-
{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(
|
|
3951
|
+
{this.Canvas.beginPath();if(isHScreen){if(isEmptyBar){this.Canvas.moveTo(ToFixedPoint(yOpen),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}}else{if(isEmptyBar){var xFixed=left+dataWidth/2;this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(yOpen));this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(yLow));}else{this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yLow));}}this.Canvas.stroke();}}else{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(yHigh,ToFixedPoint(x));this.Canvas.lineTo(yLow,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yHigh);this.Canvas.lineTo(ToFixedPoint(x),yLow);}this.Canvas.strokeStyle=upColor;this.Canvas.stroke();}};this.DrawKBar_Down=function(data,dataWidth,downColor,drawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen)//阴线
|
|
3952
3952
|
{var isEmptyBar=false;if(drawType==6||drawType==20)isEmptyBar=true;if(dataWidth>=4){if(isEmptyBar){if(dataWidth%2!=0)dataWidth-=1;}this.Canvas.strokeStyle=downColor;if(data.High>data.Close)//上影线
|
|
3953
|
-
{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yOpen),ToFixedPoint(x));}else{if(isEmptyBar){var xFixed=left+dataWidth/2;this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(
|
|
3954
|
-
|
|
3953
|
+
{this.Canvas.beginPath();if(isHScreen){if(isEmptyBar){this.Canvas.moveTo(ToFixedPoint(yHigh),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yOpen),ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yOpen),ToFixedPoint(x));}}else{if(isEmptyBar){var xFixed=left+dataWidth/2;this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(yHigh));this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(yOpen));}else{this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yOpen));}}this.Canvas.stroke();y=yOpen;}else{y=yOpen;}this.Canvas.fillStyle=downColor;if(isHScreen){if(Math.abs(yClose-y)<1){this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),1,ToFixedRect(dataWidth));//高度小于1,统一使用高度1
|
|
3954
|
+
}else{if(isEmptyBar)//空心柱
|
|
3955
|
+
{this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(y),ToFixedPoint(left),ToFixedRect(yClose-y),ToFixedRect(dataWidth));this.Canvas.stroke();}else{this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),ToFixedRect(yClose-y),ToFixedRect(dataWidth));}}}else{if(Math.abs(yClose-y)<1){this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1);//高度小于1,统一使用高度1
|
|
3955
3956
|
}else{if(isEmptyBar)//空心柱
|
|
3956
3957
|
{this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(Math.min(y,yClose)),ToFixedRect(dataWidth),ToFixedRect(Math.abs(yClose-y)));this.Canvas.stroke();}else{this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(Math.min(y,yClose)),ToFixedRect(dataWidth),ToFixedRect(Math.abs(yClose-y)));}}}if(data.Open>data.Low)//下影线
|
|
3957
|
-
{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}else{if(isEmptyBar){var xFixed=left+dataWidth/2;this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(
|
|
3958
|
+
{this.Canvas.beginPath();if(isHScreen){if(isEmptyBar){this.Canvas.moveTo(ToFixedPoint(yClose),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}}else{if(isEmptyBar){var xFixed=left+dataWidth/2;this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(yClose));this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(yLow));}else{this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yLow));}}this.Canvas.stroke();}}else{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(yHigh,ToFixedPoint(x));this.Canvas.lineTo(yLow,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yHigh);this.Canvas.lineTo(ToFixedPoint(x),yLow);}this.Canvas.strokeStyle=downColor;this.Canvas.stroke();}};this.DrawKBar_Unchagne=function(data,dataWidth,unchagneColor,drawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen)//平线
|
|
3958
3959
|
{if(this.UnchangeBarType==1)//十字星颜色
|
|
3959
3960
|
{unchagneColor=this.GetUnchangeBarColor(data);}if(this.OneLimitBarType===1&&this.IsOneLimitBar(data))//一字板
|
|
3960
3961
|
{unchagneColor=this.GetOneLimitBarColor(data);}if(dataWidth>=4){if(dataWidth%2!=0)dataWidth-=1;this.Canvas.strokeStyle=unchagneColor;this.Canvas.beginPath();if(data.High>data.Close)//上影线
|
|
@@ -4081,8 +4082,8 @@ this.DrawKRange={Start:null,End:null};this.AryPriceGapCache=[];this.AryPredictio
|
|
|
4081
4082
|
this.DrawHeatMap();if(!this.IsShow)return;if(this.ChartFrame.IsMinSize&&this.Name=="Self Kline")return;if(ChartData.IsTickPeriod(this.Period))//分笔图
|
|
4082
4083
|
{this.Canvas.save();if(this.DrawType==1){this.ClipClient(this.ChartFrame.IsHScreen);this.DrawCloseLine();}else if(this.DrawType==4){this.ClipClient(this.ChartFrame.IsHScreen);this.DrawCloseArea();}else{this.ClipTickClient(this.ChartFrame.IsHScreen);this.DrawTick();}this.Canvas.restore();return;}this.Canvas.save();this.ClipClient(this.ChartFrame.IsHScreen);if(this.DrawType==1){this.DrawCloseLine();this.Canvas.restore();this.DrawPredictionLine();if(this.PriceGap.Enable)this.DrawPriceGap();this.UpdateGlobalLatestPoint();return;}else if(this.DrawType==2){this.DrawAKLine();}else if(this.DrawType==4){this.DrawCloseArea();}else if(this.DrawType==5){this.DrawOrderFlow();}else if(this.DrawType==7){this.DrawOrderFlow_Style2();}else if(this.DrawType==8){this.DrawOrderFlow_Style3();}else if(this.DrawType==9){this.DrawKBar();}else if(this.DrawType==10){this.DrawRenkoCandle();}else if(this.DrawType==12){this.DrawLineBreak();}else if(this.DrawType==13){this.DrawHighLow();}else if(this.DrawType==14){if(this.FFKChart&&this.FFKChart.Draw){this.FFKChart.Draw(this);}}else if(this.DrawType==15){this.DrawHLCArea();}else if(this.DrawType==16){this.DrawKagi();}else if(this.DrawType==17){this.DrawOrderFlow_Style4();}else if(this.DrawType==18){this.DrawOrderFlow_Style5();}else if(this.DrawType==19){this.DrawHLCBars();}else if(this.DrawType==21){this.DrawOrderFlow_Style6();}else{this.DrawKBar();}if(this.TradeIcon)this.DrawTradeIcon();else this.DrawTrade();if(this.PriceGap.Enable)this.DrawPriceGap();this.Canvas.restore();this.UpdateGlobalLatestPoint();this.DrawPredictionLine();if(this.IsShowMaxMinPrice)//标注最大值最小值
|
|
4083
4084
|
{if(this.ChartFrame.IsHScreen===true)this.HScreenDrawMaxMinPrice(this.PtMax,this.PtMin);else this.DrawMaxMinPrice(this.PtMax,this.PtMin);}if(this.DrawType==14)//自定义图形 标注最大最小值
|
|
4084
|
-
{if(this.FFKChart&&this.FFKChart.DrawMaxMinPrice){this.FFKChart.DrawMaxMinPrice();}}this.DrawDaySummary();};this.OnFormatHighLowTitle=function(ptMax,ptMin){if(!ptMax||!ptMin)return null;if(!IFrameSplitOperator.IsNumber(ptMax.Value)||!IFrameSplitOperator.IsNumber(ptMin.Value))return null;var defaultfloatPrecision=GetfloatPrecision(this.Symbol);//小数位数
|
|
4085
|
-
var title={High:ptMax.Value.toFixed(defaultfloatPrecision),Low:ptMin.Value.toFixed(defaultfloatPrecision)};if(!this.GetEventCallback)return title;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_KLINE_HIGH_LOW_TITLE);if(!event||!event.Callback)return title;var data={Max:ptMax,Min:ptMin,Symbol:this.Symbol,Title:{High:title.High,Low:title.Low},Decimal:defaultfloatPrecision,PreventDefault:false};event.Callback(event,data,this);if(data.PreventDefault)return data.Title;//使用外部回调的数值
|
|
4085
|
+
{if(this.FFKChart&&this.FFKChart.DrawMaxMinPrice){this.FFKChart.DrawMaxMinPrice();}}this.DrawDaySummary();};this.OnFormatHighLowTitle=function(ptMax,ptMin){if(!ptMax||!ptMin)return null;if(!IFrameSplitOperator.IsNumber(ptMax.Value)||!IFrameSplitOperator.IsNumber(ptMin.Value))return null;if(this.ChartFrame.HQChart){var decConfig=this.ChartFrame.HQChart.GetSymbolDecimalV2(this.Symbol);var title={High:this.HQChart.FormatPriceString(ptMax.Value,decConfig,""),Low:this.HQChart.FormatPriceString(ptMin.Value,decConfig,"")};}else{var defaultfloatPrecision=GetfloatPrecision(this.Symbol);//小数位数
|
|
4086
|
+
var title={High:ptMax.Value.toFixed(defaultfloatPrecision),Low:ptMin.Value.toFixed(defaultfloatPrecision)};}if(!this.GetEventCallback)return title;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_KLINE_HIGH_LOW_TITLE);if(!event||!event.Callback)return title;var data={Max:ptMax,Min:ptMin,Symbol:this.Symbol,Title:{High:title.High,Low:title.Low},Decimal:defaultfloatPrecision,PreventDefault:false};event.Callback(event,data,this);if(data.PreventDefault)return data.Title;//使用外部回调的数值
|
|
4086
4087
|
return title;};this.DrawMaxMinPrice=function(ptMax,ptMin){if(ptMax.X==null||ptMax.Y==null||ptMax.Value==null)return;if(ptMin.X==null||ptMin.Y==null||ptMin.Value==null)return;var title=this.OnFormatHighLowTitle(ptMax,ptMin);if(!title)return;var leftArrow=g_JSChartResource.KLine.MaxMin.LeftArrow;var rightArrow=g_JSChartResource.KLine.MaxMin.RightArrow;var highYOffset=g_JSChartResource.KLine.MaxMin.HighYOffset;var lowYOffset=g_JSChartResource.KLine.MaxMin.LowYOffset;var defaultfloatPrecision=GetfloatPrecision(this.Symbol);this.Canvas.font=this.TextFont;var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();var ptTop=ptMax;var text=title.High;var textColor=this.TextColor;if(this.ChartFrame.CoordinateType==1)//反转坐标
|
|
4087
4088
|
{if(ptMax.Y<ptMin.Y)ptTop=ptMin;this.Canvas.textBaseline='top';var text=title.Low;if(title.LowColor)textColor=title.LowColor;}else{if(ptMax.Y>ptMin.Y)ptTop=ptMin;this.Canvas.textBaseline='bottom';if(title.HighColor)textColor=title.HighColor;}this.Canvas.fillStyle=textColor;this.Canvas.textAlign=ptTop.Align;var left=ptTop.Align=='left'?ptTop.X:ptTop.X;if(IFrameSplitOperator.IsNumber(highYOffset))ptTop.Y+=highYOffset;//var text=ptTop.Value.toFixed(defaultfloatPrecision);
|
|
4088
4089
|
if(ptTop.Align=='left')text=leftArrow+text;else text=text+rightArrow;if(ptTop.Y>top-2){var textSize=GetTextSize(this.Canvas,text);var textWidth=textSize.Width;var textHeight=textSize.Height;if(this.ChartFrame.CoordinateType==1)//反转坐标
|
|
@@ -5022,10 +5023,20 @@ if(!IFrameSplitOperator.IsNonEmptyArray(this.PointGroup))return;if(!this.MapCach
|
|
|
5022
5023
|
var mapPoint=new Map();for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data))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;}this.CalculateItem(mapItem,kItem,x,mapPoint);}if(mapPoint.size<=0)return;this.Canvas.save();this.ClipClient(this.IsHScreen);this.DrawAllPoint(mapPoint);this.Canvas.restore();};this.CalculateItem=function(groupItem,kItem,x,mapPoint){for(var i=0;i<groupItem.Data.length;++i){var item=groupItem.Data[i];var value=item.Data.Value;if(IFrameSplitOperator.IsString(item.Data.Value))value=this.GetKValue(kItem,item.Data.Value);if(!IFrameSplitOperator.IsNumber(value))continue;var y=this.ChartFrame.GetYFromData(value,false);var strConfig=JSON.stringify(item.ColorConfig);if(!mapPoint.has(strConfig))mapPoint.set(strConfig,{AryPoint:[]});var mapItem=mapPoint.get(strConfig);mapItem.AryPoint.push({X:x,Y:y,Data:item});}};this.DrawAllPoint=function(mapPoint){var pixelRatio=GetDevicePixelRatio();var _iterator0=_createForOfIteratorHelper(mapPoint),_step0;try{for(_iterator0.s();!(_step0=_iterator0.n()).done;){var mapItem=_step0.value;var aryPoint=mapItem[1].AryPoint;if(!IFrameSplitOperator.IsNonEmptyArray(aryPoint))continue;var config=null;var path=new Path2D();var count=0;for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(!config)config=item.Data.ColorConfig;var pointPath=new Path2D();if(this.IsHScreen)pointPath.arc(item.Y,item.X,config.Radius*pixelRatio,0,360,false);else pointPath.arc(item.X,item.Y,config.Radius*pixelRatio,0,360,false);path.addPath(pointPath);++count;}if(count>0&&config){if(config.BGColor){this.Canvas.fillStyle=config.BGColor;//背景填充颜色
|
|
5023
5024
|
this.Canvas.fill(path);}if(config.Color){this.Canvas.lineWidth=config.LineWidth*pixelRatio;this.Canvas.strokeStyle=config.Color;this.Canvas.stroke(path);}}}}catch(err){_iterator0.e(err);}finally{_iterator0.f();}};this.GetMaxMin=function(){var range={Min:null,Max:null};if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return range;if(!this.MapCache||this.MapCache.size<=0)return range;var xPointCount=this.ChartFrame.XPointCount;for(var i=this.Data.DataOffset,j=0,k=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var kItem=this.Data.Data[i];var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data))continue;for(k=0;k<mapItem.Data.length;++k){var item=mapItem.Data[k];var value=item.Data.Value;if(IFrameSplitOperator.IsString(item.Data.Value))value=this.GetKValue(kItem,item.Data.Value);if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null)range.Max=value;else if(range.Max<value)range.Max=value;if(range.Min==null)range.Min=value;else if(range.Min>value)range.Min=value;}}return range;};}// 多文本集合2.0 支持横屏
|
|
5024
5025
|
function ChartMultiText(){this.newMethod=IChartPainting;//派生
|
|
5025
|
-
this.newMethod();delete this.newMethod;this.ClassName="ChartMultiText";this.Texts=[];//[ {Date:, Time, Value:, Text:, Color:, Font: , Baseline:, Line:{ Color:, Dash:[虚线点], KData:"H/L", Offset:[5,10], Width:线粗细 }} ]
|
|
5026
|
+
this.newMethod();delete this.newMethod;this.ClassName="ChartMultiText";this.Texts=[];//[ {Date:, Time, Value:, Text:, Color:, BGColor:, Font: , Baseline:, Align:, Line:{ Color:, Dash:[虚线点], KData:"H/L", Offset:[5,10], Width:线粗细 }} ]
|
|
5026
5027
|
this.Font=g_JSChartResource.DefaultTextFont;this.Color=g_JSChartResource.DefaultTextColor;this.IsHScreen=false;//是否横屏
|
|
5027
5028
|
this.MapCache=null;//key=date/date-time value={ Data:[] }
|
|
5028
|
-
this.GetKValue=ChartData.GetKValue;this.BuildCacheData=function(){var mapData=new Map();this.MapCache=mapData;if(!IFrameSplitOperator.IsNonEmptyArray(this.Texts))return;for(var i=0;i<this.Texts.length;++i){var item=this.Texts[i];var key=this.BuildKey(item);if(mapData.has(key)){var mapItem=mapData.get(key);mapItem.Data.push(item);}else{mapData.set(key,{Data:[item]});}}};this.DrawAllText=function(){var bHScreen=this.ChartFrame.IsHScreen===true;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var chartleft=border.TopEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var left=this.ChartBorder.GetTop();var right=this.ChartBorder.GetBottom();var top=border.RightEx;var bottom=border.LeftEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var chartleft=border.LeftEx;var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=border.TopEx;var bottom=border.BottomEx;}for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data))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;}for(var k=0;k<mapItem.Data.length;++k){var item=mapItem.Data[k];var y=top;if(item.Value=="TOP")y=top;else if(item.Value=="BOTTOM")y=bottom;else{var price=item.Value;if(IFrameSplitOperator.IsString(item.Value))price=this.GetKValue(kItem,item.Value);y=this.ChartFrame.GetYFromData(price,false);}if(item.
|
|
5029
|
+
this.GetKValue=ChartData.GetKValue;this.BuildCacheData=function(){var mapData=new Map();this.MapCache=mapData;if(!IFrameSplitOperator.IsNonEmptyArray(this.Texts))return;for(var i=0;i<this.Texts.length;++i){var item=this.Texts[i];var key=this.BuildKey(item);if(mapData.has(key)){var mapItem=mapData.get(key);mapItem.Data.push(item);}else{mapData.set(key,{Data:[item]});}}};this.DrawAllText=function(){var bHScreen=this.ChartFrame.IsHScreen===true;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var chartleft=border.TopEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var left=this.ChartBorder.GetTop();var right=this.ChartBorder.GetBottom();var top=border.RightEx;var bottom=border.LeftEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var chartleft=border.LeftEx;var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=border.TopEx;var bottom=border.BottomEx;}this.Canvas.textAlign="left";this.Canvas.textBaseline='bottom';for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data))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;}for(var k=0;k<mapItem.Data.length;++k){var item=mapItem.Data[k];var y=top;if(item.Value=="TOP")y=top;else if(item.Value=="BOTTOM")y=bottom;else{var price=item.Value;if(IFrameSplitOperator.IsString(item.Value))price=this.GetKValue(kItem,item.Value);y=this.ChartFrame.GetYFromData(price,false);}if(item.Font)this.Canvas.font=item.Font;else this.Canvas.font=this.Font;var textWidth=this.Canvas.measureText(item.Text).width;var textHeight=this.Canvas.measureText("擎").width;var cellWidth=textWidth;var cellHeight=textHeight;var xTextOffset=0,yTextOffset=0;if(item.Margin){if(IFrameSplitOperator.IsNumber(item.Margin.Left))cellWidth+=item.Margin.Left;if(IFrameSplitOperator.IsNumber(item.Margin.Right))cellWidth+=item.Margin.Right;if(IFrameSplitOperator.IsNumber(item.Margin.Top))cellHeight+=item.Margin.Top;if(IFrameSplitOperator.IsNumber(item.Margin.Bottom))cellHeight+=item.Margin.Bottom;if(IFrameSplitOperator.IsNumber(item.Margin.XOffset))xTextOffset=item.Margin.XOffset;if(IFrameSplitOperator.IsNumber(item.Margin.YOffset))yTextOffset=item.Margin.YOffset;}if(this.IsHScreen){var rtText={Left:y-cellHeight/2,Width:cellHeight,Top:x-cellWidth/2,Height:cellWidth};rtText.Right=rtText.Left+rtText.Width;rtText.Bottom=rtText.Top+rtText.Height;if(item.Baseline==1)//y=顶部
|
|
5030
|
+
{rtText.Right=y;rtText.Left=rtText.Right-rtText.Width;}else if(item.Baseline==2)//y=底部
|
|
5031
|
+
{rtText.Left=y;rtText.Right=rtText.Left+rtText.Width;}if(IFrameSplitOperator.IsNumber(item.YMove)){rtText.Left-=item.YMove;rtText.Right-=item.YMove;}}else{var rtText={Left:x-cellWidth/2,Width:cellWidth,Top:y-cellHeight/2,Height:cellHeight};rtText.Right=rtText.Left+rtText.Width;rtText.Bottom=rtText.Top+rtText.Height;//左右对齐 默认居中
|
|
5032
|
+
if(item.Align==1)//左
|
|
5033
|
+
{rtText.Left=x;rtText.Right=rtText.Left+rtText.Width;if(item.XLine&&IFrameSplitOperator.IsNumber(item.XLine.Width)){rtText.Left+=item.XLine.Width;rtText.Right+=item.XLine.Width;if(item.XLine.Color)//画线
|
|
5034
|
+
{this.Canvas.save();this.Canvas.lineWidth=1*GetDevicePixelRatio();//线宽
|
|
5035
|
+
this.Canvas.strokeStyle=item.XLine.Color;this.Canvas.beginPath();var arrawSize=6*GetDevicePixelRatio();if(IFrameSplitOperator.IsNumber(item.XLine.ArrawSize))arrawSize=item.XLine.ArrawSize;// 箭头主干横线
|
|
5036
|
+
this.Canvas.moveTo(x,y);this.Canvas.lineTo(rtText.Left,y);this.Canvas.moveTo(x,y);this.Canvas.lineTo(x+arrawSize/2,y+arrawSize/3);this.Canvas.moveTo(x,y);this.Canvas.lineTo(x+arrawSize/2,y-arrawSize/3);this.Canvas.stroke();this.Canvas.restore();}}}else if(item.Align==2)//右
|
|
5037
|
+
{rtText.Right=x;rtText.Left=rtText.Right-rtText.Width;}else{if(rtText.Left<chartleft){rtText.Left=chartleft;rtText.Right=rtText.Left+rtText.Width;}else if(rtText.Right>chartright){rtText.Right=chartright;rtText.Left=rtText.Right-rtText.Width;}}if(item.Baseline==1)//y=顶部
|
|
5038
|
+
{rtText.Top=y;rtText.Bottom=rtText.Top+rtText.Height;}else if(item.Baseline==2)//y=底部
|
|
5039
|
+
{rtText.Bottom=y;rtText.Top=rtText.Bottom-rtText.Height;}if(IFrameSplitOperator.IsNumber(item.YMove)){rtText.Top+=item.YMove;rtText.Bottom+=item.YMove;}}if(this.IsHScreen){if(item.BGColor){this.Canvas.fillStyle=item.BGColor;this.Canvas.fillRect(rtText.Left,rtText.Top,rtText.Width,rtText.Height);}var yText=rtText.Top+xTextOffset;var xText=rtText.Left-yTextOffset;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.Color;this.Canvas.fillText(item.Text,0,0);this.Canvas.restore();}else{if(item.BGColor){this.Canvas.fillStyle=item.BGColor;this.Canvas.fillRect(rtText.Left,rtText.Top,rtText.Width,rtText.Height);}if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.Color;this.Canvas.fillText(item.Text,rtText.Left+xTextOffset,rtText.Bottom+yTextOffset);}if(item.Line){var price=item.Line.KData=="H"?kItem.High:kItem.Low;var yPrice=this.ChartFrame.GetYFromData(price,false);var yText=yPrice;if(this.IsHScreen){if(yPrice<rtText.Left)yText=rtText.Left;else if(yPrice>rtText.Right)yText=rtText.Right;}else{if(yPrice>rtText.Bottom)yText=rtText.Bottom;else if(yPrice<rtText.Top)yText=rtText.Top;}if(Array.isArray(item.Line.Offset)&&item.Line.Offset.length==2){if(yText>yPrice)//文字在下方
|
|
5029
5040
|
{yText-=item.Line.Offset[1];yPrice+=item.Line.Offset[0];}else if(yText<yPrice){yText+=item.Line.Offset[1];yPrice-=item.Line.Offset[0];}}this.Canvas.save();if(item.Line.Dash)this.Canvas.setLineDash(item.Line.Dash);//虚线
|
|
5030
5041
|
if(item.Line.Width>0)this.Canvas.lineWidth=item.Line.Width;//线宽
|
|
5031
5042
|
this.Canvas.strokeStyle=item.Line.Color;this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(yText,ToFixedPoint(x));this.Canvas.lineTo(yPrice,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yText);this.Canvas.lineTo(ToFixedPoint(x),yPrice);}this.Canvas.stroke();this.Canvas.restore();}}}};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;//k线数据
|
|
@@ -8180,11 +8191,11 @@ if(!this.ChartCorssCursor||!this.ChartCorssCursor.IsShowCorss||this.ChartCorssCu
|
|
|
8180
8191
|
this.GetKLineChart=function(){if(!this.ChartPaint[0])return null;return this.ChartPaint[0];};//创建子窗口
|
|
8181
8192
|
this.CreateChildWindow=function(windowCount){var _this24=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=g_ChartFrameFactory.Create("KLineFrame",{ID:i});frame.Canvas=this.Canvas;frame.GetExtraCanvas=function(name){return _this24.GetExtraCanvas(name);};frame.ChartBorder=border;frame.Identify=i;//窗口序号
|
|
8182
8193
|
frame.RightSpaceCount=this.RightSpaceCount;//右边
|
|
8183
|
-
frame.GetEventCallback=function(id){return _this24.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;frame.CreateDivFrameToolbar(this,i,this.UIElement.parentNode);frame.CreateLockPaint();frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this24.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this24.GetKLineChart();};frame.YSplitOperator.HQChart=this;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
8194
|
+
frame.GetEventCallback=function(id){return _this24.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;frame.CreateDivFrameToolbar(this,i,this.UIElement.parentNode);frame.CreateLockPaint();frame.HQChart=this;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this24.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this24.GetKLineChart();};frame.YSplitOperator.HQChart=this;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
8184
8195
|
border.BottomSpace=15*pixelTatio;//主图上下留空间
|
|
8185
8196
|
border.TopSpace=15*pixelTatio;frame.GetEventCallback=function(id){return _this24.GetEventCallback(id);};}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.GetEventCallback=function(id){return _this24.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this24.GetKLineChart();};frame.YSplitOperator.HQChart=this;//frame.IsLocked = true;
|
|
8186
8197
|
}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.LanguageID=this.LanguageID;frame.XSplitOperator.GetEventCallback=function(id){return _this24.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}};this.CreateSubFrameItem=function(id){var _this25=this;var border=new ChartBorder();border.UIElement=this.UIElement;var frameClassName="KLineFrame";if(this.ClassName=="KLineChartHScreenContainer")frameClassName="KLineHScreenFrame";var frame=g_ChartFrameFactory.Create(frameClassName,{ID:id});frame.Canvas=this.Canvas;frame.GetExtraCanvas=function(name){return _this25.GetExtraCanvas(name);};frame.ChartBorder=border;frame.Identify=id;//窗口序号
|
|
8187
|
-
frame.GetEventCallback=function(id){return _this25.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;frame.HorizontalMax=20;frame.HorizontalMin=10;frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.GetEventCallback=function(id){return _this25.GetEventCallback(id);};frame.YSplitOperator.GetEventCallback=function(id){return _this25.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this25.GetKLineChart();};frame.YSplitOperator.HQChart=this;frame.XSplitOperator.Symbol=this.Symbol;frame.XSplitOperator.Period=this.Period;frame.CreateDivFrameToolbar(this,id,this.UIElement.parentNode);frame.CreateLockPaint();//K线数据绑定
|
|
8198
|
+
frame.GetEventCallback=function(id){return _this25.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;frame.HorizontalMax=20;frame.HorizontalMin=10;frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.GetEventCallback=function(id){return _this25.GetEventCallback(id);};frame.YSplitOperator.GetEventCallback=function(id){return _this25.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this25.GetKLineChart();};frame.YSplitOperator.HQChart=this;frame.XSplitOperator.Symbol=this.Symbol;frame.XSplitOperator.Period=this.Period;frame.CreateDivFrameToolbar(this,id,this.UIElement.parentNode);frame.CreateLockPaint();frame.HQChart=this;//K线数据绑定
|
|
8188
8199
|
var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};//创建主图K线画法
|
|
8189
8200
|
this.CreateMainKLine=function(){var _this26=this;var kline=g_ChartPaintFactory.Create("ChartKLine");kline.Canvas=this.Canvas;kline.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;kline.ChartFrame=this.Frame.SubFrame[0].Frame;kline.Name="Main-KLine";kline.DrawType=this.KLineDrawType;kline.Identify="Main-KLine";kline.HQChart=this;kline.GetEventCallback=function(id){return _this26.GetEventCallback(id);};this.ChartPaint[0]=kline;this.TitlePaint[0]=new DynamicKLineTitlePainting();this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;this.TitlePaint[0].Canvas=this.Canvas;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
|
|
8190
8201
|
this.TitlePaint[0].LanguageID=this.LanguageID;this.TitlePaint[0].HQChart=this;this.TitlePaint[0].GetEventCallback=function(id){return _this26.GetEventCallback(id);};};this.BindKLineBreakPoint=function(data){var klineChart=this.ChartPaint[0];if(!klineChart)return;if(!IFrameSplitOperator.IsNonEmptyArray(data.AryBreakPoint))return;klineChart.AryBreakPoint=data.AryBreakPoint.slice();};//绑定主图K线数据
|
|
@@ -10002,7 +10013,7 @@ this.ChartSplashPaint.Frame=this.Frame;this.CreateChildWindow(windowCount);this.
|
|
|
10002
10013
|
for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this42.GetEventCallback(id);};titlePaint.GetSymbolDecimalCallback=function(){return _this42.GetSymbolDecimal();};titlePaint.SelectedChart=this.SelectedChart;titlePaint.HQChart=this;this.TitlePaint.push(titlePaint);}this.AddDefaultEventListener({KeyDown:true,Wheel:false});};//创建子窗口
|
|
10003
10014
|
this.CreateChildWindow=function(windowCount){var _this43=this;for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=g_ChartFrameFactory.Create("KLineHScreenFrame",{ID:i});frame.Canvas=this.Canvas;frame.GetExtraCanvas=function(name){return _this43.GetExtraCanvas(name);};frame.ChartBorder=border;frame.Identify=i;//窗口序号
|
|
10004
10015
|
frame.RightSpaceCount=this.RightSpaceCount;//右边
|
|
10005
|
-
frame.GetEventCallback=function(id){return _this43.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;frame.CreateLockPaint();frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this43.GetEventCallback(id);};frame.YSplitOperator.HQChart=this;//主图上下间距
|
|
10016
|
+
frame.GetEventCallback=function(id){return _this43.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;frame.CreateLockPaint();frame.HQChart=this;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this43.GetEventCallback(id);};frame.YSplitOperator.HQChart=this;//主图上下间距
|
|
10006
10017
|
var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
10007
10018
|
border.TopSpace=12*pixelTatio;border.BottomSpace=12*pixelTatio;}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this43.GetEventCallback(id);};frame.YSplitOperator.HQChart=this;//frame.IsLocked = true;
|
|
10008
10019
|
}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.GetEventCallback=function(id){return _this43.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;}};this.CreateStockChipPhone=function(option){var chart=new StockChipPhone();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.Left=this.Frame.ChartBorder.Bottom;//左边间距使用当前框架间距
|
|
@@ -16783,7 +16794,7 @@ if(dayItem.Text){var textWidth=this.Canvas.measureText(dayItem.Text).width;xText
|
|
|
16783
16794
|
{yCell=rtCell.Bottom;xCell=left;}++j;}}},{key:"DrawMarkDay",value:function DrawMarkDay(dayItem,markItem,rtCell,yText){var config=this.MarkDayConfig;var radius=config.Dots.Radius;var yOffset=config.Dots.YOffset;var color=config.Dots.Color;if(markItem.Color)color=markItem.Color;if(IFrameSplitOperator.IsNumber(markItem.YOffset))yOffset=markItem.YOffset;if(IFrameSplitOperator.IsNumber(markItem.Radius))radius=markItem.Radius;var x=rtCell.Left+rtCell.Width/2;var y=yText+yOffset;this.Canvas.fillStyle=color;this.Canvas.beginPath();this.Canvas.arc(x,y,radius,0,Math.PI*2);this.Canvas.fill();}},{key:"PtInCell",value:function PtInCell(x,y){if(!IFrameSplitOperator.IsNonEmptyArray(this.AryCellRect))return null;for(var i=0;i<this.AryCellRect.length;++i){var item=this.AryCellRect[i];var rtCell=item.Rect;if(x>=rtCell.Left&&x<=rtCell.Right&&y>=rtCell.Top&&y<=rtCell.Bottom){var data={Rect:rtCell,Type:item.Type,Data:item.Data};return data;}}return null;}},{key:"OnMouseOn",value:function OnMouseOn(x,y,e){var pixelTatio=GetDevicePixelRatio();var insidePoint={X:x/pixelTatio,Y:y/pixelTatio};var uiElement;if(this.UIElement)uiElement={Left:this.UIElement.getBoundingClientRect().left,Top:this.UIElement.getBoundingClientRect().top};else uiElement={Left:null,Top:null};var bDraw=false;var cell=this.PtInCell(x,y);if(cell){bDraw=false;var selData=this.MoveOnData.Data;if(selData&&cell.Type==selData.Type){if(cell.Type===JSCHART_CALENDAR_BUTTON_ID.DAY_CELL_ID||cell.Type===JSCHART_CALENDAR_BUTTON_ID.MONTH_CELL_ID){if(cell.Data.Date!=selData.Data.Date){this.MoveOnData.Data={Type:cell.Type,Data:cell.Data};bDraw=true;}}}else{this.MoveOnData.Data={Type:cell.Type,Data:cell.Data};bDraw=true;}return{Redraw:bDraw,Cell:cell};}if(this.MoveOnData.Data){this.MoveOnData.Data=null;bDraw=true;}return{Redraw:bDraw,Cell:null};}},{key:"OnMouseDown",value:function OnMouseDown(x,y,e){var cell=this.PtInCell(x,y);if(!cell)return null;var bDraw=false;return{Type:cell.Type,Redraw:bDraw,Data:cell.Data};}},{key:"SetSelectedDay",value:function SetSelectedDay(aryData){this.ArySelectedDay=[];if(IFrameSplitOperator.IsNonEmptyArray(aryData))this.ArySelectedDay=aryData.slice();}}]);}();/********************************************************************************
|
|
16784
16795
|
* 版本信息输出
|
|
16785
16796
|
*
|
|
16786
|
-
*/var HQCHART_VERSION="1.1.
|
|
16797
|
+
*/var HQCHART_VERSION="1.1.15911";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: ".concat(HQCHART_VERSION," \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ");console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
16787
16798
|
var _default=exports["default"]=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
16788
16799
|
// BaseIndex:BaseIndex,
|
|
16789
16800
|
// ChartLine:ChartLine,
|
|
@@ -16813,5 +16824,6 @@ HQPriceStringFormat:HQPriceStringFormat//分时图,K线图Y轴 十字光标输
|
|
|
16813
16824
|
}),"JS_ID",{JSCHART_EVENT_ID:JSCHART_EVENT_ID,JSCHART_OPERATOR_ID:JSCHART_OPERATOR_ID,JSCHART_DRAG_ID:JSCHART_DRAG_ID,JSCHART_BUTTON_ID:JSCHART_BUTTON_ID,JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID,JSCHART_MENU_ID:JSCHART_MENU_ID,JSCHART_TRADE_STATUS_ID:JSCHART_TRADE_STATUS_ID,//交易状态
|
|
16814
16825
|
JSCHART_CORSSCURSOR_STATUS_ID:JSCHART_CORSSCURSOR_STATUS_ID,//十字光标状态
|
|
16815
16826
|
CONDITION_PERIOD:CONDITION_PERIOD,//指标周期条件枚举
|
|
16816
|
-
DECIMAL_ID:DECIMAL_ID
|
|
16827
|
+
DECIMAL_ID:DECIMAL_ID,//指标标题栏 显示小数位数枚举
|
|
16828
|
+
JSCHART_TEMPORARY_ATTRIBUTE:JSCHART_TEMPORARY_ATTRIBUTE//图形临时属性
|
|
16817
16829
|
}),"HQChartScriptWorker",HQChartScriptWorker),"JSPopMenu",JSPopMenu),_defineProperty(_jsChartInit$jsChartS,"JSDialogDrawTool",JSDialogDrawTool));
|