hqchart 1.1.14929 → 1.1.14936

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:-1=忽略日期 }
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))continue;var bFind=false;if(obj.Date==-1&&item.Time==obj.Time)bFind=true;else if(item.Time==obj.Time&&item.Date==obj.Date)bFind=true;if(bFind){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.14936";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.14936",
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,84 @@ 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:-1=忽略日期 }
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)
88875
- {
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
- }
88884
- }
88873
+ var item=this.SourceData.Data[i];
88874
+ if (!IFrameSplitOperator.IsNumber(item.Close)) continue;
88885
88875
 
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
- }
88876
+ var bFind=false;
88877
+ if (obj.Date==-1 && item.Time==obj.Time)
88878
+ bFind=true;
88879
+ else if (item.Time==obj.Time && item.Date==obj.Date)
88880
+ bFind=true;
88899
88881
 
88900
- if (findIndex<0)
88882
+ if (bFind)
88901
88883
  {
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
- }
88919
-
88920
- return;
88884
+ findIndex=i;
88885
+ findItem=item;
88886
+ break;
88921
88887
  }
88922
88888
  }
88923
88889
 
88924
- var x=frame.GetXFromIndex(findIndex);
88925
- var y=frame.GetYFromData(value);
88926
-
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}; //鼠标移动的位置
88890
+ this.ChartOperator_Temp_SetChartCorssCursor(findIndex, findItem);
88891
+ return true;
88892
+ }
88893
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
88894
+ {
88895
+ var kData=this.GetKData();
88896
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
88931
88897
 
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;
88898
+ var startIndex=kData.DataOffset;
88899
+ var kItem=kData.Data[startIndex];
88900
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
88901
+ return true;
88941
88902
 
88942
88903
  }
88904
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
88905
+ {
88906
+ var kData=this.GetKData();
88907
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
88908
+
88909
+ var index=kData.Data.length-1;
88910
+ var kItem=kData.Data[index];
88911
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
88912
+ return true;
88913
+ }
88914
+
88915
+ }
88916
+
88917
+ //index=-1 隐藏十字光标
88918
+ this.ChartOperator_Temp_SetChartCorssCursor=function(index, kItem)
88919
+ {
88920
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
88921
+ var frame=this.Frame.SubFrame[0].Frame;
88922
+
88923
+ var x=-1,y=-1;
88924
+ if (IFrameSplitOperator.IsNumber(index) && index>=0) x=frame.GetXFromIndex(index);
88925
+ if (kItem && IFrameSplitOperator.IsNumber(kItem.Close)) y=frame.GetYFromData(kItem.Close);
88926
+
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}; //鼠标移动的位置
88931
+
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
+ return true;
88943
88943
  }
88944
88944
 
88945
88945
  this.SendPageChangedEvent=function()
@@ -90295,11 +90295,15 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
90295
90295
  this.CurrentChartDrawPicture=null;
90296
90296
  }
90297
90297
  break;
90298
- case 38:
90299
- case 40:
90298
+ case 38: //up
90299
+ case 40: //down
90300
90300
  if ((e.ctrlKey||e.shiftKey) && this.OnCustomKeyDown)
90301
90301
  this.OnCustomKeyDown(keyID, e)
90302
90302
  break;
90303
+ case 35: //END
90304
+ case 36: //HOME
90305
+ if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
90306
+ break;
90303
90307
  default:
90304
90308
  return;
90305
90309
  }
@@ -90323,6 +90327,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
90323
90327
  this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);
90324
90328
  return true;
90325
90329
  }
90330
+ else if (keyID==36) //HOME 第1条
90331
+ {
90332
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
90333
+ return this.ChartOperator(option);
90334
+ }
90335
+ else if (keyID==35) //END 最后一条
90336
+ {
90337
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
90338
+ return this.ChartOperator(option);
90339
+ }
90326
90340
  else
90327
90341
  {
90328
90342
  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,84 @@ 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:-1=忽略日期 }
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)
92971
- {
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
- }
92980
- }
92969
+ var item=this.SourceData.Data[i];
92970
+ if (!IFrameSplitOperator.IsNumber(item.Close)) continue;
92981
92971
 
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
- }
92972
+ var bFind=false;
92973
+ if (obj.Date==-1 && item.Time==obj.Time)
92974
+ bFind=true;
92975
+ else if (item.Time==obj.Time && item.Date==obj.Date)
92976
+ bFind=true;
92995
92977
 
92996
- if (findIndex<0)
92978
+ if (bFind)
92997
92979
  {
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
- }
93015
-
93016
- return;
92980
+ findIndex=i;
92981
+ findItem=item;
92982
+ break;
93017
92983
  }
93018
92984
  }
93019
92985
 
93020
- var x=frame.GetXFromIndex(findIndex);
93021
- var y=frame.GetYFromData(value);
93022
-
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}; //鼠标移动的位置
92986
+ this.ChartOperator_Temp_SetChartCorssCursor(findIndex, findItem);
92987
+ return true;
92988
+ }
92989
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
92990
+ {
92991
+ var kData=this.GetKData();
92992
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
93027
92993
 
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;
92994
+ var startIndex=kData.DataOffset;
92995
+ var kItem=kData.Data[startIndex];
92996
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
92997
+ return true;
93037
92998
 
93038
92999
  }
93000
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
93001
+ {
93002
+ var kData=this.GetKData();
93003
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
93004
+
93005
+ var index=kData.Data.length-1;
93006
+ var kItem=kData.Data[index];
93007
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
93008
+ return true;
93009
+ }
93010
+
93011
+ }
93012
+
93013
+ //index=-1 隐藏十字光标
93014
+ this.ChartOperator_Temp_SetChartCorssCursor=function(index, kItem)
93015
+ {
93016
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
93017
+ var frame=this.Frame.SubFrame[0].Frame;
93018
+
93019
+ var x=-1,y=-1;
93020
+ if (IFrameSplitOperator.IsNumber(index) && index>=0) x=frame.GetXFromIndex(index);
93021
+ if (kItem && IFrameSplitOperator.IsNumber(kItem.Close)) y=frame.GetYFromData(kItem.Close);
93022
+
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}; //鼠标移动的位置
93027
+
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
+ return true;
93039
93039
  }
93040
93040
 
93041
93041
  this.SendPageChangedEvent=function()
@@ -94391,11 +94391,15 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94391
94391
  this.CurrentChartDrawPicture=null;
94392
94392
  }
94393
94393
  break;
94394
- case 38:
94395
- case 40:
94394
+ case 38: //up
94395
+ case 40: //down
94396
94396
  if ((e.ctrlKey||e.shiftKey) && this.OnCustomKeyDown)
94397
94397
  this.OnCustomKeyDown(keyID, e)
94398
94398
  break;
94399
+ case 35: //END
94400
+ case 36: //HOME
94401
+ if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
94402
+ break;
94399
94403
  default:
94400
94404
  return;
94401
94405
  }
@@ -94419,6 +94423,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94419
94423
  this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);
94420
94424
  return true;
94421
94425
  }
94426
+ else if (keyID==36) //HOME 第1条
94427
+ {
94428
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
94429
+ return this.ChartOperator(option);
94430
+ }
94431
+ else if (keyID==35) //END 最后一条
94432
+ {
94433
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
94434
+ return this.ChartOperator(option);
94435
+ }
94422
94436
  else
94423
94437
  {
94424
94438
  return false;
@@ -145299,8 +145313,8 @@ function ChartReport()
145299
145313
  drawInfo.Tooltip=
145300
145314
  {
145301
145315
  Type:4,
145302
- Data:{ AryText:item.Tooltip.AryText }
145303
- }
145316
+ Data:{ AryText:item.Tooltip.AryText , Callback:item.Tooltip.Callback },
145317
+ };
145304
145318
  }
145305
145319
  }
145306
145320
  else if (IFrameSplitOperator.IsString(item))
@@ -146928,7 +146942,7 @@ function ChartReport()
146928
146942
 
146929
146943
  if (x>=rt.Left && x<=rt.Right && y>=rt.Top && y<=rt.Bottom)
146930
146944
  {
146931
- return { Rect:item.Rect, Stock:item.Stock, Column:item.Column, Index:item.Index, Type:item.Type, Data:item.Data };
146945
+ return { Rect:item.Rect, Stock:item.Stock, Column:item.Column, Index:item.Index, Type:item.Type, Data:item.Data, Callback:item.Callback };
146932
146946
  }
146933
146947
  }
146934
146948
 
@@ -151187,7 +151201,7 @@ function ScrollBarBGChart()
151187
151201
 
151188
151202
 
151189
151203
 
151190
- var HQCHART_VERSION="1.1.14928";
151204
+ var HQCHART_VERSION="1.1.14936";
151191
151205
 
151192
151206
  function PrintHQChartVersion()
151193
151207
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14928";
8
+ var HQCHART_VERSION="1.1.14936";
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,84 @@ 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:-1=忽略日期 }
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)
93015
- {
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
- }
93024
- }
93013
+ var item=this.SourceData.Data[i];
93014
+ if (!IFrameSplitOperator.IsNumber(item.Close)) continue;
93025
93015
 
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
- }
93016
+ var bFind=false;
93017
+ if (obj.Date==-1 && item.Time==obj.Time)
93018
+ bFind=true;
93019
+ else if (item.Time==obj.Time && item.Date==obj.Date)
93020
+ bFind=true;
93039
93021
 
93040
- if (findIndex<0)
93022
+ if (bFind)
93041
93023
  {
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
- }
93059
-
93060
- return;
93024
+ findIndex=i;
93025
+ findItem=item;
93026
+ break;
93061
93027
  }
93062
93028
  }
93063
93029
 
93064
- var x=frame.GetXFromIndex(findIndex);
93065
- var y=frame.GetYFromData(value);
93066
-
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}; //鼠标移动的位置
93030
+ this.ChartOperator_Temp_SetChartCorssCursor(findIndex, findItem);
93031
+ return true;
93032
+ }
93033
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
93034
+ {
93035
+ var kData=this.GetKData();
93036
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
93071
93037
 
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;
93038
+ var startIndex=kData.DataOffset;
93039
+ var kItem=kData.Data[startIndex];
93040
+ this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
93041
+ return true;
93081
93042
 
93082
93043
  }
93044
+ else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
93045
+ {
93046
+ var kData=this.GetKData();
93047
+ if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
93048
+
93049
+ var index=kData.Data.length-1;
93050
+ var kItem=kData.Data[index];
93051
+ this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
93052
+ return true;
93053
+ }
93054
+
93055
+ }
93056
+
93057
+ //index=-1 隐藏十字光标
93058
+ this.ChartOperator_Temp_SetChartCorssCursor=function(index, kItem)
93059
+ {
93060
+ if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
93061
+ var frame=this.Frame.SubFrame[0].Frame;
93062
+
93063
+ var x=-1,y=-1;
93064
+ if (IFrameSplitOperator.IsNumber(index) && index>=0) x=frame.GetXFromIndex(index);
93065
+ if (kItem && IFrameSplitOperator.IsNumber(kItem.Close)) y=frame.GetYFromData(kItem.Close);
93066
+
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}; //鼠标移动的位置
93071
+
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
+ return true;
93083
93083
  }
93084
93084
 
93085
93085
  this.SendPageChangedEvent=function()
@@ -94435,11 +94435,15 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94435
94435
  this.CurrentChartDrawPicture=null;
94436
94436
  }
94437
94437
  break;
94438
- case 38:
94439
- case 40:
94438
+ case 38: //up
94439
+ case 40: //down
94440
94440
  if ((e.ctrlKey||e.shiftKey) && this.OnCustomKeyDown)
94441
94441
  this.OnCustomKeyDown(keyID, e)
94442
94442
  break;
94443
+ case 35: //END
94444
+ case 36: //HOME
94445
+ if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
94446
+ break;
94443
94447
  default:
94444
94448
  return;
94445
94449
  }
@@ -94463,6 +94467,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94463
94467
  this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);
94464
94468
  return true;
94465
94469
  }
94470
+ else if (keyID==36) //HOME 第1条
94471
+ {
94472
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
94473
+ return this.ChartOperator(option);
94474
+ }
94475
+ else if (keyID==35) //END 最后一条
94476
+ {
94477
+ var option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
94478
+ return this.ChartOperator(option);
94479
+ }
94466
94480
  else
94467
94481
  {
94468
94482
  return false;
@@ -145343,8 +145357,8 @@ function ChartReport()
145343
145357
  drawInfo.Tooltip=
145344
145358
  {
145345
145359
  Type:4,
145346
- Data:{ AryText:item.Tooltip.AryText }
145347
- }
145360
+ Data:{ AryText:item.Tooltip.AryText , Callback:item.Tooltip.Callback },
145361
+ };
145348
145362
  }
145349
145363
  }
145350
145364
  else if (IFrameSplitOperator.IsString(item))
@@ -146972,7 +146986,7 @@ function ChartReport()
146972
146986
 
146973
146987
  if (x>=rt.Left && x<=rt.Right && y>=rt.Top && y<=rt.Bottom)
146974
146988
  {
146975
- return { Rect:item.Rect, Stock:item.Stock, Column:item.Column, Index:item.Index, Type:item.Type, Data:item.Data };
146989
+ return { Rect:item.Rect, Stock:item.Stock, Column:item.Column, Index:item.Index, Type:item.Type, Data:item.Data, Callback:item.Callback };
146976
146990
  }
146977
146991
  }
146978
146992
 
@@ -159580,8 +159594,20 @@ function JSFloatTooltip()
159580
159594
  if (!tooltipData.Data || !IFrameSplitOperator.IsNonEmptyArray(tooltipData.Data.AryText)) return;
159581
159595
 
159582
159596
  this.AryText=tooltipData.Data.AryText;
159583
- this.UpdateTableDOM();
159584
159597
 
159598
+ if (tooltipData.Data.Callback)
159599
+ {
159600
+ var callback=tooltipData.Data.Callback;
159601
+ var sendData={ AryText:null, data, PreventDefault:false };
159602
+ callback(sendData, this);
159603
+ if (sendData.PreventDefault)
159604
+ {
159605
+ if (!IFrameSplitOperator.IsNonEmptyArray(sendData.AryText)) return;
159606
+ this.AryText=sendData.AryText;
159607
+ }
159608
+ }
159609
+
159610
+ this.UpdateTableDOM();
159585
159611
  this.ShowTooltip(data);
159586
159612
  }
159587
159613
 
@@ -162536,7 +162562,7 @@ function HQChartScriptWorker()
162536
162562
 
162537
162563
 
162538
162564
 
162539
- var HQCHART_VERSION="1.1.14928";
162565
+ var HQCHART_VERSION="1.1.14936";
162540
162566
 
162541
162567
  function PrintHQChartVersion()
162542
162568
  {