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