hqchart 1.1.14848 → 1.1.14853

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.
@@ -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//移动十字光标 { Step, Start:{ Date:, Time: } }
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
@@ -4592,8 +4598,8 @@ function ChartBaseLineBar(){this.newMethod=IChartPainting;//派生
4592
4598
  this.newMethod();delete this.newMethod;this.ClassName="ChartBaseLineBar";this.UpColor=g_JSChartResource.ChartBaseLineBar.UpColor;this.DownColor=g_JSChartResource.ChartBaseLineBar.DownColor;this.LineWidth=1;this.IsDrawFirst=true;this.AryData=[];//{ Date, Time, Up, Down }
4593
4599
  this.DefaultMax;//默认最大值
4594
4600
  this.MaxValue;this.YBaseLine;this.BarMaxHeight;//{ Up:, Down: }
4595
- this.Draw=function(){this.YBaseLine=null;this.BarMaxHeight=null;if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.HQChart)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;if(!IFrameSplitOperator.IsNumber(this.MaxValue))return;this.CalculateBaseLine();if(!IFrameSplitOperator.IsNumber(this.YBaseLine))return;if(!IFrameSplitOperator.IsPlusNumber(this.BarMaxHeight))return;var bHScreen=this.ChartFrame.IsHScreen===true;var bMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();if(bHScreen){var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var yCenter=this.YBaseLine;var aryUpBar=[],aryDownBar=[];for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var item=this.MapCache.get(key);if(bMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}if(IFrameSplitOperator.IsNumber(item.Up)){var value=Math.abs(item.Up)*this.BarMaxHeight/this.MaxValue;if(value<2)value=2;//太短了 就直接画2个像素高度
4596
- var y=yCenter-value;aryUpBar.push({X:x,Y:y});}if(IFrameSplitOperator.IsNumber(item.Down)){var value=Math.abs(item.Down)*this.BarMaxHeight/this.MaxValue;if(value<2)value=2;var y=yCenter+value;aryDownBar.push({X:x,Y:y});}}this.DrawBars(aryUpBar,this.UpColor);this.DrawBars(aryDownBar,this.DownColor);};this.CalculateBaseLine=function(){if(!this.HQChart)return;var bHScreen=this.ChartFrame.IsHScreen===true;var bMinute=this.IsMinuteFrame();var border=this.ChartFrame.GetBorder();if(bMinute){var chart=this.HQChart.ChartPaint[0];if(!chart||!IFrameSplitOperator.IsNumber(chart.YClose))return;this.YBaseLine=this.ChartFrame.GetYFromData(chart.YClose);if(bHScreen){this.BarMaxHeight=(border.RightEx-this.YBaseLine)/3;}else{this.BarMaxHeight=(this.YBaseLine-border.TopEx)/3;}}else{//TODO:K线
4601
+ this.Draw=function(){this.YBaseLine=null;this.BarMaxHeight=null;if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.HQChart)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;if(!IFrameSplitOperator.IsNumber(this.MaxValue))return;this.CalculateBaseLine();if(!IFrameSplitOperator.IsNumber(this.YBaseLine))return;if(!IFrameSplitOperator.IsPlusNumber(this.BarMaxHeight))return;var bHScreen=this.ChartFrame.IsHScreen===true;var bMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();if(bHScreen){var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var yCenter=this.YBaseLine;var aryUpBar=[],aryDownBar=[];for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var item=this.MapCache.get(key);if(bMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}if(IFrameSplitOperator.IsNumber(item.Up)){var value=Math.abs(item.Up)*this.BarMaxHeight/this.MaxValue;if(value<1.5)value=1.5;//太短了 就直接画2个像素高度
4602
+ var y=yCenter-value;aryUpBar.push({X:x,Y:y});}if(IFrameSplitOperator.IsNumber(item.Down)){var value=Math.abs(item.Down)*this.BarMaxHeight/this.MaxValue;if(value<1.5)value=1.5;var y=yCenter+value;aryDownBar.push({X:x,Y:y});}}this.DrawBars(aryUpBar,this.UpColor);this.DrawBars(aryDownBar,this.DownColor);};this.CalculateBaseLine=function(){if(!this.HQChart)return;var bHScreen=this.ChartFrame.IsHScreen===true;var bMinute=this.IsMinuteFrame();var border=this.ChartFrame.GetBorder();if(bMinute){var chart=this.HQChart.ChartPaint[0];if(!chart||!IFrameSplitOperator.IsNumber(chart.YClose))return;this.YBaseLine=this.ChartFrame.GetYFromData(chart.YClose);if(bHScreen){this.BarMaxHeight=(border.RightEx-this.YBaseLine)/3;}else{this.BarMaxHeight=(this.YBaseLine-border.TopEx)/3;}}else{//TODO:K线
4597
4603
  }};this.DrawBars=function(aryBar,barColor){var bHScreen=this.ChartFrame.IsHScreen===true;var yCenter=this.YBaseLine;this.Canvas.strokeStyle=barColor;this.Canvas.beginPath();var barCount=0;for(var i=0;i<aryBar.length;++i){var item=aryBar[i];var x=ToFixedPoint(item.X);if(bHScreen){this.Canvas.moveTo(yCenter,x);this.Canvas.lineTo(item.Y,x);}else{this.Canvas.moveTo(x,yCenter);this.Canvas.lineTo(x,item.Y);}++barCount;}if(barCount>0)this.Canvas.stroke();};this.BuildCacheData=function(){this.MaxValue=null;var mapData=new _map2.default();this.MapCache=mapData;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryData))return;var max=null,min=null;for(var i=0;i<this.AryData.length;++i){var item=this.AryData[i];if(!item)continue;var key=this.BuildKey(item);mapData.set(key,item);if(IFrameSplitOperator.IsNumber(item.Up)){if(!max)max={Value:item.Up};else if(max.Value<item.Up)max.Value=item.Up;if(!min)min={Value:item.Up};else if(min.Value>item.Up)min.Value=item.Up;}if(IFrameSplitOperator.IsNumber(item.Down)){if(!max)max={Value:item.Down};else if(max.Value<item.Down)max.Value=item.Down;if(!min)min={Value:item.Down};else if(min.Value>item.Down)min.Value=item.Down;}}if(max&&min){this.MaxValue=Math.max(Math.abs(max.Value),Math.abs(min.Value));if(IFrameSplitOperator.IsNumber(this.DefaultMax))this.MaxValue=Math.max(this.DefaultMax,this.MaxValue);}};this.GetMaxMin=function(){return{Min:null,Max:null};};}function ChartClipColorStick(){this.newMethod=IChartPainting;//派生
4598
4604
  this.newMethod();delete this.newMethod;this.ClassName="ChartClipColorStick";this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.LineWidth=1;this.Style=0;//1=同方向 0=上下两个方向
4599
4605
  //差值线
@@ -7588,7 +7594,19 @@ var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.
7588
7594
  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
7595
  {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
7596
  this.UpdateFrameMaxMin();//调整坐标最大 最小值
7591
- this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();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);//保存最后一次鼠标移动信息
7597
+ 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条数据
7598
+ {var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
7599
+ 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条数据
7600
+ {var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
7601
+ if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return false;var showCount=this.Frame.SubFrame[0].Frame.XPointCount;//一屏显示个数
7602
+ 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;//数据还没有到达
7603
+ var kItem=kData.Data[0];if(kData.DataOffset!=0){kData.DataOffset=0;this.UpdataDataoffset();//更新数据偏移
7604
+ this.UpdateFrameMaxMin();//调整坐标最大 最小值
7605
+ 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;//数据还没有到达
7606
+ 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;//一屏显示个数
7607
+ var dataOffset=kData.Data.length-showCount;if(kData.DataOffset<dataOffset){kData.DataOffset=dataOffset;var index=kData.Data.length-kData.DataOffset-1;this.UpdataDataoffset();//更新数据偏移
7608
+ this.UpdateFrameMaxMin();//调整坐标最大 最小值
7609
+ 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
7610
  var MoveStatus={X:x,Y:y,IsInClient:this.IsMouseOnClient(x,y)};this.LastMouseStatus.OnMouseMove=MoveStatus;this.LastMouseStatus.MoveOnPoint={X:x,Y:y};//鼠标移动的位置
7593
7611
  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
7612
  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 +7641,8 @@ for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting()
7623
7641
  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
7642
  //Alt+数字 切换多个窗口
7625
7643
  //Ctrl+I
7644
+ //HOME / END 当前屏 第1条 最后一条
7645
+ //Ctrl+HOME / Ctrl+END 第1条 最后一条
7626
7646
  this.OnCustomKeyDown=function(keyID,e)//自定义键盘事件
7627
7647
  {if(keyID==37&&e.ctrlKey)//Ctrl+Left
7628
7648
  {this.MoveCorssCursorLeft(this.CtrlMoveStep);return true;}else if(keyID==39&&e.ctrlKey)//Ctrl+Right
@@ -7631,7 +7651,11 @@ this.OnCustomKeyDown=function(keyID,e)//自定义键盘事件
7631
7651
  {this.MoveKLineRight(this.ShiftMoveStep);return true;}else if(keyID==38&&e.shiftKey)//shift+up 上移十字光标
7632
7652
  {this.MoveCorssCursorUp(this.ShiftUpDownStepPixel);return true;}else if(keyID==40&&e.shiftKey)//shift+down 下移十字光标
7633
7653
  {this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);return true;}else if(keyID==13)//回车显示分时图
7634
- {this.OnEnterKeyDown();}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线上
7654
+ {this.OnEnterKeyDown();}else if(keyID==36)//HOME 第1条
7655
+ {var option=null;if(e.ctrlKey)option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START};//所有数据的第1条数据
7656
+ else option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START};if(option)this.ChartOperator(option);}else if(keyID==35)//END 最后一条
7657
+ {var option=null;if(e.ctrlKey)option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END};//所有数据的最后1条数据
7658
+ 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
7659
  this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("datamove");};//修复 当前数据索引大于数据个数的请求
7636
7660
  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
7661
  {if(this.DragDownloadData)this.DragDownloadData();return;}if(this.CursorIndex-step<0)//当前屏到头了
@@ -8938,7 +8962,7 @@ this.RequestHistoryMinuteData=function(){var self=this;this.IsBeforeData=false;t
8938
8962
  };var bBuySellBar=this.IsShowMinuteBuySellBar();var obj={Name:'MinuteChartContainer::RequestHistoryMinuteData',//类名::函数
8939
8963
  Explain:'多日分时数据',Request:{Url:self.HistoryMinuteApiUrl,Data:{daycount:self.DayCount,symbol:self.Symbol,callcation:callCation,AryDate:this.AryDate,IsShowBuySellBar:bBuySellBar},Type:'POST'},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){self.ChartSplashPaint.EnableSplash(false);self.RecvHistoryMinuteData(data);});if(obj.PreventDefault==true)return;//已被上层替换,不调用默认的网络请求
8940
8964
  }JSNetwork.HttpRequest({url:self.HistoryMinuteApiUrl,data:{"symbol":self.Symbol,"daycount":self.DayCount},type:"post",dataType:"json",async:true,success:function success(data){self.ChartSplashPaint.EnableSplash(false);self.RecvHistoryMinuteData(data);}});};this.RecvHistoryMinuteData=function(data){if(this.EnableVerifyRecvData&&data.symbol!=this.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvHistoryMinuteData] recv data symbol not match. HQChart['+this.Symbol+'] , Recv['+data.symbol+']');return;}this.DayData=MinuteChartContainer.JsonDataToMinuteDataArray(data);this.ColorLineData=MinuteChartContainer.JsonDataToHistoryMinuteLineColorData(data);this.MultiDayBeforeOpenData=MinuteChartContainer.JosnDataToBeforeOpenDataArray(data);this.MultiDayAfterCloseData=MinuteChartContainer.JosnDataToAfterCloseDataArray(data);var updateTime=MinuteChartContainer.JsonDataToHistoryMinuteLastUpdateTime(data);this.DataStatus.MultiDay=true;var lastDayData=null;if(IFrameSplitOperator.IsNonEmptyArray(data.data)&&data.data[0])lastDayData=data.data[0];if(lastDayData)this.RecvBuySellData(lastDayData.BuySellData);this.CaclutateCallCationYRange();this.Symbol=data.symbol;this.Name=data.name;this.SetCallCationDataBorder({Left:false,Right:false,MultiDay:{Left:this.IsShowMultiDayBeforeData,Right:this.IsShowMultiDayAfterData}});this.CaclutateLimitPrice(this.DayData[0].YClose,data.data[0].limitprice);//计算涨停价格
8941
- this.UpdateHistoryMinuteUI(updateTime);this.RecvMinuteDataEvent({FunctionName:"RecvHistoryMinuteData"});this.RequestOverlayHistoryMinuteData();this.BindAllOverlayIndexData(this.SourceData);this.AutoUpdateEvent(true,"MinuteChartContainer::RequestHistoryMinuteData");this.AutoUpdate();};this.CaclutateCallCationYRange=function(){//多日集合竞价Y轴统一成交量
8965
+ this.UpdateHistoryMinuteUI(updateTime);this.RecvMinuteDataEvent({FunctionName:"RecvHistoryMinuteData"});this.RequestOverlayHistoryMinuteData();this.BindAllOverlayIndexData(this.SourceData,{SyncExecute:false});this.AutoUpdateEvent(true,"MinuteChartContainer::RequestHistoryMinuteData");this.AutoUpdate();};this.CaclutateCallCationYRange=function(){//多日集合竞价Y轴统一成交量
8942
8966
  var afterRange=null,beforeRange=null;if(IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){var range={Max:null,Min:null};for(var i=0;i<this.MultiDayAfterCloseData.length;++i){var item=this.MultiDayAfterCloseData[i];if(range.Max==null)range.Max=item.VolMax;else if(range.Max<item.VolMax)range.Max=item.VolMax;if(range.Min==null)range.Min=item.VolMin;else if(range.Min>item.VolMin)range.Min=item.VolMin;}afterRange=range;}if(IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){var range={Max:null,Min:null};for(var i=0;i<this.MultiDayBeforeOpenData.length;++i){var item=this.MultiDayBeforeOpenData[i];if(range.Max==null)range.Max=item.VolMax;else if(range.Max<item.VolMax)range.Max=item.VolMax;if(range.Min==null)range.Min=item.VolMin;else if(range.Min>item.VolMin)range.Min=item.VolMin;}beforeRange=range;}if(this.ShareAfterVol==2)// 公用坐标
8943
8967
  {if(afterRange&&beforeRange){var max=Math.max(afterRange.Max,beforeRange.Max);var min=Math.min(afterRange.Min,beforeRange.Min);afterRange.Max=beforeRange.Max=max;afterRange.Min=beforeRange.Min=min;}}if(afterRange){for(var i=0;i<this.MultiDayAfterCloseData.length;++i){var item=this.MultiDayAfterCloseData[i];item.VolMax=afterRange.Max;item.VolMin=afterRange.Min;}}if(beforeRange){for(var i=0;i<this.MultiDayBeforeOpenData.length;++i){var item=this.MultiDayBeforeOpenData[i];item.VolMax=beforeRange.Max;item.VolMin=beforeRange.Min;}}};this.UpdateHistoryMinuteUI=function(updateTime){var allMinuteData=this.HistoryMinuteDataToArray(this.DayData);//原始数据
8944
8968
  var sourceData=new ChartData();sourceData.Data=allMinuteData;if(updateTime)sourceData.UpdateTime=updateTime;this.SourceData=sourceData;this.TradeDate=this.DayData[0].Date;if(this.PageInfo&&this.PageInfo.Enable){this.DayOffset.DayCount=this.DayData.length;//一共的数据
@@ -8953,7 +8977,8 @@ item.Frame.XSplitOperator.IsBeforeData=this.IsBeforeData;item.Frame.XSplitOperat
8953
8977
  {var overlayItem=item.OverlayIndex[j];overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.MinuteCount=item.Frame.MinuteCount;}}this.ChartCorssCursor.StringFormatY.Symbol=this.Symbol;this.ChartCorssCursor.StringFormatX.Symbol=this.Symbol;this.ChartCorssCursor.StringFormatX.IsBeforeData=this.IsBeforeData;this.ChartCorssCursor.StringFormatX.IsAfterData=this.IsAfterData;this.TitlePaint[0].IsShowDate=true;this.UpdateDataOffset();this.UpdateFrameMaxMin();//调整坐标最大 最小值
8954
8978
  this.CreateChartDrawPictureByStorage();//创建画图工具
8955
8979
  //执行脚本
8956
- if(this.Frame.SubFrame.length>2){var bindData=new ChartData();bindData.Data=allMinuteData;for(var i=2;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData);}}this.Frame.SetSizeChage(true);this.Draw();};this.HistoryMinuteDataToArray=function(data){var result=[];for(var i=data.length-1;i>=0;--i){var item=data[i];for(var j=0;j<item.Data.length;++j){result.push(item.Data[j]);}}return result;};//更新一天的数据
8980
+ if(this.Frame.SubFrame.length>2){var bindData=new ChartData();bindData.Data=allMinuteData;for(var i=2;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData);}}this.BindAllOverlayIndexData(this.SourceData,{SyncExecute:true});//同步模式脚本
8981
+ this.Frame.SetSizeChage(true);this.Draw();};this.HistoryMinuteDataToArray=function(data){var result=[];for(var i=data.length-1;i>=0;--i){var item=data[i];for(var j=0;j<item.Data.length;++j){result.push(item.Data[j]);}}return result;};//更新一天的数据
8957
8982
  this.UpdateLatestMinuteData=function(data,date,stock){if(!this.DayData)return;for(var i=0;i<this.DayData.length;++i){var item=this.DayData[i];if(item.Date===date){item.Data=data;//整一天的数据都替换掉
8958
8983
  if(stock&&IFrameSplitOperator.IsNumber(stock.yclose))item.YClose=stock.yclose;if(stock&&IFrameSplitOperator.IsNumber(stock.yclearing))item.YClearing=stock.yclearing;return;}}if(this.DayData.length>0){if(this.DayData[0].Date<date)//新的一天 插入
8959
8984
  {var dayItem=new ChartData();dayItem.Date=date;dayItem.Data=data;if(stock&&IFrameSplitOperator.IsNumber(stock.yclose))dayItem.YClose=stock.yclose;if(stock&&IFrameSplitOperator.IsNumber(stock.yclearing))dayItem.YClearing=stock.yclearing;this.DayData.unshift(dayItem);}}};//更新最新的几条数据
@@ -8973,7 +8998,7 @@ this.MultiDayBeforeOpenData.push(beforeOpenData);}if(afterCloseData&&IFrameSplit
8973
8998
  this.RecvUpdateMinuteData=function(data){var minuteData=MinuteChartContainer.JsonDataToUpdateMinuteData(data);var aryColorData=MinuteChartContainer.JsonDataToMinuteLineColorData(data);var beforeOpenData=MinuteChartContainer.JsonDataToBeforeOpenData(data);var afterCloseData=MinuteChartContainer.JsonDataToAfterCloseData(data);var updateTime=MinuteChartContainer.JsonDataToMinuteLastUpdateTime(data);//数据最后的更新时间
8974
8999
  if(this.DayCount>1)//多日走势图
8975
9000
  {this.UpdateCallCationData(beforeOpenData,afterCloseData);this.UpdateLineColorData(aryColorData,minuteData.date);this.UpdateLatestMinuteDataV2(minuteData);this.UpdateHistoryMinuteUI(updateTime);this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"});this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
8976
- this.BindAllOverlayIndexData(this.SourceData);this.AutoUpdateEvent(true,"MinuteChartContainer::RecvUpdateMinuteData");this.AutoUpdate();return;}if(this.IsBeforeData&&beforeOpenData)this.BeforeOpenData=beforeOpenData;if(this.IsAfterData&&afterCloseData)this.AfterCloseData=afterCloseData;//原始数据
9001
+ this.BindAllOverlayIndexData(this.SourceData,{SyncExecute:false});this.AutoUpdateEvent(true,"MinuteChartContainer::RecvUpdateMinuteData");this.AutoUpdate();return;}if(this.IsBeforeData&&beforeOpenData)this.BeforeOpenData=beforeOpenData;if(this.IsAfterData&&afterCloseData)this.AfterCloseData=afterCloseData;//原始数据
8977
9002
  this.UpdateLatestMinuteDataV2(minuteData);this.UpdateMinuteUI(data.stock[0],{FunctionName:"RecvUpdateMinuteData"});if(data.AutoUpdate===false)//不执行自动更新
8978
9003
  {}else{this.AutoUpdateEvent(true,"MinuteChartContainer::RecvUpdateMinuteData");this.AutoUpdate();}};this.RecvBuySellData=function(data){if(!data)return;if(Array.isArray(data.AryBuy)){this.BuySellData.AryBuy=data.AryBuy.slice();}if(Array.isArray(data.ArySell)){this.BuySellData.ArySell=data.ArySell.slice();}};this.RecvMinuteData=function(data){if(!data){JSConsole.Chart.Warn("[MinuteChartContainer::RecvMinuteData] recv data is null");return;}if(data.dataType==1)//增量更新数据模式
8979
9004
  {this.RecvUpdateMinuteData(data);return;}if(!data.stock[0])return;if(data.stock[0].symbol!=this.Symbol&&this.EnableVerifyRecvData){JSConsole.Chart.Warn('[MinuteChartContainer::RecvMinuteData] recv data symbol not match. HQChart['+this.Symbol+'] , Recv['+data.stock[0].symbol+']');return;}var aryMinuteData=MinuteChartContainer.JsonDataToMinuteData(data);var aryColorData=MinuteChartContainer.JsonDataToMinuteLineColorData(data);this.BeforeOpenData=null;this.AfterCloseData=null;var beforeOpenData=MinuteChartContainer.JsonDataToBeforeOpenData(data);var afterCloseData=MinuteChartContainer.JsonDataToAfterCloseData(data);var updateTime=MinuteChartContainer.JsonDataToMinuteLastUpdateTime(data);//数据最后的更新时间
@@ -8982,7 +9007,7 @@ if(IFrameSplitOperator.IsNonEmptyArray(data.stock)&&data.stock[0]){this.DataStat
8982
9007
  this.RecvBuySellData(data.stock[0].BuySellData);}if(data.LatestPointFlash)//最新数据闪烁
8983
9008
  {var item=data.LatestPointFlash;if(IFrameSplitOperator.IsNumber(item.FlashCount))this.SetLatestPointFlash(item.FlashCount);}this.DataStatus.LatestDay=true;if(this.DayCount>1)//多日走势图
8984
9009
  {this.UpdateCallCationData(beforeOpenData,afterCloseData);this.UpdateLineColorData(aryColorData,data.stock[0].date);this.UpdateLatestMinuteData(aryMinuteData,data.stock[0].date,data.stock[0]);this.UpdateTradeStatusData(data.TradeStatus);this.UpdateHistoryMinuteUI(updateTime);this.RecvMinuteDataEvent({FunctionName:"RecvMinuteData"});this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
8985
- this.BindAllOverlayIndexData(this.SourceData);this.AutoUpdateEvent(true,"MinuteChartContainer::RecvMinuteData");this.AutoUpdate();return;}if(this.IsOnTouch==true||this.IsPressKeyboard==true)//正在操作中不更新数据
9010
+ this.BindAllOverlayIndexData(this.SourceData,{SyncExecute:false});this.AutoUpdateEvent(true,"MinuteChartContainer::RecvMinuteData");this.AutoUpdate();return;}if(this.IsOnTouch==true||this.IsPressKeyboard==true)//正在操作中不更新数据
8986
9011
  {if(this.SourceData&&IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data)){this.AutoUpdate();return;}}//原始数据
8987
9012
  var sourceData=new ChartData();sourceData.Data=aryMinuteData;sourceData.UpdateTime=updateTime;this.SourceData=sourceData;this.ColorLineData=aryColorData;this.UpdateTradeStatusData(data.TradeStatus);this.UpdateMinuteUI(data.stock[0],{FunctionName:"RecvMinuteData",Day:{IsFirstData:bFirstData}});if(data.AutoUpdate===false)//不执行自动更新
8988
9013
  {}else{this.AutoUpdateEvent(true,"MinuteChartContainer::RecvMinuteData");this.AutoUpdate();}};//更新单日分时图
@@ -8993,10 +9018,10 @@ this.CaclutateLimitPrice(yClose,stockData.limitprice);//计算涨停价格
8993
9018
  var extendData=null;if(stockData.high>0&&stockData.low>0)extendData={High:stockData.high,Low:stockData.low};this.BindMainData(this.SourceData,yClose,extendData);if(this.Frame.SubFrame.length>2){var bindData=new ChartData();bindData.Data=this.SourceData.Data;for(var i=2;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData);}}for(var i=0,j=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=1;item.Frame.XSplitOperator.Operator();//调整X轴个数
8994
9019
  item.Frame.YSplitOperator.Symbol=this.Symbol;for(j=0;j<item.OverlayIndex.length;++j)//子坐标X轴个数同步
8995
9020
  {var overlayItem=item.OverlayIndex[j];overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.MinuteCount=item.Frame.MinuteCount;}}this.ChartCorssCursor.StringFormatY.Symbol=this.Symbol;this.ChartCorssCursor.StringFormatX.Symbol=this.Symbol;if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))this.TitlePaint[0].IsShowDate=false;if(stockData.IsHistoryMinute==true)this.TitlePaint[0].IsShowDate=true;var chartInfo=this.GetChartMinuteInfo();if(chartInfo)chartInfo.SourceData=this.SourceData;//数据绑定到信息地雷上
8996
- if(eventData)this.RecvMinuteDataEvent(eventData);this.RequestMinuteInfoData();this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
9021
+ this.BindAllOverlayIndexData(this.SourceData,{SyncExecute:true});if(eventData)this.RecvMinuteDataEvent(eventData);this.RequestMinuteInfoData();this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
8997
9022
  this.CreateChartDrawPictureByStorage();//创建画图工具
8998
9023
  this.UpdateFrameMaxMin();//调整坐标最大 最小值
8999
- this.Frame.SetSizeChage(true);this.Draw();this.BindAllOverlayIndexData(this.SourceData);};this.CaclutateLimitPrice=function(yClose,limitData){this.LimitPrice=null;//var limitData=data.stock[0].limitprice;
9024
+ this.Frame.SetSizeChage(true);this.Draw();this.BindAllOverlayIndexData(this.SourceData,{SyncExecute:false});};this.CaclutateLimitPrice=function(yClose,limitData){this.LimitPrice=null;//var limitData=data.stock[0].limitprice;
9000
9025
  if(limitData&&limitData.max>0&&limitData.min>0)//API里带涨停价格 直接使用
9001
9026
  {this.LimitPrice={Max:limitData.max,Min:limitData.min};return;}var range=MARKET_SUFFIX_NAME.GetLimitPriceRange(this.Symbol,this.Name);//通过规则获取涨停价格
9002
9027
  if(!range){JSConsole.Chart.Log('[MinuteChartContainer::CaclutateLimitPrice] '+this.Symbol+' no limit price.');return;}//var yClose=data.stock[0].yclose;
@@ -9137,7 +9162,9 @@ scriptIndex.Create(this,windowIndex);overlayFrame.Script=scriptIndex;}subFrame.O
9137
9162
  {if(!this.DeleteOverlayIndex(identify,null))return;this.Frame.ResetXYSplit(true);this.Draw();};//计算叠加指标
9138
9163
  this.BindAllOverlayIndexData=function(hisData,option){if(!this.Frame||!this.Frame.SubFrame)return;//叠加指标
9139
9164
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];this.BindOverlayIndexData(overlayItem,i,hisData,option);}}};//叠加指标
9140
- this.BindOverlayIndexData=function(overlayItem,windowIndex,hisData,option){if(!overlayItem.Script)return;if(typeof overlayItem.Script.RequestData=='function'){overlayItem.Script.RequestData(this,windowIndex,hisData);return;}if(typeof overlayItem.Script.ExecuteScript=='function'){overlayItem.Script.ExecuteScript(this,windowIndex,hisData);return;}overlayItem.Script.BindData(this,windowIndex,hisData);};//获取子窗口的所有画法
9165
+ this.BindOverlayIndexData=function(overlayItem,windowIndex,hisData,option){if(!overlayItem.Script)return;if(typeof overlayItem.Script.RequestData=='function'){overlayItem.Script.RequestData(this,windowIndex,hisData);return;}if(typeof overlayItem.Script.ExecuteScript=='function'){if(option){if(option.CheckRunCount)//检测执行次数
9166
+ {if(overlayItem.Script.IsExcessRunCount())return;}if(IFrameSplitOperator.IsBool(option.SyncExecute))//异步|同步
9167
+ {if(overlayItem.Script.IsSync!=option.SyncExecute)return;}}overlayItem.Script.ExecuteScript(this,windowIndex,hisData);return;}overlayItem.Script.BindData(this,windowIndex,hisData);};//获取子窗口的所有画法
9141
9168
  this.GetChartPaint=function(windowIndex){var paint=new Array();for(var i in this.ChartPaint){if(i<3)continue;//分钟 均线 成交量 3个线不能改
9142
9169
  var item=this.ChartPaint[i];if(item.ChartFrame==this.Frame.SubFrame[windowIndex].Frame)paint.push(item);}return paint;};//创建指定窗口指标
9143
9170
  this.CreateWindowIndex=function(windowIndex){this.WindowIndex[windowIndex].Create(this,windowIndex);};this.OnTouchFinished=function(){if(this.EnableClickModel===true){if(this.ClickModel.IsShowCorssCursor==true&&this.ClickModel.PreventHide)return;//阻止隐藏
@@ -13091,7 +13118,7 @@ this.DrawItemTextV2(drawInfo,rtItem);}else{this.DrawItemText(text,textColor,text
13091
13118
  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线图
13092
13119
  {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://原始数据
13093
13120
  text=value.toFixed(column.FloatPrecision);break;case 2://千分位分割
13094
- 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] };
13121
+ 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] };
13095
13122
  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] };
13096
13123
  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)//左边
13097
13124
  {this.Canvas.fillRect(center,top,-barWidth,height);}else//右边
@@ -15047,7 +15074,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
15047
15074
  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);};}/********************************************************************************
15048
15075
  * 版本信息输出
15049
15076
  *
15050
- */var HQCHART_VERSION="1.1.14847";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();//把给外界调用的方法暴露出来
15077
+ */var HQCHART_VERSION="1.1.14852";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();//把给外界调用的方法暴露出来
15051
15078
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
15052
15079
  // BaseIndex:BaseIndex,
15053
15080
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14848",
3
+ "version": "1.1.14853",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -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;
@@ -2834,6 +2834,12 @@ var JSCHART_OPERATOR_ID=
2834
2834
  OP_GOTO_BY_DATAINDEX:17, //的移动到某一个数据起始位置
2835
2835
 
2836
2836
  OP_MOVE_CORSSCURSOR:18, //移动十字光标 { Step, Start:{ Date:, Time: } }
2837
+
2838
+ OP_CORSSCURSOR_PAGE_START:19, //当前屏第1条数据
2839
+ OP_CORSSCURSOR_PAGE_END:20, //当前屏最后1条数据
2840
+
2841
+ OP_CORSSCURSOR_DATA_START:21, //所有数据的第1条数据
2842
+ OP_CORSSCURSOR_DATA_END:22, //所有数据的最后1条数据
2837
2843
  }
2838
2844
 
2839
2845
  var JSCHART_DRAG_ID=
@@ -7783,6 +7789,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7783
7789
  }
7784
7790
  break;
7785
7791
  case 13: //回车
7792
+ case 35: //END
7793
+ case 36: //HOME
7786
7794
  if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
7787
7795
  break;
7788
7796
  default:
@@ -41525,7 +41533,7 @@ function ChartBaseLineBar()
41525
41533
  if (IFrameSplitOperator.IsNumber(item.Up))
41526
41534
  {
41527
41535
  var value=Math.abs(item.Up)*this.BarMaxHeight/this.MaxValue;
41528
- if (value<2) value=2; //太短了 就直接画2个像素高度
41536
+ if (value<1.5) value=1.5; //太短了 就直接画2个像素高度
41529
41537
  var y=yCenter-value;
41530
41538
 
41531
41539
  aryUpBar.push({ X:x, Y:y});
@@ -41534,7 +41542,7 @@ function ChartBaseLineBar()
41534
41542
  if (IFrameSplitOperator.IsNumber(item.Down))
41535
41543
  {
41536
41544
  var value=Math.abs(item.Down)*this.BarMaxHeight/this.MaxValue;
41537
- if (value<2) value=2;
41545
+ if (value<1.5) value=1.5;
41538
41546
  var y=yCenter+value;
41539
41547
  aryDownBar.push({X:x, Y:y});
41540
41548
  }
@@ -80103,6 +80111,80 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
80103
80111
  return true;
80104
80112
  }
80105
80113
  }
80114
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
80115
+ {
80116
+ var kData=this.GetKData();
80117
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
80118
+ var startIndex=kData.DataOffset;
80119
+ var kItem=kData.Data[startIndex];
80120
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
80121
+ return true;
80122
+ }
80123
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
80124
+ {
80125
+ var kData=this.GetKData();
80126
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
80127
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
80128
+ var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
80129
+ var endIndex=kData.DataOffset+showCount-1;
80130
+ if (endIndex>=kData.Data.length) endIndex=kData.Data.length-1;
80131
+ var kItem=kData.Data[endIndex];
80132
+ var index=endIndex-kData.DataOffset;
80133
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
80134
+ return true;
80135
+ }
80136
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START)
80137
+ {
80138
+ var kData=this.GetKData();
80139
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
80140
+ var kItem=kData.Data[0];
80141
+
80142
+ if (kData.DataOffset!=0)
80143
+ {
80144
+ kData.DataOffset=0
80145
+ this.UpdataDataoffset(); //更新数据偏移
80146
+ this.UpdateFrameMaxMin(); //调整坐标最大 最小值
80147
+ this.ResetFrameXSplit();
80148
+ this.Frame.SetSizeChage(true);
80149
+ this.Draw();
80150
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
80151
+ }
80152
+ else
80153
+ {
80154
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
80155
+ }
80156
+
80157
+ return true;
80158
+ }
80159
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END)
80160
+ {
80161
+ var kData=this.GetKData();
80162
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
80163
+
80164
+ var kItem=kData.Data[kData.Data.length-1];
80165
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
80166
+ var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
80167
+ var dataOffset=kData.Data.length-showCount;
80168
+
80169
+ if (kData.DataOffset<dataOffset)
80170
+ {
80171
+ kData.DataOffset=dataOffset;
80172
+ var index=kData.Data.length-kData.DataOffset-1;
80173
+ this.UpdataDataoffset(); //更新数据偏移
80174
+ this.UpdateFrameMaxMin(); //调整坐标最大 最小值
80175
+ this.ResetFrameXSplit();
80176
+ this.Frame.SetSizeChage(true);
80177
+ this.Draw();
80178
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
80179
+ }
80180
+ else
80181
+ {
80182
+ var index=kData.Data.length-kData.DataOffset-1;
80183
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
80184
+ }
80185
+
80186
+ return true;
80187
+ }
80106
80188
  }
80107
80189
 
80108
80190
 
@@ -80463,6 +80545,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
80463
80545
  //Alt+W 区间统计
80464
80546
  //Alt+数字 切换多个窗口
80465
80547
  //Ctrl+I
80548
+ //HOME / END 当前屏 第1条 最后一条
80549
+ //Ctrl+HOME / Ctrl+END 第1条 最后一条
80466
80550
  this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
80467
80551
  {
80468
80552
  if (keyID==37 && e.ctrlKey) //Ctrl+Left
@@ -80499,6 +80583,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
80499
80583
  {
80500
80584
  this.OnEnterKeyDown();
80501
80585
  }
80586
+ else if (keyID==36) //HOME 第1条
80587
+ {
80588
+ var option=null;
80589
+ if (e.ctrlKey)
80590
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START }; //所有数据的第1条数据
80591
+ else
80592
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
80593
+
80594
+ if (option) this.ChartOperator(option);
80595
+ }
80596
+ else if (keyID==35) //END 最后一条
80597
+ {
80598
+ var option=null;
80599
+ if (e.ctrlKey)
80600
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END }; //所有数据的最后1条数据
80601
+ else
80602
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
80603
+
80604
+ if (option) this.ChartOperator(option);
80605
+ }
80502
80606
  else
80503
80607
  {
80504
80608
  return false;
@@ -91634,7 +91738,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
91634
91738
  this.RecvMinuteDataEvent( {FunctionName:"RecvHistoryMinuteData"} );
91635
91739
  this.RequestOverlayHistoryMinuteData();
91636
91740
 
91637
- this.BindAllOverlayIndexData(this.SourceData);
91741
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
91638
91742
 
91639
91743
  this.AutoUpdateEvent(true, "MinuteChartContainer::RequestHistoryMinuteData");
91640
91744
  this.AutoUpdate();
@@ -91790,6 +91894,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
91790
91894
  }
91791
91895
  }
91792
91896
 
91897
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:true }); //同步模式脚本
91898
+
91793
91899
  this.Frame.SetSizeChage(true);
91794
91900
  this.Draw();
91795
91901
  }
@@ -92078,7 +92184,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92078
92184
  this.UpdateHistoryMinuteUI(updateTime);
92079
92185
  this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"} );
92080
92186
  this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
92081
- this.BindAllOverlayIndexData(this.SourceData);
92187
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
92082
92188
  this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
92083
92189
  this.AutoUpdate();
92084
92190
  return;
@@ -92175,7 +92281,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92175
92281
  this.UpdateHistoryMinuteUI(updateTime);
92176
92282
  this.RecvMinuteDataEvent({FunctionName:"RecvMinuteData"} );
92177
92283
  this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
92178
- this.BindAllOverlayIndexData(this.SourceData);
92284
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
92179
92285
  this.AutoUpdateEvent(true, "MinuteChartContainer::RecvMinuteData");
92180
92286
  this.AutoUpdate();
92181
92287
  return;
@@ -92279,16 +92385,18 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92279
92385
  var chartInfo=this.GetChartMinuteInfo();
92280
92386
  if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
92281
92387
 
92388
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:true });
92389
+
92282
92390
  if (eventData) this.RecvMinuteDataEvent( eventData );
92283
92391
  this.RequestMinuteInfoData();
92284
- this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
92392
+ this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
92285
92393
  this.CreateChartDrawPictureByStorage(); //创建画图工具
92286
92394
 
92287
92395
  this.UpdateFrameMaxMin(); //调整坐标最大 最小值
92288
92396
  this.Frame.SetSizeChage(true);
92289
92397
  this.Draw();
92290
92398
 
92291
- this.BindAllOverlayIndexData(this.SourceData);
92399
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
92292
92400
  }
92293
92401
 
92294
92402
  this.CaclutateLimitPrice=function(yClose, limitData)
@@ -93196,6 +93304,21 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
93196
93304
 
93197
93305
  if (typeof(overlayItem.Script.ExecuteScript)=='function')
93198
93306
  {
93307
+ if (option)
93308
+ {
93309
+ if (option.CheckRunCount) //检测执行次数
93310
+ {
93311
+ if (overlayItem.Script.IsExcessRunCount())
93312
+ return;
93313
+ }
93314
+
93315
+ if (IFrameSplitOperator.IsBool(option.SyncExecute)) //异步|同步
93316
+ {
93317
+ if (overlayItem.Script.IsSync!=option.SyncExecute)
93318
+ return;
93319
+ }
93320
+ }
93321
+
93199
93322
  overlayItem.Script.ExecuteScript(this,windowIndex,hisData);
93200
93323
  return;
93201
93324
  }
@@ -6930,6 +6930,12 @@ var JSCHART_OPERATOR_ID=
6930
6930
  OP_GOTO_BY_DATAINDEX:17, //的移动到某一个数据起始位置
6931
6931
 
6932
6932
  OP_MOVE_CORSSCURSOR:18, //移动十字光标 { Step, Start:{ Date:, Time: } }
6933
+
6934
+ OP_CORSSCURSOR_PAGE_START:19, //当前屏第1条数据
6935
+ OP_CORSSCURSOR_PAGE_END:20, //当前屏最后1条数据
6936
+
6937
+ OP_CORSSCURSOR_DATA_START:21, //所有数据的第1条数据
6938
+ OP_CORSSCURSOR_DATA_END:22, //所有数据的最后1条数据
6933
6939
  }
6934
6940
 
6935
6941
  var JSCHART_DRAG_ID=
@@ -11879,6 +11885,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11879
11885
  }
11880
11886
  break;
11881
11887
  case 13: //回车
11888
+ case 35: //END
11889
+ case 36: //HOME
11882
11890
  if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
11883
11891
  break;
11884
11892
  default:
@@ -45621,7 +45629,7 @@ function ChartBaseLineBar()
45621
45629
  if (IFrameSplitOperator.IsNumber(item.Up))
45622
45630
  {
45623
45631
  var value=Math.abs(item.Up)*this.BarMaxHeight/this.MaxValue;
45624
- if (value<2) value=2; //太短了 就直接画2个像素高度
45632
+ if (value<1.5) value=1.5; //太短了 就直接画2个像素高度
45625
45633
  var y=yCenter-value;
45626
45634
 
45627
45635
  aryUpBar.push({ X:x, Y:y});
@@ -45630,7 +45638,7 @@ function ChartBaseLineBar()
45630
45638
  if (IFrameSplitOperator.IsNumber(item.Down))
45631
45639
  {
45632
45640
  var value=Math.abs(item.Down)*this.BarMaxHeight/this.MaxValue;
45633
- if (value<2) value=2;
45641
+ if (value<1.5) value=1.5;
45634
45642
  var y=yCenter+value;
45635
45643
  aryDownBar.push({X:x, Y:y});
45636
45644
  }
@@ -84199,6 +84207,80 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
84199
84207
  return true;
84200
84208
  }
84201
84209
  }
84210
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
84211
+ {
84212
+ var kData=this.GetKData();
84213
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
84214
+ var startIndex=kData.DataOffset;
84215
+ var kItem=kData.Data[startIndex];
84216
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
84217
+ return true;
84218
+ }
84219
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
84220
+ {
84221
+ var kData=this.GetKData();
84222
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
84223
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
84224
+ var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
84225
+ var endIndex=kData.DataOffset+showCount-1;
84226
+ if (endIndex>=kData.Data.length) endIndex=kData.Data.length-1;
84227
+ var kItem=kData.Data[endIndex];
84228
+ var index=endIndex-kData.DataOffset;
84229
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
84230
+ return true;
84231
+ }
84232
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START)
84233
+ {
84234
+ var kData=this.GetKData();
84235
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
84236
+ var kItem=kData.Data[0];
84237
+
84238
+ if (kData.DataOffset!=0)
84239
+ {
84240
+ kData.DataOffset=0
84241
+ this.UpdataDataoffset(); //更新数据偏移
84242
+ this.UpdateFrameMaxMin(); //调整坐标最大 最小值
84243
+ this.ResetFrameXSplit();
84244
+ this.Frame.SetSizeChage(true);
84245
+ this.Draw();
84246
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
84247
+ }
84248
+ else
84249
+ {
84250
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
84251
+ }
84252
+
84253
+ return true;
84254
+ }
84255
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END)
84256
+ {
84257
+ var kData=this.GetKData();
84258
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
84259
+
84260
+ var kItem=kData.Data[kData.Data.length-1];
84261
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
84262
+ var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
84263
+ var dataOffset=kData.Data.length-showCount;
84264
+
84265
+ if (kData.DataOffset<dataOffset)
84266
+ {
84267
+ kData.DataOffset=dataOffset;
84268
+ var index=kData.Data.length-kData.DataOffset-1;
84269
+ this.UpdataDataoffset(); //更新数据偏移
84270
+ this.UpdateFrameMaxMin(); //调整坐标最大 最小值
84271
+ this.ResetFrameXSplit();
84272
+ this.Frame.SetSizeChage(true);
84273
+ this.Draw();
84274
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
84275
+ }
84276
+ else
84277
+ {
84278
+ var index=kData.Data.length-kData.DataOffset-1;
84279
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
84280
+ }
84281
+
84282
+ return true;
84283
+ }
84202
84284
  }
84203
84285
 
84204
84286
 
@@ -84559,6 +84641,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
84559
84641
  //Alt+W 区间统计
84560
84642
  //Alt+数字 切换多个窗口
84561
84643
  //Ctrl+I
84644
+ //HOME / END 当前屏 第1条 最后一条
84645
+ //Ctrl+HOME / Ctrl+END 第1条 最后一条
84562
84646
  this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
84563
84647
  {
84564
84648
  if (keyID==37 && e.ctrlKey) //Ctrl+Left
@@ -84595,6 +84679,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
84595
84679
  {
84596
84680
  this.OnEnterKeyDown();
84597
84681
  }
84682
+ else if (keyID==36) //HOME 第1条
84683
+ {
84684
+ var option=null;
84685
+ if (e.ctrlKey)
84686
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START }; //所有数据的第1条数据
84687
+ else
84688
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
84689
+
84690
+ if (option) this.ChartOperator(option);
84691
+ }
84692
+ else if (keyID==35) //END 最后一条
84693
+ {
84694
+ var option=null;
84695
+ if (e.ctrlKey)
84696
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END }; //所有数据的最后1条数据
84697
+ else
84698
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
84699
+
84700
+ if (option) this.ChartOperator(option);
84701
+ }
84598
84702
  else
84599
84703
  {
84600
84704
  return false;
@@ -95730,7 +95834,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95730
95834
  this.RecvMinuteDataEvent( {FunctionName:"RecvHistoryMinuteData"} );
95731
95835
  this.RequestOverlayHistoryMinuteData();
95732
95836
 
95733
- this.BindAllOverlayIndexData(this.SourceData);
95837
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
95734
95838
 
95735
95839
  this.AutoUpdateEvent(true, "MinuteChartContainer::RequestHistoryMinuteData");
95736
95840
  this.AutoUpdate();
@@ -95886,6 +95990,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95886
95990
  }
95887
95991
  }
95888
95992
 
95993
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:true }); //同步模式脚本
95994
+
95889
95995
  this.Frame.SetSizeChage(true);
95890
95996
  this.Draw();
95891
95997
  }
@@ -96174,7 +96280,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96174
96280
  this.UpdateHistoryMinuteUI(updateTime);
96175
96281
  this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"} );
96176
96282
  this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
96177
- this.BindAllOverlayIndexData(this.SourceData);
96283
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
96178
96284
  this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
96179
96285
  this.AutoUpdate();
96180
96286
  return;
@@ -96271,7 +96377,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96271
96377
  this.UpdateHistoryMinuteUI(updateTime);
96272
96378
  this.RecvMinuteDataEvent({FunctionName:"RecvMinuteData"} );
96273
96379
  this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
96274
- this.BindAllOverlayIndexData(this.SourceData);
96380
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
96275
96381
  this.AutoUpdateEvent(true, "MinuteChartContainer::RecvMinuteData");
96276
96382
  this.AutoUpdate();
96277
96383
  return;
@@ -96375,16 +96481,18 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96375
96481
  var chartInfo=this.GetChartMinuteInfo();
96376
96482
  if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
96377
96483
 
96484
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:true });
96485
+
96378
96486
  if (eventData) this.RecvMinuteDataEvent( eventData );
96379
96487
  this.RequestMinuteInfoData();
96380
- this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
96488
+ this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
96381
96489
  this.CreateChartDrawPictureByStorage(); //创建画图工具
96382
96490
 
96383
96491
  this.UpdateFrameMaxMin(); //调整坐标最大 最小值
96384
96492
  this.Frame.SetSizeChage(true);
96385
96493
  this.Draw();
96386
96494
 
96387
- this.BindAllOverlayIndexData(this.SourceData);
96495
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
96388
96496
  }
96389
96497
 
96390
96498
  this.CaclutateLimitPrice=function(yClose, limitData)
@@ -97292,6 +97400,21 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
97292
97400
 
97293
97401
  if (typeof(overlayItem.Script.ExecuteScript)=='function')
97294
97402
  {
97403
+ if (option)
97404
+ {
97405
+ if (option.CheckRunCount) //检测执行次数
97406
+ {
97407
+ if (overlayItem.Script.IsExcessRunCount())
97408
+ return;
97409
+ }
97410
+
97411
+ if (IFrameSplitOperator.IsBool(option.SyncExecute)) //异步|同步
97412
+ {
97413
+ if (overlayItem.Script.IsSync!=option.SyncExecute)
97414
+ return;
97415
+ }
97416
+ }
97417
+
97295
97418
  overlayItem.Script.ExecuteScript(this,windowIndex,hisData);
97296
97419
  return;
97297
97420
  }
@@ -136564,7 +136687,7 @@ function ChartDealList()
136564
136687
  if ( this.SelectedStyle==1)
136565
136688
  {
136566
136689
  this.Canvas.fillStyle=this.SelectedConfig.BGColor;
136567
- this.Canvas.fillRect(rtRow.Left,rtRow.Top, rtRow.Width, rtRow.Height);
136690
+ this.Canvas.fillRect(rtRow.Left+1,rtRow.Top+1, rtRow.Width-2, rtRow.Height-2);
136568
136691
  }
136569
136692
 
136570
136693
  return true;
@@ -150074,7 +150197,7 @@ function ScrollBarBGChart()
150074
150197
 
150075
150198
 
150076
150199
 
150077
- var HQCHART_VERSION="1.1.14847";
150200
+ var HQCHART_VERSION="1.1.14852";
150078
150201
 
150079
150202
  function PrintHQChartVersion()
150080
150203
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14847";
8
+ var HQCHART_VERSION="1.1.14852";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -0,0 +1,56 @@
1
+
2
+ /*
3
+ Copyright (c) 2018 jones
4
+
5
+ http://www.apache.org/licenses/LICENSE-2.0
6
+
7
+ 开源项目 https://github.com/jones2000/HQChart
8
+
9
+ jones_2000@163.com
10
+
11
+ 阿里云api网关网络请求模块
12
+ */
13
+
14
+ function JSAliYunNetwork()
15
+ {
16
+ this.AliYunUrl=[]; //需要验证的阿里账户的域名
17
+ this.AppCode;
18
+
19
+ this.HttpRequest = function(obj)
20
+ {
21
+ $.ajax(
22
+ {
23
+ headers: this.AppCode,
24
+ url: obj.url, data: obj.data,
25
+ type:obj.type, dataType: obj.dataType,async:obj.async,
26
+ success: obj.success,
27
+ error: obj.error,
28
+ }
29
+ );
30
+ }
31
+ }
32
+
33
+
34
+
35
+ // var g_AilYunNetwork=new JSAliYunNetwork(); //初始化一个全局的变量
36
+ /* g_AilYunNetwork.AliYunUrl[0]="xxxxxxx"; //域名 或 具体的地址
37
+ //设置账户密码
38
+ {
39
+ Authorization:'APPCODE 4333fc85c1284212a4724d7159304e70'
40
+ }
41
+
42
+ //替换默认的网络请求接口
43
+ JSNetwork.HttpRequest= function (obj)
44
+ {
45
+ g_AilYunNetwork.HttpRequest(obj);
46
+ }
47
+ */
48
+
49
+ /*外部导入*/
50
+ import $ from 'jquery'
51
+
52
+ /*暴露外部用的方法*/
53
+ export default {
54
+ g_AliYunNetwork: JSAliYunNetwork
55
+
56
+ }
@@ -6974,6 +6974,12 @@ var JSCHART_OPERATOR_ID=
6974
6974
  OP_GOTO_BY_DATAINDEX:17, //的移动到某一个数据起始位置
6975
6975
 
6976
6976
  OP_MOVE_CORSSCURSOR:18, //移动十字光标 { Step, Start:{ Date:, Time: } }
6977
+
6978
+ OP_CORSSCURSOR_PAGE_START:19, //当前屏第1条数据
6979
+ OP_CORSSCURSOR_PAGE_END:20, //当前屏最后1条数据
6980
+
6981
+ OP_CORSSCURSOR_DATA_START:21, //所有数据的第1条数据
6982
+ OP_CORSSCURSOR_DATA_END:22, //所有数据的最后1条数据
6977
6983
  }
6978
6984
 
6979
6985
  var JSCHART_DRAG_ID=
@@ -11923,6 +11929,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11923
11929
  }
11924
11930
  break;
11925
11931
  case 13: //回车
11932
+ case 35: //END
11933
+ case 36: //HOME
11926
11934
  if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
11927
11935
  break;
11928
11936
  default:
@@ -45665,7 +45673,7 @@ function ChartBaseLineBar()
45665
45673
  if (IFrameSplitOperator.IsNumber(item.Up))
45666
45674
  {
45667
45675
  var value=Math.abs(item.Up)*this.BarMaxHeight/this.MaxValue;
45668
- if (value<2) value=2; //太短了 就直接画2个像素高度
45676
+ if (value<1.5) value=1.5; //太短了 就直接画2个像素高度
45669
45677
  var y=yCenter-value;
45670
45678
 
45671
45679
  aryUpBar.push({ X:x, Y:y});
@@ -45674,7 +45682,7 @@ function ChartBaseLineBar()
45674
45682
  if (IFrameSplitOperator.IsNumber(item.Down))
45675
45683
  {
45676
45684
  var value=Math.abs(item.Down)*this.BarMaxHeight/this.MaxValue;
45677
- if (value<2) value=2;
45685
+ if (value<1.5) value=1.5;
45678
45686
  var y=yCenter+value;
45679
45687
  aryDownBar.push({X:x, Y:y});
45680
45688
  }
@@ -84243,6 +84251,80 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
84243
84251
  return true;
84244
84252
  }
84245
84253
  }
84254
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
84255
+ {
84256
+ var kData=this.GetKData();
84257
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
84258
+ var startIndex=kData.DataOffset;
84259
+ var kItem=kData.Data[startIndex];
84260
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
84261
+ return true;
84262
+ }
84263
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
84264
+ {
84265
+ var kData=this.GetKData();
84266
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
84267
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
84268
+ var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
84269
+ var endIndex=kData.DataOffset+showCount-1;
84270
+ if (endIndex>=kData.Data.length) endIndex=kData.Data.length-1;
84271
+ var kItem=kData.Data[endIndex];
84272
+ var index=endIndex-kData.DataOffset;
84273
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
84274
+ return true;
84275
+ }
84276
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START)
84277
+ {
84278
+ var kData=this.GetKData();
84279
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
84280
+ var kItem=kData.Data[0];
84281
+
84282
+ if (kData.DataOffset!=0)
84283
+ {
84284
+ kData.DataOffset=0
84285
+ this.UpdataDataoffset(); //更新数据偏移
84286
+ this.UpdateFrameMaxMin(); //调整坐标最大 最小值
84287
+ this.ResetFrameXSplit();
84288
+ this.Frame.SetSizeChage(true);
84289
+ this.Draw();
84290
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
84291
+ }
84292
+ else
84293
+ {
84294
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
84295
+ }
84296
+
84297
+ return true;
84298
+ }
84299
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END)
84300
+ {
84301
+ var kData=this.GetKData();
84302
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
84303
+
84304
+ var kItem=kData.Data[kData.Data.length-1];
84305
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
84306
+ var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
84307
+ var dataOffset=kData.Data.length-showCount;
84308
+
84309
+ if (kData.DataOffset<dataOffset)
84310
+ {
84311
+ kData.DataOffset=dataOffset;
84312
+ var index=kData.Data.length-kData.DataOffset-1;
84313
+ this.UpdataDataoffset(); //更新数据偏移
84314
+ this.UpdateFrameMaxMin(); //调整坐标最大 最小值
84315
+ this.ResetFrameXSplit();
84316
+ this.Frame.SetSizeChage(true);
84317
+ this.Draw();
84318
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
84319
+ }
84320
+ else
84321
+ {
84322
+ var index=kData.Data.length-kData.DataOffset-1;
84323
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
84324
+ }
84325
+
84326
+ return true;
84327
+ }
84246
84328
  }
84247
84329
 
84248
84330
 
@@ -84603,6 +84685,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
84603
84685
  //Alt+W 区间统计
84604
84686
  //Alt+数字 切换多个窗口
84605
84687
  //Ctrl+I
84688
+ //HOME / END 当前屏 第1条 最后一条
84689
+ //Ctrl+HOME / Ctrl+END 第1条 最后一条
84606
84690
  this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
84607
84691
  {
84608
84692
  if (keyID==37 && e.ctrlKey) //Ctrl+Left
@@ -84639,6 +84723,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
84639
84723
  {
84640
84724
  this.OnEnterKeyDown();
84641
84725
  }
84726
+ else if (keyID==36) //HOME 第1条
84727
+ {
84728
+ var option=null;
84729
+ if (e.ctrlKey)
84730
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START }; //所有数据的第1条数据
84731
+ else
84732
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
84733
+
84734
+ if (option) this.ChartOperator(option);
84735
+ }
84736
+ else if (keyID==35) //END 最后一条
84737
+ {
84738
+ var option=null;
84739
+ if (e.ctrlKey)
84740
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END }; //所有数据的最后1条数据
84741
+ else
84742
+ option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
84743
+
84744
+ if (option) this.ChartOperator(option);
84745
+ }
84642
84746
  else
84643
84747
  {
84644
84748
  return false;
@@ -95774,7 +95878,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95774
95878
  this.RecvMinuteDataEvent( {FunctionName:"RecvHistoryMinuteData"} );
95775
95879
  this.RequestOverlayHistoryMinuteData();
95776
95880
 
95777
- this.BindAllOverlayIndexData(this.SourceData);
95881
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
95778
95882
 
95779
95883
  this.AutoUpdateEvent(true, "MinuteChartContainer::RequestHistoryMinuteData");
95780
95884
  this.AutoUpdate();
@@ -95930,6 +96034,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
95930
96034
  }
95931
96035
  }
95932
96036
 
96037
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:true }); //同步模式脚本
96038
+
95933
96039
  this.Frame.SetSizeChage(true);
95934
96040
  this.Draw();
95935
96041
  }
@@ -96218,7 +96324,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96218
96324
  this.UpdateHistoryMinuteUI(updateTime);
96219
96325
  this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"} );
96220
96326
  this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
96221
- this.BindAllOverlayIndexData(this.SourceData);
96327
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
96222
96328
  this.AutoUpdateEvent(true, "MinuteChartContainer::RecvUpdateMinuteData");
96223
96329
  this.AutoUpdate();
96224
96330
  return;
@@ -96315,7 +96421,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96315
96421
  this.UpdateHistoryMinuteUI(updateTime);
96316
96422
  this.RecvMinuteDataEvent({FunctionName:"RecvMinuteData"} );
96317
96423
  this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
96318
- this.BindAllOverlayIndexData(this.SourceData);
96424
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
96319
96425
  this.AutoUpdateEvent(true, "MinuteChartContainer::RecvMinuteData");
96320
96426
  this.AutoUpdate();
96321
96427
  return;
@@ -96419,16 +96525,18 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
96419
96525
  var chartInfo=this.GetChartMinuteInfo();
96420
96526
  if (chartInfo) chartInfo.SourceData=this.SourceData; //数据绑定到信息地雷上
96421
96527
 
96528
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:true });
96529
+
96422
96530
  if (eventData) this.RecvMinuteDataEvent( eventData );
96423
96531
  this.RequestMinuteInfoData();
96424
- this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
96532
+ this.RequestOverlayMinuteData(); //请求叠加数据 (主数据下载完再下载)
96425
96533
  this.CreateChartDrawPictureByStorage(); //创建画图工具
96426
96534
 
96427
96535
  this.UpdateFrameMaxMin(); //调整坐标最大 最小值
96428
96536
  this.Frame.SetSizeChage(true);
96429
96537
  this.Draw();
96430
96538
 
96431
- this.BindAllOverlayIndexData(this.SourceData);
96539
+ this.BindAllOverlayIndexData(this.SourceData, { SyncExecute:false });
96432
96540
  }
96433
96541
 
96434
96542
  this.CaclutateLimitPrice=function(yClose, limitData)
@@ -97336,6 +97444,21 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
97336
97444
 
97337
97445
  if (typeof(overlayItem.Script.ExecuteScript)=='function')
97338
97446
  {
97447
+ if (option)
97448
+ {
97449
+ if (option.CheckRunCount) //检测执行次数
97450
+ {
97451
+ if (overlayItem.Script.IsExcessRunCount())
97452
+ return;
97453
+ }
97454
+
97455
+ if (IFrameSplitOperator.IsBool(option.SyncExecute)) //异步|同步
97456
+ {
97457
+ if (overlayItem.Script.IsSync!=option.SyncExecute)
97458
+ return;
97459
+ }
97460
+ }
97461
+
97339
97462
  overlayItem.Script.ExecuteScript(this,windowIndex,hisData);
97340
97463
  return;
97341
97464
  }
@@ -136608,7 +136731,7 @@ function ChartDealList()
136608
136731
  if ( this.SelectedStyle==1)
136609
136732
  {
136610
136733
  this.Canvas.fillStyle=this.SelectedConfig.BGColor;
136611
- this.Canvas.fillRect(rtRow.Left,rtRow.Top, rtRow.Width, rtRow.Height);
136734
+ this.Canvas.fillRect(rtRow.Left+1,rtRow.Top+1, rtRow.Width-2, rtRow.Height-2);
136612
136735
  }
136613
136736
 
136614
136737
  return true;
@@ -161114,7 +161237,7 @@ function HQChartScriptWorker()
161114
161237
 
161115
161238
 
161116
161239
 
161117
- var HQCHART_VERSION="1.1.14847";
161240
+ var HQCHART_VERSION="1.1.14852";
161118
161241
 
161119
161242
  function PrintHQChartVersion()
161120
161243
  {