hqchart 1.1.14851 → 1.1.14855
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 +42 -14
- package/package.json +1 -1
- package/src/jscommon/umychart.deal.js +1 -1
- package/src/jscommon/umychart.js +175 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +177 -2
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +177 -2
package/lib/umychart.vue.js
CHANGED
|
@@ -1214,7 +1214,7 @@ var scriptData=new JSIndexScript();if(option.ColorIndex)//五彩K线
|
|
|
1214
1214
|
{var apiItem=item.API;chart.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create(item.Option);if(chart.WindowIndex[i].SetArgs)chart.WindowIndex[i].SetArgs(item.Args);chart.CreateWindowIndex(i);}else{var scriptData=new JSIndexScript();var _indexInfo2=scriptData.Get(item.Index);if(!_indexInfo2)continue;JSIndexScript.ModifyAttribute(_indexInfo2,item);_indexInfo2.ID=item.Index;chart.WindowIndex[i]=new ScriptIndex(_indexInfo2.Name,_indexInfo2.Script,_indexInfo2.Args,_indexInfo2);//脚本执行
|
|
1215
1215
|
if(item.StringFormat>0)chart.WindowIndex[i].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsBool(item.AddIndexWindow))frame.AddIndexWindow=item.AddIndexWindow;if(item.IsDrawTitleBG==true)chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))frame.IsShowTitleArrow=item.IsShowTitleArrow;if(IFrameSplitOperator.IsNumber(item.TitleArrowType))frame.TitleArrowType=item.TitleArrowType;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(!IFrameSplitOperator.IsUndefined(item.HorizontalReserved))frame.HorizontalReserved=item.HorizontalReserved;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))chart.Frame.SubFrame[i].Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))chart.Frame.SubFrame[i].Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}//叠加指标宽度
|
|
1216
1216
|
if(option.OverlayIndexFrameWidth>40)chart.Frame.FixedRightWidth.Overlay=option.OverlayIndexFrameWidth;//叠加指标
|
|
1217
|
-
if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Windows>=chart.Frame.SubFrame.length)continue;var itemString=(0,_stringify2.default)(item);var obj=JSON.parse(itemString);if(item.Index)obj.IndexName=item.Index;if(item.Windows>=0)obj.WindowIndex=item.Windows;chart.CreateOverlayWindowsIndex(obj);}}this.AdjustTitleHeight(chart);return chart;};//自定义指数历史K线图
|
|
1217
|
+
if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Windows>=chart.Frame.SubFrame.length)continue;var itemString=(0,_stringify2.default)(item);var obj=JSON.parse(itemString);if(item.Index)obj.IndexName=item.Index;if(item.Windows>=0)obj.WindowIndex=item.Windows;chart.CreateOverlayWindowsIndex(obj);}}this.AdjustTitleHeight(chart);if(option.LatestPointFlash){var item=option.LatestPointFlash;if(item.Enable){this.CreateExtraCanvasElement(JSChart.LatestPointFlashKey,{ZIndex:6});chart.CreateExtendChart("LatestPointFlashPaint",item);chart.StartLatestPointFlash();}}return chart;};//自定义指数历史K线图
|
|
1218
1218
|
this.CreateCustomKLineChartContainer=function(option){var chart=new CustomKLineChartContainer(this.CanvasElement);//右键菜单
|
|
1219
1219
|
if(IFrameSplitOperator.IsBool(option.IsShowRightMenu))chart.IsShowRightMenu=option.IsShowRightMenu;if(option.KLine)//k线图的属性设置
|
|
1220
1220
|
{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.MaxRequestDataCount>0)chart.MaxRequestDataCount=option.KLine.MaxRequestDataCount;if(option.KLine.Info&&option.KLine.Info.length>0)chart.SetKLineInfo(option.KLine.Info,false);if(option.KLine.PageSize>0)chart.PageSize=option.KLine.PageSize;if(option.KLine.IsShowTooltip==false)chart.IsShowTooltip=false;}if(option.CustomStock)chart.CustomStock=option.CustomStock;if(option.QueryDate)chart.QueryDate=option.QueryDate;if(!option.Windows||option.Windows.length<=0)return null;//创建子窗口
|
|
@@ -1564,7 +1564,11 @@ OP_CORSSCURSOR_GOTO:14,//十字光标移动某一个时刻点
|
|
|
1564
1564
|
OP_SCROOLBAR_SLIDER_CHANGED:15,//滑块变动
|
|
1565
1565
|
OP_GOTO:16,//移动到某一个天或某一个分钟
|
|
1566
1566
|
OP_GOTO_BY_DATAINDEX:17,//的移动到某一个数据起始位置
|
|
1567
|
-
OP_MOVE_CORSSCURSOR:18
|
|
1567
|
+
OP_MOVE_CORSSCURSOR:18,//移动十字光标 { Step, Start:{ Date:, Time: } }
|
|
1568
|
+
OP_CORSSCURSOR_PAGE_START:19,//当前屏第1条数据
|
|
1569
|
+
OP_CORSSCURSOR_PAGE_END:20,//当前屏最后1条数据
|
|
1570
|
+
OP_CORSSCURSOR_DATA_START:21,//所有数据的第1条数据
|
|
1571
|
+
OP_CORSSCURSOR_DATA_END:22//所有数据的最后1条数据
|
|
1568
1572
|
};var JSCHART_DRAG_ID={DISABLE_DRAG_ID:0,CLICK_TOUCH_MODE_ID:3//长按十字光标显示保留/点击十字光标消失 (使用TouchStatus)
|
|
1569
1573
|
};var JSCHART_BUTTON_ID={CLOSE_BEFOREOPEN_ID:1,//关闭集合竞价
|
|
1570
1574
|
CLOSE_OVERLAY_INDEX:2,//关闭叠加指标
|
|
@@ -2117,6 +2121,8 @@ if(this.SelectChartDrawPicture){var drawPicture=this.SelectChartDrawPicture;JSCo
|
|
|
2117
2121
|
this.OnMarkRectSelect(e);break;case 27://ESCAPE 取消画布工具
|
|
2118
2122
|
if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status!=20)//画布移动的时候不能取消
|
|
2119
2123
|
this.CurrentChartDrawPicture=null;}break;case 13://回车
|
|
2124
|
+
case 35://END
|
|
2125
|
+
case 36://HOME
|
|
2120
2126
|
if(this.OnCustomKeyDown)this.OnCustomKeyDown(keyID,e);break;default:return;}if(draw)this.DrawDynamicInfo();if(keyID==37||keyID==39)this.StartKeyboardMoveTimer(e);//不让滚动条滚动
|
|
2121
2127
|
if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.ClearKeyboardMoveTimer=function(){if(!this.KeyboardMove)return;this.KeyboardMove.Event=null;if(this.KeyboardMove.Timer){clearTimeout(this.KeyboardMove.Timer);this.KeyboardMove.Timer=null;JSConsole.Chart.Log('[JSChartContainer::ClearKeyboardMoveTimer] Stop');}this.KeyboardMove.Enable=false;};this.StartKeyboardMoveTimer=function(e){if(!this.KeyboardMove)return;if(this.KeyboardMove.Enable)return;//已启动
|
|
2122
2128
|
this.KeyboardMove.Event=e;this.KeyboardMove.Enable=true;JSConsole.Chart.Log('[JSChartContainer::StartKeyboardMoveTimer] Start');this.AutoKeyboardMove();};this.AutoKeyboardMove=function(){var _this15=this;if(!this.KeyboardMove)return false;if(!this.KeyboardMove.Enable)return false;if(!this.KeyboardMove.Event)return false;this.KeyboardMove.Timer=setTimeout(function(){_this15.OnKeyboardMoveTimerProc();},this.KeyboardMove.Delay);};this.OnKeyboardMoveTimerProc=function(){if(!this.KeyboardMove)return false;if(!this.KeyboardMove.Enable)return false;if(!this.KeyboardMove.Event)return false;var e=this.KeyboardMove.Event;var keyID=e.keyCode?e.keyCode:e.which;var bStop=false;switch(keyID){case 37://left
|
|
@@ -3742,7 +3748,8 @@ this.ChartHeatMap;//=new ChartHeatMap();
|
|
|
3742
3748
|
this.PriceGap={Enable:false,Count:1};this.PriceGapStyple={Line:{Color:g_JSChartResource.PriceGapStyple.Line.Color},Text:{Color:g_JSChartResource.PriceGapStyple.Text.Color,Font:g_JSChartResource.PriceGapStyple.Text.Font}};this.AryPriceGapCache=[];//缺口数据 { }
|
|
3743
3749
|
//面积图和收盘价线 断开点
|
|
3744
3750
|
this.AryBreakPoint;//天数统计
|
|
3745
|
-
this.DaySummary={MapDate:new _map2.default(),Enable:false};this.DaySummaryConfig={Font:g_JSChartResource.DaySummaryKLine.Font,TextColor:g_JSChartResource.DaySummaryKLine.TextColor,LeftMargin:g_JSChartResource.DaySummaryKLine.LeftMargin};this.
|
|
3751
|
+
this.DaySummary={MapDate:new _map2.default(),Enable:false};this.DaySummaryConfig={Font:g_JSChartResource.DaySummaryKLine.Font,TextColor:g_JSChartResource.DaySummaryKLine.TextColor,LeftMargin:g_JSChartResource.DaySummaryKLine.LeftMargin};this.LastPoint={};//最后一个点的信息 {X, Y, KItem:, Date:, Time: }
|
|
3752
|
+
this.AddToDaySummary=function(kItem){if(!this.DaySummary.Enable)return false;if(!kItem)return false;if(!IFrameSplitOperator.IsPlusNumber(kItem.Date))return false;if(this.DaySummary.MapDate.has(kItem.Date))return false;this.DaySummary.MapDate.set(kItem.Date,{Date:kItem.Date});};this.ClearDaySummary=function(){this.DaySummary.MapDate.clear();};this.BuildDateTimeKey=function(item){if(!item)return null;if(!IFrameSplitOperator.IsNumber(item.Time))return''+item.Date;return item.Date+'-'+item.Time;};this.BuildBreakPoint=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.AryBreakPoint))return null;var mapBreakPoint=new _map2.default();for(var i=0;i<this.AryBreakPoint.length;++i){var item=this.AryBreakPoint[i];var key=this.BuildDateTimeKey(item);if(key)mapBreakPoint.set(key,item);}return mapBreakPoint;};this.ReloadResource=function(resource){this.TextFont=g_JSChartResource.KLine.MaxMin.Font;this.TextColor=g_JSChartResource.KLine.MaxMin.Color;this.CloseLineColor=g_JSChartResource.CloseLineColor;this.CloseLineAreaColor=g_JSChartResource.CloseLineAreaColor;this.CloseLineWidth=g_JSChartResource.CloseLineWidth;this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.UnchagneColor=g_JSChartResource.UnchagneBarColor;//平盘
|
|
3746
3753
|
this.HighLowBarColor=g_JSChartResource.HighLowBarColor;this.OrderFlow.UpColor={BG:g_JSChartResource.OrderFlow.UpColor.BG,Border:g_JSChartResource.OrderFlow.UpColor.Border};this.OrderFlow.DownColor={BG:g_JSChartResource.OrderFlow.DownColor.BG,Border:g_JSChartResource.OrderFlow.DownColor.Border};this.OrderFlow.UnchagneColor={BG:g_JSChartResource.OrderFlow.UnchagneColor.BG,Border:g_JSChartResource.OrderFlow.UnchagneColor.Border};this.OrderFlow.Text={Color:g_JSChartResource.OrderFlow.Text.Color,Family:g_JSChartResource.OrderFlow.Text.Family,FontMaxSize:g_JSChartResource.OrderFlow.Text.FontMaxSize,MaxValue:g_JSChartResource.OrderFlow.Text.MaxValue};this.OrderFlow.Line={UpDownColor:g_JSChartResource.OrderFlow.Line.UpDownColor,MiddleColor:g_JSChartResource.OrderFlow.Line.MiddleColor};this.PredictionConfig.Line={Color:g_JSChartResource.PredictionKLine.Line.Color,LineDash:g_JSChartResource.PredictionKLine.Line.LineDash,LineWidth:g_JSChartResource.PredictionKLine.Line.LineWidth};this.PredictionConfig.Bar={UpColor:g_JSChartResource.PredictionKLine.Bar.UpColor,DownColor:g_JSChartResource.PredictionKLine.Bar.DownColor,UnchangeColor:g_JSChartResource.PredictionKLine.Bar.UnchangeColor,DrawType:g_JSChartResource.PredictionKLine.Bar.DrawType};this.DaySummaryConfig={Font:g_JSChartResource.DaySummaryKLine.Font,TextColor:g_JSChartResource.DaySummaryKLine.TextColor,LeftMargin:g_JSChartResource.DaySummaryKLine.LeftMargin};};this.ClearCustomKLine=function(){this.CustomKLine=null;};this.ClearBreakPoint=function(){this.AryBreakPoint=null;};this.GetCustomKLine=function(kItem){if(!this.CustomKLine)return null;if(!kItem)return null;var key=kItem.Date*1000000;if(IFrameSplitOperator.IsNumber(kItem.Time))key+=kItem.Time;if(!this.CustomKLine.has(key))return null;var value=this.CustomKLine.get(key);return value;};this.DrawHeatMap=function(){if(!this.ChartHeatMap)return;this.ChartHeatMap.Canvas=this.Canvas;this.ChartHeatMap.ChartBorder=this.ChartBorder;this.ChartHeatMap.ChartFrame=this.ChartFrame;this.ChartHeatMap.Data=this.Data;this.ChartHeatMap.Draw();};this.ClearHeatMap=function(){this.ChartHeatMap=null;};this.CreateHeatMap=function(){this.ChartHeatMap=new ChartHeatMap();};this.DrawAKLine=function()//美国线
|
|
3747
3754
|
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var upColor=this.UpColor;var downColor=this.DownColor;var unchagneColor=this.UnchagneColor;var ptMax={X:null,Y:null,Value:null,Align:'left'};var ptMin={X:null,Y:null,Value:null,Align:'left'};this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var eventUnchangeKLine=null;//定制平盘K线颜色事件
|
|
3748
3755
|
if(this.GetEventCallback){eventUnchangeKLine=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_UNCHANGE_KLINE_COLOR);}var preKItemInfo=null;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];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;this.AddToDaySummary(data);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(ptMax.Value==null||ptMax.Value<data.High)//求最大值
|
|
@@ -3764,11 +3771,12 @@ var yTop=yClose-barWidth/2;if(isHScreen){this.Canvas.fillRect(yTop,aryX[2],barWi
|
|
|
3764
3771
|
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;var borderLeft=border.TopEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var borderLeft=border.LeftEx;}var bFirstPoint=true;var firstPoint=null;this.Canvas.beginPath();this.Canvas.strokeStyle=this.CloseLineColor;if(IFrameSplitOperator.IsNumber(this.CloseLineWidth))this.Canvas.lineWidth=this.CloseLineWidth;var ptLast=null;if(this.Data.DataOffset>0)//把最左边的一个点连上
|
|
3765
3772
|
{var data=this.Data.Data[this.Data.DataOffset-1];if(data&&IFrameSplitOperator.IsNumber(data.Close)){var x=borderLeft;var yClose=this.GetYFromData(data.Close,false);if(isHScreen){this.Canvas.moveTo(yClose,x);firstPoint={X:yClose,Y:x};}else{this.Canvas.moveTo(x,yClose);firstPoint={X:x,Y:yClose};}bFirstPoint=false;}}this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var preKItemInfo=null;var prePoint=null;var xEnd=null;//最后一个点
|
|
3766
3773
|
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];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;this.AddToDaySummary(data);if(data.IsVirtual&&this.PredictionConfig.Enable)//预测数据|虚拟数据
|
|
3767
|
-
{this.AryPredictionCache.push({PrePoint:prePoint,Point:{X:x,Y:yClose}});prePoint={X:x,Y:yClose};continue;}if(bFirstPoint){if(isHScreen){this.Canvas.moveTo(yClose,x);firstPoint={X:yClose,Y:x};}else{this.Canvas.moveTo(x,yClose);firstPoint={X:x,Y:yClose};}bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}xEnd=x;prePoint={X:x,Y:yClose};if(i==this.Data.Data.length-1){ptLast={X:x,Y:yClose,XLeft:left,XRight:right,KItem:data,ChartRight:chartright};}if(this.PriceGap.Enable){var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(preKItemInfo){this.CheckPriceGap(kItemInfo);var value=this.IsPriceGap(kItemInfo,preKItemInfo);if(value>0)this.AryPriceGapCache.push({Data:[preKItemInfo,kItemInfo],Type:value});}preKItemInfo=kItemInfo;}}this.DrawLastPointEvent(ptLast);//通知外部绘制最后一个点
|
|
3774
|
+
{this.AryPredictionCache.push({PrePoint:prePoint,Point:{X:x,Y:yClose}});prePoint={X:x,Y:yClose};continue;}if(bFirstPoint){if(isHScreen){this.Canvas.moveTo(yClose,x);firstPoint={X:yClose,Y:x};}else{this.Canvas.moveTo(x,yClose);firstPoint={X:x,Y:yClose};}bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}xEnd=x;prePoint={X:x,Y:yClose};if(i==this.Data.Data.length-1){ptLast={X:x,Y:yClose,XLeft:left,XRight:right,KItem:data,ChartRight:chartright};this.LastPoint={X:x,Y:yClose,KItem:data};}if(this.PriceGap.Enable){var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(preKItemInfo){this.CheckPriceGap(kItemInfo);var value=this.IsPriceGap(kItemInfo,preKItemInfo);if(value>0)this.AryPriceGapCache.push({Data:[preKItemInfo,kItemInfo],Type:value});}preKItemInfo=kItemInfo;}}this.DrawLastPointEvent(ptLast);//通知外部绘制最后一个点
|
|
3768
3775
|
if(bFirstPoint)return;this.Canvas.stroke();if(isHScreen){this.Canvas.lineTo(border.Left,xEnd);this.Canvas.lineTo(border.Left,firstPoint.Y);}else{this.Canvas.lineTo(xEnd,border.Bottom);this.Canvas.lineTo(firstPoint.X,border.Bottom);}this.Canvas.closePath();if(Array.isArray(this.CloseLineAreaColor)){if(isHScreen){var gradient=this.Canvas.createLinearGradient(this.ChartBorder.GetRightEx(),this.ChartBorder.GetTop(),this.ChartBorder.GetLeft(),this.ChartBorder.GetTop());gradient.addColorStop(0,this.CloseLineAreaColor[0]);gradient.addColorStop(1,this.CloseLineAreaColor[1]);this.Canvas.fillStyle=gradient;}else{var _gradient=this.Canvas.createLinearGradient(firstPoint.X,this.ChartBorder.GetTopEx(),firstPoint.X,this.ChartBorder.GetBottom());_gradient.addColorStop(0,this.CloseLineAreaColor[0]);_gradient.addColorStop(1,this.CloseLineAreaColor[1]);this.Canvas.fillStyle=_gradient;}}else{this.Canvas.fillStyle=this.CloseLineAreaColor;}this.Canvas.fill();};this.DrawCloseLine=function()//收盘价线
|
|
3769
3776
|
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var bFirstPoint=true;var drawCount=0;this.Canvas.beginPath();this.Canvas.strokeStyle=this.CloseLineColor;if(IFrameSplitOperator.IsNumber(this.CloseLineWidth))this.Canvas.lineWidth=this.CloseLineWidth;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var mapBreakPoint=this.BuildBreakPoint();//断点
|
|
3770
3777
|
var preKItemInfo=null;var prePoint=null;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];this.ShowRange.End=i;if(!data||data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;this.AddToDaySummary(data);if(data.IsVirtual&&this.PredictionConfig.Enable)//预测数据|虚拟数据
|
|
3771
|
-
{this.AryPredictionCache.push({PrePoint:prePoint,Point:{X:x,Y:yClose}});prePoint={X:x,Y:yClose};continue;}if(bFirstPoint){if(isHScreen)this.Canvas.moveTo(yClose,x);else this.Canvas.moveTo(x,yClose);bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}++drawCount;prePoint={X:x,Y:yClose};if(this.
|
|
3778
|
+
{this.AryPredictionCache.push({PrePoint:prePoint,Point:{X:x,Y:yClose}});prePoint={X:x,Y:yClose};continue;}if(bFirstPoint){if(isHScreen)this.Canvas.moveTo(yClose,x);else this.Canvas.moveTo(x,yClose);bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}++drawCount;prePoint={X:x,Y:yClose};if(i==this.Data.Data.length-1)//最后一个点
|
|
3779
|
+
{this.LastPoint={X:x,Y:yClose,KItem:data};}if(this.PriceGap.Enable){var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(preKItemInfo){this.CheckPriceGap(kItemInfo);var value=this.IsPriceGap(kItemInfo,preKItemInfo);if(value>0)this.AryPriceGapCache.push({Data:[preKItemInfo,kItemInfo],Type:value});}preKItemInfo=kItemInfo;}//断开点
|
|
3772
3780
|
if(mapBreakPoint){var kItem=data;var key=this.BuildDateTimeKey(kItem);if(key&&mapBreakPoint.has(key)){if(drawCount>0)this.Canvas.stroke();bFirstPoint=true;drawCount=0;}}}if(drawCount>0)this.Canvas.stroke();};this.DrawKBar=function()//蜡烛头
|
|
3773
3781
|
{var isHScreen=this.ChartFrame.IsHScreen===true;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;}var ptMax={X:null,Y:null,Value:null,Align:'left'};var ptMin={X:null,Y:null,Value:null,Align:'left'};var upColor=this.UpColor;var downColor=this.DownColor;var unchagneColor=this.UnchagneColor;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;var ptLast=null;this.DrawKRange.Start=this.Data.DataOffset;var eventUnchangeKLine=null;//定制平盘K线颜色事件
|
|
3774
3782
|
if(this.GetEventCallback){eventUnchangeKLine=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_UNCHANGE_KLINE_COLOR);}var preKItemInfo=null;var prePoint=null;//上一个点的位置
|
|
@@ -3920,11 +3928,11 @@ this.TooltipRect.push([i,rect]);//[0]数据索引 [1]数据区域
|
|
|
3920
3928
|
this.Canvas.clip();};this.ClipClient=function(isHScreen)//裁剪客户端
|
|
3921
3929
|
{if(isHScreen==true){var left=this.ChartBorder.GetLeftEx();var right=this.ChartBorder.GetRightEx();var top=this.ChartBorder.GetTop();var bottom=this.ChartBorder.GetBottom();}else{var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();if(this.ChartBorder.BottomSpace>0)bottom+=1;if(this.DrawType==13)//需要显示文字,裁剪要大点
|
|
3922
3930
|
{top=this.ChartBorder.GetTopTitle();bottom=this.ChartBorder.GetBottom();}}this.Canvas.beginPath();this.Canvas.rect(left,top,right-left,bottom-top);//this.Canvas.stroke(); //调试用
|
|
3923
|
-
this.Canvas.clip();};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;this.ClearDaySummary();this.IsShowOrderText=false;this.TooltipRect=[];this.InfoTooltipRect=[];this.TradeIconTooltipRect=[];this.PtMax={X:null,Y:null,Value:null,Align:'left'};//清空最大
|
|
3931
|
+
this.Canvas.clip();};this.ClearLastPoint=function(){this.LastPoint={};if(this.ChartFrame.GlobalOption){var item=this.ChartFrame.GlobalOption;item.LatestPoint=null;}};this.UpdateGlobalLatestPoint=function(){if(this.Identify!="Main-KLine")return;if(!this.ChartFrame.GlobalOption)return;var item=this.ChartFrame.GlobalOption;if(IFrameSplitOperator.IsNumber(this.LastPoint.X)&&IFrameSplitOperator.IsNumber(this.LastPoint.Y))item.LatestPoint={X:this.LastPoint.X,Y:this.LastPoint.Y};};this.Draw=function(){this.ClearLastPoint();if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;this.ClearDaySummary();this.IsShowOrderText=false;this.TooltipRect=[];this.InfoTooltipRect=[];this.TradeIconTooltipRect=[];this.PtMax={X:null,Y:null,Value:null,Align:'left'};//清空最大
|
|
3924
3932
|
this.PtMin={X:null,Y:null,Value:null,Align:'left'};//清空最小
|
|
3925
3933
|
this.DrawKRange={Start:null,End:null};this.AryPriceGapCache=[];this.AryPredictionCache=[];this.ChartFrame.ChartKLine={Max:null,Min:null};//保存K线上 显示最大最小值坐标
|
|
3926
3934
|
this.DrawHeatMap();if(!this.IsShow)return;if(this.ChartFrame.IsMinSize&&this.Name=="Self Kline")return;if(ChartData.IsTickPeriod(this.Period))//分笔图
|
|
3927
|
-
{this.Canvas.save();if(this.DrawType==1){this.ClipClient(this.ChartFrame.IsHScreen);this.DrawCloseLine();}else if(this.DrawType==4){this.ClipClient(this.ChartFrame.IsHScreen);this.DrawCloseArea();}else{this.ClipTickClient(this.ChartFrame.IsHScreen);this.DrawTick();}this.Canvas.restore();return;}this.Canvas.save();this.ClipClient(this.ChartFrame.IsHScreen);if(this.DrawType==1){this.DrawCloseLine();this.Canvas.restore();this.DrawPredictionLine();if(this.PriceGap.Enable)this.DrawPriceGap();return;}else if(this.DrawType==2){this.DrawAKLine();}else if(this.DrawType==4){this.DrawCloseArea();}else if(this.DrawType==5){this.DrawOrderFlow();}else if(this.DrawType==7){this.DrawOrderFlow_Style2();}else if(this.DrawType==8){this.DrawOrderFlow_Style3();}else if(this.DrawType==9){this.DrawKBar();}else if(this.DrawType==10){this.DrawRenkoCandle();}else if(this.DrawType==12){this.DrawLineBreak();}else if(this.DrawType==13){this.DrawHighLow();}else if(this.DrawType==14){if(this.FFKChart&&this.FFKChart.Draw){this.FFKChart.Draw(this);}}else if(this.DrawType==15){this.DrawHLCArea();}else if(this.DrawType==16){this.DrawKagi();}else if(this.DrawType==17){this.DrawOrderFlow_Style4();}else if(this.DrawType==18){this.DrawOrderFlow_Style5();}else{this.DrawKBar();}if(this.TradeIcon)this.DrawTradeIcon();else this.DrawTrade();this.Canvas.restore();this.DrawPredictionLine();if(this.PriceGap.Enable)this.DrawPriceGap();if(this.IsShowMaxMinPrice)//标注最大值最小值
|
|
3935
|
+
{this.Canvas.save();if(this.DrawType==1){this.ClipClient(this.ChartFrame.IsHScreen);this.DrawCloseLine();}else if(this.DrawType==4){this.ClipClient(this.ChartFrame.IsHScreen);this.DrawCloseArea();}else{this.ClipTickClient(this.ChartFrame.IsHScreen);this.DrawTick();}this.Canvas.restore();return;}this.Canvas.save();this.ClipClient(this.ChartFrame.IsHScreen);if(this.DrawType==1){this.DrawCloseLine();this.Canvas.restore();this.DrawPredictionLine();if(this.PriceGap.Enable)this.DrawPriceGap();this.UpdateGlobalLatestPoint();return;}else if(this.DrawType==2){this.DrawAKLine();}else if(this.DrawType==4){this.DrawCloseArea();}else if(this.DrawType==5){this.DrawOrderFlow();}else if(this.DrawType==7){this.DrawOrderFlow_Style2();}else if(this.DrawType==8){this.DrawOrderFlow_Style3();}else if(this.DrawType==9){this.DrawKBar();}else if(this.DrawType==10){this.DrawRenkoCandle();}else if(this.DrawType==12){this.DrawLineBreak();}else if(this.DrawType==13){this.DrawHighLow();}else if(this.DrawType==14){if(this.FFKChart&&this.FFKChart.Draw){this.FFKChart.Draw(this);}}else if(this.DrawType==15){this.DrawHLCArea();}else if(this.DrawType==16){this.DrawKagi();}else if(this.DrawType==17){this.DrawOrderFlow_Style4();}else if(this.DrawType==18){this.DrawOrderFlow_Style5();}else{this.DrawKBar();}if(this.TradeIcon)this.DrawTradeIcon();else this.DrawTrade();this.Canvas.restore();this.UpdateGlobalLatestPoint();this.DrawPredictionLine();if(this.PriceGap.Enable)this.DrawPriceGap();if(this.IsShowMaxMinPrice)//标注最大值最小值
|
|
3928
3936
|
{if(this.ChartFrame.IsHScreen===true)this.HScreenDrawMaxMinPrice(this.PtMax,this.PtMin);else this.DrawMaxMinPrice(this.PtMax,this.PtMin);}if(this.DrawType==14)//自定义图形 标注最大最小值
|
|
3929
3937
|
{if(this.FFKChart&&this.FFKChart.DrawMaxMinPrice){this.FFKChart.DrawMaxMinPrice();}}this.DrawDaySummary();};this.OnFormatHighLowTitle=function(ptMax,ptMin){if(!ptMax||!ptMin)return null;if(!IFrameSplitOperator.IsNumber(ptMax.Value)||!IFrameSplitOperator.IsNumber(ptMin.Value))return null;var defaultfloatPrecision=GetfloatPrecision(this.Symbol);//小数位数
|
|
3930
3938
|
var title={High:ptMax.Value.toFixed(defaultfloatPrecision),Low:ptMin.Value.toFixed(defaultfloatPrecision)};if(!this.GetEventCallback)return title;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_KLINE_HIGH_LOW_TITLE);if(!event||!event.Callback)return title;var data={Max:ptMax,Min:ptMin,Symbol:this.Symbol,Title:{High:title.High,Low:title.Low},Decimal:defaultfloatPrecision,PreventDefault:false};event.Callback(event,data,this);if(data.PreventDefault)return data.Title;//使用外部回调的数值
|
|
@@ -5312,8 +5320,9 @@ var yText=subFrame.ChartBorder.GetTopEx()+this.MerginTop;for(var i=0;i<this.Data
|
|
|
5312
5320
|
function LatestPointFlashPaint(){this.newMethod=IExtendChartPainting;//派生
|
|
5313
5321
|
this.newMethod();delete this.newMethod;this.ClassName='LatestPointFlashPaint';this.HQChart;this.Status=0;this.UpdateTime=new Date();this.FlashCount=0;//闪烁次数
|
|
5314
5322
|
this.Frequency=500;//闪烁频率ms
|
|
5315
|
-
this.PointColor=g_JSChartResource.LatestPointFlash.PointColor;this.PointRadius=g_JSChartResource.LatestPointFlash.PointRadius;this.BGColor=g_JSChartResource.LatestPointFlash.BGColor;this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;this.DrawPriority=IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25;this.
|
|
5316
|
-
|
|
5323
|
+
this.PointColor=g_JSChartResource.LatestPointFlash.PointColor;this.PointRadius=g_JSChartResource.LatestPointFlash.PointRadius;this.BGColor=g_JSChartResource.LatestPointFlash.BGColor;this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;this.DrawPriority=IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25;this.Style=1;//0=默认配置 1=图形保持一致
|
|
5324
|
+
this.FlashCanvas;this.SetOption=function(option){if(this.HQChart){var extraElement=this.HQChart.GetExtraCanvas(JSChart.LatestPointFlashKey);if(extraElement&&extraElement.Canvas)this.FlashCanvas=extraElement.Canvas;//绑定独立的画布
|
|
5325
|
+
}if(option){if(IFrameSplitOperator.IsNumber(option.Frequency))this.Frequency=option.Frequency;}};this.ReloadResource=function(resource){this.PointColor=g_JSChartResource.LatestPointFlash.PointColor;this.PointRadius=g_JSChartResource.LatestPointFlash.PointRadius;this.BGColor=g_JSChartResource.LatestPointFlash.BGColor;this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;};this.GetChartColor=function(){var chart=this.HQChart.ChartPaint[0];if(!chart)return;if(chart.ClassName=="ChartKLine"){this.PointColor=chart.CloseLineColor;this.BGColor=IChartDrawPicture.ColorToRGBA(chart.CloseLineColor,0.6);}else if(chart.ClassName=="ChartMinutePriceLine"){this.PointColor=chart.Color;this.BGColor=IChartDrawPicture.ColorToRGBA(chart.Color,0.6);}};this.Draw=function(){if(!this.FlashCanvas)return;if(!this.HQChart)return;this.HQChart.ClearCanvas(this.FlashCanvas);if(this.FlashCount<=0)return;if(this.IsStatusChange()){this.Status=(this.Status+1)%2;--this.FlashCount;}if(this.Status==0)return;if(!this.HQChart.GlobalOption||!this.HQChart.GlobalOption.LatestPoint)return;var point=this.HQChart.GlobalOption.LatestPoint;if(!IFrameSplitOperator.IsNumber(point.X)||!IFrameSplitOperator.IsNumber(point.Y))return;if(this.Style==1)this.GetChartColor();this.FlashCanvas.fillStyle=this.BGColor;this.FlashCanvas.beginPath();this.FlashCanvas.arc(point.X,point.Y,this.BGRadius,0,360,false);this.FlashCanvas.fill();this.FlashCanvas.closePath();//画实心圆
|
|
5317
5326
|
this.FlashCanvas.fillStyle=this.PointColor;this.FlashCanvas.beginPath();this.FlashCanvas.arc(point.X,point.Y,this.PointRadius,0,360,false);this.FlashCanvas.fill();this.FlashCanvas.closePath();};this.IsStatusChange=function(){if(!this.UpdateTime){this.UpdateTime=new Date();return true;}var now=new Date();var diffValue=now.getTime()-this.UpdateTime.getTime();if(diffValue<=this.Frequency)return false;this.UpdateTime=now;return true;};}//拖拽效果图
|
|
5318
5327
|
var JSCHART_DRAGCHART_TYPE_ID={MAIN_KLINE:1,OVERLAY_KLINE:2,MAIN_INDEX:3,OVERLAY_INDEX:4,OVERLAY_MINUTE:5,//叠加走势图
|
|
5319
5328
|
MAIN_MINUTE:6,//走势图
|
|
@@ -7588,7 +7597,19 @@ var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.
|
|
|
7588
7597
|
var start=kData.DataOffset;var bDayPeriod=ChartData.IsDayPeriod(this.Period,true);var findItem=null,dataIndex=-1;for(var i=0;i<kData.Data.length;++i){var item=kData.Data[i];if(!item)continue;if(bDayPeriod){if(item.Date==obj.Start.Date){findItem=item;dataIndex=i;break;}}else{if(item.Date==obj.Start.Date&&item.Time==obj.Start.Time){findItem=item;dataIndex=i;break;}}}if(!findItem)return false;var index=-1;var dataOffset=kData.DataOffset;if(dataIndex>=start&&dataIndex<=start+(showCount-1)){index=dataIndex-start;}else//需要调整当前屏范围
|
|
7589
7598
|
{if(step>0){if(dataIndex+showCount>=kData.Data.length){dataOffset=kData.Data.length-showCount;index=dataIndex-dataOffset;}else{index=0;dataOffset=dataIndex;}}else{if(dataIndex-showCount<0){dataOffset=0;index=dataIndex;}else if(dataIndex+showCount>=kData.Data.length){dataOffset=kData.Data.length-showCount;index=dataIndex-dataOffset;}else{index=showCount;dataOffset=dataIndex-showCount;}}}var kItem=findItem;if(step>0){for(var i=dataIndex+1,j=0;i<kData.Data.length&&j<step;++i,++j){++index;dataIndex=i;if(index>=showCount-1){index=showCount-1;dataOffset+=1;}var item=kData.Data[i];if(!item)continue;var kItem=item;}}else if(step<0){for(var i=dataIndex-1,j=0;i>=0&&j<Math.abs(step);--i,++j){--index;dataIndex=i;if(index<=0){index=0;dataOffset-=1;}var item=kData.Data[i];if(!item)continue;var kItem=item;}}if(!kItem)return false;obj.KItem=kItem;if(kData.DataOffset==dataOffset){return this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);}else{kData.DataOffset=dataOffset;this.UpdataDataoffset();//更新数据偏移
|
|
7590
7599
|
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7591
|
-
this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);return true;}}
|
|
7600
|
+
this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);return true;}}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START)//当前屏第1条数据
|
|
7601
|
+
{var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
|
|
7602
|
+
var startIndex=kData.DataOffset;var kItem=kData.Data[startIndex];this.ChartOperator_Temp_SetChartCorssCursor(0,kItem);return true;}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END)//当前屏最后1条数据
|
|
7603
|
+
{var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
|
|
7604
|
+
if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return false;var showCount=this.Frame.SubFrame[0].Frame.XPointCount;//一屏显示个数
|
|
7605
|
+
var endIndex=kData.DataOffset+showCount-1;if(endIndex>=kData.Data.length)endIndex=kData.Data.length-1;var kItem=kData.Data[endIndex];var index=endIndex-kData.DataOffset;this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);return true;}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START){var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
|
|
7606
|
+
var kItem=kData.Data[0];if(kData.DataOffset!=0){kData.DataOffset=0;this.UpdataDataoffset();//更新数据偏移
|
|
7607
|
+
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7608
|
+
this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();this.ChartOperator_Temp_SetChartCorssCursor(0,kItem);}else{this.ChartOperator_Temp_SetChartCorssCursor(0,kItem);}return true;}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END){var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
|
|
7609
|
+
var kItem=kData.Data[kData.Data.length-1];if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return false;var showCount=this.Frame.SubFrame[0].Frame.XPointCount;//一屏显示个数
|
|
7610
|
+
var dataOffset=kData.Data.length-showCount;if(kData.DataOffset<dataOffset){kData.DataOffset=dataOffset;var index=kData.Data.length-kData.DataOffset-1;this.UpdataDataoffset();//更新数据偏移
|
|
7611
|
+
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7612
|
+
this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);}else{var index=kData.Data.length-kData.DataOffset-1;this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);}return true;}};this.ChartOperator_Temp_SetChartCorssCursor=function(index,kItem){if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return false;var frame=this.Frame.SubFrame[0].Frame;var x=frame.GetXFromIndex(index);var y=frame.GetYFromData(kItem.Close);//保存最后一次鼠标移动信息
|
|
7592
7613
|
var MoveStatus={X:x,Y:y,IsInClient:this.IsMouseOnClient(x,y)};this.LastMouseStatus.OnMouseMove=MoveStatus;this.LastMouseStatus.MoveOnPoint={X:x,Y:y};//鼠标移动的位置
|
|
7593
7614
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);var titleChart=this.TitlePaint[0];if(event&&titleChart)titleChart.OnMouseMoveEvent=event;var pixelTatio=GetDevicePixelRatio();var e={};e.clientX=x/pixelTatio+this.UIElement.getBoundingClientRect().left;e.clientY=y/pixelTatio+this.UIElement.getBoundingClientRect().top;this.MoveOnPoint={X:x,Y:y};this.OnMouseMove(x,y,e);this.LastMouseStatus.MoveOnPoint=null;if(titleChart)titleChart.OnMouseMoveEvent=null;return true;};//内部函数
|
|
7594
7615
|
this.ChartOperator_Temp_GetHistoryData=function(){var hisData=null;if(!this.Frame.Data)hisData=this.Frame.Data;else hisData=this.Frame.SubFrame[0].Frame.Data;if(!hisData)return null;//数据还没有到达
|
|
@@ -7623,6 +7644,8 @@ for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting()
|
|
|
7623
7644
|
if(!data.Tooltip||!data.Chart)return;var pixelRatio=GetDevicePixelRatio();var rtClient=this.UIElement.getBoundingClientRect();var rtScroll=GetScrollPosition();x+=rtClient.left+rtScroll.Left;y+=rtClient.top+rtScroll.Top;var item=data.Tooltip.Data;var date=item.Date;var symbol=null;if(data.Tooltip.ChartPaint&&data.Tooltip.ChartPaint.Name=="DRAWKLINE"){if(item.Symbol)symbol=item.Symbol;else if(data.Tooltip.Symbol)symbol=data.Tooltip.Symbol;}else{symbol=data.Chart.Symbol;}if(!symbol)return;this.PopMinuteChart.Show({Date:date,Symbol:symbol,Data:data.Tooltip.Data,Chart:data.Tooltip.ChartPaint},x/pixelRatio,y/pixelRatio);};//Alt+W 区间统计
|
|
7624
7645
|
//Alt+数字 切换多个窗口
|
|
7625
7646
|
//Ctrl+I
|
|
7647
|
+
//HOME / END 当前屏 第1条 最后一条
|
|
7648
|
+
//Ctrl+HOME / Ctrl+END 第1条 最后一条
|
|
7626
7649
|
this.OnCustomKeyDown=function(keyID,e)//自定义键盘事件
|
|
7627
7650
|
{if(keyID==37&&e.ctrlKey)//Ctrl+Left
|
|
7628
7651
|
{this.MoveCorssCursorLeft(this.CtrlMoveStep);return true;}else if(keyID==39&&e.ctrlKey)//Ctrl+Right
|
|
@@ -7631,7 +7654,11 @@ this.OnCustomKeyDown=function(keyID,e)//自定义键盘事件
|
|
|
7631
7654
|
{this.MoveKLineRight(this.ShiftMoveStep);return true;}else if(keyID==38&&e.shiftKey)//shift+up 上移十字光标
|
|
7632
7655
|
{this.MoveCorssCursorUp(this.ShiftUpDownStepPixel);return true;}else if(keyID==40&&e.shiftKey)//shift+down 下移十字光标
|
|
7633
7656
|
{this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);return true;}else if(keyID==13)//回车显示分时图
|
|
7634
|
-
{this.OnEnterKeyDown();}else
|
|
7657
|
+
{this.OnEnterKeyDown();}else if(keyID==36)//HOME 第1条
|
|
7658
|
+
{var option=null;if(e.ctrlKey)option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START};//所有数据的第1条数据
|
|
7659
|
+
else option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START};if(option)this.ChartOperator(option);}else if(keyID==35)//END 最后一条
|
|
7660
|
+
{var option=null;if(e.ctrlKey)option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END};//所有数据的最后1条数据
|
|
7661
|
+
else option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END};if(option)this.ChartOperator(option);}else{return false;}};this.MoveKLineLeft=function(value){return this.MoveKLine(-value);};this.MoveKLineRight=function(value){return this.MoveKLine(value);};this.MoveKLine=function(step){if(step==0)return;var oneStepWidth=this.GetMoveOneStepWidth();var moveSetp=step*oneStepWidth;var bLeft=true;if(step<0){moveSetp=Math.abs(step)*oneStepWidth;bLeft=false;}if(!this.DataMove(moveSetp,bLeft))return;this.UpdataDataoffset();this.RepairCursorIndex();this.UpdatePointByCursorIndex();//推拽数据的时候不需要把鼠标位置更新到K线上
|
|
7635
7662
|
this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("datamove");};//修复 当前数据索引大于数据个数的请求
|
|
7636
7663
|
this.RepairCursorIndex=function(){var kData=this.GetKData();if(!kData)return;var xPointcount=0;if(this.Frame.XPointCount)xPointcount=this.Frame.XPointCount;else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;if(!IFrameSplitOperator.IsPlusNumber(xPointcount))return;if(this.CursorIndex<0)this.CursorIndex=0;var index=this.CursorIndex;index=parseInt(index.toFixed(0));if(index+kData.DataOffset>=kData.Data.length){this.CursorIndex=kData.Data.length-1-kData.DataOffset;}};this.MoveCorssCursorLeft=function(step){var data=null;if(this.Frame.Data)data=this.Frame.Data;else data=this.Frame.SubFrame[0].Frame.Data;if(!data)return;if(data.DataOffset<=0&&this.CursorIndex<=0)//数据到头了
|
|
7637
7664
|
{if(this.DragDownloadData)this.DragDownloadData();return;}if(this.CursorIndex-step<0)//当前屏到头了
|
|
@@ -7908,7 +7935,8 @@ var lastDataCount=this.GetHistoryDataCount();//保存下上一次的数据个数
|
|
|
7908
7935
|
if(this.SourceData.Data.length==0)//第1条数据
|
|
7909
7936
|
{var newItem=new HistoryData();HistoryData.CopyTo(newItem,realtimeData);this.SourceData.Data.push(newItem);}else if(item.Date==realtimeData.Date)//实时行情数据更新
|
|
7910
7937
|
{JSConsole.Chart.Log('[KLineChartContainer::RecvRealtimeData] update kline by realtime data',realtimeData);HistoryData.CopyTo(item,realtimeData);}else if(item.Date<realtimeData.Date)//新增加数据
|
|
7911
|
-
{JSConsole.Chart.Log('[KLineChartContainer::RecvRealtimeData] insert kline by realtime data',realtimeData);var newItem=new HistoryData();HistoryData.CopyTo(newItem,realtimeData);if(!IFrameSplitOperator.IsNumber(newItem.YClose)&&this.SourceData.Data.length>0)newItem.YClose=this.SourceData.Data[this.SourceData.Data.length-1].YClose;this.SourceData.Data.push(newItem);}else{var bFind=false;var aryKData=this.SourceData.Data;for(var i=aryKData.length-1;i>=0;--i){var kItem=aryKData[i];if(kItem.Date==realtimeData.Date){HistoryData.CopyTo(kItem,realtimeData);bFind=true;break;}}if(!bFind)return;}
|
|
7938
|
+
{JSConsole.Chart.Log('[KLineChartContainer::RecvRealtimeData] insert kline by realtime data',realtimeData);var newItem=new HistoryData();HistoryData.CopyTo(newItem,realtimeData);if(!IFrameSplitOperator.IsNumber(newItem.YClose)&&this.SourceData.Data.length>0)newItem.YClose=this.SourceData.Data[this.SourceData.Data.length-1].YClose;this.SourceData.Data.push(newItem);}else{var bFind=false;var aryKData=this.SourceData.Data;for(var i=aryKData.length-1;i>=0;--i){var kItem=aryKData[i];if(kItem.Date==realtimeData.Date){HistoryData.CopyTo(kItem,realtimeData);bFind=true;break;}}if(!bFind)return;}if(data.LatestPointFlash)//最新数据闪烁
|
|
7939
|
+
{var item=data.LatestPointFlash;if(IFrameSplitOperator.IsNumber(item.FlashCount))this.SetLatestPointFlash(item.FlashCount);}var bindData=new ChartData();bindData.Data=this.SourceData.Data;bindData.Period=this.Period;bindData.Right=this.Right;bindData.DataType=this.SourceData.DataType;bindData.Symbol=this.Symbol;if(bindData.Right>0&&ChartData.IsDayPeriod(bindData.Period,true)&&MARKET_SUFFIX_NAME.IsSHSZStockA(this.Symbol)&&!this.IsApiPeriod)//复权(A股日线数据才复权)
|
|
7912
7940
|
{var rightData=bindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});bindData.Data=rightData;}if(!this.IsApiPeriod){if(ChartData.IsDayPeriod(bindData.Period,false)||ChartData.IsMinutePeriod(bindData.Period,false))//周期数据 (0= 日线,4=1分钟线 不需要处理)
|
|
7913
7941
|
{var periodData=bindData.GetPeriodData(bindData.Period);bindData.Data=periodData;}}var kLineCalculate=this.GetKLineCalulate();if(kLineCalculate)//额外的K线图形计算
|
|
7914
7942
|
{var newBindData=kLineCalculate.RecvHistoryData(bindData,{Symbol:this.Symbol,Function:"RecvRealtimeData"});bindData=newBindData;this.FlowCapitalReady=true;}this.UpdateMainData(bindData,lastDataCount);//更新主图数据
|
|
@@ -13094,7 +13122,7 @@ this.DrawItemTextV2(drawInfo,rtItem);}else{this.DrawItemText(text,textColor,text
|
|
|
13094
13122
|
var tooltipData=(0,_defineProperty3.default)({Rect:rtItem,Data:data,Index:dataIndex,Column:item,Type:drawInfo.Tooltip.Type},'Data',drawInfo.Tooltip.Data);this.TooltipRect.push(tooltipData);}else if(item.ChartTooltip&&item.ChartTooltip.Enable&&IFrameSplitOperator.IsNumber(item.ChartTooltip.Type))//Type 20分时图 21K线图
|
|
13095
13123
|
{var tooltipData={Rect:rtItem,Data:data,Index:dataIndex,Column:item,Type:item.ChartTooltip.Type};this.TooltipRect.push(tooltipData);}left+=item.Width;}};this.FormatReserveNumber=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_DEAL_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var value=data[fieldName];if(!IFrameSplitOperator.IsNumber(value))return;if(IFrameSplitOperator.IsNumber(column.ColorType)){if(column.ColorType==1){drawInfo.TextColor=this.GetUpDownColor(value,0);}else if(column.ColorType==2){drawInfo.TextColor=this.GetUpDownColorV2(value,0);}}var text=value.toFixed(column.FloatPrecision);if(column.Format&&IFrameSplitOperator.IsNumber(column.Format.Type)){var format=column.Format;switch(format.Type){case 1://原始数据
|
|
13096
13124
|
text=value.toFixed(column.FloatPrecision);break;case 2://千分位分割
|
|
13097
|
-
text=IFrameSplitOperator.FormatValueThousandsString(value,column.FloatPrecision);break;case 3:var exfloatPrecision=1;if(IFrameSplitOperator.IsNumber(format.ExFloatPrecision))exfloatPrecision=format.ExFloatPrecision;text=IFrameSplitOperator.FormatValueStringV2(value,column.FloatPrecision,exfloatPrecision);break;}}drawInfo.Text=text;};this.FormatReserveString=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_DEAL_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var item=data[fieldName];if(IFrameSplitOperator.IsObject(item)){if(item.Text)drawInfo.Text=item.Text;if(item.TextColor)drawInfo.TextColor=item.TextColor;if(item.BGColor)drawInfo.BGColor=item.BGColor;}else if(IFrameSplitOperator.IsString(item)){drawInfo.Text=item;}if(item&&item.Tooltip&&IFrameSplitOperator.IsNonEmptyArray(item.Tooltip.AryText)){drawInfo.Tooltip={Type:2,Data:{AryText:item.Tooltip.AryText}};}};this.GetUpDownColor=function(price,price2){if(price>price2)return this.UpColor;else if(price<price2)return this.DownColor;else return this.UnchangeColor;};this.GetUpDownColorV2=function(price,price2){if(price>=price2)return this.UpColor;else return this.DownColor;};this.DrawSelectedRow=function(data,index,rtRow){if(!this.SelectedData)return false;if(!this.SelectedData.Enable)return false;if(!this.SelectedData.Guid||this.SelectedData.Guid!=data.Guid)return false;if(this.SelectedStyle==1){this.Canvas.fillStyle=this.SelectedConfig.BGColor;this.Canvas.fillRect(rtRow.Left,rtRow.Top,rtRow.Width,rtRow.Height);}return true;};this.DrawItemText=function(text,textColor,textAlign,left,top,width){var x=left;if(textAlign=='center'){x=left+width/2;this.Canvas.textAlign="center";}else if(textAlign=='right'){x=left+width;this.Canvas.textAlign="right";}else{this.Canvas.textAlign="left";}this.Canvas.textBaseline="bottom";this.Canvas.fillStyle=textColor;if(text)this.Canvas.fillText(text,x,top+this.RowHeight-2);};this.DrawItemTextV2=function(drawInfo,rtItem){if(drawInfo.BGColor){this.Canvas.fillStyle=drawInfo.BGColor;this.Canvas.fillRect(rtItem.Left,rtItem.Top,rtItem.Width,rtItem.Height);}if(drawInfo.Text){var text=drawInfo.Text;var x=rtItem.Left;if(drawInfo.TextAlign=='center'){x=rtItem.Left+rtItem.Width/2;this.Canvas.textAlign="center";}else if(drawInfo.TextAlign=='right'){x=rtItem.Left+rtItem.Width-2;this.Canvas.textAlign="right";}else{x+=2;this.Canvas.textAlign="left";}var textWidth=this.Canvas.measureText(text).width+1;this.Canvas.textBaseline="bottom";this.Canvas.fillStyle=drawInfo.TextColor;this.Canvas.fillText(text,x,rtItem.Top+this.RowHeight-2);}};this.DrawMultiBar=function(colunmInfo,data,rtItem){if(!data.Source||!IFrameSplitOperator.IsNonEmptyArray(data.Source))return false;var barData=data.Source[colunmInfo.DataIndex];//{ Value:[0.4,0,2], Color:[0,1] };
|
|
13125
|
+
text=IFrameSplitOperator.FormatValueThousandsString(value,column.FloatPrecision);break;case 3:var exfloatPrecision=1;if(IFrameSplitOperator.IsNumber(format.ExFloatPrecision))exfloatPrecision=format.ExFloatPrecision;text=IFrameSplitOperator.FormatValueStringV2(value,column.FloatPrecision,exfloatPrecision);break;}}drawInfo.Text=text;};this.FormatReserveString=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_DEAL_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var item=data[fieldName];if(IFrameSplitOperator.IsObject(item)){if(item.Text)drawInfo.Text=item.Text;if(item.TextColor)drawInfo.TextColor=item.TextColor;if(item.BGColor)drawInfo.BGColor=item.BGColor;}else if(IFrameSplitOperator.IsString(item)){drawInfo.Text=item;}if(item&&item.Tooltip&&IFrameSplitOperator.IsNonEmptyArray(item.Tooltip.AryText)){drawInfo.Tooltip={Type:2,Data:{AryText:item.Tooltip.AryText}};}};this.GetUpDownColor=function(price,price2){if(price>price2)return this.UpColor;else if(price<price2)return this.DownColor;else return this.UnchangeColor;};this.GetUpDownColorV2=function(price,price2){if(price>=price2)return this.UpColor;else return this.DownColor;};this.DrawSelectedRow=function(data,index,rtRow){if(!this.SelectedData)return false;if(!this.SelectedData.Enable)return false;if(!this.SelectedData.Guid||this.SelectedData.Guid!=data.Guid)return false;if(this.SelectedStyle==1){this.Canvas.fillStyle=this.SelectedConfig.BGColor;this.Canvas.fillRect(rtRow.Left+1,rtRow.Top+1,rtRow.Width-2,rtRow.Height-2);}return true;};this.DrawItemText=function(text,textColor,textAlign,left,top,width){var x=left;if(textAlign=='center'){x=left+width/2;this.Canvas.textAlign="center";}else if(textAlign=='right'){x=left+width;this.Canvas.textAlign="right";}else{this.Canvas.textAlign="left";}this.Canvas.textBaseline="bottom";this.Canvas.fillStyle=textColor;if(text)this.Canvas.fillText(text,x,top+this.RowHeight-2);};this.DrawItemTextV2=function(drawInfo,rtItem){if(drawInfo.BGColor){this.Canvas.fillStyle=drawInfo.BGColor;this.Canvas.fillRect(rtItem.Left,rtItem.Top,rtItem.Width,rtItem.Height);}if(drawInfo.Text){var text=drawInfo.Text;var x=rtItem.Left;if(drawInfo.TextAlign=='center'){x=rtItem.Left+rtItem.Width/2;this.Canvas.textAlign="center";}else if(drawInfo.TextAlign=='right'){x=rtItem.Left+rtItem.Width-2;this.Canvas.textAlign="right";}else{x+=2;this.Canvas.textAlign="left";}var textWidth=this.Canvas.measureText(text).width+1;this.Canvas.textBaseline="bottom";this.Canvas.fillStyle=drawInfo.TextColor;this.Canvas.fillText(text,x,rtItem.Top+this.RowHeight-2);}};this.DrawMultiBar=function(colunmInfo,data,rtItem){if(!data.Source||!IFrameSplitOperator.IsNonEmptyArray(data.Source))return false;var barData=data.Source[colunmInfo.DataIndex];//{ Value:[0.4,0,2], Color:[0,1] };
|
|
13098
13126
|
if(!barData)return false;if(!IFrameSplitOperator.IsNonEmptyArray(barData.Value))return false;var width=rtItem.Width-this.BarMergin.Left-this.BarMergin.Right;var left=rtItem.Left+this.BarMergin.Left;var top=rtItem.Top+this.RowMergin.Top+this.BarMergin.Top;var height=rtItem.Height-this.RowMergin.Top-this.RowMergin.Bottom-this.BarMergin.Top-this.BarMergin.Bottom;var right=left+width;for(var i=0;i<barData.Value.length;++i){var value=barData.Value[i];if(value<=0)continue;if(left>=right)break;var barWidth=width*value;if(barWidth<1)barWidth=1;if(left+barWidth>right)barWidth=right-left;var colorIndex=i;if(IFrameSplitOperator.IsNonEmptyArray(barData.Color)&&i<barData.Color.length)colorIndex=barData.Color[i];this.Canvas.fillStyle=g_JSChartResource.DealList.FieldColor.Bar[colorIndex];this.Canvas.fillRect(left,top,barWidth,height);left+=barWidth;}return true;};this.DrawCenterBar=function(colunmInfo,data,rtItem){if(!data.Source||!IFrameSplitOperator.IsNonEmptyArray(data.Source))return false;var barData=data.Source[colunmInfo.DataIndex];//{ Value:[0.4,0,2], Color:[0,1] };
|
|
13099
13127
|
if(!barData)return false;if(!IFrameSplitOperator.IsNonEmptyArray(barData.Value))return false;var width=(rtItem.Width-this.BarMergin.Left-this.BarMergin.Right)/2;var left=rtItem.Left+this.BarMergin.Left;var center=left+width;var top=rtItem.Top+this.RowMergin.Top+this.BarMergin.Top;var height=rtItem.Height-this.RowMergin.Top-this.RowMergin.Bottom-this.BarMergin.Top-this.BarMergin.Bottom;var right=left+width;for(var i=0;i<barData.Value.length&&i<2;++i){var value=barData.Value[i];if(value<=0)continue;if(value>1)value=1;var barWidth=width*value;if(barWidth<1)barWidth=1;var colorIndex=i;if(IFrameSplitOperator.IsNonEmptyArray(barData.Color)&&i<barData.Color.length)colorIndex=barData.Color[i];this.Canvas.fillStyle=g_JSChartResource.DealList.FieldColor.Bar[colorIndex];if(i==0)//左边
|
|
13100
13128
|
{this.Canvas.fillRect(center,top,-barWidth,height);}else//右边
|
|
@@ -15050,7 +15078,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
15050
15078
|
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);};}/********************************************************************************
|
|
15051
15079
|
* 版本信息输出
|
|
15052
15080
|
*
|
|
15053
|
-
*/var HQCHART_VERSION="1.1.
|
|
15081
|
+
*/var HQCHART_VERSION="1.1.14854";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();//把给外界调用的方法暴露出来
|
|
15054
15082
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
15055
15083
|
// BaseIndex:BaseIndex,
|
|
15056
15084
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -2020,7 +2020,7 @@ function ChartDealList()
|
|
|
2020
2020
|
if ( this.SelectedStyle==1)
|
|
2021
2021
|
{
|
|
2022
2022
|
this.Canvas.fillStyle=this.SelectedConfig.BGColor;
|
|
2023
|
-
this.Canvas.fillRect(rtRow.Left,rtRow.Top, rtRow.Width, rtRow.Height);
|
|
2023
|
+
this.Canvas.fillRect(rtRow.Left+1,rtRow.Top+1, rtRow.Width-2, rtRow.Height-2);
|
|
2024
2024
|
}
|
|
2025
2025
|
|
|
2026
2026
|
return true;
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -787,6 +787,17 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
787
787
|
|
|
788
788
|
this.AdjustTitleHeight(chart);
|
|
789
789
|
|
|
790
|
+
if (option.LatestPointFlash)
|
|
791
|
+
{
|
|
792
|
+
var item=option.LatestPointFlash;
|
|
793
|
+
if (item.Enable)
|
|
794
|
+
{
|
|
795
|
+
this.CreateExtraCanvasElement(JSChart.LatestPointFlashKey, { ZIndex:6 });
|
|
796
|
+
chart.CreateExtendChart("LatestPointFlashPaint", item);
|
|
797
|
+
chart.StartLatestPointFlash();
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
|
|
790
801
|
return chart;
|
|
791
802
|
}
|
|
792
803
|
|
|
@@ -2834,6 +2845,12 @@ var JSCHART_OPERATOR_ID=
|
|
|
2834
2845
|
OP_GOTO_BY_DATAINDEX:17, //的移动到某一个数据起始位置
|
|
2835
2846
|
|
|
2836
2847
|
OP_MOVE_CORSSCURSOR:18, //移动十字光标 { Step, Start:{ Date:, Time: } }
|
|
2848
|
+
|
|
2849
|
+
OP_CORSSCURSOR_PAGE_START:19, //当前屏第1条数据
|
|
2850
|
+
OP_CORSSCURSOR_PAGE_END:20, //当前屏最后1条数据
|
|
2851
|
+
|
|
2852
|
+
OP_CORSSCURSOR_DATA_START:21, //所有数据的第1条数据
|
|
2853
|
+
OP_CORSSCURSOR_DATA_END:22, //所有数据的最后1条数据
|
|
2837
2854
|
}
|
|
2838
2855
|
|
|
2839
2856
|
var JSCHART_DRAG_ID=
|
|
@@ -7783,6 +7800,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7783
7800
|
}
|
|
7784
7801
|
break;
|
|
7785
7802
|
case 13: //回车
|
|
7803
|
+
case 35: //END
|
|
7804
|
+
case 36: //HOME
|
|
7786
7805
|
if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
|
|
7787
7806
|
break;
|
|
7788
7807
|
default:
|
|
@@ -27235,6 +27254,8 @@ function ChartKLine()
|
|
|
27235
27254
|
LeftMargin:g_JSChartResource.DaySummaryKLine.LeftMargin,
|
|
27236
27255
|
}
|
|
27237
27256
|
|
|
27257
|
+
this.LastPoint={ }; //最后一个点的信息 {X, Y, KItem:, Date:, Time: }
|
|
27258
|
+
|
|
27238
27259
|
this.AddToDaySummary=function(kItem)
|
|
27239
27260
|
{
|
|
27240
27261
|
if (!this.DaySummary.Enable) return false;
|
|
@@ -27738,6 +27759,8 @@ function ChartKLine()
|
|
|
27738
27759
|
if (i==this.Data.Data.length-1)
|
|
27739
27760
|
{
|
|
27740
27761
|
ptLast={ X:x, Y:yClose, XLeft:left, XRight:right, KItem:data, ChartRight:chartright };
|
|
27762
|
+
|
|
27763
|
+
this.LastPoint={ X:x, Y:yClose, KItem:data };
|
|
27741
27764
|
}
|
|
27742
27765
|
|
|
27743
27766
|
if (this.PriceGap.Enable )
|
|
@@ -27871,6 +27894,11 @@ function ChartKLine()
|
|
|
27871
27894
|
|
|
27872
27895
|
prePoint={ X:x, Y:yClose};
|
|
27873
27896
|
|
|
27897
|
+
if (i==this.Data.Data.length-1) //最后一个点
|
|
27898
|
+
{
|
|
27899
|
+
this.LastPoint={ X:x, Y:yClose, KItem:data };
|
|
27900
|
+
}
|
|
27901
|
+
|
|
27874
27902
|
if (this.PriceGap.Enable)
|
|
27875
27903
|
{
|
|
27876
27904
|
var yLow=this.GetYFromData(data.Low, false);
|
|
@@ -29834,8 +29862,29 @@ function ChartKLine()
|
|
|
29834
29862
|
this.Canvas.clip();
|
|
29835
29863
|
}
|
|
29836
29864
|
|
|
29865
|
+
this.ClearLastPoint=function()
|
|
29866
|
+
{
|
|
29867
|
+
this.LastPoint={ };
|
|
29868
|
+
if (this.ChartFrame.GlobalOption)
|
|
29869
|
+
{
|
|
29870
|
+
var item=this.ChartFrame.GlobalOption;
|
|
29871
|
+
item.LatestPoint=null;
|
|
29872
|
+
}
|
|
29873
|
+
}
|
|
29874
|
+
|
|
29875
|
+
this.UpdateGlobalLatestPoint=function()
|
|
29876
|
+
{
|
|
29877
|
+
if (this.Identify!="Main-KLine") return;
|
|
29878
|
+
if (!this.ChartFrame.GlobalOption) return;
|
|
29879
|
+
|
|
29880
|
+
var item=this.ChartFrame.GlobalOption;
|
|
29881
|
+
if (IFrameSplitOperator.IsNumber(this.LastPoint.X) && IFrameSplitOperator.IsNumber(this.LastPoint.Y))
|
|
29882
|
+
item.LatestPoint={ X:this.LastPoint.X, Y:this.LastPoint.Y };
|
|
29883
|
+
}
|
|
29884
|
+
|
|
29837
29885
|
this.Draw=function()
|
|
29838
29886
|
{
|
|
29887
|
+
this.ClearLastPoint();
|
|
29839
29888
|
if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
|
|
29840
29889
|
if (this.IsShowIndexTitleOnly()) return;
|
|
29841
29890
|
if (this.IsHideScriptIndex()) return;
|
|
@@ -29892,6 +29941,7 @@ function ChartKLine()
|
|
|
29892
29941
|
this.Canvas.restore();
|
|
29893
29942
|
this.DrawPredictionLine();
|
|
29894
29943
|
if (this.PriceGap.Enable) this.DrawPriceGap();
|
|
29944
|
+
this.UpdateGlobalLatestPoint();
|
|
29895
29945
|
return;
|
|
29896
29946
|
}
|
|
29897
29947
|
else if (this.DrawType==2)
|
|
@@ -29963,6 +30013,8 @@ function ChartKLine()
|
|
|
29963
30013
|
|
|
29964
30014
|
this.Canvas.restore();
|
|
29965
30015
|
|
|
30016
|
+
this.UpdateGlobalLatestPoint();
|
|
30017
|
+
|
|
29966
30018
|
this.DrawPredictionLine();
|
|
29967
30019
|
if (this.PriceGap.Enable) this.DrawPriceGap();
|
|
29968
30020
|
|
|
@@ -52066,6 +52118,7 @@ function LatestPointFlashPaint()
|
|
|
52066
52118
|
this.BGColor=g_JSChartResource.LatestPointFlash.BGColor;
|
|
52067
52119
|
this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;
|
|
52068
52120
|
this.DrawPriority=IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25;
|
|
52121
|
+
this.Style=1; //0=默认配置 1=图形保持一致
|
|
52069
52122
|
this.FlashCanvas;
|
|
52070
52123
|
|
|
52071
52124
|
this.SetOption=function(option)
|
|
@@ -52090,6 +52143,23 @@ function LatestPointFlashPaint()
|
|
|
52090
52143
|
this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;
|
|
52091
52144
|
}
|
|
52092
52145
|
|
|
52146
|
+
this.GetChartColor=function()
|
|
52147
|
+
{
|
|
52148
|
+
var chart=this.HQChart.ChartPaint[0];
|
|
52149
|
+
if (!chart) return;
|
|
52150
|
+
|
|
52151
|
+
if (chart.ClassName=="ChartKLine")
|
|
52152
|
+
{
|
|
52153
|
+
this.PointColor=chart.CloseLineColor;
|
|
52154
|
+
this.BGColor=IChartDrawPicture.ColorToRGBA(chart.CloseLineColor, 0.6);
|
|
52155
|
+
}
|
|
52156
|
+
else if (chart.ClassName=="ChartMinutePriceLine")
|
|
52157
|
+
{
|
|
52158
|
+
this.PointColor=chart.Color;
|
|
52159
|
+
this.BGColor=IChartDrawPicture.ColorToRGBA(chart.Color, 0.6);
|
|
52160
|
+
}
|
|
52161
|
+
}
|
|
52162
|
+
|
|
52093
52163
|
this.Draw=function()
|
|
52094
52164
|
{
|
|
52095
52165
|
if (!this.FlashCanvas) return;
|
|
@@ -52108,6 +52178,8 @@ function LatestPointFlashPaint()
|
|
|
52108
52178
|
var point=this.HQChart.GlobalOption.LatestPoint;
|
|
52109
52179
|
if (!IFrameSplitOperator.IsNumber(point.X) || !IFrameSplitOperator.IsNumber(point.Y)) return;
|
|
52110
52180
|
|
|
52181
|
+
if (this.Style==1) this.GetChartColor();
|
|
52182
|
+
|
|
52111
52183
|
this.FlashCanvas.fillStyle=this.BGColor;
|
|
52112
52184
|
this.FlashCanvas.beginPath();
|
|
52113
52185
|
this.FlashCanvas.arc(point.X,point.Y,this.BGRadius,0,360,false);
|
|
@@ -80103,6 +80175,80 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80103
80175
|
return true;
|
|
80104
80176
|
}
|
|
80105
80177
|
}
|
|
80178
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
|
|
80179
|
+
{
|
|
80180
|
+
var kData=this.GetKData();
|
|
80181
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
80182
|
+
var startIndex=kData.DataOffset;
|
|
80183
|
+
var kItem=kData.Data[startIndex];
|
|
80184
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
80185
|
+
return true;
|
|
80186
|
+
}
|
|
80187
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
|
|
80188
|
+
{
|
|
80189
|
+
var kData=this.GetKData();
|
|
80190
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
80191
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
80192
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
80193
|
+
var endIndex=kData.DataOffset+showCount-1;
|
|
80194
|
+
if (endIndex>=kData.Data.length) endIndex=kData.Data.length-1;
|
|
80195
|
+
var kItem=kData.Data[endIndex];
|
|
80196
|
+
var index=endIndex-kData.DataOffset;
|
|
80197
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
80198
|
+
return true;
|
|
80199
|
+
}
|
|
80200
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START)
|
|
80201
|
+
{
|
|
80202
|
+
var kData=this.GetKData();
|
|
80203
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
80204
|
+
var kItem=kData.Data[0];
|
|
80205
|
+
|
|
80206
|
+
if (kData.DataOffset!=0)
|
|
80207
|
+
{
|
|
80208
|
+
kData.DataOffset=0
|
|
80209
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
80210
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
80211
|
+
this.ResetFrameXSplit();
|
|
80212
|
+
this.Frame.SetSizeChage(true);
|
|
80213
|
+
this.Draw();
|
|
80214
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
80215
|
+
}
|
|
80216
|
+
else
|
|
80217
|
+
{
|
|
80218
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
80219
|
+
}
|
|
80220
|
+
|
|
80221
|
+
return true;
|
|
80222
|
+
}
|
|
80223
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END)
|
|
80224
|
+
{
|
|
80225
|
+
var kData=this.GetKData();
|
|
80226
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
80227
|
+
|
|
80228
|
+
var kItem=kData.Data[kData.Data.length-1];
|
|
80229
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
80230
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
80231
|
+
var dataOffset=kData.Data.length-showCount;
|
|
80232
|
+
|
|
80233
|
+
if (kData.DataOffset<dataOffset)
|
|
80234
|
+
{
|
|
80235
|
+
kData.DataOffset=dataOffset;
|
|
80236
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
80237
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
80238
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
80239
|
+
this.ResetFrameXSplit();
|
|
80240
|
+
this.Frame.SetSizeChage(true);
|
|
80241
|
+
this.Draw();
|
|
80242
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
80243
|
+
}
|
|
80244
|
+
else
|
|
80245
|
+
{
|
|
80246
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
80247
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
80248
|
+
}
|
|
80249
|
+
|
|
80250
|
+
return true;
|
|
80251
|
+
}
|
|
80106
80252
|
}
|
|
80107
80253
|
|
|
80108
80254
|
|
|
@@ -80463,6 +80609,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80463
80609
|
//Alt+W 区间统计
|
|
80464
80610
|
//Alt+数字 切换多个窗口
|
|
80465
80611
|
//Ctrl+I
|
|
80612
|
+
//HOME / END 当前屏 第1条 最后一条
|
|
80613
|
+
//Ctrl+HOME / Ctrl+END 第1条 最后一条
|
|
80466
80614
|
this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
|
|
80467
80615
|
{
|
|
80468
80616
|
if (keyID==37 && e.ctrlKey) //Ctrl+Left
|
|
@@ -80499,6 +80647,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80499
80647
|
{
|
|
80500
80648
|
this.OnEnterKeyDown();
|
|
80501
80649
|
}
|
|
80650
|
+
else if (keyID==36) //HOME 第1条
|
|
80651
|
+
{
|
|
80652
|
+
var option=null;
|
|
80653
|
+
if (e.ctrlKey)
|
|
80654
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START }; //所有数据的第1条数据
|
|
80655
|
+
else
|
|
80656
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
|
|
80657
|
+
|
|
80658
|
+
if (option) this.ChartOperator(option);
|
|
80659
|
+
}
|
|
80660
|
+
else if (keyID==35) //END 最后一条
|
|
80661
|
+
{
|
|
80662
|
+
var option=null;
|
|
80663
|
+
if (e.ctrlKey)
|
|
80664
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END }; //所有数据的最后1条数据
|
|
80665
|
+
else
|
|
80666
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
|
|
80667
|
+
|
|
80668
|
+
if (option) this.ChartOperator(option);
|
|
80669
|
+
}
|
|
80502
80670
|
else
|
|
80503
80671
|
{
|
|
80504
80672
|
return false;
|
|
@@ -82226,6 +82394,13 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
82226
82394
|
|
|
82227
82395
|
if (!bFind) return;
|
|
82228
82396
|
}
|
|
82397
|
+
|
|
82398
|
+
if (data.LatestPointFlash) //最新数据闪烁
|
|
82399
|
+
{
|
|
82400
|
+
var item=data.LatestPointFlash;
|
|
82401
|
+
if (IFrameSplitOperator.IsNumber(item.FlashCount))
|
|
82402
|
+
this.SetLatestPointFlash(item.FlashCount)
|
|
82403
|
+
}
|
|
82229
82404
|
|
|
82230
82405
|
var bindData=new ChartData();
|
|
82231
82406
|
bindData.Data=this.SourceData.Data;
|
|
@@ -4883,6 +4883,17 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4883
4883
|
|
|
4884
4884
|
this.AdjustTitleHeight(chart);
|
|
4885
4885
|
|
|
4886
|
+
if (option.LatestPointFlash)
|
|
4887
|
+
{
|
|
4888
|
+
var item=option.LatestPointFlash;
|
|
4889
|
+
if (item.Enable)
|
|
4890
|
+
{
|
|
4891
|
+
this.CreateExtraCanvasElement(JSChart.LatestPointFlashKey, { ZIndex:6 });
|
|
4892
|
+
chart.CreateExtendChart("LatestPointFlashPaint", item);
|
|
4893
|
+
chart.StartLatestPointFlash();
|
|
4894
|
+
}
|
|
4895
|
+
}
|
|
4896
|
+
|
|
4886
4897
|
return chart;
|
|
4887
4898
|
}
|
|
4888
4899
|
|
|
@@ -6930,6 +6941,12 @@ var JSCHART_OPERATOR_ID=
|
|
|
6930
6941
|
OP_GOTO_BY_DATAINDEX:17, //的移动到某一个数据起始位置
|
|
6931
6942
|
|
|
6932
6943
|
OP_MOVE_CORSSCURSOR:18, //移动十字光标 { Step, Start:{ Date:, Time: } }
|
|
6944
|
+
|
|
6945
|
+
OP_CORSSCURSOR_PAGE_START:19, //当前屏第1条数据
|
|
6946
|
+
OP_CORSSCURSOR_PAGE_END:20, //当前屏最后1条数据
|
|
6947
|
+
|
|
6948
|
+
OP_CORSSCURSOR_DATA_START:21, //所有数据的第1条数据
|
|
6949
|
+
OP_CORSSCURSOR_DATA_END:22, //所有数据的最后1条数据
|
|
6933
6950
|
}
|
|
6934
6951
|
|
|
6935
6952
|
var JSCHART_DRAG_ID=
|
|
@@ -11879,6 +11896,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11879
11896
|
}
|
|
11880
11897
|
break;
|
|
11881
11898
|
case 13: //回车
|
|
11899
|
+
case 35: //END
|
|
11900
|
+
case 36: //HOME
|
|
11882
11901
|
if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
|
|
11883
11902
|
break;
|
|
11884
11903
|
default:
|
|
@@ -31331,6 +31350,8 @@ function ChartKLine()
|
|
|
31331
31350
|
LeftMargin:g_JSChartResource.DaySummaryKLine.LeftMargin,
|
|
31332
31351
|
}
|
|
31333
31352
|
|
|
31353
|
+
this.LastPoint={ }; //最后一个点的信息 {X, Y, KItem:, Date:, Time: }
|
|
31354
|
+
|
|
31334
31355
|
this.AddToDaySummary=function(kItem)
|
|
31335
31356
|
{
|
|
31336
31357
|
if (!this.DaySummary.Enable) return false;
|
|
@@ -31834,6 +31855,8 @@ function ChartKLine()
|
|
|
31834
31855
|
if (i==this.Data.Data.length-1)
|
|
31835
31856
|
{
|
|
31836
31857
|
ptLast={ X:x, Y:yClose, XLeft:left, XRight:right, KItem:data, ChartRight:chartright };
|
|
31858
|
+
|
|
31859
|
+
this.LastPoint={ X:x, Y:yClose, KItem:data };
|
|
31837
31860
|
}
|
|
31838
31861
|
|
|
31839
31862
|
if (this.PriceGap.Enable )
|
|
@@ -31967,6 +31990,11 @@ function ChartKLine()
|
|
|
31967
31990
|
|
|
31968
31991
|
prePoint={ X:x, Y:yClose};
|
|
31969
31992
|
|
|
31993
|
+
if (i==this.Data.Data.length-1) //最后一个点
|
|
31994
|
+
{
|
|
31995
|
+
this.LastPoint={ X:x, Y:yClose, KItem:data };
|
|
31996
|
+
}
|
|
31997
|
+
|
|
31970
31998
|
if (this.PriceGap.Enable)
|
|
31971
31999
|
{
|
|
31972
32000
|
var yLow=this.GetYFromData(data.Low, false);
|
|
@@ -33930,8 +33958,29 @@ function ChartKLine()
|
|
|
33930
33958
|
this.Canvas.clip();
|
|
33931
33959
|
}
|
|
33932
33960
|
|
|
33961
|
+
this.ClearLastPoint=function()
|
|
33962
|
+
{
|
|
33963
|
+
this.LastPoint={ };
|
|
33964
|
+
if (this.ChartFrame.GlobalOption)
|
|
33965
|
+
{
|
|
33966
|
+
var item=this.ChartFrame.GlobalOption;
|
|
33967
|
+
item.LatestPoint=null;
|
|
33968
|
+
}
|
|
33969
|
+
}
|
|
33970
|
+
|
|
33971
|
+
this.UpdateGlobalLatestPoint=function()
|
|
33972
|
+
{
|
|
33973
|
+
if (this.Identify!="Main-KLine") return;
|
|
33974
|
+
if (!this.ChartFrame.GlobalOption) return;
|
|
33975
|
+
|
|
33976
|
+
var item=this.ChartFrame.GlobalOption;
|
|
33977
|
+
if (IFrameSplitOperator.IsNumber(this.LastPoint.X) && IFrameSplitOperator.IsNumber(this.LastPoint.Y))
|
|
33978
|
+
item.LatestPoint={ X:this.LastPoint.X, Y:this.LastPoint.Y };
|
|
33979
|
+
}
|
|
33980
|
+
|
|
33933
33981
|
this.Draw=function()
|
|
33934
33982
|
{
|
|
33983
|
+
this.ClearLastPoint();
|
|
33935
33984
|
if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
|
|
33936
33985
|
if (this.IsShowIndexTitleOnly()) return;
|
|
33937
33986
|
if (this.IsHideScriptIndex()) return;
|
|
@@ -33988,6 +34037,7 @@ function ChartKLine()
|
|
|
33988
34037
|
this.Canvas.restore();
|
|
33989
34038
|
this.DrawPredictionLine();
|
|
33990
34039
|
if (this.PriceGap.Enable) this.DrawPriceGap();
|
|
34040
|
+
this.UpdateGlobalLatestPoint();
|
|
33991
34041
|
return;
|
|
33992
34042
|
}
|
|
33993
34043
|
else if (this.DrawType==2)
|
|
@@ -34059,6 +34109,8 @@ function ChartKLine()
|
|
|
34059
34109
|
|
|
34060
34110
|
this.Canvas.restore();
|
|
34061
34111
|
|
|
34112
|
+
this.UpdateGlobalLatestPoint();
|
|
34113
|
+
|
|
34062
34114
|
this.DrawPredictionLine();
|
|
34063
34115
|
if (this.PriceGap.Enable) this.DrawPriceGap();
|
|
34064
34116
|
|
|
@@ -56162,6 +56214,7 @@ function LatestPointFlashPaint()
|
|
|
56162
56214
|
this.BGColor=g_JSChartResource.LatestPointFlash.BGColor;
|
|
56163
56215
|
this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;
|
|
56164
56216
|
this.DrawPriority=IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25;
|
|
56217
|
+
this.Style=1; //0=默认配置 1=图形保持一致
|
|
56165
56218
|
this.FlashCanvas;
|
|
56166
56219
|
|
|
56167
56220
|
this.SetOption=function(option)
|
|
@@ -56186,6 +56239,23 @@ function LatestPointFlashPaint()
|
|
|
56186
56239
|
this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;
|
|
56187
56240
|
}
|
|
56188
56241
|
|
|
56242
|
+
this.GetChartColor=function()
|
|
56243
|
+
{
|
|
56244
|
+
var chart=this.HQChart.ChartPaint[0];
|
|
56245
|
+
if (!chart) return;
|
|
56246
|
+
|
|
56247
|
+
if (chart.ClassName=="ChartKLine")
|
|
56248
|
+
{
|
|
56249
|
+
this.PointColor=chart.CloseLineColor;
|
|
56250
|
+
this.BGColor=IChartDrawPicture.ColorToRGBA(chart.CloseLineColor, 0.6);
|
|
56251
|
+
}
|
|
56252
|
+
else if (chart.ClassName=="ChartMinutePriceLine")
|
|
56253
|
+
{
|
|
56254
|
+
this.PointColor=chart.Color;
|
|
56255
|
+
this.BGColor=IChartDrawPicture.ColorToRGBA(chart.Color, 0.6);
|
|
56256
|
+
}
|
|
56257
|
+
}
|
|
56258
|
+
|
|
56189
56259
|
this.Draw=function()
|
|
56190
56260
|
{
|
|
56191
56261
|
if (!this.FlashCanvas) return;
|
|
@@ -56204,6 +56274,8 @@ function LatestPointFlashPaint()
|
|
|
56204
56274
|
var point=this.HQChart.GlobalOption.LatestPoint;
|
|
56205
56275
|
if (!IFrameSplitOperator.IsNumber(point.X) || !IFrameSplitOperator.IsNumber(point.Y)) return;
|
|
56206
56276
|
|
|
56277
|
+
if (this.Style==1) this.GetChartColor();
|
|
56278
|
+
|
|
56207
56279
|
this.FlashCanvas.fillStyle=this.BGColor;
|
|
56208
56280
|
this.FlashCanvas.beginPath();
|
|
56209
56281
|
this.FlashCanvas.arc(point.X,point.Y,this.BGRadius,0,360,false);
|
|
@@ -84199,6 +84271,80 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84199
84271
|
return true;
|
|
84200
84272
|
}
|
|
84201
84273
|
}
|
|
84274
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
|
|
84275
|
+
{
|
|
84276
|
+
var kData=this.GetKData();
|
|
84277
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84278
|
+
var startIndex=kData.DataOffset;
|
|
84279
|
+
var kItem=kData.Data[startIndex];
|
|
84280
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84281
|
+
return true;
|
|
84282
|
+
}
|
|
84283
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
|
|
84284
|
+
{
|
|
84285
|
+
var kData=this.GetKData();
|
|
84286
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84287
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
84288
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
84289
|
+
var endIndex=kData.DataOffset+showCount-1;
|
|
84290
|
+
if (endIndex>=kData.Data.length) endIndex=kData.Data.length-1;
|
|
84291
|
+
var kItem=kData.Data[endIndex];
|
|
84292
|
+
var index=endIndex-kData.DataOffset;
|
|
84293
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84294
|
+
return true;
|
|
84295
|
+
}
|
|
84296
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START)
|
|
84297
|
+
{
|
|
84298
|
+
var kData=this.GetKData();
|
|
84299
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84300
|
+
var kItem=kData.Data[0];
|
|
84301
|
+
|
|
84302
|
+
if (kData.DataOffset!=0)
|
|
84303
|
+
{
|
|
84304
|
+
kData.DataOffset=0
|
|
84305
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
84306
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
84307
|
+
this.ResetFrameXSplit();
|
|
84308
|
+
this.Frame.SetSizeChage(true);
|
|
84309
|
+
this.Draw();
|
|
84310
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84311
|
+
}
|
|
84312
|
+
else
|
|
84313
|
+
{
|
|
84314
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84315
|
+
}
|
|
84316
|
+
|
|
84317
|
+
return true;
|
|
84318
|
+
}
|
|
84319
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END)
|
|
84320
|
+
{
|
|
84321
|
+
var kData=this.GetKData();
|
|
84322
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84323
|
+
|
|
84324
|
+
var kItem=kData.Data[kData.Data.length-1];
|
|
84325
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
84326
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
84327
|
+
var dataOffset=kData.Data.length-showCount;
|
|
84328
|
+
|
|
84329
|
+
if (kData.DataOffset<dataOffset)
|
|
84330
|
+
{
|
|
84331
|
+
kData.DataOffset=dataOffset;
|
|
84332
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
84333
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
84334
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
84335
|
+
this.ResetFrameXSplit();
|
|
84336
|
+
this.Frame.SetSizeChage(true);
|
|
84337
|
+
this.Draw();
|
|
84338
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84339
|
+
}
|
|
84340
|
+
else
|
|
84341
|
+
{
|
|
84342
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
84343
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84344
|
+
}
|
|
84345
|
+
|
|
84346
|
+
return true;
|
|
84347
|
+
}
|
|
84202
84348
|
}
|
|
84203
84349
|
|
|
84204
84350
|
|
|
@@ -84559,6 +84705,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84559
84705
|
//Alt+W 区间统计
|
|
84560
84706
|
//Alt+数字 切换多个窗口
|
|
84561
84707
|
//Ctrl+I
|
|
84708
|
+
//HOME / END 当前屏 第1条 最后一条
|
|
84709
|
+
//Ctrl+HOME / Ctrl+END 第1条 最后一条
|
|
84562
84710
|
this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
|
|
84563
84711
|
{
|
|
84564
84712
|
if (keyID==37 && e.ctrlKey) //Ctrl+Left
|
|
@@ -84595,6 +84743,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84595
84743
|
{
|
|
84596
84744
|
this.OnEnterKeyDown();
|
|
84597
84745
|
}
|
|
84746
|
+
else if (keyID==36) //HOME 第1条
|
|
84747
|
+
{
|
|
84748
|
+
var option=null;
|
|
84749
|
+
if (e.ctrlKey)
|
|
84750
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START }; //所有数据的第1条数据
|
|
84751
|
+
else
|
|
84752
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
|
|
84753
|
+
|
|
84754
|
+
if (option) this.ChartOperator(option);
|
|
84755
|
+
}
|
|
84756
|
+
else if (keyID==35) //END 最后一条
|
|
84757
|
+
{
|
|
84758
|
+
var option=null;
|
|
84759
|
+
if (e.ctrlKey)
|
|
84760
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END }; //所有数据的最后1条数据
|
|
84761
|
+
else
|
|
84762
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
|
|
84763
|
+
|
|
84764
|
+
if (option) this.ChartOperator(option);
|
|
84765
|
+
}
|
|
84598
84766
|
else
|
|
84599
84767
|
{
|
|
84600
84768
|
return false;
|
|
@@ -86322,6 +86490,13 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
86322
86490
|
|
|
86323
86491
|
if (!bFind) return;
|
|
86324
86492
|
}
|
|
86493
|
+
|
|
86494
|
+
if (data.LatestPointFlash) //最新数据闪烁
|
|
86495
|
+
{
|
|
86496
|
+
var item=data.LatestPointFlash;
|
|
86497
|
+
if (IFrameSplitOperator.IsNumber(item.FlashCount))
|
|
86498
|
+
this.SetLatestPointFlash(item.FlashCount)
|
|
86499
|
+
}
|
|
86325
86500
|
|
|
86326
86501
|
var bindData=new ChartData();
|
|
86327
86502
|
bindData.Data=this.SourceData.Data;
|
|
@@ -136583,7 +136758,7 @@ function ChartDealList()
|
|
|
136583
136758
|
if ( this.SelectedStyle==1)
|
|
136584
136759
|
{
|
|
136585
136760
|
this.Canvas.fillStyle=this.SelectedConfig.BGColor;
|
|
136586
|
-
this.Canvas.fillRect(rtRow.Left,rtRow.Top, rtRow.Width, rtRow.Height);
|
|
136761
|
+
this.Canvas.fillRect(rtRow.Left+1,rtRow.Top+1, rtRow.Width-2, rtRow.Height-2);
|
|
136587
136762
|
}
|
|
136588
136763
|
|
|
136589
136764
|
return true;
|
|
@@ -150093,7 +150268,7 @@ function ScrollBarBGChart()
|
|
|
150093
150268
|
|
|
150094
150269
|
|
|
150095
150270
|
|
|
150096
|
-
var HQCHART_VERSION="1.1.
|
|
150271
|
+
var HQCHART_VERSION="1.1.14854";
|
|
150097
150272
|
|
|
150098
150273
|
function PrintHQChartVersion()
|
|
150099
150274
|
{
|
|
@@ -4927,6 +4927,17 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4927
4927
|
|
|
4928
4928
|
this.AdjustTitleHeight(chart);
|
|
4929
4929
|
|
|
4930
|
+
if (option.LatestPointFlash)
|
|
4931
|
+
{
|
|
4932
|
+
var item=option.LatestPointFlash;
|
|
4933
|
+
if (item.Enable)
|
|
4934
|
+
{
|
|
4935
|
+
this.CreateExtraCanvasElement(JSChart.LatestPointFlashKey, { ZIndex:6 });
|
|
4936
|
+
chart.CreateExtendChart("LatestPointFlashPaint", item);
|
|
4937
|
+
chart.StartLatestPointFlash();
|
|
4938
|
+
}
|
|
4939
|
+
}
|
|
4940
|
+
|
|
4930
4941
|
return chart;
|
|
4931
4942
|
}
|
|
4932
4943
|
|
|
@@ -6974,6 +6985,12 @@ var JSCHART_OPERATOR_ID=
|
|
|
6974
6985
|
OP_GOTO_BY_DATAINDEX:17, //的移动到某一个数据起始位置
|
|
6975
6986
|
|
|
6976
6987
|
OP_MOVE_CORSSCURSOR:18, //移动十字光标 { Step, Start:{ Date:, Time: } }
|
|
6988
|
+
|
|
6989
|
+
OP_CORSSCURSOR_PAGE_START:19, //当前屏第1条数据
|
|
6990
|
+
OP_CORSSCURSOR_PAGE_END:20, //当前屏最后1条数据
|
|
6991
|
+
|
|
6992
|
+
OP_CORSSCURSOR_DATA_START:21, //所有数据的第1条数据
|
|
6993
|
+
OP_CORSSCURSOR_DATA_END:22, //所有数据的最后1条数据
|
|
6977
6994
|
}
|
|
6978
6995
|
|
|
6979
6996
|
var JSCHART_DRAG_ID=
|
|
@@ -11923,6 +11940,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11923
11940
|
}
|
|
11924
11941
|
break;
|
|
11925
11942
|
case 13: //回车
|
|
11943
|
+
case 35: //END
|
|
11944
|
+
case 36: //HOME
|
|
11926
11945
|
if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
|
|
11927
11946
|
break;
|
|
11928
11947
|
default:
|
|
@@ -31375,6 +31394,8 @@ function ChartKLine()
|
|
|
31375
31394
|
LeftMargin:g_JSChartResource.DaySummaryKLine.LeftMargin,
|
|
31376
31395
|
}
|
|
31377
31396
|
|
|
31397
|
+
this.LastPoint={ }; //最后一个点的信息 {X, Y, KItem:, Date:, Time: }
|
|
31398
|
+
|
|
31378
31399
|
this.AddToDaySummary=function(kItem)
|
|
31379
31400
|
{
|
|
31380
31401
|
if (!this.DaySummary.Enable) return false;
|
|
@@ -31878,6 +31899,8 @@ function ChartKLine()
|
|
|
31878
31899
|
if (i==this.Data.Data.length-1)
|
|
31879
31900
|
{
|
|
31880
31901
|
ptLast={ X:x, Y:yClose, XLeft:left, XRight:right, KItem:data, ChartRight:chartright };
|
|
31902
|
+
|
|
31903
|
+
this.LastPoint={ X:x, Y:yClose, KItem:data };
|
|
31881
31904
|
}
|
|
31882
31905
|
|
|
31883
31906
|
if (this.PriceGap.Enable )
|
|
@@ -32011,6 +32034,11 @@ function ChartKLine()
|
|
|
32011
32034
|
|
|
32012
32035
|
prePoint={ X:x, Y:yClose};
|
|
32013
32036
|
|
|
32037
|
+
if (i==this.Data.Data.length-1) //最后一个点
|
|
32038
|
+
{
|
|
32039
|
+
this.LastPoint={ X:x, Y:yClose, KItem:data };
|
|
32040
|
+
}
|
|
32041
|
+
|
|
32014
32042
|
if (this.PriceGap.Enable)
|
|
32015
32043
|
{
|
|
32016
32044
|
var yLow=this.GetYFromData(data.Low, false);
|
|
@@ -33974,8 +34002,29 @@ function ChartKLine()
|
|
|
33974
34002
|
this.Canvas.clip();
|
|
33975
34003
|
}
|
|
33976
34004
|
|
|
34005
|
+
this.ClearLastPoint=function()
|
|
34006
|
+
{
|
|
34007
|
+
this.LastPoint={ };
|
|
34008
|
+
if (this.ChartFrame.GlobalOption)
|
|
34009
|
+
{
|
|
34010
|
+
var item=this.ChartFrame.GlobalOption;
|
|
34011
|
+
item.LatestPoint=null;
|
|
34012
|
+
}
|
|
34013
|
+
}
|
|
34014
|
+
|
|
34015
|
+
this.UpdateGlobalLatestPoint=function()
|
|
34016
|
+
{
|
|
34017
|
+
if (this.Identify!="Main-KLine") return;
|
|
34018
|
+
if (!this.ChartFrame.GlobalOption) return;
|
|
34019
|
+
|
|
34020
|
+
var item=this.ChartFrame.GlobalOption;
|
|
34021
|
+
if (IFrameSplitOperator.IsNumber(this.LastPoint.X) && IFrameSplitOperator.IsNumber(this.LastPoint.Y))
|
|
34022
|
+
item.LatestPoint={ X:this.LastPoint.X, Y:this.LastPoint.Y };
|
|
34023
|
+
}
|
|
34024
|
+
|
|
33977
34025
|
this.Draw=function()
|
|
33978
34026
|
{
|
|
34027
|
+
this.ClearLastPoint();
|
|
33979
34028
|
if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
|
|
33980
34029
|
if (this.IsShowIndexTitleOnly()) return;
|
|
33981
34030
|
if (this.IsHideScriptIndex()) return;
|
|
@@ -34032,6 +34081,7 @@ function ChartKLine()
|
|
|
34032
34081
|
this.Canvas.restore();
|
|
34033
34082
|
this.DrawPredictionLine();
|
|
34034
34083
|
if (this.PriceGap.Enable) this.DrawPriceGap();
|
|
34084
|
+
this.UpdateGlobalLatestPoint();
|
|
34035
34085
|
return;
|
|
34036
34086
|
}
|
|
34037
34087
|
else if (this.DrawType==2)
|
|
@@ -34103,6 +34153,8 @@ function ChartKLine()
|
|
|
34103
34153
|
|
|
34104
34154
|
this.Canvas.restore();
|
|
34105
34155
|
|
|
34156
|
+
this.UpdateGlobalLatestPoint();
|
|
34157
|
+
|
|
34106
34158
|
this.DrawPredictionLine();
|
|
34107
34159
|
if (this.PriceGap.Enable) this.DrawPriceGap();
|
|
34108
34160
|
|
|
@@ -56206,6 +56258,7 @@ function LatestPointFlashPaint()
|
|
|
56206
56258
|
this.BGColor=g_JSChartResource.LatestPointFlash.BGColor;
|
|
56207
56259
|
this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;
|
|
56208
56260
|
this.DrawPriority=IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25;
|
|
56261
|
+
this.Style=1; //0=默认配置 1=图形保持一致
|
|
56209
56262
|
this.FlashCanvas;
|
|
56210
56263
|
|
|
56211
56264
|
this.SetOption=function(option)
|
|
@@ -56230,6 +56283,23 @@ function LatestPointFlashPaint()
|
|
|
56230
56283
|
this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;
|
|
56231
56284
|
}
|
|
56232
56285
|
|
|
56286
|
+
this.GetChartColor=function()
|
|
56287
|
+
{
|
|
56288
|
+
var chart=this.HQChart.ChartPaint[0];
|
|
56289
|
+
if (!chart) return;
|
|
56290
|
+
|
|
56291
|
+
if (chart.ClassName=="ChartKLine")
|
|
56292
|
+
{
|
|
56293
|
+
this.PointColor=chart.CloseLineColor;
|
|
56294
|
+
this.BGColor=IChartDrawPicture.ColorToRGBA(chart.CloseLineColor, 0.6);
|
|
56295
|
+
}
|
|
56296
|
+
else if (chart.ClassName=="ChartMinutePriceLine")
|
|
56297
|
+
{
|
|
56298
|
+
this.PointColor=chart.Color;
|
|
56299
|
+
this.BGColor=IChartDrawPicture.ColorToRGBA(chart.Color, 0.6);
|
|
56300
|
+
}
|
|
56301
|
+
}
|
|
56302
|
+
|
|
56233
56303
|
this.Draw=function()
|
|
56234
56304
|
{
|
|
56235
56305
|
if (!this.FlashCanvas) return;
|
|
@@ -56248,6 +56318,8 @@ function LatestPointFlashPaint()
|
|
|
56248
56318
|
var point=this.HQChart.GlobalOption.LatestPoint;
|
|
56249
56319
|
if (!IFrameSplitOperator.IsNumber(point.X) || !IFrameSplitOperator.IsNumber(point.Y)) return;
|
|
56250
56320
|
|
|
56321
|
+
if (this.Style==1) this.GetChartColor();
|
|
56322
|
+
|
|
56251
56323
|
this.FlashCanvas.fillStyle=this.BGColor;
|
|
56252
56324
|
this.FlashCanvas.beginPath();
|
|
56253
56325
|
this.FlashCanvas.arc(point.X,point.Y,this.BGRadius,0,360,false);
|
|
@@ -84243,6 +84315,80 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84243
84315
|
return true;
|
|
84244
84316
|
}
|
|
84245
84317
|
}
|
|
84318
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
|
|
84319
|
+
{
|
|
84320
|
+
var kData=this.GetKData();
|
|
84321
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84322
|
+
var startIndex=kData.DataOffset;
|
|
84323
|
+
var kItem=kData.Data[startIndex];
|
|
84324
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84325
|
+
return true;
|
|
84326
|
+
}
|
|
84327
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
|
|
84328
|
+
{
|
|
84329
|
+
var kData=this.GetKData();
|
|
84330
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84331
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
84332
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
84333
|
+
var endIndex=kData.DataOffset+showCount-1;
|
|
84334
|
+
if (endIndex>=kData.Data.length) endIndex=kData.Data.length-1;
|
|
84335
|
+
var kItem=kData.Data[endIndex];
|
|
84336
|
+
var index=endIndex-kData.DataOffset;
|
|
84337
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84338
|
+
return true;
|
|
84339
|
+
}
|
|
84340
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START)
|
|
84341
|
+
{
|
|
84342
|
+
var kData=this.GetKData();
|
|
84343
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84344
|
+
var kItem=kData.Data[0];
|
|
84345
|
+
|
|
84346
|
+
if (kData.DataOffset!=0)
|
|
84347
|
+
{
|
|
84348
|
+
kData.DataOffset=0
|
|
84349
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
84350
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
84351
|
+
this.ResetFrameXSplit();
|
|
84352
|
+
this.Frame.SetSizeChage(true);
|
|
84353
|
+
this.Draw();
|
|
84354
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84355
|
+
}
|
|
84356
|
+
else
|
|
84357
|
+
{
|
|
84358
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84359
|
+
}
|
|
84360
|
+
|
|
84361
|
+
return true;
|
|
84362
|
+
}
|
|
84363
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END)
|
|
84364
|
+
{
|
|
84365
|
+
var kData=this.GetKData();
|
|
84366
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84367
|
+
|
|
84368
|
+
var kItem=kData.Data[kData.Data.length-1];
|
|
84369
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
84370
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
84371
|
+
var dataOffset=kData.Data.length-showCount;
|
|
84372
|
+
|
|
84373
|
+
if (kData.DataOffset<dataOffset)
|
|
84374
|
+
{
|
|
84375
|
+
kData.DataOffset=dataOffset;
|
|
84376
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
84377
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
84378
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
84379
|
+
this.ResetFrameXSplit();
|
|
84380
|
+
this.Frame.SetSizeChage(true);
|
|
84381
|
+
this.Draw();
|
|
84382
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84383
|
+
}
|
|
84384
|
+
else
|
|
84385
|
+
{
|
|
84386
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
84387
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84388
|
+
}
|
|
84389
|
+
|
|
84390
|
+
return true;
|
|
84391
|
+
}
|
|
84246
84392
|
}
|
|
84247
84393
|
|
|
84248
84394
|
|
|
@@ -84603,6 +84749,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84603
84749
|
//Alt+W 区间统计
|
|
84604
84750
|
//Alt+数字 切换多个窗口
|
|
84605
84751
|
//Ctrl+I
|
|
84752
|
+
//HOME / END 当前屏 第1条 最后一条
|
|
84753
|
+
//Ctrl+HOME / Ctrl+END 第1条 最后一条
|
|
84606
84754
|
this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
|
|
84607
84755
|
{
|
|
84608
84756
|
if (keyID==37 && e.ctrlKey) //Ctrl+Left
|
|
@@ -84639,6 +84787,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84639
84787
|
{
|
|
84640
84788
|
this.OnEnterKeyDown();
|
|
84641
84789
|
}
|
|
84790
|
+
else if (keyID==36) //HOME 第1条
|
|
84791
|
+
{
|
|
84792
|
+
var option=null;
|
|
84793
|
+
if (e.ctrlKey)
|
|
84794
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START }; //所有数据的第1条数据
|
|
84795
|
+
else
|
|
84796
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
|
|
84797
|
+
|
|
84798
|
+
if (option) this.ChartOperator(option);
|
|
84799
|
+
}
|
|
84800
|
+
else if (keyID==35) //END 最后一条
|
|
84801
|
+
{
|
|
84802
|
+
var option=null;
|
|
84803
|
+
if (e.ctrlKey)
|
|
84804
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END }; //所有数据的最后1条数据
|
|
84805
|
+
else
|
|
84806
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
|
|
84807
|
+
|
|
84808
|
+
if (option) this.ChartOperator(option);
|
|
84809
|
+
}
|
|
84642
84810
|
else
|
|
84643
84811
|
{
|
|
84644
84812
|
return false;
|
|
@@ -86366,6 +86534,13 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
86366
86534
|
|
|
86367
86535
|
if (!bFind) return;
|
|
86368
86536
|
}
|
|
86537
|
+
|
|
86538
|
+
if (data.LatestPointFlash) //最新数据闪烁
|
|
86539
|
+
{
|
|
86540
|
+
var item=data.LatestPointFlash;
|
|
86541
|
+
if (IFrameSplitOperator.IsNumber(item.FlashCount))
|
|
86542
|
+
this.SetLatestPointFlash(item.FlashCount)
|
|
86543
|
+
}
|
|
86369
86544
|
|
|
86370
86545
|
var bindData=new ChartData();
|
|
86371
86546
|
bindData.Data=this.SourceData.Data;
|
|
@@ -136627,7 +136802,7 @@ function ChartDealList()
|
|
|
136627
136802
|
if ( this.SelectedStyle==1)
|
|
136628
136803
|
{
|
|
136629
136804
|
this.Canvas.fillStyle=this.SelectedConfig.BGColor;
|
|
136630
|
-
this.Canvas.fillRect(rtRow.Left,rtRow.Top, rtRow.Width, rtRow.Height);
|
|
136805
|
+
this.Canvas.fillRect(rtRow.Left+1,rtRow.Top+1, rtRow.Width-2, rtRow.Height-2);
|
|
136631
136806
|
}
|
|
136632
136807
|
|
|
136633
136808
|
return true;
|
|
@@ -161133,7 +161308,7 @@ function HQChartScriptWorker()
|
|
|
161133
161308
|
|
|
161134
161309
|
|
|
161135
161310
|
|
|
161136
|
-
var HQCHART_VERSION="1.1.
|
|
161311
|
+
var HQCHART_VERSION="1.1.14854";
|
|
161137
161312
|
|
|
161138
161313
|
function PrintHQChartVersion()
|
|
161139
161314
|
{
|