hqchart 1.1.14851 → 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
@@ -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)//当前屏到头了
@@ -13094,7 +13118,7 @@ this.DrawItemTextV2(drawInfo,rtItem);}else{this.DrawItemText(text,textColor,text
13094
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线图
13095
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://原始数据
13096
13120
  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] };
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] };
13098
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] };
13099
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)//左边
13100
13124
  {this.Canvas.fillRect(center,top,-barWidth,height);}else//右边
@@ -15050,7 +15074,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
15050
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);};}/********************************************************************************
15051
15075
  * 版本信息输出
15052
15076
  *
15053
- */var HQCHART_VERSION="1.1.14850";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();//把给外界调用的方法暴露出来
15054
15078
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
15055
15079
  // BaseIndex:BaseIndex,
15056
15080
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14851",
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:
@@ -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;
@@ -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:
@@ -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;
@@ -136583,7 +136687,7 @@ function ChartDealList()
136583
136687
  if ( this.SelectedStyle==1)
136584
136688
  {
136585
136689
  this.Canvas.fillStyle=this.SelectedConfig.BGColor;
136586
- 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);
136587
136691
  }
136588
136692
 
136589
136693
  return true;
@@ -150093,7 +150197,7 @@ function ScrollBarBGChart()
150093
150197
 
150094
150198
 
150095
150199
 
150096
- var HQCHART_VERSION="1.1.14850";
150200
+ var HQCHART_VERSION="1.1.14852";
150097
150201
 
150098
150202
  function PrintHQChartVersion()
150099
150203
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14850";
8
+ var HQCHART_VERSION="1.1.14852";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -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:
@@ -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;
@@ -136627,7 +136731,7 @@ function ChartDealList()
136627
136731
  if ( this.SelectedStyle==1)
136628
136732
  {
136629
136733
  this.Canvas.fillStyle=this.SelectedConfig.BGColor;
136630
- 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);
136631
136735
  }
136632
136736
 
136633
136737
  return true;
@@ -161133,7 +161237,7 @@ function HQChartScriptWorker()
161133
161237
 
161134
161238
 
161135
161239
 
161136
- var HQCHART_VERSION="1.1.14850";
161240
+ var HQCHART_VERSION="1.1.14852";
161137
161241
 
161138
161242
  function PrintHQChartVersion()
161139
161243
  {