hqchart 1.1.14851 → 1.1.14853
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/umychart.vue.js +29 -5
- package/package.json +1 -1
- package/src/jscommon/umychart.deal.js +1 -1
- package/src/jscommon/umychart.js +104 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +106 -2
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +106 -2
package/lib/umychart.vue.js
CHANGED
|
@@ -1564,7 +1564,11 @@ OP_CORSSCURSOR_GOTO:14,//十字光标移动某一个时刻点
|
|
|
1564
1564
|
OP_SCROOLBAR_SLIDER_CHANGED:15,//滑块变动
|
|
1565
1565
|
OP_GOTO:16,//移动到某一个天或某一个分钟
|
|
1566
1566
|
OP_GOTO_BY_DATAINDEX:17,//的移动到某一个数据起始位置
|
|
1567
|
-
OP_MOVE_CORSSCURSOR:18
|
|
1567
|
+
OP_MOVE_CORSSCURSOR:18,//移动十字光标 { Step, Start:{ Date:, Time: } }
|
|
1568
|
+
OP_CORSSCURSOR_PAGE_START:19,//当前屏第1条数据
|
|
1569
|
+
OP_CORSSCURSOR_PAGE_END:20,//当前屏最后1条数据
|
|
1570
|
+
OP_CORSSCURSOR_DATA_START:21,//所有数据的第1条数据
|
|
1571
|
+
OP_CORSSCURSOR_DATA_END:22//所有数据的最后1条数据
|
|
1568
1572
|
};var JSCHART_DRAG_ID={DISABLE_DRAG_ID:0,CLICK_TOUCH_MODE_ID:3//长按十字光标显示保留/点击十字光标消失 (使用TouchStatus)
|
|
1569
1573
|
};var JSCHART_BUTTON_ID={CLOSE_BEFOREOPEN_ID:1,//关闭集合竞价
|
|
1570
1574
|
CLOSE_OVERLAY_INDEX:2,//关闭叠加指标
|
|
@@ -2117,6 +2121,8 @@ if(this.SelectChartDrawPicture){var drawPicture=this.SelectChartDrawPicture;JSCo
|
|
|
2117
2121
|
this.OnMarkRectSelect(e);break;case 27://ESCAPE 取消画布工具
|
|
2118
2122
|
if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status!=20)//画布移动的时候不能取消
|
|
2119
2123
|
this.CurrentChartDrawPicture=null;}break;case 13://回车
|
|
2124
|
+
case 35://END
|
|
2125
|
+
case 36://HOME
|
|
2120
2126
|
if(this.OnCustomKeyDown)this.OnCustomKeyDown(keyID,e);break;default:return;}if(draw)this.DrawDynamicInfo();if(keyID==37||keyID==39)this.StartKeyboardMoveTimer(e);//不让滚动条滚动
|
|
2121
2127
|
if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.ClearKeyboardMoveTimer=function(){if(!this.KeyboardMove)return;this.KeyboardMove.Event=null;if(this.KeyboardMove.Timer){clearTimeout(this.KeyboardMove.Timer);this.KeyboardMove.Timer=null;JSConsole.Chart.Log('[JSChartContainer::ClearKeyboardMoveTimer] Stop');}this.KeyboardMove.Enable=false;};this.StartKeyboardMoveTimer=function(e){if(!this.KeyboardMove)return;if(this.KeyboardMove.Enable)return;//已启动
|
|
2122
2128
|
this.KeyboardMove.Event=e;this.KeyboardMove.Enable=true;JSConsole.Chart.Log('[JSChartContainer::StartKeyboardMoveTimer] Start');this.AutoKeyboardMove();};this.AutoKeyboardMove=function(){var _this15=this;if(!this.KeyboardMove)return false;if(!this.KeyboardMove.Enable)return false;if(!this.KeyboardMove.Event)return false;this.KeyboardMove.Timer=setTimeout(function(){_this15.OnKeyboardMoveTimerProc();},this.KeyboardMove.Delay);};this.OnKeyboardMoveTimerProc=function(){if(!this.KeyboardMove)return false;if(!this.KeyboardMove.Enable)return false;if(!this.KeyboardMove.Event)return false;var e=this.KeyboardMove.Event;var keyID=e.keyCode?e.keyCode:e.which;var bStop=false;switch(keyID){case 37://left
|
|
@@ -7588,7 +7594,19 @@ var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.
|
|
|
7588
7594
|
var start=kData.DataOffset;var bDayPeriod=ChartData.IsDayPeriod(this.Period,true);var findItem=null,dataIndex=-1;for(var i=0;i<kData.Data.length;++i){var item=kData.Data[i];if(!item)continue;if(bDayPeriod){if(item.Date==obj.Start.Date){findItem=item;dataIndex=i;break;}}else{if(item.Date==obj.Start.Date&&item.Time==obj.Start.Time){findItem=item;dataIndex=i;break;}}}if(!findItem)return false;var index=-1;var dataOffset=kData.DataOffset;if(dataIndex>=start&&dataIndex<=start+(showCount-1)){index=dataIndex-start;}else//需要调整当前屏范围
|
|
7589
7595
|
{if(step>0){if(dataIndex+showCount>=kData.Data.length){dataOffset=kData.Data.length-showCount;index=dataIndex-dataOffset;}else{index=0;dataOffset=dataIndex;}}else{if(dataIndex-showCount<0){dataOffset=0;index=dataIndex;}else if(dataIndex+showCount>=kData.Data.length){dataOffset=kData.Data.length-showCount;index=dataIndex-dataOffset;}else{index=showCount;dataOffset=dataIndex-showCount;}}}var kItem=findItem;if(step>0){for(var i=dataIndex+1,j=0;i<kData.Data.length&&j<step;++i,++j){++index;dataIndex=i;if(index>=showCount-1){index=showCount-1;dataOffset+=1;}var item=kData.Data[i];if(!item)continue;var kItem=item;}}else if(step<0){for(var i=dataIndex-1,j=0;i>=0&&j<Math.abs(step);--i,++j){--index;dataIndex=i;if(index<=0){index=0;dataOffset-=1;}var item=kData.Data[i];if(!item)continue;var kItem=item;}}if(!kItem)return false;obj.KItem=kItem;if(kData.DataOffset==dataOffset){return this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);}else{kData.DataOffset=dataOffset;this.UpdataDataoffset();//更新数据偏移
|
|
7590
7596
|
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7591
|
-
this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);return true;}}
|
|
7597
|
+
this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);return true;}}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START)//当前屏第1条数据
|
|
7598
|
+
{var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
|
|
7599
|
+
var startIndex=kData.DataOffset;var kItem=kData.Data[startIndex];this.ChartOperator_Temp_SetChartCorssCursor(0,kItem);return true;}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END)//当前屏最后1条数据
|
|
7600
|
+
{var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
|
|
7601
|
+
if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return false;var showCount=this.Frame.SubFrame[0].Frame.XPointCount;//一屏显示个数
|
|
7602
|
+
var endIndex=kData.DataOffset+showCount-1;if(endIndex>=kData.Data.length)endIndex=kData.Data.length-1;var kItem=kData.Data[endIndex];var index=endIndex-kData.DataOffset;this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);return true;}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START){var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
|
|
7603
|
+
var kItem=kData.Data[0];if(kData.DataOffset!=0){kData.DataOffset=0;this.UpdataDataoffset();//更新数据偏移
|
|
7604
|
+
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7605
|
+
this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();this.ChartOperator_Temp_SetChartCorssCursor(0,kItem);}else{this.ChartOperator_Temp_SetChartCorssCursor(0,kItem);}return true;}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END){var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;//数据还没有到达
|
|
7606
|
+
var kItem=kData.Data[kData.Data.length-1];if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return false;var showCount=this.Frame.SubFrame[0].Frame.XPointCount;//一屏显示个数
|
|
7607
|
+
var dataOffset=kData.Data.length-showCount;if(kData.DataOffset<dataOffset){kData.DataOffset=dataOffset;var index=kData.Data.length-kData.DataOffset-1;this.UpdataDataoffset();//更新数据偏移
|
|
7608
|
+
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7609
|
+
this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);}else{var index=kData.Data.length-kData.DataOffset-1;this.ChartOperator_Temp_SetChartCorssCursor(index,kItem);}return true;}};this.ChartOperator_Temp_SetChartCorssCursor=function(index,kItem){if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return false;var frame=this.Frame.SubFrame[0].Frame;var x=frame.GetXFromIndex(index);var y=frame.GetYFromData(kItem.Close);//保存最后一次鼠标移动信息
|
|
7592
7610
|
var MoveStatus={X:x,Y:y,IsInClient:this.IsMouseOnClient(x,y)};this.LastMouseStatus.OnMouseMove=MoveStatus;this.LastMouseStatus.MoveOnPoint={X:x,Y:y};//鼠标移动的位置
|
|
7593
7611
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);var titleChart=this.TitlePaint[0];if(event&&titleChart)titleChart.OnMouseMoveEvent=event;var pixelTatio=GetDevicePixelRatio();var e={};e.clientX=x/pixelTatio+this.UIElement.getBoundingClientRect().left;e.clientY=y/pixelTatio+this.UIElement.getBoundingClientRect().top;this.MoveOnPoint={X:x,Y:y};this.OnMouseMove(x,y,e);this.LastMouseStatus.MoveOnPoint=null;if(titleChart)titleChart.OnMouseMoveEvent=null;return true;};//内部函数
|
|
7594
7612
|
this.ChartOperator_Temp_GetHistoryData=function(){var hisData=null;if(!this.Frame.Data)hisData=this.Frame.Data;else hisData=this.Frame.SubFrame[0].Frame.Data;if(!hisData)return null;//数据还没有到达
|
|
@@ -7623,6 +7641,8 @@ for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting()
|
|
|
7623
7641
|
if(!data.Tooltip||!data.Chart)return;var pixelRatio=GetDevicePixelRatio();var rtClient=this.UIElement.getBoundingClientRect();var rtScroll=GetScrollPosition();x+=rtClient.left+rtScroll.Left;y+=rtClient.top+rtScroll.Top;var item=data.Tooltip.Data;var date=item.Date;var symbol=null;if(data.Tooltip.ChartPaint&&data.Tooltip.ChartPaint.Name=="DRAWKLINE"){if(item.Symbol)symbol=item.Symbol;else if(data.Tooltip.Symbol)symbol=data.Tooltip.Symbol;}else{symbol=data.Chart.Symbol;}if(!symbol)return;this.PopMinuteChart.Show({Date:date,Symbol:symbol,Data:data.Tooltip.Data,Chart:data.Tooltip.ChartPaint},x/pixelRatio,y/pixelRatio);};//Alt+W 区间统计
|
|
7624
7642
|
//Alt+数字 切换多个窗口
|
|
7625
7643
|
//Ctrl+I
|
|
7644
|
+
//HOME / END 当前屏 第1条 最后一条
|
|
7645
|
+
//Ctrl+HOME / Ctrl+END 第1条 最后一条
|
|
7626
7646
|
this.OnCustomKeyDown=function(keyID,e)//自定义键盘事件
|
|
7627
7647
|
{if(keyID==37&&e.ctrlKey)//Ctrl+Left
|
|
7628
7648
|
{this.MoveCorssCursorLeft(this.CtrlMoveStep);return true;}else if(keyID==39&&e.ctrlKey)//Ctrl+Right
|
|
@@ -7631,7 +7651,11 @@ this.OnCustomKeyDown=function(keyID,e)//自定义键盘事件
|
|
|
7631
7651
|
{this.MoveKLineRight(this.ShiftMoveStep);return true;}else if(keyID==38&&e.shiftKey)//shift+up 上移十字光标
|
|
7632
7652
|
{this.MoveCorssCursorUp(this.ShiftUpDownStepPixel);return true;}else if(keyID==40&&e.shiftKey)//shift+down 下移十字光标
|
|
7633
7653
|
{this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);return true;}else if(keyID==13)//回车显示分时图
|
|
7634
|
-
{this.OnEnterKeyDown();}else
|
|
7654
|
+
{this.OnEnterKeyDown();}else if(keyID==36)//HOME 第1条
|
|
7655
|
+
{var option=null;if(e.ctrlKey)option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START};//所有数据的第1条数据
|
|
7656
|
+
else option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START};if(option)this.ChartOperator(option);}else if(keyID==35)//END 最后一条
|
|
7657
|
+
{var option=null;if(e.ctrlKey)option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END};//所有数据的最后1条数据
|
|
7658
|
+
else option={ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END};if(option)this.ChartOperator(option);}else{return false;}};this.MoveKLineLeft=function(value){return this.MoveKLine(-value);};this.MoveKLineRight=function(value){return this.MoveKLine(value);};this.MoveKLine=function(step){if(step==0)return;var oneStepWidth=this.GetMoveOneStepWidth();var moveSetp=step*oneStepWidth;var bLeft=true;if(step<0){moveSetp=Math.abs(step)*oneStepWidth;bLeft=false;}if(!this.DataMove(moveSetp,bLeft))return;this.UpdataDataoffset();this.RepairCursorIndex();this.UpdatePointByCursorIndex();//推拽数据的时候不需要把鼠标位置更新到K线上
|
|
7635
7659
|
this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("datamove");};//修复 当前数据索引大于数据个数的请求
|
|
7636
7660
|
this.RepairCursorIndex=function(){var kData=this.GetKData();if(!kData)return;var xPointcount=0;if(this.Frame.XPointCount)xPointcount=this.Frame.XPointCount;else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;if(!IFrameSplitOperator.IsPlusNumber(xPointcount))return;if(this.CursorIndex<0)this.CursorIndex=0;var index=this.CursorIndex;index=parseInt(index.toFixed(0));if(index+kData.DataOffset>=kData.Data.length){this.CursorIndex=kData.Data.length-1-kData.DataOffset;}};this.MoveCorssCursorLeft=function(step){var data=null;if(this.Frame.Data)data=this.Frame.Data;else data=this.Frame.SubFrame[0].Frame.Data;if(!data)return;if(data.DataOffset<=0&&this.CursorIndex<=0)//数据到头了
|
|
7637
7661
|
{if(this.DragDownloadData)this.DragDownloadData();return;}if(this.CursorIndex-step<0)//当前屏到头了
|
|
@@ -13094,7 +13118,7 @@ this.DrawItemTextV2(drawInfo,rtItem);}else{this.DrawItemText(text,textColor,text
|
|
|
13094
13118
|
var tooltipData=(0,_defineProperty3.default)({Rect:rtItem,Data:data,Index:dataIndex,Column:item,Type:drawInfo.Tooltip.Type},'Data',drawInfo.Tooltip.Data);this.TooltipRect.push(tooltipData);}else if(item.ChartTooltip&&item.ChartTooltip.Enable&&IFrameSplitOperator.IsNumber(item.ChartTooltip.Type))//Type 20分时图 21K线图
|
|
13095
13119
|
{var tooltipData={Rect:rtItem,Data:data,Index:dataIndex,Column:item,Type:item.ChartTooltip.Type};this.TooltipRect.push(tooltipData);}left+=item.Width;}};this.FormatReserveNumber=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_DEAL_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var value=data[fieldName];if(!IFrameSplitOperator.IsNumber(value))return;if(IFrameSplitOperator.IsNumber(column.ColorType)){if(column.ColorType==1){drawInfo.TextColor=this.GetUpDownColor(value,0);}else if(column.ColorType==2){drawInfo.TextColor=this.GetUpDownColorV2(value,0);}}var text=value.toFixed(column.FloatPrecision);if(column.Format&&IFrameSplitOperator.IsNumber(column.Format.Type)){var format=column.Format;switch(format.Type){case 1://原始数据
|
|
13096
13120
|
text=value.toFixed(column.FloatPrecision);break;case 2://千分位分割
|
|
13097
|
-
text=IFrameSplitOperator.FormatValueThousandsString(value,column.FloatPrecision);break;case 3:var exfloatPrecision=1;if(IFrameSplitOperator.IsNumber(format.ExFloatPrecision))exfloatPrecision=format.ExFloatPrecision;text=IFrameSplitOperator.FormatValueStringV2(value,column.FloatPrecision,exfloatPrecision);break;}}drawInfo.Text=text;};this.FormatReserveString=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_DEAL_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var item=data[fieldName];if(IFrameSplitOperator.IsObject(item)){if(item.Text)drawInfo.Text=item.Text;if(item.TextColor)drawInfo.TextColor=item.TextColor;if(item.BGColor)drawInfo.BGColor=item.BGColor;}else if(IFrameSplitOperator.IsString(item)){drawInfo.Text=item;}if(item&&item.Tooltip&&IFrameSplitOperator.IsNonEmptyArray(item.Tooltip.AryText)){drawInfo.Tooltip={Type:2,Data:{AryText:item.Tooltip.AryText}};}};this.GetUpDownColor=function(price,price2){if(price>price2)return this.UpColor;else if(price<price2)return this.DownColor;else return this.UnchangeColor;};this.GetUpDownColorV2=function(price,price2){if(price>=price2)return this.UpColor;else return this.DownColor;};this.DrawSelectedRow=function(data,index,rtRow){if(!this.SelectedData)return false;if(!this.SelectedData.Enable)return false;if(!this.SelectedData.Guid||this.SelectedData.Guid!=data.Guid)return false;if(this.SelectedStyle==1){this.Canvas.fillStyle=this.SelectedConfig.BGColor;this.Canvas.fillRect(rtRow.Left,rtRow.Top,rtRow.Width,rtRow.Height);}return true;};this.DrawItemText=function(text,textColor,textAlign,left,top,width){var x=left;if(textAlign=='center'){x=left+width/2;this.Canvas.textAlign="center";}else if(textAlign=='right'){x=left+width;this.Canvas.textAlign="right";}else{this.Canvas.textAlign="left";}this.Canvas.textBaseline="bottom";this.Canvas.fillStyle=textColor;if(text)this.Canvas.fillText(text,x,top+this.RowHeight-2);};this.DrawItemTextV2=function(drawInfo,rtItem){if(drawInfo.BGColor){this.Canvas.fillStyle=drawInfo.BGColor;this.Canvas.fillRect(rtItem.Left,rtItem.Top,rtItem.Width,rtItem.Height);}if(drawInfo.Text){var text=drawInfo.Text;var x=rtItem.Left;if(drawInfo.TextAlign=='center'){x=rtItem.Left+rtItem.Width/2;this.Canvas.textAlign="center";}else if(drawInfo.TextAlign=='right'){x=rtItem.Left+rtItem.Width-2;this.Canvas.textAlign="right";}else{x+=2;this.Canvas.textAlign="left";}var textWidth=this.Canvas.measureText(text).width+1;this.Canvas.textBaseline="bottom";this.Canvas.fillStyle=drawInfo.TextColor;this.Canvas.fillText(text,x,rtItem.Top+this.RowHeight-2);}};this.DrawMultiBar=function(colunmInfo,data,rtItem){if(!data.Source||!IFrameSplitOperator.IsNonEmptyArray(data.Source))return false;var barData=data.Source[colunmInfo.DataIndex];//{ Value:[0.4,0,2], Color:[0,1] };
|
|
13121
|
+
text=IFrameSplitOperator.FormatValueThousandsString(value,column.FloatPrecision);break;case 3:var exfloatPrecision=1;if(IFrameSplitOperator.IsNumber(format.ExFloatPrecision))exfloatPrecision=format.ExFloatPrecision;text=IFrameSplitOperator.FormatValueStringV2(value,column.FloatPrecision,exfloatPrecision);break;}}drawInfo.Text=text;};this.FormatReserveString=function(column,data,drawInfo){if(column.DefaultText)drawInfo.Text=column.DefaultText;var fieldName=MAP_DEAL_COLUMN_FIELD.get(column.Type);if(!data||!fieldName)return;var item=data[fieldName];if(IFrameSplitOperator.IsObject(item)){if(item.Text)drawInfo.Text=item.Text;if(item.TextColor)drawInfo.TextColor=item.TextColor;if(item.BGColor)drawInfo.BGColor=item.BGColor;}else if(IFrameSplitOperator.IsString(item)){drawInfo.Text=item;}if(item&&item.Tooltip&&IFrameSplitOperator.IsNonEmptyArray(item.Tooltip.AryText)){drawInfo.Tooltip={Type:2,Data:{AryText:item.Tooltip.AryText}};}};this.GetUpDownColor=function(price,price2){if(price>price2)return this.UpColor;else if(price<price2)return this.DownColor;else return this.UnchangeColor;};this.GetUpDownColorV2=function(price,price2){if(price>=price2)return this.UpColor;else return this.DownColor;};this.DrawSelectedRow=function(data,index,rtRow){if(!this.SelectedData)return false;if(!this.SelectedData.Enable)return false;if(!this.SelectedData.Guid||this.SelectedData.Guid!=data.Guid)return false;if(this.SelectedStyle==1){this.Canvas.fillStyle=this.SelectedConfig.BGColor;this.Canvas.fillRect(rtRow.Left+1,rtRow.Top+1,rtRow.Width-2,rtRow.Height-2);}return true;};this.DrawItemText=function(text,textColor,textAlign,left,top,width){var x=left;if(textAlign=='center'){x=left+width/2;this.Canvas.textAlign="center";}else if(textAlign=='right'){x=left+width;this.Canvas.textAlign="right";}else{this.Canvas.textAlign="left";}this.Canvas.textBaseline="bottom";this.Canvas.fillStyle=textColor;if(text)this.Canvas.fillText(text,x,top+this.RowHeight-2);};this.DrawItemTextV2=function(drawInfo,rtItem){if(drawInfo.BGColor){this.Canvas.fillStyle=drawInfo.BGColor;this.Canvas.fillRect(rtItem.Left,rtItem.Top,rtItem.Width,rtItem.Height);}if(drawInfo.Text){var text=drawInfo.Text;var x=rtItem.Left;if(drawInfo.TextAlign=='center'){x=rtItem.Left+rtItem.Width/2;this.Canvas.textAlign="center";}else if(drawInfo.TextAlign=='right'){x=rtItem.Left+rtItem.Width-2;this.Canvas.textAlign="right";}else{x+=2;this.Canvas.textAlign="left";}var textWidth=this.Canvas.measureText(text).width+1;this.Canvas.textBaseline="bottom";this.Canvas.fillStyle=drawInfo.TextColor;this.Canvas.fillText(text,x,rtItem.Top+this.RowHeight-2);}};this.DrawMultiBar=function(colunmInfo,data,rtItem){if(!data.Source||!IFrameSplitOperator.IsNonEmptyArray(data.Source))return false;var barData=data.Source[colunmInfo.DataIndex];//{ Value:[0.4,0,2], Color:[0,1] };
|
|
13098
13122
|
if(!barData)return false;if(!IFrameSplitOperator.IsNonEmptyArray(barData.Value))return false;var width=rtItem.Width-this.BarMergin.Left-this.BarMergin.Right;var left=rtItem.Left+this.BarMergin.Left;var top=rtItem.Top+this.RowMergin.Top+this.BarMergin.Top;var height=rtItem.Height-this.RowMergin.Top-this.RowMergin.Bottom-this.BarMergin.Top-this.BarMergin.Bottom;var right=left+width;for(var i=0;i<barData.Value.length;++i){var value=barData.Value[i];if(value<=0)continue;if(left>=right)break;var barWidth=width*value;if(barWidth<1)barWidth=1;if(left+barWidth>right)barWidth=right-left;var colorIndex=i;if(IFrameSplitOperator.IsNonEmptyArray(barData.Color)&&i<barData.Color.length)colorIndex=barData.Color[i];this.Canvas.fillStyle=g_JSChartResource.DealList.FieldColor.Bar[colorIndex];this.Canvas.fillRect(left,top,barWidth,height);left+=barWidth;}return true;};this.DrawCenterBar=function(colunmInfo,data,rtItem){if(!data.Source||!IFrameSplitOperator.IsNonEmptyArray(data.Source))return false;var barData=data.Source[colunmInfo.DataIndex];//{ Value:[0.4,0,2], Color:[0,1] };
|
|
13099
13123
|
if(!barData)return false;if(!IFrameSplitOperator.IsNonEmptyArray(barData.Value))return false;var width=(rtItem.Width-this.BarMergin.Left-this.BarMergin.Right)/2;var left=rtItem.Left+this.BarMergin.Left;var center=left+width;var top=rtItem.Top+this.RowMergin.Top+this.BarMergin.Top;var height=rtItem.Height-this.RowMergin.Top-this.RowMergin.Bottom-this.BarMergin.Top-this.BarMergin.Bottom;var right=left+width;for(var i=0;i<barData.Value.length&&i<2;++i){var value=barData.Value[i];if(value<=0)continue;if(value>1)value=1;var barWidth=width*value;if(barWidth<1)barWidth=1;var colorIndex=i;if(IFrameSplitOperator.IsNonEmptyArray(barData.Color)&&i<barData.Color.length)colorIndex=barData.Color[i];this.Canvas.fillStyle=g_JSChartResource.DealList.FieldColor.Bar[colorIndex];if(i==0)//左边
|
|
13100
13124
|
{this.Canvas.fillRect(center,top,-barWidth,height);}else//右边
|
|
@@ -15050,7 +15074,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
15050
15074
|
this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
15051
15075
|
* 版本信息输出
|
|
15052
15076
|
*
|
|
15053
|
-
*/var HQCHART_VERSION="1.1.
|
|
15077
|
+
*/var HQCHART_VERSION="1.1.14852";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
15054
15078
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
15055
15079
|
// BaseIndex:BaseIndex,
|
|
15056
15080
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -2020,7 +2020,7 @@ function ChartDealList()
|
|
|
2020
2020
|
if ( this.SelectedStyle==1)
|
|
2021
2021
|
{
|
|
2022
2022
|
this.Canvas.fillStyle=this.SelectedConfig.BGColor;
|
|
2023
|
-
this.Canvas.fillRect(rtRow.Left,rtRow.Top, rtRow.Width, rtRow.Height);
|
|
2023
|
+
this.Canvas.fillRect(rtRow.Left+1,rtRow.Top+1, rtRow.Width-2, rtRow.Height-2);
|
|
2024
2024
|
}
|
|
2025
2025
|
|
|
2026
2026
|
return true;
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -2834,6 +2834,12 @@ var JSCHART_OPERATOR_ID=
|
|
|
2834
2834
|
OP_GOTO_BY_DATAINDEX:17, //的移动到某一个数据起始位置
|
|
2835
2835
|
|
|
2836
2836
|
OP_MOVE_CORSSCURSOR:18, //移动十字光标 { Step, Start:{ Date:, Time: } }
|
|
2837
|
+
|
|
2838
|
+
OP_CORSSCURSOR_PAGE_START:19, //当前屏第1条数据
|
|
2839
|
+
OP_CORSSCURSOR_PAGE_END:20, //当前屏最后1条数据
|
|
2840
|
+
|
|
2841
|
+
OP_CORSSCURSOR_DATA_START:21, //所有数据的第1条数据
|
|
2842
|
+
OP_CORSSCURSOR_DATA_END:22, //所有数据的最后1条数据
|
|
2837
2843
|
}
|
|
2838
2844
|
|
|
2839
2845
|
var JSCHART_DRAG_ID=
|
|
@@ -7783,6 +7789,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7783
7789
|
}
|
|
7784
7790
|
break;
|
|
7785
7791
|
case 13: //回车
|
|
7792
|
+
case 35: //END
|
|
7793
|
+
case 36: //HOME
|
|
7786
7794
|
if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
|
|
7787
7795
|
break;
|
|
7788
7796
|
default:
|
|
@@ -80103,6 +80111,80 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80103
80111
|
return true;
|
|
80104
80112
|
}
|
|
80105
80113
|
}
|
|
80114
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
|
|
80115
|
+
{
|
|
80116
|
+
var kData=this.GetKData();
|
|
80117
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
80118
|
+
var startIndex=kData.DataOffset;
|
|
80119
|
+
var kItem=kData.Data[startIndex];
|
|
80120
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
80121
|
+
return true;
|
|
80122
|
+
}
|
|
80123
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
|
|
80124
|
+
{
|
|
80125
|
+
var kData=this.GetKData();
|
|
80126
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
80127
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
80128
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
80129
|
+
var endIndex=kData.DataOffset+showCount-1;
|
|
80130
|
+
if (endIndex>=kData.Data.length) endIndex=kData.Data.length-1;
|
|
80131
|
+
var kItem=kData.Data[endIndex];
|
|
80132
|
+
var index=endIndex-kData.DataOffset;
|
|
80133
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
80134
|
+
return true;
|
|
80135
|
+
}
|
|
80136
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START)
|
|
80137
|
+
{
|
|
80138
|
+
var kData=this.GetKData();
|
|
80139
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
80140
|
+
var kItem=kData.Data[0];
|
|
80141
|
+
|
|
80142
|
+
if (kData.DataOffset!=0)
|
|
80143
|
+
{
|
|
80144
|
+
kData.DataOffset=0
|
|
80145
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
80146
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
80147
|
+
this.ResetFrameXSplit();
|
|
80148
|
+
this.Frame.SetSizeChage(true);
|
|
80149
|
+
this.Draw();
|
|
80150
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
80151
|
+
}
|
|
80152
|
+
else
|
|
80153
|
+
{
|
|
80154
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
80155
|
+
}
|
|
80156
|
+
|
|
80157
|
+
return true;
|
|
80158
|
+
}
|
|
80159
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END)
|
|
80160
|
+
{
|
|
80161
|
+
var kData=this.GetKData();
|
|
80162
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
80163
|
+
|
|
80164
|
+
var kItem=kData.Data[kData.Data.length-1];
|
|
80165
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
80166
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
80167
|
+
var dataOffset=kData.Data.length-showCount;
|
|
80168
|
+
|
|
80169
|
+
if (kData.DataOffset<dataOffset)
|
|
80170
|
+
{
|
|
80171
|
+
kData.DataOffset=dataOffset;
|
|
80172
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
80173
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
80174
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
80175
|
+
this.ResetFrameXSplit();
|
|
80176
|
+
this.Frame.SetSizeChage(true);
|
|
80177
|
+
this.Draw();
|
|
80178
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
80179
|
+
}
|
|
80180
|
+
else
|
|
80181
|
+
{
|
|
80182
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
80183
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
80184
|
+
}
|
|
80185
|
+
|
|
80186
|
+
return true;
|
|
80187
|
+
}
|
|
80106
80188
|
}
|
|
80107
80189
|
|
|
80108
80190
|
|
|
@@ -80463,6 +80545,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80463
80545
|
//Alt+W 区间统计
|
|
80464
80546
|
//Alt+数字 切换多个窗口
|
|
80465
80547
|
//Ctrl+I
|
|
80548
|
+
//HOME / END 当前屏 第1条 最后一条
|
|
80549
|
+
//Ctrl+HOME / Ctrl+END 第1条 最后一条
|
|
80466
80550
|
this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
|
|
80467
80551
|
{
|
|
80468
80552
|
if (keyID==37 && e.ctrlKey) //Ctrl+Left
|
|
@@ -80499,6 +80583,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80499
80583
|
{
|
|
80500
80584
|
this.OnEnterKeyDown();
|
|
80501
80585
|
}
|
|
80586
|
+
else if (keyID==36) //HOME 第1条
|
|
80587
|
+
{
|
|
80588
|
+
var option=null;
|
|
80589
|
+
if (e.ctrlKey)
|
|
80590
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START }; //所有数据的第1条数据
|
|
80591
|
+
else
|
|
80592
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
|
|
80593
|
+
|
|
80594
|
+
if (option) this.ChartOperator(option);
|
|
80595
|
+
}
|
|
80596
|
+
else if (keyID==35) //END 最后一条
|
|
80597
|
+
{
|
|
80598
|
+
var option=null;
|
|
80599
|
+
if (e.ctrlKey)
|
|
80600
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END }; //所有数据的最后1条数据
|
|
80601
|
+
else
|
|
80602
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
|
|
80603
|
+
|
|
80604
|
+
if (option) this.ChartOperator(option);
|
|
80605
|
+
}
|
|
80502
80606
|
else
|
|
80503
80607
|
{
|
|
80504
80608
|
return false;
|
|
@@ -6930,6 +6930,12 @@ var JSCHART_OPERATOR_ID=
|
|
|
6930
6930
|
OP_GOTO_BY_DATAINDEX:17, //的移动到某一个数据起始位置
|
|
6931
6931
|
|
|
6932
6932
|
OP_MOVE_CORSSCURSOR:18, //移动十字光标 { Step, Start:{ Date:, Time: } }
|
|
6933
|
+
|
|
6934
|
+
OP_CORSSCURSOR_PAGE_START:19, //当前屏第1条数据
|
|
6935
|
+
OP_CORSSCURSOR_PAGE_END:20, //当前屏最后1条数据
|
|
6936
|
+
|
|
6937
|
+
OP_CORSSCURSOR_DATA_START:21, //所有数据的第1条数据
|
|
6938
|
+
OP_CORSSCURSOR_DATA_END:22, //所有数据的最后1条数据
|
|
6933
6939
|
}
|
|
6934
6940
|
|
|
6935
6941
|
var JSCHART_DRAG_ID=
|
|
@@ -11879,6 +11885,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11879
11885
|
}
|
|
11880
11886
|
break;
|
|
11881
11887
|
case 13: //回车
|
|
11888
|
+
case 35: //END
|
|
11889
|
+
case 36: //HOME
|
|
11882
11890
|
if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
|
|
11883
11891
|
break;
|
|
11884
11892
|
default:
|
|
@@ -84199,6 +84207,80 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84199
84207
|
return true;
|
|
84200
84208
|
}
|
|
84201
84209
|
}
|
|
84210
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
|
|
84211
|
+
{
|
|
84212
|
+
var kData=this.GetKData();
|
|
84213
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84214
|
+
var startIndex=kData.DataOffset;
|
|
84215
|
+
var kItem=kData.Data[startIndex];
|
|
84216
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84217
|
+
return true;
|
|
84218
|
+
}
|
|
84219
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
|
|
84220
|
+
{
|
|
84221
|
+
var kData=this.GetKData();
|
|
84222
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84223
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
84224
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
84225
|
+
var endIndex=kData.DataOffset+showCount-1;
|
|
84226
|
+
if (endIndex>=kData.Data.length) endIndex=kData.Data.length-1;
|
|
84227
|
+
var kItem=kData.Data[endIndex];
|
|
84228
|
+
var index=endIndex-kData.DataOffset;
|
|
84229
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84230
|
+
return true;
|
|
84231
|
+
}
|
|
84232
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START)
|
|
84233
|
+
{
|
|
84234
|
+
var kData=this.GetKData();
|
|
84235
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84236
|
+
var kItem=kData.Data[0];
|
|
84237
|
+
|
|
84238
|
+
if (kData.DataOffset!=0)
|
|
84239
|
+
{
|
|
84240
|
+
kData.DataOffset=0
|
|
84241
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
84242
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
84243
|
+
this.ResetFrameXSplit();
|
|
84244
|
+
this.Frame.SetSizeChage(true);
|
|
84245
|
+
this.Draw();
|
|
84246
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84247
|
+
}
|
|
84248
|
+
else
|
|
84249
|
+
{
|
|
84250
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84251
|
+
}
|
|
84252
|
+
|
|
84253
|
+
return true;
|
|
84254
|
+
}
|
|
84255
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END)
|
|
84256
|
+
{
|
|
84257
|
+
var kData=this.GetKData();
|
|
84258
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84259
|
+
|
|
84260
|
+
var kItem=kData.Data[kData.Data.length-1];
|
|
84261
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
84262
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
84263
|
+
var dataOffset=kData.Data.length-showCount;
|
|
84264
|
+
|
|
84265
|
+
if (kData.DataOffset<dataOffset)
|
|
84266
|
+
{
|
|
84267
|
+
kData.DataOffset=dataOffset;
|
|
84268
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
84269
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
84270
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
84271
|
+
this.ResetFrameXSplit();
|
|
84272
|
+
this.Frame.SetSizeChage(true);
|
|
84273
|
+
this.Draw();
|
|
84274
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84275
|
+
}
|
|
84276
|
+
else
|
|
84277
|
+
{
|
|
84278
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
84279
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84280
|
+
}
|
|
84281
|
+
|
|
84282
|
+
return true;
|
|
84283
|
+
}
|
|
84202
84284
|
}
|
|
84203
84285
|
|
|
84204
84286
|
|
|
@@ -84559,6 +84641,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84559
84641
|
//Alt+W 区间统计
|
|
84560
84642
|
//Alt+数字 切换多个窗口
|
|
84561
84643
|
//Ctrl+I
|
|
84644
|
+
//HOME / END 当前屏 第1条 最后一条
|
|
84645
|
+
//Ctrl+HOME / Ctrl+END 第1条 最后一条
|
|
84562
84646
|
this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
|
|
84563
84647
|
{
|
|
84564
84648
|
if (keyID==37 && e.ctrlKey) //Ctrl+Left
|
|
@@ -84595,6 +84679,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84595
84679
|
{
|
|
84596
84680
|
this.OnEnterKeyDown();
|
|
84597
84681
|
}
|
|
84682
|
+
else if (keyID==36) //HOME 第1条
|
|
84683
|
+
{
|
|
84684
|
+
var option=null;
|
|
84685
|
+
if (e.ctrlKey)
|
|
84686
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START }; //所有数据的第1条数据
|
|
84687
|
+
else
|
|
84688
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
|
|
84689
|
+
|
|
84690
|
+
if (option) this.ChartOperator(option);
|
|
84691
|
+
}
|
|
84692
|
+
else if (keyID==35) //END 最后一条
|
|
84693
|
+
{
|
|
84694
|
+
var option=null;
|
|
84695
|
+
if (e.ctrlKey)
|
|
84696
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END }; //所有数据的最后1条数据
|
|
84697
|
+
else
|
|
84698
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
|
|
84699
|
+
|
|
84700
|
+
if (option) this.ChartOperator(option);
|
|
84701
|
+
}
|
|
84598
84702
|
else
|
|
84599
84703
|
{
|
|
84600
84704
|
return false;
|
|
@@ -136583,7 +136687,7 @@ function ChartDealList()
|
|
|
136583
136687
|
if ( this.SelectedStyle==1)
|
|
136584
136688
|
{
|
|
136585
136689
|
this.Canvas.fillStyle=this.SelectedConfig.BGColor;
|
|
136586
|
-
this.Canvas.fillRect(rtRow.Left,rtRow.Top, rtRow.Width, rtRow.Height);
|
|
136690
|
+
this.Canvas.fillRect(rtRow.Left+1,rtRow.Top+1, rtRow.Width-2, rtRow.Height-2);
|
|
136587
136691
|
}
|
|
136588
136692
|
|
|
136589
136693
|
return true;
|
|
@@ -150093,7 +150197,7 @@ function ScrollBarBGChart()
|
|
|
150093
150197
|
|
|
150094
150198
|
|
|
150095
150199
|
|
|
150096
|
-
var HQCHART_VERSION="1.1.
|
|
150200
|
+
var HQCHART_VERSION="1.1.14852";
|
|
150097
150201
|
|
|
150098
150202
|
function PrintHQChartVersion()
|
|
150099
150203
|
{
|
|
@@ -6974,6 +6974,12 @@ var JSCHART_OPERATOR_ID=
|
|
|
6974
6974
|
OP_GOTO_BY_DATAINDEX:17, //的移动到某一个数据起始位置
|
|
6975
6975
|
|
|
6976
6976
|
OP_MOVE_CORSSCURSOR:18, //移动十字光标 { Step, Start:{ Date:, Time: } }
|
|
6977
|
+
|
|
6978
|
+
OP_CORSSCURSOR_PAGE_START:19, //当前屏第1条数据
|
|
6979
|
+
OP_CORSSCURSOR_PAGE_END:20, //当前屏最后1条数据
|
|
6980
|
+
|
|
6981
|
+
OP_CORSSCURSOR_DATA_START:21, //所有数据的第1条数据
|
|
6982
|
+
OP_CORSSCURSOR_DATA_END:22, //所有数据的最后1条数据
|
|
6977
6983
|
}
|
|
6978
6984
|
|
|
6979
6985
|
var JSCHART_DRAG_ID=
|
|
@@ -11923,6 +11929,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11923
11929
|
}
|
|
11924
11930
|
break;
|
|
11925
11931
|
case 13: //回车
|
|
11932
|
+
case 35: //END
|
|
11933
|
+
case 36: //HOME
|
|
11926
11934
|
if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
|
|
11927
11935
|
break;
|
|
11928
11936
|
default:
|
|
@@ -84243,6 +84251,80 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84243
84251
|
return true;
|
|
84244
84252
|
}
|
|
84245
84253
|
}
|
|
84254
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START) //当前屏第1条数据
|
|
84255
|
+
{
|
|
84256
|
+
var kData=this.GetKData();
|
|
84257
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84258
|
+
var startIndex=kData.DataOffset;
|
|
84259
|
+
var kItem=kData.Data[startIndex];
|
|
84260
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84261
|
+
return true;
|
|
84262
|
+
}
|
|
84263
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END) //当前屏最后1条数据
|
|
84264
|
+
{
|
|
84265
|
+
var kData=this.GetKData();
|
|
84266
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84267
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
84268
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
84269
|
+
var endIndex=kData.DataOffset+showCount-1;
|
|
84270
|
+
if (endIndex>=kData.Data.length) endIndex=kData.Data.length-1;
|
|
84271
|
+
var kItem=kData.Data[endIndex];
|
|
84272
|
+
var index=endIndex-kData.DataOffset;
|
|
84273
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84274
|
+
return true;
|
|
84275
|
+
}
|
|
84276
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START)
|
|
84277
|
+
{
|
|
84278
|
+
var kData=this.GetKData();
|
|
84279
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84280
|
+
var kItem=kData.Data[0];
|
|
84281
|
+
|
|
84282
|
+
if (kData.DataOffset!=0)
|
|
84283
|
+
{
|
|
84284
|
+
kData.DataOffset=0
|
|
84285
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
84286
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
84287
|
+
this.ResetFrameXSplit();
|
|
84288
|
+
this.Frame.SetSizeChage(true);
|
|
84289
|
+
this.Draw();
|
|
84290
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84291
|
+
}
|
|
84292
|
+
else
|
|
84293
|
+
{
|
|
84294
|
+
this.ChartOperator_Temp_SetChartCorssCursor(0, kItem);
|
|
84295
|
+
}
|
|
84296
|
+
|
|
84297
|
+
return true;
|
|
84298
|
+
}
|
|
84299
|
+
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END)
|
|
84300
|
+
{
|
|
84301
|
+
var kData=this.GetKData();
|
|
84302
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false; //数据还没有到达
|
|
84303
|
+
|
|
84304
|
+
var kItem=kData.Data[kData.Data.length-1];
|
|
84305
|
+
if (!this.Frame || !this.Frame.SubFrame[0] || !this.Frame.SubFrame[0].Frame) return false;
|
|
84306
|
+
var showCount=this.Frame.SubFrame[0].Frame.XPointCount; //一屏显示个数
|
|
84307
|
+
var dataOffset=kData.Data.length-showCount;
|
|
84308
|
+
|
|
84309
|
+
if (kData.DataOffset<dataOffset)
|
|
84310
|
+
{
|
|
84311
|
+
kData.DataOffset=dataOffset;
|
|
84312
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
84313
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
84314
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
84315
|
+
this.ResetFrameXSplit();
|
|
84316
|
+
this.Frame.SetSizeChage(true);
|
|
84317
|
+
this.Draw();
|
|
84318
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84319
|
+
}
|
|
84320
|
+
else
|
|
84321
|
+
{
|
|
84322
|
+
var index=kData.Data.length-kData.DataOffset-1;
|
|
84323
|
+
this.ChartOperator_Temp_SetChartCorssCursor(index, kItem);
|
|
84324
|
+
}
|
|
84325
|
+
|
|
84326
|
+
return true;
|
|
84327
|
+
}
|
|
84246
84328
|
}
|
|
84247
84329
|
|
|
84248
84330
|
|
|
@@ -84603,6 +84685,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84603
84685
|
//Alt+W 区间统计
|
|
84604
84686
|
//Alt+数字 切换多个窗口
|
|
84605
84687
|
//Ctrl+I
|
|
84688
|
+
//HOME / END 当前屏 第1条 最后一条
|
|
84689
|
+
//Ctrl+HOME / Ctrl+END 第1条 最后一条
|
|
84606
84690
|
this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
|
|
84607
84691
|
{
|
|
84608
84692
|
if (keyID==37 && e.ctrlKey) //Ctrl+Left
|
|
@@ -84639,6 +84723,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
84639
84723
|
{
|
|
84640
84724
|
this.OnEnterKeyDown();
|
|
84641
84725
|
}
|
|
84726
|
+
else if (keyID==36) //HOME 第1条
|
|
84727
|
+
{
|
|
84728
|
+
var option=null;
|
|
84729
|
+
if (e.ctrlKey)
|
|
84730
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_START }; //所有数据的第1条数据
|
|
84731
|
+
else
|
|
84732
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_START };
|
|
84733
|
+
|
|
84734
|
+
if (option) this.ChartOperator(option);
|
|
84735
|
+
}
|
|
84736
|
+
else if (keyID==35) //END 最后一条
|
|
84737
|
+
{
|
|
84738
|
+
var option=null;
|
|
84739
|
+
if (e.ctrlKey)
|
|
84740
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_DATA_END }; //所有数据的最后1条数据
|
|
84741
|
+
else
|
|
84742
|
+
option={ ID:JSCHART_OPERATOR_ID.OP_CORSSCURSOR_PAGE_END };
|
|
84743
|
+
|
|
84744
|
+
if (option) this.ChartOperator(option);
|
|
84745
|
+
}
|
|
84642
84746
|
else
|
|
84643
84747
|
{
|
|
84644
84748
|
return false;
|
|
@@ -136627,7 +136731,7 @@ function ChartDealList()
|
|
|
136627
136731
|
if ( this.SelectedStyle==1)
|
|
136628
136732
|
{
|
|
136629
136733
|
this.Canvas.fillStyle=this.SelectedConfig.BGColor;
|
|
136630
|
-
this.Canvas.fillRect(rtRow.Left,rtRow.Top, rtRow.Width, rtRow.Height);
|
|
136734
|
+
this.Canvas.fillRect(rtRow.Left+1,rtRow.Top+1, rtRow.Width-2, rtRow.Height-2);
|
|
136631
136735
|
}
|
|
136632
136736
|
|
|
136633
136737
|
return true;
|
|
@@ -161133,7 +161237,7 @@ function HQChartScriptWorker()
|
|
|
161133
161237
|
|
|
161134
161238
|
|
|
161135
161239
|
|
|
161136
|
-
var HQCHART_VERSION="1.1.
|
|
161240
|
+
var HQCHART_VERSION="1.1.14852";
|
|
161137
161241
|
|
|
161138
161242
|
function PrintHQChartVersion()
|
|
161139
161243
|
{
|