hqchart 1.1.12505 → 1.1.12516
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.stock.vue.js +2 -2
- package/lib/umychart.vue.js +62 -37
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +60 -1
- package/src/jscommon/umychart.js +155 -73
- package/src/jscommon/umychart.stock.js +2 -2
- package/src/jscommon/umychart.testdata/300439.sz.5day.minute.js +12172 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +216 -75
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.stock.vue.js +2 -2
- package/src/jscommon/umychart.vue/umychart.vue.js +216 -75
- package/src/jscommon/umychart.wechat/umychart.complier.wechat.js +3 -2
- package/src/jscommon/umychart.wechat/umychart.data.wechat.js +1 -0
- package/src/jscommon/umychart.wechat/umychart.index.wechat.js +6 -0
- package/src/jscommon/umychart.wechat/umychart.version.wechat.js +1 -1
|
@@ -46,8 +46,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
46
46
|
///////////////////////////////////////////////////////////////////////////////////////
|
|
47
47
|
|
|
48
48
|
function JSStockResource() {
|
|
49
|
-
this.Domain = "
|
|
50
|
-
this.CacheDomain = "
|
|
49
|
+
this.Domain = "http://127.0.0.1:8886"; //API域名
|
|
50
|
+
this.CacheDomain = "http://127.0.0.1:8886"; //缓存域名
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
var g_JSStockResource = new JSStockResource();
|
package/lib/umychart.vue.js
CHANGED
|
@@ -1425,7 +1425,7 @@ this.CreateDepthChartContainer=function(option){var chart=null;chart=new DepthCh
|
|
|
1425
1425
|
}if(item.IsShowXLine==false)chart.Frame.IsShowXLine=item.IsShowXLine;if(item.IsShowYLine==false)chart.Frame.IsShowYLine=item.IsShowYLine;if(IFrameSplitOperator.IsNumber(item.XSplitCount))chart.Frame.XSplitOperator.SplitCount=item.XSplitCount;//X轴刻度个数 半边的
|
|
1426
1426
|
}return chart;};//根据option内容绘制图形
|
|
1427
1427
|
this.SetOption=function(option){//toolbar按钮风格
|
|
1428
|
-
if(IFrameSplitOperator.IsNumber(option.ToolbarButtonStyle))g_JSChartResource.ToolbarButtonStyle=option.ToolbarButtonStyle;var chart=null;switch(option.Type){case"历史K线图":case'历史K线图横屏':chart=this.CreateKLineChartContainer(option);break;case"自定义指数历史K线图":chart=this.CreateCustomKLineChartContainer(option);break;case"分钟走势图":case"分钟走势图横屏":chart=this.CreateMinuteChartContainer(option);break;case"迷你分钟走势图":chart=this.CreateMinMinuteChartContainer(option);break;case"历史分钟走势图":chart=this.CreateHistoryMinuteChartContainer(option);break;case'K线训练':case'K线训练横屏':case"简单K线训练":case"简单K线训练横屏":chart=this.CreateKLineTrainChartContainer(option);break;case"深度图":chart=this.CreateDepthChartContainer(option);break;case"简单图形":return this.CreateSimpleChart(option);case"饼图":case'雷达图':return this.CreatePieChart(option);case'地图':return this.CreateMapChart(option);default:return false;}if(!chart)return false;this.JSChartContainer=chart;if(option.OnCreatedCallback)option.OnCreatedCallback(chart);//是否自动更新
|
|
1428
|
+
if(IFrameSplitOperator.IsNumber(option.ToolbarButtonStyle))g_JSChartResource.ToolbarButtonStyle=option.ToolbarButtonStyle;var chart=null;switch(option.Type){case"历史K线图":case'历史K线图横屏':chart=this.CreateKLineChartContainer(option);break;case"自定义指数历史K线图":chart=this.CreateCustomKLineChartContainer(option);break;case"分钟走势图":case"分钟走势图横屏":chart=this.CreateMinuteChartContainer(option);break;case"迷你分钟走势图":chart=this.CreateMinMinuteChartContainer(option);break;case"历史分钟走势图":chart=this.CreateHistoryMinuteChartContainer(option);break;case'K线训练':case'K线训练横屏':case"简单K线训练":case"简单K线训练横屏":chart=this.CreateKLineTrainChartContainer(option);break;case"深度图":chart=this.CreateDepthChartContainer(option);break;case"简单图形":return this.CreateSimpleChart(option);case"饼图":case'雷达图':return this.CreatePieChart(option);case'地图':return this.CreateMapChart(option);default:return false;}if(!chart)return false;this.JSChartContainer=chart;if(option.DefaultCursor)chart.DefaultCursor=option.DefaultCursor;if(option.OnCreatedCallback)option.OnCreatedCallback(chart);//是否自动更新
|
|
1429
1429
|
if(option.IsAutoUpdate!=null)chart.IsAutoUpdate=option.IsAutoUpdate;if(option.AutoUpdateFrequency>0)chart.AutoUpdateFrequency=option.AutoUpdateFrequency;//注册事件
|
|
1430
1430
|
if(option.EventCallback){for(var i=0;i<option.EventCallback.length;++i){var item=option.EventCallback[i];chart.AddEventCallback(item);}}//设置股票代码
|
|
1431
1431
|
if(!option.Symbol){chart.DrawEmpty();this.JSChartContainer=chart;this.DivElement.JSChart=this;//div中保存一份
|
|
@@ -1654,6 +1654,7 @@ this.ChartCorssCursor;//十字光标
|
|
|
1654
1654
|
this.IsClickShowCorssCursor=false;//手势点击显示十字光标
|
|
1655
1655
|
this.ChartSplashPaint=null;//等待提示
|
|
1656
1656
|
this.LoadDataSplashTitle="数据加载中";//下载数据提示信息
|
|
1657
|
+
this.DefaultCursor="default";//crosshair , default 默认手型
|
|
1657
1658
|
//绘图缓存
|
|
1658
1659
|
this.CacheCanvas=null;this.CacheElement=null;if(cacheElement){this.CacheElement=cacheElement;this.CacheCanvas=cacheElement.getContext("2d");}if(OffscreenElement){this.Canvas=OffscreenElement.getContext("2d");this.OffscreenCanvasElement=OffscreenElement;this.ShowCanvas=uielement.getContext("2d");}else{if(JSChart.EnableCanvasWillReadFrequently===true){var contextAttr={willReadFrequently:true};this.Canvas=uielement.getContext("2d",contextAttr);//画布
|
|
1659
1660
|
}else{this.Canvas=uielement.getContext("2d");//画布
|
|
@@ -1730,10 +1731,15 @@ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);var titleChart=t
|
|
|
1730
1731
|
if(titleChart)titleChart.OnMouseMoveEvent=null;this.StartStopDisplayLatest();};this.IsMouseOnClient=function(x,y){var rect={Left:this.Frame.ChartBorder.GetLeft(),Top:this.Frame.ChartBorder.GetTop(),Width:this.Frame.ChartBorder.GetWidth(),Height:this.Frame.ChartBorder.GetHeight()};rect.Right=rect.Left+rect.Width;rect.Bottom=rect.Top+rect.Height;if(x>=rect.Left&&x<=rect.Right&&y>=rect.Top&&y<=rect.Bottom)return true;return false;};this.UIOnContextMenu=function(e){if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var x=e.clientX-this.UIElement.getBoundingClientRect().left;var y=e.clientY-this.UIElement.getBoundingClientRect().top;if(typeof this.OnRightMenu=='function')this.OnRightMenu(x,y,e);//右键菜单事件
|
|
1731
1732
|
return false;};this.UIOnDblClick=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;this.OnDoubleClick(x,y,e);};//是否在拖拽Y轴上
|
|
1732
1733
|
this.TryYDrag=function(x,y){if(!this.EnableYDrag)return null;if(!this.EnableYDrag.Left&&!this.EnableYDrag.Right)return null;if(!this.Frame||!this.Frame.PtInFrameY)return null;var dragY=this.Frame.PtInFrameY(x,y);if(!dragY||dragY.Index<0||dragY.IsOverlay==true)return null;if(dragY.Left&&this.EnableYDrag.Left&&this.Frame.IsEnableDragY(dragY.Index)){return dragY;}if(dragY.Right&&this.EnableYDrag.Right&&this.Frame.IsEnableDragY(dragY.Index)){return dragY;}return null;};//是否可以上下拖拽
|
|
1733
|
-
this.TryUpDownDrag=function(x,y){var windowIndex=this.Frame.PtInFrame(x,y);if(windowIndex<0)return null;var item=this.Frame.SubFrame[windowIndex];if(!item||!item.Frame)return null;var frame=item.Frame;if(!frame.YSplitOperator||!frame.YSplitOperator.FixedYMaxMin)return null;return{Index:windowIndex,X:x,Y:y};};this.TryRectSelectDrag=function(x,y){var paint=this.GetRectSelectPaint();if(!paint)return null;if(paint.GetPointCount()<=0)return null;var item=paint.PtInPaint(x,y);return{Item:item,X:x,Y:y};};this.TryClickCrossCursor=function(x,y,e){if(!this.ChartCorssCursor)return;var button=this.ChartCorssCursor.PtInButton(x,y);if(!button)return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_CROSSCURSOR_RIGHT);if(event&&event.Callback){var sendData={Button:button,e:e};event.Callback(event,sendData,this);}return true;};this.TryClickButton=function(x,y,e){var button=this.Frame.PtInButtons(x,y);if(button&&this.ClickFrameButton){this.ClickFrameButton(button,e);return true;}button=this.PtInExtendChartButtons(x,y);if(button&&this.ClickExtendChartButton){this.ClickExtendChartButton(button,e);return true;}button=this.PtInDrawPictureButtons(x,y);if(button&&this.ClickDrawPictureButton){this.ClickDrawPictureButton(button,e);return true;}button=this.PtInTitleButtons(x,y);if(button&&this.ClickTitleButton){this.ClickTitleButton(button,e);return true;}return false;};this.TryMouseMove_CustomChartDrag=function(sendData){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_DRAG_MOUSE_MOVE);if(!event||!event.Callback)return false;return event.Callback(event,sendData,this);};this.TryClick_CustomChartDrag=function(sendData){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_DRAG_MOUSE_DOWN);if(!event||!event.Callback)return false;sendData.ChartDrag=null;sendData.Cusrsor=null;event.Callback(event,sendData,this);this.CustomChartDrag=sendData.ChartDrag;
|
|
1734
|
+
this.TryUpDownDrag=function(x,y){var windowIndex=this.Frame.PtInFrame(x,y);if(windowIndex<0)return null;var item=this.Frame.SubFrame[windowIndex];if(!item||!item.Frame)return null;var frame=item.Frame;if(!frame.YSplitOperator||!frame.YSplitOperator.FixedYMaxMin)return null;return{Index:windowIndex,X:x,Y:y};};this.TryRectSelectDrag=function(x,y){var paint=this.GetRectSelectPaint();if(!paint)return null;if(paint.GetPointCount()<=0)return null;var item=paint.PtInPaint(x,y);return{Item:item,X:x,Y:y};};this.TryClickCrossCursor=function(x,y,e){if(!this.ChartCorssCursor)return;var button=this.ChartCorssCursor.PtInButton(x,y);if(!button)return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_CROSSCURSOR_RIGHT);if(event&&event.Callback){var sendData={Button:button,e:e};event.Callback(event,sendData,this);}return true;};this.TryClickButton=function(x,y,e){var button=this.Frame.PtInButtons(x,y);if(button&&this.ClickFrameButton){this.ClickFrameButton(button,e);return true;}button=this.PtInExtendChartButtons(x,y);if(button&&this.ClickExtendChartButton){this.ClickExtendChartButton(button,e);return true;}button=this.PtInDrawPictureButtons(x,y);if(button&&this.ClickDrawPictureButton){this.ClickDrawPictureButton(button,e);return true;}button=this.PtInTitleButtons(x,y);if(button&&this.ClickTitleButton){this.ClickTitleButton(button,e);return true;}return false;};this.TryMouseMove_CustomChartDrag=function(sendData){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_DRAG_MOUSE_MOVE);if(!event||!event.Callback)return false;return event.Callback(event,sendData,this);};this.TryClick_CustomChartDrag=function(sendData){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_DRAG_MOUSE_DOWN);if(!event||!event.Callback)return false;sendData.ChartDrag=null;sendData.Cusrsor=null;event.Callback(event,sendData,this);this.CustomChartDrag=sendData.ChartDrag;this.SetCursor(sendData);};this.TryDragMove_CustomChartDrag=function(sendData){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_DRAG_DOC_MOUSE_MOVE);if(!event||!event.Callback)return;var e=sendData.e;var drag=sendData.Drag;if(Math.abs(drag.LastMove.Y-e.clientY)<2&&Math.abs(drag.LastMove.X-e.clientX)<2)return;if(event.Callback(event,sendData,this)){drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}};this.TryMouseUp_CustomChartDrag=function(sendData){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_DRAG_DOC_MOUSE_UP);if(!event||!event.Callback)return;event.Callback(event,sendData,this);};this.UIOnMouseDown=function(e){var _this7=this;this.MoveOnChartDrawPicture=null;if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;this.ClickDownPoint={X:e.clientX,Y:e.clientY};this.IsOnTouch=true;this.BorderDrag=null;this.YDrag=null;this.UpDownDrag=null;this.RectSelectDrag=null;this.IndexChartDrag=null;this.CustomChartDrag=null;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;if(this.TryClickButton(x,y,e)){return;}if(this.TryClickCrossCursor(x,y,e)){return;}if(this.TryClickChartTooltipData&&this.TryClickChartTooltipData(x,y,e))//预留给外部点击图标什么用的
|
|
1734
1735
|
{return;}if(this.TryClickLock){//JSConsole.Chart.Log('[uielement.onmousedown] left, top ',e.clientX, e.clientY, this.getBoundingClientRect().left,this.getBoundingClientRect().top);
|
|
1735
|
-
if(this.TryClickLock(x,y))return;}this.HideSelectRect();if(this.SelectRectRightMenu)this.SelectRectRightMenu.Hide();if(this.ChartPictureMenu)this.ChartPictureMenu.Hide();var paint=this.GetRectSelectPaint();if(paint&&paint.GetPointCount()>0){var item=paint.PtInPaint(x,y);if(item){if(item.Type==4){this.UIElement.style.cursor="pointer";
|
|
1736
|
-
|
|
1736
|
+
if(this.TryClickLock(x,y))return;}this.HideSelectRect();if(this.SelectRectRightMenu)this.SelectRectRightMenu.Hide();if(this.ChartPictureMenu)this.ChartPictureMenu.Hide();var paint=this.GetRectSelectPaint();if(paint&&paint.GetPointCount()>0){var item=paint.PtInPaint(x,y);if(item){if(item.Type==4){//this.UIElement.style.cursor="pointer";
|
|
1737
|
+
this.SetCursor({Cursor:"pointer"});var obj={X:e.clientX};if(this.GetXDataIndex(obj)){this.RectSelectDrag={DataIndex:obj.DataIndex,Type:item.Type,X:e.clientX};JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] drag sub rect select ",obj);}}else{//this.UIElement.style.cursor="ew-resize";
|
|
1738
|
+
this.SetCursor({Cursor:"ew-resize"});this.RectSelectDrag={Index:item.PointIndex,Type:item.Type};JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] drag rect select ",item);}}}if(!this.RectSelectDrag&&this.ClearRectSelect(false))this.Draw();if(this.EnableBorderDrag&&this.Frame){var dragBorder=this.Frame.PtInFrameBorder(x,y);if(dragBorder&&dragBorder.Index>=0){//this.UIElement.style.cursor="n-resize";
|
|
1739
|
+
this.SetCursor({Cursor:"n-resize"});this.BorderDrag={Index:dragBorder.Index};JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] DragBorder ",dragBorder);}}//拖拽Y轴缩放
|
|
1740
|
+
if(!this.BorderDrag){var dragY=this.TryYDrag(x,y);if(dragY){//this.UIElement.style.cursor=dragY.Position==0 ? "n-resize":"row-resize";
|
|
1741
|
+
var cursor=dragY.Position==0?"n-resize":"row-resize";this.SetCursor({Cursor:cursor});this.YDrag=dragY;JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] dragY ",dragY);}else{var dragUpDown=this.TryUpDownDrag(x,y);if(dragUpDown){//this.UIElement.style.cursor="pointer";
|
|
1742
|
+
this.SetCursor({Cursor:"pointer"});this.UpDownDrag=dragUpDown;JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] dragUpDown ",dragUpDown);}}}var sendData={X:x,Y:y,e:e};if(this.TryClick_CustomChartDrag(sendData)){}if(this.DragMode==0)return;var drag={"Click":{},"LastMove":{},//最后移动的位置
|
|
1737
1743
|
CurrentMove:{}//当前的移动
|
|
1738
1744
|
};drag.Click.X=e.clientX;drag.Click.Y=e.clientY;drag.Click.IsInFrameBottom=this.Frame.PtInFrameBottom(x,y);//是否点击在X轴上
|
|
1739
1745
|
drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;this.MouseDrag=drag;var drawPictureActive=this.GetActiveDrawPicture();//上一次选中的
|
|
@@ -1753,11 +1759,16 @@ if(this.ChartSplashPaint&&this.IsEnableSplash==true)return;var drag=this.MouseDr
|
|
|
1753
1759
|
JSConsole.Chart.Log("[JSChartContainer::DocOnMouseMove] YDrag ",this.YDrag,yMove);this.OnZoomUpDownFrameY(this.YDrag,yMove);drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.IndexChartDrag&&this.IndexChartDrag.SelectedChart){if(Math.abs(drag.LastMove.Y-e.clientY)<2&&Math.abs(drag.LastMove.X-e.clientX)<2)return;var chartMove=this.GetExtendChartByClassName("DragMovePaint");if(chartMove&&chartMove.Chart){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;chartMove.Chart.Point={X:x,Y:y};chartMove.Chart.IsShow=true;chartMove.Chart.Info=this.IndexChartDrag.Info;this.DrawDynamicInfo();}this.IndexChartDrag.LastMove.X=x;this.IndexChartDrag.LastMove.Y=y;drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.CustomChartDrag){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var sendData={X:x,Y:y,e:e,ChartDrag:this.CustomChartDrag,Drag:drag};this.TryDragMove_CustomChartDrag(sendData);}else if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==1||drawPicture.Status==2){if(Math.abs(drag.LastMove.X-e.clientX)<5&&Math.abs(drag.LastMove.Y-e.clientY)<5)return;if(this.SetChartDrawPictureSecondPoint(e.clientX,e.clientY)){this.DrawDynamicInfo();}}else if(drawPicture.Status==3){if(this.SetChartDrawPictureThirdPoint(e.clientX,e.clientY)){this.DrawDynamicInfo();}}else if(drawPicture.Status==20)//画图工具移动
|
|
1754
1760
|
{if(Math.abs(drag.LastMove.X-e.clientX)<5&&Math.abs(drag.LastMove.Y-e.clientY)<1)return;if(this.SelectChartDrawPicture){if(this.SelectChartDrawPicture.EnableCtrlMove){if(!e.ctrlKey)return;}}if(this.SelectChartDrawPicture&&this.SelectChartDrawPicture.DragInfo)this.SelectChartDrawPicture.DragInfo.Move={X:e.clientX,Y:e.client};if(this.MoveChartDrawPicture(e.clientX-drag.LastMove.X,e.clientY-drag.LastMove.Y,false,drag)){this.DrawDynamicInfo();}}drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}else if(this.DragMode==1||isDragSelectRect||isDragSubSelectRect)//数据上下左右拖拽
|
|
1755
1761
|
{this.OnDragMode_One({X:moveSetp,Y:moveSetpY},e);}else if(this.DragMode==2)//区间选择
|
|
1756
|
-
{var yMoveSetp=Math.abs(drag.LastMove.Y-e.clientY);if(moveSetp<5&&yMoveSetp<5)return
|
|
1757
|
-
var
|
|
1758
|
-
this.
|
|
1762
|
+
{var yMoveSetp=Math.abs(drag.LastMove.Y-e.clientY);if(moveSetp<5&&yMoveSetp<5)return;//this.UIElement.style.cursor="default";
|
|
1763
|
+
this.SetCursor({Cursor:"default"});var x=drag.Click.X-uielement.getBoundingClientRect().left;var y=drag.Click.Y-uielement.getBoundingClientRect().top;var x2=e.clientX-uielement.getBoundingClientRect().left;var y2=e.clientY-uielement.getBoundingClientRect().top;this.ShowSelectRect(x,y,x2,y2);drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}};this.OnDragMode_One=function(moveData,e){var moveSetp=moveData.X;var moveSetpY=moveData.Y;var drag=this.MouseDrag;if(moveSetp<5&&moveSetpY<5)return;var bNeedDraw=false;var bUpDownY=false;if(moveSetpY>=5){if(this.UpDownDrag&&this.UpDownDrag.Index>=0){var yMove=e.clientY-drag.LastMove.Y;JSConsole.Chart.Log("[JSChartContainer::OnDragMode_One] UpDownDrag ",this.UpDownDrag,yMove);//this.UIElement.style.cursor="pointer";
|
|
1764
|
+
this.SetCursor({Cursor:"pointer"});if(this.OnUpDonwFrameY(this.UpDownDrag,yMove)){bNeedDraw=true;bUpDownY=true;}drag.LastMove.Y=e.clientY;}}if(moveSetp>=5){if(this.RectSelectDrag){if(this.RectSelectDrag.Index>=0){var obj={X:e.clientX,Y:e.clientY,PointIndex:this.RectSelectDrag.Index,Name:"MoveRectSelectLine"};if(this.MoveRectSelectPoint(obj))bNeedDraw=true;}else if(this.RectSelectDrag.Type===4){var obj={X:e.clientX};if(!this.GetXDataIndex(obj))return;if(obj.DataIndex==this.RectSelectDrag.DataIndex)return;var step=obj.DataIndex-this.RectSelectDrag.DataIndex;var isLeft=true;if(step>0)isLeft=false;if(!this.MoveSubRectSelect({Step:Math.abs(step),IsLeft:isLeft,X:e.clientX,Y:e.clientY}))return;this.RectSelectDrag.DataIndex=obj.DataIndex;this.RectSelectDrag.X=e.clientX;bNeedDraw=true;}}else{var isLeft=true;if(drag.LastMove.X<e.clientX)isLeft=false;//右移数据
|
|
1765
|
+
var cursorStatus="pointer";if(drag.Click.IsInFrameBottom)cursorStatus="ew-resize";var oneStepWidth=this.GetMoveOneStepWidth();if(moveSetp<oneStepWidth){//this.UIElement.style.cursor=cursorStatus;
|
|
1766
|
+
this.SetCursor({Cursor:cursorStatus});if(bNeedDraw)this.Draw();return;}else{if(drag.Click&&drag.Click.IsInFrameBottom){if(this.XCoordinateZoom(moveSetp,isLeft)){this.UpdataDataoffset();this.UpdateFrameMaxMin();this.ResetFrameXYSplit();bNeedDraw=true;}}else if(this.DataMove(moveSetp,isLeft)){this.UpdataDataoffset();//this.UpdatePointByCursorIndex(); //推拽数据的时候不需要把鼠标位置更新到K线上
|
|
1767
|
+
this.UpdateFrameMaxMin();this.ResetFrameXYSplit();bNeedDraw=true;}else if(!bUpDownY){if(this.DragDownloadData)this.DragDownloadData();}}//this.UIElement.style.cursor=cursorStatus;
|
|
1768
|
+
this.SetCursor({Cursor:cursorStatus});}drag.LastMove.X=e.clientX;}if(bNeedDraw){this.Draw();this.OnKLinePageChange("datamove");}};this.GetXDataIndex=function(obj){if(!this.ChartPaint[0]||!this.ChartPaint[0].Data)return false;var kData=this.ChartPaint[0].Data;if(!this.Frame.SubFrame[0])return false;var subFrame=this.Frame.SubFrame[0].Frame;if(!subFrame)false;var pixelTatio=GetDevicePixelRatio();var x=(obj.X-uielement.getBoundingClientRect().left)*pixelTatio;var index=subFrame.GetXData(x);index=parseInt(index.toFixed(0));var dataIndex=index+kData.DataOffset;if(dataIndex>=kData.Data.length)dataIndex=kData.Data.length-1;var item=kData.Data[dataIndex];obj.DataIndex=dataIndex;obj.Item=item;//JSConsole.Chart.Log("[JSChartContainer::GetXDataIndex] point, item", obj.PointIndex, item);
|
|
1759
1769
|
return true;};this.DocOnMouseUp=function(e){//清空事件
|
|
1760
|
-
document.onmousemove=null;document.onmouseup=null;var IsMinuteChart=this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer"?true:false;var isDragSelectRect=this.RectSelectDrag&&this.RectSelectDrag.Index>=0;var isDragSubSelectRect=this.RectSelectDrag&&this.RectSelectDrag.Type==4;var bClearDrawPicture=true;if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==2||drawPicture.Status==1||drawPicture.Status==3){drawPicture.PointStatus=drawPicture.Status;if(this.FinishChartDrawPicturePoint())this.DrawDynamicInfo();else bClearDrawPicture=false;}else if(drawPicture.Status==20){if(this.FinishMoveChartDrawPicture())this.DrawDynamicInfo();}}else if(this.IndexChartDrag&&this.IndexChartDrag.SelectedChart){var chartMove=this.GetExtendChartByClassName("DragMovePaint");if(chartMove&&chartMove.Chart)chartMove.Chart.Clear();if(!this.OnDragChart(this.IndexChartDrag))this.DrawDynamicInfo()
|
|
1770
|
+
document.onmousemove=null;document.onmouseup=null;var IsMinuteChart=this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer"?true:false;var isDragSelectRect=this.RectSelectDrag&&this.RectSelectDrag.Index>=0;var isDragSubSelectRect=this.RectSelectDrag&&this.RectSelectDrag.Type==4;var bClearDrawPicture=true;if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==2||drawPicture.Status==1||drawPicture.Status==3){drawPicture.PointStatus=drawPicture.Status;if(this.FinishChartDrawPicturePoint())this.DrawDynamicInfo();else bClearDrawPicture=false;}else if(drawPicture.Status==20){if(this.FinishMoveChartDrawPicture())this.DrawDynamicInfo();}}else if(this.IndexChartDrag&&this.IndexChartDrag.SelectedChart){var chartMove=this.GetExtendChartByClassName("DragMovePaint");if(chartMove&&chartMove.Chart)chartMove.Chart.Clear();if(!this.OnDragChart(this.IndexChartDrag))this.DrawDynamicInfo();//this.UIElement.style.cursor="default";
|
|
1771
|
+
this.SetCursor({Cursor:"default"});}else if(this.CustomChartDrag){var sendData={e:e,ChartDrag:this.CustomChartDrag,Drag:this.MouseDrag};this.TryMouseUp_CustomChartDrag(sendData);}else if(isDragSelectRect)//区间选择拖动范围
|
|
1761
1772
|
{if(this.OnDragSelectRectMouseUp)this.OnDragSelectRectMouseUp(e);}else if(isDragSubSelectRect){if(this.OnDragSubSelectRectMouseUp)this.OnDragSubSelectRectMouseUp(e);}else if(IsMinuteChart){if(this.OnMinuteSelectRectMouseUp)this.OnMinuteSelectRectMouseUp(e);}else if(this.DragMode==2)//区间选择
|
|
1762
1773
|
{var drag=this.MouseDrag;drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;var selectData=new SelectRectData();var pixelTatio=GetDevicePixelRatio();//区间起始位置 结束位子
|
|
1763
1774
|
selectData.XStart=(drag.Click.X-uielement.getBoundingClientRect().left)*pixelTatio;selectData.YStart=(drag.Click.Y-uielement.getBoundingClientRect().top)*pixelTatio;selectData.XEnd=(drag.LastMove.X-uielement.getBoundingClientRect().left)*pixelTatio;selectData.YEnd=(drag.LastMove.Y-uielement.getBoundingClientRect().top)*pixelTatio;selectData.JSChartContainer=this;selectData.Stock={Symbol:this.Symbol,Name:this.Name};if(!this.BorderDrag&&this.GetSelectRectData(selectData)){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SELECT_RECT);var paint=this.GetRectSelectPaint();var isShowMenu=true;if(event&&event.Callback){var data=(0,_defineProperty3.default)({X:drag.LastMove.X-uielement.getBoundingClientRect().left,Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,SelectData:selectData,//区间选择的数据
|
|
@@ -1766,7 +1777,8 @@ IsShowMenu:true,e:e},'e',e);event.Callback(event,data,this);isShowMenu=data.IsSh
|
|
|
1766
1777
|
{this.HideSelectRect();this.UpdateSelectRect(selectData.Start,selectData.End);}else{if(isShowMenu&&this.SelectRectRightMenu){e.data={Chart:this,X:drag.LastMove.X-uielement.getBoundingClientRect().left,Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,SelectData:selectData,//区间选择的数据
|
|
1767
1778
|
RectSelectPaint:paint//区间选择背景
|
|
1768
1779
|
};this.SelectRectRightMenu.DoModal(e);}}}else{this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_CLICKUP_CHART_PAINT,this.ClickDownPoint,e);}}else{this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_CLICKUP_CHART_PAINT,this.ClickDownPoint,e);this.ClickEvent(e);}//清空数据
|
|
1769
|
-
JSConsole.Chart.Log('[KLineChartContainer::document.onmouseup]',e);if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.DragInfo=null
|
|
1780
|
+
JSConsole.Chart.Log('[KLineChartContainer::document.onmouseup]',e);if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.DragInfo=null;//this.UIElement.style.cursor="default";
|
|
1781
|
+
this.SetCursor({Cursor:"default"});this.MouseDrag=null;this.ClickDownPoint=null;this.IsOnTouch=false;if(this.BorderDrag&&this.BorderDrag.Index>=0)this.Frame.SaveSubFrameHeightRate();//拖拽指标窗口高度以后保存
|
|
1770
1782
|
this.BorderDrag=null;this.YDrag=null;this.UpDownDrag=null;this.RectSelectDrag=null;this.IndexChartDrag=null;this.CustomChartDrag=null;if(bClearDrawPicture===true)this.CurrentChartDrawPicture=null;};this.UIOnMounseOut=function(e){JSConsole.Chart.Log('[KLineChartContainer::UIOnMounseOut]',e);this.UIOnMouseMove(e);};this.UIOnMouseleave=function(e){JSConsole.Chart.Log('[KLineChartContainer::UIOnMouseleave]',e);//this.UIOnMouseMove(e);
|
|
1771
1783
|
};this.OnDragChart=function(drag){if(!drag)return false;var info=drag.Info;var lastMove=drag.LastMove;var startFrameID=info.FrameID;var endFrameID=this.Frame.PtInFrame(lastMove.X,lastMove.Y);if(endFrameID<0){if(endFrameID==-3)//底部 移动到新的窗口
|
|
1772
1784
|
return this.MoveIndexToNewWindow({WindowIndex:startFrameID,IndexID:info.IndexID},{Operator:0});return false;}if(startFrameID==endFrameID)return false;//移动指标
|
|
@@ -1872,8 +1884,14 @@ this.CursorIndex=this.Frame.GetXData(x);if(this.EnableBorderDrag&&this.Frame&&!t
|
|
|
1872
1884
|
var paint=this.GetRectSelectPaint();if(paint&&paint.GetPointCount()>0){var item=paint.PtInPaint(x,y);if(item){if(item.Type==4)mouseStatus={Cursor:"pointer",Name:"DragRectSelect"};//子区域选中
|
|
1873
1885
|
else mouseStatus={Cursor:"ew-resize",Name:"DragRectSelect"};JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] drag rect select ",item);}}var sendData={MouseStatus:null,X:x,Y:y,FrameID:frameID,e:e};if(this.TryMouseMove_CustomChartDrag(sendData)){if(sendData.MouseStatus)mouseStatus=sendData.MouseStatus;}var bDrawPicture=false;//是否正在画图
|
|
1874
1886
|
if(this.CurrentChartDrawPicture){var index=this.Frame.PtInChartFrame(x,y);if(this.CurrentChartDrawPicture.Status!=20){var bDrawValid=false;//是否在有效绘图区域里面
|
|
1875
|
-
if(IFrameSplitOperator.IsNumber(this.CurrentChartDrawPicture.LimitFrameID)){if(index>=0&&index==this.CurrentChartDrawPicture.LimitFrameID)bDrawValid=true;}else{if(index>=0)bDrawValid=true;}mouseStatus={Cursor:bDrawValid?"crosshair":"not-allowed",Name:"CurrentChartDrawPicture"};}if(this.CurrentChartDrawPicture.SetLastPoint)this.CurrentChartDrawPicture.SetLastPoint({X:x,Y:y});bDrawPicture=true;}else{var drawPictrueData={};drawPictrueData.X=x;drawPictrueData.Y=y;if(this.GetChartDrawPictureByPoint(drawPictrueData)&&drawPictrueData.ChartDrawPicture&&drawPictrueData.ChartDrawPicture.EnableMove==true){if(drawPictrueData.PointIndex===100){if(drawPictrueData.Cursor)this.
|
|
1876
|
-
|
|
1887
|
+
if(IFrameSplitOperator.IsNumber(this.CurrentChartDrawPicture.LimitFrameID)){if(index>=0&&index==this.CurrentChartDrawPicture.LimitFrameID)bDrawValid=true;}else{if(index>=0)bDrawValid=true;}mouseStatus={Cursor:bDrawValid?"crosshair":"not-allowed",Name:"CurrentChartDrawPicture"};}if(this.CurrentChartDrawPicture.SetLastPoint)this.CurrentChartDrawPicture.SetLastPoint({X:x,Y:y});bDrawPicture=true;}else{var drawPictrueData={};drawPictrueData.X=x;drawPictrueData.Y=y;if(this.GetChartDrawPictureByPoint(drawPictrueData)&&drawPictrueData.ChartDrawPicture&&drawPictrueData.ChartDrawPicture.EnableMove==true){if(drawPictrueData.PointIndex===100){if(drawPictrueData.Cursor)this.SetCursor(drawPictrueData);//this.UIElement.style.cursor=drawPictrueData.Cursor;
|
|
1888
|
+
else this.SetCursor({Cursor:"move"});//this.UIElement.style.cursor="move";
|
|
1889
|
+
}else{if(drawPictrueData.Cursor)this.SetCursor(drawPictrueData);//this.UIElement.style.cursor=drawPictrueData.Cursor
|
|
1890
|
+
else this.SetCursor({Cursor:"pointer"});//this.UIElement.style.cursor="pointer";
|
|
1891
|
+
}bDrawPicture=true;this.MoveOnChartDrawPicture=drawPictrueData.ChartDrawPicture;}else{if(!this.MouseDrag)this.SetCursor({Cursor:"default"});//this.UIElement.style.cursor="default";
|
|
1892
|
+
}}var clientPos=this.PtInClient(x,y);var option={ParentFunction:'OnMouseMove',Point:{X:x,Y:y},IsPhone:isPhone===true,ClientPos:clientPos};if(e&&(e.type=="mouseout"||e.type=="mouseleave")||button)option.Corss=false;//鼠标移开,在按钮上,不显示十字光标
|
|
1893
|
+
if(this.SetCorssCursorIndex)this.SetCorssCursorIndex(option);if(this.DrawDynamicInfoOption.Enable){this.DrawDynamicInfoOption.Timer=setTimeout(function(){_this9.DrawDynamicInfo(option);},this.DrawDynamicInfoOption.DelayTime);}else{this.DrawDynamicInfo(option);}this.SetCursor(mouseStatus);if(this.IsShowTooltip&&bDrawPicture==false){var toolTip=this.GetChartTooltipData(x,y);if(toolTip&&toolTip.Data){if(isPhone===true){var touche=e.touches[0];var xTooltip=touche.clientX-this.UIElement.getBoundingClientRect().left;var yTooltip=touche.clientY-this.UIElement.getBoundingClientRect().top;}else{var xTooltip=e.clientX-this.UIElement.getBoundingClientRect().left;var yTooltip=e.clientY-this.UIElement.getBoundingClientRect().top;}this.ShowTooltip(xTooltip,yTooltip,toolTip);}else{this.HideTooltip();}}};//设置鼠标形状 {Cursor:鼠标形状 }
|
|
1894
|
+
this.SetCursor=function(obj){if(!obj||!obj.Cursor)return;if(obj.Cursor=="default")this.UIElement.style.cursor=this.DefaultCursor;else this.UIElement.style.cursor=obj.Cursor;};this.OnKeyDown=function(e){var _this10=this;if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;//回调事件
|
|
1877
1895
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYDOWN);if(event&&event.Callback){var sendData={e:e,PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return;}var keyID=e.keyCode?e.keyCode:e.which;switch(keyID){case 37://left
|
|
1878
1896
|
if(e.ctrlKey&&this.OnCustomKeyDown){if(this.OnCustomKeyDown(keyID,e))break;}if(this.CursorIndex<=0.99999){if(!this.DataMoveLeft()){//左移数据到头了 触发下载新数据
|
|
1879
1897
|
if(this.DragDownloadData)this.DragDownloadData();break;}this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");}else{--this.CursorIndex;this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();}break;case 39://right
|
|
@@ -1898,7 +1916,7 @@ this.Canvas.beginPath();this.Canvas.rect(border.Left,client.BottomEx,width,clien
|
|
|
1898
1916
|
{for(var i=0;i<border.DayBorder.length;++i){var client=border.DayBorder[i];this.Canvas.beginPath();this.Canvas.rect(client.LeftEx,border.TopEx,client.RightEx-client.LeftEx,border.BottomEx-border.TopEx);if(this.Canvas.isPointInPath(x,y))return 1;//盘前
|
|
1899
1917
|
this.Canvas.beginPath();this.Canvas.rect(client.Left,border.TopEx,client.LeftEx-client.Left,border.BottomEx-border.TopEx);if(this.Canvas.isPointInPath(x,y))return 200+parseInt(i);//盘后
|
|
1900
1918
|
this.Canvas.beginPath();this.Canvas.rect(client.RightEx,border.TopEx,client.Right-client.RightEx,border.BottomEx-border.TopEx);if(this.Canvas.isPointInPath(x,y))return 300+parseInt(i);}return-1;}this.Canvas.rect(border.LeftEx,border.Top,border.RightEx-border.LeftEx,border.Bottom-border.Top);}if(this.Canvas.isPointInPath(x,y))return 1;if(this.Frame.ChartBorder.LeftExtendWidth>10){this.Canvas.beginPath();if(this.Frame.IsHScreen===true){this.Canvas.rect(border.Left,border.Top,border.Right-border.Left,border.TopEx-border.Top);}else{this.Canvas.rect(border.Left,border.Top,border.LeftEx-border.Left,border.Bottom-border.Top);}if(this.Canvas.isPointInPath(x,y))return 2;}if(this.Frame.ChartBorder.RightExtendWidth>10){this.Canvas.beginPath();if(this.Frame.IsHScreen===true){this.Canvas.rect(border.Left,border.BottomEx,border.Right-border.Left,border.Bottom-border.BottomEx);}else{this.Canvas.rect(border.RightEx,border.Top,border.Right-border.RightEx,border.Bottom-border.Top);}if(this.Canvas.isPointInPath(x,y))return 3;}return-1;};this.OnMoveFromeBorder=function(index,yMove){if(!this.Frame)return;if(!this.Frame.OnMoveFromeBorder(index,yMove))return;//this.Frame.SetSizeChage(true);
|
|
1901
|
-
this.Frame.SetFrameBorderSizeChange();this.Frame.ReDrawToolbar();this.Draw();};this.OnZoomUpDownFrameY=function(obj,yMove){if(!this.Frame)return;if(!this.Frame.OnZoomUpDownFrameY(obj,yMove))return;this.Frame.SetSizeChage(true);this.Draw();};this.OnUpDonwFrameY=function(obj,yMove){if(!this.Frame)return false;if(!this.Frame.OnUpDonwFrameY(obj,yMove))return false;this.Frame.SetSizeChage(true);return true;};this.CancelZoomUpDownFrameY=function(obj){if(!this.Frame)return;if(!this.Frame.CancelZoomUpDownFrameY(obj))return;this.UpdateFrameMaxMin();this.Frame.SetSizeChage(true);this.Draw();};this.IsKLineContainer=function(){if(this.ClassName=='KLineChartContainer'||this.ClassName=='KLineChartHScreenContainer'||this.ClassName=="KLineTrainChartContainer"||this.ClassName=="CustomKLineChartContainer")return true;return false;};this.UpdatePointByCursorIndex=function(type)//type 1=根据十字光标更新 2=强制取消十字光标
|
|
1919
|
+
this.Frame.SetFrameBorderSizeChange();this.Frame.ReDrawToolbar();this.Draw();};this.OnZoomUpDownFrameY=function(obj,yMove){if(!this.Frame)return;if(!this.Frame.OnZoomUpDownFrameY(obj,yMove))return;this.Frame.SetSizeChage(true);this.Draw();};this.OnUpDonwFrameY=function(obj,yMove){if(!this.Frame)return false;if(!this.Frame.OnUpDonwFrameY(obj,yMove))return false;this.Frame.SetSizeChage(true);return true;};this.CancelZoomUpDownFrameY=function(obj){if(!this.Frame)return;if(!this.Frame.CancelZoomUpDownFrameY(obj))return;this.UpdateFrameMaxMin();this.Frame.SetSizeChage(true);this.Draw();};this.IsKLineContainer=function(){if(this.ClassName=='KLineChartContainer'||this.ClassName=='KLineChartHScreenContainer'||this.ClassName=="KLineTrainChartContainer"||this.ClassName=="CustomKLineChartContainer")return true;return false;};this.IsMinuteContainer=function(){if(this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer")return true;return false;};this.UpdatePointByCursorIndex=function(type)//type 1=根据十字光标更新 2=强制取消十字光标
|
|
1902
1920
|
{var pt={X:null,Y:null};pt.X=this.Frame.GetXFromIndex(this.CursorIndex);var index=Math.abs(this.CursorIndex-0.5);if(this.IsKLineContainer())index=this.CursorIndex;var data=this.Frame.Data;if(data.DataOffset+index<data.Data.length){var close=data.Data[data.DataOffset+index].Close;pt.Y=this.Frame.GetYFromData(close);}if(type==1&&this.ChartCorssCursor){if(this.ChartCorssCursor.Status==1)//十字光标显示中, 不调整位置
|
|
1903
1921
|
{}else{this.LastPoint.X=this.Frame.GetXFromIndex(this.CursorIndex);var index=Math.abs(this.CursorIndex-0.5);index=parseInt(index.toFixed(0));if(this.IsKLineContainer())index=this.CursorIndex;this.LastPoint.Y=null;}}else if(type==2&&this.ChartCorssCursor)//取消鼠标位置,十字光标就不显示了
|
|
1904
1922
|
{this.LastPoint.Y=null;this.LastPoint.X=null;}else{this.LastPoint.X=pt.X;this.LastPoint.Y=pt.Y;}};this.ShowTooltipByKeyDown=function(){var index=Math.abs(this.CursorIndex-0.5);index=parseInt(index.toFixed(0));if(this.ClassName=='KLineChartContainer'||this.ClassName=='KLineTrainChartContainer')index=this.CursorIndex;var data=this.Frame.Data;var toolTip=new TooltipData();toolTip.Data=data.Data[data.DataOffset+index];toolTip.ChartPaint=this.ChartPaint[0];var pixelTatio=GetDevicePixelRatio();if(pixelTatio===0)pixelTatio=1;//div 缩放还是使用原始坐标
|
|
@@ -2085,6 +2103,7 @@ this.YEnd;}//坐标信息
|
|
|
2085
2103
|
function CoordinateInfo(){this.Value;//坐标数据
|
|
2086
2104
|
this.Message=[];//坐标输出文字信息 0=左 1=右 2=内左 3=内右
|
|
2087
2105
|
this.TextColor=g_JSChartResource.FrameSplitTextColor;//文字颜色
|
|
2106
|
+
this.TextBGColor;//文字背景色
|
|
2088
2107
|
this.TextColor2;//右侧文字颜色,空使用TextColor
|
|
2089
2108
|
this.Font=g_JSChartResource.FrameSplitTextFont;//字体
|
|
2090
2109
|
this.LineColor=g_JSChartResource.FrameSplitPen;//线段颜色
|
|
@@ -2234,7 +2253,9 @@ var textRightPrev=null;//上一次刻度输出右边x坐标
|
|
|
2234
2253
|
for(var i=0;i<this.VerticalInfo.length;++i){var x=this.GetXFromIndex(this.VerticalInfo[i].Value);if(x>right)break;if(xPrev!=null&&Math.abs(x-xPrev)<this.MinXDistance)continue;var item=this.VerticalInfo[i];var xFixed=ToFixedPoint(x);if(this.IsShowXLine){if(item.LineType==2)//虚线
|
|
2235
2254
|
{this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;if(item.LineDash)this.Canvas.setLineDash(item.LineDash);else this.Canvas.setLineDash([5*pixelRatio,5*pixelRatio]);this.Canvas.beginPath();this.Canvas.moveTo(xFixed,top);this.Canvas.lineTo(xFixed,bottom);this.Canvas.stroke();this.Canvas.setLineDash([]);}else if(item.LineType==3){}else if(item.LineType>0)//实线
|
|
2236
2255
|
{if(g_JSChartResource.FrameXLineDash){this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;this.Canvas.setLineDash(g_JSChartResource.FrameXLineDash);//虚线
|
|
2237
|
-
this.Canvas.beginPath();this.Canvas.moveTo(xFixed,top);this.Canvas.lineTo(xFixed,bottom);this.Canvas.stroke();this.Canvas.setLineDash([]);}else{this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,top);this.Canvas.lineTo(xFixed,bottom);this.Canvas.stroke();}}}if(item.BG&&item.BG.Color){var bgItem=item.BG;this.Canvas.fillStyle=bgItem.Color;var xStart=this.GetXFromIndex(bgItem.Index.Start);var xEnd=this.GetXFromIndex(bgItem.Index.End);var bgHeight=this.ChartBorder.Bottom;if(IFrameSplitOperator.IsNumber(bgItem.Height))bgHeight=bgItem.Height;var rtBG={Left:xStart,Width:xEnd-xStart,Top:border.Bottom,Height:bgHeight};this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}if(this.VerticalInfo[i].Message[0]!=null){if(this.VerticalInfo[i].Font!=null)this.Canvas.font=this.VerticalInfo[i].Font;var textLeft=0;this.Canvas.
|
|
2256
|
+
this.Canvas.beginPath();this.Canvas.moveTo(xFixed,top);this.Canvas.lineTo(xFixed,bottom);this.Canvas.stroke();this.Canvas.setLineDash([]);}else{this.Canvas.strokeStyle=this.VerticalInfo[i].LineColor;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,top);this.Canvas.lineTo(xFixed,bottom);this.Canvas.stroke();}}}if(item.BG&&item.BG.Color){var bgItem=item.BG;this.Canvas.fillStyle=bgItem.Color;var xStart=this.GetXFromIndex(bgItem.Index.Start);var xEnd=this.GetXFromIndex(bgItem.Index.End);var bgHeight=this.ChartBorder.Bottom;if(IFrameSplitOperator.IsNumber(bgItem.Height))bgHeight=bgItem.Height;var rtBG={Left:xStart,Width:xEnd-xStart,Top:border.Bottom,Height:bgHeight};this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}if(this.VerticalInfo[i].Message[0]!=null){if(this.VerticalInfo[i].Font!=null)this.Canvas.font=this.VerticalInfo[i].Font;var textLeft=0;this.Canvas.strokeStyle=item.TextColor;var testWidth=this.Canvas.measureText(this.VerticalInfo[i].Message[0]).width;var textHeight=this.Canvas.measureText("擎").width;if(x<testWidth/2){this.Canvas.textAlign="left";this.Canvas.textBaseline="top";textLeft=x;}else if(x+testWidth/2>=this.ChartBorder.GetChartWidth()){this.Canvas.textAlign="right";this.Canvas.textBaseline="top";textLeft=x-testWidth;}else{this.Canvas.textAlign="center";this.Canvas.textBaseline="top";textLeft=x-testWidth/2;}if(textRightPrev==null||textLeft>textRightPrev){var yText=bottom;if(item.LineType==3){var lineLength=this.ShortXLineLength*pixelRatio;this.Canvas.beginPath();this.Canvas.moveTo(xFixed,yText);this.Canvas.lineTo(xFixed,yText+lineLength);this.Canvas.stroke();yText+=lineLength+2*pixelRatio;}//item.TextBGColor="rgb(0,255,0)";
|
|
2257
|
+
if(item.TextBGColor)//文字背景色
|
|
2258
|
+
{var rtText={Left:textLeft,Top:yText+this.XBottomOffset,Width:testWidth,Height:textHeight};this.Canvas.fillStyle=item.TextBGColor;this.Canvas.fillRect(rtText.Left-1,rtText.Top,rtText.Width+2,rtText.Height);}this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(this.VerticalInfo[i].Message[0],x,yText+this.XBottomOffset);textRightPrev=textLeft+testWidth;}}xPrev=x;}};//Y坐标转y轴数值
|
|
2238
2259
|
this.GetYData=function(y,isLimit){if(this.Logarithmic&&this.GetYLogarithmicFromData){return this.GetYLogarithmicData(y);}if(this.CoordinateType==1)//反转坐标
|
|
2239
2260
|
{if(isLimit==false){return(y-this.ChartBorder.GetTopEx())/this.ChartBorder.GetHeightEx()*(this.HorizontalMax-this.HorizontalMin)+this.HorizontalMin;}else{if(y<this.ChartBorder.GetTopEx())return this.HorizontalMin;if(y>this.ChartBorder.GetBottomEx())return this.HorizontalMax;return(y-this.ChartBorder.GetTopEx())/this.ChartBorder.GetHeightEx()*(this.HorizontalMax-this.HorizontalMin)+this.HorizontalMin;}}else{if(isLimit==false){return(this.ChartBorder.GetBottomEx()-y)/this.ChartBorder.GetHeightEx()*(this.HorizontalMax-this.HorizontalMin)+this.HorizontalMin;}else{if(y<this.ChartBorder.GetTopEx())return this.HorizontalMax;if(y>this.ChartBorder.GetBottomEx())return this.HorizontalMin;return(this.ChartBorder.GetBottomEx()-y)/this.ChartBorder.GetHeightEx()*(this.HorizontalMax-this.HorizontalMin)+this.HorizontalMin;}}};//X坐标转x轴数值
|
|
2240
2261
|
this.GetXData=function(x){if(x<=this.ChartBorder.GetLeft())return 0;if(x>=this.ChartBorder.GetRight())return this.XPointCount;return(x-this.ChartBorder.GetLeft())*(this.XPointCount*1.0/this.ChartBorder.GetWidth());};//选中的画图工具X,Y轴坐标信息
|
|
@@ -3121,13 +3142,13 @@ else if(option.MinuteVolBar){valueType=2;//分时图柱子
|
|
|
3121
3142
|
{if(option.OverlayType==1)valueType=1;else valueType=3;}else if(option.OverlayKLine){valueType=4;//叠加K线
|
|
3122
3143
|
firstOpen=this.GetFirstOpen();}else if(option.StackedBar)valueType=5;//叠加柱子
|
|
3123
3144
|
}for(var i=this.Data.DataOffset,j=0,k=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,++k,xOffset+=dataWidth+distanceWidth){var value=null;if(valueType==1)//K线收盘价
|
|
3124
|
-
{var kItem=this.Data.Data[i];if(IFrameSplitOperator.IsNumber(kItem.Close))value=kItem.Close;}else if(valueType==2){var kItem=this.Data.Data[i];if(IFrameSplitOperator.IsNumber(kItem.Vol))value=kItem.Vol;}else if(valueType==3){var
|
|
3145
|
+
{var kItem=this.Data.Data[i];if(IFrameSplitOperator.IsNumber(kItem.Close))value=kItem.Close;}else if(valueType==2){var kItem=this.Data.Data[i];if(IFrameSplitOperator.IsNumber(kItem.Vol))value=kItem.Vol;}else if(valueType==3){var minItem=this.Data.Data[i];var mainItem=this.MainData.Data[i];if(!minItem||!IFrameSplitOperator.IsNumber(minItem.Close)||!IFrameSplitOperator.IsNumber(minItem.YClose))continue;if(!mainItem||!IFrameSplitOperator.IsNumber(mainItem.Close)||!IFrameSplitOperator.IsNumber(mainItem.YClose))continue;var price=minItem.Close;var value=price/minItem.YClose*mainItem.YClose;}else if(valueType==4){var data=this.Data.Data[i];if(firstOverlayOpen==null)firstOverlayOpen=data.Open;value=data.Close/firstOverlayOpen*firstOpen;}else if(valueType==5){var bars=this.Data.Data[i];if(!IFrameSplitOperator.IsNonEmptyArray(bars))continue;var maxValue=0,minValue=0;for(var k=0;k<bars.length;++k){var barValue=bars[k];if(!IFrameSplitOperator.IsNumber(barValue))continue;if(barValue==0)continue;if(barValue>0)maxValue+=barValue;else if(barValue<0)minValue+=barValue;}value=(maxValue+minValue)/2;}else{value=this.Data.Data[i];}if(value==null)continue;if(k<pointSpace)continue;k=0;if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}var y=this.GetYFromData(value,false);if(x>chartright)break;this.Canvas.beginPath();this.Canvas.arc(x,y,radius,0,360,false);this.Canvas.closePath();if(this.SelectedBGColor)this.Canvas.fill();this.Canvas.stroke();}this.Canvas.restore();};//点是否在线段上
|
|
3125
3146
|
this.PtInLine=function(x,y,option){if(!this.IsShow||this.ChartFrame.IsMinSize)return;var bHScreen=this.ChartFrame.IsHScreen===true;if(bHScreen)return;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var lockRect=this.GetLockRect();if(lockRect){if(bHScreen)chartright=lockRect.Top;else chartright=lockRect.Left;}if(x<xOffset||x>chartright)return null;if(y>border.BottomEx||y<border.TopEx)return null;var ptStart={},ptEnd={};var valueType=0;if(option){if(option.KLineClose){valueType=1;//K线收盘价
|
|
3126
3147
|
}else if(option.MinuteOverlayPrice)//走势图叠加线
|
|
3127
3148
|
{if(option.OverlayType==1)valueType=1;//价格线
|
|
3128
3149
|
else valueType=3;//百分比
|
|
3129
3150
|
}}for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=null;if(valueType==1)//K线收盘价
|
|
3130
|
-
{var kItem=this.Data.Data[i];if(IFrameSplitOperator.IsNumber(kItem.Close))value=kItem.Close;}else if(valueType==3){var
|
|
3151
|
+
{var kItem=this.Data.Data[i];if(IFrameSplitOperator.IsNumber(kItem.Close))value=kItem.Close;}else if(valueType==3){var minItem=this.Data.Data[i];var mainItem=this.MainData.Data[i];if(!minItem||!IFrameSplitOperator.IsNumber(minItem.Close)||!IFrameSplitOperator.IsNumber(minItem.YClose))continue;if(!mainItem||!IFrameSplitOperator.IsNumber(mainItem.Close)||!IFrameSplitOperator.IsNumber(mainItem.YClose))continue;var price=minItem.Close;var value=price/minItem.YClose*mainItem.YClose;}else{value=this.Data.Data[i];}if(value==null)continue;if(isMinute){var xLine=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var xLine=left+(right-left)/2;}var yLine=this.GetYFromData(value,false);if(xLine<x){ptStart.X=xLine;ptStart.Y=yLine;}else if(xLine==x){ptStart.X=ptEnd.X=xLine;ptStart.Y=ptEnd.Y=yLine;break;}else{ptEnd.X=xLine;ptEnd.Y=yLine;break;}if(x>chartright)break;}if(!IFrameSplitOperator.IsNumber(ptStart.X)||!IFrameSplitOperator.IsNumber(ptStart.Y))return null;if(!IFrameSplitOperator.IsNumber(ptEnd.X)||!IFrameSplitOperator.IsNumber(ptEnd.Y))return null;if(x==ptStart.X||y==ptStart.Y)return{Identify:this.Identify,Chart:this};if(x==ptEnd.X||y==ptEnd.Y)return{Identify:this.Identify,Chart:this};var lineWidth=5;this.Canvas.beginPath();if(ptStart.X==ptEnd.X)//竖线
|
|
3131
3152
|
{this.Canvas.moveTo(ptStart.X-lineWidth,ptStart.Y);this.Canvas.lineTo(ptStart.X+lineWidth,ptStart.Y);this.Canvas.lineTo(ptEnd.X+lineWidth,ptEnd.Y);this.Canvas.lineTo(ptEnd.X-lineWidth,ptEnd.Y);}else{this.Canvas.moveTo(ptStart.X,ptStart.Y+lineWidth);this.Canvas.lineTo(ptStart.X,ptStart.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y+lineWidth);}this.Canvas.closePath();if(this.Canvas.isPointInPath(x,y))return{Identify:this.Identify,Chart:this};return null;};//option={ BarWidth:柱子宽度(空为K线宽度) }
|
|
3132
3153
|
this.PtInBar=function(x,y,option){if(!this.IsShow||this.ChartFrame.IsMinSize)return null;var bHScreen=this.ChartFrame.IsHScreen===true;if(bHScreen)return null;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Left;if(x<xOffset||x>chartright)return null;if(y>border.BottomEx||y<border.TopEx)return null;var isMinute=this.IsMinuteFrame();var yBottom=this.ChartFrame.GetYFromData(0);var barWidth=null;var isMinuteVolBar=false;var isStackedBar=false;if(option){if(option.BarWidth>0)barWidth=option.BarWidth;if(option.MinuteVolBar==true){isMinuteVolBar=true;barWidth=4;}else if(option.StackedBar==true){isStackedBar=true;}}for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];if(value==null)continue;if(isMinute){var xLine=this.ChartFrame.GetXFromIndex(j);var left=xLine-barWidth/2;var right=left+barWidth;}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;}if(isMinuteVolBar){if(!IFrameSplitOperator.IsNumber(value.Vol))continue;var yBar=this.ChartFrame.GetYFromData(value.Vol);var barTop=yBar,barBottom=yBottom;}else if(isStackedBar){var maxValue=0,minValue=0;if(!IFrameSplitOperator.IsNonEmptyArray(value))continue;for(var k=0;k<value.length;++k){var barValue=value[k];if(!IFrameSplitOperator.IsNumber(barValue))continue;if(barValue==0)continue;if(barValue>0)maxValue+=barValue;else if(barValue<0)minValue+=barValue;}var barTop=this.ChartFrame.GetYFromData(maxValue);var barBottom=this.ChartFrame.GetYFromData(minValue);}else{var yBar=this.ChartFrame.GetYFromData(value);var barTop=yBar,barBottom=yBottom;}if(barTop>barBottom){barTop=yBottom;barBottom=yBar;}var barLeft=left,barRight=right;if(barWidth>0){barLeft=left+(right-left)/2-barWidth/2;barRight=barLeft+barWidth;}if(x>=barLeft&&x<=barRight&&y>=barTop&&y<=barBottom)return{Identify:this.Identify,Chart:this};if(right>x)break;}return null;};this.PtInKBar=function(x,y,option){if(!this.IsShow||this.ChartFrame.IsMinSize)return null;var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen)return null;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;chartright=border.BottomEx;}if(x<xOffset||x>chartright)return null;if(y>border.BottomEx||y<border.TopEx)return null;var firstOverlayOpen=null;var kBarType=0;var firstOpen=null;if(option&&option.OverlayKLine){kBarType=1;//叠加K线
|
|
3133
3154
|
firstOpen=this.GetFirstOpen();}for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var data=this.Data.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;if(firstOverlayOpen==null)firstOverlayOpen=data.Open;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;if(x>=left&&x<=right){if(kBarType==1){var yLow=this.GetYFromData(data.Low/firstOverlayOpen*firstOpen,false);var yHigh=this.GetYFromData(data.High/firstOverlayOpen*firstOpen,false);}else{var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);}if(y<=yLow&&y>=yHigh)return{Identify:this.Identify,Chart:this};}if(right>x)break;}};this.IsShowIndexTitleOnly=function(){if(this.ChartFrame&&this.ChartFrame.ChartBorder&&this.ChartFrame.ChartBorder.IsShowTitleOnly)return true;return false;};//是否隐藏指标
|
|
@@ -3996,16 +4017,15 @@ var data=this.Data;for(var i=data.DataOffset,j=0;i<data.Data.length&&j<xPointCou
|
|
|
3996
4017
|
return true;}}return false;};}//分钟线叠加 支持横屏
|
|
3997
4018
|
function ChartOverlayMinutePriceLine(){this.newMethod=IChartPainting;//派生
|
|
3998
4019
|
this.newMethod();delete this.newMethod;this.Color="rgb(65,105,225)";this.MainData;//主图数据
|
|
3999
|
-
this.MainYClose;//主图股票的前收盘价
|
|
4000
4020
|
this.SourceData;//原始数据
|
|
4001
4021
|
this.ClassName="ChartOverlayMinutePriceLine";this.Title;this.Symbol;//叠加的股票代码
|
|
4002
|
-
this.YClose;//叠加的股票前收盘
|
|
4003
4022
|
this.Status=OVERLAY_STATUS_ID.STATUS_NONE_ID;this.OverlayType=0;//叠加方式 0=百分比叠加 1=绝对叠加
|
|
4004
4023
|
this.IsCalcuateMaxMin=true;//是否参与计算Y轴的最大最小值
|
|
4005
|
-
this.SetOption=function(option){if(option){if(IFrameSplitOperator.IsNumber(option.OverlayType))this.OverlayType=option.OverlayType;if(IFrameSplitOperator.IsBool(option.IsCalcuateMaxMin))this.IsCalcuateMaxMin=option.IsCalcuateMaxMin;}};this.PtInChart=function(x,y){var option={MinuteOverlayPrice:true,
|
|
4006
|
-
|
|
4007
|
-
|
|
4008
|
-
|
|
4024
|
+
this.SetOption=function(option){if(option){if(IFrameSplitOperator.IsNumber(option.OverlayType))this.OverlayType=option.OverlayType;if(IFrameSplitOperator.IsBool(option.IsCalcuateMaxMin))this.IsCalcuateMaxMin=option.IsCalcuateMaxMin;}};this.PtInChart=function(x,y){var option={MinuteOverlayPrice:true,OverlayType:this.OverlayType};return this.PtInLine(x,y,option);};this.DrawSelectedStatus=function(){var option={MinuteOverlayPrice:true,OverlayType:this.OverlayType};this.DrawLinePoint(option);};this.Draw=function(){if(!this.Data)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();if(isHScreen===true)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;var minuteCount=this.ChartFrame.MinuteCount;this.Canvas.save();this.ClipClient(isHScreen);var bFirstPoint=true;var drawCount=0;var xOffset=0,showValue=0;var yClose=null,mainYClose=null;var pointCount=0;for(var i=this.Data.DataOffset+xOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var item=this.Data.Data[i];if(item&&IFrameSplitOperator.IsNumber(item.Close)){if(bFirstPoint)//百分比使用每天的昨收计算
|
|
4025
|
+
{yClose=item.YClose;var minItem=this.MainData.Data[i];mainYClose=minItem.YClose;}var value=item.Close;showValue=value;//绝对叠加
|
|
4026
|
+
if(this.OverlayType==0)showValue=value/yClose*mainYClose;//百分比
|
|
4027
|
+
var x=this.ChartFrame.GetXFromIndex(j);var y=this.ChartFrame.GetYFromData(showValue,false);if(bFirstPoint){this.Canvas.strokeStyle=this.Color;this.Canvas.beginPath();if(isHScreen)this.Canvas.moveTo(y,x);else this.Canvas.moveTo(x,y);bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(y,x);else this.Canvas.lineTo(x,y);}++drawCount;}++pointCount;if(pointCount>=minuteCount)//上一天的数据和这天地数据线段要断开
|
|
4028
|
+
{bFirstPoint=true;pointCount=0;if(drawCount>0)this.Canvas.stroke();drawCount=0;}}if(drawCount>0)this.Canvas.stroke();this.Canvas.restore();};this.GetMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={Min:null,Max:null};if(!this.IsCalcuateMaxMin)return range;var minuteCount=this.ChartFrame.MinuteCount;var yClose=null,mainYClose=null;var bFirstPoint=true;var pointCount=0;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var item=this.Data.Data[i];if(!item||!IFrameSplitOperator.IsNumber(item.Close)){++pointCount;continue;}if(bFirstPoint){yClose=item.YClose;var minItem=this.MainData.Data[i];mainYClose=minItem.YClose;bFirstPoint=false;}var value=item.Close;if(this.OverlayType==0)value=value/yClose*mainYClose;if(range.Max==null)range.Max=value;if(range.Min==null)range.Min=value;if(range.Max<value)range.Max=value;if(range.Min>value)range.Min=value;++pointCount;if(pointCount>=minuteCount){bFirstPoint=true;pointCount=0;}}//JSConsole.Chart.Log(`[ChartOverlayMinutePriceLine::GetMaxMin] max=${range.Max} min=${range.Min}`);
|
|
4009
4029
|
return range;};this.GetTooltipData=function(x,y,tooltip){var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen)return false;if(!this.IsShow)return false;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return false;if(!IFrameSplitOperator.IsNumber(this.YClose)||!IFrameSplitOperator.IsNumber(this.MainYClose))return false;var position=this.ChartBorder.PtInClient(x,y,this.Canvas,isHScreen);if(position!=1)return false;var data=this.Data;var index=this.ChartFrame.GetXData(x);var end=Math.ceil(index);var start=Math.floor(index);if(end>=data.Data.length||start>=data.Data.length)return false;var lineWidth=5;if(end==start){var value=data.Data[start];}else{var startValue=data.Data[start].Close;startValue=startValue/this.YClose*this.MainYClose;var endValue=data.Data[end].Close;endValue=endValue/this.YClose*this.MainYClose;var ptStart={X:this.ChartFrame.GetXFromIndex(start),Y:this.ChartFrame.GetYFromData(startValue)};var ptEnd={X:this.ChartFrame.GetXFromIndex(end),Y:this.ChartFrame.GetYFromData(endValue)};this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y+lineWidth);this.Canvas.lineTo(ptStart.X,ptStart.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y-lineWidth);this.Canvas.lineTo(ptEnd.X,ptEnd.Y+lineWidth);this.Canvas.closePath();if(this.Canvas.isPointInPath(x,y)){tooltip.Data={Index:index,Start:{Index:start,Item:data.Data[start]},End:{Index:end,Value:data.Data[end]}};tooltip.ChartPaint=this;tooltip.Type=6;//走势图线
|
|
4010
4030
|
//tooltip.Stock={Symbol:this.Symbol, Name:this.Title };
|
|
4011
4031
|
return true;}}return false;};}//分钟持仓线
|
|
@@ -5081,6 +5101,7 @@ this.DayCount=1;this.DateFormat=0;//0=MM-DD 1=MM/DD 2=MM/DD/Week
|
|
|
5081
5101
|
this.Operator=function(){this.Frame.VerticalInfo=[];var xPointCount=this.Frame.XPointCount;var width=this.Frame.ChartBorder.GetWidth();var isHScreen=this.Frame.IsHScreen===true;if(isHScreen)width=this.Frame.ChartBorder.GetHeight();width=width/GetDevicePixelRatio();var minuteCoordinate=g_MinuteCoordinateData;var xcoordinateData=minuteCoordinate.GetCoordinateData(this.Symbol,width);var minuteCount=xcoordinateData.Count;var minuteMiddleCount=xcoordinateData.MiddleCount>0?xcoordinateData.MiddleCount:parseInt(minuteCount/2);var xcoordinate=xcoordinateData.Data;this.Frame.XPointCount=minuteCount*this.DayCount;//计算一共显示的数据个数
|
|
5082
5102
|
this.Frame.MinuteCount=minuteCount;this.Frame.VerticalInfo=[];if(this.Frame.GlobalOption){var item=this.Frame.GlobalOption;if(IFrameSplitOperator.IsNumber(item.XDateFormat))this.DateFormat=item.XDateFormat;}if(this.DayCount<=1){//设置成1日的数据
|
|
5083
5103
|
this.DayOffset.DataOffset=0;this.DayOffset.ShowDataCount=minuteCount;this.DayOffset.PageInfo=null;for(var i=0;i<xcoordinate.length;++i){var info=new CoordinateInfo();var item=xcoordinate[i];if(g_JSChartResource.Minute.FrameSplitTextColor)info.TextColor=g_JSChartResource.Minute.FrameSplitTextColor;info.Value=item[0];if(this.ShowText)info.Message[0]=item[3];if(item[4])info.LineColor=item[4];//线段颜色
|
|
5104
|
+
if(item[5])info.TextBGColor=item[5];//文字背景色
|
|
5084
5105
|
this.Frame.VerticalInfo[i]=info;}}else{var offset=0,showDayCount=this.DayData.length;if(this.DayOffset){if(IFrameSplitOperator.IsNumber(this.DayOffset.Offset))offset=this.DayOffset.Offset;if(IFrameSplitOperator.IsNumber(this.DayOffset.ShowDayCount))showDayCount=this.DayOffset.ShowDayCount;}this.DayOffset.DataOffset=offset*minuteCount;this.DayOffset.ShowDataCount=this.DayOffset.ShowDayCount*minuteCount;this.DayOffset.PageInfo={Day:[]};for(var i=this.DayData.length-1-offset,j=0;i>=0&&j<showDayCount;--i,++j){var info=new CoordinateInfo();info.Value=j*minuteCount+minuteMiddleCount;info.LineType=-1;//线段不画
|
|
5085
5106
|
if(this.ShowText){info.Message[0]=this.FormatDate(this.DayData[i].Date);info.BG={Index:{Start:j*minuteCount+1,End:(j+1)*minuteCount-1},Date:this.DayData[i].Date};//背景设置
|
|
5086
5107
|
}this.Frame.VerticalInfo.push(info);var info=new CoordinateInfo();info.Value=(j+1)*minuteCount;this.Frame.VerticalInfo.push(info);this.DayOffset.PageInfo.Day.push({Date:this.DayData[i].Date,Index:i});}}if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_XCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};event.Callback(event,data,this);}}};this.FormatDate=function(date){switch(this.DateFormat){case 1:return IFrameSplitOperator.FormatDateString(date,'MM/DD');case 2:return IFrameSplitOperator.FormatDateString(date,'MM/DD/W');default://MM-DD
|
|
@@ -7505,7 +7526,8 @@ var MoveStatus={X:x,Y:y,IsInClient:this.IsMouseOnClient(x,y)};this.LastMouseStat
|
|
|
7505
7526
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);var titleChart=this.TitlePaint[0];if(event&&titleChart)titleChart.OnMouseMoveEvent=event;this.MoveOnPoint={X:x,Y:y};this.OnMouseMove(x,y,{});this.LastMouseStatus.MoveOnPoint=null;if(titleChart)titleChart.OnMouseMoveEvent=null;}};this.SendPageChangedEvent=function(){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MINUTE_PAGE_CHANGED);//选中画图工具事件
|
|
7506
7527
|
if(!event||!event.Callback)return;var sendData={DayOffset:this.DayOffset,DayData:this.DayData};event.Callback(event,sendData,this);};this.IsMouseOnClient=function(x,y){var border=this.Frame.IsHScreen?this.Frame.ChartBorder.GetHScreenBorder():this.Frame.ChartBorder.GetBorder();var rect={Left:border.Left,Top:border.Top,Right:border.Right,Bottom:border.Bottom};if(x>=rect.Left&&x<=rect.Right&&y>=rect.Top&&y<=rect.Bottom)return true;return false;};//左右拖拽
|
|
7507
7528
|
this.OnDragMode_One=function(moveData,e){var drag=this.MouseDrag;var moveSetp=moveData.X;var yMoveSetp=moveData.Y;if(this.RectSelectDrag&&this.RectSelectDrag.Index>=0)//区间选择
|
|
7508
|
-
{if(moveSetp<5)return;var obj={X:e.clientX,Y:e.clientY,PointIndex:this.RectSelectDrag.Index,Name:"MoveRectSelectLine"};if(this.MoveRectSelectPoint(obj)){drag.LastMove.X=e.clientX;this.Draw();}}else{if(moveSetp<5&&yMoveSetp<5)return;if(!this.EnableSelectRect)return
|
|
7529
|
+
{if(moveSetp<5)return;var obj={X:e.clientX,Y:e.clientY,PointIndex:this.RectSelectDrag.Index,Name:"MoveRectSelectLine"};if(this.MoveRectSelectPoint(obj)){drag.LastMove.X=e.clientX;this.Draw();}}else{if(moveSetp<5&&yMoveSetp<5)return;if(!this.EnableSelectRect)return;//this.UIElement.style.cursor="default";
|
|
7530
|
+
this.SetCursor({Cursor:"default"});var x=drag.Click.X-uielement.getBoundingClientRect().left;var y=drag.Click.Y-uielement.getBoundingClientRect().top;var x2=e.clientX-uielement.getBoundingClientRect().left;var y2=e.clientY-uielement.getBoundingClientRect().top;this.ShowSelectRect(x,y,x2,y2);drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}};this.OnMinuteSelectRectMouseUp=function(e){var drag=this.MouseDrag;drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;var selectData=new SelectRectData();var pixelTatio=GetDevicePixelRatio();//区间起始位置 结束位子
|
|
7509
7531
|
selectData.XStart=(drag.Click.X-uielement.getBoundingClientRect().left)*pixelTatio;selectData.YStart=(drag.Click.Y-uielement.getBoundingClientRect().top)*pixelTatio;selectData.XEnd=(drag.LastMove.X-uielement.getBoundingClientRect().left)*pixelTatio;selectData.YEnd=(drag.LastMove.Y-uielement.getBoundingClientRect().top)*pixelTatio;selectData.JSChartContainer=this;selectData.Stock={Symbol:this.Symbol,Name:this.Name};if(this.EnableSelectRect&&!this.BorderDrag&&this.GetSelectRectData(selectData)){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SELECT_RECT);var paint=this.GetRectSelectPaint();var isShowDialog=true;//是否显示内置区间选择框
|
|
7510
7532
|
if(event&&event.Callback){var data={X:drag.LastMove.X-uielement.getBoundingClientRect().left,Y:drag.LastMove.Y-uielement.getBoundingClientRect().top,SelectData:selectData,//区间选择的数据
|
|
7511
7533
|
RectSelectPaint:paint,//区间选择背景
|
|
@@ -7654,9 +7676,9 @@ var item=option.Windows[i];if(!item)continue;if(item.Script){this.WindowIndex[in
|
|
|
7654
7676
|
}}}}}if(!symbol||this.DayCount<=0){this.DrawEmpty();}else{this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.EnableSplash(true);//增加下载动画
|
|
7655
7677
|
this.Draw();this.RequestData();}};this.SetPageInfo=function(pageInfo){if(!pageInfo)return;if(IFrameSplitOperator.IsBool(pageInfo.Enable))this.PageInfo.Enable=pageInfo.Enable;if(IFrameSplitOperator.IsNumber(pageInfo.Offset))this.PageInfo.Offset=pageInfo.Offset;if(IFrameSplitOperator.IsNumber(pageInfo.ShowDayCount))this.PageInfo.ShowDayCount=pageInfo.ShowDayCount;};this.ClearMinuteData=function(){this.SourceData=null;this.DayData=null;this.BeforeOpenData=null;this.AfterCloseData=null;this.MultiDayBeforeOpenData=null;this.MultiDayAfterCloseData=null;};this.ChangeDayCount=function(count,option){if(count<0)return;this.StopDisplayLatest();this.CancelAutoUpdate();this.AutoUpdateEvent(false,"MinuteChartContainer::ChangeDayCount");this.DayCount=count;this.ClearMinuteData();if(option&&option.PageInfo){this.SetPageInfo(option.PageInfo);this.ResetDayOffset();}if(this.DayCount>1){this.ChartDrawPicture=[];}else{this.ReloadChartDrawPicture();}this.ClearIndexPaint();//清空指标
|
|
7656
7678
|
this.ResetOverlaySymbolStatus();this.RequestData();};//叠加股票
|
|
7657
|
-
this.OverlaySymbol=function(symbol,option){for(var i
|
|
7658
|
-
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];++g_JSChartResource.OverlaySymbol.Random;
|
|
7659
|
-
|
|
7679
|
+
this.OverlaySymbol=function(symbol,option){for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(item.Symbol==symbol){console.warn('[MinuteChartContainer::OverlaySymbol] overlay symbol='+symbol+' exist.');return false;}}var paint=new ChartOverlayMinutePriceLine();paint.Canvas=this.Canvas;paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;paint.ChartFrame=this.Frame.SubFrame[0].Frame;paint.Name="Overlay-Minute";paint.Symbol=symbol;paint.Identify='Overlay-Minute-'+symbol;if(option&&option.Color)paint.Color=option.Color;//外部设置颜色
|
|
7680
|
+
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];++g_JSChartResource.OverlaySymbol.Random;paint.MainData=this.SourceData;//绑定主图数据
|
|
7681
|
+
if(paint.SetOption)paint.SetOption(option);this.OverlayChartPaint.push(paint);if(this.DayCount<=1)this.RequestOverlayMinuteData();//请求数据
|
|
7660
7682
|
else this.RequestOverlayHistoryMinuteData();return true;};this.ResetOverlaySymbolStatus=function(){for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];item.Status=OVERLAY_STATUS_ID.STATUS_NONE_ID;}};//删除一个叠加股票
|
|
7661
7683
|
this.DeleteOverlaySymbol=function(symbol){for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];if(item.Symbol===symbol){item.IsDelete=true;this.OverlayChartPaint.splice(i,1);this.UpdateFrameMaxMin();this.Draw();return true;}}console.warn('[MinuteChartContainer::DeleteOverlaySymbol] overlay symbol='+symbol+' not exist.');return false;};//取消叠加股票
|
|
7662
7684
|
this.ClearOverlaySymbol=function(){for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];item.IsDelete=true;}this.OverlayChartPaint=[];this.Frame.SubFrame[0].Frame.YSplitOperator.OverlayChartPaint=this.OverlayChartPaint;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
|
|
@@ -7728,19 +7750,19 @@ if(limitData&&limitData.max>0&&limitData.min>0)//API里带涨停价格 直接使
|
|
|
7728
7750
|
if(!range){JSConsole.Chart.Log('[MinuteChartContainer::CaclutateLimitPrice] '+this.Symbol+' no limit price.');return;}//var yClose=data.stock[0].yclose;
|
|
7729
7751
|
if(yClose<=0)return;this.LimitPrice={Max:yClose*(1+range.Max),Min:yClose*(1+range.Min)};JSConsole.Chart.Log('[MinuteChartContainer::CaclutateLimitPrice] '+this.Symbol+' yClose:'+yClose+' max:'+this.LimitPrice.Max+' min:'+this.LimitPrice.Min);this.LimitPrice.Max=parseFloat(this.LimitPrice.Max.toFixed(2));this.LimitPrice.Min=parseFloat(this.LimitPrice.Min.toFixed(2));JSConsole.Chart.Log('[MinuteChartContainer::CaclutateLimitPrice] '+this.Symbol+' tofixed(2) max:'+this.LimitPrice.Max+' min:'+this.LimitPrice.Min);};//请求叠加数据 (主数据下载完再下载))
|
|
7730
7752
|
this.RequestOverlayMinuteData=function(){var _this33=this;var self=this;var date=this.TradeDate;//最后一个交易日期
|
|
7731
|
-
var _loop4=function _loop4(){var item=_this33.OverlayChartPaint[i];if(!item.MainData
|
|
7753
|
+
var _loop4=function _loop4(){var item=_this33.OverlayChartPaint[i];if(!item.MainData)return'continue';if(item.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)return'continue';symbol=item.Symbol;if(!symbol)return'continue';item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(_this33.NetworkFilter){obj={Name:'MinuteChartContainer::RequestOverlayMinuteData',//类名::函数名
|
|
7732
7754
|
Explain:'叠加股票最新分时数据',Request:{Url:self.HistoryMinuteApiUrl,Data:{days:[date],symbol:symbol},Type:'POST'},Self:_this33,PreventDefault:false};_this33.NetworkFilter(obj,function(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOverlayMinuteData(data,item);});if(obj.PreventDefault==true)return'continue';//已被上层替换,不调用默认的网络请求
|
|
7733
7755
|
}//请求数据
|
|
7734
7756
|
JSNetwork.HttpRequest({url:self.HistoryMinuteApiUrl,data:{"symbol":symbol,"days":[date]},type:"post",dataType:"json",async:true,success:function success(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;//self.RecvMultiOverlayMinuteData([data]);
|
|
7735
7757
|
self.RecvOverlayMinuteData(data,item);}});};for(var i=0;i<this.OverlayChartPaint.length;++i){var symbol;var obj;var _ret4=_loop4();if(_ret4==='continue')continue;}};//一次接收多个叠加品种
|
|
7736
|
-
this.RecvMultiOverlayMinuteData=function(aryData){if(!IFrameSplitOperator.IsNonEmptyArray(aryData))return;var bUpdate=false;for(var i=0;i<aryData.length;++i){var overlayData=aryData[i];if(!overlayData.symbol)continue;for(var j=0;j<this.OverlayChartPaint.length;++j){var item=this.OverlayChartPaint[j];if(!item.MainData
|
|
7758
|
+
this.RecvMultiOverlayMinuteData=function(aryData){if(!IFrameSplitOperator.IsNonEmptyArray(aryData))return;var bUpdate=false;for(var i=0;i<aryData.length;++i){var overlayData=aryData[i];if(!overlayData.symbol)continue;for(var j=0;j<this.OverlayChartPaint.length;++j){var item=this.OverlayChartPaint[j];if(!item.MainData)continue;if(overlayData.symbol==item.Symbol){this.RecvOverlayMinuteData(overlayData,item,{Redraw:false});bUpdate=true;break;}}}if(bUpdate){this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7737
7759
|
this.Frame.SetSizeChage(true);this.Draw();}};this.RecvOverlayMinuteData=function(data,paint,option){if(paint.IsDelete)return;if(this.EnableVerifyRecvData&&data.symbol!=paint.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvOverlayMinuteData] recv data symbol not match. paint['+paint.Symbol+'] , Recv['+data.symbol+']');return;}var aryMinuteData=MinuteChartContainer.JsonDataToMinuteDataArray(data);var sourceData=null;var yClose;if(this.DayCount>1)//多日数据
|
|
7738
7760
|
{if(aryMinuteData.length<=0)return;var minuteData=aryMinuteData[0];for(var i in paint.SourceData){var item=paint.SourceData[i];if(item.Date==minuteData.Date){paint.SourceData[i]=minuteData;var allMinuteData=this.HistoryMinuteDataToArray(paint.SourceData);var sourceData=new ChartData();sourceData.Data=allMinuteData;yClose=minuteData.YClose;break;}}if(sourceData==null)return;}else{if(aryMinuteData.length>0)sourceData=aryMinuteData[0];else sourceData=new ChartData();yClose=sourceData.YClose;}paint.Data=sourceData;paint.Title=data.name;paint.Symbol=data.symbol;paint.YClose=yClose;paint.Status=OVERLAY_STATUS_ID.STATUS_FINISHED_ID;var bRedraw=true;if(option&&option.Redraw==false)bRedraw=false;if(bRedraw){this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7739
7761
|
this.Frame.SetSizeChage(true);this.Draw();}};this.RequestOverlayHistoryMinuteData=function(){var _this34=this;if(!IFrameSplitOperator.IsNonEmptyArray(this.DayData))return;var self=this;var days=[];for(var i=0;i<this.DayData.length;++i){var item=this.DayData[i];days.push(item.Date);}if(days.length<=0)return;var _loop5=function _loop5(){var item=_this34.OverlayChartPaint[i];symbol=item.Symbol;if(!symbol)return'continue';if(item.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)return'continue';item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(_this34.NetworkFilter){obj={Name:'MinuteChartContainer::RequestOverlayHistoryMinuteData',//类名::函数名
|
|
7740
7762
|
Explain:'叠加股票多日分时数据',Request:{Url:self.HistoryMinuteApiUrl,Data:{days:days,symbol:symbol},Type:'POST'},Self:_this34,PreventDefault:false};_this34.NetworkFilter(obj,function(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOverlayHistoryMinuteData(data,item);});if(obj.PreventDefault==true)return'continue';//已被上层替换,不调用默认的网络请求
|
|
7741
7763
|
}JSNetwork.HttpRequest({url:self.HistoryMinuteApiUrl,data:{"symbol":symbol,"days":days},type:"post",dataType:"json",async:true,success:function success(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOverlayHistoryMinuteData(data,item);}});};for(var i=0;i<this.OverlayChartPaint.length;++i){var symbol;var obj;var _ret5=_loop5();if(_ret5==='continue')continue;}};this.RecvOverlayHistoryMinuteData=function(data,paint)//叠加历史的分钟数据
|
|
7742
7764
|
{if(this.EnableVerifyRecvData&&data.symbol!=paint.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvOverlayHistoryMinuteData] recv data symbol not match. paint['+paint.Symbol+'] , Recv['+data.symbol+']');return;}if(!IFrameSplitOperator.IsNonEmptyArray(this.DayData))return;var dayData=MinuteChartContainer.JsonDataToMinuteDataArray(data);if(!IFrameSplitOperator.IsNonEmptyArray(dayData))return;var overlayDayData=[];for(var i=0;i<this.DayData.length;++i){var item=this.DayData[i];var bFind=false;for(var j=0;j<dayData.length;++j){if(item.Date==dayData[j].Date){overlayDayData.push(dayData[j]);bFind=true;break;}}if(!bFind)//当天不存在叠加数据, 存空
|
|
7743
|
-
{var empytData=new ChartData();empytData.Date=item.Date;overlayDayData.push(empytData);}}paint.SourceData=overlayDayData;var allMinuteData=this.HistoryMinuteDataToArray(overlayDayData);var yClose=overlayDayData[0].YClose;//取最近一个交易日前收盘最为中轴线
|
|
7765
|
+
{var empytData=new ChartData();empytData.Date=item.Date;empytData.Data.length=item.Data.length;overlayDayData.push(empytData);}}paint.SourceData=overlayDayData;var allMinuteData=this.HistoryMinuteDataToArray(overlayDayData);var yClose=overlayDayData[0].YClose;//取最近一个交易日前收盘最为中轴线
|
|
7744
7766
|
//原始数据
|
|
7745
7767
|
var sourceData=new ChartData();sourceData.Data=allMinuteData;paint.Data=sourceData;paint.Title=data.name;paint.Symbol=data.symbol;paint.YClose=yClose;paint.Status=OVERLAY_STATUS_ID.STATUS_FINISHED_ID;this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7746
7768
|
this.Frame.SetSizeChage(true);this.Draw();};this.CancelAutoUpdate=function()//关闭停止更新
|
|
@@ -7763,8 +7785,8 @@ firstFrame.YSplitOperator.OverlayChartPaint=this.OverlayChartPaint;firstFrame.YS
|
|
|
7763
7785
|
this.ChartPaint[2].Data=minuteData;this.ChartPaint[2].YClose=yClose;this.ChartPaint[2].Symbol=this.Symbol;this.ChartPaint[2].BeforeOpenData=this.BeforeOpenData;this.ChartPaint[2].AfterCloseData=this.AfterCloseData;this.ChartPaint[2].MultiDayBeforeOpenData=multiBeforeOpenData;this.ChartPaint[2].MultiDayAfterCloseData=multiAfterCloseData;for(var i in this.Frame.SubFrame){var item=this.Frame.SubFrame[i];item.Frame.YSplitOperator.BeforeOpenData=this.BeforeOpenData;item.Frame.YSplitOperator.IsBeforeData=this.IsBeforeData;item.Frame.YSplitOperator.AfterCloseData=this.AfterCloseData;item.Frame.YSplitOperator.IsAfterData=this.IsAfterData;item.Frame.YSplitOperator.MultiDayBeforeOpenData=multiBeforeOpenData;item.Frame.YSplitOperator.MultiDayAfterCloseData=multiAfterCloseData;}if(MARKET_SUFFIX_NAME.IsShowMinutePostionLine(upperSymbol))this.BindOverlayPositionData(minuteData,yClose);//期货,期权 持仓量
|
|
7764
7786
|
else this.ClearBindOverlayPositionData();this.TitlePaint[0].Data=this.SourceData;//动态标题
|
|
7765
7787
|
this.TitlePaint[0].Symbol=this.Symbol;this.TitlePaint[0].Name=this.Name;this.TitlePaint[0].YClose=yClose;this.TitlePaint[0].BeforeOpenData=this.BeforeOpenData;this.TitlePaint[0].AfterCloseData=this.AfterCloseData;this.TitlePaint[0].MultiDayBeforeOpenData=this.IsShowMultiDayBeforeData?this.MultiDayBeforeOpenData:null;this.TitlePaint[0].MultiDayAfterCloseData=this.IsShowMultiDayAfterData?this.MultiDayAfterCloseData:null;if(this.TitlePaint[0].CallAcutionXOperator){this.TitlePaint[0].CallAcutionXOperator.BeforeOpenData=this.BeforeOpenData;this.TitlePaint[0].CallAcutionXOperator.AfterCloseData=this.AfterCloseData;this.TitlePaint[0].CallAcutionXOperator.MultiDayBeforeOpenData=multiBeforeOpenData;this.TitlePaint[0].CallAcutionXOperator.MultiDayAfterCloseData=multiAfterCloseData;this.TitlePaint[0].CallAcutionXOperator.DayOffset=this.DayOffset;}if(this.ChartCorssCursor&&this.ChartCorssCursor.StringFormatY){this.ChartCorssCursor.StringFormatY.YClose=yClose;this.ChartCorssCursor.StringFormatY.BeforeOpenData=this.BeforeOpenData;this.ChartCorssCursor.StringFormatY.AfterCloseData=this.AfterCloseData;this.ChartCorssCursor.StringFormatY.MultiDayBeforeOpenData=multiBeforeOpenData;this.ChartCorssCursor.StringFormatY.MultiDayAfterCloseData=multiAfterCloseData;this.ChartCorssCursor.StringFormatY.DayOffset=this.DayOffset;this.ChartCorssCursor.StringFormatX.Data=this.ChartPaint[0].Data;//十字光标
|
|
7766
|
-
this.ChartCorssCursor.StringFormatX.BeforeOpenData=this.BeforeOpenData;this.ChartCorssCursor.StringFormatX.AfterCloseData=this.AfterCloseData;this.ChartCorssCursor.StringFormatX.MultiDayBeforeOpenData=multiBeforeOpenData;this.ChartCorssCursor.StringFormatX.MultiDayAfterCloseData=multiAfterCloseData;this.ChartCorssCursor.StringFormatX.DayOffset=this.DayOffset;;if(this.ChartCorssCursor.CallAcutionXOperator){this.ChartCorssCursor.CallAcutionXOperator.BeforeOpenData=this.BeforeOpenData;this.ChartCorssCursor.CallAcutionXOperator.AfterCloseData=this.AfterCloseData;this.ChartCorssCursor.CallAcutionXOperator.MultiDayBeforeOpenData=multiBeforeOpenData;this.ChartCorssCursor.CallAcutionXOperator.MultiDayAfterCloseData=multiAfterCloseData;this.ChartCorssCursor.CallAcutionXOperator.DayOffset=this.DayOffset;}}if(this.ExtendChartPaint[0]){this.ExtendChartPaint[0].Symbol=this.Symbol;this.ExtendChartPaint[0].Name=this.Name;}for(var i
|
|
7767
|
-
|
|
7788
|
+
this.ChartCorssCursor.StringFormatX.BeforeOpenData=this.BeforeOpenData;this.ChartCorssCursor.StringFormatX.AfterCloseData=this.AfterCloseData;this.ChartCorssCursor.StringFormatX.MultiDayBeforeOpenData=multiBeforeOpenData;this.ChartCorssCursor.StringFormatX.MultiDayAfterCloseData=multiAfterCloseData;this.ChartCorssCursor.StringFormatX.DayOffset=this.DayOffset;;if(this.ChartCorssCursor.CallAcutionXOperator){this.ChartCorssCursor.CallAcutionXOperator.BeforeOpenData=this.BeforeOpenData;this.ChartCorssCursor.CallAcutionXOperator.AfterCloseData=this.AfterCloseData;this.ChartCorssCursor.CallAcutionXOperator.MultiDayBeforeOpenData=multiBeforeOpenData;this.ChartCorssCursor.CallAcutionXOperator.MultiDayAfterCloseData=multiAfterCloseData;this.ChartCorssCursor.CallAcutionXOperator.DayOffset=this.DayOffset;}}if(this.ExtendChartPaint[0]){this.ExtendChartPaint[0].Symbol=this.Symbol;this.ExtendChartPaint[0].Name=this.Name;}for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];item.MainData=minuteData;//绑定主图数据
|
|
7789
|
+
}};//绑定分钟叠加指标数据(持仓量)
|
|
7768
7790
|
this.BindOverlayPositionData=function(minuteData,yClose){var _this35=this;if(this.Frame.SubFrame.length<2)return;var chart=null;var frame=null;var subFrame=this.Frame.SubFrame[1];//第2个窗口
|
|
7769
7791
|
var overlayFrame=null;for(var i=0;i<subFrame.OverlayIndex.length;++i){var item=subFrame.OverlayIndex[i];if(item.Identify=='Position_Line_Frame'){overlayFrame=item;break;}}if(!overlayFrame){overlayFrame=new OverlayIndexItem();overlayFrame.Identify='Position_Line_Frame';if(this.ClassName=="MinuteChartContainer")frame=new OverlayMinuteFrame();else frame=new OverlayMinuteHScreenFrame();frame.Canvas=this.Canvas;frame.MainFrame=subFrame.Frame;frame.ChartBorder=subFrame.Frame.ChartBorder;frame.GlobalOption=this.GlobalOption;overlayFrame.Frame=frame;frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=frame.ChartBorder;frame.YSplitOperator.SplitCount=subFrame.Frame.YSplitOperator.SplitCount;frame.YSplitOperator.GetEventCallback=function(id){return _this35.GetEventCallback(id);};frame.YSplitOperator.OverlayIdentify=overlayFrame.Identify;var chart=new ChartMinutePositionLine();chart.Canvas=this.Canvas;chart.Name='Position-Line';chart.ChartBorder=frame.ChartBorder;chart.ChartFrame=frame;chart.Identify=overlayFrame.Identify;chart.Color=g_JSChartResource.Minute.PositionColor;overlayFrame.ChartPaint.push(chart);subFrame.OverlayIndex.push(overlayFrame);subFrame.Frame.RightFrame=frame;//右边坐标绑定到主坐标上
|
|
7770
7792
|
}else{frame=overlayFrame.Frame;for(var i=0;i<overlayFrame.ChartPaint.length;++i){var item=overlayFrame.ChartPaint[i];if(item.Name=='Position-Line'){chart=item;break;}}if(!chart)//图形不存在就创建一个
|
|
@@ -8851,7 +8873,7 @@ if(MARKET_SUFFIX_NAME.IsHSX(upperSymbol))return this.GetHSX(upperSymbol);if(MARK
|
|
|
8851
8873
|
{var splitData=g_IPETimeData.GetSplitData(upperSymbol);if(!splitData)return null;return this.GetFutures(splitData);}};}//走势图刻度分钟线
|
|
8852
8874
|
function MinuteCoordinateData(){//沪深走势图时间刻度
|
|
8853
8875
|
var SHZE_MINUTE_X_COORDINATE={Full://完整模式
|
|
8854
|
-
[[0,0,"rgb(200,200,200)","09:30"],//[0]=索引 [1]=线段类型 [2]=文字颜色(弃用) [3]=刻度文字 [4]=线段颜色
|
|
8876
|
+
[[0,0,"rgb(200,200,200)","09:30"],//[0]=索引 [1]=线段类型 [2]=文字颜色(弃用) [3]=刻度文字 [4]=线段颜色 [5]=背景色
|
|
8855
8877
|
[31,0,"RGB(200,200,200)","10:00"],[61,0,"RGB(200,200,200)","10:30"],[91,0,"RGB(200,200,200)","11:00"],[122,1,"RGB(200,200,200)","13:00"],[152,0,"RGB(200,200,200)","13:30"],[182,0,"RGB(200,200,200)","14:00"],[212,0,"RGB(200,200,200)","14:30"],[242,1,"RGB(200,200,200)","15:00"]],Simple://简洁模式
|
|
8856
8878
|
[[0,0,"rgb(200,200,200)","09:30"],[61,0,"RGB(200,200,200)","10:30"],[122,1,"RGB(200,200,200)","13:00"],[182,0,"RGB(200,200,200)","14:00"],[242,1,"RGB(200,200,200)","15:00"]],Min://最小模式
|
|
8857
8879
|
[[0,0,"rgb(200,200,200)","09:30"],[122,1,"RGB(200,200,200)","13:00"],[242,1,"RGB(200,200,200)","15:00"]],Count:243,MiddleCount:122,GetData:function GetData(width){if(width<200)return this.Min;else if(width<400)return this.Simple;return this.Full;}};//上海股票期权时间刻度
|
|
@@ -10282,7 +10304,8 @@ if(color)result.Color[0]=color.toLowerCase();if(color2)result.Color[1]=color2.to
|
|
|
10282
10304
|
{drawData[i]=null;var value=this.GetDataByIndex(data,i);if(!value.Result)continue;var value2=this.GetDataByIndex(data2,i);if(!value2.Result)continue;var item={Value:value.Data,Value2:value2.Data};drawData[i]=item;}}}return result;};//DRAWKLINE(HIGH,OPEN,LOW,CLOSE).
|
|
10283
10305
|
//用法:以HIGH为最高价,OPEN为开盘价,LOW为最低,CLOSE收盘画K线
|
|
10284
10306
|
this.DRAWKLINE=function(high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE'};var count=Math.max(high.length,open.length,low.length,close.length);for(var _i116=0;_i116<count;++_i116){var _item18={Open:null,High:null,Low:null,Close:null};if(_i116<high.length&&_i116<open.length&&_i116<low.length&&_i116<close.length){_item18.Open=open[_i116];_item18.High=high[_i116];_item18.Low=low[_i116];_item18.Close=close[_i116];}drawData[_i116]=_item18;}return result;};//满足条件画一根K线
|
|
10285
|
-
this.DRAWKLINE_IF=function(condition,high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE_IF'};var count=Math.max(condition.length,high.length,open.length,low.length,close.length);for(var _i117=0;_i117<count;++_i117){var _item19={Open:null,High:null,Low:null,Close:null};if(_i117<high.length&&_i117<open.length&&_i117<low.length&&_i117<close.length&&_i117<condition.length){if(condition[_i117]){_item19.Open=open[_i117];_item19.High=high[_i117];_item19.Low=low[_i117];_item19.Close=close[_i117];}}drawData[_i117]=_item19;}return result;}
|
|
10307
|
+
this.DRAWKLINE_IF=function(condition,high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE_IF'};var count=Math.max(condition.length,high.length,open.length,low.length,close.length);for(var _i117=0;_i117<count;++_i117){var _item19={Open:null,High:null,Low:null,Close:null};if(_i117<high.length&&_i117<open.length&&_i117<low.length&&_i117<close.length&&_i117<condition.length){if(condition[_i117]){_item19.Open=open[_i117];_item19.High=high[_i117];_item19.Low=low[_i117];_item19.Close=close[_i117];}}drawData[_i117]=_item19;}return result;};//叠加一个K线
|
|
10308
|
+
this.DRAWOVERLAYKLINE=function(open,high,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWOVERLAYKLINE'};var count=Math.max(high.length,open.length,low.length,close.length);var kData=this.SymbolData.Data.Data;for(var i=0;i<count;++i){var item={Open:null,High:null,Low:null,Close:null};var kItem=kData[i];if(i<high.length&&i<open.length&&i<low.length&&i<close.length&&IFrameSplitOperator.IsNumber(open[i])&&IFrameSplitOperator.IsNumber(high[i])&&IFrameSplitOperator.IsNumber(low[i])&&IFrameSplitOperator.IsNumber(low[i])){item.Open=open[i];item.High=high[i];item.Low=low[i];item.Close=close[i];item.Date=kItem.Date;if(IFrameSplitOperator.IsNumber(kItem.Time))item.Time=kItem.Time;}drawData[i]=item;}return result;};/*
|
|
10286
10309
|
DRAWCOLORKLINE 绘制K线
|
|
10287
10310
|
用法:
|
|
10288
10311
|
DRAWCOLORKLINE(Cond,Color,Empty);
|
|
@@ -10467,7 +10490,7 @@ this.BACKGROUND=function(color,borderColor,left,right,top,bottom){var bg={Margin
|
|
|
10467
10490
|
this.CKLINE=function(color,lineWidth,lineType,lineDotted){var drawData={Color:color,LineWidth:1,LineType:0,LineDot:[3,3]};if(IFrameSplitOperator.IsPlusNumber(lineWidth))drawData.LineWidth=lineWidth;if(IFrameSplitOperator.IsPlusNumber(lineType))drawData.LineType=lineType;if(lineDotted){var ary=lineDotted.split(',');var dotted=[];for(var i in ary){var item=ary[i];if(!item)continue;var value=parseInt(ary[i]);if(value<=0)continue;dotted.push(value);}if(dotted.length>0)drawData.LineDotted=dotted;}drawData.Data=[];for(var i=0;i<this.SymbolData.Data.Data.length;++i){var item=this.SymbolData.Data.Data[i];drawData.Data[i]={High:item.High,Low:item.Low};}return drawData;};}JSDraw.prototype.CalculateDrawLine=function(lineCache){lineCache.List=[];for(var _i119=lineCache.Start.ID;_i119<=lineCache.End.ID;++_i119){lineCache.List.push(_i119);}var height=Math.abs(lineCache.Start.Value-lineCache.End.Value);var width=lineCache.List.length-1;var result=[];result.push({ID:lineCache.Start.ID,Value:lineCache.Start.Value});//第1个点
|
|
10468
10491
|
if(lineCache.Start.Value>lineCache.End.Value){for(var _i120=1;_i120<lineCache.List.length-1;++_i120){var value=height*(lineCache.List.length-1-_i120)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i120],Value:value});}}else{for(var _i121=1;_i121<lineCache.List.length-1;++_i121){var value=height*_i121/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i121],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
|
|
10469
10492
|
return result;};//是否有是有效的数字
|
|
10470
|
-
JSDraw.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSDraw.prototype.IsDrawFunction=function(name){var setFunctionName=new _set2.default(["STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF',"DRAWCOLORKLINE",'PLOYLINE','POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS","DRAWTEXTREL",'DRAWOVERLAYLINE',"FILLRGN","FILLRGN2","FILLTOPRGN","FILLBOTTOMRGN","FILLVERTICALRGN","FLOATRGN","DRAWSL","DRAWGBK2","DRAWGBK_DIV","VERTLINE","HORLINE","TIPICON"]);if(setFunctionName.has(name))return true;return false;};JSDraw.prototype.RemoveZero=function(strValue){while(strValue.length>0){var index=strValue.length-1;var ch=strValue[index];if(ch=="0"){strValue=strValue.substr(0,index);}else if(ch=="."){strValue=strValue.substr(0,index);break;}else{break;}}return strValue;};//http://www.newone.com.cn/helpcontroller/index?code=zszy_pc
|
|
10493
|
+
JSDraw.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSDraw.prototype.IsDrawFunction=function(name){var setFunctionName=new _set2.default(["STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF',"DRAWCOLORKLINE",'PLOYLINE',"DRAWOVERLAYKLINE",'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS","DRAWTEXTREL",'DRAWOVERLAYLINE',"FILLRGN","FILLRGN2","FILLTOPRGN","FILLBOTTOMRGN","FILLVERTICALRGN","FLOATRGN","DRAWSL","DRAWGBK2","DRAWGBK_DIV","VERTLINE","HORLINE","TIPICON"]);if(setFunctionName.has(name))return true;return false;};JSDraw.prototype.RemoveZero=function(strValue){while(strValue.length>0){var index=strValue.length-1;var ch=strValue[index];if(ch=="0"){strValue=strValue.substr(0,index);}else if(ch=="."){strValue=strValue.substr(0,index);break;}else{break;}}return strValue;};//http://www.newone.com.cn/helpcontroller/index?code=zszy_pc
|
|
10471
10494
|
var DYNAINFO_ARGUMENT_ID={YCLOSE:3,OPEN:4,HIGH:5,LOW:6,CLOSE:7,VOL:8,AMOUNT:10,AMPLITUDE:13,//振幅
|
|
10472
10495
|
INCREASE:14,//涨幅
|
|
10473
10496
|
EXCHANGERATE:37//换手率
|
|
@@ -11066,7 +11089,7 @@ this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[
|
|
|
11066
11089
|
if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);args.push(value);}if(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
|
|
11067
11090
|
var bResult=this.Algorithm.IFC(args[0]);var item=bResult?node.Arguments[1]:node.Arguments[2];var value;if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);node.Out=value;if(item.Draw)node.Draw=item.Draw;return node.Out;}//JSConsole.Complier.Log('[JSExecute::VisitCallExpression]' , funcName, '(', args.toString() ,')');
|
|
11068
11091
|
if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}switch(funcName){case'DYNAINFO'://行情最新数据
|
|
11069
|
-
node.Out=this.SymbolData.GetLatestCacheData(args[0]);break;case'STICKLINE':node.Draw=this.Draw.STICKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT':node.Draw=this.Draw.DRAWTEXT(args[0],args[1],args[2]);node.Out=[];break;case'DRAWTEXT_FIX':node.Draw=this.Draw.DRAWTEXT_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'SUPERDRAWTEXT':node.Draw=this.Draw.SUPERDRAWTEXT(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWICON':node.Draw=this.Draw.DRAWICON(args[0],args[1],args[2]);node.Out=[];break;case"ICON":node.Draw=this.Draw.ICON(args[0],args[1]);node.Out=[];break;case"TIPICON":node.Draw=this.Draw.TIPICON(args[0],args[1],args[2],args[3]);node.Out=[];break;case"BACKGROUND":node.Draw=this.Draw.BACKGROUND(args[0],args[1],args[2],args[3],args[4],args[5]);node.Out=[];break;case"CKLINE":node.Draw=this.Draw.CKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWLINE':node.Draw=this.Draw.DRAWLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData;break;case'DRAWBAND':node.Draw=this.Draw.DRAWBAND(args[0],args[1],args[2],args[3]);node.Out=[];break;case"FILLRGN":if(args.length>=4)node.Draw=this.Draw.FILLRGN2(args);else node.Draw=this.Draw.FILLRGN(args[0],args[1],args[2]);node.Out=[];break;case"FLOATRGN":node.Draw=this.Draw.FLOATRGN(args);node.Out=[];break;case"FILLTOPRGN":node.Draw=this.Draw.FILLBGRGN(1,args);node.Out=[];break;case"FILLBOTTOMRGN":node.Draw=this.Draw.FILLBGRGN(0,args);node.Out=[];break;case"FILLVERTICALRGN":node.Draw=this.Draw.FILLVERTICALRGN(args);node.Out=[];break;case'DRAWKLINE':case"DRAWKLINE1":node.Draw=this.Draw.DRAWKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWKLINE_IF':node.Draw=this.Draw.DRAWKLINE_IF(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWCOLORKLINE":node.Draw=this.Draw.DRAWCOLORKLINE(args[0],args[1],args[2]);node.Out=[];break;case'PLOYLINE':case'POLYLINE':node.Draw=this.Draw.POLYLINE(args[0],args[1]);node.Out=node.Draw.DrawData;break;case'DRAWNUMBER':node.Draw=this.Draw.DRAWNUMBER(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Value;break;case"DRAWNUMBER_FIX":node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData.Value;break;case"DRAWCHANNEL":node.Draw=this.Draw.DRAWCHANNEL(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'RGB':node.Out=this.Draw.RGB(args[0],args[1],args[2]);break;case"RGBA":node.Out=this.Draw.RGBA(args[0],args[1],args[2],args[3]);break;case"UPCOLOR":node.Out=this.Draw.UPCOLOR(args[0]);break;case"DOWNCOLOR":node.Out=this.Draw.DOWNCOLOR(args[0]);break;case"XMOVE":node.Out=this.Draw.XMOVE(args[0]);break;case"YMOVE":node.Out=this.Draw.YMOVE(args[0]);break;case'PARTLINE':node.Draw=this.Draw.PARTLINE(args);node.Out=[];break;case'DRAWGBK':node.Draw=this.Draw.DRAWGBK(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWGBK2':node.Draw=this.Draw.DRAWGBK2(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWGBK_DIV":node.Draw=this.Draw.DRAWGBK_DIV(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT_LINE':node.Draw=this.Draw.DRAWTEXT_LINE(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'DRAWRECTREL':node.Draw=this.Draw.DRAWRECTREL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWTEXTREL":node.Draw=this.Draw.DRAWTEXTREL(args[0],args[1],args[2]);node.Out=[];break;case"DRAWTEXTABS":node.Draw=this.Draw.DRAWTEXTABS(args[0],args[1],args[2]);node.Out=[];break;case"DRAWOVERLAYLINE":node.Draw=this.Draw.DRAWOVERLAYLINE(args[0],args[1],args[2]);node.Out=node.Draw.DrawData.Data;break;case"DRAWSL":node.Draw=this.Draw.DRAWSL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"VERTLINE":node.Draw=this.Draw.VERTLINE(args[0],args[1]);node.Out=node.Draw.DrawData.Data;break;case"HORLINE":node.Draw=this.Draw.HORLINE(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case'CODELIKE':node.Out=this.SymbolData.CODELIKE(args[0]);break;case'NAMELIKE':case"NAMEINCLUDE":node.Out=this.SymbolData.NAMELIKE(args[1]);break;case'REFDATE':node.Out=this.SymbolData.REFDATE(args[0],args[1]);break;case'FINANCE':node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINONE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"GPJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"SCJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"MARGIN":node.Out=this.SymbolData.GetMarginCacheData(args[0],node);break;case"HK2SHSZ":node.Out=this.SymbolData.GetHKToSHSZCacheData(args[0],node);break;case"NEWS":node.Out=this.SymbolData.GetNewsAnalysisCacheData(args[0],node);break;case'UPCOUNT':case'DOWNCOUNT':node.Out=this.SymbolData.GetIndexIncreaseCacheData(funcName,args[0],node);break;case'SF':node.Out=this.SymbolData.GetSectionFinanceCacheData(args[0],args[1],args[2],node);break;case'LOADAPIDATA':node.Out=this.SymbolData.GetCustomApiData(args);break;case"STKINDI":case"CALCSTOCKINDEX":node.Out=this.SymbolData.GetScriptIndexOutData(args,node,funcName);break;case"SOUND":node.Draw=this.Draw.SOUND(args[0]);node.Out=[];break;case"PLAYSOUND":node.Draw=this.Draw.PLAYSOUND(args[0],args[1]);node.Out=[];break;case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':node.Out=this.SymbolData.GetOtherSymolCacheData({FunctionName:funcName,Args:args});break;case"INBLOCK":node.Out=this.SymbolData.IsInBlock(args[0],node);break;case'COVER_C':case'COVER_O':case'COVER_H':case'COVER_L':case'COVER_A':case'COVER_V':if(args.length==2)return this.SymbolData.GetSymbolPeriodCacheData2(JSComplierHelper.GetConvertValueName(funcName),args[0],args[1]);return this.SymbolData.GetSymbolPeriodCacheData(JSComplierHelper.GetConvertValueName(funcName),args[0]);case"SYSPARAM":return this.SymbolData.SysParam(args[0],this);case"TESTSKIP":var bExit=this.Algorithm.TESTSKIP(args[0],node);node.Out=null;if(bExit){this.Interrupt.Exit=true;if(node&&node.Marker){var marker=node.Marker;this.Interrupt.Line=marker.Line;this.Interrupt.Index=marker.Index;this.Interrupt.Column=marker.Column;}}break;default:node.Out=this.Algorithm.CallFunction(funcName,args,node,this.SymbolData);break;}return node.Out;};//赋值
|
|
11092
|
+
node.Out=this.SymbolData.GetLatestCacheData(args[0]);break;case'STICKLINE':node.Draw=this.Draw.STICKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT':node.Draw=this.Draw.DRAWTEXT(args[0],args[1],args[2]);node.Out=[];break;case'DRAWTEXT_FIX':node.Draw=this.Draw.DRAWTEXT_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'SUPERDRAWTEXT':node.Draw=this.Draw.SUPERDRAWTEXT(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWICON':node.Draw=this.Draw.DRAWICON(args[0],args[1],args[2]);node.Out=[];break;case"ICON":node.Draw=this.Draw.ICON(args[0],args[1]);node.Out=[];break;case"TIPICON":node.Draw=this.Draw.TIPICON(args[0],args[1],args[2],args[3]);node.Out=[];break;case"BACKGROUND":node.Draw=this.Draw.BACKGROUND(args[0],args[1],args[2],args[3],args[4],args[5]);node.Out=[];break;case"CKLINE":node.Draw=this.Draw.CKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWLINE':node.Draw=this.Draw.DRAWLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData;break;case'DRAWBAND':node.Draw=this.Draw.DRAWBAND(args[0],args[1],args[2],args[3]);node.Out=[];break;case"FILLRGN":if(args.length>=4)node.Draw=this.Draw.FILLRGN2(args);else node.Draw=this.Draw.FILLRGN(args[0],args[1],args[2]);node.Out=[];break;case"FLOATRGN":node.Draw=this.Draw.FLOATRGN(args);node.Out=[];break;case"FILLTOPRGN":node.Draw=this.Draw.FILLBGRGN(1,args);node.Out=[];break;case"FILLBOTTOMRGN":node.Draw=this.Draw.FILLBGRGN(0,args);node.Out=[];break;case"FILLVERTICALRGN":node.Draw=this.Draw.FILLVERTICALRGN(args);node.Out=[];break;case'DRAWKLINE':case"DRAWKLINE1":node.Draw=this.Draw.DRAWKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWKLINE_IF':node.Draw=this.Draw.DRAWKLINE_IF(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWOVERLAYKLINE":node.Draw=this.Draw.DRAWOVERLAYKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWCOLORKLINE":node.Draw=this.Draw.DRAWCOLORKLINE(args[0],args[1],args[2]);node.Out=[];break;case'PLOYLINE':case'POLYLINE':node.Draw=this.Draw.POLYLINE(args[0],args[1]);node.Out=node.Draw.DrawData;break;case'DRAWNUMBER':node.Draw=this.Draw.DRAWNUMBER(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Value;break;case"DRAWNUMBER_FIX":node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData.Value;break;case"DRAWCHANNEL":node.Draw=this.Draw.DRAWCHANNEL(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'RGB':node.Out=this.Draw.RGB(args[0],args[1],args[2]);break;case"RGBA":node.Out=this.Draw.RGBA(args[0],args[1],args[2],args[3]);break;case"UPCOLOR":node.Out=this.Draw.UPCOLOR(args[0]);break;case"DOWNCOLOR":node.Out=this.Draw.DOWNCOLOR(args[0]);break;case"XMOVE":node.Out=this.Draw.XMOVE(args[0]);break;case"YMOVE":node.Out=this.Draw.YMOVE(args[0]);break;case'PARTLINE':node.Draw=this.Draw.PARTLINE(args);node.Out=[];break;case'DRAWGBK':node.Draw=this.Draw.DRAWGBK(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWGBK2':node.Draw=this.Draw.DRAWGBK2(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWGBK_DIV":node.Draw=this.Draw.DRAWGBK_DIV(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT_LINE':node.Draw=this.Draw.DRAWTEXT_LINE(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'DRAWRECTREL':node.Draw=this.Draw.DRAWRECTREL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWTEXTREL":node.Draw=this.Draw.DRAWTEXTREL(args[0],args[1],args[2]);node.Out=[];break;case"DRAWTEXTABS":node.Draw=this.Draw.DRAWTEXTABS(args[0],args[1],args[2]);node.Out=[];break;case"DRAWOVERLAYLINE":node.Draw=this.Draw.DRAWOVERLAYLINE(args[0],args[1],args[2]);node.Out=node.Draw.DrawData.Data;break;case"DRAWSL":node.Draw=this.Draw.DRAWSL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"VERTLINE":node.Draw=this.Draw.VERTLINE(args[0],args[1]);node.Out=node.Draw.DrawData.Data;break;case"HORLINE":node.Draw=this.Draw.HORLINE(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case'CODELIKE':node.Out=this.SymbolData.CODELIKE(args[0]);break;case'NAMELIKE':case"NAMEINCLUDE":node.Out=this.SymbolData.NAMELIKE(args[1]);break;case'REFDATE':node.Out=this.SymbolData.REFDATE(args[0],args[1]);break;case'FINANCE':node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINONE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"GPJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"SCJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"MARGIN":node.Out=this.SymbolData.GetMarginCacheData(args[0],node);break;case"HK2SHSZ":node.Out=this.SymbolData.GetHKToSHSZCacheData(args[0],node);break;case"NEWS":node.Out=this.SymbolData.GetNewsAnalysisCacheData(args[0],node);break;case'UPCOUNT':case'DOWNCOUNT':node.Out=this.SymbolData.GetIndexIncreaseCacheData(funcName,args[0],node);break;case'SF':node.Out=this.SymbolData.GetSectionFinanceCacheData(args[0],args[1],args[2],node);break;case'LOADAPIDATA':node.Out=this.SymbolData.GetCustomApiData(args);break;case"STKINDI":case"CALCSTOCKINDEX":node.Out=this.SymbolData.GetScriptIndexOutData(args,node,funcName);break;case"SOUND":node.Draw=this.Draw.SOUND(args[0]);node.Out=[];break;case"PLAYSOUND":node.Draw=this.Draw.PLAYSOUND(args[0],args[1]);node.Out=[];break;case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':node.Out=this.SymbolData.GetOtherSymolCacheData({FunctionName:funcName,Args:args});break;case"INBLOCK":node.Out=this.SymbolData.IsInBlock(args[0],node);break;case'COVER_C':case'COVER_O':case'COVER_H':case'COVER_L':case'COVER_A':case'COVER_V':if(args.length==2)return this.SymbolData.GetSymbolPeriodCacheData2(JSComplierHelper.GetConvertValueName(funcName),args[0],args[1]);return this.SymbolData.GetSymbolPeriodCacheData(JSComplierHelper.GetConvertValueName(funcName),args[0]);case"SYSPARAM":return this.SymbolData.SysParam(args[0],this);case"TESTSKIP":var bExit=this.Algorithm.TESTSKIP(args[0],node);node.Out=null;if(bExit){this.Interrupt.Exit=true;if(node&&node.Marker){var marker=node.Marker;this.Interrupt.Line=marker.Line;this.Interrupt.Index=marker.Index;this.Interrupt.Column=marker.Column;}}break;default:node.Out=this.Algorithm.CallFunction(funcName,args,node,this.SymbolData);break;}return node.Out;};//赋值
|
|
11070
11093
|
this.VisitAssignmentExpression=function(node){var left=node.Left;if(left.Type!=Syntax.Identifier)this.ThrowUnexpectedNode(node);var varName=left.Name;var right=node.Right;var value=null,drawValue=null;if(right.Type==Syntax.BinaryExpression||right.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(right);else if(right.Type==Syntax.CallExpression){value=this.VisitCallExpression(right);if(right.Draw)drawValue=right.Draw;}else if(right.Type==Syntax.Literal){value=right.Value;if(IFrameSplitOperator.IsString(value)&&right.Value.indexOf("$")>0)value=this.SymbolData.GetOtherSymolCacheData({Literal:value});}else if(right.Type==Syntax.Identifier)//右值是变量
|
|
11071
11094
|
value=this.ReadVariable(right.Name,right);else if(right.Type==Syntax.MemberExpression)value=this.ReadMemberVariable(right);else if(right.Type==Syntax.UnaryExpression){if(right.Operator=='-'){var tempValue=this.GetNodeValue(right.Argument);value=this.Algorithm.Subtract(0,tempValue);}else{value=right.Argument.Value;}}if(JS_EXECUTE_DEBUG_LOG)JSConsole.Complier.Log('[JSExecute::VisitAssignmentExpression]',varName,' = ',value);if(drawValue)this.VarDrawTable.set(varName,drawValue);this.VarTable.set(varName,value);};//逻辑运算
|
|
11072
11095
|
this.VisitBinaryExpression=function(node){var stack=[];stack.push(node);var temp=null;while(stack.length!=0){temp=stack[stack.length-1];if(temp.Left&&node!=temp.Left&&node!=temp.Right){stack.push(temp.Left);}else if(temp.Right&&node!=temp.Right){stack.push(temp.Right);}else{var value=stack.pop();if(value.Type==Syntax.BinaryExpression)//只遍历操作符就可以
|
|
@@ -11256,7 +11279,9 @@ this.CreateMACD=function(hqChart,windowIndex,varItem,id){var chartMACD=new Chart
|
|
|
11256
11279
|
hqChart.ChartPaint.push(line);};this.CreateVolStick=function(hqChart,windowIndex,varItem,id,hisData){var chart=new ChartVolStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.KLineDrawType=hqChart.KLineDrawType;//设置K线显示类型
|
|
11257
11280
|
chart.Identify=this.Guid;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.UpColor)chart.UpColor=varItem.UpColor;if(varItem.DownColor)chart.DownColor=varItem.DownColor;var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;chart.HistoryData=hisData;this.ReloadChartResource(hqChart,windowIndex,chart);var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);hqChart.TitlePaint[titleIndex].Data[id]=titleData;this.SetTitleData(titleData,chart);this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateBand=function(hqChart,windowIndex,varItem,id){var chart=new ChartBand();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.FirstColor=varItem.Draw.Color[0];chart.SecondColor=varItem.Draw.Color[1];chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreateFillRGN=function(hqChart,windowIndex,varItem,id){var chart=new ChartLineArea();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);hqChart.ChartPaint.push(chart);};this.CreateFillRGN2=function(hqChart,windowIndex,varItem,id){var chart=new ChartFillRGN();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreateFillBGRGN=function(hqChart,windowIndex,varItem,id){var chart=new ChartFillBGRGN();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};this.CreateFLOATRGN=function(hqChart,windowIndex,varItem,id){var chart=new ChartFLOATRGN();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;hqChart.ChartPaint.push(chart);};//创建K线图
|
|
11258
11281
|
this.CreateKLine=function(hqChart,windowIndex,varItem,id){var chart=new ChartKLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.Identify=this.Guid;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;chart.IsShowMaxMinPrice=false;chart.IsShowKTooltip=false;if(varItem.Color)//如果设置了颜色,使用外面设置的颜色
|
|
11259
|
-
chart.UnchagneColor=chart.DownColor=chart.UpColor=this.GetColor(varItem.Color);hqChart.ChartPaint.push(chart);};this.
|
|
11282
|
+
chart.UnchagneColor=chart.DownColor=chart.UpColor=this.GetColor(varItem.Color);hqChart.ChartPaint.push(chart);};this.CreateOverlayKLine=function(hqChart,windowIndex,varItem,id){var chart=null;if(hqChart.IsKLineContainer())chart=new ChartOverlayKLine();else if(hqChart.IsMinuteContainer())chart=new ChartOverlayMinutePriceLine();else return;chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.Identify=this.Guid;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);//如果设置了颜色,使用外面设置的颜色
|
|
11283
|
+
else chart.Color=this.GetDefaultColor(id);chart.Data.Data=varItem.Draw.DrawData;chart.MainData=hqChart.ChartPaint[0].Data;//绑定K线
|
|
11284
|
+
hqChart.ChartPaint.push(chart);};this.CreateDrawColorKLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartColorKline();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.DrawName="DRAWCOLORKLINE";chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData;if(IFrameSplitOperator.IsBool(varItem.Draw.IsEmptyBar))chart.IsEmptyBar=varItem.Draw.IsEmptyBar;if(varItem.Draw.Color)chart.Color=varItem.Draw.Color;hqChart.ChartPaint.push(chart);};this.CreatePolyLine=function(hqChart,windowIndex,varItem,id){var line=new ChartLine();line.Canvas=hqChart.Canvas;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)line.Color=this.GetColor(varItem.Color);else line.Color=this.GetDefaultColor(id);if(varItem.IsDotLine)line.IsDotLine=true;//虚线
|
|
11260
11285
|
if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)line.LineWidth=width;}var titleIndex=windowIndex+1;line.Data.Data=varItem.Draw.DrawData;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,' ',line.Color);//给一个空的标题
|
|
11261
11286
|
hqChart.ChartPaint.push(line);};this.CreateChartSlopeLine=function(hqChart,windowIndex,varItem,id){var line=new ChartSlopeLine();line.Canvas=hqChart.Canvas;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)line.Color=this.GetColor(varItem.Color);else line.Color=this.GetDefaultColor(id);if(varItem.IsDotLine)line.IsDotLine=true;//虚线
|
|
11262
11287
|
if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)line.LineWidth=width;}var titleIndex=windowIndex+1;line.Data.Data=varItem.Draw.DrawData.Data;line.Option=varItem.Draw.DrawData.Option;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,null,line.Color);//给一个空的标题
|
|
@@ -11303,7 +11328,7 @@ if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.Y
|
|
|
11303
11328
|
}
|
|
11304
11329
|
*/for(var _i150 in this.OutVar){var _item32=this.OutVar[_i150];if(_item32.IsExData===true)continue;//扩展数据不显示图形
|
|
11305
11330
|
if(_item32.Type==1000||_item32.Type==1001)continue;//数据集合, 字符串
|
|
11306
|
-
if(_item32.Type==0){if(_item32.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item32,_i150,_item32.Type);else this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==1){switch(_item32.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item32,_i150);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item32,_i150);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item32,_i150);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item32,_i150);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item32,_i150);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item32,_i150);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item32,_i150);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item32,_i150);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item32,_i150);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item32,_i150);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item32,_i150);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item32,_i150);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item32,_i150);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item32,_i150);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item32,_i150);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item32,_i150);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item32,_i150);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item32,_i150);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item32,_i150);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item32,_i150);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item32,_i150);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item32,_i150);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item32,_i150);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item32,_i150);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item32,_i150);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item32,_i150);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item32,_i150);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item32,_i150);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item32,_i150);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item32,_i150);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item32,_i150);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item32,_i150);break;default:{var find=g_ScriptIndexChartFactory.Get(_item32.Draw.DrawType);//外部挂接
|
|
11331
|
+
if(_item32.Type==0){if(_item32.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item32,_i150,_item32.Type);else this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==1){switch(_item32.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item32,_i150);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item32,_i150);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item32,_i150);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item32,_i150);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item32,_i150);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item32,_i150);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item32,_i150);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item32,_i150);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item32,_i150);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item32,_i150);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item32,_i150);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item32,_i150);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item32,_i150);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item32,_i150);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item32,_i150);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item32,_i150);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item32,_i150);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item32,_i150);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item32,_i150);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item32,_i150);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item32,_i150);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item32,_i150);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item32,_i150);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item32,_i150);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item32,_i150);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item32,_i150);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item32,_i150);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item32,_i150);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item32,_i150);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item32,_i150);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item32,_i150);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item32,_i150);break;default:{var find=g_ScriptIndexChartFactory.Get(_item32.Draw.DrawType);//外部挂接
|
|
11307
11332
|
if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item32,_i150,this);}break;}}else if(_item32.Type==2){this.CreateMACD(hqChart,windowIndex,_item32,_i150);}else if(_item32.Type==3){this.CreatePointDot(hqChart,windowIndex,_item32,_i150,hisData);}else if(_item32.Type==4){this.CreateLineStick(hqChart,windowIndex,_item32,_i150);}else if(_item32.Type==5){this.CreateStick(hqChart,windowIndex,_item32,_i150);}else if(_item32.Type==6){this.CreateVolStick(hqChart,windowIndex,_item32,_i150,hisData);}else if(_item32.Type==7){this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==8){this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==9){this.CreateArea(hqChart,windowIndex,_item32,_i150);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i150<titlePaint.Data.length)//设置标题数值 小数位数和格式
|
|
11308
11333
|
{if(this.StringFormat>0)titlePaint.Data[_i150].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i150].FloatPrecision=this.FloatPrecision;if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments);}}}var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Title=this.Name;hqChart.TitlePaint[titleIndex].Identify=this.Guid;//指标ID
|
|
11309
11334
|
hqChart.TitlePaint[titleIndex].ArgumentsText=null;hqChart.TitlePaint[titleIndex].Script=this;if(!this.IsShortTitle){var indexParam='';for(var _i151=0;_i151<this.Arguments.length;++_i151){var _item33=this.Arguments[_i151];if(indexParam.length>0)indexParam+=',';indexParam+=_item33.Value.toString();}if(indexParam.length>0)hqChart.TitlePaint[titleIndex].ArgumentsText='('+indexParam+')';}if(this.TitleFont)hqChart.TitlePaint[titleIndex].Font=this.TitleFont;return true;};//给一个默认的颜色
|
|
@@ -12587,7 +12612,7 @@ function HQChartScriptWorker(){this.Create=function(){var _this60=this;addEventL
|
|
|
12587
12612
|
hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,Stock:{Symbol:message.Symbol},Request:{MaxDataCount:500,MaxMinuteDayCount:5},Period:message.Period,Right:message.Right,Data:hisData};if(IFrameSplitOperator.IsNumber(message.HQDataType))stockObj.HQDataType=message.HQDataType;indexConsole.ExecuteScript(stockObj);};this.OnRecvMessage=function(message){var data=message.data;if(!data)return;if(data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT){if(!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex))return;for(var i=0;i<data.AryIndex.length;++i){var item=data.AryIndex[i];this.ExecuteScript(item,data);}}};this.OnExecuteFinish=function(data,indexInfo,jsExectute){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT};postMessage(message);};this.OnExecuteError=function(error,indexInfo){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
12588
12613
|
* 版本信息输出
|
|
12589
12614
|
*
|
|
12590
|
-
*/var HQCHART_VERSION="1.1.
|
|
12615
|
+
*/var HQCHART_VERSION="1.1.12515";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
12591
12616
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12592
12617
|
// BaseIndex:BaseIndex,
|
|
12593
12618
|
// ChartLine:ChartLine,
|