hqchart 1.1.15368 → 1.1.15382
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
|
@@ -1182,7 +1182,9 @@ for(var i=0;i<chart.Frame.SubFrame.length;++i){chart.Frame.SubFrame[i].Frame.Cha
|
|
|
1182
1182
|
//属性设置
|
|
1183
1183
|
//
|
|
1184
1184
|
this.SetPressKeyboardConfig=function(chart,option){if(!chart||!option)return;if(IFrameSplitOperator.IsBool(option.PauseUpdate))chart.PressKeyboardConfig.PauseUpdate=option.PauseUpdate;};//缺口设置 KLine:{ PriceGap:{ Enable, Count } }
|
|
1185
|
-
this.SetPriceGapConfig=function(chart,option){if(!option||!option.PriceGap)return;var klineChart=chart.ChartPaint[0];if(!klineChart)return;var item=option.PriceGap;if(IFrameSplitOperator.IsBool(item.Enable))klineChart.PriceGap.Enable=item.Enable;if(IFrameSplitOperator.IsNumber(item.Count))klineChart.PriceGap.Count=item.Count;}
|
|
1185
|
+
this.SetPriceGapConfig=function(chart,option){if(!option||!option.PriceGap)return;var klineChart=chart.ChartPaint[0];if(!klineChart)return;var item=option.PriceGap;if(IFrameSplitOperator.IsBool(item.Enable))klineChart.PriceGap.Enable=item.Enable;if(IFrameSplitOperator.IsNumber(item.Count))klineChart.PriceGap.Count=item.Count;};//设置十字光标
|
|
1186
|
+
this.SetCorssCursorConfig=function(chart,option){if(!option||!option.CorssCursorInfo)return;var item=option.CorssCursorInfo;if(IFrameSplitOperator.IsNumber(item.Left))chart.ChartCorssCursor.ShowTextMode.Left=item.Left;if(IFrameSplitOperator.IsNumber(item.Right))chart.ChartCorssCursor.ShowTextMode.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Bottom))chart.ChartCorssCursor.ShowTextMode.Bottom=item.Bottom;if(IFrameSplitOperator.IsBool(item.IsShowCorss))chart.ChartCorssCursor.IsShowCorss=item.IsShowCorss;if(IFrameSplitOperator.IsNumber(item.HPenType))chart.ChartCorssCursor.HPenType=item.HPenType;if(IFrameSplitOperator.IsNumber(item.VPenType))chart.ChartCorssCursor.VPenType=item.VPenType;if(IFrameSplitOperator.IsNumber(item.VLineType))chart.ChartCorssCursor.VLineType=item.VLineType;if(item.RightButton){if(IFrameSplitOperator.IsBool(item.RightButton.Enable))chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;}if(item.BottomButton){var subItem=item.BottomButton;if(IFrameSplitOperator.IsBool(subItem.Enable))chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;}if(IFrameSplitOperator.IsNumber(item.PriceFormatType))chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;if(IFrameSplitOperator.IsNumber(item.DataFormatType))chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;if(IFrameSplitOperator.IsBool(item.EnableKeyboard))chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;if(IFrameSplitOperator.IsBool(item.EnableDBClick))chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;if(IFrameSplitOperator.IsBool(item.IsShowCorssPoint))chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;if(item.YDecimals)//Y轴文字小数位数
|
|
1187
|
+
{var subItem=item.YDecimals;if(IFrameSplitOperator.IsNumber(subItem.Value))chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Value=subItem.Value;if(IFrameSplitOperator.IsNumber(subItem.Type))chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Type=subItem.Type;}};//历史K线图
|
|
1186
1188
|
this.CreateKLineChartContainer=function(option){var _this=this;var chart=null;if(option.Type==="历史K线图横屏")chart=new KLineChartHScreenContainer(this.CanvasElement);else chart=new KLineChartContainer(this.CanvasElement,this.OffscreenCanvasElement,this.CacheCanvasElement);chart.GetExtraCanvas=function(name){return _this.GetExtraCanvas(name);};var extraElement=this.GetExtraCanvas(JSChart.CorssCursorCanvasKey);if(extraElement)chart.SetCorssCursorElement(extraElement);if(option.EventCallback)this.SetEventCallback(chart,option.EventCallback);if(option.NetworkFilter)chart.NetworkFilter=option.NetworkFilter;var pixelRatio=GetDevicePixelRatio();//右键菜单
|
|
1187
1189
|
if(IFrameSplitOperator.IsBool(option.IsShowRightMenu))chart.IsShowRightMenu=option.IsShowRightMenu;if(option.ScriptError)chart.ScriptErrorCallback=option.ScriptError;if(option.EnableScrollUpDown==true)chart.EnableScrollUpDown=option.EnableScrollUpDown;if(option.DisableMouse==true)chart.DisableMouse=option.DisableMouse;if(option.TouchMoveMinAngle)chart.TouchMoveMinAngle=option.TouchMoveMinAngle;if(option.EnableZoomUpDown)chart.EnableZoomUpDown=option.EnableZoomUpDown;if(IFrameSplitOperator.IsString(option.SplashTitle))chart.LoadDataSplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableZoomIndexWindow))chart.EnableZoomIndexWindow=option.EnableZoomIndexWindow;if(IFrameSplitOperator.IsBool(option.IsDrawPictureXY))chart.IsDrawPictureXY=option.IsDrawPictureXY;if(IFrameSplitOperator.IsNumber(option.CtrlMoveStep))chart.CtrlMoveStep=option.CtrlMoveStep;if(IFrameSplitOperator.IsNumber(option.ShiftMoveStep))chart.ShiftMoveStep=option.ShiftMoveStep;if(IFrameSplitOperator.IsBool(option.EnableIndexChartDrag))chart.EnableIndexChartDrag=option.EnableIndexChartDrag;if(IFrameSplitOperator.IsBool(option.EnableVerifyRecvData))chart.EnableVerifyRecvData=option.EnableVerifyRecvData;if(option.GlobalOption){var item=option.GlobalOption;if(IFrameSplitOperator.IsBool(item.IsValueFullRange))chart.GlobalOption.IsValueFullRange=item.IsValueFullRange;if(IFrameSplitOperator.IsBool(item.EnableXShortDate))chart.GlobalOption.EnableXShortDate=item.EnableXShortDate;if(item.SelectedBorder){var subItem=item.SelectedBorder;if(IFrameSplitOperator.IsNumber(subItem.Mode))chart.GlobalOption.SelectedBorder.Mode=subItem.Mode;}}if(option.EnableYDrag){var item=option.EnableYDrag;if(IFrameSplitOperator.IsBool(item.Left))chart.EnableYDrag.Left=item.Left;if(IFrameSplitOperator.IsBool(item.Right))chart.EnableYDrag.Right=item.Right;if(IFrameSplitOperator.IsBool(item.Wheel))chart.EnableYDrag.Wheel=item.Wheel;if(IFrameSplitOperator.IsNumber(item.WheelYMove))chart.EnableYDrag.WheelYMove=item.WheelYMove;}if(option.EnableXDrag){var item=option.EnableXDrag;if(IFrameSplitOperator.IsBool(item.Bottom))chart.EnableXDrag.Bottom=item.Bottom;if(item.LButton&&IFrameSplitOperator.IsNumber(item.LButton.Type))chart.EnableXDrag.LButton.Type=item.LButton.Type;if(item.RButton&&IFrameSplitOperator.IsNumber(item.RButton.Type))chart.EnableXDrag.RButton.Type=item.RButton.Type;}if(option.KLineTooltip){var item=option.KLineTooltip;if(IFrameSplitOperator.IsBool(item.Enable))chart.KLineTooltipConfig.Enable=item.Enable;if(IFrameSplitOperator.IsBool(item.EnableKeyDown))chart.KLineTooltipConfig.EnableKeyDown=item.EnableKeyDown;}if(option.KLine)//k线图的属性设置
|
|
1188
1190
|
{var item=option.KLine;if(option.KLine.DragMode>=0)chart.DragMode=option.KLine.DragMode;if(option.KLine.Right>=0)chart.Right=option.KLine.Right;if(option.KLine.Period>=0)chart.Period=option.KLine.Period;if(option.KLine.MaxReqeustDataCount>0)chart.MaxRequestDataCount=option.KLine.MaxReqeustDataCount;//兼容老版本
|
|
@@ -1197,10 +1199,11 @@ if(IFrameSplitOperator.IsNonEmptyArray(option.KLineCalcOption)){for(var i=0;i<op
|
|
|
1197
1199
|
}if(option.DragKLine){var item=option.DragKLine;if(IFrameSplitOperator.IsBool(item.EnableShfit))chart.KLineDragConfig.EnableShfit=item.EnableShfit;}}//创建子窗口
|
|
1198
1200
|
chart.Create(option.Windows.length,option);this.SetChartBorder(chart,option);this.AdjustChartBorder(chart);if(option.KLine){if(option.KLine.PageSize>0)//一屏显示的数据个数
|
|
1199
1201
|
{var pageSize=chart.GetMaxMinPageSize();if(pageSize.Max>10&&pageSize.Max<option.KLine.PageSize)chart.PageSize=pageSize.Max;else if(pageSize.Min>10&&pageSize.Min>option.KLine.PageSize)chart.PageSize=pageSize.Min;else chart.PageSize=option.KLine.PageSize;}}//取消显示十字光标刻度信息
|
|
1200
|
-
if(option.IsCorssOnlyDrawKLine===true)chart.ChartCorssCursor.IsOnlyDrawKLine=option.IsCorssOnlyDrawKLine;if(option.CorssCursorTouchEnd===true)chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(option.IsClickShowCorssCursor==true)chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;
|
|
1202
|
+
if(option.IsCorssOnlyDrawKLine===true)chart.ChartCorssCursor.IsOnlyDrawKLine=option.IsCorssOnlyDrawKLine;if(option.CorssCursorTouchEnd===true)chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(option.IsClickShowCorssCursor==true)chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;this.SetCorssCursorConfig(chart,option);if(option.CorssCursorInfo)//十字光标K线上的属性设置
|
|
1203
|
+
{var item=option.CorssCursorInfo;if(IFrameSplitOperator.IsBool(item.IsShowClose))chart.ChartCorssCursor.IsShowClose=item.IsShowClose;//Y轴显示收盘价
|
|
1201
1204
|
if(IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine))chart.ChartCorssCursor.IsOnlyDrawKLine=item.IsOnlyDrawKLine;//Y轴显示收盘价
|
|
1202
1205
|
if(option.CorssCursorInfo.PressTime)chart.PressTime=option.CorssCursorInfo.PressTime;//长按显示十字光标的时间
|
|
1203
|
-
if(
|
|
1206
|
+
if(option.CorssCursorInfo.DateFormatType>0)chart.ChartCorssCursor.StringFormatX.DateFormatType=option.CorssCursorInfo.DateFormatType;if(IFrameSplitOperator.IsBool(item.IsDrawXRangeBG))chart.ChartCorssCursor.IsDrawXRangeBG=item.IsDrawXRangeBG;if(IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime))chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;if(IFrameSplitOperator.IsNumber(item.TextHeight))chart.ChartCorssCursor.TextHeight=item.TextHeight;if(item.RangeIncrease){var subItem=item.RangeIncrease;if(IFrameSplitOperator.IsBool(subItem.IsShow))chart.ChartCorssCursor.StringFormatX.RangeIncrease.IsShow=subItem.IsShow;if(IFrameSplitOperator.IsNumber(subItem.Formula))chart.ChartCorssCursor.StringFormatX.RangeIncrease.Formula=subItem.Formula;}}//保存十字光标文字高度
|
|
1204
1207
|
option.CorssCursor={};option.CorssCursor.TitleHeight=chart.ChartCorssCursor.TextHeight;if(IFrameSplitOperator.IsNumber(option.SplashTitlePosition)){if(chart.ChartSplashPaint)chart.ChartSplashPaint.Position=option.SplashTitlePosition;}if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;chart.SetSubFrameAttribute(chart.Frame.SubFrame[i],null,item);/* 窗口设置全部移动到 SetSubFrameAttribute
|
|
1205
1208
|
var subFrame=chart.Frame.SubFrame[i].Frame;
|
|
1206
1209
|
if (IFrameSplitOperator.IsNumber(item.SplitCount)) chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;
|
|
@@ -1312,8 +1315,9 @@ if(option.SelectedChart){var item=option.SelectedChart;if(IFrameSplitOperator.Is
|
|
|
1312
1315
|
}if(option.DragSelectRect){var item=option.DragSelectRect;var zindex=10;if(IFrameSplitOperator.IsNumber(item.ZIndex))zindex=item.ZIndex;if(item.Enable)this.CreateExtraCanvasElement(JSChart.RectDragCanvasKey,{ZIndex:zindex});//创建独立的区间选择画布
|
|
1313
1316
|
}}if(option.EnableYDrag){var item=option.EnableYDrag;if(IFrameSplitOperator.IsBool(item.Left))chart.EnableYDrag.Left=item.Left;if(IFrameSplitOperator.IsBool(item.Right))chart.EnableYDrag.Right=item.Right;if(IFrameSplitOperator.IsBool(item.Wheel))chart.EnableYDrag.Wheel=item.Wheel;if(IFrameSplitOperator.IsNumber(item.WheelYMove))chart.EnableYDrag.WheelYMove=item.WheelYMove;}if(option.FastSlide){var item=option.FastSlide;if(IFrameSplitOperator.IsNumber(item.MinDistance))chart.FastSlideConfig.MinDistance=item.MinDistance;if(IFrameSplitOperator.IsNumber(item.MinSpeed))chart.FastSlideConfig.MinSpeed=item.MinSpeed;if(IFrameSplitOperator.IsNumber(item.MaxTime))chart.FastSlideConfig.MaxTime=item.MaxTime;if(IFrameSplitOperator.IsBool(item.Enable))chart.FastSlideConfig.Enable=item.Enable;}//分页
|
|
1314
1317
|
if(option.PageInfo)chart.SetPageInfo(option.PageInfo);chart.Create(windowsCount,option);//创建子窗口
|
|
1315
|
-
|
|
1316
|
-
|
|
1318
|
+
this.SetCorssCursorConfig(chart,option);if(option.CorssCursorInfo)//分时图十字光标属性设置
|
|
1319
|
+
{var item=option.CorssCursorInfo;if(option.CorssCursorInfo.RightTextFormat>0)chart.ChartCorssCursor.TextFormat.Right=option.CorssCursorInfo.RightTextFormat;if(option.CorssCursorInfo.IsOnlyDrawMinute==true)chart.ChartCorssCursor.IsOnlyDrawMinute=option.CorssCursorInfo.IsOnlyDrawMinute;//Y轴显示收盘价
|
|
1320
|
+
if(IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime))chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;if(item.TextStyle){if(item.TextStyle.Right)//右侧输出样式
|
|
1317
1321
|
{var subItem=item.TextStyle.Right;if(IFrameSplitOperator.IsNumber(subItem.Type))chart.ChartCorssCursor.StringFormatY.TextStyleConfig.Right.Type=subItem.Type;}}}if(option.MinuteInfo)chart.CreateMinuteInfo(option.MinuteInfo);if(IFrameSplitOperator.IsBool(option.IsShowRightMenu))chart.IsShowRightMenu=option.IsShowRightMenu;if(IFrameSplitOperator.IsNumber(option.DayCount))chart.DayCount=option.DayCount;this.SetChartBorder(chart,option);if(option.SplashTitle)chart.ChartSplashPaint.SplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableBorderDrag)){chart.EnableBorderDrag=option.EnableBorderDrag;}if(IFrameSplitOperator.IsBool(option.EnableBuySellBar)){var barChart=chart.GetChartMinuteBuySellBar();if(barChart)barChart.IsShow=option.EnableBuySellBar;}this.AdjustChartBorder(chart);if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;chart.SetSubFrameAttribute(chart.Frame.SubFrame[i],null,item);/*
|
|
1318
1322
|
var subFrame=chart.Frame.SubFrame[i].Frame;
|
|
1319
1323
|
|
|
@@ -2199,8 +2203,9 @@ this.KLineIncreaseCustomHorizontal=function(){if(!this.Frame||!this.Frame.SubFra
|
|
|
2199
2203
|
if(frame.YSplitOperator&&frame.YSplitOperator.CoordinateType==1)isPercentage=true;var isOverlayCoordinate=false;//是否包含叠加股票刻度
|
|
2200
2204
|
for(var i=0;i<frame.CustomHorizontalInfo.length;++i){var info=frame.CustomHorizontalInfo[i];if(info.Type==4)isOverlayCoordinate=true;if(isPercentage&&info.Type==3||info.Type==2){var item=this.ChartPaint[0];if(!item)continue;var data=item.Data;if(!data||!IFrameSplitOperator.IsNonEmptyArray(data.Data))continue;if(!IFrameSplitOperator.IsNumber(item.DrawKRange.Start)||!IFrameSplitOperator.IsNumber(item.DrawKRange.End))continue;var startKLine=data.Data[item.DrawKRange.Start];var endKLine=data.Data[item.DrawKRange.End];var value=(endKLine.Close-startKLine.Close)/startKLine.Close*100;info.Value=endKLine.Close;if(info.Type==2){info.Message[1]=endKLine.Close.toFixed(defaultfloatPrecision);if(endKLine.Close>endKLine.Open)info.LineColor=g_JSChartResource.FrameLatestPrice.UpBarColor;else if(endKLine.Close<endKLine.Open)info.LineColor=g_JSChartResource.FrameLatestPrice.DownBarColor;else info.LineColor=g_JSChartResource.FrameLatestPrice.UnchagneBarColor;}else{info.Message[1]=value.toFixed(2)+"%";}if(this.Name)info.Title=this.Name;}}if(isOverlayCoordinate){//叠加股票自定义刻度需要移除重新添加
|
|
2201
2205
|
var newCustomHorizontalInfo=frame.CustomHorizontalInfo.filter(function(value,index,ary){return value.Type!=4;});frame.CustomHorizontalInfo=newCustomHorizontalInfo;}//叠加股票右侧名称+涨幅
|
|
2202
|
-
for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item)continue;if(item.
|
|
2203
|
-
|
|
2206
|
+
for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item)continue;if(item.YInfoConfig.Type===0)continue;var data=item.Data;if(!data||!IFrameSplitOperator.IsNonEmptyArray(data.Data))continue;if(!IFrameSplitOperator.IsNumber(item.DrawKRange.Start)||!IFrameSplitOperator.IsNumber(item.DrawKRange.End))continue;var startKLine=null;for(var j=item.DrawKRange.Start;j<=item.DrawKRange.End;++j){var kItem=data.Data[j];if(IFrameSplitOperator.IsNumber(kItem.Close)){startKLine=kItem;break;}}if(!startKLine)continue;var endKLine=data.Data[item.DrawKRange.End];var value=(endKLine.Close-startKLine.Close)/startKLine.Close*100;var text="";if(item.YInfoConfig.Type===3){var dec=GetfloatPrecision(item.Symbol);//小数位数
|
|
2207
|
+
text=endKLine.Close.toFixed(dec);}else if(item.YInfoConfig.Type===4){text=value.toFixed(2)+"%";}else{continue;}var info=new CoordinateInfo();info.Value=endKLine.Close/item.ShowRange.FirstOverlayOpen*item.ShowRange.FirstOpen;info.Message[1]=text;info.LineType=-1;info.Type=4;//叠加股票
|
|
2208
|
+
info.LineColor=item.Color;info.TextColor=g_JSChartResource.FrameLatestPrice.OverlayTextColor;if(item.Title&&item.YInfoConfig.IsShowName)info.Title=item.Title;frame.CustomHorizontalInfo.push(info);}};this.OffscreenToShowCanvas=function(){if(!this.ShowCanvas)return;this.ShowCanvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);this.ShowCanvas.drawImage(this.OffscreenCanvasElement,0,0);};this.GetDrawStatus=function(){var status={Point:{X:this.LastPoint.X,Y:this.LastPoint.Y},IsOnTouch:this.IsOnTouch,CorssCursorTouchEnd:this.CorssCursorTouchEnd,IsTitleShowLatestData:this.IsTitleShowLatestData,IsMinuteChart:this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer"?true:false,DrawStatusData:this.DrawStatusData};status.FrameID=this.Frame.PtInFrame(this.LastPoint.X,this.LastPoint.Y);return status;};this.InvokeBeforeDrawSplashScreenCallback=function(){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_BEFORE_DRAW_SPLASH_SCREEN);if(!event||!event.Callback)return null;var data={PreventDefault:false};event.Callback(event,data,this);return data;};this.DrawSplashScreen=function(option){var data=this.InvokeBeforeDrawSplashScreenCallback();if(data&&data.PreventDefault===true)return;if(this.Frame.ScreenImageData==null&&!this.CacheCanvas)return;if(this.Frame.ScreenImageData){this.Canvas.putImageData(this.Frame.ScreenImageData,0,0);}else if(this.CacheCanvas){this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);this.Canvas.drawImage(this.CacheElement,0,0);}var bgColor=g_JSChartResource.SplashScreen.BGColor;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(0,0,this.UIElement.width,this.UIElement.height);if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){var title=g_JSChartResource.SplashScreen.Title;if(option&&option.Title)title=option.Title;this.ChartSplashPaint.SetTitle(title);this.ChartSplashPaint.Draw();}};//十字光标坐标
|
|
2204
2209
|
this.GetCorssCursorPosition=function(){var position={LastPoint:{X:this.LastPoint.X,Y:this.LastPoint.Y},CursorIndex:this.CursorIndex};return position;};this.IsLockCorssCursor=function(){if(!this.GlobalOption||!this.GlobalOption.LockCorssCursor)return false;return this.GlobalOption.LockCorssCursor.X.Enable;};//画动态信息
|
|
2205
2210
|
this.DrawDynamicInfo=function(option){this.LastMouseStatus.MouseOnToolbar=null;//鼠标在工具栏按钮上
|
|
2206
2211
|
if(this.ChartCorssCursor)this.ChartCorssCursor.Status=0;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_BEFORE_DRAW_DYNAMIC_INFO);if(event&&event.Callback){var sendData={};event.Callback(event,sendData,this);}if(this.Frame.ScreenImageData==null&&!this.CacheCanvas)return;var isErase=false;if(this.ChartCorssCursor){if(this.ChartCorssCursor.PointX!=null||this.ChartCorssCursor.PointY!=null)isErase=true;}isErase=true;//每次都擦除背景
|
|
@@ -3861,7 +3866,7 @@ else valueType=3;//百分比
|
|
|
3861
3866
|
{var kItem=this.Data.Data[i];if(IFrameSplitOperator.IsNumber(kItem.Close))value=kItem.Close;}else if(valueType==3){var minItem=this.Data.Data[i];var mainItem=this.MainData.Data[i];if(!minItem||!IFrameSplitOperator.IsNumber(minItem.Close)||!IFrameSplitOperator.IsNumber(minItem.YClose))continue;if(!mainItem||!IFrameSplitOperator.IsNumber(mainItem.Close)||!IFrameSplitOperator.IsNumber(mainItem.YClose))continue;var price=minItem.Close;var value=price/minItem.YClose*mainItem.YClose;}else{value=this.Data.Data[i];}if(value==null)continue;if(isMinute){var xLine=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var xLine=left+(right-left)/2;}var yLine=this.GetYFromData(value,false);if(xLine<x){ptStart.X=xLine;ptStart.Y=yLine;}else if(xLine==x){ptStart.X=ptEnd.X=xLine;ptStart.Y=ptEnd.Y=yLine;break;}else{ptEnd.X=xLine;ptEnd.Y=yLine;break;}if(x>chartright)break;}if(!IFrameSplitOperator.IsNumber(ptStart.X)||!IFrameSplitOperator.IsNumber(ptStart.Y))return null;if(!IFrameSplitOperator.IsNumber(ptEnd.X)||!IFrameSplitOperator.IsNumber(ptEnd.Y))return null;if(x==ptStart.X&&y==ptStart.Y)return{Identify:this.Identify,Chart:this};if(x==ptEnd.X&&y==ptEnd.Y)return{Identify:this.Identify,Chart:this};var lineWidth=5;this.Canvas.beginPath();if(ptStart.X==ptEnd.X)//竖线
|
|
3862
3867
|
{this.Canvas.moveTo(ptStart.X-lineWidth,ptStart.Y);this.Canvas.lineTo(ptStart.X+lineWidth,ptStart.Y);this.Canvas.lineTo(ptEnd.X+lineWidth,ptEnd.Y);this.Canvas.lineTo(ptEnd.X-lineWidth,ptEnd.Y);}else{this.Canvas.moveTo(ptStart.X,ptStart.Y+lineWidth);this.Canvas.lineTo(ptStart.X,ptStart.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y+lineWidth);}this.Canvas.closePath();if(this.Canvas.isPointInPath(x,y))return{Identify:this.Identify,Chart:this};return null;};//option={ BarWidth:柱子宽度(空为K线宽度) }
|
|
3863
3868
|
this.PtInBar=function(x,y,option){if(!this.IsShow||this.ChartFrame.IsMinSize)return null;var bHScreen=this.ChartFrame.IsHScreen===true;if(bHScreen)return null;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Left;if(x<xOffset||x>chartright)return null;if(y>border.BottomEx||y<border.TopEx)return null;var isMinute=this.IsMinuteFrame();var yBottom=this.ChartFrame.GetYFromData(0);var barWidth=null;var isMinuteVolBar=false;var isStackedBar=false;var volUnit=1;//成交量单位
|
|
3864
|
-
if(option){if(option.BarWidth>0)barWidth=option.BarWidth;if(option.MinuteVolBar==true){isMinuteVolBar=true;barWidth=4;}else if(option.StackedBar==true){isStackedBar=true;}if(IFrameSplitOperator.IsNumber(option.VolUnit))volUnit=option.VolUnit;}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 xLine=this.ChartFrame.GetXFromIndex(j);var left=xLine-barWidth/2;var right=left+barWidth;}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;}if(isMinuteVolBar){if(!IFrameSplitOperator.IsNumber(value.Vol))continue;var yBar=this.ChartFrame.GetYFromData(value.Vol/volUnit);var barTop=yBar,barBottom=yBottom;}else if(isStackedBar){var maxValue=0,minValue=0;if(!IFrameSplitOperator.IsNonEmptyArray(value))continue;for(var k=0;k<value.length;++k){var barValue=value[k];if(!IFrameSplitOperator.IsNumber(barValue))continue;if(barValue==0)continue;if(barValue>0)maxValue+=barValue;else if(barValue<0)minValue+=barValue;}var barTop=this.ChartFrame.GetYFromData(maxValue);var barBottom=this.ChartFrame.GetYFromData(minValue);}else{var yBar=this.ChartFrame.GetYFromData(value);var barTop=yBar,barBottom=yBottom;}if(barTop>barBottom){barTop=yBottom;barBottom=yBar;}var barLeft=left,barRight=right;if(barWidth>0){barLeft=left+(right-left)/2-barWidth/2;barRight=barLeft+barWidth;}if(x>=barLeft&&x<=barRight&&y>=barTop&&y<=barBottom)return{Identify:this.Identify,Chart:this};if(right>x)break;}return null;};this.PtInKBar=function(x,y,option){if(!this.IsShow||this.ChartFrame.IsMinSize)return null;var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen)return null;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;chartright=border.BottomEx;}if(x<xOffset||x>chartright)return null;if(y>border.BottomEx||y<border.TopEx)return null;var firstOverlayOpen=null;var kBarType=0;var firstOpen=null;if(option&&option.OverlayKLine){kBarType=1;//叠加K线
|
|
3869
|
+
if(option){if(option.BarWidth>0)barWidth=option.BarWidth;if(option.MinuteVolBar==true){isMinuteVolBar=true;barWidth=4;}else if(option.StackedBar==true){isStackedBar=true;}if(IFrameSplitOperator.IsNumber(option.VolUnit))volUnit=option.VolUnit;}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 xLine=this.ChartFrame.GetXFromIndex(j);var left=xLine-barWidth/2;var right=left+barWidth;}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;}if(isMinuteVolBar){if(!IFrameSplitOperator.IsNumber(value.Vol))continue;var yBar=this.ChartFrame.GetYFromData(value.Vol/volUnit);var barTop=yBar,barBottom=yBottom;}else if(isStackedBar){var maxValue=0,minValue=0;if(!IFrameSplitOperator.IsNonEmptyArray(value))continue;for(var k=0;k<value.length;++k){var barValue=value[k];if(!IFrameSplitOperator.IsNumber(barValue))continue;if(barValue==0)continue;if(barValue>0)maxValue+=barValue;else if(barValue<0)minValue+=barValue;}var barTop=this.ChartFrame.GetYFromData(maxValue);var barBottom=this.ChartFrame.GetYFromData(minValue);}else{var yBar=this.ChartFrame.GetYFromData(value);var barTop=yBar,barBottom=yBottom;}if(barTop>barBottom){barTop=yBottom;barBottom=yBar;}var barLeft=left,barRight=right;if(barWidth>0){barLeft=left+(right-left)/2-barWidth/2;barRight=barLeft+barWidth;}if(x>=barLeft&&x<=barRight&&y>=barTop&&y<=barBottom)return{Identify:this.Identify,Chart:this};if(right>x)break;}return null;};this.PtInKBar=function(x,y,option){if(!this.IsShow||this.ChartFrame.IsMinSize)return null;var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen)return null;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return null;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;chartright=border.BottomEx;}if(x<xOffset||x>chartright)return null;if(y>border.BottomEx||y<border.TopEx)return null;var firstOverlayOpen=null;var kBarType=0;var firstOpen=null;if(option&&option.OverlayKLine){kBarType=1;//叠加K线
|
|
3865
3870
|
firstOpen=this.GetFirstOpen();}for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var data=this.Data.Data[i];if(!data||data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;if(firstOverlayOpen==null)firstOverlayOpen=data.Open;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;if(x>=left&&x<=right){if(kBarType==1){var yLow=this.GetYFromData(data.Low/firstOverlayOpen*firstOpen,false);var yHigh=this.GetYFromData(data.High/firstOverlayOpen*firstOpen,false);}else{var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);}if(y<=yLow&&y>=yHigh)return{Identify:this.Identify,Chart:this};}if(right>x)break;}};this.IsShowIndexTitleOnly=function(){if(this.ChartFrame&&this.ChartFrame.ChartBorder&&this.ChartFrame.ChartBorder.IsShowTitleOnly)return true;return false;};//是否隐藏指标
|
|
3866
3871
|
this.IsHideScriptIndex=function(){if(this.Script&&this.Script.IsShow==false)return true;return false;};//导出单数组数据
|
|
3867
3872
|
this.ExportArrayData=function(aryKData,option){var data=this.Data.ExportArrayData(aryKData,option);return[{Name:this.Name,Data:data}];};this.ExportBoolData=function(aryKData,option){var data=this.Data.ExportBoolData(aryKData,option);return[{Name:this.Name,Data:data}];};//获取单数组的数据某一个数据 indexData={ Index:数据索引 }
|
|
@@ -4322,7 +4327,8 @@ this.Title;this.DrawType=0;this.CustomDrawType=null;//图形类型
|
|
|
4322
4327
|
this.Status=OVERLAY_STATUS_ID.STATUS_NONE_ID;this.IsDelete=false;//是否已经删除
|
|
4323
4328
|
this.CloseLineWidth=g_JSChartResource.CloseLineWidth;this.ShowRange={};//K线显示范围 { Start:, End:, DataCount:, ShowCount: }
|
|
4324
4329
|
this.DrawKRange={Start:null,End:null};//当前屏K线的索引{ Start: , End:}
|
|
4325
|
-
this.
|
|
4330
|
+
this.YInfoConfig={Type:0,IsShowName:false//右侧Y轴自定刻度设置 0不显示 3=名字|最新价 4=名字|涨幅
|
|
4331
|
+
};this.SetOption=function(option){if(!option)return;if(IFrameSplitOperator.IsNumber(option.DrawType))this.CustomDrawType=option.DrawType;if(IFrameSplitOperator.IsNumber(option.YInfoType))this.YInfoConfig.Type=option.YInfoType;if(option.YInfo){var item=option.YInfo;if(IFrameSplitOperator.IsNumber(item.Type))this.YInfoConfig.Type=item.Type;if(IFrameSplitOperator.IsBool(item.IsShowName))this.YInfoConfig.IsShowName=item.IsShowName;}};this.DrawKBar=function(firstOpen)//firstOpen 当前屏第1个显示数据
|
|
4326
4332
|
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+2.0;if(isHScreen)xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+2.0;var chartright=this.ChartBorder.GetRight();if(isHScreen)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;var drawType=this.DrawType;if(this.CustomDrawType!=null)drawType=this.CustomDrawType;var isFristDraw=true;var firstOverlayOpen=null;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.ShowRange.FirstOpen=firstOpen;this.DrawKRange.Start=this.Data.DataOffset;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];if(!data||data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;if(firstOverlayOpen==null){firstOverlayOpen=data.Open;this.ShowRange.FirstOverlayOpen=data.Open;}if(isFristDraw){this.Canvas.strokeStyle=this.Color;this.Canvas.fillStyle=this.Color;this.Canvas.beginPath();isFristDraw=false;}var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low/firstOverlayOpen*firstOpen,false);var yHigh=this.GetYFromData(data.High/firstOverlayOpen*firstOpen,false);var yOpen=this.GetYFromData(data.Open/firstOverlayOpen*firstOpen,false);var yClose=this.GetYFromData(data.Close/firstOverlayOpen*firstOpen,false);var y=yHigh;this.DrawKRange.End=i;if(data.Open<data.Close)//阳线
|
|
4327
4333
|
{if(dataWidth>=4){if(data.High>data.Close)//上影线
|
|
4328
4334
|
{if(isHScreen){this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(this.DrawType==3?Math.max(yClose,yOpen):yClose),ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(this.DrawType==3?Math.min(yClose,yOpen):yClose));}y=yClose;}else{y=yClose;}if(isHScreen){if(Math.abs(yOpen-y)<1){this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),1,ToFixedRect(dataWidth));//高度小于1,统一使用高度1
|
|
@@ -6298,18 +6304,20 @@ this.Point;this.ClientPos=-1;this.HQChart;this.TextStyleConfig={Right:{Type:-1}}
|
|
|
6298
6304
|
this.TextStyleTemplate=[null,null];this.ExtendChartPaint;this.RExtendText=[];this.BeforeOpenData;this.AfterCloseData;this.MultiDayBeforeOpenData;this.MultiDayAfterCloseData;this.ShareAfterVol=0;//1=主图共享 2=盘前共享
|
|
6299
6305
|
this.PriceFormatType=0;//主窗口格式 0=默认 1=科学计数
|
|
6300
6306
|
this.DataFormatType=0;//副图指标格式 0=默认 1=科学计数
|
|
6307
|
+
this.DecimalsConfig={Value:2,Type:0};//小数设置, Value:小数位数 , Type: 0=默认 1=跟指标标题一致
|
|
6301
6308
|
this.GetEventCallback;//盘前集合竞价
|
|
6302
6309
|
this.GetBeforeOpen=function(){if(!this.Frame)return false;var item=this.Frame.SubFrame[this.FrameID];if(!item||!item.Frame)return false;if(!this.BeforeOpenData)return false;var range={Max:this.BeforeOpenData.VolMax,Min:this.BeforeOpenData.VolMin};var y=this.Frame.IsHScreen?this.Point.X:this.Point.Y;var value=item.Frame.GetLeftExtendYData(y,false,{Range:range});var defaultfloatPrecision=2;//价格小数位数
|
|
6303
6310
|
if(IFrameSplitOperator.IsNumber(value)){this.RText=this.Text=IFrameSplitOperator.FormatValueString(value,defaultfloatPrecision,this.LanguageID);}};//收盘集合竞价
|
|
6304
6311
|
this.GetAfterClose=function(){if(!this.Frame)return false;var item=this.Frame.SubFrame[this.FrameID];if(!item||!item.Frame)return false;if(!this.AfterCloseData)return false;var range={Max:this.AfterCloseData.VolMax,Min:this.AfterCloseData.VolMin};var y=this.Frame.IsHScreen?this.Point.X:this.Point.Y;var value=item.Frame.GetRightExtendYData(y,false,{Range:range});var defaultfloatPrecision=2;//价格小数位数
|
|
6305
6312
|
if(IFrameSplitOperator.IsNumber(value)){this.RText=this.Text=IFrameSplitOperator.FormatValueString(value,defaultfloatPrecision,this.LanguageID);}};this.GetMultiDayBeforeOpen=function(){if(!this.Frame)return false;var item=this.Frame.SubFrame[this.FrameID];if(!item||!item.Frame)return false;var multiDayBeforeOpenData=this.GetMultiDayBeforeOpenData();if(!multiDayBeforeOpenData||!IFrameSplitOperator.IsNonEmptyArray(multiDayBeforeOpenData))return;var dayIndex=this.ClientPos-200;if(dayIndex<0||dayIndex>=multiDayBeforeOpenData.length)return false;var dayData=multiDayBeforeOpenData[dayIndex];var range={Max:dayData.VolMax,Min:dayData.VolMin};var y=this.Frame.IsHScreen?this.Point.X:this.Point.Y;var value=item.Frame.GetLeftExtendYData(y,false,{Range:range});var defaultfloatPrecision=2;//价格小数位数
|
|
6306
6313
|
if(IFrameSplitOperator.IsNumber(value)){this.RText=this.Text=IFrameSplitOperator.FormatValueString(value,defaultfloatPrecision,this.LanguageID);}};this.GetMultiDayAfterClose=function(){if(!this.Frame)return false;var item=this.Frame.SubFrame[this.FrameID];if(!item||!item.Frame)return false;var multiDayAfterCloseData=this.GetMultiDayAfterCloseData();if(!multiDayAfterCloseData||!IFrameSplitOperator.IsNonEmptyArray(multiDayAfterCloseData))return;var dayIndex=this.ClientPos-300;if(dayIndex<0||dayIndex>=multiDayAfterCloseData.length)return false;var dayData=multiDayAfterCloseData[dayIndex];var range={Max:dayData.VolMax,Min:dayData.VolMin};var y=this.Frame.IsHScreen?this.Point.X:this.Point.Y;var value=item.Frame.GetRightExtendYData(y,false,{Range:range});var defaultfloatPrecision=2;//价格小数位数
|
|
6307
|
-
if(IFrameSplitOperator.IsNumber(value)){this.RText=this.Text=IFrameSplitOperator.FormatValueString(value,defaultfloatPrecision,this.LanguageID);}};this.GetTextStyleTemplate=function(type,defaultTemplate){var template=this.TextStyleTemplate[type];if(!template)return defaultTemplate;return CloneData(template);};this.Operator=function(){this.RText=null;this.RComplexText=null;this.RExtendText=[];if(IFrameSplitOperator.IsString(this.RValue))this.RText=this.RValue;if(!this.Value)return false;this.PercentageText=null;var defaultfloatPrecision=
|
|
6314
|
+
if(IFrameSplitOperator.IsNumber(value)){this.RText=this.Text=IFrameSplitOperator.FormatValueString(value,defaultfloatPrecision,this.LanguageID);}};this.GetTextStyleTemplate=function(type,defaultTemplate){var template=this.TextStyleTemplate[type];if(!template)return defaultTemplate;return CloneData(template);};this.Operator=function(){this.RText=null;this.RComplexText=null;this.RExtendText=[];if(IFrameSplitOperator.IsString(this.RValue))this.RText=this.RValue;if(!this.Value)return false;this.PercentageText=null;var defaultfloatPrecision=this.DecimalsConfig.Value;//价格小数位数
|
|
6308
6315
|
if(this.FrameID==0)//第1个窗口显示原始价格
|
|
6309
6316
|
{var defaultfloatPrecision=GetfloatPrecision(this.Symbol);if(this.PriceFormatType==1)this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);else this.Text=this.Value.toFixed(defaultfloatPrecision);if(this.TextStyleConfig.Right.Type==2){if(IFrameSplitOperator.IsNumber(this.YClose)){var value=(this.Value-this.YClose)*100/this.YClose;var text=value.toFixed(2)+'%';if(value>=0)text=' '+value.toFixed(2)+'%';var defaultTemplate={ShowType:1,Space:2,BaseLine:"center",Text:[{Text:null,TextAlign:"center",Margin:{Left:2,Right:2}},{Text:null,TextAlign:"center",Margin:{Left:2,Right:2}}]};var complexText=this.GetTextStyleTemplate(this.TextStyleConfig.Right.Type,defaultTemplate);complexText.Text[0].Text=this.Text;//价格
|
|
6310
6317
|
complexText.Text[1].Text=text;//百分比
|
|
6311
6318
|
this.RComplexText=complexText;}}else if(this.TextStyleConfig.Right.Type==1){}else{if(IFrameSplitOperator.IsNumber(this.YClose))this.PercentageText=((this.Value-this.YClose)*100/this.YClose).toFixed(2);//走势图右边坐标显示百分比
|
|
6312
|
-
}this.GetExtendPaintData(defaultfloatPrecision);}else if(this.FrameID==1){if(this.DataFormatType==1){this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);}else{this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);}if(this.ClientPos==2){this.GetBeforeOpen();}else if(this.ClientPos==3){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetAfterClose();}else if(this.ClientPos>=200&&this.ClientPos<=299){this.GetMultiDayBeforeOpen();}else if(this.ClientPos>=300&&this.ClientPos<=399){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetMultiDayAfterClose();}}else{if(this.DataFormatType==1)this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);var bCallAuction=false;if(this.HQChart&&this.HQChart.IsCallAuctionFrame)bCallAuction=this.HQChart.IsCallAuctionFrame(this.FrameID);if(bCallAuction){if(this.ClientPos==2){this.GetBeforeOpen();}else if(this.ClientPos==3){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetAfterClose();}else if(this.ClientPos>=200&&this.ClientPos<=299){this.GetMultiDayBeforeOpen();}else if(this.ClientPos>=300&&this.ClientPos<=399){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetMultiDayAfterClose();}}}if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_CORSSCURSOR_Y_TEXT);if(event){var data={Value:this.Value,FrameID:this.FrameID,PreventDefault:false};event.Callback(event,data,this);if(data.PreventDefault==true)return false;}}return true;}
|
|
6319
|
+
}this.GetExtendPaintData(defaultfloatPrecision);}else if(this.FrameID==1){defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);if(this.DataFormatType==1){this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);}else{this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);}if(this.ClientPos==2){this.GetBeforeOpen();}else if(this.ClientPos==3){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetAfterClose();}else if(this.ClientPos>=200&&this.ClientPos<=299){this.GetMultiDayBeforeOpen();}else if(this.ClientPos>=300&&this.ClientPos<=399){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetMultiDayAfterClose();}}else{defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);if(this.DataFormatType==1)this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);var bCallAuction=false;if(this.HQChart&&this.HQChart.IsCallAuctionFrame)bCallAuction=this.HQChart.IsCallAuctionFrame(this.FrameID);if(bCallAuction){if(this.ClientPos==2){this.GetBeforeOpen();}else if(this.ClientPos==3){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetAfterClose();}else if(this.ClientPos>=200&&this.ClientPos<=299){this.GetMultiDayBeforeOpen();}else if(this.ClientPos>=300&&this.ClientPos<=399){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetMultiDayAfterClose();}}}if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_CORSSCURSOR_Y_TEXT);if(event){var data={Value:this.Value,FrameID:this.FrameID,PreventDefault:false};event.Callback(event,data,this);if(data.PreventDefault==true)return false;}}return true;};//获取指标标题小数位数
|
|
6320
|
+
this.GetIndexTitleFloatPrecision=function(frameID){var dec=this.DecimalsConfig.Value;if(this.DecimalsConfig.Type===0)return dec;if(frameID<0)return dec;if(!this.HQChart)return dec;if(!IFrameSplitOperator.IsNonEmptyArray(this.HQChart.WindowIndex))return dec;var item=this.HQChart.WindowIndex[frameID];if(!item)return dec;if(IFrameSplitOperator.IsNumber(item.FloatPrecision))dec=item.FloatPrecision;return dec;};//深度图刻度
|
|
6313
6321
|
this.GetExtendPaintData=function(floatPrecision){var value=parseInt(this.Value*ZOOM_VALUE[floatPrecision]);for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];if(item.ClassName=='DepthMapPaint'&&item.FrameID==this.FrameID){var aryData=item.GetYValueByXValue(value,floatPrecision);for(var j in aryData){this.RExtendText.push(aryData[j]);}}}};}function HQDateStringFormat(){this.newMethod=IChangeStringFormat;//派生
|
|
6314
6322
|
this.newMethod();delete this.newMethod;this.DateFormatType=0;//0=YYYY-MM-DD 1=YYYY/MM/DD 2=YYYY/MM/DD/W 3=DD/MM/YYYY
|
|
6315
6323
|
this.LanguageID=0;this.KItem=null;//缓存当前的K线
|
|
@@ -8648,7 +8656,7 @@ this.OverlaySymbol=function(symbol,option){for(var i in this.OverlayChartPaint){
|
|
|
8648
8656
|
this.OverlayChartPaint.push(paint);if(ChartData.IsDayPeriod(this.Period,true))this.RequestOverlayHistoryData();//请求日线数据
|
|
8649
8657
|
else if(ChartData.IsMinutePeriod(this.Period,true))this.RequestOverlayHistoryMinuteData();//请求分钟历史数据
|
|
8650
8658
|
return true;};this.RequestSingleOverlayHistoryData=function(symbol,dataCount,firstDate,item){var self=this;item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(this.NetworkFilter){var obj={Name:'KLineChartContainer::RequestOverlayHistoryData',//类名::
|
|
8651
|
-
Explain:'叠加股票日K线数据',Request:{Url:self.KLineApiUrl,Data:{symbol:symbol,count:dataCount.MaxRequestDataCount,
|
|
8659
|
+
Explain:'叠加股票日K线数据',Request:{Url:self.KLineApiUrl,Data:{symbol:symbol,period:this.Period,count:dataCount.MaxRequestDataCount,first:{date:firstDate},Main:{Symbol:this.Symbol,Period:this.Period,Right:this.Right}}},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOverlayHistoryData(data,item);});if(obj.PreventDefault==true)return;//已被上层替换,不调用默认的网络请求
|
|
8652
8660
|
}};this.RequestOverlayHistoryData=function(){if(!this.OverlayChartPaint.length)return;if(!this.SourceData||!this.SourceData.Data)return;//主图数据还没有到完
|
|
8653
8661
|
var self=this;var dataCount=this.GetRequestDataCount();var firstDate=this.SourceData.Data[0].Date;for(var i=0;i<this.OverlayChartPaint.length;++i){var _item4=this.OverlayChartPaint[i];if(!_item4.MainData)continue;//等待主图股票数据未下载完
|
|
8654
8662
|
if(_item4.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;var symbol=_item4.Symbol;if(!symbol)continue;this.RequestSingleOverlayHistoryData(symbol,dataCount,firstDate,_item4);}};this.RecvOverlayHistoryData=function(data,paint){if(paint.IsDelete)return;var aryDayData=KLineChartContainer.JsonDataToHistoryData(data);//原始叠加数据
|
|
@@ -8659,7 +8667,7 @@ bindData.Data=aryOverlayData;if(ChartData.IsDayPeriod(bindData.Period,false)&&!t
|
|
|
8659
8667
|
this.UpdataDataoffset();//更新数据偏移
|
|
8660
8668
|
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
8661
8669
|
this.Frame.SetSizeChage(true);this.Draw();};this.RequestSingleHistoryMinuteData=function(symbol,dataCount,firstDate,firstTime,item){var self=this;item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(this.NetworkFilter){var obj={Name:'KLineChartContainer::RequestOverlayHistoryMinuteData',//类名::
|
|
8662
|
-
Explain:'叠加股票分钟K线数据',Request:{Url:self.MinuteKLineApiUrl,Data:{symbol:symbol,count:dataCount.MaxRequestMinuteDayCount,
|
|
8670
|
+
Explain:'叠加股票分钟K线数据',Request:{Url:self.MinuteKLineApiUrl,Data:{symbol:symbol,period:this.Period,count:dataCount.MaxRequestMinuteDayCount,first:{date:firstDate,time:firstTime},Main:{Symbol:this.Symbol,Period:this.Period,Right:this.Right}}},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOveralyHistoryMinuteData(data,item);});if(obj.PreventDefault==true)return;//已被上层替换,不调用默认的网络请求
|
|
8663
8671
|
}};this.RequestOverlayHistoryMinuteData=function(){if(!this.OverlayChartPaint.length)return;if(!this.SourceData||!this.SourceData.Data)return;//主图数据还没有到完
|
|
8664
8672
|
var self=this;var dataCount=this.GetRequestDataCount();var firstDate=this.SourceData.Data[0].Date;var firstTime=this.SourceData.Data[0].Time;for(var i=0;i<this.OverlayChartPaint.length;++i){var _item5=this.OverlayChartPaint[i];if(!_item5.MainData)continue;//等待主图股票数据未下载完
|
|
8665
8673
|
if(_item5.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;var symbol=_item5.Symbol;if(!symbol)continue;this.RequestSingleHistoryMinuteData(symbol,dataCount,firstDate,firstTime,_item5);}};this.RecvOveralyHistoryMinuteData=function(data,paint){if(this.EnableVerifyRecvData&&data.symbol!=paint.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvOveralyHistoryMinuteData] recv data symbol not match. paint['+paint.Symbol+'] , Recv['+data.symbol+']');return;}var aryDayData=KLineChartContainer.JsonDataToMinuteHistoryData(data);if(!aryDayData)return;//原始叠加数据
|
|
@@ -15777,7 +15785,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
15777
15785
|
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);};}/********************************************************************************
|
|
15778
15786
|
* 版本信息输出
|
|
15779
15787
|
*
|
|
15780
|
-
*/var HQCHART_VERSION="1.1.
|
|
15788
|
+
*/var HQCHART_VERSION="1.1.15381";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();//把给外界调用的方法暴露出来
|
|
15781
15789
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
15782
15790
|
// BaseIndex:BaseIndex,
|
|
15783
15791
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -283,6 +283,49 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
283
283
|
if (IFrameSplitOperator.IsNumber(item.Count)) klineChart.PriceGap.Count=item.Count;
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
+
//设置十字光标
|
|
287
|
+
this.SetCorssCursorConfig=function(chart, option)
|
|
288
|
+
{
|
|
289
|
+
if (!option || !option.CorssCursorInfo) return;
|
|
290
|
+
|
|
291
|
+
var item=option.CorssCursorInfo;
|
|
292
|
+
if (IFrameSplitOperator.IsNumber(item.Left)) chart.ChartCorssCursor.ShowTextMode.Left=item.Left;
|
|
293
|
+
if (IFrameSplitOperator.IsNumber(item.Right)) chart.ChartCorssCursor.ShowTextMode.Right=item.Right;
|
|
294
|
+
if (IFrameSplitOperator.IsNumber(item.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=item.Bottom;
|
|
295
|
+
|
|
296
|
+
if (IFrameSplitOperator.IsBool(item.IsShowCorss)) chart.ChartCorssCursor.IsShowCorss=item.IsShowCorss;
|
|
297
|
+
|
|
298
|
+
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
299
|
+
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
300
|
+
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
301
|
+
|
|
302
|
+
if (item.RightButton)
|
|
303
|
+
{
|
|
304
|
+
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
if (item.BottomButton)
|
|
308
|
+
{
|
|
309
|
+
var subItem=item.BottomButton;
|
|
310
|
+
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
314
|
+
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
315
|
+
|
|
316
|
+
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
317
|
+
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
318
|
+
|
|
319
|
+
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
320
|
+
|
|
321
|
+
if (item.YDecimals) //Y轴文字小数位数
|
|
322
|
+
{
|
|
323
|
+
var subItem=item.YDecimals;
|
|
324
|
+
if (IFrameSplitOperator.IsNumber(subItem.Value)) chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Value=subItem.Value;
|
|
325
|
+
if (IFrameSplitOperator.IsNumber(subItem.Type)) chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Type=subItem.Type;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
286
329
|
//历史K线图
|
|
287
330
|
this.CreateKLineChartContainer=function(option)
|
|
288
331
|
{
|
|
@@ -536,48 +579,23 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
536
579
|
if (option.IsCorssOnlyDrawKLine===true) chart.ChartCorssCursor.IsOnlyDrawKLine=option.IsCorssOnlyDrawKLine;
|
|
537
580
|
if (option.CorssCursorTouchEnd===true) chart.CorssCursorTouchEnd = option.CorssCursorTouchEnd;
|
|
538
581
|
if (option.IsClickShowCorssCursor==true) chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;
|
|
539
|
-
|
|
582
|
+
this.SetCorssCursorConfig(chart, option);
|
|
583
|
+
if (option.CorssCursorInfo) //十字光标K线上的属性设置
|
|
540
584
|
{
|
|
541
585
|
var item=option.CorssCursorInfo;
|
|
542
|
-
if (!isNaN(option.CorssCursorInfo.Left)) chart.ChartCorssCursor.ShowTextMode.Left=option.CorssCursorInfo.Left;
|
|
543
|
-
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
544
|
-
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
545
|
-
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
546
586
|
if (IFrameSplitOperator.IsBool(item.IsShowClose)) chart.ChartCorssCursor.IsShowClose = item.IsShowClose; //Y轴显示收盘价
|
|
547
587
|
if (IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine)) chart.ChartCorssCursor.IsOnlyDrawKLine = item.IsOnlyDrawKLine; //Y轴显示收盘价
|
|
548
588
|
if (option.CorssCursorInfo.PressTime) chart.PressTime=option.CorssCursorInfo.PressTime; //长按显示十字光标的时间
|
|
549
|
-
if (IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType)) chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;
|
|
550
|
-
if (option.CorssCursorInfo.VPenType>0) chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;
|
|
551
|
-
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
552
589
|
if (option.CorssCursorInfo.DateFormatType>0) chart.ChartCorssCursor.StringFormatX.DateFormatType=option.CorssCursorInfo.DateFormatType;
|
|
553
590
|
if (IFrameSplitOperator.IsBool(item.IsDrawXRangeBG)) chart.ChartCorssCursor.IsDrawXRangeBG=item.IsDrawXRangeBG;
|
|
554
591
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
555
592
|
if (IFrameSplitOperator.IsNumber(item.TextHeight)) chart.ChartCorssCursor.TextHeight=item.TextHeight;
|
|
556
|
-
|
|
557
|
-
if (item.RightButton)
|
|
558
|
-
{
|
|
559
|
-
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
if (item.BottomButton)
|
|
563
|
-
{
|
|
564
|
-
var subItem=item.BottomButton;
|
|
565
|
-
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
569
|
-
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
570
|
-
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
571
|
-
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
572
|
-
|
|
573
|
-
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
574
593
|
|
|
575
594
|
if (item.RangeIncrease)
|
|
576
595
|
{
|
|
577
596
|
var subItem=item.RangeIncrease;
|
|
578
597
|
if (IFrameSplitOperator.IsBool(subItem.IsShow)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.IsShow=subItem.IsShow;
|
|
579
598
|
if (IFrameSplitOperator.IsNumber(subItem.Formula)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.Formula=subItem.Formula;
|
|
580
|
-
|
|
581
599
|
}
|
|
582
600
|
}
|
|
583
601
|
|
|
@@ -1105,39 +1123,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1105
1123
|
if (option.PageInfo) chart.SetPageInfo(option.PageInfo);
|
|
1106
1124
|
|
|
1107
1125
|
chart.Create(windowsCount,option); //创建子窗口
|
|
1108
|
-
|
|
1109
|
-
if (option.CorssCursorInfo)
|
|
1126
|
+
this.SetCorssCursorConfig(chart, option);
|
|
1127
|
+
if (option.CorssCursorInfo) //分时图十字光标属性设置
|
|
1110
1128
|
{
|
|
1111
1129
|
var item=option.CorssCursorInfo;
|
|
1112
|
-
|
|
1113
|
-
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
1114
|
-
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
1115
|
-
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
1130
|
+
|
|
1116
1131
|
if (option.CorssCursorInfo.RightTextFormat>0) chart.ChartCorssCursor.TextFormat.Right=option.CorssCursorInfo.RightTextFormat;
|
|
1117
1132
|
if (option.CorssCursorInfo.IsOnlyDrawMinute == true) chart.ChartCorssCursor.IsOnlyDrawMinute = option.CorssCursorInfo.IsOnlyDrawMinute; //Y轴显示收盘价
|
|
1118
1133
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
1119
1134
|
|
|
1120
|
-
if (item.RightButton)
|
|
1121
|
-
{
|
|
1122
|
-
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
1123
|
-
}
|
|
1124
|
-
|
|
1125
|
-
if (item.BottomButton)
|
|
1126
|
-
{
|
|
1127
|
-
var subItem=item.BottomButton;
|
|
1128
|
-
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
1129
|
-
}
|
|
1130
|
-
|
|
1131
|
-
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
1132
|
-
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
1133
|
-
|
|
1134
|
-
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
1135
|
-
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
1136
|
-
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
1137
|
-
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
1138
|
-
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
1139
|
-
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
1140
|
-
|
|
1141
1135
|
if (item.TextStyle)
|
|
1142
1136
|
{
|
|
1143
1137
|
if (item.TextStyle.Right) //右侧输出样式
|
|
@@ -7082,7 +7076,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7082
7076
|
{
|
|
7083
7077
|
var item=this.OverlayChartPaint[i];
|
|
7084
7078
|
if (!item) continue;
|
|
7085
|
-
if (item.
|
|
7079
|
+
if (item.YInfoConfig.Type===0) continue;
|
|
7086
7080
|
var data=item.Data;
|
|
7087
7081
|
if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) continue;
|
|
7088
7082
|
if (!IFrameSplitOperator.IsNumber(item.DrawKRange.Start) || !IFrameSplitOperator.IsNumber(item.DrawKRange.End)) continue;
|
|
@@ -7102,15 +7096,29 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7102
7096
|
|
|
7103
7097
|
var endKLine=data.Data[item.DrawKRange.End];
|
|
7104
7098
|
var value=(endKLine.Close-startKLine.Close)/startKLine.Close*100;
|
|
7105
|
-
|
|
7099
|
+
var text="";
|
|
7100
|
+
if (item.YInfoConfig.Type===3)
|
|
7101
|
+
{
|
|
7102
|
+
var dec=GetfloatPrecision(item.Symbol); //小数位数
|
|
7103
|
+
text=endKLine.Close.toFixed(dec);
|
|
7104
|
+
}
|
|
7105
|
+
else if (item.YInfoConfig.Type===4)
|
|
7106
|
+
{
|
|
7107
|
+
text=value.toFixed(2)+"%";
|
|
7108
|
+
}
|
|
7109
|
+
else
|
|
7110
|
+
{
|
|
7111
|
+
continue;
|
|
7112
|
+
}
|
|
7113
|
+
|
|
7106
7114
|
var info=new CoordinateInfo();
|
|
7107
7115
|
info.Value=endKLine.Close/item.ShowRange.FirstOverlayOpen*item.ShowRange.FirstOpen;
|
|
7108
|
-
info.Message[1]=
|
|
7116
|
+
info.Message[1]=text
|
|
7109
7117
|
info.LineType=-1;
|
|
7110
|
-
info.Type=
|
|
7118
|
+
info.Type=4; //叠加股票
|
|
7111
7119
|
info.LineColor=item.Color;
|
|
7112
7120
|
info.TextColor=g_JSChartResource.FrameLatestPrice.OverlayTextColor;
|
|
7113
|
-
if (item.Title) info.Title=item.Title;
|
|
7121
|
+
if (item.Title && item.YInfoConfig.IsShowName) info.Title=item.Title;
|
|
7114
7122
|
frame.CustomHorizontalInfo.push(info);
|
|
7115
7123
|
}
|
|
7116
7124
|
}
|
|
@@ -27596,6 +27604,7 @@ function IChartPainting()
|
|
|
27596
27604
|
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
27597
27605
|
var chartright=border.RightEx;
|
|
27598
27606
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
27607
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
|
|
27599
27608
|
|
|
27600
27609
|
if (isHScreen)
|
|
27601
27610
|
{
|
|
@@ -33932,13 +33941,19 @@ function ChartOverlayKLine()
|
|
|
33932
33941
|
this.CloseLineWidth=g_JSChartResource.CloseLineWidth;
|
|
33933
33942
|
this.ShowRange={ }; //K线显示范围 { Start:, End:, DataCount:, ShowCount: }
|
|
33934
33943
|
this.DrawKRange={ Start:null, End:null }; //当前屏K线的索引{ Start: , End:}
|
|
33935
|
-
this.
|
|
33944
|
+
this.YInfoConfig={ Type:0, IsShowName:false } //右侧Y轴自定刻度设置 0不显示 3=名字|最新价 4=名字|涨幅
|
|
33936
33945
|
|
|
33937
33946
|
this.SetOption=function(option)
|
|
33938
33947
|
{
|
|
33939
33948
|
if (!option) return;
|
|
33940
33949
|
if (IFrameSplitOperator.IsNumber(option.DrawType)) this.CustomDrawType=option.DrawType;
|
|
33941
|
-
if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.
|
|
33950
|
+
if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.YInfoConfig.Type=option.YInfoType;
|
|
33951
|
+
if (option.YInfo)
|
|
33952
|
+
{
|
|
33953
|
+
var item=option.YInfo;
|
|
33954
|
+
if (IFrameSplitOperator.IsNumber(item.Type)) this.YInfoConfig.Type=item.Type;
|
|
33955
|
+
if (IFrameSplitOperator.IsBool(item.IsShowName)) this.YInfoConfig.IsShowName=item.IsShowName;
|
|
33956
|
+
}
|
|
33942
33957
|
}
|
|
33943
33958
|
|
|
33944
33959
|
this.DrawKBar=function(firstOpen) //firstOpen 当前屏第1个显示数据
|
|
@@ -60797,6 +60812,7 @@ function HQPriceStringFormat()
|
|
|
60797
60812
|
|
|
60798
60813
|
this.PriceFormatType=0; //主窗口格式 0=默认 1=科学计数
|
|
60799
60814
|
this.DataFormatType=0; //副图指标格式 0=默认 1=科学计数
|
|
60815
|
+
this.DecimalsConfig={ Value:2, Type:0 }; //小数设置, Value:小数位数 , Type: 0=默认 1=跟指标标题一致
|
|
60800
60816
|
|
|
60801
60817
|
this.GetEventCallback
|
|
60802
60818
|
|
|
@@ -60895,7 +60911,7 @@ function HQPriceStringFormat()
|
|
|
60895
60911
|
if (!this.Value) return false;
|
|
60896
60912
|
|
|
60897
60913
|
this.PercentageText=null;
|
|
60898
|
-
var defaultfloatPrecision=
|
|
60914
|
+
var defaultfloatPrecision=this.DecimalsConfig.Value; //价格小数位数
|
|
60899
60915
|
if (this.FrameID==0) //第1个窗口显示原始价格
|
|
60900
60916
|
{
|
|
60901
60917
|
var defaultfloatPrecision=GetfloatPrecision(this.Symbol);
|
|
@@ -60944,6 +60960,7 @@ function HQPriceStringFormat()
|
|
|
60944
60960
|
}
|
|
60945
60961
|
else if (this.FrameID==1)
|
|
60946
60962
|
{
|
|
60963
|
+
defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);
|
|
60947
60964
|
if (this.DataFormatType==1)
|
|
60948
60965
|
{
|
|
60949
60966
|
this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
@@ -60976,6 +60993,7 @@ function HQPriceStringFormat()
|
|
|
60976
60993
|
}
|
|
60977
60994
|
else
|
|
60978
60995
|
{
|
|
60996
|
+
defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);
|
|
60979
60997
|
if (this.DataFormatType==1) this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
60980
60998
|
else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);
|
|
60981
60999
|
if (IFrameSplitOperator.IsNumber(this.RValue)) this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);
|
|
@@ -61021,6 +61039,23 @@ function HQPriceStringFormat()
|
|
|
61021
61039
|
return true;
|
|
61022
61040
|
}
|
|
61023
61041
|
|
|
61042
|
+
//获取指标标题小数位数
|
|
61043
|
+
this.GetIndexTitleFloatPrecision=function(frameID)
|
|
61044
|
+
{
|
|
61045
|
+
var dec=this.DecimalsConfig.Value;
|
|
61046
|
+
if (this.DecimalsConfig.Type===0) return dec;
|
|
61047
|
+
|
|
61048
|
+
if (frameID<0) return dec;
|
|
61049
|
+
if (!this.HQChart) return dec;
|
|
61050
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.HQChart.WindowIndex)) return dec;
|
|
61051
|
+
var item=this.HQChart.WindowIndex[frameID];
|
|
61052
|
+
if (!item) return dec;
|
|
61053
|
+
|
|
61054
|
+
if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) dec=item.FloatPrecision;
|
|
61055
|
+
|
|
61056
|
+
return dec;
|
|
61057
|
+
}
|
|
61058
|
+
|
|
61024
61059
|
//深度图刻度
|
|
61025
61060
|
this.GetExtendPaintData=function(floatPrecision)
|
|
61026
61061
|
{
|
|
@@ -88032,8 +88067,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
88032
88067
|
{
|
|
88033
88068
|
Name:'KLineChartContainer::RequestOverlayHistoryData', //类名::
|
|
88034
88069
|
Explain:'叠加股票日K线数据',
|
|
88035
|
-
Request:
|
|
88036
|
-
|
|
88070
|
+
Request:
|
|
88071
|
+
{
|
|
88072
|
+
Url:self.KLineApiUrl,
|
|
88073
|
+
Data:
|
|
88074
|
+
{
|
|
88075
|
+
symbol: symbol, period:this.Period, count: dataCount.MaxRequestDataCount, first:{ date: firstDate },
|
|
88076
|
+
Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
|
|
88077
|
+
},
|
|
88078
|
+
},
|
|
88037
88079
|
Self:this,
|
|
88038
88080
|
PreventDefault:false
|
|
88039
88081
|
};
|
|
@@ -88125,8 +88167,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
88125
88167
|
{
|
|
88126
88168
|
Name:'KLineChartContainer::RequestOverlayHistoryMinuteData', //类名::
|
|
88127
88169
|
Explain:'叠加股票分钟K线数据',
|
|
88128
|
-
Request:
|
|
88129
|
-
|
|
88170
|
+
Request:
|
|
88171
|
+
{
|
|
88172
|
+
Url:self.MinuteKLineApiUrl,
|
|
88173
|
+
Data:
|
|
88174
|
+
{
|
|
88175
|
+
symbol: symbol, period:this.Period, count: dataCount.MaxRequestMinuteDayCount, first:{ date: firstDate, time:firstTime },
|
|
88176
|
+
Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
|
|
88177
|
+
},
|
|
88178
|
+
},
|
|
88130
88179
|
Self:this,
|
|
88131
88180
|
PreventDefault:false
|
|
88132
88181
|
};
|
|
@@ -4379,6 +4379,49 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4379
4379
|
if (IFrameSplitOperator.IsNumber(item.Count)) klineChart.PriceGap.Count=item.Count;
|
|
4380
4380
|
}
|
|
4381
4381
|
|
|
4382
|
+
//设置十字光标
|
|
4383
|
+
this.SetCorssCursorConfig=function(chart, option)
|
|
4384
|
+
{
|
|
4385
|
+
if (!option || !option.CorssCursorInfo) return;
|
|
4386
|
+
|
|
4387
|
+
var item=option.CorssCursorInfo;
|
|
4388
|
+
if (IFrameSplitOperator.IsNumber(item.Left)) chart.ChartCorssCursor.ShowTextMode.Left=item.Left;
|
|
4389
|
+
if (IFrameSplitOperator.IsNumber(item.Right)) chart.ChartCorssCursor.ShowTextMode.Right=item.Right;
|
|
4390
|
+
if (IFrameSplitOperator.IsNumber(item.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=item.Bottom;
|
|
4391
|
+
|
|
4392
|
+
if (IFrameSplitOperator.IsBool(item.IsShowCorss)) chart.ChartCorssCursor.IsShowCorss=item.IsShowCorss;
|
|
4393
|
+
|
|
4394
|
+
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
4395
|
+
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
4396
|
+
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
4397
|
+
|
|
4398
|
+
if (item.RightButton)
|
|
4399
|
+
{
|
|
4400
|
+
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
4401
|
+
}
|
|
4402
|
+
|
|
4403
|
+
if (item.BottomButton)
|
|
4404
|
+
{
|
|
4405
|
+
var subItem=item.BottomButton;
|
|
4406
|
+
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
4407
|
+
}
|
|
4408
|
+
|
|
4409
|
+
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
4410
|
+
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
4411
|
+
|
|
4412
|
+
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
4413
|
+
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
4414
|
+
|
|
4415
|
+
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
4416
|
+
|
|
4417
|
+
if (item.YDecimals) //Y轴文字小数位数
|
|
4418
|
+
{
|
|
4419
|
+
var subItem=item.YDecimals;
|
|
4420
|
+
if (IFrameSplitOperator.IsNumber(subItem.Value)) chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Value=subItem.Value;
|
|
4421
|
+
if (IFrameSplitOperator.IsNumber(subItem.Type)) chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Type=subItem.Type;
|
|
4422
|
+
}
|
|
4423
|
+
}
|
|
4424
|
+
|
|
4382
4425
|
//历史K线图
|
|
4383
4426
|
this.CreateKLineChartContainer=function(option)
|
|
4384
4427
|
{
|
|
@@ -4632,48 +4675,23 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4632
4675
|
if (option.IsCorssOnlyDrawKLine===true) chart.ChartCorssCursor.IsOnlyDrawKLine=option.IsCorssOnlyDrawKLine;
|
|
4633
4676
|
if (option.CorssCursorTouchEnd===true) chart.CorssCursorTouchEnd = option.CorssCursorTouchEnd;
|
|
4634
4677
|
if (option.IsClickShowCorssCursor==true) chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;
|
|
4635
|
-
|
|
4678
|
+
this.SetCorssCursorConfig(chart, option);
|
|
4679
|
+
if (option.CorssCursorInfo) //十字光标K线上的属性设置
|
|
4636
4680
|
{
|
|
4637
4681
|
var item=option.CorssCursorInfo;
|
|
4638
|
-
if (!isNaN(option.CorssCursorInfo.Left)) chart.ChartCorssCursor.ShowTextMode.Left=option.CorssCursorInfo.Left;
|
|
4639
|
-
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
4640
|
-
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
4641
|
-
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
4642
4682
|
if (IFrameSplitOperator.IsBool(item.IsShowClose)) chart.ChartCorssCursor.IsShowClose = item.IsShowClose; //Y轴显示收盘价
|
|
4643
4683
|
if (IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine)) chart.ChartCorssCursor.IsOnlyDrawKLine = item.IsOnlyDrawKLine; //Y轴显示收盘价
|
|
4644
4684
|
if (option.CorssCursorInfo.PressTime) chart.PressTime=option.CorssCursorInfo.PressTime; //长按显示十字光标的时间
|
|
4645
|
-
if (IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType)) chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;
|
|
4646
|
-
if (option.CorssCursorInfo.VPenType>0) chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;
|
|
4647
|
-
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
4648
4685
|
if (option.CorssCursorInfo.DateFormatType>0) chart.ChartCorssCursor.StringFormatX.DateFormatType=option.CorssCursorInfo.DateFormatType;
|
|
4649
4686
|
if (IFrameSplitOperator.IsBool(item.IsDrawXRangeBG)) chart.ChartCorssCursor.IsDrawXRangeBG=item.IsDrawXRangeBG;
|
|
4650
4687
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
4651
4688
|
if (IFrameSplitOperator.IsNumber(item.TextHeight)) chart.ChartCorssCursor.TextHeight=item.TextHeight;
|
|
4652
|
-
|
|
4653
|
-
if (item.RightButton)
|
|
4654
|
-
{
|
|
4655
|
-
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
4656
|
-
}
|
|
4657
|
-
|
|
4658
|
-
if (item.BottomButton)
|
|
4659
|
-
{
|
|
4660
|
-
var subItem=item.BottomButton;
|
|
4661
|
-
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
4662
|
-
}
|
|
4663
|
-
|
|
4664
|
-
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
4665
|
-
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
4666
|
-
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
4667
|
-
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
4668
|
-
|
|
4669
|
-
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
4670
4689
|
|
|
4671
4690
|
if (item.RangeIncrease)
|
|
4672
4691
|
{
|
|
4673
4692
|
var subItem=item.RangeIncrease;
|
|
4674
4693
|
if (IFrameSplitOperator.IsBool(subItem.IsShow)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.IsShow=subItem.IsShow;
|
|
4675
4694
|
if (IFrameSplitOperator.IsNumber(subItem.Formula)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.Formula=subItem.Formula;
|
|
4676
|
-
|
|
4677
4695
|
}
|
|
4678
4696
|
}
|
|
4679
4697
|
|
|
@@ -5201,39 +5219,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5201
5219
|
if (option.PageInfo) chart.SetPageInfo(option.PageInfo);
|
|
5202
5220
|
|
|
5203
5221
|
chart.Create(windowsCount,option); //创建子窗口
|
|
5204
|
-
|
|
5205
|
-
if (option.CorssCursorInfo)
|
|
5222
|
+
this.SetCorssCursorConfig(chart, option);
|
|
5223
|
+
if (option.CorssCursorInfo) //分时图十字光标属性设置
|
|
5206
5224
|
{
|
|
5207
5225
|
var item=option.CorssCursorInfo;
|
|
5208
|
-
|
|
5209
|
-
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
5210
|
-
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
5211
|
-
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
5226
|
+
|
|
5212
5227
|
if (option.CorssCursorInfo.RightTextFormat>0) chart.ChartCorssCursor.TextFormat.Right=option.CorssCursorInfo.RightTextFormat;
|
|
5213
5228
|
if (option.CorssCursorInfo.IsOnlyDrawMinute == true) chart.ChartCorssCursor.IsOnlyDrawMinute = option.CorssCursorInfo.IsOnlyDrawMinute; //Y轴显示收盘价
|
|
5214
5229
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
5215
5230
|
|
|
5216
|
-
if (item.RightButton)
|
|
5217
|
-
{
|
|
5218
|
-
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
5219
|
-
}
|
|
5220
|
-
|
|
5221
|
-
if (item.BottomButton)
|
|
5222
|
-
{
|
|
5223
|
-
var subItem=item.BottomButton;
|
|
5224
|
-
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
5225
|
-
}
|
|
5226
|
-
|
|
5227
|
-
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
5228
|
-
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
5229
|
-
|
|
5230
|
-
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
5231
|
-
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
5232
|
-
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
5233
|
-
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
5234
|
-
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
5235
|
-
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
5236
|
-
|
|
5237
5231
|
if (item.TextStyle)
|
|
5238
5232
|
{
|
|
5239
5233
|
if (item.TextStyle.Right) //右侧输出样式
|
|
@@ -11178,7 +11172,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11178
11172
|
{
|
|
11179
11173
|
var item=this.OverlayChartPaint[i];
|
|
11180
11174
|
if (!item) continue;
|
|
11181
|
-
if (item.
|
|
11175
|
+
if (item.YInfoConfig.Type===0) continue;
|
|
11182
11176
|
var data=item.Data;
|
|
11183
11177
|
if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) continue;
|
|
11184
11178
|
if (!IFrameSplitOperator.IsNumber(item.DrawKRange.Start) || !IFrameSplitOperator.IsNumber(item.DrawKRange.End)) continue;
|
|
@@ -11198,15 +11192,29 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11198
11192
|
|
|
11199
11193
|
var endKLine=data.Data[item.DrawKRange.End];
|
|
11200
11194
|
var value=(endKLine.Close-startKLine.Close)/startKLine.Close*100;
|
|
11201
|
-
|
|
11195
|
+
var text="";
|
|
11196
|
+
if (item.YInfoConfig.Type===3)
|
|
11197
|
+
{
|
|
11198
|
+
var dec=GetfloatPrecision(item.Symbol); //小数位数
|
|
11199
|
+
text=endKLine.Close.toFixed(dec);
|
|
11200
|
+
}
|
|
11201
|
+
else if (item.YInfoConfig.Type===4)
|
|
11202
|
+
{
|
|
11203
|
+
text=value.toFixed(2)+"%";
|
|
11204
|
+
}
|
|
11205
|
+
else
|
|
11206
|
+
{
|
|
11207
|
+
continue;
|
|
11208
|
+
}
|
|
11209
|
+
|
|
11202
11210
|
var info=new CoordinateInfo();
|
|
11203
11211
|
info.Value=endKLine.Close/item.ShowRange.FirstOverlayOpen*item.ShowRange.FirstOpen;
|
|
11204
|
-
info.Message[1]=
|
|
11212
|
+
info.Message[1]=text
|
|
11205
11213
|
info.LineType=-1;
|
|
11206
|
-
info.Type=
|
|
11214
|
+
info.Type=4; //叠加股票
|
|
11207
11215
|
info.LineColor=item.Color;
|
|
11208
11216
|
info.TextColor=g_JSChartResource.FrameLatestPrice.OverlayTextColor;
|
|
11209
|
-
if (item.Title) info.Title=item.Title;
|
|
11217
|
+
if (item.Title && item.YInfoConfig.IsShowName) info.Title=item.Title;
|
|
11210
11218
|
frame.CustomHorizontalInfo.push(info);
|
|
11211
11219
|
}
|
|
11212
11220
|
}
|
|
@@ -31692,6 +31700,7 @@ function IChartPainting()
|
|
|
31692
31700
|
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
31693
31701
|
var chartright=border.RightEx;
|
|
31694
31702
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
31703
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
|
|
31695
31704
|
|
|
31696
31705
|
if (isHScreen)
|
|
31697
31706
|
{
|
|
@@ -38028,13 +38037,19 @@ function ChartOverlayKLine()
|
|
|
38028
38037
|
this.CloseLineWidth=g_JSChartResource.CloseLineWidth;
|
|
38029
38038
|
this.ShowRange={ }; //K线显示范围 { Start:, End:, DataCount:, ShowCount: }
|
|
38030
38039
|
this.DrawKRange={ Start:null, End:null }; //当前屏K线的索引{ Start: , End:}
|
|
38031
|
-
this.
|
|
38040
|
+
this.YInfoConfig={ Type:0, IsShowName:false } //右侧Y轴自定刻度设置 0不显示 3=名字|最新价 4=名字|涨幅
|
|
38032
38041
|
|
|
38033
38042
|
this.SetOption=function(option)
|
|
38034
38043
|
{
|
|
38035
38044
|
if (!option) return;
|
|
38036
38045
|
if (IFrameSplitOperator.IsNumber(option.DrawType)) this.CustomDrawType=option.DrawType;
|
|
38037
|
-
if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.
|
|
38046
|
+
if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.YInfoConfig.Type=option.YInfoType;
|
|
38047
|
+
if (option.YInfo)
|
|
38048
|
+
{
|
|
38049
|
+
var item=option.YInfo;
|
|
38050
|
+
if (IFrameSplitOperator.IsNumber(item.Type)) this.YInfoConfig.Type=item.Type;
|
|
38051
|
+
if (IFrameSplitOperator.IsBool(item.IsShowName)) this.YInfoConfig.IsShowName=item.IsShowName;
|
|
38052
|
+
}
|
|
38038
38053
|
}
|
|
38039
38054
|
|
|
38040
38055
|
this.DrawKBar=function(firstOpen) //firstOpen 当前屏第1个显示数据
|
|
@@ -64893,6 +64908,7 @@ function HQPriceStringFormat()
|
|
|
64893
64908
|
|
|
64894
64909
|
this.PriceFormatType=0; //主窗口格式 0=默认 1=科学计数
|
|
64895
64910
|
this.DataFormatType=0; //副图指标格式 0=默认 1=科学计数
|
|
64911
|
+
this.DecimalsConfig={ Value:2, Type:0 }; //小数设置, Value:小数位数 , Type: 0=默认 1=跟指标标题一致
|
|
64896
64912
|
|
|
64897
64913
|
this.GetEventCallback
|
|
64898
64914
|
|
|
@@ -64991,7 +65007,7 @@ function HQPriceStringFormat()
|
|
|
64991
65007
|
if (!this.Value) return false;
|
|
64992
65008
|
|
|
64993
65009
|
this.PercentageText=null;
|
|
64994
|
-
var defaultfloatPrecision=
|
|
65010
|
+
var defaultfloatPrecision=this.DecimalsConfig.Value; //价格小数位数
|
|
64995
65011
|
if (this.FrameID==0) //第1个窗口显示原始价格
|
|
64996
65012
|
{
|
|
64997
65013
|
var defaultfloatPrecision=GetfloatPrecision(this.Symbol);
|
|
@@ -65040,6 +65056,7 @@ function HQPriceStringFormat()
|
|
|
65040
65056
|
}
|
|
65041
65057
|
else if (this.FrameID==1)
|
|
65042
65058
|
{
|
|
65059
|
+
defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);
|
|
65043
65060
|
if (this.DataFormatType==1)
|
|
65044
65061
|
{
|
|
65045
65062
|
this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
@@ -65072,6 +65089,7 @@ function HQPriceStringFormat()
|
|
|
65072
65089
|
}
|
|
65073
65090
|
else
|
|
65074
65091
|
{
|
|
65092
|
+
defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);
|
|
65075
65093
|
if (this.DataFormatType==1) this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
65076
65094
|
else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);
|
|
65077
65095
|
if (IFrameSplitOperator.IsNumber(this.RValue)) this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);
|
|
@@ -65117,6 +65135,23 @@ function HQPriceStringFormat()
|
|
|
65117
65135
|
return true;
|
|
65118
65136
|
}
|
|
65119
65137
|
|
|
65138
|
+
//获取指标标题小数位数
|
|
65139
|
+
this.GetIndexTitleFloatPrecision=function(frameID)
|
|
65140
|
+
{
|
|
65141
|
+
var dec=this.DecimalsConfig.Value;
|
|
65142
|
+
if (this.DecimalsConfig.Type===0) return dec;
|
|
65143
|
+
|
|
65144
|
+
if (frameID<0) return dec;
|
|
65145
|
+
if (!this.HQChart) return dec;
|
|
65146
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.HQChart.WindowIndex)) return dec;
|
|
65147
|
+
var item=this.HQChart.WindowIndex[frameID];
|
|
65148
|
+
if (!item) return dec;
|
|
65149
|
+
|
|
65150
|
+
if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) dec=item.FloatPrecision;
|
|
65151
|
+
|
|
65152
|
+
return dec;
|
|
65153
|
+
}
|
|
65154
|
+
|
|
65120
65155
|
//深度图刻度
|
|
65121
65156
|
this.GetExtendPaintData=function(floatPrecision)
|
|
65122
65157
|
{
|
|
@@ -92128,8 +92163,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
92128
92163
|
{
|
|
92129
92164
|
Name:'KLineChartContainer::RequestOverlayHistoryData', //类名::
|
|
92130
92165
|
Explain:'叠加股票日K线数据',
|
|
92131
|
-
Request:
|
|
92132
|
-
|
|
92166
|
+
Request:
|
|
92167
|
+
{
|
|
92168
|
+
Url:self.KLineApiUrl,
|
|
92169
|
+
Data:
|
|
92170
|
+
{
|
|
92171
|
+
symbol: symbol, period:this.Period, count: dataCount.MaxRequestDataCount, first:{ date: firstDate },
|
|
92172
|
+
Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
|
|
92173
|
+
},
|
|
92174
|
+
},
|
|
92133
92175
|
Self:this,
|
|
92134
92176
|
PreventDefault:false
|
|
92135
92177
|
};
|
|
@@ -92221,8 +92263,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
92221
92263
|
{
|
|
92222
92264
|
Name:'KLineChartContainer::RequestOverlayHistoryMinuteData', //类名::
|
|
92223
92265
|
Explain:'叠加股票分钟K线数据',
|
|
92224
|
-
Request:
|
|
92225
|
-
|
|
92266
|
+
Request:
|
|
92267
|
+
{
|
|
92268
|
+
Url:self.MinuteKLineApiUrl,
|
|
92269
|
+
Data:
|
|
92270
|
+
{
|
|
92271
|
+
symbol: symbol, period:this.Period, count: dataCount.MaxRequestMinuteDayCount, first:{ date: firstDate, time:firstTime },
|
|
92272
|
+
Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
|
|
92273
|
+
},
|
|
92274
|
+
},
|
|
92226
92275
|
Self:this,
|
|
92227
92276
|
PreventDefault:false
|
|
92228
92277
|
};
|
|
@@ -155501,7 +155550,7 @@ function ScrollBarBGChart()
|
|
|
155501
155550
|
|
|
155502
155551
|
|
|
155503
155552
|
|
|
155504
|
-
var HQCHART_VERSION="1.1.
|
|
155553
|
+
var HQCHART_VERSION="1.1.15381";
|
|
155505
155554
|
|
|
155506
155555
|
function PrintHQChartVersion()
|
|
155507
155556
|
{
|
|
@@ -4423,6 +4423,49 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4423
4423
|
if (IFrameSplitOperator.IsNumber(item.Count)) klineChart.PriceGap.Count=item.Count;
|
|
4424
4424
|
}
|
|
4425
4425
|
|
|
4426
|
+
//设置十字光标
|
|
4427
|
+
this.SetCorssCursorConfig=function(chart, option)
|
|
4428
|
+
{
|
|
4429
|
+
if (!option || !option.CorssCursorInfo) return;
|
|
4430
|
+
|
|
4431
|
+
var item=option.CorssCursorInfo;
|
|
4432
|
+
if (IFrameSplitOperator.IsNumber(item.Left)) chart.ChartCorssCursor.ShowTextMode.Left=item.Left;
|
|
4433
|
+
if (IFrameSplitOperator.IsNumber(item.Right)) chart.ChartCorssCursor.ShowTextMode.Right=item.Right;
|
|
4434
|
+
if (IFrameSplitOperator.IsNumber(item.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=item.Bottom;
|
|
4435
|
+
|
|
4436
|
+
if (IFrameSplitOperator.IsBool(item.IsShowCorss)) chart.ChartCorssCursor.IsShowCorss=item.IsShowCorss;
|
|
4437
|
+
|
|
4438
|
+
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
4439
|
+
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
4440
|
+
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
4441
|
+
|
|
4442
|
+
if (item.RightButton)
|
|
4443
|
+
{
|
|
4444
|
+
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
4445
|
+
}
|
|
4446
|
+
|
|
4447
|
+
if (item.BottomButton)
|
|
4448
|
+
{
|
|
4449
|
+
var subItem=item.BottomButton;
|
|
4450
|
+
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
4451
|
+
}
|
|
4452
|
+
|
|
4453
|
+
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
4454
|
+
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
4455
|
+
|
|
4456
|
+
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
4457
|
+
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
4458
|
+
|
|
4459
|
+
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
4460
|
+
|
|
4461
|
+
if (item.YDecimals) //Y轴文字小数位数
|
|
4462
|
+
{
|
|
4463
|
+
var subItem=item.YDecimals;
|
|
4464
|
+
if (IFrameSplitOperator.IsNumber(subItem.Value)) chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Value=subItem.Value;
|
|
4465
|
+
if (IFrameSplitOperator.IsNumber(subItem.Type)) chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Type=subItem.Type;
|
|
4466
|
+
}
|
|
4467
|
+
}
|
|
4468
|
+
|
|
4426
4469
|
//历史K线图
|
|
4427
4470
|
this.CreateKLineChartContainer=function(option)
|
|
4428
4471
|
{
|
|
@@ -4676,48 +4719,23 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4676
4719
|
if (option.IsCorssOnlyDrawKLine===true) chart.ChartCorssCursor.IsOnlyDrawKLine=option.IsCorssOnlyDrawKLine;
|
|
4677
4720
|
if (option.CorssCursorTouchEnd===true) chart.CorssCursorTouchEnd = option.CorssCursorTouchEnd;
|
|
4678
4721
|
if (option.IsClickShowCorssCursor==true) chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;
|
|
4679
|
-
|
|
4722
|
+
this.SetCorssCursorConfig(chart, option);
|
|
4723
|
+
if (option.CorssCursorInfo) //十字光标K线上的属性设置
|
|
4680
4724
|
{
|
|
4681
4725
|
var item=option.CorssCursorInfo;
|
|
4682
|
-
if (!isNaN(option.CorssCursorInfo.Left)) chart.ChartCorssCursor.ShowTextMode.Left=option.CorssCursorInfo.Left;
|
|
4683
|
-
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
4684
|
-
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
4685
|
-
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
4686
4726
|
if (IFrameSplitOperator.IsBool(item.IsShowClose)) chart.ChartCorssCursor.IsShowClose = item.IsShowClose; //Y轴显示收盘价
|
|
4687
4727
|
if (IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine)) chart.ChartCorssCursor.IsOnlyDrawKLine = item.IsOnlyDrawKLine; //Y轴显示收盘价
|
|
4688
4728
|
if (option.CorssCursorInfo.PressTime) chart.PressTime=option.CorssCursorInfo.PressTime; //长按显示十字光标的时间
|
|
4689
|
-
if (IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType)) chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;
|
|
4690
|
-
if (option.CorssCursorInfo.VPenType>0) chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;
|
|
4691
|
-
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
4692
4729
|
if (option.CorssCursorInfo.DateFormatType>0) chart.ChartCorssCursor.StringFormatX.DateFormatType=option.CorssCursorInfo.DateFormatType;
|
|
4693
4730
|
if (IFrameSplitOperator.IsBool(item.IsDrawXRangeBG)) chart.ChartCorssCursor.IsDrawXRangeBG=item.IsDrawXRangeBG;
|
|
4694
4731
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
4695
4732
|
if (IFrameSplitOperator.IsNumber(item.TextHeight)) chart.ChartCorssCursor.TextHeight=item.TextHeight;
|
|
4696
|
-
|
|
4697
|
-
if (item.RightButton)
|
|
4698
|
-
{
|
|
4699
|
-
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
4700
|
-
}
|
|
4701
|
-
|
|
4702
|
-
if (item.BottomButton)
|
|
4703
|
-
{
|
|
4704
|
-
var subItem=item.BottomButton;
|
|
4705
|
-
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
4706
|
-
}
|
|
4707
|
-
|
|
4708
|
-
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
4709
|
-
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
4710
|
-
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
4711
|
-
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
4712
|
-
|
|
4713
|
-
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
4714
4733
|
|
|
4715
4734
|
if (item.RangeIncrease)
|
|
4716
4735
|
{
|
|
4717
4736
|
var subItem=item.RangeIncrease;
|
|
4718
4737
|
if (IFrameSplitOperator.IsBool(subItem.IsShow)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.IsShow=subItem.IsShow;
|
|
4719
4738
|
if (IFrameSplitOperator.IsNumber(subItem.Formula)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.Formula=subItem.Formula;
|
|
4720
|
-
|
|
4721
4739
|
}
|
|
4722
4740
|
}
|
|
4723
4741
|
|
|
@@ -5245,39 +5263,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5245
5263
|
if (option.PageInfo) chart.SetPageInfo(option.PageInfo);
|
|
5246
5264
|
|
|
5247
5265
|
chart.Create(windowsCount,option); //创建子窗口
|
|
5248
|
-
|
|
5249
|
-
if (option.CorssCursorInfo)
|
|
5266
|
+
this.SetCorssCursorConfig(chart, option);
|
|
5267
|
+
if (option.CorssCursorInfo) //分时图十字光标属性设置
|
|
5250
5268
|
{
|
|
5251
5269
|
var item=option.CorssCursorInfo;
|
|
5252
|
-
|
|
5253
|
-
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
5254
|
-
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
5255
|
-
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
5270
|
+
|
|
5256
5271
|
if (option.CorssCursorInfo.RightTextFormat>0) chart.ChartCorssCursor.TextFormat.Right=option.CorssCursorInfo.RightTextFormat;
|
|
5257
5272
|
if (option.CorssCursorInfo.IsOnlyDrawMinute == true) chart.ChartCorssCursor.IsOnlyDrawMinute = option.CorssCursorInfo.IsOnlyDrawMinute; //Y轴显示收盘价
|
|
5258
5273
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
5259
5274
|
|
|
5260
|
-
if (item.RightButton)
|
|
5261
|
-
{
|
|
5262
|
-
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
5263
|
-
}
|
|
5264
|
-
|
|
5265
|
-
if (item.BottomButton)
|
|
5266
|
-
{
|
|
5267
|
-
var subItem=item.BottomButton;
|
|
5268
|
-
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
5269
|
-
}
|
|
5270
|
-
|
|
5271
|
-
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
5272
|
-
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
5273
|
-
|
|
5274
|
-
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
5275
|
-
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
5276
|
-
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
5277
|
-
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
5278
|
-
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
5279
|
-
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
5280
|
-
|
|
5281
5275
|
if (item.TextStyle)
|
|
5282
5276
|
{
|
|
5283
5277
|
if (item.TextStyle.Right) //右侧输出样式
|
|
@@ -11222,7 +11216,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11222
11216
|
{
|
|
11223
11217
|
var item=this.OverlayChartPaint[i];
|
|
11224
11218
|
if (!item) continue;
|
|
11225
|
-
if (item.
|
|
11219
|
+
if (item.YInfoConfig.Type===0) continue;
|
|
11226
11220
|
var data=item.Data;
|
|
11227
11221
|
if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) continue;
|
|
11228
11222
|
if (!IFrameSplitOperator.IsNumber(item.DrawKRange.Start) || !IFrameSplitOperator.IsNumber(item.DrawKRange.End)) continue;
|
|
@@ -11242,15 +11236,29 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11242
11236
|
|
|
11243
11237
|
var endKLine=data.Data[item.DrawKRange.End];
|
|
11244
11238
|
var value=(endKLine.Close-startKLine.Close)/startKLine.Close*100;
|
|
11245
|
-
|
|
11239
|
+
var text="";
|
|
11240
|
+
if (item.YInfoConfig.Type===3)
|
|
11241
|
+
{
|
|
11242
|
+
var dec=GetfloatPrecision(item.Symbol); //小数位数
|
|
11243
|
+
text=endKLine.Close.toFixed(dec);
|
|
11244
|
+
}
|
|
11245
|
+
else if (item.YInfoConfig.Type===4)
|
|
11246
|
+
{
|
|
11247
|
+
text=value.toFixed(2)+"%";
|
|
11248
|
+
}
|
|
11249
|
+
else
|
|
11250
|
+
{
|
|
11251
|
+
continue;
|
|
11252
|
+
}
|
|
11253
|
+
|
|
11246
11254
|
var info=new CoordinateInfo();
|
|
11247
11255
|
info.Value=endKLine.Close/item.ShowRange.FirstOverlayOpen*item.ShowRange.FirstOpen;
|
|
11248
|
-
info.Message[1]=
|
|
11256
|
+
info.Message[1]=text
|
|
11249
11257
|
info.LineType=-1;
|
|
11250
|
-
info.Type=
|
|
11258
|
+
info.Type=4; //叠加股票
|
|
11251
11259
|
info.LineColor=item.Color;
|
|
11252
11260
|
info.TextColor=g_JSChartResource.FrameLatestPrice.OverlayTextColor;
|
|
11253
|
-
if (item.Title) info.Title=item.Title;
|
|
11261
|
+
if (item.Title && item.YInfoConfig.IsShowName) info.Title=item.Title;
|
|
11254
11262
|
frame.CustomHorizontalInfo.push(info);
|
|
11255
11263
|
}
|
|
11256
11264
|
}
|
|
@@ -31736,6 +31744,7 @@ function IChartPainting()
|
|
|
31736
31744
|
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
31737
31745
|
var chartright=border.RightEx;
|
|
31738
31746
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
31747
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
|
|
31739
31748
|
|
|
31740
31749
|
if (isHScreen)
|
|
31741
31750
|
{
|
|
@@ -38072,13 +38081,19 @@ function ChartOverlayKLine()
|
|
|
38072
38081
|
this.CloseLineWidth=g_JSChartResource.CloseLineWidth;
|
|
38073
38082
|
this.ShowRange={ }; //K线显示范围 { Start:, End:, DataCount:, ShowCount: }
|
|
38074
38083
|
this.DrawKRange={ Start:null, End:null }; //当前屏K线的索引{ Start: , End:}
|
|
38075
|
-
this.
|
|
38084
|
+
this.YInfoConfig={ Type:0, IsShowName:false } //右侧Y轴自定刻度设置 0不显示 3=名字|最新价 4=名字|涨幅
|
|
38076
38085
|
|
|
38077
38086
|
this.SetOption=function(option)
|
|
38078
38087
|
{
|
|
38079
38088
|
if (!option) return;
|
|
38080
38089
|
if (IFrameSplitOperator.IsNumber(option.DrawType)) this.CustomDrawType=option.DrawType;
|
|
38081
|
-
if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.
|
|
38090
|
+
if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.YInfoConfig.Type=option.YInfoType;
|
|
38091
|
+
if (option.YInfo)
|
|
38092
|
+
{
|
|
38093
|
+
var item=option.YInfo;
|
|
38094
|
+
if (IFrameSplitOperator.IsNumber(item.Type)) this.YInfoConfig.Type=item.Type;
|
|
38095
|
+
if (IFrameSplitOperator.IsBool(item.IsShowName)) this.YInfoConfig.IsShowName=item.IsShowName;
|
|
38096
|
+
}
|
|
38082
38097
|
}
|
|
38083
38098
|
|
|
38084
38099
|
this.DrawKBar=function(firstOpen) //firstOpen 当前屏第1个显示数据
|
|
@@ -64937,6 +64952,7 @@ function HQPriceStringFormat()
|
|
|
64937
64952
|
|
|
64938
64953
|
this.PriceFormatType=0; //主窗口格式 0=默认 1=科学计数
|
|
64939
64954
|
this.DataFormatType=0; //副图指标格式 0=默认 1=科学计数
|
|
64955
|
+
this.DecimalsConfig={ Value:2, Type:0 }; //小数设置, Value:小数位数 , Type: 0=默认 1=跟指标标题一致
|
|
64940
64956
|
|
|
64941
64957
|
this.GetEventCallback
|
|
64942
64958
|
|
|
@@ -65035,7 +65051,7 @@ function HQPriceStringFormat()
|
|
|
65035
65051
|
if (!this.Value) return false;
|
|
65036
65052
|
|
|
65037
65053
|
this.PercentageText=null;
|
|
65038
|
-
var defaultfloatPrecision=
|
|
65054
|
+
var defaultfloatPrecision=this.DecimalsConfig.Value; //价格小数位数
|
|
65039
65055
|
if (this.FrameID==0) //第1个窗口显示原始价格
|
|
65040
65056
|
{
|
|
65041
65057
|
var defaultfloatPrecision=GetfloatPrecision(this.Symbol);
|
|
@@ -65084,6 +65100,7 @@ function HQPriceStringFormat()
|
|
|
65084
65100
|
}
|
|
65085
65101
|
else if (this.FrameID==1)
|
|
65086
65102
|
{
|
|
65103
|
+
defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);
|
|
65087
65104
|
if (this.DataFormatType==1)
|
|
65088
65105
|
{
|
|
65089
65106
|
this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
@@ -65116,6 +65133,7 @@ function HQPriceStringFormat()
|
|
|
65116
65133
|
}
|
|
65117
65134
|
else
|
|
65118
65135
|
{
|
|
65136
|
+
defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);
|
|
65119
65137
|
if (this.DataFormatType==1) this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
65120
65138
|
else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);
|
|
65121
65139
|
if (IFrameSplitOperator.IsNumber(this.RValue)) this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);
|
|
@@ -65161,6 +65179,23 @@ function HQPriceStringFormat()
|
|
|
65161
65179
|
return true;
|
|
65162
65180
|
}
|
|
65163
65181
|
|
|
65182
|
+
//获取指标标题小数位数
|
|
65183
|
+
this.GetIndexTitleFloatPrecision=function(frameID)
|
|
65184
|
+
{
|
|
65185
|
+
var dec=this.DecimalsConfig.Value;
|
|
65186
|
+
if (this.DecimalsConfig.Type===0) return dec;
|
|
65187
|
+
|
|
65188
|
+
if (frameID<0) return dec;
|
|
65189
|
+
if (!this.HQChart) return dec;
|
|
65190
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.HQChart.WindowIndex)) return dec;
|
|
65191
|
+
var item=this.HQChart.WindowIndex[frameID];
|
|
65192
|
+
if (!item) return dec;
|
|
65193
|
+
|
|
65194
|
+
if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) dec=item.FloatPrecision;
|
|
65195
|
+
|
|
65196
|
+
return dec;
|
|
65197
|
+
}
|
|
65198
|
+
|
|
65164
65199
|
//深度图刻度
|
|
65165
65200
|
this.GetExtendPaintData=function(floatPrecision)
|
|
65166
65201
|
{
|
|
@@ -92172,8 +92207,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
92172
92207
|
{
|
|
92173
92208
|
Name:'KLineChartContainer::RequestOverlayHistoryData', //类名::
|
|
92174
92209
|
Explain:'叠加股票日K线数据',
|
|
92175
|
-
Request:
|
|
92176
|
-
|
|
92210
|
+
Request:
|
|
92211
|
+
{
|
|
92212
|
+
Url:self.KLineApiUrl,
|
|
92213
|
+
Data:
|
|
92214
|
+
{
|
|
92215
|
+
symbol: symbol, period:this.Period, count: dataCount.MaxRequestDataCount, first:{ date: firstDate },
|
|
92216
|
+
Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
|
|
92217
|
+
},
|
|
92218
|
+
},
|
|
92177
92219
|
Self:this,
|
|
92178
92220
|
PreventDefault:false
|
|
92179
92221
|
};
|
|
@@ -92265,8 +92307,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
92265
92307
|
{
|
|
92266
92308
|
Name:'KLineChartContainer::RequestOverlayHistoryMinuteData', //类名::
|
|
92267
92309
|
Explain:'叠加股票分钟K线数据',
|
|
92268
|
-
Request:
|
|
92269
|
-
|
|
92310
|
+
Request:
|
|
92311
|
+
{
|
|
92312
|
+
Url:self.MinuteKLineApiUrl,
|
|
92313
|
+
Data:
|
|
92314
|
+
{
|
|
92315
|
+
symbol: symbol, period:this.Period, count: dataCount.MaxRequestMinuteDayCount, first:{ date: firstDate, time:firstTime },
|
|
92316
|
+
Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
|
|
92317
|
+
},
|
|
92318
|
+
},
|
|
92270
92319
|
Self:this,
|
|
92271
92320
|
PreventDefault:false
|
|
92272
92321
|
};
|
|
@@ -167560,7 +167609,7 @@ function HQChartScriptWorker()
|
|
|
167560
167609
|
|
|
167561
167610
|
|
|
167562
167611
|
|
|
167563
|
-
var HQCHART_VERSION="1.1.
|
|
167612
|
+
var HQCHART_VERSION="1.1.15381";
|
|
167564
167613
|
|
|
167565
167614
|
function PrintHQChartVersion()
|
|
167566
167615
|
{
|