hqchart 1.1.14929 → 1.1.14933

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.
@@ -5640,7 +5640,7 @@ this.CallAcutionSplitYV2(splitData,this.Frame.HorizontalInfo.slice());if(this.En
5640
5640
  if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};if(this.OverlayIdentify)data.OverlayIdentify=this.OverlayIdentify;event.Callback(event,data,this);}}};this.FormatValueString=function(value){var text;if(this.StringFormat==1)//手机端格式 如果有万,亿单位了 去掉小数
5641
5641
  {var floatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(value)&&Math.abs(value)>1000)floatPrecision=0;text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}else if(this.StringFormat==2)//原始数据输出
5642
5642
  {text=''+value.toFixed(this.FloatPrecision);}else{var absValue=Math.abs(value);if(absValue<0.0000000001){text=0;}else if(absValue<this.FLOATPRECISION_RANGE[this.FLOATPRECISION_RANGE.length-1]){text=value.toExponential(2).toString();}else{var floatPrecision=this.GetFloatPrecision(absValue,this.FloatPrecision);//数据比小数位数还小, 调整小数位数
5643
- text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}}return text;};this.FilterIgnoreYValue=function(){if(!this.IgnoreYValue||this.IgnoreYValue.length<=0)return;var setValue=new _set2.default(this.IgnoreYValue);this.Frame.HorizontalInfo=this.Frame.HorizontalInfo.filter(function(item){return!setValue.has(item.Value);});};this.DynamicMessageText=function(){if(this.SplitType==2){for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];if(item.Message[0])item.Message[0]+='%';if(item.Message[1])item.Message[1]+='%';}}};this.CallAcutionSplitYV2=function(splitData,aryHorizontalInfo){if(!this.IsCallAuctionFrame())return;if(!IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return;var aryCallAcution=this.GetCallAcutionSplitYV2(splitData,aryHorizontalInfo);if(!aryCallAcution)return;for(var i=0;i<this.Frame.HorizontalInfo.length;++i)//把显示的数据迁移到 Message[2] Message[3]
5643
+ text=IFrameSplitOperator.FormatValueStringV2(value,floatPrecision,2,this.LanguageID);}}return text;};this.FilterIgnoreYValue=function(){if(!this.IgnoreYValue||this.IgnoreYValue.length<=0)return;var setValue=new _set2.default(this.IgnoreYValue);this.Frame.HorizontalInfo=this.Frame.HorizontalInfo.filter(function(item){return!setValue.has(item.Value);});};this.DynamicMessageText=function(){if(this.SplitType==2){for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];if(item.Message[0])item.Message[0]+='%';if(item.Message[1])item.Message[1]+='%';}}};this.CallAcutionSplitYV2=function(splitData,aryHorizontalInfo){if(!this.IsCallAuctionFrame())return;if(!IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return;var aryCallAcution=this.GetCallAcutionSplitYV2(splitData,aryHorizontalInfo);if(!aryCallAcution)return;for(var i=0;i<this.Frame.HorizontalInfo.length;++i)//把显示的数据迁移到 Message[2] Message[3]
5644
5644
  {var item=this.Frame.HorizontalInfo[i];if(aryCallAcution.IsBeforeData){item.Message[2]=item.Message[0];item.Message[0]=null;}if(aryCallAcution.IsAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){item.Message[3]=item.Message[1];item.Message[1]=null;}}//集合竞价的坐标插入最后
5645
5645
  for(var i=0;i<aryCallAcution.HorizontalInfo.length;++i){var item=aryCallAcution.HorizontalInfo[i];this.Frame.HorizontalInfo.push(item);}};this.GetCallAcutionSplitYV2=function(splitData,arySource){if(!this.IsCallAuctionFrame())return null;var bBeforeData=this.IsBeforeData==true&&this.BeforeOpenData&&(this.BeforeOpenData.Ver==2.0||this.BeforeOpenData.Ver==3.0);var bAfterData=this.IsAfterData==true&&this.AfterCloseData&&(this.AfterCloseData.Ver==2.0||this.AfterCloseData.Ver==3.0);var bottom=this.Frame.ChartBorder.GetBottomEx();var height=this.Frame.ChartBorder.GetHeightEx();var bHScreen=this.Frame.IsHScreen;if(this.Frame.IsHScreen){var border=this.Frame.GetBorder();var width=border.RightEx-border.LeftEx;}if(bBeforeData||bAfterData){var aryHorizontalInfo=[];for(var i=0;i<arySource.length;++i){var hItem=arySource[i];if(!hItem||!IFrameSplitOperator.IsNumber(hItem.Value))continue;var y=this.Frame.GetYFromData(hItem.Value);var item=new CoordinateInfo();item.Value=hItem.Value;item.LineType=8;if(bBeforeData){if(bHScreen){var value=(y-border.LeftEx)/width*(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)+this.BeforeOpenData.VolMin;}else{var value=(bottom-y)/height*(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)+this.BeforeOpenData.VolMin;}item.Message[0]=this.FormatValueString(value);}if(bAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){if(bHScreen){var value=(y-border.LeftEx)/width*(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)+this.AfterCloseData.VolMin;}else{var value=(bottom-y)/height*(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)+this.AfterCloseData.VolMin;}item.Message[1]=this.FormatValueString(value);}aryHorizontalInfo.push(item);}return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:bBeforeData,IsAfterData:bAfterData};}var bMultiDayBeforeData=false,bMultiDayAfterData=false;var beforeDayData=null,afterDayData=null;if(this.MultiDayBeforeOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){bMultiDayBeforeData=true;var firstDayData=this.MultiDayBeforeOpenData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0)beforeDayData=firstDayData;}if(this.MultiDayAfterCloseData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){bMultiDayAfterData=true;var firstDayData=this.MultiDayAfterCloseData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0)afterDayData=firstDayData;}if(bMultiDayBeforeData||bMultiDayAfterData){var aryHorizontalInfo=[];for(var i=0;i<arySource.length;++i){var hItem=arySource[i];if(!hItem||!IFrameSplitOperator.IsNumber(hItem.Value))continue;var y=this.Frame.GetYFromData(hItem.Value);var item=new CoordinateInfo();item.Value=hItem.Value;item.LineType=9;var isVaild=false;if(beforeDayData){if(bHScreen){var value=(y-border.LeftEx)/width*(beforeDayData.VolMax-beforeDayData.VolMin)+beforeDayData.VolMin;}else{var value=(bottom-y)/height*(beforeDayData.VolMax-beforeDayData.VolMin)+beforeDayData.VolMin;}item.Message[0]=this.FormatValueString(value);isVaild=true;}if(afterDayData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){if(bHScreen){var value=(y-border.LeftEx)/width*(afterDayData.VolMax-afterDayData.VolMin)+afterDayData.VolMin;}else{var value=(bottom-y)/height*(afterDayData.VolMax-afterDayData.VolMin)+afterDayData.VolMin;}item.Message[1]=this.FormatValueString(value);isVaild=true;}if(isVaild)aryHorizontalInfo.push(item);}if(IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:bMultiDayBeforeData,IsAfterData:bMultiDayAfterData};}return null;};/* 废弃 使用 CallAcutionSplitYV2
5646
5646
  this.CallAcutionSplitY=function(count,splitData)
@@ -8705,12 +8705,16 @@ event.Callback(event,data,this);if(data.PreventDefault)return;}if(button.ID==JSC
8705
8705
  this.ChartOperator=function(obj){var id=obj.ID;if(id===JSCHART_OPERATOR_ID.OP_SCROLL_LEFT||id===JSCHART_OPERATOR_ID.OP_SCROLL_RIGHT)//左右移动 { Step:移动天数 }
8706
8706
  {if(this.DayCount==1)return false;if(!this.PageInfo.Enable)return false;if(!this.DayData)return false;//数据还没有下载好
8707
8707
  var isLeft=id===JSCHART_OPERATOR_ID.OP_SCROLL_LEFT?true:false;var step=1;if(obj.Step>0)step=obj.Step;if(!this.DayOffset)return false;if(isLeft){var offset=this.DayOffset.Offset;offset+=step;if(offset+this.DayOffset.ShowDayCount>this.DayOffset.DayCount)offset=this.DayOffset.DayCount-this.DayOffset.ShowDayCount;if(offset==this.DayOffset.Offset)return false;this.DayOffset.Offset=offset;}else{var offset=this.DayOffset.Offset;offset-=step;if(offset<0)offset=0;if(offset==this.DayOffset.Offset)return false;this.DayOffset.Offset=offset;}this.UpdateHistoryMinuteUI(null);this.SendPageChangedEvent();return true;}else if(id==JSCHART_OPERATOR_ID.OP_SCROLL_GOTO){if(this.DayCount==1)return false;if(!this.PageInfo.Enable)return false;if(!this.DayData)return false;//数据还没有下载好
8708
- if(IFrameSplitOperator.IsNumber(obj.ShowDayCount)){this.PageInfo.ShowDayCount=obj.ShowDayCount;this.DayOffset.ShowDayCount=obj.ShowDayCount;}if(IFrameSplitOperator.IsNumber(obj.Offset)){var offset=obj.Offset;if(this.DayOffset.ShowDayCount>0&&offset+this.DayOffset.ShowDayCount>=this.DayOffset.DayCount)offset=this.DayOffset.DayCount-this.DayOffset.ShowDayCount;if(offset==this.DayOffset.Offset)return false;this.DayOffset.Offset=offset;}this.UpdateHistoryMinuteUI(null);this.SendPageChangedEvent();return true;}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_GOTO)//{ Type:1 如果不存在 就隐藏十字光标}
8709
- {if(!this.SourceData)return false;if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return false;var frame=this.Frame.SubFrame[0].Frame;if(!IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data))return false;if(IFrameSplitOperator.IsNumber(obj.Time)&&IFrameSplitOperator.IsNumber(obj.Date)){var findIndex=-1,value=null,lastPrice=null;for(var i=0;i<this.SourceData.Data.length;++i){var item=this.SourceData.Data[i];if(IFrameSplitOperator.IsNumber(item.Close))lastPrice=item.Close;if(item.Time==obj.Time&&item.Date==obj.Date){findIndex=i;value=item.Close;break;}}if(findIndex<0&&this.DayCount==1&&!(IFrameSplitOperator.IsNumber(obj.Type)&&obj.Type>0)){var timeData=g_MinuteTimeStringData.GetTimeData(this.Symbol);for(var i=0;i<timeData.length;++i){if(timeData[i]==obj.Time){findIndex=i;value=lastPrice;break;}}}if(findIndex<0){if(obj.Type==1)// 如果不存在 就隐藏十字光标
8710
- {var x=-1,y=-1;var MoveStatus={X:x,Y:y,IsInClient:this.IsMouseOnClient(x,y)};this.LastMouseStatus.OnMouseMove=MoveStatus;this.LastMouseStatus.MoveOnPoint={X:x,Y:y};//鼠标移动的位置
8711
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);var titleChart=this.TitlePaint[0];if(event&&titleChart)titleChart.OnMouseMoveEvent=event;var e={clientX:x,clientY:y};this.MoveOnPoint={X:x,Y:y};this.OnMouseMove(x,y,e);this.LastMouseStatus.MoveOnPoint=null;if(titleChart)titleChart.OnMouseMoveEvent=null;}return;}}var x=frame.GetXFromIndex(findIndex);var y=frame.GetYFromData(value);//保存最后一次鼠标移动信息
8708
+ if(IFrameSplitOperator.IsNumber(obj.ShowDayCount)){this.PageInfo.ShowDayCount=obj.ShowDayCount;this.DayOffset.ShowDayCount=obj.ShowDayCount;}if(IFrameSplitOperator.IsNumber(obj.Offset)){var offset=obj.Offset;if(this.DayOffset.ShowDayCount>0&&offset+this.DayOffset.ShowDayCount>=this.DayOffset.DayCount)offset=this.DayOffset.DayCount-this.DayOffset.ShowDayCount;if(offset==this.DayOffset.Offset)return false;this.DayOffset.Offset=offset;}this.UpdateHistoryMinuteUI(null);this.SendPageChangedEvent();return true;}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_GOTO)//{ Type:1 如果不存在 就隐藏十字光标, Time:, Date: }
8709
+ {var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
8710
+ if(!IFrameSplitOperator.IsNumber(obj.Time)||!IFrameSplitOperator.IsNumber(obj.Date))return false;var findIndex=-1,findItem=null;for(var i=0;i<this.SourceData.Data.length;++i){var item=this.SourceData.Data[i];if(IFrameSplitOperator.IsNumber(item.Close))lastPrice=item.Close;if(item.Time==obj.Time&&item.Date==obj.Date){findIndex=i;findItem=item;break;}}this.ChartOperator_Temp_SetChartCorssCursor(findIndex,findItem);return true;}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START)//当前屏第1条数据
8711
+ {var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
8712
+ 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条数据
8713
+ {var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
8714
+ var index=kData.Data.length-1;var kItem=kData.Data[index];this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);return true;}};//index=-1 隐藏十字光标
8715
+ 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=-1,y=-1;if(IFrameSplitOperator.IsNumber(index)&&index>=0)x=frame.GetXFromIndex(index);if(kItem&&IFrameSplitOperator.IsNumber(kItem.Close))y=frame.GetYFromData(kItem.Close);//保存最后一次鼠标移动信息
8712
8716
  var MoveStatus={X:x,Y:y,IsInClient:this.IsMouseOnClient(x,y)};this.LastMouseStatus.OnMouseMove=MoveStatus;this.LastMouseStatus.MoveOnPoint={X:x,Y:y};//鼠标移动的位置
8713
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);var titleChart=this.TitlePaint[0];if(event&&titleChart)titleChart.OnMouseMoveEvent=event;this.MoveOnPoint={X:x,Y:y};this.OnMouseMove(x,y,{});this.LastMouseStatus.MoveOnPoint=null;if(titleChart)titleChart.OnMouseMoveEvent=null;}};this.SendPageChangedEvent=function(){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MINUTE_PAGE_CHANGED);//选中画图工具事件
8717
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);var titleChart=this.TitlePaint[0];if(event&&titleChart)titleChart.OnMouseMoveEvent=event;this.MoveOnPoint={X:x,Y:y};this.OnMouseMove(x,y,{});this.LastMouseStatus.MoveOnPoint=null;if(titleChart)titleChart.OnMouseMoveEvent=null;return true;};this.SendPageChangedEvent=function(){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MINUTE_PAGE_CHANGED);//选中画图工具事件
8714
8718
  if(!event||!event.Callback)return;var sendData={DayOffset:this.DayOffset,DayData:this.DayData};event.Callback(event,sendData,this);};this.IsMouseOnClient=function(x,y){var border=this.Frame.IsHScreen?this.Frame.ChartBorder.GetHScreenBorder():this.Frame.ChartBorder.GetBorder();var rect={Left:border.Left,Top:border.Top,Right:border.Right,Bottom:border.Bottom};if(x>=rect.Left&&x<=rect.Right&&y>=rect.Top&&y<=rect.Bottom)return true;return false;};this.GetChartMinuteBuySellBar=function(){var chart=this.ChartPaint[3];if(!chart)return null;if(chart.Name!="Minute-BuySell-Bar")return null;return chart;};this.IsShowMinuteBuySellBar=function(){var chart=this.GetChartMinuteBuySellBar();if(!chart)return false;return chart.IsShow;};//左右拖拽
8715
8719
  this.OnDragMode_One=function(moveData,e){var drag=this.MouseDrag;var moveSetp=moveData.X;var yMoveSetp=moveData.Y;var bNeedDraw=true;if(this.UpDownDrag&&this.UpDownDrag.Index>=0){if(yMoveSetp>=5){var yMove=e.clientY-drag.LastMove.Y;JSConsole.Chart.Log("[MinuteChartContainer::OnDragMode_One] UpDownDrag ",this.UpDownDrag,yMove);//this.UIElement.style.cursor="pointer";
8716
8720
  this.SetCursor({Cursor:"pointer"});if(this.OnUpDonwFrameY(this.UpDownDrag,yMove)){drag.LastMove.Y=e.clientY;bNeedDraw=true;}}}else if(this.RectSelectDrag&&this.RectSelectDrag.Index>=0)//区间选择 左右调整
@@ -8828,11 +8832,17 @@ if(this.SelectChartDrawPicture){var drawPicture=this.SelectChartDrawPicture;JSCo
8828
8832
  this.OnMarkRectSelect(e);break;case 33://page up
8829
8833
  if(this.PageInfo.Enable){var option={ID:JSCHART_OPERATOR_ID.OP_SCROLL_LEFT,Step:this.PageInfo.ShowDayCount};this.ChartOperator(option);}break;case 34://page down
8830
8834
  if(this.PageInfo.Enable){var option={ID:JSCHART_OPERATOR_ID.OP_SCROLL_RIGHT,Step:this.PageInfo.ShowDayCount};this.ChartOperator(option);}break;case 27:if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status!=20)//画布移动的时候不能取消
8831
- this.CurrentChartDrawPicture=null;}break;case 38:case 40:if((e.ctrlKey||e.shiftKey)&&this.OnCustomKeyDown)this.OnCustomKeyDown(keyID,e);break;default:return;}if(draw)this.DrawDynamicInfo();//不让滚动条滚动
8835
+ this.CurrentChartDrawPicture=null;}break;case 38://up
8836
+ case 40://down
8837
+ if((e.ctrlKey||e.shiftKey)&&this.OnCustomKeyDown)this.OnCustomKeyDown(keyID,e);break;case 35://END
8838
+ case 36://HOME
8839
+ if(this.OnCustomKeyDown)this.OnCustomKeyDown(keyID,e);break;default:return;}if(draw)this.DrawDynamicInfo();//不让滚动条滚动
8832
8840
  if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.OnCustomKeyDown=function(keyID,e)//自定义键盘事件
8833
8841
  {if(keyID==38&&e.shiftKey)//shift+up 上移十字光标
8834
8842
  {this.MoveCorssCursorUp(this.ShiftUpDownStepPixel);return true;}else if(keyID==40&&e.shiftKey)//shift+down 下移十字光标
8835
- {this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);return true;}else{return false;}};/*
8843
+ {this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);return true;}else if(keyID==36)//HOME 第1条
8844
+ {var option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START};return this.ChartOperator(option);}else if(keyID==35)//END 最后一条
8845
+ {var option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END};return this.ChartOperator(option);}else{return false;}};/*
8836
8846
  this.OnMarkRectSelect=function(e)
8837
8847
  {
8838
8848
  var corssCursor=this.ChartCorssCursor; //十字光标
@@ -13824,7 +13834,7 @@ switch(column.ColorType){case 1:drawInfo.TextColor=this.GetUpDownColor(value,0);
13824
13834
  {this.GetCustomIconData(column,data.Symbol,drawInfo,data);return;}};this.GetCustomCheckBoxDrawInfo=function(data,column,drawInfo){var checkData=this.GetExtendData(data,column);if(!checkData)return;if(!IFrameSplitOperator.IsBool(checkData.Checked))return;drawInfo.Checked=checkData.Checked;drawInfo.Enable=true;drawInfo.Data=checkData;if(IFrameSplitOperator.IsBool(checkData.DisableCheckBox))drawInfo.Enable=!checkData.DisableCheckBox;drawInfo.CheckBox=column.CheckBox;};this.GetCustomButtonDrawInfo=function(data,column,drawInfo){var buttonData=this.GetExtendData(data,column);if(!buttonData)return;drawInfo.Text=buttonData.Title;drawInfo.Button=column.Button;drawInfo.Font=column.Button.Font;drawInfo.Enable=true;drawInfo.Data=buttonData;if(IFrameSplitOperator.IsBool(buttonData.Enable))drawInfo.Enable=buttonData.Enable;};this.GetCustomProgressBarDrawInfo=function(data,column,drawInfo){var barData=this.GetExtendData(data,column);if(!barData)return;drawInfo.Text=barData.Title;drawInfo.ProgressBar=column.ProgressBar;drawInfo.Enable=true;drawInfo.Value=barData.Value;//占比
13825
13835
  drawInfo.Data=barData;if(IFrameSplitOperator.IsBool(barData.Enable))drawInfo.Enable=barData.Enable;if(barData.TextColor)drawInfo.TextColor=barData.TextColor;if(barData.BarColor)drawInfo.BarColor=barData.BarColor;if(barData.BGColor)drawInfo.BGColor=barData.BGColor;};this.GetCustomLinkDrawInfo=function(data,column,drawInfo){var linkData=this.GetExtendData(data,column);if(!linkData)return;drawInfo.Text=linkData.Title;drawInfo.Link=column.Link;drawInfo.Enable=true;drawInfo.Data=linkData;drawInfo.MaxText=column.MaxText;if(IFrameSplitOperator.IsBool(linkData.Enable))drawInfo.Enable=linkData.Enable;if(linkData.TextColor)drawInfo.TextColor=linkData.TextColor;};this.FormatReserveNumber=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_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);}else if(column.ColorType==3){drawInfo.TextColor=this.GetUpDownColor(value,data.YClose);}}var text=value.toFixed(column.FloatPrecision);if(column.Format&&IFrameSplitOperator.IsNumber(column.Format.Type)){var format=column.Format;switch(format.Type){case 1://原始数据
13826
13836
  text=value.toFixed(column.FloatPrecision);break;case 2://千分位分割
13827
- 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;}}if(column.StringFormat&&text){text=column.StringFormat.replace("{0}",text);}drawInfo.Text=text;};this.FormatReserveString=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_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;if(item.Tooltip&&IFrameSplitOperator.IsNonEmptyArray(item.Tooltip.AryText)){drawInfo.Tooltip={Type:4,Data:{AryText:item.Tooltip.AryText}};}}else if(IFrameSplitOperator.IsString(item)){drawInfo.Text=item;}};this.FormatReserveDateTime=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var item=data[fieldName];if(!IFrameSplitOperator.IsObject(item))return;if(item.DateTime)drawInfo.Text=IFrameSplitOperator.FormatDateTimeStringV2(item.DateTime,column.DateTimeFormat);if(item.TextColor)drawInfo.TextColor=item.TextColor;if(item.BGColor)drawInfo.BGColor=item.BGColor;};this.FormatReserveProgressBar=function(column,data,drawInfo){var fieldName=MAP_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var item=data[fieldName];if(IFrameSplitOperator.IsNumber(item)){drawInfo.ProgressBar=column.ProgressBar;drawInfo.Enable=true;drawInfo.Value=item;//占比
13837
+ 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;}}if(column.StringFormat&&text){text=column.StringFormat.replace("{0}",text);}drawInfo.Text=text;};this.FormatReserveString=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_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;if(item.Tooltip&&IFrameSplitOperator.IsNonEmptyArray(item.Tooltip.AryText)){drawInfo.Tooltip={Type:4,Data:{AryText:item.Tooltip.AryText,Callback:item.Tooltip.Callback}};}}else if(IFrameSplitOperator.IsString(item)){drawInfo.Text=item;}};this.FormatReserveDateTime=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var item=data[fieldName];if(!IFrameSplitOperator.IsObject(item))return;if(item.DateTime)drawInfo.Text=IFrameSplitOperator.FormatDateTimeStringV2(item.DateTime,column.DateTimeFormat);if(item.TextColor)drawInfo.TextColor=item.TextColor;if(item.BGColor)drawInfo.BGColor=item.BGColor;};this.FormatReserveProgressBar=function(column,data,drawInfo){var fieldName=MAP_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var item=data[fieldName];if(IFrameSplitOperator.IsNumber(item)){drawInfo.ProgressBar=column.ProgressBar;drawInfo.Enable=true;drawInfo.Value=item;//占比
13828
13838
  drawInfo.Data={Value:item};}else if(IFrameSplitOperator.IsObject(item)){if(item.Title)drawInfo.Text=item.Title;drawInfo.ProgressBar=column.ProgressBar;drawInfo.Enable=true;drawInfo.Value=item.Value;//占比
13829
13839
  drawInfo.Data=item;if(IFrameSplitOperator.IsBool(item.Enable))drawInfo.Enable=item.Enable;if(item.TextColor)drawInfo.TextColor=item.TextColor;if(item.BarColor)drawInfo.BarColor=item.BarColor;if(item.BGColor)drawInfo.BGColor=item.BGColor;}};this.FormatReserveButton=function(column,data,drawInfo){var fieldName=MAP_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var item=data[fieldName];if(!item)return;drawInfo.Text=item.Title;drawInfo.Button=column.Button;drawInfo.Font=column.Button.Font;drawInfo.Enable=true;drawInfo.Data=item;if(IFrameSplitOperator.IsBool(item.Enable))drawInfo.Enable=item.Enable;};this.FormaTimeDrawInfo=function(column,stock,drawInfo,data){if(!IFrameSplitOperator.IsNumber(stock.Time))return;if(column.ValueType==0)//0=hhmm 1=hhmmss 2=hhmmss.fff
13830
13840
  {drawInfo.Text=IFrameSplitOperator.FormatTimeString(stock.Time,"HH:MM");}else if(column.ValueType==1){drawInfo.Text=IFrameSplitOperator.FormatTimeString(stock.Time,"HH:MM:SS");}else if(column.ValueType==2){drawInfo.Text=IFrameSplitOperator.FormatTimeString(stock.Time,"HH:MM:SS.fff");}};this.FormaDateDrawInfo=function(column,stock,drawInfo,data){if(!IFrameSplitOperator.IsNumber(stock.Date))return;if(column.FormatType==0)drawInfo.Text=IFrameSplitOperator.FormatDateString(stock.Date,"YYYY-MM-DD");else if(column.FormatType==1)drawInfo.Text=IFrameSplitOperator.FormatDateString(stock.Date,"YYYY/MM/DD");else if(column.FormatType==2)drawInfo.Text=IFrameSplitOperator.FormatDateString(stock.Date,"YYYY/MM/DD/W");else if(column.FormatType==3)drawInfo.Text=IFrameSplitOperator.FormatDateString(stock.Date,"YYYY-MM");else if(column.FormatType==4)drawInfo.Text=IFrameSplitOperator.FormatDateString(stock.Date,"MM/DD");else if(column.FormatType==4)drawInfo.Text=IFrameSplitOperator.FormatDateString(stock.Date,"MM-DD");};//自定义图标
@@ -13878,7 +13888,7 @@ this.Canvas.fillStyle=this.DragRowColor;this.Canvas.fillRect(left,textTop,rowWid
13878
13888
  var chartRight=this.RectClient.Right;this.Canvas.font=this.ItemFont;for(var i=0;i<this.FixedColumn&&i<this.Column.length;++i){var item=this.Column[i];this.DrawItem(dataIndex,data,item,left,top,3);left+=item.Width;if(left>=chartRight)break;}for(var i=this.FixedColumn+this.Data.XOffset;i<this.Column.length;++i){var item=this.Column[i];this.DrawItem(dataIndex,data,item,left,top,3);left+=item.Width;if(left>=chartRight)break;}};this.DrawDragHeader=function(){if(!this.DragHeader)return;var drag=this.DragHeader;var clickData=drag.ClickData;var rtHeader=clickData.Header.Rect;var headerWidth=rtHeader.Right-rtHeader.Left;var rtRow={Left:drag.MovePoint.X-headerWidth/2,Top:this.RectClient.Top+this.HeaderHeight,Width:headerWidth};rtRow.Bottom=rtRow.Top+this.HeaderHeight+this.RowHeight*this.RowCount+this.FixedRowHeight*this.FixedRowCount;rtRow.Right=rtRow.Left+rtRow.Width;rtRow.Height=rtRow.Bottom-rtRow.Top;//背景
13879
13889
  this.Canvas.fillStyle=this.DragRowColor;this.Canvas.fillRect(rtRow.Left,rtRow.Top,rtRow.Width,rtRow.Height);//文字
13880
13890
  var cellHeader={Left:rtRow.Left,Top:rtRow.Top,Right:rtRow.Right,Width:rtRow.Width,Height:this.HeaderHeight};cellHeader.Bottom=cellHeader.Top+cellHeader.Height;this.DrawHeaderItem(clickData.Header.Column,cellHeader,clickData.Header.Index,{HeaderColor:this.DragRowTextColor});var textTop=cellHeader.Bottom+this.FixedRowHeight*this.FixedRowCount;this.Canvas.font=this.ItemFont;var dataCount=this.GetAllRowCount();for(var i=this.Data.YOffset,j=0;i<dataCount&&j<this.RowCount;++i,++j){var symbol=this.Data.Data[i];var data={Symbol:symbol,Stock:null,Block:null};if(this.GetStockDataCallback)data.Stock=this.GetStockDataCallback(symbol);if(this.GetBlockDataCallback)data.Block=this.GetBlockDataCallback(symbol);if(this.GetFlashBGDataCallback)data.FlashBG=this.GetFlashBGDataCallback(symbol,Date.now());data.Decimal=GetfloatPrecision(symbol);//小数位数
13881
- var item=this.Column[clickData.Header.Index];this.DrawItem(i,data,item,cellHeader.Left,textTop,3);textTop+=this.RowHeight;}};this.GetTooltipData=function(x,y){if(!IFrameSplitOperator.IsNonEmptyArray(this.TooltipRect))return null;for(var i=0;i<this.TooltipRect.length;++i){var item=this.TooltipRect[i];var rt=item.Rect;if(!rt)continue;if(x>=rt.Left&&x<=rt.Right&&y>=rt.Top&&y<=rt.Bottom){return{Rect:item.Rect,Stock:item.Stock,Column:item.Column,Index:item.Index,Type:item.Type,Data:item.Data};}}return null;};this.GetButtonData=function(x,y){if(!IFrameSplitOperator.IsNonEmptyArray(this.ButtonRect))return null;for(var i=0;i<this.ButtonRect.length;++i){var item=this.ButtonRect[i];var rt=item.Rect;if(!rt)continue;if(x>=rt.Left&&x<=rt.Right&&y>=rt.Top&&y<=rt.Bottom){return{Rect:item.Rect,Stock:item.Stock,Column:item.Column,Index:item.Index,Type:item.Type,Data:item.Data,ColumnIndex:item.ColumnIndex};}}};this.PtInHeaderDragBorder=function(x,y){if(!this.IsShowHeader)return null;var left=this.RectClient.Left;var right=this.RectClient.Right;var top=this.RectClient.Top;var bottom=top+this.HeaderHeight;if(!(x>=left&&x<=right&&y>=top&&y<=bottom))return null;var textLeft=left;var dragBarWidth=5*GetDevicePixelRatio();//固定列
13891
+ var item=this.Column[clickData.Header.Index];this.DrawItem(i,data,item,cellHeader.Left,textTop,3);textTop+=this.RowHeight;}};this.GetTooltipData=function(x,y){if(!IFrameSplitOperator.IsNonEmptyArray(this.TooltipRect))return null;for(var i=0;i<this.TooltipRect.length;++i){var item=this.TooltipRect[i];var rt=item.Rect;if(!rt)continue;if(x>=rt.Left&&x<=rt.Right&&y>=rt.Top&&y<=rt.Bottom){return{Rect:item.Rect,Stock:item.Stock,Column:item.Column,Index:item.Index,Type:item.Type,Data:item.Data,Callback:item.Callback};}}return null;};this.GetButtonData=function(x,y){if(!IFrameSplitOperator.IsNonEmptyArray(this.ButtonRect))return null;for(var i=0;i<this.ButtonRect.length;++i){var item=this.ButtonRect[i];var rt=item.Rect;if(!rt)continue;if(x>=rt.Left&&x<=rt.Right&&y>=rt.Top&&y<=rt.Bottom){return{Rect:item.Rect,Stock:item.Stock,Column:item.Column,Index:item.Index,Type:item.Type,Data:item.Data,ColumnIndex:item.ColumnIndex};}}};this.PtInHeaderDragBorder=function(x,y){if(!this.IsShowHeader)return null;var left=this.RectClient.Left;var right=this.RectClient.Right;var top=this.RectClient.Top;var bottom=top+this.HeaderHeight;if(!(x>=left&&x<=right&&y>=top&&y<=bottom))return null;var textLeft=left;var dragBarWidth=5*GetDevicePixelRatio();//固定列
13882
13892
  for(var i=0;i<this.FixedColumn&&i<this.Column.length;++i){var item=this.Column[i];if(item.EnableDragWidth===true){var header={Right:textLeft+item.Width,Top:top,Bottom:bottom};header.Left=header.Right-dragBarWidth;if(x>=header.Left&&x<=header.Right&&y>=header.Top&&y<=header.Bottom){return{Rect:header,Column:item,Index:i,IsFixed:true};}}textLeft+=item.Width;}for(var i=this.FixedColumn+this.Data.XOffset;i<this.Column.length;++i){var item=this.Column[i];if(textLeft>=right)break;if(item.EnableDragWidth===true){var header={Right:textLeft+item.Width,Top:top,Bottom:bottom};header.Left=header.Right-dragBarWidth;if(x>=header.Left&&x<=header.Right&&y>=header.Top&&y<=header.Bottom){return{Rect:header,Column:item,Index:i,IsFixed:false};}}textLeft+=item.Width;}return null;};//设置选中行 option={ Symbol:, AutoYScroll:true/false Y滚动条自定定位 }
13883
13893
  this.SetSelectedRow=function(option){if(!option)return false;if(this.SelectedModel===0)return false;if(!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return false;if(option.Symbol){var symbol=option.Symbol;var bFinder=false;if(this.SelectedRowData){var item=this.Data.Data[this.SelectedRowData.DataIndex];if(symbol==item&&symbol==this.SelectedRowData.Symbol)bFinder=true;}if(!bFinder){for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(symbol==item){this.SelectedRowData={DataIndex:i,Symbol:item};bFinder=true;break;}}}if(!bFinder)return false;if(option.AutoYScroll===true){this.UpdatePageYOffset({SelectedRow:this.SelectedRowData.DataIndex});}return bFinder;}return false;};this.UpdatePageYOffset=function(option){if(!option)return;var selectedRow=option.SelectedRow;if(selectedRow<0)return;var pageStatus=this.GetCurrentPageStatus();if(pageStatus.IsSinglePage)return;if(selectedRow>=pageStatus.Start&&selectedRow<=pageStatus.End)return;this.Data.YOffset=selectedRow;//选中行不在当前屏 设置为第1行
13884
13894
  };}//报价列表底部tab和横向滚动条
@@ -15047,7 +15057,7 @@ this.UpdateMinuteInfoTooltip=function(data){var tooltipData=data.Tooltip;if(!too
15047
15057
  this.UpdatMultiSVGIconV2Tooltip=function(data){var tooltipData=data.Tooltip;if(!tooltipData.Data||!tooltipData.Data.Item)return;var item=tooltipData.Data.Item;var aryText=[];if(item&&IFrameSplitOperator.IsObject(item.Text)){var tooltipData=item.Text;if(IFrameSplitOperator.IsNonEmptyArray(tooltipData.AryText)){for(var i=0;i<tooltipData.AryText.length;++i){var tooltipItem=tooltipData.AryText[i];var textItem={Title:tooltipItem.Title,Text:tooltipItem.Text,Color:this.ValueColor};if(tooltipItem.Color)textItem.Color=tooltipItem.Color;if(tooltipItem.Align=="Left")tooltipItem.ClassName=this.ValueAlign.Left;aryText.push(tooltipItem);}}}else{var rowItem={Text:"",HTMLTitle:item.Text,Color:this.ValueColor,IsMergeCell:true};aryText.push(rowItem);}this.AryText=aryText;this.UpdateTableDOM();this.ShowTooltip(data);};//ChartOX 信息
15048
15058
  this.UpdatChartOXTooltip=function(data){var tooltipData=data.Tooltip;if(!tooltipData.Data||!tooltipData.Data.Data)return;var item=tooltipData.Data.Data;var period=this.HQChart.Period;var aryText=[];if(ChartData.IsDayPeriod(period,true)){var strStartDate=IFrameSplitOperator.FormatDateString(item.Start.Date,"YYYY-MM-DD");var strEndDate=IFrameSplitOperator.FormatDateString(item.End.Date,"YYYY-MM-DD");aryText.push({Title:"起始时间",Text:strStartDate,Color:this.ValueColor});aryText.push({Title:"结束时间",Text:strEndDate,Color:this.ValueColor});}else if(ChartData.IsMinutePeriod(period,true)){var strStartDate=IFrameSplitOperator.FormatDateString(item.Start.Date);var strStartTime=IFrameSplitOperator.FormatTimeString(item.Start.Time,"HH:MM");var strEndDate=IFrameSplitOperator.FormatDateString(item.End.Date);var strEndTime=IFrameSplitOperator.FormatTimeString(item.End.Time,"HH:MM");aryText.push({Title:"起始时间",Text:strStartDate+' '+strStartTime,Color:this.ValueColor});aryText.push({Title:"结束时间",Text:strEndDate+' '+strEndTime,Color:this.ValueColor});}this.AryText=aryText;this.UpdateTableDOM();this.ShowTooltip(data);};//表头图标
15049
15059
  this.ReportHeaderIconTooltip=function(data){var tooltipData=data.Tooltip;if(!tooltipData.Data||!IFrameSplitOperator.IsNonEmptyArray(tooltipData.Data.AryText))return;this.AryText=tooltipData.Data.AryText;this.UpdateTableDOM();this.ShowTooltip(data);};//单元格提示信息
15050
- this.ReportCellTooltip=function(data){var tooltipData=data.Tooltip;if(!tooltipData.Data||!IFrameSplitOperator.IsNonEmptyArray(tooltipData.Data.AryText))return;this.AryText=tooltipData.Data.AryText;this.UpdateTableDOM();this.ShowTooltip(data);};//表格单元格截断内容
15060
+ this.ReportCellTooltip=function(data){var tooltipData=data.Tooltip;if(!tooltipData.Data||!IFrameSplitOperator.IsNonEmptyArray(tooltipData.Data.AryText))return;this.AryText=tooltipData.Data.AryText;if(tooltipData.Data.Callback){var callback=tooltipData.Data.Callback;var sendData={AryText:null,data:data,PreventDefault:false};callback(sendData,this);if(sendData.PreventDefault){if(!IFrameSplitOperator.IsNonEmptyArray(sendData.AryText))return;this.AryText=sendData.AryText;}}this.UpdateTableDOM();this.ShowTooltip(data);};//表格单元格截断内容
15051
15061
  this.ReportCellTruncateTooltip=function(data){var tooltipData=data.Tooltip;if(!tooltipData.Data||!IFrameSplitOperator.IsNonEmptyArray(tooltipData.Data.AryText))return;var item=tooltipData.Data.AryText[0];if(!item.Text)return;this.AryText=[{Title:item.Text,IsMergeCell:true}];this.UpdateTableDOM();this.ShowTooltip(data);};this.TReportIconTooltip=function(data){var tooltipData=data.Tooltip;if(!tooltipData.Data||!IFrameSplitOperator.IsNonEmptyArray(tooltipData.Data.AryText))return;this.AryText=tooltipData.Data.AryText;this.UpdateTableDOM();this.ShowTooltip(data);};this.DealItemTooltip=function(data){var tooltipData=data.Tooltip;if(!tooltipData.Data||!IFrameSplitOperator.IsNonEmptyArray(tooltipData.Data.AryText))return;this.AryText=tooltipData.Data.AryText;this.UpdateTableDOM();this.ShowTooltip(data);};this.UpdateTableDOM=function(){var index=0;for(index=0;index<this.AryText.length&&index<this.MaxRowCount;++index){var outItem=this.AryText[index];var item=this.AryData[index];if(outItem.HTMLTitle)item.TitleSpan.innerHTML=outItem.HTMLTitle;else item.TitleSpan.innerText=outItem.Title;if(outItem.TitleColor)item.TitleSpan.style.color=outItem.TitleColor;else item.TitleSpan.style.color=this.TextColor;if(outItem.HTMLText)item.TextSpan.innerHTML=outItem.HTMLText;else item.TextSpan.innerText=outItem.Text;item.TextSpan.style.color=outItem.Color;item.TextTd.style.color=outItem.Color;if(outItem.ClassName){item.TextSpan.className=outItem.ClassName;}else{if(item.TextSpan.className!=this.ValueAlign.Right)item.TextSpan.className=this.ValueAlign.Right;}if(outItem.TitleClassName){item.TitleSpan.className=outItem.TitleClassName;}else{if(item.TitleSpan.className!=this.TitleAlign.Default)item.TitleSpan.className=this.TitleAlign.Default;}if(outItem.IsMergeCell)//合并单元格
15052
15062
  {item.TitleTd.colspan=2;item.TextTd.style.display="none";}else{if(item.TitleTd.colspan!=1)item.TitleTd.colspan=1;item.TextTd.style.display="";}item.Tr.style.display="";if(item.Tr2)item.Tr2.style.display="none";}for(;index<this.MaxRowCount;++index){var item=this.AryData[index];item.Tr.style.display="none";if(item.Tr2)item.Tr2.style.display="none";}};this.GetFormatKLineTooltipText=function(kItem){var data=kItem.Item;var symbol=kItem.Symbol;if(data&&data.Symbol)symbol=symbol;var upperSymbol="";if(symbol)upperSymbol=symbol.toUpperCase();var defaultfloatPrecision=GetfloatPrecision(symbol);//价格小数位数
15053
15063
  var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);//日期
@@ -15200,7 +15210,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
15200
15210
  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);};}/********************************************************************************
15201
15211
  * 版本信息输出
15202
15212
  *
15203
- */var HQCHART_VERSION="1.1.14928";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();//把给外界调用的方法暴露出来
15213
+ */var HQCHART_VERSION="1.1.14932";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();//把给外界调用的方法暴露出来
15204
15214
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
15205
15215
  // BaseIndex:BaseIndex,
15206
15216
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14929",
3
+ "version": "1.1.14933",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -1658,8 +1658,20 @@ function JSFloatTooltip()
1658
1658
  if (!tooltipData.Data || !IFrameSplitOperator.IsNonEmptyArray(tooltipData.Data.AryText)) return;
1659
1659
 
1660
1660
  this.AryText=tooltipData.Data.AryText;
1661
- this.UpdateTableDOM();
1662
1661
 
1662
+ if (tooltipData.Data.Callback)
1663
+ {
1664
+ var callback=tooltipData.Data.Callback;
1665
+ var sendData={ AryText:null, data, PreventDefault:false };
1666
+ callback(sendData, this);
1667
+ if (sendData.PreventDefault)
1668
+ {
1669
+ if (!IFrameSplitOperator.IsNonEmptyArray(sendData.AryText)) return;
1670
+ this.AryText=sendData.AryText;
1671
+ }
1672
+ }
1673
+
1674
+ this.UpdateTableDOM();
1663
1675
  this.ShowTooltip(data);
1664
1676
  }
1665
1677
 
@@ -55443,7 +55443,7 @@ function FrameSplitY()
55443
55443
  else
55444
55444
  {
55445
55445
  var floatPrecision=this.GetFloatPrecision(absValue,this.FloatPrecision); //数据比小数位数还小, 调整小数位数
55446
- text = IFrameSplitOperator.FormatValueString(value, floatPrecision,this.LanguageID);
55446
+ text = IFrameSplitOperator.FormatValueStringV2(value, floatPrecision,2, this.LanguageID);
55447
55447
  }
55448
55448
  }
55449
55449
 
@@ -88862,84 +88862,77 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
88862
88862
  this.SendPageChangedEvent();
88863
88863
  return true;
88864
88864
  }
88865
- else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_GOTO) //{ Type:1 如果不存在 就隐藏十字光标}
88865
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_GOTO) //{ Type:1 如果不存在 就隐藏十字光标, Time:, Date: }
88866
88866
  {
88867
- if (!this.SourceData) return false;
88868
- if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
88869
- var frame=this.Frame.SubFrame[0].Frame;
88870
- if (!IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data)) return false;
88871
- if (IFrameSplitOperator.IsNumber(obj.Time) && IFrameSplitOperator.IsNumber(obj.Date))
88867
+ var kData=this.GetKData();
88868
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
88869
+ if (!IFrameSplitOperator.IsNumber(obj.Time) || !IFrameSplitOperator.IsNumber(obj.Date)) return false;
88870
+ var findIndex=-1, findItem=null;
88871
+ for(var i=0;i<this.SourceData.Data.length;++i)
88872
88872
  {
88873
- var findIndex=-1, value=null, lastPrice=null;
88874
- for(var i=0;i<this.SourceData.Data.length;++i)
88873
+ var item=this.SourceData.Data[i];
88874
+ if (IFrameSplitOperator.IsNumber(item.Close)) lastPrice=item.Close;
88875
+ if (item.Time==obj.Time && item.Date==obj.Date)
88875
88876
  {
88876
- var item=this.SourceData.Data[i];
88877
- if (IFrameSplitOperator.IsNumber(item.Close)) lastPrice=item.Close;
88878
- if (item.Time==obj.Time && item.Date==obj.Date)
88879
- {
88880
- findIndex=i;
88881
- value=item.Close;
88882
- break;
88883
- }
88877
+ findIndex=i;
88878
+ findItem=item;
88879
+ break;
88884
88880
  }
88881
+ }
88885
88882
 
88886
- if (findIndex<0 && this.DayCount==1 && !(IFrameSplitOperator.IsNumber(obj.Type) && obj.Type>0))
88887
- {
88888
- var timeData = g_MinuteTimeStringData.GetTimeData(this.Symbol);
88889
- for(var i=0;i<timeData.length;++i)
88890
- {
88891
- if (timeData[i]==obj.Time)
88892
- {
88893
- findIndex=i;
88894
- value=lastPrice;
88895
- break;
88896
- }
88897
- }
88898
- }
88883
+ this.ChartOperator_Temp_SetChartCorssCursor(findIndex, findItem);
88884
+ return true;
88885
+ }
88886
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
88887
+ {
88888
+ var kData=this.GetKData();
88889
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
88899
88890
 
88900
- if (findIndex<0)
88901
- {
88902
- if (obj.Type==1) // 如果不存在 就隐藏十字光标
88903
- {
88904
- var x=-1,y=-1;
88905
- var MoveStatus={ X:x, Y:y, IsInClient: this.IsMouseOnClient(x,y) };
88906
- this.LastMouseStatus.OnMouseMove=MoveStatus;
88907
- this.LastMouseStatus.MoveOnPoint={X:x, Y:y}; //鼠标移动的位置
88908
-
88909
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);
88910
- var titleChart=this.TitlePaint[0];
88911
- if (event && titleChart) titleChart.OnMouseMoveEvent=event;
88912
-
88913
- var e={clientX:x, clientY:y};
88914
- this.MoveOnPoint={X:x, Y:y};
88915
- this.OnMouseMove(x,y,e);
88916
- this.LastMouseStatus.MoveOnPoint=null;
88917
- if (titleChart) titleChart.OnMouseMoveEvent=null;
88918
- }
88891
+ var startIndex=kData.DataOffset;
88892
+ var kItem=kData.Data[startIndex];
88893
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
88894
+ return true;
88895
+
88896
+ }
88897
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
88898
+ {
88899
+ var kData=this.GetKData();
88900
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
88919
88901
 
88920
- return;
88921
- }
88922
- }
88902
+ var index=kData.Data.length-1;
88903
+ var kItem=kData.Data[index];
88904
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
88905
+ return true;
88906
+ }
88907
+
88908
+ }
88909
+
88910
+ //index=-1 隐藏十字光标
88911
+ this.ChartOperator_Temp_SetChartCorssCursor=function(index, kItem)
88912
+ {
88913
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
88914
+ var frame=this.Frame.SubFrame[0].Frame;
88923
88915
 
88924
- var x=frame.GetXFromIndex(findIndex);
88925
- var y=frame.GetYFromData(value);
88916
+ var x=-1,y=-1;
88917
+ if (IFrameSplitOperator.IsNumber(index) && index>=0) x=frame.GetXFromIndex(index);
88918
+ if (kItem && IFrameSplitOperator.IsNumber(kItem.Close)) y=frame.GetYFromData(kItem.Close);
88926
88919
 
88927
- //保存最后一次鼠标移动信息
88928
- var MoveStatus={ X:x, Y:y, IsInClient: this.IsMouseOnClient(x,y) };
88929
- this.LastMouseStatus.OnMouseMove=MoveStatus;
88930
- this.LastMouseStatus.MoveOnPoint={X:x, Y:y}; //鼠标移动的位置
88920
+ //保存最后一次鼠标移动信息
88921
+ var MoveStatus={ X:x, Y:y, IsInClient: this.IsMouseOnClient(x,y) };
88922
+ this.LastMouseStatus.OnMouseMove=MoveStatus;
88923
+ this.LastMouseStatus.MoveOnPoint={X:x, Y:y}; //鼠标移动的位置
88931
88924
 
88932
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);
88933
- var titleChart=this.TitlePaint[0];
88934
- if (event && titleChart) titleChart.OnMouseMoveEvent=event;
88935
-
88936
- this.MoveOnPoint={X:x, Y:y};
88937
- this.OnMouseMove(x,y,{});
88938
-
88939
- this.LastMouseStatus.MoveOnPoint=null;
88940
- if (titleChart) titleChart.OnMouseMoveEvent=null;
88941
-
88942
- }
88925
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);
88926
+ var titleChart=this.TitlePaint[0];
88927
+ if (event && titleChart) titleChart.OnMouseMoveEvent=event;
88928
+
88929
+ this.MoveOnPoint={X:x, Y:y};
88930
+ this.OnMouseMove(x,y,{});
88931
+
88932
+ this.LastMouseStatus.MoveOnPoint=null;
88933
+ if (titleChart) titleChart.OnMouseMoveEvent=null;
88934
+
88935
+ return true;
88943
88936
  }
88944
88937
 
88945
88938
  this.SendPageChangedEvent=function()
@@ -90295,11 +90288,15 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
90295
90288
  this.CurrentChartDrawPicture=null;
90296
90289
  }
90297
90290
  break;
90298
- case 38:
90299
- case 40:
90291
+ case 38: //up
90292
+ case 40: //down
90300
90293
  if ((e.ctrlKey||e.shiftKey) && this.OnCustomKeyDown)
90301
90294
  this.OnCustomKeyDown(keyID, e)
90302
90295
  break;
90296
+ case 35: //END
90297
+ case 36: //HOME
90298
+ if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
90299
+ break;
90303
90300
  default:
90304
90301
  return;
90305
90302
  }
@@ -90323,6 +90320,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
90323
90320
  this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);
90324
90321
  return true;
90325
90322
  }
90323
+ else if (keyID==36) //HOME 第1条
90324
+ {
90325
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
90326
+ return this.ChartOperator(option);
90327
+ }
90328
+ else if (keyID==35) //END 最后一条
90329
+ {
90330
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
90331
+ return this.ChartOperator(option);
90332
+ }
90326
90333
  else
90327
90334
  {
90328
90335
  return false;
@@ -7573,8 +7573,8 @@ function ChartReport()
7573
7573
  drawInfo.Tooltip=
7574
7574
  {
7575
7575
  Type:4,
7576
- Data:{ AryText:item.Tooltip.AryText }
7577
- }
7576
+ Data:{ AryText:item.Tooltip.AryText , Callback:item.Tooltip.Callback },
7577
+ };
7578
7578
  }
7579
7579
  }
7580
7580
  else if (IFrameSplitOperator.IsString(item))
@@ -9202,7 +9202,7 @@ function ChartReport()
9202
9202
 
9203
9203
  if (x>=rt.Left && x<=rt.Right && y>=rt.Top && y<=rt.Bottom)
9204
9204
  {
9205
- return { Rect:item.Rect, Stock:item.Stock, Column:item.Column, Index:item.Index, Type:item.Type, Data:item.Data };
9205
+ return { Rect:item.Rect, Stock:item.Stock, Column:item.Column, Index:item.Index, Type:item.Type, Data:item.Data, Callback:item.Callback };
9206
9206
  }
9207
9207
  }
9208
9208
 
@@ -59539,7 +59539,7 @@ function FrameSplitY()
59539
59539
  else
59540
59540
  {
59541
59541
  var floatPrecision=this.GetFloatPrecision(absValue,this.FloatPrecision); //数据比小数位数还小, 调整小数位数
59542
- text = IFrameSplitOperator.FormatValueString(value, floatPrecision,this.LanguageID);
59542
+ text = IFrameSplitOperator.FormatValueStringV2(value, floatPrecision,2, this.LanguageID);
59543
59543
  }
59544
59544
  }
59545
59545
 
@@ -92958,84 +92958,77 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92958
92958
  this.SendPageChangedEvent();
92959
92959
  return true;
92960
92960
  }
92961
- else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_GOTO) //{ Type:1 如果不存在 就隐藏十字光标}
92961
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_GOTO) //{ Type:1 如果不存在 就隐藏十字光标, Time:, Date: }
92962
92962
  {
92963
- if (!this.SourceData) return false;
92964
- if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
92965
- var frame=this.Frame.SubFrame[0].Frame;
92966
- if (!IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data)) return false;
92967
- if (IFrameSplitOperator.IsNumber(obj.Time) && IFrameSplitOperator.IsNumber(obj.Date))
92963
+ var kData=this.GetKData();
92964
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
92965
+ if (!IFrameSplitOperator.IsNumber(obj.Time) || !IFrameSplitOperator.IsNumber(obj.Date)) return false;
92966
+ var findIndex=-1, findItem=null;
92967
+ for(var i=0;i<this.SourceData.Data.length;++i)
92968
92968
  {
92969
- var findIndex=-1, value=null, lastPrice=null;
92970
- for(var i=0;i<this.SourceData.Data.length;++i)
92969
+ var item=this.SourceData.Data[i];
92970
+ if (IFrameSplitOperator.IsNumber(item.Close)) lastPrice=item.Close;
92971
+ if (item.Time==obj.Time && item.Date==obj.Date)
92971
92972
  {
92972
- var item=this.SourceData.Data[i];
92973
- if (IFrameSplitOperator.IsNumber(item.Close)) lastPrice=item.Close;
92974
- if (item.Time==obj.Time && item.Date==obj.Date)
92975
- {
92976
- findIndex=i;
92977
- value=item.Close;
92978
- break;
92979
- }
92973
+ findIndex=i;
92974
+ findItem=item;
92975
+ break;
92980
92976
  }
92977
+ }
92981
92978
 
92982
- if (findIndex<0 && this.DayCount==1 && !(IFrameSplitOperator.IsNumber(obj.Type) && obj.Type>0))
92983
- {
92984
- var timeData = g_MinuteTimeStringData.GetTimeData(this.Symbol);
92985
- for(var i=0;i<timeData.length;++i)
92986
- {
92987
- if (timeData[i]==obj.Time)
92988
- {
92989
- findIndex=i;
92990
- value=lastPrice;
92991
- break;
92992
- }
92993
- }
92994
- }
92979
+ this.ChartOperator_Temp_SetChartCorssCursor(findIndex, findItem);
92980
+ return true;
92981
+ }
92982
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
92983
+ {
92984
+ var kData=this.GetKData();
92985
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
92995
92986
 
92996
- if (findIndex<0)
92997
- {
92998
- if (obj.Type==1) // 如果不存在 就隐藏十字光标
92999
- {
93000
- var x=-1,y=-1;
93001
- var MoveStatus={ X:x, Y:y, IsInClient: this.IsMouseOnClient(x,y) };
93002
- this.LastMouseStatus.OnMouseMove=MoveStatus;
93003
- this.LastMouseStatus.MoveOnPoint={X:x, Y:y}; //鼠标移动的位置
93004
-
93005
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);
93006
- var titleChart=this.TitlePaint[0];
93007
- if (event && titleChart) titleChart.OnMouseMoveEvent=event;
93008
-
93009
- var e={clientX:x, clientY:y};
93010
- this.MoveOnPoint={X:x, Y:y};
93011
- this.OnMouseMove(x,y,e);
93012
- this.LastMouseStatus.MoveOnPoint=null;
93013
- if (titleChart) titleChart.OnMouseMoveEvent=null;
93014
- }
92987
+ var startIndex=kData.DataOffset;
92988
+ var kItem=kData.Data[startIndex];
92989
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
92990
+ return true;
92991
+
92992
+ }
92993
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
92994
+ {
92995
+ var kData=this.GetKData();
92996
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
93015
92997
 
93016
- return;
93017
- }
93018
- }
92998
+ var index=kData.Data.length-1;
92999
+ var kItem=kData.Data[index];
93000
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
93001
+ return true;
93002
+ }
93019
93003
 
93020
- var x=frame.GetXFromIndex(findIndex);
93021
- var y=frame.GetYFromData(value);
93004
+ }
93022
93005
 
93023
- //保存最后一次鼠标移动信息
93024
- var MoveStatus={ X:x, Y:y, IsInClient: this.IsMouseOnClient(x,y) };
93025
- this.LastMouseStatus.OnMouseMove=MoveStatus;
93026
- this.LastMouseStatus.MoveOnPoint={X:x, Y:y}; //鼠标移动的位置
93006
+ //index=-1 隐藏十字光标
93007
+ this.ChartOperator_Temp_SetChartCorssCursor=function(index, kItem)
93008
+ {
93009
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
93010
+ var frame=this.Frame.SubFrame[0].Frame;
93027
93011
 
93028
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);
93029
- var titleChart=this.TitlePaint[0];
93030
- if (event && titleChart) titleChart.OnMouseMoveEvent=event;
93031
-
93032
- this.MoveOnPoint={X:x, Y:y};
93033
- this.OnMouseMove(x,y,{});
93034
-
93035
- this.LastMouseStatus.MoveOnPoint=null;
93036
- if (titleChart) titleChart.OnMouseMoveEvent=null;
93037
-
93038
- }
93012
+ var x=-1,y=-1;
93013
+ if (IFrameSplitOperator.IsNumber(index) && index>=0) x=frame.GetXFromIndex(index);
93014
+ if (kItem && IFrameSplitOperator.IsNumber(kItem.Close)) y=frame.GetYFromData(kItem.Close);
93015
+
93016
+ //保存最后一次鼠标移动信息
93017
+ var MoveStatus={ X:x, Y:y, IsInClient: this.IsMouseOnClient(x,y) };
93018
+ this.LastMouseStatus.OnMouseMove=MoveStatus;
93019
+ this.LastMouseStatus.MoveOnPoint={X:x, Y:y}; //鼠标移动的位置
93020
+
93021
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);
93022
+ var titleChart=this.TitlePaint[0];
93023
+ if (event && titleChart) titleChart.OnMouseMoveEvent=event;
93024
+
93025
+ this.MoveOnPoint={X:x, Y:y};
93026
+ this.OnMouseMove(x,y,{});
93027
+
93028
+ this.LastMouseStatus.MoveOnPoint=null;
93029
+ if (titleChart) titleChart.OnMouseMoveEvent=null;
93030
+
93031
+ return true;
93039
93032
  }
93040
93033
 
93041
93034
  this.SendPageChangedEvent=function()
@@ -94391,11 +94384,15 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94391
94384
  this.CurrentChartDrawPicture=null;
94392
94385
  }
94393
94386
  break;
94394
- case 38:
94395
- case 40:
94387
+ case 38: //up
94388
+ case 40: //down
94396
94389
  if ((e.ctrlKey||e.shiftKey) && this.OnCustomKeyDown)
94397
94390
  this.OnCustomKeyDown(keyID, e)
94398
94391
  break;
94392
+ case 35: //END
94393
+ case 36: //HOME
94394
+ if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
94395
+ break;
94399
94396
  default:
94400
94397
  return;
94401
94398
  }
@@ -94419,6 +94416,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94419
94416
  this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);
94420
94417
  return true;
94421
94418
  }
94419
+ else if (keyID==36) //HOME 第1条
94420
+ {
94421
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
94422
+ return this.ChartOperator(option);
94423
+ }
94424
+ else if (keyID==35) //END 最后一条
94425
+ {
94426
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
94427
+ return this.ChartOperator(option);
94428
+ }
94422
94429
  else
94423
94430
  {
94424
94431
  return false;
@@ -145299,8 +145306,8 @@ function ChartReport()
145299
145306
  drawInfo.Tooltip=
145300
145307
  {
145301
145308
  Type:4,
145302
- Data:{ AryText:item.Tooltip.AryText }
145303
- }
145309
+ Data:{ AryText:item.Tooltip.AryText , Callback:item.Tooltip.Callback },
145310
+ };
145304
145311
  }
145305
145312
  }
145306
145313
  else if (IFrameSplitOperator.IsString(item))
@@ -146928,7 +146935,7 @@ function ChartReport()
146928
146935
 
146929
146936
  if (x>=rt.Left && x<=rt.Right && y>=rt.Top && y<=rt.Bottom)
146930
146937
  {
146931
- return { Rect:item.Rect, Stock:item.Stock, Column:item.Column, Index:item.Index, Type:item.Type, Data:item.Data };
146938
+ return { Rect:item.Rect, Stock:item.Stock, Column:item.Column, Index:item.Index, Type:item.Type, Data:item.Data, Callback:item.Callback };
146932
146939
  }
146933
146940
  }
146934
146941
 
@@ -151187,7 +151194,7 @@ function ScrollBarBGChart()
151187
151194
 
151188
151195
 
151189
151196
 
151190
- var HQCHART_VERSION="1.1.14928";
151197
+ var HQCHART_VERSION="1.1.14932";
151191
151198
 
151192
151199
  function PrintHQChartVersion()
151193
151200
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14928";
8
+ var HQCHART_VERSION="1.1.14932";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -59583,7 +59583,7 @@ function FrameSplitY()
59583
59583
  else
59584
59584
  {
59585
59585
  var floatPrecision=this.GetFloatPrecision(absValue,this.FloatPrecision); //数据比小数位数还小, 调整小数位数
59586
- text = IFrameSplitOperator.FormatValueString(value, floatPrecision,this.LanguageID);
59586
+ text = IFrameSplitOperator.FormatValueStringV2(value, floatPrecision,2, this.LanguageID);
59587
59587
  }
59588
59588
  }
59589
59589
 
@@ -93002,84 +93002,77 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
93002
93002
  this.SendPageChangedEvent();
93003
93003
  return true;
93004
93004
  }
93005
- else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_GOTO) //{ Type:1 如果不存在 就隐藏十字光标}
93005
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_GOTO) //{ Type:1 如果不存在 就隐藏十字光标, Time:, Date: }
93006
93006
  {
93007
- if (!this.SourceData) return false;
93008
- if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
93009
- var frame=this.Frame.SubFrame[0].Frame;
93010
- if (!IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data)) return false;
93011
- if (IFrameSplitOperator.IsNumber(obj.Time) && IFrameSplitOperator.IsNumber(obj.Date))
93007
+ var kData=this.GetKData();
93008
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
93009
+ if (!IFrameSplitOperator.IsNumber(obj.Time) || !IFrameSplitOperator.IsNumber(obj.Date)) return false;
93010
+ var findIndex=-1, findItem=null;
93011
+ for(var i=0;i<this.SourceData.Data.length;++i)
93012
93012
  {
93013
- var findIndex=-1, value=null, lastPrice=null;
93014
- for(var i=0;i<this.SourceData.Data.length;++i)
93013
+ var item=this.SourceData.Data[i];
93014
+ if (IFrameSplitOperator.IsNumber(item.Close)) lastPrice=item.Close;
93015
+ if (item.Time==obj.Time && item.Date==obj.Date)
93015
93016
  {
93016
- var item=this.SourceData.Data[i];
93017
- if (IFrameSplitOperator.IsNumber(item.Close)) lastPrice=item.Close;
93018
- if (item.Time==obj.Time && item.Date==obj.Date)
93019
- {
93020
- findIndex=i;
93021
- value=item.Close;
93022
- break;
93023
- }
93017
+ findIndex=i;
93018
+ findItem=item;
93019
+ break;
93024
93020
  }
93021
+ }
93025
93022
 
93026
- if (findIndex<0 && this.DayCount==1 && !(IFrameSplitOperator.IsNumber(obj.Type) && obj.Type>0))
93027
- {
93028
- var timeData = g_MinuteTimeStringData.GetTimeData(this.Symbol);
93029
- for(var i=0;i<timeData.length;++i)
93030
- {
93031
- if (timeData[i]==obj.Time)
93032
- {
93033
- findIndex=i;
93034
- value=lastPrice;
93035
- break;
93036
- }
93037
- }
93038
- }
93023
+ this.ChartOperator_Temp_SetChartCorssCursor(findIndex, findItem);
93024
+ return true;
93025
+ }
93026
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
93027
+ {
93028
+ var kData=this.GetKData();
93029
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
93039
93030
 
93040
- if (findIndex<0)
93041
- {
93042
- if (obj.Type==1) // 如果不存在 就隐藏十字光标
93043
- {
93044
- var x=-1,y=-1;
93045
- var MoveStatus={ X:x, Y:y, IsInClient: this.IsMouseOnClient(x,y) };
93046
- this.LastMouseStatus.OnMouseMove=MoveStatus;
93047
- this.LastMouseStatus.MoveOnPoint={X:x, Y:y}; //鼠标移动的位置
93048
-
93049
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);
93050
- var titleChart=this.TitlePaint[0];
93051
- if (event && titleChart) titleChart.OnMouseMoveEvent=event;
93052
-
93053
- var e={clientX:x, clientY:y};
93054
- this.MoveOnPoint={X:x, Y:y};
93055
- this.OnMouseMove(x,y,e);
93056
- this.LastMouseStatus.MoveOnPoint=null;
93057
- if (titleChart) titleChart.OnMouseMoveEvent=null;
93058
- }
93031
+ var startIndex=kData.DataOffset;
93032
+ var kItem=kData.Data[startIndex];
93033
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
93034
+ return true;
93035
+
93036
+ }
93037
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
93038
+ {
93039
+ var kData=this.GetKData();
93040
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
93059
93041
 
93060
- return;
93061
- }
93062
- }
93042
+ var index=kData.Data.length-1;
93043
+ var kItem=kData.Data[index];
93044
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
93045
+ return true;
93046
+ }
93063
93047
 
93064
- var x=frame.GetXFromIndex(findIndex);
93065
- var y=frame.GetYFromData(value);
93048
+ }
93066
93049
 
93067
- //保存最后一次鼠标移动信息
93068
- var MoveStatus={ X:x, Y:y, IsInClient: this.IsMouseOnClient(x,y) };
93069
- this.LastMouseStatus.OnMouseMove=MoveStatus;
93070
- this.LastMouseStatus.MoveOnPoint={X:x, Y:y}; //鼠标移动的位置
93050
+ //index=-1 隐藏十字光标
93051
+ this.ChartOperator_Temp_SetChartCorssCursor=function(index, kItem)
93052
+ {
93053
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
93054
+ var frame=this.Frame.SubFrame[0].Frame;
93071
93055
 
93072
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);
93073
- var titleChart=this.TitlePaint[0];
93074
- if (event && titleChart) titleChart.OnMouseMoveEvent=event;
93075
-
93076
- this.MoveOnPoint={X:x, Y:y};
93077
- this.OnMouseMove(x,y,{});
93078
-
93079
- this.LastMouseStatus.MoveOnPoint=null;
93080
- if (titleChart) titleChart.OnMouseMoveEvent=null;
93081
-
93082
- }
93056
+ var x=-1,y=-1;
93057
+ if (IFrameSplitOperator.IsNumber(index) && index>=0) x=frame.GetXFromIndex(index);
93058
+ if (kItem && IFrameSplitOperator.IsNumber(kItem.Close)) y=frame.GetYFromData(kItem.Close);
93059
+
93060
+ //保存最后一次鼠标移动信息
93061
+ var MoveStatus={ X:x, Y:y, IsInClient: this.IsMouseOnClient(x,y) };
93062
+ this.LastMouseStatus.OnMouseMove=MoveStatus;
93063
+ this.LastMouseStatus.MoveOnPoint={X:x, Y:y}; //鼠标移动的位置
93064
+
93065
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);
93066
+ var titleChart=this.TitlePaint[0];
93067
+ if (event && titleChart) titleChart.OnMouseMoveEvent=event;
93068
+
93069
+ this.MoveOnPoint={X:x, Y:y};
93070
+ this.OnMouseMove(x,y,{});
93071
+
93072
+ this.LastMouseStatus.MoveOnPoint=null;
93073
+ if (titleChart) titleChart.OnMouseMoveEvent=null;
93074
+
93075
+ return true;
93083
93076
  }
93084
93077
 
93085
93078
  this.SendPageChangedEvent=function()
@@ -94435,11 +94428,15 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94435
94428
  this.CurrentChartDrawPicture=null;
94436
94429
  }
94437
94430
  break;
94438
- case 38:
94439
- case 40:
94431
+ case 38: //up
94432
+ case 40: //down
94440
94433
  if ((e.ctrlKey||e.shiftKey) && this.OnCustomKeyDown)
94441
94434
  this.OnCustomKeyDown(keyID, e)
94442
94435
  break;
94436
+ case 35: //END
94437
+ case 36: //HOME
94438
+ if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
94439
+ break;
94443
94440
  default:
94444
94441
  return;
94445
94442
  }
@@ -94463,6 +94460,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94463
94460
  this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);
94464
94461
  return true;
94465
94462
  }
94463
+ else if (keyID==36) //HOME 第1条
94464
+ {
94465
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
94466
+ return this.ChartOperator(option);
94467
+ }
94468
+ else if (keyID==35) //END 最后一条
94469
+ {
94470
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
94471
+ return this.ChartOperator(option);
94472
+ }
94466
94473
  else
94467
94474
  {
94468
94475
  return false;
@@ -145343,8 +145350,8 @@ function ChartReport()
145343
145350
  drawInfo.Tooltip=
145344
145351
  {
145345
145352
  Type:4,
145346
- Data:{ AryText:item.Tooltip.AryText }
145347
- }
145353
+ Data:{ AryText:item.Tooltip.AryText , Callback:item.Tooltip.Callback },
145354
+ };
145348
145355
  }
145349
145356
  }
145350
145357
  else if (IFrameSplitOperator.IsString(item))
@@ -146972,7 +146979,7 @@ function ChartReport()
146972
146979
 
146973
146980
  if (x>=rt.Left && x<=rt.Right && y>=rt.Top && y<=rt.Bottom)
146974
146981
  {
146975
- return { Rect:item.Rect, Stock:item.Stock, Column:item.Column, Index:item.Index, Type:item.Type, Data:item.Data };
146982
+ return { Rect:item.Rect, Stock:item.Stock, Column:item.Column, Index:item.Index, Type:item.Type, Data:item.Data, Callback:item.Callback };
146976
146983
  }
146977
146984
  }
146978
146985
 
@@ -159580,8 +159587,20 @@ function JSFloatTooltip()
159580
159587
  if (!tooltipData.Data || !IFrameSplitOperator.IsNonEmptyArray(tooltipData.Data.AryText)) return;
159581
159588
 
159582
159589
  this.AryText=tooltipData.Data.AryText;
159583
- this.UpdateTableDOM();
159584
159590
 
159591
+ if (tooltipData.Data.Callback)
159592
+ {
159593
+ var callback=tooltipData.Data.Callback;
159594
+ var sendData={ AryText:null, data, PreventDefault:false };
159595
+ callback(sendData, this);
159596
+ if (sendData.PreventDefault)
159597
+ {
159598
+ if (!IFrameSplitOperator.IsNonEmptyArray(sendData.AryText)) return;
159599
+ this.AryText=sendData.AryText;
159600
+ }
159601
+ }
159602
+
159603
+ this.UpdateTableDOM();
159585
159604
  this.ShowTooltip(data);
159586
159605
  }
159587
159606
 
@@ -162536,7 +162555,7 @@ function HQChartScriptWorker()
162536
162555
 
162537
162556
 
162538
162557
 
162539
- var HQCHART_VERSION="1.1.14928";
162558
+ var HQCHART_VERSION="1.1.14932";
162540
162559
 
162541
162560
  function PrintHQChartVersion()
162542
162561
  {