hqchart 1.1.13238 → 1.1.13246
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/umychart.vue.js +177 -184
- package/package.json +1 -1
- package/src/jscommon/umychart.DialogDrawTool.js +427 -0
- package/src/jscommon/umychart.complier.js +2 -2
- package/src/jscommon/umychart.js +51 -286
- package/src/jscommon/umychart.resource/css/tools.css +102 -0
- package/src/jscommon/umychart.resource/css/umychart.drawtool.dailog.css +98 -0
- package/src/jscommon/umychart.resource/font/drawtool/demo.css +539 -0
- package/src/jscommon/umychart.resource/font/drawtool/demo_index.html +1177 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.css +187 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.js +1 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.json +310 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.ttf +0 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.woff +0 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.woff2 +0 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +54 -289
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +482 -289
package/lib/umychart.vue.js
CHANGED
|
@@ -1249,7 +1249,8 @@ this.CreateDepthChartContainer=function(option){var chart=null;chart=new DepthCh
|
|
|
1249
1249
|
this.SetOption=function(option){//toolbar按钮风格
|
|
1250
1250
|
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;default:return false;}if(!chart)return false;this.JSChartContainer=chart;chart.DivElement=this.DivElement;if(option.DefaultCursor)chart.DefaultCursor=option.DefaultCursor;if(option.OnCreatedCallback)option.OnCreatedCallback(chart);//是否自动更新
|
|
1251
1251
|
if(option.IsAutoUpdate!=null)chart.IsAutoUpdate=option.IsAutoUpdate;if(option.AutoUpdateFrequency>0)chart.AutoUpdateFrequency=option.AutoUpdateFrequency;//内置菜单
|
|
1252
|
-
if(option.EnablePopMenuV2===true)chart.InitalPopMenu()
|
|
1252
|
+
if(option.EnablePopMenuV2===true)chart.InitalPopMenu();//画图工具
|
|
1253
|
+
if(option.EnableDrawToolDialogV2===true)chart.InitalDrawToolDialog();//注册事件
|
|
1253
1254
|
if(option.EventCallback){for(var i=0;i<option.EventCallback.length;++i){var item=option.EventCallback[i];chart.AddEventCallback(item);}}//设置股票代码
|
|
1254
1255
|
if(!option.Symbol){chart.DrawEmpty();this.JSChartContainer=chart;this.DivElement.JSChart=this;//div中保存一份
|
|
1255
1256
|
}else{chart.Draw();chart.ChangeSymbol(option.Symbol);this.JSChartContainer=chart;this.DivElement.JSChart=this;//div中保存一份
|
|
@@ -1566,9 +1567,10 @@ this.DisplayLatestOption={Timer:null,Enable:false,DelayTime:60*1000*3,LastPoint:
|
|
|
1566
1567
|
this.StockCache={Data:null};//扩展数据缓存数据
|
|
1567
1568
|
this.JSPopMenu;//内置菜单
|
|
1568
1569
|
this.IsShowRightMenu=true;//显示右键菜单
|
|
1570
|
+
this.DialogDrawTool;//画图工具
|
|
1569
1571
|
this.ClearStockCache=function(){this.StockCache.Data=null;};this.InitalPopMenu=function()//初始化弹出窗口
|
|
1570
1572
|
{if(this.JSPopMenu)return;this.JSPopMenu=new JSPopMenu();//内置菜单
|
|
1571
|
-
this.JSPopMenu.Inital();};//obj={ Element:, Canvas: }
|
|
1573
|
+
this.JSPopMenu.Inital();};this.InitalDrawToolDialog=function(){if(this.DialogDrawTool)return;this.DialogDrawTool=new JSDialogDrawTool();this.DialogDrawTool.Inital(this);this.DialogDrawTool.Create();};this.ShowDrawToolDialog=function(x,y){if(!this.DialogDrawTool)return;var rtClient=this.UIElement.getBoundingClientRect();var rtScroll=GetScrollPosition();var top=this.UIElement.offsetTop+15;var left=this.UIElement.offsetWidth-this.DialogDrawTool.DivDialog.offsetWidth-15;left+=rtClient.left+rtScroll.Left;top+=rtClient.top+rtScroll.Top;this.DialogDrawTool.Show(left,top);};this.IsShowDrawToolDialog=function(){if(!this.DialogDrawTool)return false;return this.DialogDrawTool.IsShow();};//obj={ Element:, Canvas: }
|
|
1572
1574
|
this.SetCorssCursorElement=function(obj){if(!obj||!obj.Element||!obj.Canvas)return;this.CorssCursorElement=obj.Element;this.CorssCursorCanvas=obj.Canvas;};this.StopDisplayLatest=function(){this.GlobalOption.IsDisplayLatest=false;if(this.DisplayLatestOption.Timer){clearTimeout(this.DisplayLatestOption.Timer);this.DisplayLatestOption.Timer=null;}};this.StartStopDisplayLatest=function(){var _this4=this;this.StopDisplayLatest();if(!this.DisplayLatestOption.Enable)return;this.DisplayLatestOption.Timer=setTimeout(function(){if(_this4.DisplayLatest){JSConsole.Chart.Log('[JSChartContainer:StartStopDisplayLatest] call this.DisplayLatest()');_this4.DisplayLatest();}},this.DisplayLatestOption.DelayTime);};this.StopDrawDynamicInfo=function(){if(this.DrawDynamicInfoOption.Timer){clearTimeout(this.DrawDynamicInfoOption.Timer);this.DrawDynamicInfoOption.Timer=null;}};this.ChartDestroy=function()//销毁
|
|
1573
1575
|
{this.IsDestroy=true;this.StopAutoUpdate();};this.ChartDestory=this.ChartDestroy;//老版本写错了,需要兼容下
|
|
1574
1576
|
//设置焦点
|
|
@@ -1672,8 +1674,8 @@ var selectedChart={Chart:this.SelectedChart.Selected.Chart,Identify:this.Selecte
|
|
|
1672
1674
|
this.PhoneTouchInfo={Start:{X:touches[0].clientX,Y:touches[0].clientY},End:{X:touches[0].clientX,Y:touches[0].clientY}};if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;var isDrawPictrue=false;if(this.CurrentChartDrawPicture)//画图工具模式
|
|
1673
1675
|
{var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==2)this.SetChartDrawPictureThirdPoint(drag.Click.X,drag.Click.Y,true);else{this.SetChartDrawPictureFirstPoint(drag.Click.X,drag.Click.Y,true);//只有1个点 直接完成
|
|
1674
1676
|
if(this.FinishChartDrawPicturePoint()){if(drawPicture.IsDrawMain)this.Draw();else this.DrawDynamicInfo({Corss:false,Tooltip:false});}}if(e.cancelable)e.preventDefault();return;}else{var pt=this.PointAbsoluteToRelative(touches[0].clientX,touches[0].clientY,true);var drawPictrueData={X:pt.X,Y:pt.Y};var pixelTatio=GetDevicePixelRatio();//鼠标移动坐标是原始坐标 需要乘以放大倍速
|
|
1675
|
-
if(this.GetChartDrawPictureByPoint(drawPictrueData)){drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;drawPictrueData.ChartDrawPicture.IsSelected=true;this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;var
|
|
1676
|
-
if(
|
|
1677
|
+
if(this.GetChartDrawPictureByPoint(drawPictrueData)){drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;drawPictrueData.ChartDrawPicture.IsSelected=true;this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_DRAWPICTURE);//选中画图工具事件
|
|
1678
|
+
if(event&&event.Callback){var sendData={DrawPicture:drawPictrueData.ChartDrawPicture};event.Callback(event,sendData,this);}var drawType=0;if(drawPictrueData.ChartDrawPicture.IsDrawMain)drawType=1;else if(drawPictureActive.Select.Guid&&drawPictureActive.Select.Chart&&drawPictureActive.Select.Chart.IsDrawMain)drawType=1;if(drawType==1)this.Draw();if(e.cancelable)e.preventDefault();return;}}if(bStartTimer){//长按2秒,十字光标
|
|
1677
1679
|
var self=this;this.DragTimer=setTimeout(function(){if(drag.Click.X==drag.LastMove.X&&drag.Click.Y==drag.LastMove.Y)//手指没有移动,出现十字光标
|
|
1678
1680
|
{var mouseDrag=self.MouseDrag;self.MouseDrag=null;if(self.DragMode==JSCHART_DRAG_ID.CLICK_TOUCH_MODE_ID)self.TouchStatus.CorssCursorShow=true;//十字显示
|
|
1679
1681
|
if(self.EnableClickModel===true)self.ClickModel.IsShowCorssCursor=true;self.MoveCorssCursor(drag.Click,e);//移动十字光标
|
|
@@ -1886,7 +1888,7 @@ return true;};//xStep,yStep 移动的偏移量
|
|
|
1886
1888
|
this.MoveChartDrawPicture=function(x,y,isPhone,drag){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;var pixelTatio=GetDevicePixelRatio();//x,y 需要乘以放大倍速
|
|
1887
1889
|
if(isPhone)pixelTatio=1;var xStep=x*pixelTatio;var yStep=y*pixelTatio;//JSConsole.Chart.Log("xStep="+xStep+" yStep="+yStep);
|
|
1888
1890
|
drawPicture.Move(xStep,yStep,drag);return true;};this.FinishChartDrawPicturePoint=function(){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;if(drawPicture.PointCount!=drawPicture.Point.length)return false;if(drawPicture.ClassName=="ChartDrawRuler")//尺子不用保存的
|
|
1889
|
-
{this.CurrentChartDrawPicture=null;return true;}drawPicture.PointMagnetKLine();drawPicture.Status=10;//完成
|
|
1891
|
+
{if(drawPicture.FinishedCallback)drawPicture.FinishedCallback(drawPicture);this.CurrentChartDrawPicture=null;return true;}drawPicture.PointMagnetKLine();drawPicture.Status=10;//完成
|
|
1890
1892
|
drawPicture.PointToValue();this.ChartDrawPicture.push(drawPicture);this.CurrentChartDrawPicture=null;//通知上层画好了
|
|
1891
1893
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FINISH_DRAWPICTURE);//完成画图工具事件
|
|
1892
1894
|
if(event&&event.Callback){var sendData={DrawPicture:drawPicture};event.Callback(event,sendData,this);}else if(drawPicture.FinishedCallback)drawPicture.FinishedCallback(drawPicture);if(drawPicture.OnFinish)drawPicture.OnFinish();if(this.ChartDrawStorage)this.ChartDrawStorage.SaveDrawData(drawPicture);return true;};//选中画图工具 出现单个图形设置菜单
|
|
@@ -1901,7 +1903,7 @@ this.GetActiveDrawPicture=function(){var result={Move:{Guid:null},Select:{Guid:n
|
|
|
1901
1903
|
this.EnableShowCorssCursorLine=function(bShow){if(!this.ChartCorssCursor)return;this.ChartCorssCursor.IsShowCorss=bShow;};//获取扩展画法
|
|
1902
1904
|
this.GetExtendChartByClassName=function(name){for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ClassName==name)return{Index:i,Chart:item};}return null;};//获取多个扩展画法
|
|
1903
1905
|
this.GetExtendChartByClassNameV2=function(name){var aryChart=[];for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ClassName==name){aryChart.push({Index:i,Chart:item});}}if(aryChart.length<=0)return null;return aryChart;};this.GetExtendChartRightWidth=function()//扩展画法右边宽度
|
|
1904
|
-
{var width=0;for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(!item)continue;if(item.ClassName=="StockChip"
|
|
1906
|
+
{var width=0;for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(!item)continue;if(item.ClassName=="StockChip"){if(IFrameSplitOperator.IsNumber(item.Width))width+=item.Width;}}return width;};//删除扩展画法
|
|
1905
1907
|
this.DeleteExtendChart=function(data){if(data.Index>=this.ExtendChartPaint.length)return;if(this.ExtendChartPaint[data.Index]!=data.Chart)return;if(typeof data.Chart.Clear=='function')data.Chart.Clear();this.ExtendChartPaint.splice(data.Index,1);};//删除扩展画法
|
|
1906
1908
|
this.DeleteExtendChartByID=function(id){for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ID==id){this.ExtendChartPaint.splice(i,1);return true;}}return false;};//全屏提示信息 { Title:提示信息, Draw:false/true 是否立即重绘, }
|
|
1907
1909
|
this.EnableSplashScreen=function(enable,option){if(!this.ChartSplashPaint)return;this.ChartSplashPaint.EnableSplash(enable);if(option&&option.Draw===false)return;if(enable)this.DrawSplashScreen(option);else this.Draw();};//设置指标窗口属性 windowItem=SetOption.Windows[i], frameItem=SetOption.Frames[i];
|
|
@@ -1983,9 +1985,7 @@ if(IFrameSplitOperator.IsNonEmptyArray(aryArgs)){srcParam=aryArgs[0];if(IFrameSp
|
|
|
1983
1985
|
case JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID://删除专家系统(交易指标)
|
|
1984
1986
|
if(this.CancelInstructionIndex)this.CancelInstructionIndex();break;case JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID://切换K线类型
|
|
1985
1987
|
if(this.ChangeKLineDrawType&¶m!=null)this.ChangeKLineDrawType(param,aryArgs[1],aryArgs[2]);break;case JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID://缺口提示
|
|
1986
|
-
if(this.ChangePriceGap&&IFrameSplitOperator.IsBool(aryArgs[0])){if(aryArgs[0]==false){this.ChangePriceGap({Enable:aryArgs[0]});}else{if(IFrameSplitOperator.IsNumber(aryArgs[1]))this.ChangePriceGap({Enable:aryArgs[0],Count:aryArgs[1]});}}break;case JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID:if(aryArgs[1]===true){if(this.OverlaySymbol&&aryArgs[0])this.OverlaySymbol(aryArgs[0]);}else if(aryArgs[1]===false){if(this.DeleteOverlaySymbol&&aryArgs[0])this.DeleteOverlaySymbol(aryArgs[0]);}break;case JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:if(this.ClearOverlaySymbol)this.ClearOverlaySymbol();break;case JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID:if(this.ChangeCoordinateType&&aryArgs[0])this.ChangeCoordinateType(aryArgs[0]);break;case JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID:if(aryArgs[0]&&IFrameSplitOperator.IsBool(aryArgs[1])){if(aryArgs[1]==true&&this.AddKLineInfo)this.AddKLineInfo(aryArgs[0],true);else if(aryArgs[1]==false&&this.DeleteKLineInfo)this.DeleteKLineInfo(aryArgs[0]);}break;case JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID:if(this.ClearKLineInfo)this.ClearKLineInfo();break;case JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID:if(param!=null)this.DragMode=param;break;case JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID:if(IFrameSplitOperator.IsBool(srcParam)){if(srcParam){this.CreateExtendChart("SessionBreaksPaint",{});this.Draw();}else{var finder=this.GetExtendChartByClassName("SessionBreaksPaint");if(finder){this.DeleteExtendChartByID(finder.Chart.ID);this.Draw();}}}break;case JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID:var option={Name:'
|
|
1987
|
-
this.SetSizeChange(true);this.Draw();break;case JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:var drawTools=this.GetExtendChartByClassName('DrawToolsButton');if(drawTools){var toolsWidth=drawTools.Chart.Width;var toolsIndex=parseInt(drawTools.Index);for(var i=toolsIndex+1;i<this.ExtendChartPaint.length;++i)//在画图工具后面创建的需要减去工具的宽度
|
|
1988
|
-
{var item=this.ExtendChartPaint[i];if(item.ClassName=='StockChip'){item.Left-=toolsWidth;}}this.DeleteExtendChart(drawTools);this.Frame.ChartBorder.Right-=toolsWidth;this.SetSizeChange(true);this.Draw();}break;case JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID:var option={Name:'筹码分布',ShowType:1,Width:230};var extendChart=this.CreateExtendChart(option.Name,option);//创建扩展图形
|
|
1988
|
+
if(this.ChangePriceGap&&IFrameSplitOperator.IsBool(aryArgs[0])){if(aryArgs[0]==false){this.ChangePriceGap({Enable:aryArgs[0]});}else{if(IFrameSplitOperator.IsNumber(aryArgs[1]))this.ChangePriceGap({Enable:aryArgs[0],Count:aryArgs[1]});}}break;case JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID:if(aryArgs[1]===true){if(this.OverlaySymbol&&aryArgs[0])this.OverlaySymbol(aryArgs[0]);}else if(aryArgs[1]===false){if(this.DeleteOverlaySymbol&&aryArgs[0])this.DeleteOverlaySymbol(aryArgs[0]);}break;case JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID:if(this.ClearOverlaySymbol)this.ClearOverlaySymbol();break;case JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID:if(this.ChangeCoordinateType&&aryArgs[0])this.ChangeCoordinateType(aryArgs[0]);break;case JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID:if(aryArgs[0]&&IFrameSplitOperator.IsBool(aryArgs[1])){if(aryArgs[1]==true&&this.AddKLineInfo)this.AddKLineInfo(aryArgs[0],true);else if(aryArgs[1]==false&&this.DeleteKLineInfo)this.DeleteKLineInfo(aryArgs[0]);}break;case JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID:if(this.ClearKLineInfo)this.ClearKLineInfo();break;case JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID:if(param!=null)this.DragMode=param;break;case JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID:if(IFrameSplitOperator.IsBool(srcParam)){if(srcParam){this.CreateExtendChart("SessionBreaksPaint",{});this.Draw();}else{var finder=this.GetExtendChartByClassName("SessionBreaksPaint");if(finder){this.DeleteExtendChartByID(finder.Chart.ID);this.Draw();}}}break;case JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID:if(!this.IsShowDrawToolDialog())this.ShowDrawToolDialog();break;case JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID:var option={Name:'筹码分布',ShowType:1,Width:230};var extendChart=this.CreateExtendChart(option.Name,option);//创建扩展图形
|
|
1989
1989
|
this.SetSizeChange(true);this.Draw();break;case JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:var StockChip=chart.GetExtendChartByClassName('StockChip');if(StockChip){var chipWidth=StockChip.Chart.Width;var chipIndex=parseInt(StockChip.Index);for(var i=chipIndex+1;i<this.ExtendChartPaint.length;++i)//在筹码后面创建的需要筹码的宽度
|
|
1990
1990
|
{var item=this.ExtendChartPaint[i];if(item.ClassName=='DrawToolsButton'){item.Left-=chipWidth;}}this.DeleteExtendChart(StockChip);this.Frame.ChartBorder.Right-=chipWidth;this.SetSizeChange(true);this.Draw();}break;case JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID:if(IFrameSplitOperator.IsBool(srcParam))this.EnableSelectRect=srcParam;break;case JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID:if(this.ChangeDayCount&¶m!=null)this.ChangeDayCount(param);break;case JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID:if(this.ShowCallAuctionData&&IFrameSplitOperator.IsBool(srcParam))this.ShowCallAuctionData({Left:srcParam,MultiDay:{Left:srcParam}});break;case JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID:if(this.ShowSelectData&&srcParam)this.ShowSelectData(srcParam);break;case JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID:var dlg=new KLineSelectRectDialog(this.DivElement);dlg.DoModal(srcParam);break;case JSCHART_MENU_ID.CMD_SHOW_INDEX_ID://显示隐藏指标 [0]=windowIndex [1]=0=自动 1=隐藏 2=显示
|
|
1991
1991
|
if(param==null||!IFrameSplitOperator.IsNumber(aryArgs[1]))return false;var windowIndex=param,showType=aryArgs[1];var script=this.WindowIndex[windowIndex];if(!script)return false;if(showType==1)script.IsShow=false;else if(showType==2)script.IsShow=true;else script.IsShow=!script.IsShow;this.UpdateWindowIndex(windowIndex);break;case JSCHART_MENU_ID.CMD_SHOW_OVERLAY_INDEX_ID://显示隐藏叠加指标 [0]=indexGuid [1]=0=自动 1=隐藏 2=显示
|
|
@@ -4720,28 +4720,7 @@ if(item.FlowCapital>0)changeRate=item.Vol/item.FlowCapital;if(_i7==count)vol=ite
|
|
|
4720
4720
|
if(!maxPrice||!minPrice)return true;var priceZoom=this.PriceZoom;maxPrice=parseInt(maxPrice*priceZoom);minPrice=parseInt(minPrice*priceZoom);var dataCount=maxPrice-minPrice;var aryChip=new Array();for(var _i8=0;_i8<=dataCount;++_i8){aryChip.push(0);}var dayChip=[];var distributeData;if(this.ShowType==2){var dayChip=[{Day:100,Color:this.DAY_COLOR[1][5]},{Day:60,Color:this.DAY_COLOR[1][4]},{Day:30,Color:this.DAY_COLOR[1][3]},{Day:20,Color:this.DAY_COLOR[1][2]},{Day:10,Color:this.DAY_COLOR[1][1]},{Day:5,Color:this.DAY_COLOR[1][0]}];for(var _i9 in aryVol){var item=aryVol[_i9];var high=parseInt(item.High*priceZoom);var low=parseInt(item.Low*priceZoom);var averageVol=item.Vol;if(high-low>0)averageVol=item.Vol/(high-low);if(averageVol<=0.000000001)continue;for(var k=0;k<dayChip.length;++k){if(_i9==dayChip[k].Day){dayChip[k].Chip=aryChip.slice(0);break;}}distributeData={Low:low,High:high,Vol:item.Vol,MaxPrice:maxPrice,MinPrice:minPrice};this.CalculateDistribute(aryChip,distributeData);}}else if(this.ShowType==1){var dayChip=[{Day:5,Color:this.DAY_COLOR[0][0]},{Day:10,Color:this.DAY_COLOR[0][1]},{Day:20,Color:this.DAY_COLOR[0][2]},{Day:30,Color:this.DAY_COLOR[0][3]},{Day:60,Color:this.DAY_COLOR[0][4]},{Day:100,Color:this.DAY_COLOR[0][5]}];for(var _i10=aryVol.length-1;_i10>=0;--_i10){var item=aryVol[_i10];var high=parseInt(item.High*priceZoom);var low=parseInt(item.Low*priceZoom);var averageVol=item.Vol;if(high-low>0)averageVol=item.Vol/(high-low);if(averageVol<=0.000000001)continue;for(var k=0;k<dayChip.length;++k){if(_i10==dayChip[k].Day){dayChip[k].Chip=aryChip.slice(0);break;}}distributeData={Low:low,High:high,Vol:item.Vol,MaxPrice:maxPrice,MinPrice:minPrice};this.CalculateDistribute(aryChip,distributeData);}}else{for(var _i11 in aryVol){var item=aryVol[_i11];var high=parseInt(item.High*priceZoom);var low=parseInt(item.Low*priceZoom);var averageVol=item.Vol;if(high-low>0)averageVol=item.Vol/(high-low);if(averageVol<=0.000000001)continue;distributeData={Low:low,High:high,Vol:item.Vol,MaxPrice:maxPrice,MinPrice:minPrice};this.CalculateDistribute(aryChip,distributeData);}}if(!distributeData)return false;this.Data={AllChip:aryChip,MaxVol:distributeData.MaxVol,MaxPrice:maxPrice,MinPrice:minPrice,SelectData:selData,DayChip:dayChip,YPrice:yPrice};return true;};this.DrawFrame=function()//X轴成交量坐标
|
|
4721
4721
|
{if(this.IsShowX==false)return;if(this.Data.MaxVol<=0)return;var isDrawXFrame=this.HQChart.Frame.SubFrame.length===1?false:true;//是否画X轴,如果只有1个窗口就不画
|
|
4722
4722
|
var KLineFrame=this.HQChart.Frame.SubFrame[0].Frame;var chartBorder=KLineFrame.ChartBorder;var bottom=ToFixedPoint(chartBorder.GetBottomEx()+1);if(!isDrawXFrame)bottom=this.ClientRect.Top+this.ClientRect.Height;var left=this.ClientRect.Left;var right=left+this.ClientRect.Width;this.Canvas.strokeStyle=this.PenBorder;this.Canvas.beginPath();if(isDrawXFrame){this.Canvas.moveTo(left,bottom);this.Canvas.lineTo(right,bottom);}var showCount=this.ShowXCount;var maxValue=this.Data.MaxVol;var perValue=Math.floor(maxValue/showCount);this.Canvas.font=this.Font;this.Canvas.textBaseline='top';this.Canvas.fillStyle=this.InfoColor;var xOffset=10*GetDevicePixelRatio();for(var i=1;i<=showCount;++i){var vol=perValue*i;var x=vol/this.Data.MaxVol*this.ClientRect.Width+this.ClientRect.Left;x=ToFixedPoint(x);if(i==showCount)//最后一个刻度不要画线了
|
|
4723
|
-
{this.Canvas.textAlign='right';var text=IFrameSplitOperator.FormatValueString(maxValue,1);this.Canvas.fillText(text,x,bottom+2);}else{this.Canvas.moveTo(x,this.ClientRect.Top);this.Canvas.lineTo(x,bottom);this.Canvas.textAlign='center';var text=IFrameSplitOperator.FormatValueString(vol,1);var textWidth=this.Canvas.measureText(text).width;this.Canvas.fillText(text,Math.floor(x-textWidth*0.25),bottom+2);}}this.Canvas.stroke();};}
|
|
4724
|
-
function DrawToolsButton(){this.newMethod=IExtendChartPainting;//派生
|
|
4725
|
-
this.newMethod();delete this.newMethod;this.ClassName='DrawToolsButton';this.HQChart;this.ID=Guid();this.ToolsDiv;// this.Color='rgb(105,105,105)'; //颜色
|
|
4726
|
-
this.Color="#696969";//input type="color"不支持rgb的颜色格式
|
|
4727
|
-
//this.Left=5;
|
|
4728
|
-
this.Top=5*GetDevicePixelRatio();this.Width=45*GetDevicePixelRatio();//宽度
|
|
4729
|
-
this.SetOption=function(option){var pixelRatio=GetDevicePixelRatio();if(!option)return;if(option.Width>10)this.Width=option.Width*pixelRatio;};this.Clear=function(){if(this.ToolsDiv)this.ChartBorder.UIElement.parentNode.removeChild(this.ToolsDiv);};this.Draw=function(){var _this16=this;if(this.SizeChange==false)return;//工具列表
|
|
4730
|
-
var TOOL_LIST=[[{HTML:{Title:'线段',IClass:'iconfont icon-draw_line',ID:'icon-segment'},Name:'线段'},{HTML:{Title:'尺子',IClass:'iconfont icon-ruler',ID:'icon_ruler'},Name:'尺子'},{HTML:{Title:'射线',IClass:'iconfont icon-draw_rays',ID:'icon-beam'},Name:'射线'},{HTML:{Title:'标价线',IClass:'iconfont icon-price_line',ID:'icon-price-line'},Name:'标价线'},{HTML:{Title:'垂直线',IClass:'iconfont icon-vertical_line',ID:'icon-vertical-line'},Name:'垂直线'},{HTML:{Title:'箭头',IClass:'iconfont icon-draw_rays',ID:'icon-beam2'},Name:'箭头'},{HTML:{Title:'趋势线',IClass:'iconfont icon-draw_trendline',ID:'icon-trendline'},Name:'趋势线'},{HTML:{Title:'水平线',IClass:'iconfont icon-draw_hline',ID:'icon-hline'},Name:'水平线'},{HTML:{Title:'水平线段',IClass:'iconfont icon-draw_hlinesegment',ID:'icon-hlineseg'},Name:'水平线段'},{HTML:{Title:'平行射线',IClass:'iconfont icon-draw_p_rays_lines',ID:'icon-rayslineseg'},Name:'平行射线'},{HTML:{Title:'平行线',IClass:'iconfont icon-draw_parallel_lines',ID:'icon-parallellines'},Name:'平行线'},{HTML:{Title:'平行通道',IClass:'iconfont icon-draw_parallelchannel',ID:'icon-parallelchannel'},Name:'平行通道'},{HTML:{Title:'价格通道线',IClass:'iconfont icon-draw_pricechannel',ID:'icon-pricechannel'},Name:'价格通道线'},{HTML:{Title:'M头W底',IClass:'iconfont icon-draw_wavemw',ID:'icon-wavemw'},Name:'M头W底'},{HTML:{Title:'头肩型',IClass:'iconfont icon-draw_head_shoulders_bt',ID:'icon-Head-Shoulders'},Name:'头肩型'},{HTML:{Title:'波浪尺',IClass:'iconfont icon-waveruler',ID:'icon-wave-ruler'},Name:'波浪尺'},{HTML:{Title:'AB波浪尺',IClass:'iconfont icon-waveruler',ID:'icon-wave-ruler2'},Name:'AB波浪尺'},{HTML:{Title:'箱型线',IClass:'iconfont icon-draw_box',ID:'icon-drawbox'},Name:'箱型线'},{HTML:{Title:'涂鸦线段',IClass:'iconfont icon-draw_line',ID:'icon-segment2'},Name:'涂鸦线段'}],[{HTML:{Title:'圆弧',IClass:'iconfont icon-draw_arc',ID:'icon-arc'},Name:'圆弧线'},{HTML:{Title:'矩形',IClass:'iconfont icon-rectangle',ID:'icon-rect'},Name:'矩形'},{HTML:{Title:'平行四边形',IClass:'iconfont icon-draw_quadrangle',ID:'icon-quad'},Name:'平行四边形'},{HTML:{Title:'三角形',IClass:'iconfont icon-draw_triangle',ID:'icon-triangle'},Name:'三角形'},{HTML:{Title:'圆',IClass:'iconfont icon-draw_circle',ID:'icon-circle'},Name:'圆'},{HTML:{Title:'对称角度',IClass:'iconfont icon-draw_symangle',ID:'icon-symangle'},Name:'对称角度'}],[{HTML:{Title:'文本',IClass:'iconfont icon-draw_text',ID:'icon-text'},Name:'文本'},{HTML:{Title:'向上箭头',IClass:'iconfont icon-arrow_up',ID:'icon-arrowup'},Name:'icon-arrow_up'},{HTML:{Title:'向下箭头',IClass:'iconfont icon-arrow_down',ID:'icon-arrowdown'},Name:'icon-arrow_down'},{HTML:{Title:'向左箭头',IClass:'iconfont icon-arrow_left',ID:'icon-arrowleft'},Name:'icon-arrow_left'},{HTML:{Title:'向右箭头',IClass:'iconfont icon-arrow_right',ID:'icon-arrowright'},Name:'icon-arrow_right'}],[{HTML:{Title:'江恩角度线',IClass:'iconfont icon-draw_gannfan',ID:'icon-gannfan'},Name:'江恩角度线'},{HTML:{Title:'斐波那契周期线',IClass:'iconfont icon-draw_fibonacci',ID:'icon-fibonacci'},Name:'斐波那契周期线'},{HTML:{Title:'阻速线',IClass:'iconfont icon-draw_resline',ID:'icon-resline'},Name:'阻速线'},{HTML:{Title:'黄金分割',IClass:'iconfont icon-draw_goldensection',ID:'icon-goldensection'},Name:'黄金分割'},{HTML:{Title:'百分比线',IClass:'iconfont icon-draw_percentage',ID:'icon-percentage'},Name:'百分比线'},{HTML:{Title:'波段线',IClass:'iconfont icon-draw_waveband',ID:'icon-waveband'},Name:'波段线'},{HTML:{Title:'线形回归线',IClass:'iconfont icon-linear_3',ID:'icon-waveband2'},Name:'线形回归线'},{HTML:{Title:'线形回归带',IClass:'iconfont icon-linear_1',ID:'icon-waveband3'},Name:'线形回归带'},{HTML:{Title:'延长线形回归带',IClass:'iconfont icon-linear_2',ID:'icon-waveband5'},Name:'延长线形回归带'}],[{HTML:{Title:'全部删除',IClass:'iconfont icon-recycle_bin',ID:'icon-delete'},Name:'全部删除'}]];var hqChart=this.HQChart;if(!this.ToolsDiv){var div=document.createElement("div");div.className='drawtools';div.id=this.ID;var spanList="";//一层菜单
|
|
4731
|
-
var menuTwoList="";//二层菜单
|
|
4732
|
-
var menuOne=new Array();TOOL_LIST.forEach(function(item,index){menuOne.push(item[0]);});for(var i=0;i<TOOL_LIST.length;i++){var itemOut=menuOne[i];var itemIn=TOOL_LIST[i];var menuTwoStr="";var contentArrow="";for(var j=0;j<itemIn.length;j++){var currentItem=itemIn[j];var menuTwoName=currentItem.Name;if(menuTwoName.indexOf('up')>-1){menuTwoName="向上箭头";}else if(menuTwoName.indexOf('down')>-1){menuTwoName="向下箭头";}else if(menuTwoName.indexOf('left')>-1){menuTwoName="向左箭头";}else if(menuTwoName.indexOf('right')>-1){menuTwoName="向右箭头";}menuTwoStr+='<p class="menuTwoItem '+currentItem.HTML.ID+'">'+menuTwoName+'<i class="'+currentItem.HTML.IClass+'" title="'+currentItem.HTML.Title+'"></i></p>';}if(i!==TOOL_LIST.length-1){//不是“全部删除”项
|
|
4733
|
-
menuTwoList='<div class="menuTwo">'+menuTwoStr+'</div>';contentArrow='<i class="contentArrow iconfont icon-menu_arraw_left"></i>';}else{menuTwoList="";contentArrow="";}var spanNode='<div class="icon-image '+'first-'+itemOut.HTML.ID+'"><i class="'+itemOut.HTML.IClass+'" title="'+itemOut.HTML.Title+'"></i>'+menuTwoList+contentArrow+'</div>';spanList+=spanNode;}this.ChartBorder.UIElement.parentNode.appendChild(div);div.innerHTML=spanList;this.ToolsDiv=div;for(var i in TOOL_LIST){var item=TOOL_LIST[i][0];(0,_jquery2.default)('#'+this.ID+" .first-"+item.HTML.ID).hover(function(){//箭头的旋转过渡
|
|
4734
|
-
(0,_jquery2.default)(".drawtools").find(".contentArrow").hide();(0,_jquery2.default)(this).find(".contentArrow").removeClass("trans").show();});(0,_jquery2.default)('#'+this.ID+" .first-"+item.HTML.ID+" .contentArrow").click(function(event){//点击三角展示二级菜单
|
|
4735
|
-
event.stopPropagation();(0,_jquery2.default)(".drawtools").find(".menuTwo").hide();(0,_jquery2.default)(this).siblings('.menuTwo').show();});(0,_jquery2.default)('#'+this.ID+" .first-"+item.HTML.ID+" .trans").click(function(){//点击三角隐藏二级菜单
|
|
4736
|
-
event.stopPropagation();(0,_jquery2.default)(this).siblings('.menuTwo').hide();});if(item.Name=='全部删除'){(0,_jquery2.default)('#'+this.ID+" .first-icon-delete").click(function(){(0,_jquery2.default)(".drawtools").find(".menuTwo").hide();(0,_jquery2.default)(this).siblings().removeClass('active');(0,_jquery2.default)(this).addClass('active');hqChart.ClearChartDrawPicture();(0,_jquery2.default)(".subTolls").css("display","none");});}else{(0,_jquery2.default)('#'+this.ID+" .first-"+menuOne[i].HTML.ID).click(//一层菜单类名是:“first-”+item.HTML.ID
|
|
4737
|
-
{// DrawName: menuOne[i].Name, //把画法名字传进去
|
|
4738
|
-
CurrentIndex:i},function(event){(0,_jquery2.default)(".drawtools").find(".menuTwo").hide();(0,_jquery2.default)(this).siblings().removeClass('active');(0,_jquery2.default)(this).addClass('active');hqChart.CreateChartDrawPicture(menuOne[event.data.CurrentIndex].Name);});var _loop=function _loop(){itemTwo=TOOL_LIST[i][j];var classname=itemTwo.HTML.IClass;//闭包问题
|
|
4739
|
-
(0,_jquery2.default)('#'+_this16.ID+' .'+itemTwo.HTML.ID).hover(function(event){event.stopPropagation();(0,_jquery2.default)(this).closest('.icon-image').find(".contentArrow").addClass("trans");});(0,_jquery2.default)('#'+_this16.ID+' .'+itemTwo.HTML.ID).click(//二层菜单
|
|
4740
|
-
{DrawName:itemTwo.Name,//把画法名字传进去
|
|
4741
|
-
CurrentIndex:i,CurrentData:itemTwo},function(event){event.stopPropagation();(0,_jquery2.default)(this).closest('.icon-image').find(".contentArrow").hide();(0,_jquery2.default)(this).siblings().removeClass("current");(0,_jquery2.default)(this).addClass("current");(0,_jquery2.default)(this).closest('.icon-image').children('i').eq(0).removeClass().addClass(classname,"active").attr('title',event.data.CurrentData.HTML.Title);menuOne.splice(event.data.CurrentIndex,1,event.data.CurrentData);(0,_jquery2.default)(this).parent().hide();hqChart.CreateChartDrawPicture(event.data.DrawName);});};for(var j in TOOL_LIST[i]){var itemTwo;_loop();}}}}var curID=this.ID;(0,_jquery2.default)(document).click(function(event){if(!(0,_jquery2.default)("#"+curID).is(event.target)&&(0,_jquery2.default)("#"+curID).has(event.target).length===0){(0,_jquery2.default)("#"+curID+" .menuTwo").hide();(0,_jquery2.default)("#"+curID+" .contentArrow").hide();}});var scrollPos=GetScrollPosition();var pixelRatio=GetDevicePixelRatio();// var left=this.ChartBorder.GetChartWidth()-this.Right-this.ToolsWidth;
|
|
4742
|
-
var left=ToFixedPoint(this.ChartBorder.GetRight()+this.Left);// var top = this.Top+this.ChartBorder.UIElement.getBoundingClientRect().top+scrollPos.Top;
|
|
4743
|
-
var top=this.ChartBorder.GetTop();this.ToolsDiv.style.left=left/pixelRatio+"px";this.ToolsDiv.style.top=top/pixelRatio+"px";this.ToolsDiv.style.width=(this.Width-5)/pixelRatio+"px";this.ToolsDiv.style.height='auto';this.ToolsDiv.style.position="absolute";this.ToolsDiv.style.display="block";// this.ToolsDiv.style.paddingLeft = "10px";
|
|
4744
|
-
this.SizeChange==true;};}//窗口分割
|
|
4723
|
+
{this.Canvas.textAlign='right';var text=IFrameSplitOperator.FormatValueString(maxValue,1);this.Canvas.fillText(text,x,bottom+2);}else{this.Canvas.moveTo(x,this.ClientRect.Top);this.Canvas.lineTo(x,bottom);this.Canvas.textAlign='center';var text=IFrameSplitOperator.FormatValueString(vol,1);var textWidth=this.Canvas.measureText(text).width;this.Canvas.fillText(text,Math.floor(x-textWidth*0.25),bottom+2);}}this.Canvas.stroke();};}//窗口分割
|
|
4745
4724
|
function FrameSplitPaint(){this.newMethod=IExtendChartPainting;//派生
|
|
4746
4725
|
this.newMethod();delete this.newMethod;this.ClassName='FrameSplitPaint';this.LineColor='rgb(255,0,0)';this.TextColor="rgb(255,0,0)";this.LineWidth=2;this.Font='bold '+18*GetDevicePixelRatio()+"px 微软雅黑";this.TextTopOffset=10*GetDevicePixelRatio();//设置参数接口
|
|
4747
4726
|
this.SetOption=function(option){if(option){if(option.LineColor)this.LineColor=option.LineColor;if(option.TextColor)this.TextColor=option.TextColor;if(option.Font)this.Font=option.Font;if(IFrameSplitOperator.IsNumber(option.LineWidth))this.LineWidth=option.LineWidth;if(IFrameSplitOperator.IsNumber(option.TextTopOffset))this.TextTopOffset=option.TextTopOffset;}};this.Draw=function(){if(!this.HQChart)return;if(this.HQChart.Period!=0&&this.HQChart.Period!=1)return;if(!this.HQChart.ChartPaint[0])return;var data=this.HQChart.ChartPaint[0].Data;if(!data)return;this.Data=data;if(!this.ChartFrame||!this.ChartFrame.SubFrame)return;var subFrame=this.ChartFrame.SubFrame[0].Frame;if(!subFrame)return;var isHScreen=subFrame.IsHScreen===true;var dataWidth=subFrame.DataWidth;var distanceWidth=subFrame.DistanceWidth;var xPointCount=subFrame.XPointCount;var lineWidth=this.LineWidth*GetDevicePixelRatio();if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var drawHeight=border.ChartHeight-border.TopTitle-5*GetDevicePixelRatio();}this.Canvas.save();this.Canvas.lineWidth=lineWidth;this.Canvas.font=this.Font;this.Canvas.textAlign='center';this.Canvas.textBaseline='top';var preQuarter={Left:border.LeftEx,Top:ToFixedPoint2(lineWidth,border.TopTitle),Height:drawHeight,LineWidth:lineWidth};for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var item=this.Data.Data[i];if(!item)continue;var dateInfo=this.GetQuarter(item.Date);if(!dateInfo)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;if(!preQuarter.DateInfo){preQuarter.DateInfo=dateInfo;preQuarter.Right=x;}else{var preDateInfo=preQuarter.DateInfo;if(preDateInfo.Year!=dateInfo.Year||preDateInfo.Quarter!=dateInfo.Quarter){preQuarter.Right=x;this.DrawQuarter(preQuarter);preQuarter.Left=x;preQuarter.Right=null;preQuarter.DateInfo=dateInfo;}else{preQuarter.Right=x;}}}this.DrawQuarter(preQuarter);this.Canvas.restore();};this.DrawQuarter=function(quarterInfo){if(!IFrameSplitOperator.IsNumber(quarterInfo.Left)||!IFrameSplitOperator.IsNumber(quarterInfo.Right))return;var left=ToFixedPoint2(quarterInfo.LineWidth,quarterInfo.Left);var right=ToFixedPoint2(quarterInfo.LineWidth,quarterInfo.Right);var drawWidth=right-left;this.Canvas.strokeStyle=this.LineColor;this.Canvas.strokeRect(left,quarterInfo.Top,drawWidth,quarterInfo.Height);var date=quarterInfo.DateInfo;var shortYear=date.Year%100;if(shortYear<10)var strYear='0'+shortYear;else var strYear=shortYear.toString();var text=strYear+'\u5E74'+date.Quarter+'\u5B63\u5EA6';var textWidth=this.Canvas.measureText(text).width;if(textWidth<drawWidth+5){var x=left+drawWidth/2;var y=quarterInfo.Top+this.TextTopOffset;this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(text,x,y);}};this.GetQuarter=function(date){if(!IFrameSplitOperator.IsNumber(date))return null;var year=parseInt(date/10000);var month=parseInt(date%10000/100);switch(month){case 1:case 2:case 3:var quarter=1;break;case 4:case 5:case 6:var quarter=2;break;case 7:case 8:case 9:var quarter=3;break;case 10:case 11:case 12:var quarter=4;break;default:return null;}return{Year:year,Month:month,Quarter:quarter};};}//区间选择选中范围背景
|
|
@@ -5922,7 +5901,7 @@ var sep=rgb.indexOf(",")>-1?",":" ";// Turn "rgb(r,g,b)" into [r,g,b]
|
|
|
5922
5901
|
rgb=rgb.substr(4).split(")")[0].split(sep);var r=(+rgb[0]).toString(16),g=(+rgb[1]).toString(16),b=(+rgb[2]).toString(16);if(r.length==1)r="0"+r;if(g.length==1)g="0"+g;if(b.length==1)b="0"+b;return"#"+r+g+b;};//16进制颜色转rgb
|
|
5923
5902
|
IChartDrawPicture.HexToRGB=function(color){color=color.toLowerCase();var reg=/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;if(color&®.test(color)){if(color.length===4){var sColorNew="#";for(var i=1;i<4;i+=1){sColorNew+=color.slice(i,i+1).concat(color.slice(i,i+1));}color=sColorNew;}//处理六位的颜色值
|
|
5924
5903
|
var sColorChange=[];for(var i=1;i<7;i+=2){sColorChange.push(parseInt("0x"+color.slice(i,i+2)));}return"rgb("+sColorChange.join(",")+")";}return null;};IChartDrawPicture.ArrayDrawPricture=[{Name:"线段",ClassName:'ChartDrawPictureLine',Create:function Create(){return new ChartDrawPictureLine();}},{Name:"射线",ClassName:'ChartDrawPictureHaflLine',Create:function Create(){return new ChartDrawPictureHaflLine();}},{Name:"箭头",ClassName:"ChartDrawArrowLine",Create:function Create(){return new ChartDrawArrowLine();}},{Name:"水平线",ClassName:'ChartDrawPictureHorizontalLine',Create:function Create(){return new ChartDrawPictureHorizontalLine();}},{Name:"趋势线",ClassName:'ChartDrawPictureTrendLine',Create:function Create(){return new ChartDrawPictureTrendLine();}},{Name:"矩形",ClassName:'ChartDrawPictureRect',Create:function Create(){return new ChartDrawPictureRect();}},{Name:"圆弧线",ClassName:'ChartDrawPictureArc',Create:function Create(){return new ChartDrawPictureArc();}},{Name:"M头W底",ClassName:'ChartDrawPictureWaveMW',Create:function Create(){return new ChartDrawPictureWaveMW();}},{Name:"头肩型",ClassName:"ChartDrawHeadShouldersBT",Create:function Create(){return new ChartDrawHeadShouldersBT();}},{Name:"平行线",ClassName:'ChartDrawPictureParallelLines',Create:function Create(){return new ChartDrawPictureParallelLines();}},{Name:"平行通道",ClassName:'ChartDrawPictureParallelChannel',Create:function Create(){return new ChartDrawPictureParallelChannel();}},{Name:"价格通道线",ClassName:'ChartDrawPicturePriceChannel',Create:function Create(){return new ChartDrawPicturePriceChannel();}},{Name:"文本",ClassName:'ChartDrawPictureText',Create:function Create(){return new ChartDrawPictureText();}},{Name:"江恩角度线",ClassName:'ChartDrawPictureGannFan',Create:function Create(){return new ChartDrawPictureGannFan();}},{Name:"阻速线",ClassName:'ChartDrawPictureResistanceLine',Create:function Create(){return new ChartDrawPictureResistanceLine();}},{Name:"黄金分割",ClassName:'ChartDrawPictureGoldenSection',Create:function Create(){return new ChartDrawPictureGoldenSection();}},{Name:"百分比线",ClassName:'ChartDrawPicturePercentage',Create:function Create(){return new ChartDrawPicturePercentage();}},{Name:"波段线",ClassName:'ChartDrawPictureWaveBand',Create:function Create(){return new ChartDrawPictureWaveBand();}},{Name:"三角形",ClassName:'ChartDrawPictureTriangle',Create:function Create(){return new ChartDrawPictureTriangle();}},{Name:"对称角度",ClassName:'ChartDrawPictureSymmetryAngle',Create:function Create(){return new ChartDrawPictureSymmetryAngle();}},{Name:"圆",ClassName:'ChartDrawPictureCircle',Create:function Create(){return new ChartDrawPictureCircle();}},{Name:"平行四边形",ClassName:'ChartDrawPictureQuadrangle',Create:function Create(){return new ChartDrawPictureQuadrangle();}},{Name:"斐波那契周期线",ClassName:'ChartDrawPictureFibonacci',Create:function Create(){return new ChartDrawPictureFibonacci();}},{Name:"线形回归线",ClassName:"ChartDrawLinearRegression",Create:function Create(){return new ChartDrawLinearRegression();}},{Name:"线形回归带",ClassName:"ChartDrawLinearRegression",Create:function Create(){return new ChartDrawLinearRegression({IsShowMaxMinLine:true});}},{Name:"延长线形回归带",ClassName:"ChartDrawLinearRegression",Create:function Create(){return new ChartDrawLinearRegression({IsShowMaxMinLine:true,IsShowExtendLine:true});}},{Name:"尺子",ClassName:"ChartDrawRuler",Create:function Create(){return new ChartDrawRuler();}},{Name:"标价线",ClassName:"ChartDrawPriceLine",Create:function Create(){return new ChartDrawPriceLine();}},{Name:"标价线2",ClassName:"ChartDrawPriceLineV2",Create:function Create(){return new ChartDrawPriceLineV2();}},{Name:"垂直线",ClassName:"ChartDrawVerticalLine",Create:function Create(){return new ChartDrawVerticalLine();}},{Name:"波浪尺",ClassName:"ChartDrawWaveRuler",Create:function Create(){return new ChartDrawWaveRuler();}},{Name:"AB波浪尺",ClassName:"ChartDrawWaveRuler2Point",Create:function Create(){return new ChartDrawWaveRuler2Point();}},{Name:"箱型线",ClassName:"ChartDrawBox",Create:function Create(){return new ChartDrawBox();}},{Name:"2点画图例子",ClassName:"ChartDrawTwoPointDemo",Create:function Create(){return new ChartDrawTwoPointDemo();}},{Name:"3点画图例子",ClassName:"ChartDrawThreePointDemo",Create:function Create(){return new ChartDrawThreePointDemo();}},{Name:"水平线段",ClassName:"ChartDrawHLineSegment",Create:function Create(){return new ChartDrawHLineSegment();}},{Name:"平行射线",ClassName:"ChartDrawParallelRaysLines",Create:function Create(){return new ChartDrawParallelRaysLines();}},{ClassName:'ChartDrawPictureIconFont',Create:function Create(){return new ChartDrawPictureIconFont();}},//涂鸦 不绑定K线坐标
|
|
5925
|
-
{Name:"涂鸦线段",ClassName:'ChartDrawGraffitiLine',Create:function Create(){return new ChartDrawGraffitiLine();}},{Name:"固定范围成交量分布图",ClassName:"ChartDrawVolProfile",Create:function Create(){return new ChartDrawVolProfile();}},{Name:"DisjointChannel",ClassName:"ChartDrawDisjontChannel",Create:function Create(){return new ChartDrawDisjontChannel();}},{Name:"FlatTop",ClassName:"
|
|
5904
|
+
{Name:"涂鸦线段",ClassName:'ChartDrawGraffitiLine',Create:function Create(){return new ChartDrawGraffitiLine();}},{Name:"固定范围成交量分布图",ClassName:"ChartDrawVolProfile",Create:function Create(){return new ChartDrawVolProfile();}},{Name:"DisjointChannel",ClassName:"ChartDrawDisjontChannel",Create:function Create(){return new ChartDrawDisjontChannel();}},{Name:"FlatTop",ClassName:"ChartDrawFlatTop",Create:function Create(){return new ChartDrawFlatTop();}},{Name:"水平线2",ClassName:"ChartDrawHLine",Create:function Create(){return new ChartDrawHLine();}},//trading view样式
|
|
5926
5905
|
{Name:"Note",ClassName:"ChartDrawNote",Create:function Create(){return new ChartDrawNote();}},{Name:"AnchoredText",ClassName:"ChartDrawAnchoredText",Create:function Create(){return new ChartDrawAnchoredText();}},{Name:"PriceLabel",ClassName:"ChartDrawPriceLabel",Create:function Create(){return new ChartDrawPriceLabel();}},{Name:"PriceNote",ClassName:"ChartDrawPriceNote",Create:function Create(){return new ChartDrawPriceNote();}},{Name:"FibWedge",ClassName:"ChartDrawFibWedge",Create:function Create(){return new ChartDrawFibWedge();}},{Name:"FibRetracement",ClassName:"ChartFibRetracement",Create:function Create(){return new ChartFibRetracement();}},//斐波那契回测
|
|
5927
5906
|
{Name:"FibSpeedResistanceFan",ClassName:"ChartFibSpeedResistanceFan",Create:function Create(){return new ChartFibSpeedResistanceFan();}},//斐波那契扇形
|
|
5928
5907
|
{Name:"PriceRange",ClassName:"ChartPriceRange",Create:function Create(){return new ChartPriceRange();}},{Name:"DateRange",ClassName:"ChartDateRange",Create:function Create(){return new ChartDateRange();}}];IChartDrawPicture.MapIonFont=new _map2.default([["icon-arrow_up",{Text:'\uE683',Color:'#318757',Family:"iconfont"}],["icon-arrow_down",{Text:'\uE681',Color:'#db563e',Family:"iconfont"}],["icon-arrow_right",{Text:'\uE682',Color:'#318757',Family:"iconfont"}],["icon-arrow_left",{Text:'\uE680',Color:'#318757',Family:"iconfont"}]]);IChartDrawPicture.GetDrawPictureByName=function(value){for(var i in IChartDrawPicture.ArrayDrawPricture){var item=IChartDrawPicture.ArrayDrawPricture[i];if(item.Name==value)return item;}return null;};IChartDrawPicture.GetDrawPictureByClassName=function(value){for(var i in IChartDrawPicture.ArrayDrawPricture){var item=IChartDrawPicture.ArrayDrawPricture[i];if(item.ClassName==value)return item;}return null;};//注册一个新的画图工具 {Name:中文名字, ClassName:类名, Create:function()}
|
|
@@ -6096,11 +6075,11 @@ this.Super_ExportStorageData=this.ExportStorageData;this.SetOption=function(opti
|
|
|
6096
6075
|
if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);var points=drawPoint.slice(0);this.CalculateLines(points);this.ClipFrame();this.DrawArea();for(var i in this.LinePoint){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}if(this.CenterLine.IsShow&&this.CenterLine.Line){var item=this.CenterLine.Line;this.Canvas.setLineDash(this.CenterLine.LineDash);this.DrawLine(item.Start,item.End);this.Canvas.setLineDash([]);}this.DrawPoint(points);//画点
|
|
6097
6076
|
this.Canvas.restore();};this.SetLastPoint=function(obj){this.LastPoint={X:obj.X,Y:obj.Y};};this.DrawArea=function(){if(this.LinePoint.length!=2)return;this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(this.LinePoint[0].Start.X,this.LinePoint[0].Start.Y);this.Canvas.lineTo(this.LinePoint[0].End.X,this.LinePoint[0].End.Y);this.Canvas.lineTo(this.LinePoint[1].End.X,this.LinePoint[1].End.Y);this.Canvas.lineTo(this.LinePoint[1].Start.X,this.LinePoint[1].Start.Y);this.Canvas.closePath();this.Canvas.fill();};this.CalculateLines=function(points){if(this.PointStatus==2&&this.LastPoint){var pt=new Point();pt.X=this.LastPoint.X;pt.Y=this.LastPoint.Y;points[2]=pt;}if(points.length==2){var linePoint=this.CalculateExtendLinePoint(points[0],points[1]);this.LinePoint.push(linePoint);}else if(points.length==3){var linePoint=this.CalculateExtendLinePoint(points[0],points[1]);this.LinePoint.push(linePoint);//计算平行线
|
|
6098
6077
|
var xMove=points[2].X-points[1].X;var yMove=points[2].Y-points[1].Y;var ptStart=new Point();var ptEnd=new Point();ptStart.X=points[0].X+xMove;ptStart.Y=points[0].Y+yMove;ptEnd.X=points[1].X+xMove;ptEnd.Y=points[1].Y+yMove;linePoint=this.CalculateExtendLinePoint(ptStart,ptEnd);this.LinePoint.push(linePoint);//中心线
|
|
6099
|
-
var ptStart=new Point();var ptEnd=new Point();ptStart.X=points[0].X+xMove/2;ptStart.Y=points[0].Y+yMove/2;ptEnd.X=points[1].X+xMove/2;ptEnd.Y=points[1].Y+yMove/2;linePoint=this.CalculateExtendLinePoint(ptStart,ptEnd);this.CenterLine.Line=linePoint;}};}//FlatTop/Bottom
|
|
6078
|
+
var ptStart=new Point();var ptEnd=new Point();ptStart.X=points[0].X+xMove/2;ptStart.Y=points[0].Y+yMove/2;ptEnd.X=points[1].X+xMove/2;ptEnd.Y=points[1].Y+yMove/2;linePoint=this.CalculateExtendLinePoint(ptStart,ptEnd);this.CenterLine.Line=linePoint;}};}//FlatTop/Bottom 平滑顶/底
|
|
6100
6079
|
function ChartDrawFlatTop(){this.newMethod=IChartDrawPicture;//派生
|
|
6101
6080
|
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawFlatTop';this.IsPointIn=this.IsPointIn_XYValue_Line;this.PointCount=3;this.LastPoint;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(!this.IsShow)return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);var points=drawPoint.slice(0);this.CalculateLines(points);this.ClipFrame();for(var i=0;i<this.LinePoint.length;++i){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}this.DrawArea();this.DrawPoint(points);//画点
|
|
6102
6081
|
this.Canvas.restore();};this.SetLastPoint=function(obj){this.LastPoint={X:obj.X,Y:obj.Y};};this.DrawArea=function(){if(this.LinePoint.length!=2)return;this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(this.LinePoint[0].Start.X,this.LinePoint[0].Start.Y);this.Canvas.lineTo(this.LinePoint[0].End.X,this.LinePoint[0].End.Y);this.Canvas.lineTo(this.LinePoint[1].End.X,this.LinePoint[1].End.Y);this.Canvas.lineTo(this.LinePoint[1].Start.X,this.LinePoint[1].Start.Y);this.Canvas.closePath();this.Canvas.fill();};this.CalculateLines=function(points){if(this.PointStatus==2&&this.LastPoint){var ptSecond=points[1];var pt=new Point();pt.X=ptSecond.X;pt.Y=this.LastPoint.Y;points[2]=pt;}if(points.length==2){this.LinePoint.push({Start:points[0],End:points[1]});}else if(points.length==3){this.LinePoint.push({Start:points[0],End:points[1]});//计算水平线
|
|
6103
|
-
var ptThrid=points[2];ptThrid.X=points[1].X;var ptStart={X:points[0].X,Y:ptThrid.Y};var ptEnd={X:points[1].X,Y:ptThrid.Y};this.LinePoint.push({Start:ptStart,End:ptEnd});}};}//Disjont Channel
|
|
6082
|
+
var ptThrid=points[2];ptThrid.X=points[1].X;var ptStart={X:points[0].X,Y:ptThrid.Y};var ptEnd={X:points[1].X,Y:ptThrid.Y};this.LinePoint.push({Start:ptStart,End:ptEnd});}};}//Disjont Channel 不相交通道 (未完成)
|
|
6104
6083
|
function ChartDrawDisjontChannel(){this.newMethod=ChartDrawFlatTop;//派生
|
|
6105
6084
|
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawDisjontChannel';this.IsPointIn=this.IsPointIn_XYValue_Line;this.PointCount=3;this.LastPoint;}//平行射线
|
|
6106
6085
|
function ChartDrawParallelRaysLines(){this.newMethod=ChartDrawPictureParallelLines;//派生
|
|
@@ -6936,21 +6915,21 @@ this.ChartOperator_Temp_GetHistroyData=function(){var hisData=null;if(!this.Fram
|
|
|
6936
6915
|
return hisData;};this.ChartOperator_Temp_Update=function(){this.UpdataDataoffset();//更新数据偏移
|
|
6937
6916
|
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
6938
6917
|
this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();this.UpdatePointByCursorIndex();//更新十字光标位子
|
|
6939
|
-
};this.OnWheel=function(e){var
|
|
6918
|
+
};this.OnWheel=function(e){var _this16=this;JSConsole.Chart.Log('[KLineChartContainer::OnWheel]',e);if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var isInClient=false;this.Canvas.beginPath();this.Canvas.rect(this.Frame.ChartBorder.GetLeft(),this.Frame.ChartBorder.GetTop(),this.Frame.ChartBorder.GetWidth(),this.Frame.ChartBorder.GetHeight());isInClient=this.Canvas.isPointInPath(x,y);var wheelValue=e.wheelDelta;if(!IFrameSplitOperator.IsObjectExist(e.wheelDelta))wheelValue=e.deltaY*-0.01;var enableZoomUpDown=true;//是否允许缩放
|
|
6940
6919
|
if(this.EnableZoomUpDown&&this.EnableZoomUpDown.Wheel===false)enableZoomUpDown=false;if(this.SourceData&&this.SourceData.Data){if(isInClient&&wheelValue<0&&enableZoomUpDown)//缩小
|
|
6941
|
-
{var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(this.Frame.ZoomDown(cursorIndex,{ZoomDownloadDataCallback:function ZoomDownloadDataCallback(requestData){
|
|
6920
|
+
{var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(this.Frame.ZoomDown(cursorIndex,{ZoomDownloadDataCallback:function ZoomDownloadDataCallback(requestData){_this16.ZoomDownloadData(requestData);}})){this.CursorIndex=cursorIndex.Index;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXSplit();if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true){}else{this.Draw();}this.OnKLinePageChange("wheel");}}else if(isInClient&&wheelValue>0&&enableZoomUpDown)//放大
|
|
6942
6921
|
{var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(this.Frame.ZoomUp(cursorIndex)){JSConsole.Chart.Log("[KLineChartContainer::OnWheel] cursorIndex ",cursorIndex);this.CursorIndex=cursorIndex.Index;this.UpdatePointByCursorIndex();this.UpdataDataoffset();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.OnKLinePageChange("wheel");}}}if(!isInClient){if(!this.OnWheel_ZoomUpDownFrameY(e,x,y))return;}if(e.preventDefault)e.preventDefault();else e.returnValue=false;};//通过滚轴缩放Y轴
|
|
6943
6922
|
this.OnWheel_ZoomUpDownFrameY=function(e,x,y){if(!this.EnableYDrag.Wheel)return false;var dragY=this.TryYDrag(x,y);if(!dragY)return false;if(dragY.Left&&!dragY.IsOverlay||dragY.Right){}else{return false;}var wheelValue=e.wheelDelta;if(!IFrameSplitOperator.IsObjectExist(e.wheelDelta))wheelValue=e.deltaY*-0.01;var yMove=this.EnableYDrag.WheelYMove;if(wheelValue>0)yMove*=-1;dragY.Position=0;//只能两边缩放
|
|
6944
6923
|
if(!this.Frame.OnZoomUpDownFrameY(dragY,yMove))return false;this.Frame.SetSizeChage(true);this.Draw();return true;};//创建
|
|
6945
6924
|
//windowCount 窗口个数
|
|
6946
|
-
this.Create=function(windowCount,option){var
|
|
6947
|
-
this.ChartCorssCursor=new ChartCorssCursor();this.ChartCorssCursor.Canvas=this.Canvas;this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_XStringFormat");this.ChartCorssCursor.StringFormatX.GetEventCallback=function(id){return
|
|
6925
|
+
this.Create=function(windowCount,option){var _this17=this;this.UIElement.JSChartContainer=this;//创建十字光标
|
|
6926
|
+
this.ChartCorssCursor=new ChartCorssCursor();this.ChartCorssCursor.Canvas=this.Canvas;this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_XStringFormat");this.ChartCorssCursor.StringFormatX.GetEventCallback=function(id){return _this17.GetEventCallback(id);};this.ChartCorssCursor.StringFormatX.LanguageID=this.LanguageID;this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");this.ChartCorssCursor.StringFormatY.GetEventCallback=function(id){return _this17.GetEventCallback(id);};this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;this.ChartCorssCursor.StringFormatY.ExtendChartPaint=this.ExtendChartPaint;//创建等待提示
|
|
6948
6927
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.HQChart=this;//创建框架容器
|
|
6949
|
-
this.Frame=new HQTradeFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.Frame.GetExtendChartRightWidth=function(){return
|
|
6928
|
+
this.Frame=new HQTradeFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.Frame.GetExtendChartRightWidth=function(){return _this17.GetExtendChartRightWidth();};this.Frame.GetExtendChartByClassName=function(name){return _this17.GetExtendChartByClassName(name);};this.Frame.GetEventCallback=function(id){return _this17.GetEventCallback(id);};this.ChartCorssCursor.Frame=this.Frame;//十字光标绑定框架
|
|
6950
6929
|
this.ChartSplashPaint.Frame=this.Frame;this.CreateChildWindow(windowCount);this.CreateMainKLine();this.CreateExtendChart("RectSelectPaint",option?option.SelectRect:null);//区间统计
|
|
6951
6930
|
if(this.EnableIndexChartDrag)this.CreateExtendChart("DragMovePaint");//子窗口动态标题
|
|
6952
|
-
for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return
|
|
6953
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
6931
|
+
for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this17.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint.push(titlePaint);}this.ChartCorssCursor.StringFormatX.Frame=this.Frame.SubFrame[0].Frame;this.ChartCorssCursor.StringFormatY.Frame=this.Frame;var bRegisterKeydown=true;var bRegisterWheel=true;if(option&&option.Listener){var item=option.Listener;if(item.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[KLineChartContainer::Create] not register keydown event.');}if(item.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[KLineChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){_this17.OnKeyDown(e);},true);//键盘消息
|
|
6932
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this17.OnWheel(e);},true);//上下滚动消息
|
|
6954
6933
|
};this.OnCustomKeyDown=function(keyID,e)//自定义键盘事件
|
|
6955
6934
|
{if(keyID==37&&e.ctrlKey)//Ctrl+Left
|
|
6956
6935
|
{this.MoveCorssCursorLeft(this.CtrlMoveStep);return true;}else if(keyID==39&&e.ctrlKey)//Ctrl+Right
|
|
@@ -6963,18 +6942,18 @@ if(this.CursorIndex+step+data.DataOffset+1>data.Data.length)//数据不够步长
|
|
|
6963
6942
|
{step=data.Data.length-1-data.DataOffset-this.CursorIndex;bMoveEnd=true;}if(this.CursorIndex+step>=xPointcount)//当前屏最右边了
|
|
6964
6943
|
{var lMoveStep=this.CursorIndex+step-(xPointcount-1);data.DataOffset+=lMoveStep;if(bMoveEnd)this.CursorIndex=xPointcount-1;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");return;}this.CursorIndex+=step;this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();};//获取K线图实例
|
|
6965
6944
|
this.GetKLineChart=function(){if(!this.ChartPaint[0])return null;return this.ChartPaint[0];};//创建子窗口
|
|
6966
|
-
this.CreateChildWindow=function(windowCount){var
|
|
6945
|
+
this.CreateChildWindow=function(windowCount){var _this18=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=g_ChartFrameFactory.Create("KLineFrame",{ID:i});frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=i;//窗口序号
|
|
6967
6946
|
frame.RightSpaceCount=this.RightSpaceCount;//右边
|
|
6968
|
-
frame.GetEventCallback=function(id){return
|
|
6969
|
-
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return
|
|
6947
|
+
frame.GetEventCallback=function(id){return _this18.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
|
|
6948
|
+
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this18.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this18.GetKLineChart();};frame.YSplitOperator.HQChart=this;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
6970
6949
|
border.BottomSpace=15*pixelTatio;//主图上下留空间
|
|
6971
|
-
border.TopSpace=15*pixelTatio;frame.GetEventCallback=function(id){return
|
|
6972
|
-
}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.LanguageID=this.LanguageID;frame.XSplitOperator.GetEventCallback=function(id){return
|
|
6973
|
-
frame.GetEventCallback=function(id){return
|
|
6974
|
-
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.GetEventCallback=function(id){return
|
|
6950
|
+
border.TopSpace=15*pixelTatio;frame.GetEventCallback=function(id){return _this18.GetEventCallback(id);};}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.GetEventCallback=function(id){return _this18.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this18.GetKLineChart();};frame.YSplitOperator.HQChart=this;//frame.IsLocked = true;
|
|
6951
|
+
}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.LanguageID=this.LanguageID;frame.XSplitOperator.GetEventCallback=function(id){return _this18.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}};this.CreateSubFrameItem=function(id){var _this19=this;var border=new ChartBorder();border.UIElement=this.UIElement;var frameClassName="KLineFrame";if(this.ClassName=="KLineChartHScreenContainer")frameClassName="KLineHScreenFrame";var frame=g_ChartFrameFactory.Create(frameClassName,{ID:id});frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=id;//窗口序号
|
|
6952
|
+
frame.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
|
|
6953
|
+
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.YSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this19.GetKLineChart();};frame.YSplitOperator.HQChart=this;frame.XSplitOperator.Symbol=this.Symbol;frame.XSplitOperator.Period=this.Period;//K线数据绑定
|
|
6975
6954
|
var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};//创建主图K线画法
|
|
6976
|
-
this.CreateMainKLine=function(){var
|
|
6977
|
-
this.TitlePaint[0].LanguageID=this.LanguageID;this.TitlePaint[0].HQChart=this;this.TitlePaint[0].GetEventCallback=function(id){return
|
|
6955
|
+
this.CreateMainKLine=function(){var _this20=this;var kline=g_ChartPaintFactory.Create("ChartKLine");kline.Canvas=this.Canvas;kline.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;kline.ChartFrame=this.Frame.SubFrame[0].Frame;kline.Name="Main-KLine";kline.DrawType=this.KLineDrawType;kline.Identify="Main-KLine";kline.GetEventCallback=function(id){return _this20.GetEventCallback(id);};this.ChartPaint[0]=kline;this.TitlePaint[0]=new DynamicKLineTitlePainting();this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;this.TitlePaint[0].Canvas=this.Canvas;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
|
|
6956
|
+
this.TitlePaint[0].LanguageID=this.LanguageID;this.TitlePaint[0].HQChart=this;this.TitlePaint[0].GetEventCallback=function(id){return _this20.GetEventCallback(id);};};//绑定主图K线数据
|
|
6978
6957
|
this.BindMainData=function(hisData,showCount){this.ChartPaint[0].Data=hisData;this.ChartPaint[0].Symbol=this.Symbol;if(this.KLineSize){if(!IFrameSplitOperator.IsNumber(this.KLineSize.DataWidth)){showCount=this.Frame.SubFrame[0].Frame.XPointCount-this.RightSpaceCount;}else{var obj=this.Frame.SetDataWidth(this.KLineSize.DataWidth);showCount=obj.XPointCount-this.RightSpaceCount;this.KLineSize.DataWidth=null;}}for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;item.XPointCount=showCount+this.RightSpaceCount;item.Data=this.ChartPaint[0].Data;item.XSplitOperator.Symbol=this.Symbol;item.XSplitOperator.Period=this.Period;}this.TitlePaint[0].Data=this.ChartPaint[0].Data;//动态标题
|
|
6979
6958
|
this.TitlePaint[0].Symbol=this.Symbol;this.TitlePaint[0].Name=this.Name;this.TitlePaint[0].Period=this.Period;this.ChartCorssCursor.StringFormatX.Data=this.ChartPaint[0].Data;//十字光标
|
|
6980
6959
|
this.Frame.Data=this.ChartPaint[0].Data;for(var i=0;i<this.OverlayChartPaint.length;++i)//K线叠加 主图股票数据绑定到叠加上
|
|
@@ -7334,15 +7313,15 @@ this.Draw();};this.AddOverlayIndex=function(obj){var overlay=this.CreateOverlayW
|
|
|
7334
7313
|
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7335
7314
|
this.Draw();};//创建一个叠加指标
|
|
7336
7315
|
this.CreateOverlayWindowsIndex=function(obj)// {WindowIndex:, IndexName:, Identify:, ShowRightText:, API:}
|
|
7337
|
-
{var
|
|
7316
|
+
{var _this21=this;var indexName=obj.IndexName;var windowIndex=obj.WindowIndex;var apiItem=null,indexInfo=null,indexCustom=null;if(obj.API){apiItem=obj.API;}else if(obj.Script)//动态执行脚本
|
|
7338
7317
|
{indexInfo={Script:obj.Script,ID:obj.indexName,Name:obj.indexName};if(obj.Name)indexInfo.Name=obj.Name;}else{var scriptData=new JSIndexScript();indexInfo=scriptData.Get(indexName);//系统指标
|
|
7339
7318
|
if(!indexInfo){indexCustom=JSIndexMap.Get(indexName);//定制指标
|
|
7340
7319
|
if(!indexCustom){console.warn('[KLineChartContainer::CreateOverlayIndex] can not find index['+indexName+']');return null;}}}var subFrame=this.Frame.SubFrame[windowIndex];var overlayFrame=new OverlayIndexItem();if(obj.Identify)overlayFrame.Identify=obj.Identify;//由外部指定id
|
|
7341
7320
|
//var frame= this.ClassName==='KLineChartHScreenContainer' ? new OverlayKLineHScreenFrame() : new OverlayKLineFrame();
|
|
7342
|
-
var frame=this.CreateOverlayFrame();frame.Canvas=this.Canvas;frame.MainFrame=subFrame.Frame;frame.ChartBorder=subFrame.Frame.ChartBorder;frame.GetEventCallback=function(id){return
|
|
7321
|
+
var frame=this.CreateOverlayFrame();frame.Canvas=this.Canvas;frame.MainFrame=subFrame.Frame;frame.ChartBorder=subFrame.Frame.ChartBorder;frame.GetEventCallback=function(id){return _this21.GetEventCallback(id);};if(obj.ShowRightText===true)frame.IsShow=true;else if(obj.ShowRightText===false)frame.IsShow=false;if(IFrameSplitOperator.IsBool(obj.ShowToolbar))frame.IsShowToolbar=obj.ShowToolbar;//废弃
|
|
7343
7322
|
if(IFrameSplitOperator.IsBool(obj.IsShareY))frame.IsShareY=obj.IsShareY;if(IFrameSplitOperator.IsNumber(obj.IsShowMainFrame))frame.IsShowMainFrame=obj.IsShowMainFrame;//if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
|
|
7344
7323
|
if(IFrameSplitOperator.IsBool(obj.IsCalculateYMaxMin))frame.IsCalculateYMaxMin=obj.IsCalculateYMaxMin;//是否计算Y最大最小值
|
|
7345
|
-
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
|
|
7324
|
+
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 _this21.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this21.GetKLineChart();};frame.YSplitOperator.OverlayIndex=overlayFrame;frame.YSplitOperator.HQChart=this;frame.YSplitOperator.OverlayIdentify=overlayFrame.Identify;if(obj.Frame){var item=obj.Frame;if(item.Custom)frame.YSplitOperator.Custom=item.Custom;if(IFrameSplitOperator.IsBool(item.IsYDrawMainFrame))frame.IsYDrawMainFrame=item.IsYDrawMainFrame;//自定义刻度绘制在主图上
|
|
7346
7325
|
if(IFrameSplitOperator.IsBool(item.IsShowToolbar))frame.IsShowToolbar=item.IsShowToolbar;//是否显示工具栏
|
|
7347
7326
|
}overlayFrame.Frame=frame;if(apiItem){var apiIndex=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,obj,true);apiIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
|
|
7348
7327
|
overlayFrame.Script=apiIndex;}else if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,obj);var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
@@ -7363,10 +7342,10 @@ this.ChangeCoordinateType=function(obj){if(!this.Frame)return;if(!IFrameSplitOpe
|
|
|
7363
7342
|
{frame.Frame.YSplitOperator.CoordinateType=2;}else{return;}}else{if(obj.Type>=0&&obj.Type<=5)frame.YSplitOperator.CoordinateType=obj.Type;if(obj.IsReverse===true)frame.CoordinateType=1;else if(obj.IsReverse==false)frame.CoordinateType=0;}//请求缓存的最大最小值
|
|
7364
7343
|
frame.YMaxMin.Max=null;frame.YMaxMin.Min=null;this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7365
7344
|
this.Frame.SetSizeChage(true);this.Draw();};//设置指标窗口个数
|
|
7366
|
-
this.ChangeIndexWindowCount=function(count,option){var
|
|
7345
|
+
this.ChangeIndexWindowCount=function(count,option){var _this22=this;if(count<=0)return;if(this.Frame.SubFrame.length==count)return;this.Frame.RestoreIndexWindows();var currentLength=this.Frame.SubFrame.length;if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.DeleteIndexPaint(i);this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);this.TitlePaint.splice(count+1,currentLength-count);//最后一个显示X轴坐标
|
|
7367
7346
|
for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}this.Frame.SetSizeChage(true);this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7368
7347
|
this.Draw();}else{//创建新的指标窗口
|
|
7369
|
-
var pixelRatio=GetDevicePixelRatio();for(var i=currentLength;i<count;++i){var subFrame=this.CreateSubFrameItem(i);subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return
|
|
7348
|
+
var pixelRatio=GetDevicePixelRatio();for(var i=currentLength;i<count;++i){var subFrame=this.CreateSubFrameItem(i);subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this22.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}//最后一个显示X轴坐标
|
|
7370
7349
|
for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}this.Frame.SetSizeChage(true);this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7371
7350
|
this.Draw();//创建指标
|
|
7372
7351
|
var indexName=[{Index:"RSI"},{Index:"MACD"},{Index:"VOL"},{Index:"UOS"},{Index:"CHO"},{Index:"BRAR"}];//增加的指标名字
|
|
@@ -7378,11 +7357,11 @@ var subFrame=this.Frame.SubFrame[i];if(item.Modify!=null)this.Frame.SubFrame[i].
|
|
|
7378
7357
|
}if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))subFrame.Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))subFrame.Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}var bindData=this.ChartPaint[0].Data;this.BindIndexData(i,bindData);//执行脚本
|
|
7379
7358
|
}//this.UpdataDataoffset(); //更新数据偏移
|
|
7380
7359
|
}};this.ChangeIndexTemplate=function(option)//切换指标模板 可以设置指标窗口个数 每个窗口的指标
|
|
7381
|
-
{var
|
|
7360
|
+
{var _this23=this;if(!option.Windows)return;var count=option.Windows.length;if(count<=0)return;var currentLength=this.Frame.SubFrame.length;var period=null,right=null,symbol=null;if(option.Symbol)symbol=option.Symbol;if(option.KLine){if(IFrameSplitOperator.IsNumber(option.KLine.Period)&&option.KLine.Period!=this.Period)period=option.KLine.Period;//周期
|
|
7382
7361
|
if(IFrameSplitOperator.IsNumber(option.KLine.Right)&&option.KLine.Right!=this.Right)right=option.KLine.Right;//复权
|
|
7383
7362
|
}var bRefreshData=period!=null||right!=null||symbol!=null;//清空所有的指标图型
|
|
7384
7363
|
for(var i=0;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.SubFrame[i];frame.YSpecificMaxMin=null;frame.IsLocked=false;frame.YSplitScale=null;}if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);this.TitlePaint.splice(count+1,currentLength-count);}else{for(var i=currentLength;i<count;++i)//创建新的指标窗口
|
|
7385
|
-
{var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return
|
|
7364
|
+
{var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this23.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}}for(var i=0;i<count;++i){var windowIndex=i;var item=option.Windows[i];var frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[i];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;var frame=this.Frame.SubFrame[i];this.DeleteWindowsOverlayIndex(i);//清空叠加指标
|
|
7386
7365
|
if(item.Script)//自定义指标脚本
|
|
7387
7366
|
{this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
7388
7367
|
}else if(item.API)//后台指标
|
|
@@ -7397,8 +7376,6 @@ this.Draw();}else{if(!symbol)symbol=this.Symbol;var optionData={KLine:{}};if(IFr
|
|
|
7397
7376
|
for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;item.Identify=i;}if(this.ChartDrawPicture.length>0){var aryDrawPicture=[];for(var i in this.ChartDrawPicture){var item=this.ChartDrawPicture[i];if(item.Frame==delFrame)continue;aryDrawPicture.push(item);}this.ChartDrawPicture=aryDrawPicture;}this.Frame.SetSizeChage(true);this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();};this.CreateExtendChart=function(name,option)//创建扩展图形
|
|
7398
7377
|
{var chart;switch(name){case'筹码分布':chart=new StockChip();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.Left=this.Frame.ChartBorder.Right;//左边间距使用当前框架间距
|
|
7399
7378
|
chart.SetOption(option);this.ExtendChartPaint.push(chart);this.Frame.ChartBorder.Right+=chart.Width;//创建筹码需要增加右边的间距
|
|
7400
|
-
return chart;case'画图工具':chart=new DrawToolsButton();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.Left=this.Frame.ChartBorder.Right;//左边间距使用当前框架间距
|
|
7401
|
-
chart.SetOption(option);this.ExtendChartPaint.push(chart);this.Frame.ChartBorder.Right+=chart.Width;//创建筹码需要增加右边的间距
|
|
7402
7379
|
return chart;case'KLineTooltip':if(option.Create&&typeof option.Create=='function')chart=option.Create();else chart=new KLineTooltipPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;option.LanguageID=this.LanguageID;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"深度图":chart=new DepthMapPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"K线Y轴背景图":chart=new KLineYAxisBGPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case'背景图':chart=new BackgroundPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"FrameSplitPaint"://框架分割
|
|
7403
7380
|
chart=new FrameSplitPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;default:chart=g_ExtendChartPaintFactory.Create(name);if(!chart)return null;chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;}};this.OnTouchFinished=function(){if(this.DragMode==JSCHART_DRAG_ID.CLICK_TOUCH_MODE_ID){if(this.TouchStatus.CorssCursorShow==true&&this.TouchDrawCount>0)return;this.TouchStatus.CorssCursorShow=false;this.DrawDynamicInfo();return;}if(this.EnableClickModel===true){if(this.ClickModel.IsShowCorssCursor==true&&this.TouchDrawCount>0)return;this.ClickModel.IsShowCorssCursor=false;this.DrawDynamicInfo();return;}if(this.CorssCursorTouchEnd===true)//手势离开十字光标消失
|
|
7404
7381
|
{if(this.TouchDrawCount>0)this.DrawDynamicInfo();return;}for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];if(item.ClassName==='KLineTooltipPaint'){this.DrawDynamicInfo();}}};//锁|解锁指标 { Index:指标名字,IsLocked:是否要锁上,Callback:回调 }
|
|
@@ -7447,24 +7424,24 @@ this.ClearKLineInfo=function(){if(!this.ChartInfo||this.ChartInfo.length<=0)retu
|
|
|
7447
7424
|
this.OverlaySymbol=function(symbol,option){for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];if(item.Symbol===symbol){console.warn('[KLineChartContainer::OverlaySymbol] overlay symbol='+symbol+' exist.');return false;}}var paint=new ChartOverlayKLine();paint.Canvas=this.Canvas;paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;paint.ChartFrame=this.Frame.SubFrame[0].Frame;paint.Name="Overlay-KLine";paint.DrawType=this.KLineDrawType;paint.Symbol=symbol;paint.Identify='Overlay-KLine-'+symbol;if(option&&option.Color)paint.Color=option.Color;else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];paint.SetOption(option);++g_JSChartResource.OverlaySymbol.Random;if(this.ChartPaint[0]&&this.ChartPaint[0].Data&&this.SourceData)paint.MainData=this.ChartPaint[0].Data;//绑定主图数据
|
|
7448
7425
|
this.OverlayChartPaint.push(paint);if(ChartData.IsDayPeriod(this.Period,true))this.RequestOverlayHistoryData();//请求日线数据
|
|
7449
7426
|
else if(ChartData.IsMinutePeriod(this.Period,true))this.RequestOverlayHistoryMinuteData();//请求分钟历史数据
|
|
7450
|
-
return true;};this.RequestOverlayHistoryData=function(){var
|
|
7451
|
-
var self=this;var dataCount=this.GetRequestDataCount();var firstDate=this.SourceData.Data[0].Date;var
|
|
7452
|
-
if(item.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)return'continue';var symbol=item.Symbol;if(!symbol)return'continue';item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(
|
|
7453
|
-
Explain:'叠加股票日K线数据',Request:{Url:self.KLineApiUrl,Data:{symbol:symbol,count:dataCount.MaxRequestDataCount,"first":{date:firstDate},field:["name","symbol","yclose","open","price","high",'vol','amount']},Type:'POST'},Self:
|
|
7427
|
+
return true;};this.RequestOverlayHistoryData=function(){var _this24=this;if(!this.OverlayChartPaint.length)return;if(!this.SourceData||!this.SourceData.Data)return;//主图数据还没有到完
|
|
7428
|
+
var self=this;var dataCount=this.GetRequestDataCount();var firstDate=this.SourceData.Data[0].Date;var _loop=function _loop(){var item=_this24.OverlayChartPaint[i];if(!item.MainData)return'continue';//等待主图股票数据未下载完
|
|
7429
|
+
if(item.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)return'continue';var symbol=item.Symbol;if(!symbol)return'continue';item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(_this24.NetworkFilter){obj={Name:'KLineChartContainer::RequestOverlayHistoryData',//类名::
|
|
7430
|
+
Explain:'叠加股票日K线数据',Request:{Url:self.KLineApiUrl,Data:{symbol:symbol,count:dataCount.MaxRequestDataCount,"first":{date:firstDate},field:["name","symbol","yclose","open","price","high",'vol','amount']},Type:'POST'},Self:_this24,PreventDefault:false};_this24.NetworkFilter(obj,function(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOverlayHistoryData(data,item);});if(obj.PreventDefault==true)return'continue';//已被上层替换,不调用默认的网络请求
|
|
7454
7431
|
}//请求数据
|
|
7455
|
-
JSNetwork.HttpRequest({url:
|
|
7432
|
+
JSNetwork.HttpRequest({url:_this24.KLineApiUrl,data:{"field":["name","symbol","yclose","open","price","high"],"symbol":symbol,"start":-1,"count":dataCount.MaxRequestDataCount},type:"post",dataType:"json",async:true,success:function success(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOverlayHistoryData(data,item);}});};for(var i=0;i<this.OverlayChartPaint.length;++i){var obj;var _ret=_loop();if(_ret==='continue')continue;}};this.RecvOverlayHistoryData=function(data,paint){if(paint.IsDelete)return;var aryDayData=KLineChartContainer.JsonDataToHistoryData(data);//原始叠加数据
|
|
7456
7433
|
var sourceData=new ChartData();sourceData.Data=aryDayData;sourceData.DataType=0;var bindData=new ChartData();bindData.Data=aryDayData;bindData.Period=this.Period;bindData.Right=this.Right;bindData.DataType=0;if(bindData.Right>0&&MARKET_SUFFIX_NAME.IsSHSZStockA(data.symbol)&&!this.IsApiPeriod)//复权数据 ,A股才有有复权
|
|
7457
7434
|
{var rightData=bindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});bindData.Data=rightData;}var aryOverlayData=this.SourceData.GetOverlayData(bindData.Data,this.IsApiPeriod);//和主图数据拟合以后的数据
|
|
7458
7435
|
bindData.Data=aryOverlayData;if(ChartData.IsDayPeriod(bindData.Period,false)&&!this.IsApiPeriod)//周期数据
|
|
7459
7436
|
{var periodData=bindData.GetPeriodData(bindData.Period);bindData.Data=periodData;}paint.Data=bindData;paint.SourceData=sourceData;paint.Title=data.name;paint.Symbol=data.symbol;paint.Status=OVERLAY_STATUS_ID.STATUS_FINISHED_ID;this.Frame.SubFrame[0].Frame.YSplitOperator.CoordinateType=1;//调整为百份比坐标
|
|
7460
7437
|
this.UpdataDataoffset();//更新数据偏移
|
|
7461
7438
|
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7462
|
-
this.Frame.SetSizeChage(true);this.Draw();};this.RequestOverlayHistoryMinuteData=function(){var
|
|
7463
|
-
var self=this;var dataCount=this.GetRequestDataCount();var firstDate=this.SourceData.Data[0].Date;var firstTime=this.SourceData.Data[0].Time;var
|
|
7464
|
-
if(item.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)return'continue';var symbol=item.Symbol;if(!symbol)return'continue';item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(
|
|
7465
|
-
Explain:'叠加股票分钟K线数据',Request:{Url:self.MinuteKLineApiUrl,Data:{symbol:symbol,count:dataCount.MaxRequestMinuteDayCount,"first":{date:firstDate,time:firstTime},field:["name","symbol","yclose","open","price","high",'vol','amount']},Type:'POST'},Self:
|
|
7439
|
+
this.Frame.SetSizeChage(true);this.Draw();};this.RequestOverlayHistoryMinuteData=function(){var _this25=this;if(!this.OverlayChartPaint.length)return;if(!this.SourceData||!this.SourceData.Data)return;//主图数据还没有到完
|
|
7440
|
+
var self=this;var dataCount=this.GetRequestDataCount();var firstDate=this.SourceData.Data[0].Date;var firstTime=this.SourceData.Data[0].Time;var _loop2=function _loop2(){var item=_this25.OverlayChartPaint[i];if(!item.MainData)return'continue';//等待主图股票数据未下载完
|
|
7441
|
+
if(item.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)return'continue';var symbol=item.Symbol;if(!symbol)return'continue';item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(_this25.NetworkFilter){obj={Name:'KLineChartContainer::RequestOverlayHistoryMinuteData',//类名::
|
|
7442
|
+
Explain:'叠加股票分钟K线数据',Request:{Url:self.MinuteKLineApiUrl,Data:{symbol:symbol,count:dataCount.MaxRequestMinuteDayCount,"first":{date:firstDate,time:firstTime},field:["name","symbol","yclose","open","price","high",'vol','amount']},Type:'POST'},Self:_this25,PreventDefault:false};_this25.NetworkFilter(obj,function(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOveralyHistoryMinuteData(data,item);});if(obj.PreventDefault==true)return'continue';//已被上层替换,不调用默认的网络请求
|
|
7466
7443
|
}//请求数据
|
|
7467
|
-
JSNetwork.HttpRequest({url:
|
|
7444
|
+
JSNetwork.HttpRequest({url:_this25.MinuteKLineApiUrl,data:{"field":["name","symbol","yclose","open","price","high",'vol','amount'],"symbol":symbol,"start":-1,"count":dataCount.MaxRequestMinuteDayCount},type:"post",dataType:"json",async:true,success:function success(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOveralyHistoryMinuteData(data,item);}});};for(var i=0;i<this.OverlayChartPaint.length;++i){var obj;var _ret2=_loop2();if(_ret2==='continue')continue;}};this.RecvOveralyHistoryMinuteData=function(data,paint){if(this.EnableVerifyRecvData&&data.symbol!=paint.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvOveralyHistoryMinuteData] recv data symbol not match. paint['+paint.Symbol+'] , Recv['+data.symbol+']');return;}var aryDayData=KLineChartContainer.JsonDataToMinuteHistoryData(data);if(!aryDayData)return;//原始叠加数据
|
|
7468
7445
|
var sourceData=new ChartData();sourceData.Data=aryDayData;sourceData.DataType=1;//0=日线数据 1=分钟数据
|
|
7469
7446
|
var bindData=new ChartData();bindData.Data=aryDayData;bindData.Period=this.Period;bindData.Right=this.Right;bindData.DataType=1;var aryOverlayData=this.SourceData.GetOverlayMinuteData(bindData.Data,this.IsApiPeriod);//和主图数据拟合以后的数据
|
|
7470
7447
|
bindData.Data=aryOverlayData;if(ChartData.IsMinutePeriod(bindData.Period,false)&&!this.IsApiPeriod)//周期数据, API周期数据不用计算
|
|
@@ -7495,7 +7472,7 @@ this.CreateChartDrawPicture=function(name,option,callback){var drawPicture=null;
|
|
|
7495
7472
|
{if(IChartDrawPicture.MapIonFont.has(name)){var iconItem=IChartDrawPicture.MapIonFont.get(name);drawPicture=new ChartDrawPictureIconFont();drawPicture.FontOption.Family=iconItem.Family;drawPicture.Text=iconItem.Text;if(iconItem.Color)drawPicture.LineColor=iconItem.Color;}}if(!drawPicture)return false;drawPicture.Canvas=this.Canvas;drawPicture.Status=0;drawPicture.Symbol=this.Symbol;drawPicture.Period=this.Period;drawPicture.Right=this.Right;drawPicture.Option=this.ChartDrawOption;if(callback)drawPicture.FinishedCallback=callback;//完成通知上层回调
|
|
7496
7473
|
if(option)drawPicture.SetOption(option);var self=this;drawPicture.Update=function()//更新回调函数
|
|
7497
7474
|
{self.DrawDynamicInfo();};drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.CurrentChartDrawPicture=drawPicture;//JSConsole.Chart.Log("[KLineChartContainer::CreateChartDrawPicture] ", name,this.CurrentChartDrawPicture);
|
|
7498
|
-
return true;};this.AddChartDrawPicture=function(obj){if(!obj)return null;if(obj.FrameID<0||obj.FrameID>=this.Frame.SubFrame.length)return null;var self=this;var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var drawPicture=item.Create();drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame;//绑定框架坐标
|
|
7475
|
+
return true;};this.ClearCurrnetDrawPicture=function(){this.CurrentChartDrawPicture=null;};this.AddChartDrawPicture=function(obj){if(!obj)return null;if(obj.FrameID<0||obj.FrameID>=this.Frame.SubFrame.length)return null;var self=this;var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var drawPicture=item.Create();drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame;//绑定框架坐标
|
|
7499
7476
|
drawPicture.Symbol=this.Symbol;drawPicture.Period=this.Period;drawPicture.Right=this.Right;drawPicture.Option=this.ChartDrawOption;if(obj.Value)drawPicture.Value=obj.Value;if(obj.Guid)drawPicture.Guid=obj.Guid;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(obj);drawPicture.SetOption(obj);if(obj.EnableUpdateXValue)drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};if(drawPicture.ClassName==='ChartDrawPictureText')drawPicture.IsInitialized=true;this.ChartDrawPicture.push(drawPicture);this.DrawDynamicInfo();return drawPicture;};this.PasteChartDrawPicture=function(data,frameID,option){if(!data||!data.ClassName)return null;if(frameID<0||frameID>=this.Frame.SubFrame.length)return null;var item=IChartDrawPicture.GetDrawPictureByClassName(data.ClassName);if(!item)return null;var drawPicture=item.Create();if(!drawPicture)return null;var self=this;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[frameID].Frame;//绑定框架坐标
|
|
7500
7477
|
drawPicture.Symbol=this.Symbol;drawPicture.Period=this.Period;drawPicture.Right=this.Right;drawPicture.Option=this.ChartDrawOption;drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};if(drawPicture.SetOption)drawPicture.SetOption(data);this.RandomDrawPictureValue(drawPicture,data);drawPicture.PointToValue();if(drawPicture.ClassName==='ChartDrawPictureText')drawPicture.IsInitialized=true;this.ChartDrawPicture.push(drawPicture);//存盘
|
|
7501
7478
|
if(this.ChartDrawStorage)this.ChartDrawStorage.SaveDrawData(drawPicture);this.DrawDynamicInfo();return drawPicture;};//随机生成画图的点
|
|
@@ -7511,11 +7488,10 @@ var klineChart=this.ChartPaint[0];var klineType=klineChart.DrawType;var bThinAKB
|
|
|
7511
7488
|
var coordinateType=null,yCoordinateType=null;//坐标类型
|
|
7512
7489
|
var mainFrame=null;if(this.Frame.SubFrame[0]&&this.Frame.SubFrame[0].Frame)mainFrame=this.Frame.SubFrame[0].Frame;if(mainFrame){coordinateType=mainFrame.CoordinateType;if(mainFrame.YSplitOperator)yCoordinateType=mainFrame.YSplitOperator.CoordinateType;}var aryKLineInfo=[];//信息地雷
|
|
7513
7490
|
for(var i=0;i<this.ChartInfo.length;++i){var item=this.ChartInfo[i];if(item&&item.ClassName)aryKLineInfo.push(item.ClassName);}var aryOverlaySymbol=[];//叠加的股票列表
|
|
7514
|
-
for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(item&&item.Symbol)aryOverlaySymbol.push(item.Symbol);}var bBGSpit=false,
|
|
7515
|
-
|
|
7516
|
-
var aryMenu=[{Name:"分析周期",SubMenu:[{Name:"日线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[0]},Checked:this.Period==0},{Name:"周线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[1]},Checked:this.Period==1},{Name:"双周线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[21]},Checked:this.Period==21},{Name:"月线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[2]},Checked:this.Period==2},{Name:"季线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[9]},Checked:this.Period==9},{Name:"半年",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[22]},Checked:this.Period==22},{Name:"年线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[3]},Checked:this.Period==3},{Name:"1分",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[4]},Checked:this.Period==4},{Name:"5分",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[5]},Checked:this.Period==5},{Name:"15分",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[6]},Checked:this.Period==6},{Name:"30分",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[7]},Checked:this.Period==7},{Name:"60分",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[8]},Checked:this.Period==8},{Name:"2小时",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[11]},Checked:this.Period==11},{Name:"4小时",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[12]},Checked:this.Period==12},{Name:"分笔",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[10]},Checked:this.Period==10},{Name:"自定义周期:3分钟",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[20003]},Checked:this.Period==20003},{Name:"自定义周期:35分钟",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[20035]},Checked:this.Period==20035},{Name:"自定义周期:8日",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[40008]},Checked:this.Period==40008}]},{Name:"指标切换",SubMenu:[{Name:"均线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"均线"]}},{Name:"BOLL",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"BOLL"]}},{Name:"MACD",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"MACD"]}},{Name:"MACD(粗)",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"MACD2"]}},{Name:"KDJ",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"KDJ"]}},{Name:"VOL",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"VOL"]}},{Name:"RSI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"RSI"]}},{Name:"BRAR",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"BRAR"]}},{Name:"WR",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"WR"]}}]},{Name:"五彩K线",SubMenu:[{Name:"十字星",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-十字星"]}},{Name:"早晨之星",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-早晨之星"]}},{Name:"垂死十字",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-垂死十字"]}},{Name:"三只乌鸦",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-三只乌鸦"]}},{Name:"光脚阴线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-光脚阴线"]}},{Name:"黄昏之星",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-黄昏之星"]}}]},{Name:"专家系统",SubMenu:[{Name:"BIAS",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-BIAS"]}},{Name:"CCI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-CCI"]}},{Name:"DMI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-DMI"]}},{Name:"KD",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-KD"]}},{Name:"BOLL",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-BOLL"]}},{Name:"KDJ",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-KDJ"]}}]},{Name:"信息地雷",SubMenu:[{Name:"公告",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["公告",!aryKLineInfo.includes("AnnouncementInfo")]},Checked:aryKLineInfo.includes("AnnouncementInfo")},{Name:"业绩预告",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["业绩预告",!aryKLineInfo.includes("PforecastInfo")]},Checked:aryKLineInfo.includes("PforecastInfo")},{Name:"调研",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["调研",!aryKLineInfo.includes("ResearchInfo")]},Checked:aryKLineInfo.includes("ResearchInfo")},{Name:"大宗交易",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["大宗交易",!aryKLineInfo.includes("BlockTrading")]},Checked:aryKLineInfo.includes("BlockTrading")},{Name:"龙虎榜",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["龙虎榜",!aryKLineInfo.includes("TradeDetail")]},Checked:aryKLineInfo.includes("TradeDetail")},{Name:"互动易",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["互动易",!aryKLineInfo.includes("InvestorInfo")]},Checked:aryKLineInfo.includes("InvestorInfo")}]},{Name:"缺口提示",SubMenu:[{Name:"显示1个缺口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID,Args:[true,1]},Checked:priceGap.Enable==true&&priceGap.Count==1},{Name:"显示2个缺口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID,Args:[true,2]},Checked:priceGap.Enable==true&&priceGap.Count==2},{Name:"显示3个缺口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID,Args:[true,3]},Checked:priceGap.Enable==true&&priceGap.Count==3},{Name:"隐藏缺口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID,Args:[false]},Checked:priceGap.Enable==false}]},{Name:"叠加品种",SubMenu:[{Name:"上证指数",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["000001.sh",!aryOverlaySymbol.includes("000001.sh")]},Checked:aryOverlaySymbol.includes("000001.sh")},{Name:"深证成指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399001.sz",!aryOverlaySymbol.includes("399001.sz")]},Checked:aryOverlaySymbol.includes("399001.sz")},{Name:"中小板指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399005.sz",!aryOverlaySymbol.includes("399005.sz")]},Checked:aryOverlaySymbol.includes("399005.sz")},{Name:"创业板指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399006.sz",!aryOverlaySymbol.includes("399006.sz")]},Checked:aryOverlaySymbol.includes("399006.sz")},{Name:"沪深300",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["000300.sh",!aryOverlaySymbol.includes("000300.sh")]},Checked:aryOverlaySymbol.includes("000300.sh")}]},{Name:"主图线型",SubMenu:[{Name:"K线(空心阳线)",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[3]},Checked:klineType==0},{Name:"K线(实心阳线)",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[0]},Checked:klineType==3},{Name:"美国线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[2,true,{IsThinAKBar:false}]},Checked:klineType==2&&!bThinAKBar},{Name:"美国线(细)",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[2,true,{IsThinAKBar:true}]},Checked:klineType==2&&bThinAKBar},{Name:"收盘线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[1]},Checked:klineType==1},{Name:"收盘面积",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[4]},Checked:klineType==4},{Name:"K线(空心阳线阴线)",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[6]},Checked:klineType==6},{Name:"Heikin Ashi",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[11]},Checked:klineType==11},{Name:"Line Break",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[12]},Checked:klineType==12},{Name:"High-low",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[13]},Checked:klineType==13},{Name:"HLC Area",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[15]},Checked:klineType==15}]},{Name:"坐标类型",SubMenu:[{Name:"反转坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{IsReverse:coordinateType==0}]},Checked:coordinateType==1},{Name:JSPopMenu.SEPARATOR_LINE_NAME},{Name:"普通坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:0}]},Checked:yCoordinateType==0},{Name:"百分比坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:1}]},Checked:yCoordinateType==1},{Name:"对数坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:2}]},Checked:yCoordinateType==2},{Name:"等比坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:3}]},Checked:yCoordinateType==3},{Name:"等分坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:4}]},Checked:yCoordinateType==4},{Name:"黄金分割",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:5}]},Checked:yCoordinateType==5}]},{Name:"指标窗口个数",SubMenu:[{Name:"1个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[2]},Checked:2==windowCount},{Name:"2个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[3]},Checked:3==windowCount},{Name:"3个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[4]},Checked:4==windowCount},{Name:"4个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[5]},Checked:5==windowCount},{Name:"5个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[6]},Checked:6==windowCount}]},{Name:"其他设置",SubMenu:[{Name:"禁止拖拽",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID,Args:[0]},Checked:0==this.DragMode},{Name:"启动拖拽",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID,Args:[1]},Checked:1==this.DragMode},{Name:"区间选择",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID,Args:[2]},Checked:2==this.DragMode},{Name:JSPopMenu.SEPARATOR_LINE_NAME},{Name:"背景分割",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID,Args:[!bBGSpit]},Checked:bBGSpit},{Name:"画图工具",Data:{ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID,Args:[]},Checked:bShowDrawTool},{Name:"移动筹码图",Data:{ID:bShowStockChip?JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID,Args:[]},Checked:bShowStockChip}]}];//复权
|
|
7491
|
+
for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(item&&item.Symbol)aryOverlaySymbol.push(item.Symbol);}var bBGSpit=false,bShowStockChip=false;if(this.GetExtendChartByClassName("SessionBreaksPaint"))bBGSpit=true;if(this.GetExtendChartByClassName('StockChip'))bShowStockChip=true;//筹码
|
|
7492
|
+
var aryMenu=[{Name:"分析周期",SubMenu:[{Name:"日线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[0]},Checked:this.Period==0},{Name:"周线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[1]},Checked:this.Period==1},{Name:"双周线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[21]},Checked:this.Period==21},{Name:"月线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[2]},Checked:this.Period==2},{Name:"季线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[9]},Checked:this.Period==9},{Name:"半年",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[22]},Checked:this.Period==22},{Name:"年线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[3]},Checked:this.Period==3},{Name:"1分",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[4]},Checked:this.Period==4},{Name:"5分",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[5]},Checked:this.Period==5},{Name:"15分",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[6]},Checked:this.Period==6},{Name:"30分",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[7]},Checked:this.Period==7},{Name:"60分",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[8]},Checked:this.Period==8},{Name:"2小时",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[11]},Checked:this.Period==11},{Name:"4小时",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[12]},Checked:this.Period==12},{Name:"分笔",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[10]},Checked:this.Period==10},{Name:"自定义周期:3分钟",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[20003]},Checked:this.Period==20003},{Name:"自定义周期:35分钟",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[20035]},Checked:this.Period==20035},{Name:"自定义周期:8日",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PERIOD_ID,Args:[40008]},Checked:this.Period==40008}]},{Name:"指标切换",SubMenu:[{Name:"均线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"均线"]}},{Name:"BOLL",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"BOLL"]}},{Name:"MACD",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"MACD"]}},{Name:"MACD(粗)",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"MACD2"]}},{Name:"KDJ",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"KDJ"]}},{Name:"VOL",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"VOL"]}},{Name:"RSI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"RSI"]}},{Name:"BRAR",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"BRAR"]}},{Name:"WR",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"WR"]}}]},{Name:"五彩K线",SubMenu:[{Name:"十字星",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-十字星"]}},{Name:"早晨之星",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-早晨之星"]}},{Name:"垂死十字",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-垂死十字"]}},{Name:"三只乌鸦",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-三只乌鸦"]}},{Name:"光脚阴线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-光脚阴线"]}},{Name:"黄昏之星",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COLOR_INDEX_ID,Args:["五彩K线-黄昏之星"]}}]},{Name:"专家系统",SubMenu:[{Name:"BIAS",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-BIAS"]}},{Name:"CCI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-CCI"]}},{Name:"DMI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-DMI"]}},{Name:"KD",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-KD"]}},{Name:"BOLL",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-BOLL"]}},{Name:"KDJ",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_TRADE_INDEX_ID,Args:["交易系统-KDJ"]}}]},{Name:"信息地雷",SubMenu:[{Name:"公告",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["公告",!aryKLineInfo.includes("AnnouncementInfo")]},Checked:aryKLineInfo.includes("AnnouncementInfo")},{Name:"业绩预告",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["业绩预告",!aryKLineInfo.includes("PforecastInfo")]},Checked:aryKLineInfo.includes("PforecastInfo")},{Name:"调研",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["调研",!aryKLineInfo.includes("ResearchInfo")]},Checked:aryKLineInfo.includes("ResearchInfo")},{Name:"大宗交易",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["大宗交易",!aryKLineInfo.includes("BlockTrading")]},Checked:aryKLineInfo.includes("BlockTrading")},{Name:"龙虎榜",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["龙虎榜",!aryKLineInfo.includes("TradeDetail")]},Checked:aryKLineInfo.includes("TradeDetail")},{Name:"互动易",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID,Args:["互动易",!aryKLineInfo.includes("InvestorInfo")]},Checked:aryKLineInfo.includes("InvestorInfo")}]},{Name:"缺口提示",SubMenu:[{Name:"显示1个缺口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID,Args:[true,1]},Checked:priceGap.Enable==true&&priceGap.Count==1},{Name:"显示2个缺口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID,Args:[true,2]},Checked:priceGap.Enable==true&&priceGap.Count==2},{Name:"显示3个缺口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID,Args:[true,3]},Checked:priceGap.Enable==true&&priceGap.Count==3},{Name:"隐藏缺口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_PRICE_GAP_ID,Args:[false]},Checked:priceGap.Enable==false}]},{Name:"叠加品种",SubMenu:[{Name:"上证指数",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["000001.sh",!aryOverlaySymbol.includes("000001.sh")]},Checked:aryOverlaySymbol.includes("000001.sh")},{Name:"深证成指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399001.sz",!aryOverlaySymbol.includes("399001.sz")]},Checked:aryOverlaySymbol.includes("399001.sz")},{Name:"中小板指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399005.sz",!aryOverlaySymbol.includes("399005.sz")]},Checked:aryOverlaySymbol.includes("399005.sz")},{Name:"创业板指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399006.sz",!aryOverlaySymbol.includes("399006.sz")]},Checked:aryOverlaySymbol.includes("399006.sz")},{Name:"沪深300",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["000300.sh",!aryOverlaySymbol.includes("000300.sh")]},Checked:aryOverlaySymbol.includes("000300.sh")}]},{Name:"主图线型",SubMenu:[{Name:"K线(空心阳线)",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[3]},Checked:klineType==0},{Name:"K线(实心阳线)",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[0]},Checked:klineType==3},{Name:"美国线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[2,true,{IsThinAKBar:false}]},Checked:klineType==2&&!bThinAKBar},{Name:"美国线(细)",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[2,true,{IsThinAKBar:true}]},Checked:klineType==2&&bThinAKBar},{Name:"收盘线",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[1]},Checked:klineType==1},{Name:"收盘面积",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[4]},Checked:klineType==4},{Name:"K线(空心阳线阴线)",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[6]},Checked:klineType==6},{Name:"Heikin Ashi",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[11]},Checked:klineType==11},{Name:"Line Break",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[12]},Checked:klineType==12},{Name:"High-low",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[13]},Checked:klineType==13},{Name:"HLC Area",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_KLINE_TYPE_ID,Args:[15]},Checked:klineType==15}]},{Name:"坐标类型",SubMenu:[{Name:"反转坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{IsReverse:coordinateType==0}]},Checked:coordinateType==1},{Name:JSPopMenu.SEPARATOR_LINE_NAME},{Name:"普通坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:0}]},Checked:yCoordinateType==0},{Name:"百分比坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:1}]},Checked:yCoordinateType==1},{Name:"对数坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:2}]},Checked:yCoordinateType==2},{Name:"等比坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:3}]},Checked:yCoordinateType==3},{Name:"等分坐标",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:4}]},Checked:yCoordinateType==4},{Name:"黄金分割",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_COORDINATETYPE_ID,Args:[{Type:5}]},Checked:yCoordinateType==5}]},{Name:"指标窗口个数",SubMenu:[{Name:"1个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[2]},Checked:2==windowCount},{Name:"2个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[3]},Checked:3==windowCount},{Name:"3个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[4]},Checked:4==windowCount},{Name:"4个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[5]},Checked:5==windowCount},{Name:"5个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[6]},Checked:6==windowCount}]},{Name:"其他设置",SubMenu:[{Name:"禁止拖拽",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID,Args:[0]},Checked:0==this.DragMode},{Name:"启动拖拽",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID,Args:[1]},Checked:1==this.DragMode},{Name:"区间选择",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DRAG_MODE_ID,Args:[2]},Checked:2==this.DragMode},{Name:JSPopMenu.SEPARATOR_LINE_NAME},{Name:"背景分割",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_BG_SPLIT_ID,Args:[!bBGSpit]},Checked:bBGSpit},{Name:"画图工具",Data:{ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID,Args:[]},Checked:this.IsShowDrawToolDialog()},{Name:"移动筹码图",Data:{ID:bShowStockChip?JSCHART_MENU_ID.CMD_HIDE_STOCKCHIP_ID:JSCHART_MENU_ID.CMD_SHOW_STOCKCHIP_ID,Args:[]},Checked:bShowStockChip}]}];//复权
|
|
7517
7493
|
if(!MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol)&&!MARKET_SUFFIX_NAME.IsBIT(this.Symbol)){var rightMenu={Name:"复权处理",SubMenu:[{Name:"不复权",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID,Args:[0]},Checked:0==this.Right},{Name:"前复权",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID,Args:[1]},Checked:1==this.Right},{Name:"后复权",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_RIGHT_ID,Args:[2]},Checked:2==this.Right}]};aryMenu.splice(1,0,rightMenu);}//删除菜单
|
|
7518
|
-
for(var i=0;i<aryMenu.length;++i){var item=aryMenu[i];if(item.Name=="五彩K线"){if(this.ColorIndex){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除五彩K线",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID}});}}else if(item.Name=="专家系统"){if(this.TradeIndex){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除专家系统",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID}});}}else if(item.Name=="叠加品种"){for(var j=0;j<item.SubMenu.length;++j){if(item.SubMenu[j].Checked){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"取消叠加",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID}});break;}}}else if(item.Name=="信息地雷"){for(var j=0;j<item.SubMenu.length;++j){if(item.SubMenu[j].Checked){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除所有",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID}});break;}}}}return aryMenu;};this.PopupSelectRectMenuV2=function(data,e){var
|
|
7494
|
+
for(var i=0;i<aryMenu.length;++i){var item=aryMenu[i];if(item.Name=="五彩K线"){if(this.ColorIndex){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除五彩K线",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID}});}}else if(item.Name=="专家系统"){if(this.TradeIndex){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除专家系统",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID}});}}else if(item.Name=="叠加品种"){for(var j=0;j<item.SubMenu.length;++j){if(item.SubMenu[j].Checked){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"取消叠加",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID}});break;}}}else if(item.Name=="信息地雷"){for(var j=0;j<item.SubMenu.length;++j){if(item.SubMenu[j].Checked){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除所有",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID}});break;}}}}return aryMenu;};this.PopupSelectRectMenuV2=function(data,e){var _this26=this;var aryMenu=[{Name:"区间统计",Data:{ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID,Args:[e]}},{Name:"区间放大",Data:{ID:JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID,Args:[data.SelectData]}}];var menuData={Menu:aryMenu,Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID};menuData.ClickCallback=function(data){_this26.OnClickRightMenu(data);};var x=data.X,y=data.Y;this.PopupMenuByRClick(menuData,x,y);};//重新加载画图工具(切换股票|周期)
|
|
7519
7495
|
this.ReloadChartDrawPicture=function(){this.ChartDrawPicture=[];if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;this.CurrentChartDrawPicture=null;if(this.ChartDrawStorage){this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData({Symbol:this.Symbol,Period:this.Period});var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_LOAD_DRAWPICTURE);if(event&&event.Callback){var sendData={Symbol:this.Symbol,Period:this.Period,DrawStorage:this.ChartDrawStorage,ChartDrawStorageCache:this.ChartDrawStorageCache};event.Callback(event,sendData,this);}}};this.CreateChartDrawPictureByStorage=function()//把缓存(this.ChartDrawStorageCache) 画图工具创建出来
|
|
7520
7496
|
{if(!IFrameSplitOperator.IsNonEmptyArray(this.ChartDrawStorageCache))return;for(var i=0;i<this.ChartDrawStorageCache.length;++i){var item=this.ChartDrawStorageCache[i];if(item.FrameID<0||!this.Frame.SubFrame||this.Frame.SubFrame.length<item.FrameID)continue;var drawPicture=IChartDrawPicture.CreateChartDrawPicture(item);if(!drawPicture)continue;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame;//绑定框架坐标
|
|
7521
7497
|
drawPicture.Option=this.ChartDrawOption;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(item);drawPicture.UpdateXValue();drawPicture.ValueToPoint();var self=this;drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};if(drawPicture.ClassName==='ChartDrawPictureText')drawPicture.IsInitialized=true;this.ChartDrawPicture.push(drawPicture);}this.ChartDrawStorageCache=null;//清空缓存
|
|
@@ -7830,8 +7806,8 @@ var touches=this.GetToucheData(e,this.IsForceLandscape);var pt=this.PointAbsolut
|
|
|
7830
7806
|
{var pt=self.PointAbsoluteToRelative(drag.Click.X,drag.Click.Y,true);var x=pt.X;var y=pt.Y;self.OnMouseMove(x,y,e);}};if(this.ChartDrawOption.IsLockScreen){this.MouseDrag=drag;if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;if(this.CurrentChartDrawPicture)//画图工具模式
|
|
7831
7807
|
{var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==2)this.SetChartDrawPictureThirdPoint(drag.Click.X,drag.Click.Y,true);else{this.SetChartDrawPictureFirstPoint(drag.Click.X,drag.Click.Y,true);//只有1个点 直接完成
|
|
7832
7808
|
if(this.FinishChartDrawPicturePoint())this.DrawDynamicInfo({Corss:false,Tooltip:false});}if(e.cancelable)e.preventDefault();return;}else{var drawPictrueData={};var pixelTatio=GetDevicePixelRatio();//鼠标移动坐标是原始坐标 需要乘以放大倍速
|
|
7833
|
-
drawPictrueData.X=touches[0].clientX-uielement.getBoundingClientRect().left;drawPictrueData.Y=touches[0].clientY-uielement.getBoundingClientRect().top;if(this.GetChartDrawPictureByPoint(drawPictrueData)){drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;drawPictrueData.ChartDrawPicture.IsSelected=true;this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;var
|
|
7834
|
-
if(
|
|
7809
|
+
drawPictrueData.X=touches[0].clientX-uielement.getBoundingClientRect().left;drawPictrueData.Y=touches[0].clientY-uielement.getBoundingClientRect().top;if(this.GetChartDrawPictureByPoint(drawPictrueData)){drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;drawPictrueData.ChartDrawPicture.IsSelected=true;this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_DRAWPICTURE);//选中画图工具事件
|
|
7810
|
+
if(event&&event.Callback){var sendData={DrawPicture:drawPictrueData.ChartDrawPicture};event.Callback(event,sendData,this);}if(e.cancelable)e.preventDefault();return;}}}else{if(this.EnableScrollUpDown==true){this.DragTimer=setTimeout(function(){if(drag.Click.X==drag.LastMove.X&&drag.Click.Y==drag.LastMove.Y){var mouseDrag=self.MouseDrag;self.MouseDrag=null;T_ShowCorssCursor();self.PreventTouchEvent(e);}},800);}this.MouseDrag=drag;this.PhoneTouchInfo={Start:{X:touches[0].clientX,Y:touches[0].clientY},End:{X:touches[0].clientX,Y:touches[0].clientY}};this.SelectChartDrawPicture=null;if(this.EnableScrollUpDown==false)T_ShowCorssCursor();//移动十字光标
|
|
7835
7811
|
else if(this.IsClickShowCorssCursor)T_ShowCorssCursor();}if(this.EnableZoomIndexWindow){this.PhoneDBClick.AddTouchStart(touches[0].clientX,touches[0].clientY,Date.now());JSConsole.Chart.Log("[MinuteChartContainer::OnTouchStart] PhoneDBClick ",this.PhoneDBClick);}this.TouchEvent({EventID:JSCHART_EVENT_ID.ON_PHONE_TOUCH,FunctionName:"OnTouchStart"},e);}else if(this.IsPhonePinching(e)){var phonePinch={"Start":{},"Last":{}};var touches=this.GetToucheData(e,this.IsForceLandscape);phonePinch.Start={"X":touches[0].pageX,"Y":touches[0].pageY,"X2":touches[1].pageX,"Y2":touches[1].pageY};phonePinch.Last={"X":touches[0].pageX,"Y":touches[0].pageY,"X2":touches[1].pageX,"Y2":touches[1].pageY};this.PhonePinch=phonePinch;this.SelectChartDrawPicture=null;}};this.OnTouchMove=function(e){if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var touches=this.GetToucheData(e,this.IsForceLandscape);if(this.IsPhoneDragging(e)){var drag=this.MouseDrag;if(drag==null){var pixelTatio=GetDevicePixelRatio();var x=touches[0].clientX-uielement.getBoundingClientRect().left*pixelTatio;var y=touches[0].clientY-uielement.getBoundingClientRect().top*pixelTatio;this.OnMouseMove(x,y,e);}else{var moveAngle=this.GetMoveAngle(drag.LastMove,{X:touches[0].clientX,Y:touches[0].clientY});var moveSetp=Math.abs(drag.LastMove.X-touches[0].clientX);var moveUpDown=Math.abs(drag.LastMove.Y-touches[0].clientY);moveSetp=parseInt(moveSetp);if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==1||drawPicture.Status==2){if(moveSetp<5&&moveUpDown<5)return;if(this.SetChartDrawPictureSecondPoint(touches[0].clientX,touches[0].clientY,true)){this.DrawDynamicInfo();}}else if(drawPicture.Status==3){if(this.SetChartDrawPictureThirdPoint(touches[0].clientX,touches[0].clientY,true)){this.DrawDynamicInfo();}}else if(drawPicture.Status==20)//画图工具移动
|
|
7836
7812
|
{if(moveSetp<5&&moveUpDown<5)return;if(this.MoveChartDrawPicture(touches[0].clientX-drag.LastMove.X,touches[0].clientY-drag.LastMove.Y,true)){this.DrawDynamicInfo();}}drag.LastMove.X=touches[0].clientX;drag.LastMove.Y=touches[0].clientY;}else{//上下滚动
|
|
7837
7813
|
if((moveUpDown>0&&moveSetp<=3||moveAngle<=this.TouchMoveMinAngle)&&this.EnableScrollUpDown==true){this.StopDragTimer();return;}this.PreventTouchEvent(e);this.MouseDrag=null;var pixelTatio=GetDevicePixelRatio();var x=touches[0].clientX-uielement.getBoundingClientRect().left*pixelTatio;var y=touches[0].clientY-uielement.getBoundingClientRect().top*pixelTatio;this.OnMouseMove(x,y,e);}}if(this.PhoneTouchInfo){this.PhoneTouchInfo.End.X=touches[0].clientX;this.PhoneTouchInfo.End.Y=touches[0].clientY;}}else if(this.IsPhonePinching(e)){this.PreventTouchEvent(e);var phonePinch=this.PhonePinch;if(!phonePinch)return;var yHeight=Math.abs(touches[0].pageY-touches[1].pageY);var yLastHeight=Math.abs(phonePinch.Last.Y-phonePinch.Last.Y2);var yStep=yHeight-yLastHeight;var xHeight=Math.abs(touches[0].pageX-touches[1].pageX);var xLastHeight=Math.abs(phonePinch.Last.X-phonePinch.Last.X2);var xStep=xHeight-xLastHeight;var minStep=this.ZoomStepPixel;if(Math.abs(xStep)>minStep){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MINUTE_TOUCH_ZOOM);if(event&&event.Callback){var data={XStep:xStep,YStep:yStep,PreventDefault:false};event.Callback(event,data,this);if(data.PreventDefault){this.PhonePinch=null;this.StopDragTimer();return;}}}phonePinch.Last={"X":touches[0].pageX,"Y":touches[0].pageY,"X2":touches[1].pageX,"Y2":touches[1].pageY};}if(this.EnableScrollUpDown==false){e.preventDefault();}else{if(drag==null){this.PreventTouchEvent(e);//十字光标出来了,阻止消息
|
|
@@ -7860,26 +7836,25 @@ this.OnRightMenu=function(x,y,e){var pixelTatio=GetDevicePixelRatio();//x,y 需
|
|
|
7860
7836
|
var frameId=this.Frame.PtInFrame(x*pixelTatio,y*pixelTatio);this.PopupRightMenuV2({X:e.offsetX,Y:e.offsetY,FrameID:frameId},e);var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CONTEXT_MENU);if(event){var data={X:x,Y:y,Event:e,FrameID:frameId};event.Callback(event,data,this);}};//右键菜单数据
|
|
7861
7837
|
this.GetRightMenuData=function(frameID){var windowCount=this.Frame.SubFrame.length;//窗口个数
|
|
7862
7838
|
var aryOverlaySymbol=[];//叠加的股票列表
|
|
7863
|
-
for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(item&&item.Symbol)aryOverlaySymbol.push(item.Symbol);}var
|
|
7864
|
-
var aryMenu=[{Name:"叠加品种",SubMenu:[{Name:"上证指数",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["000001.sh",!aryOverlaySymbol.includes("000001.sh")]},Checked:aryOverlaySymbol.includes("000001.sh")},{Name:"深证成指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399001.sz",!aryOverlaySymbol.includes("399001.sz")]},Checked:aryOverlaySymbol.includes("399001.sz")},{Name:"中小板指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399005.sz",!aryOverlaySymbol.includes("399005.sz")]},Checked:aryOverlaySymbol.includes("399005.sz")},{Name:"创业板指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399006.sz",!aryOverlaySymbol.includes("399006.sz")]},Checked:aryOverlaySymbol.includes("399006.sz")},{Name:"沪深300",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["000300.sh",!aryOverlaySymbol.includes("000300.sh")]},Checked:aryOverlaySymbol.includes("000300.sh")}]},{Name:"多日分时图",SubMenu:[{Name:"当日分时图",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID,Args:[1]},Checked:this.DayCount==1},{Name:"最近2日",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID,Args:[2]},Checked:this.DayCount==2},{Name:"最近3日",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID,Args:[3]},Checked:this.DayCount==3},{Name:"最近4日",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID,Args:[4]},Checked:this.DayCount==4},{Name:"最近5日",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID,Args:[5]},Checked:this.DayCount==5}]},{Name:"指标窗口个数",SubMenu:[{Name:"1个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[2]},Checked:3==windowCount},{Name:"2个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[3]},Checked:4==windowCount},{Name:"3个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[4]},Checked:5==windowCount},{Name:"4个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[5]},Checked:6==windowCount},{Name:"5个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[6]},Checked:7==windowCount}]},{Name:"指标切换",SubMenu:[{Name:"MACD",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"MACD"]}},{Name:"DMI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"DMI"]}},{Name:"DMA",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"DMA"]}},{Name:"BRAR",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"BRAR"]}},{Name:"KDJ",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"KDJ"]}},{Name:"RSI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"RSI"]}},{Name:"WR",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"WR"]}},{Name:"CCI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"CCI"]}},{Name:"TRIX",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"TRIX"]}}]},{Name:"区间选择",Data:{ID:JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID,Args:[!this.EnableSelectRect]},Checked:this.EnableSelectRect},{Name:"其他设置",SubMenu:[{Name:"画图工具",Data:{ID:bShowDrawTool?JSCHART_MENU_ID.CMD_HIDE_DRAWTOOL_ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID,Args:[]},Checked:bShowDrawTool}]}];if(MARKET_SUFFIX_NAME.IsSHSZStockA(this.Symbol)){var item={Name:"集合竞价",Data:{ID:JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID,Args:[!this.IsShowBeforeData]},Checked:this.IsShowBeforeData};aryMenu.splice(4,0,item);}//删除菜单
|
|
7839
|
+
for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(item&&item.Symbol)aryOverlaySymbol.push(item.Symbol);}var aryMenu=[{Name:"叠加品种",SubMenu:[{Name:"上证指数",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["000001.sh",!aryOverlaySymbol.includes("000001.sh")]},Checked:aryOverlaySymbol.includes("000001.sh")},{Name:"深证成指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399001.sz",!aryOverlaySymbol.includes("399001.sz")]},Checked:aryOverlaySymbol.includes("399001.sz")},{Name:"中小板指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399005.sz",!aryOverlaySymbol.includes("399005.sz")]},Checked:aryOverlaySymbol.includes("399005.sz")},{Name:"创业板指",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["399006.sz",!aryOverlaySymbol.includes("399006.sz")]},Checked:aryOverlaySymbol.includes("399006.sz")},{Name:"沪深300",Data:{ID:JSCHART_MENU_ID.CMD_OVERLAY_SYMBOL_ID,Args:["000300.sh",!aryOverlaySymbol.includes("000300.sh")]},Checked:aryOverlaySymbol.includes("000300.sh")}]},{Name:"多日分时图",SubMenu:[{Name:"当日分时图",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID,Args:[1]},Checked:this.DayCount==1},{Name:"最近2日",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID,Args:[2]},Checked:this.DayCount==2},{Name:"最近3日",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID,Args:[3]},Checked:this.DayCount==3},{Name:"最近4日",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID,Args:[4]},Checked:this.DayCount==4},{Name:"最近5日",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID,Args:[5]},Checked:this.DayCount==5}]},{Name:"指标窗口个数",SubMenu:[{Name:"1个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[2]},Checked:3==windowCount},{Name:"2个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[3]},Checked:4==windowCount},{Name:"3个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[4]},Checked:5==windowCount},{Name:"4个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[5]},Checked:6==windowCount},{Name:"5个窗口",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_WINDOW_COUNT_ID,Args:[6]},Checked:7==windowCount}]},{Name:"指标切换",SubMenu:[{Name:"MACD",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"MACD"]}},{Name:"DMI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"DMI"]}},{Name:"DMA",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"DMA"]}},{Name:"BRAR",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"BRAR"]}},{Name:"KDJ",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"KDJ"]}},{Name:"RSI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"RSI"]}},{Name:"WR",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"WR"]}},{Name:"CCI",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"CCI"]}},{Name:"TRIX",Data:{ID:JSCHART_MENU_ID.CMD_CHANGE_INDEX_ID,Args:[frameID,"TRIX"]}}]},{Name:"区间选择",Data:{ID:JSCHART_MENU_ID.CMD_ENABLE_SELECT_RECT_ID,Args:[!this.EnableSelectRect]},Checked:this.EnableSelectRect},{Name:"其他设置",SubMenu:[{Name:"画图工具",Data:{ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID,Args:[]},Checked:this.IsShowDrawToolDialog()}]}];if(MARKET_SUFFIX_NAME.IsSHSZStockA(this.Symbol)){var item={Name:"集合竞价",Data:{ID:JSCHART_MENU_ID.CMD_SHOW_BEFORE_DATA_ID,Args:[!this.IsShowBeforeData]},Checked:this.IsShowBeforeData};aryMenu.splice(4,0,item);}//删除菜单
|
|
7865
7840
|
for(var i=0;i<aryMenu.length;++i){var item=aryMenu[i];if(item.Name=="叠加品种"){for(var j=0;j<item.SubMenu.length;++j){if(item.SubMenu[j].Checked){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"取消叠加",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID}});break;}}}}return aryMenu;};this.OnWheel=function(e){JSConsole.Chart.Log('[MinuteChartContainer::OnWheel]',e);};this.OnDoubleClick=function(x,y,e){JSConsole.Chart.Log("[MinuteChartContainer::OnDoubleClick]",e);if(this.ClickChartTimer!=null){clearTimeout(this.ClickChartTimer);this.ClickChartTimer=null;}var selectedChart;//图形选中
|
|
7866
7841
|
if(this.SelectedChart.EnableSelected){selectedChart=this.PtInChart(x,y);}var dbClickInfo={SelectedChart:selectedChart};this.DBClickEvent(dbClickInfo,e);//没有图形选中,双击缩放窗口
|
|
7867
7842
|
if(!selectedChart&&this.EnableZoomIndexWindow){var frameId=this.Frame.PtInFrame(x,y);JSConsole.Chart.Log("[MinuteChartContainer::OnDoubleClick] frameId",frameId);if(frameId>=this.Frame.ZoomStartWindowIndex){if(this.ZoomIndexWindow(frameId,{X:x,Y:y})){this.Frame.SetSizeChage(true);this.Draw();}}}};this.GetDataItem=function(pointInfo){if(!pointInfo)return null;if(!IFrameSplitOperator.IsNumber(pointInfo.Index))return null;if(!this.SourceData||!this.SourceData.Data)return null;var data=this.SourceData;var clientPos=pointInfo.ClientPos;if(clientPos==2||clientPos==3||clientPos>=200&&clientPos<=299||clientPos>=300&&clientPos<=399){if(!this.ChartCorssCursor||!this.ChartCorssCursor.CallAcutionXOperator)return null;var isHScreen=this.Frame.IsHScreen===true;var callAcutionXOper=this.ChartCorssCursor.CallAcutionXOperator;callAcutionXOper.Value=isHScreen?pointInfo.Point.Y:pointInfo.Point.X;callAcutionXOper.Point={X:pointInfo.Point.X,Y:pointInfo.Point.Y};callAcutionXOper.ClientPos=clientPos;if(clientPos==2){if(!this.BeforeOpenData)return null;}else if(clientPos==3){if(!this.AfterCloseData)return null;}else if(clientPos>=200&&clientPos<=299){if(!this.MultiDayBeforeOpenData||!IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))return;}else if(clientPos>=300&&tclientPos<=399){if(!this.MultiDayAfterCloseData||!IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))return;}if(callAcutionXOper.Operator()){var item=callAcutionXOper.Item;return{Type:clientPos,Item:item,Index:callAcutionXOper.DataIndex};}return null;}var index=parseInt(pointInfo.Index.toFixed(0));var dataIndex=index+data.DataOffset;if(dataIndex>=data.Data.length)return null;var item=data.Data[dataIndex];return{Type:clientPos,Item:item,Index:dataIndex};};this.UpdatePointByCursorIndex=function(){this.LastPoint.X=this.Frame.GetXFromIndex(this.CursorIndex);var index=this.CursorIndex;index=parseInt(index.toFixed(0));var data=this.Frame.SourceData;if(data.DataOffset+index>=data.Data.length){return;}var item=data.Data[data.DataOffset+index];var close=null;if(item.Before)close=item.Before.Close;else close=item.Close;this.LastPoint.Y=this.Frame.GetYFromData(close);};//创建
|
|
7868
7843
|
//windowCount 窗口个数
|
|
7869
|
-
this.Create=function(windowCount,option){var
|
|
7870
|
-
this.ChartCorssCursor=new ChartCorssCursor();this.ChartCorssCursor.PtInClient=function(x,y){return
|
|
7844
|
+
this.Create=function(windowCount,option){var _this27=this;this.UIElement.JSChartContainer=this;//创建十字光标
|
|
7845
|
+
this.ChartCorssCursor=new ChartCorssCursor();this.ChartCorssCursor.PtInClient=function(x,y){return _this27.PtInClient(x,y);};this.ChartCorssCursor.Canvas=this.Canvas;this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");this.ChartCorssCursor.StringFormatX.GetEventCallback=function(id){return _this27.GetEventCallback(id);};this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");this.ChartCorssCursor.StringFormatY.GetEventCallback=function(id){return _this27.GetEventCallback(id);};this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;this.ChartCorssCursor.StringFormatY.ShareAfterVol=this.ShareAfterVol;this.ChartCorssCursor.CallAcutionXOperator=new CallAcutionXOperator();//创建等待提示
|
|
7871
7846
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.HQChart=this;//创建框架容器
|
|
7872
|
-
this.Frame=new HQTradeFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=25;this.Frame.ChartBorder.TitleHeight=0;this.Frame.ChartBorder.Left=50;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.Frame.GetExtendChartRightWidth=function(){return
|
|
7847
|
+
this.Frame=new HQTradeFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=25;this.Frame.ChartBorder.TitleHeight=0;this.Frame.ChartBorder.Left=50;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.Frame.GetExtendChartRightWidth=function(){return _this27.GetExtendChartRightWidth();};this.Frame.GetEventCallback=function(id){return _this27.GetEventCallback(id);};this.Frame.ZoomStartWindowIndex=2;this.ChartCorssCursor.Frame=this.Frame;//十字光标绑定框架
|
|
7873
7848
|
this.ChartSplashPaint.Frame=this.Frame;this.CreateChildWindow(windowCount);this.CreateMainKLine();this.CreateExtendChart("RectSelectPaint",option?option.SelectRect:null);//区间统计
|
|
7874
7849
|
if(this.EnableIndexChartDrag)this.CreateExtendChart("DragMovePaint");//子窗口动态标题
|
|
7875
|
-
for(var i=0;i<this.Frame.SubFrame.length;++i){var titlePaint=new DynamicChartTitlePainting();if(i==0||i==1)titlePaint.IsShowMainIndexTitle=false;titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return
|
|
7876
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
7850
|
+
for(var i=0;i<this.Frame.SubFrame.length;++i){var titlePaint=new DynamicChartTitlePainting();if(i==0||i==1)titlePaint.IsShowMainIndexTitle=false;titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this27.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint.push(titlePaint);}this.ChartCorssCursor.StringFormatX.Frame=this.Frame.SubFrame[0].Frame;this.ChartCorssCursor.StringFormatY.Frame=this.Frame;if(this.ChartCorssCursor.CallAcutionXOperator)this.ChartCorssCursor.CallAcutionXOperator.Frame=this.Frame.SubFrame[0].Frame;var bRegisterKeydown=true;var bRegisterWheel=true;if(option&&option.Listener){var item=option.Listener;if(item.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[MinuteChartContainer::Create] not register keydown event.');}if(item.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[MinuteChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){_this27.OnKeyDown(e);},true);//键盘消息
|
|
7851
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this27.OnWheel(e);},true);//上下滚动消息
|
|
7877
7852
|
};//创建子窗口
|
|
7878
|
-
this.CreateChildWindow=function(windowCount){var
|
|
7879
|
-
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;}var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];if(i==0){frame.YSplitOperator=new FrameSplitMinutePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.GetEventCallback=function(id){return
|
|
7853
|
+
this.CreateChildWindow=function(windowCount){var _this28=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=new MinuteFrame();frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=i;frame.GlobalOption=this.GlobalOption;if(i<2)frame.ChartBorder.TitleHeight=0;frame.XPointCount=243;if(i>=2){if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
|
|
7854
|
+
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;}var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];if(i==0){frame.YSplitOperator=new FrameSplitMinutePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};frame.YSplitOperator.DayOffset=this.DayOffset;frame.YSplitOperator.GlobalOption=this.GlobalOption;frame.YSplitOperator.HQChart=this;}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};if(i==1)frame.YSplitOperator.ShareAfterVol=this.ShareAfterVol;}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;frame.XSplitOperator.Operator();for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}};this.CreateSubFrameItem=function(id,mainFrame){var _this29=this;var border=new ChartBorder();border.UIElement=this.UIElement;if(mainFrame&&mainFrame.ChartBorder&&mainFrame.ChartBorder.MultiDayMinute){var item=mainFrame.ChartBorder.MultiDayMinute;border.MultiDayMinute.Count=item.Count;border.MultiDayMinute.Left=item.Left;border.MultiDayMinute.Right=item.Right;}var frame=null;if(this.ClassName=="MinuteChartHScreenContainer")frame=new MinuteHScreenFrame();else frame=new MinuteFrame();frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=id;//窗口序号
|
|
7880
7855
|
frame.XPointCount=243;frame.GlobalOption=this.GlobalOption;if(id>=2){if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
|
|
7881
|
-
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;}var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return
|
|
7882
|
-
var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};this.AddNewSubFrame=function(option){var
|
|
7856
|
+
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;}var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return _this29.GetEventCallback(id);};frame.YSplitOperator.GetEventCallback=function(id){return _this29.GetEventCallback(id);};frame.XSplitOperator.Symbol=this.Symbol;if(this.DayCount>1){frame.XSplitOperator.DayCount=this.DayData.length;frame.XSplitOperator.DayData=this.DayData;frame.DayCount=this.DayData.length;}//K线数据绑定
|
|
7857
|
+
var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};this.AddNewSubFrame=function(option){var _this30=this;var mainFrame=this.Frame.SubFrame[0].Frame;var index=this.Frame.SubFrame.length;var subFrame=this.CreateSubFrameItem(index,mainFrame);var pixelRatio=GetDevicePixelRatio();subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[index]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[index].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this30.GetEventCallback(id);};this.TitlePaint[index+1]=titlePaint;this.SetSubFrameOption(subFrame,option);//最后一个显示X轴坐标
|
|
7883
7858
|
for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}this.UpdataDataoffset();//更新数据偏移
|
|
7884
7859
|
this.Frame.SetSizeChage(true);if(this.UpdateXShowText)this.UpdateXShowText();this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7885
7860
|
this.Draw();return index;};this.UpdateXShowText=function(){var bLastFrame=true;for(var i=this.Frame.SubFrame.length-1;i>=0;--i){var item=this.Frame.SubFrame[i].Frame;var subFrame=this.Frame.SubFrame[i];if(bLastFrame){item.XSplitOperator.ShowText=true;if(subFrame.Height>0)bLastFrame=false;}else{item.XSplitOperator.ShowText=false;}}};//删除某一个窗口的指标
|
|
@@ -7890,8 +7865,8 @@ subFrame.YSpecificMaxMin=null;subFrame.IsLocked=false;//解除上锁
|
|
|
7890
7865
|
subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType;//还原Y坐标分割模式
|
|
7891
7866
|
this.ChartPaint=paint;//清空东条标题
|
|
7892
7867
|
var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;};this.CreateStockInfo=function(){this.ExtendChartPaint[0]=new StockInfoExtendChartPaint();this.ExtendChartPaint[0].Canvas=this.Canvas;this.ExtendChartPaint[0].ChartBorder=this.Frame.ChartBorder;this.ExtendChartPaint[0].ChartFrame=this.Frame;this.Frame.ChartBorder.Right=300;};//创建主图K线画法
|
|
7893
|
-
this.CreateMainKLine=function(){var
|
|
7894
|
-
var minuteLine=g_ChartPaintFactory.Create("ChartMinutePriceLine");minuteLine.Canvas=this.Canvas;minuteLine.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;minuteLine.ChartFrame=this.Frame.SubFrame[0].Frame;minuteLine.Name="Minute-Line";minuteLine.Identify="Minute-Line";minuteLine.Color=g_JSChartResource.Minute.PriceColor;minuteLine.LineWidth=g_JSChartResource.Minute.PriceLineWidth;minuteLine.AreaColor=g_JSChartResource.Minute.AreaPriceColor;minuteLine.GetEventCallback=function(id){return
|
|
7868
|
+
this.CreateMainKLine=function(){var _this31=this;//分钟线
|
|
7869
|
+
var minuteLine=g_ChartPaintFactory.Create("ChartMinutePriceLine");minuteLine.Canvas=this.Canvas;minuteLine.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;minuteLine.ChartFrame=this.Frame.SubFrame[0].Frame;minuteLine.Name="Minute-Line";minuteLine.Identify="Minute-Line";minuteLine.Color=g_JSChartResource.Minute.PriceColor;minuteLine.LineWidth=g_JSChartResource.Minute.PriceLineWidth;minuteLine.AreaColor=g_JSChartResource.Minute.AreaPriceColor;minuteLine.GetEventCallback=function(id){return _this31.GetEventCallback(id);};this.ChartPaint[0]=minuteLine;//分钟线均线
|
|
7895
7870
|
var averageLine=new ChartMinutePriceLine();averageLine.Canvas=this.Canvas;averageLine.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;averageLine.ChartFrame=this.Frame.SubFrame[0].Frame;averageLine.Name="Minute-Average-Line";averageLine.Identify="Minute-Average-Line";averageLine.Color=g_JSChartResource.Minute.AvPriceColor;averageLine.IsDrawArea=false;this.ChartPaint[1]=averageLine;//成交量
|
|
7896
7871
|
var volLine=g_ChartPaintFactory.Create("ChartMinuteVolumBar");volLine.Color=g_JSChartResource.Minute.VolBarColor;volLine.Canvas=this.Canvas;volLine.ChartBorder=this.Frame.SubFrame[1].Frame.ChartBorder;volLine.ChartFrame=this.Frame.SubFrame[1].Frame;volLine.Name="Minute-Vol-Bar";volLine.Identify="Minute-Vol-Bar";volLine.ShareAfterVol=this.ShareAfterVol;this.ChartPaint[2]=volLine;this.TitlePaint[0]=new DynamicMinuteTitlePainting();this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;this.TitlePaint[0].Canvas=this.Canvas;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
|
|
7897
7872
|
this.TitlePaint[0].LanguageID=this.LanguageID;this.TitlePaint[0].CallAcutionXOperator=new CallAcutionXOperator();this.TitlePaint[0].CallAcutionXOperator.Frame=this.Frame.SubFrame[0].Frame;};//切换成 脚本指标
|
|
@@ -7906,19 +7881,19 @@ this.UpdataDataoffset();//更新数据偏移
|
|
|
7906
7881
|
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7907
7882
|
this.Draw();};this.ChangeIndex=function(windowIndex,indexName,option){if(this.Frame.SubFrame.length<3)return;if(option&&option.API)return this.ChangeAPIIndex(windowIndex,option);//查找系统指标
|
|
7908
7883
|
var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;if(windowIndex<2)windowIndex=2;if(windowIndex>=this.Frame.SubFrame.length)windowIndex=2;JSIndexScript.ModifyAttribute(indexInfo,option);return this.ChangeScriptIndex(windowIndex,indexInfo,option);};//设置指标窗口个数
|
|
7909
|
-
this.ChangeIndexWindowCount=function(count){var
|
|
7884
|
+
this.ChangeIndexWindowCount=function(count){var _this32=this;if(count<2)return;//1,2个窗口固定的不能动
|
|
7910
7885
|
if(this.Frame.SubFrame.length==count)return;var currentLength=this.Frame.SubFrame.length;if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.DeleteIndexPaint(i);var item=this.Frame.SubFrame[i].Frame;if(item.ClearToolbar)item.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);this.TitlePaint.splice(count+1,currentLength-count);}else{//创建新的指标窗口
|
|
7911
|
-
var mainFrame=this.Frame.SubFrame[0].Frame;for(var i=currentLength;i<count;++i){var subFrame=this.CreateSubFrameItem(i,mainFrame);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return
|
|
7886
|
+
var mainFrame=this.Frame.SubFrame[0].Frame;for(var i=currentLength;i<count;++i){var subFrame=this.CreateSubFrameItem(i,mainFrame);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this32.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}//创建指标
|
|
7912
7887
|
var indexName=["RSI","MACD","DMA","DMI","KDJ","WR"];var scriptData=new JSIndexScript();for(var i=currentLength;i<count;++i){var name=indexName[i%indexName.length];var indexInfo=scriptData.Get(name);this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
7913
7888
|
var bindData=this.SourceData;this.BindIndexData(i,bindData);//执行脚本
|
|
7914
7889
|
}//最后一个显示X轴坐标
|
|
7915
7890
|
for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}this.UpdataDataoffset();//更新数据偏移
|
|
7916
7891
|
}this.UpdateXShowText();this.Frame.SetSizeChage(true);this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
7917
7892
|
this.Draw();};this.ChangeIndexTemplate=function(option)//切换指标模板 可以设置指标窗口个数 每个窗口的指标, 只能从第3个指标窗口开始设置,前面2个指标窗口固定无法设置
|
|
7918
|
-
{var
|
|
7893
|
+
{var _this33=this;if(!Array.isArray(option.Windows))return;var count=option.Windows.length;var currentLength=this.Frame.SubFrame.length;var startWindowIndex=2;count+=startWindowIndex;var dayCount=null,symbol=null;if(IFrameSplitOperator.IsNumber(option.DayCount)&&option.DayCount!=this.DayCount)dayCount=option.DayCount;//天数
|
|
7919
7894
|
if(option.Symbol)symbol=option.Symbol;var bRefreshData=dayCount!=null||symbol!=null;//清空所有的指标图型
|
|
7920
7895
|
for(var i=startWindowIndex;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.SubFrame[i];frame.YSpecificMaxMin=null;frame.IsLocked=false;frame.YSplitScale=null;}if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);this.TitlePaint.splice(count+1,currentLength-count);}else{for(var i=currentLength;i<count;++i)//创建新的指标窗口
|
|
7921
|
-
{var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return
|
|
7896
|
+
{var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this33.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}}for(var i=0;i<count;++i){var windowIndex=i;var item=null,frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[windowIndex];if(windowIndex>=startWindowIndex)item=option.Windows[windowIndex-startWindowIndex];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;if(item){if(item.Script)//自定义指标脚本
|
|
7922
7897
|
{this.WindowIndex[windowIndex]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
7923
7898
|
}else if(item.API)//后台指标
|
|
7924
7899
|
{var apiItem=item.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexItem=JSIndexMap.Get(indexID);if(indexItem){this.WindowIndex[windowIndex]=indexItem.Create();this.CreateWindowIndex(windowIndex);}else{var systemScript=new JSIndexScript();var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);this.WindowIndex[windowIndex]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
@@ -8159,8 +8134,8 @@ else this.ClearBindOverlayPositionData();this.TitlePaint[0].Data=this.SourceData
|
|
|
8159
8134
|
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;//十字光标
|
|
8160
8135
|
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;//绑定主图数据
|
|
8161
8136
|
}};//绑定分钟叠加指标数据(持仓量)
|
|
8162
|
-
this.BindOverlayPositionData=function(minuteData,yClose){var
|
|
8163
|
-
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
|
|
8137
|
+
this.BindOverlayPositionData=function(minuteData,yClose){var _this34=this;if(this.Frame.SubFrame.length<2)return;var chart=null;var frame=null;var subFrame=this.Frame.SubFrame[1];//第2个窗口
|
|
8138
|
+
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 _this34.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;//右边坐标绑定到主坐标上
|
|
8164
8139
|
}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)//图形不存在就创建一个
|
|
8165
8140
|
{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);}}var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;subFrame.Frame.IsShowPositionTitle=true;var bindData=new ChartData();bindData.Data=minuteData.GetPosition();chart.Data=bindData;};this.ClearBindOverlayPositionData=function(){if(this.Frame.SubFrame.length<2)return;var subFrame=this.Frame.SubFrame[1];//第2个窗口
|
|
8166
8141
|
subFrame.Frame.RightFrame=null;subFrame.Frame.IsShowPositionTitle=false;for(var i in subFrame.OverlayIndex){var item=subFrame.OverlayIndex[i];if(item.Identify=='Position_Line_Frame'){subFrame.OverlayIndex.splice(i,1);break;}}};this.GetOverlayIndexByIdentify=function(identify){for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))continue;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===identify)return{OverlayItem:overlayItem,WindowIndex:i};}}return null;};this.RecvOverlayIndex=function(identify,data){var overlayIndex=this.GetOverlayIndexByIdentify(identify);if(overlayIndex==null){console.warn('[MinuteChartContainer::RecvOverlayIndex] can\'t find overlay index. [identify='+identify+']');return;}if(!overlayIndex.Script)return;if(typeof overlayIndex.RecvSubscribeData!="function")return;var bindData=this.SourceData;if(!bindData)return;overlayIndex.Script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,bindData);};//更新叠加指标
|
|
@@ -8169,12 +8144,12 @@ this.AddOverlayIndex=function(obj){var overlay=this.CreateOverlayWindowsIndex(ob
|
|
|
8169
8144
|
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
8170
8145
|
this.Draw();};//创建一个叠加指标
|
|
8171
8146
|
this.CreateOverlayWindowsIndex=function(obj)//{WindowIndex:, IndexName:, Identify:, ShowRightText:, API:}
|
|
8172
|
-
{var
|
|
8147
|
+
{var _this35=this;var indexName=obj.IndexName;var windowIndex=obj.WindowIndex;var apiItem=null,indexInfo=null,indexCustom=null;if(obj.API){apiItem=obj.API;}else if(obj.Script)//动态执行脚本
|
|
8173
8148
|
{indexInfo={Script:obj.Script,ID:obj.indexName,Name:obj.indexName};if(obj.Name)indexInfo.Name=obj.Name;}else{var scriptData=new JSIndexScript();indexInfo=scriptData.Get(indexName);//系统指标
|
|
8174
8149
|
if(!indexInfo){indexCustom=JSIndexMap.Get(indexName);//定制指标
|
|
8175
8150
|
if(!indexCustom){console.warn('[MinuteChartContainer::CreateOverlayIndex] can not find index['+indexName+']');return null;}}}var subFrame=this.Frame.SubFrame[windowIndex];var overlayFrame=new OverlayIndexItem();if(obj.Identify)overlayFrame.Identify=obj.Identify;//由外部指定id
|
|
8176
8151
|
var frame=null;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;if(obj.ShowRightText===true)frame.IsShow=true;else if(obj.ShowRightText===false)frame.IsShow=false;if(obj.IsShareY===true)frame.IsShareY=true;if(IFrameSplitOperator.IsBool(obj.IsCalculateYMaxMin))frame.IsCalculateYMaxMin=obj.IsCalculateYMaxMin;//是否计算Y最大最小值
|
|
8177
|
-
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
|
|
8152
|
+
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.HQChart=this;frame.YSplitOperator.OverlayIdentify=overlayFrame.Identify;if(obj.Frame){var item=obj.Frame;if(item.Custom)frame.YSplitOperator.Custom=item.Custom;}overlayFrame.Frame=frame;if(apiItem){var apiIndex=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,obj,true);apiIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
|
|
8178
8153
|
overlayFrame.Script=apiIndex;}else if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,obj);var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
8179
8154
|
scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
|
|
8180
8155
|
overlayFrame.Script=scriptIndex;}else{var scriptIndex=indexCustom.Create();scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
|
|
@@ -8196,9 +8171,7 @@ this.CreateWindowIndex=function(windowIndex){this.WindowIndex[windowIndex].Creat
|
|
|
8196
8171
|
}
|
|
8197
8172
|
}
|
|
8198
8173
|
*/};this.CreateExtendChart=function(name,option)//创建扩展图形
|
|
8199
|
-
{var chart;switch(name){case'MinuteTooltip':if(option.Create&&typeof option.Create=='function')chart=option.Create();else chart=new MinuteTooltipPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;option.LanguageID=this.LanguageID;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"MinutePCTooltip":if(option.Create&&typeof option.Create=="function")chart=option.Create();else chart=new MinuteLeftTooltipPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;option.LanguageID=this.LanguageID;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case
|
|
8200
|
-
chart.SetOption(option);this.ExtendChartPaint.push(chart);this.Frame.ChartBorder.Right+=chart.Width;//创建筹码需要增加右边的间距
|
|
8201
|
-
return chart;case"MinuteBackgroundPaint":chart=new MinuteBackgroundPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;option.LanguageID=this.LanguageID;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;default:chart=g_ExtendChartPaintFactory.Create(name);if(!chart)return null;chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;}};this.SetMinuteInfo=function(aryInfo,bUpdate){this.ChartInfo=[];//先清空
|
|
8174
|
+
{var chart;switch(name){case'MinuteTooltip':if(option.Create&&typeof option.Create=='function')chart=option.Create();else chart=new MinuteTooltipPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;option.LanguageID=this.LanguageID;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"MinutePCTooltip":if(option.Create&&typeof option.Create=="function")chart=option.Create();else chart=new MinuteLeftTooltipPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;option.LanguageID=this.LanguageID;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"MinuteBackgroundPaint":chart=new MinuteBackgroundPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;option.LanguageID=this.LanguageID;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;default:chart=g_ExtendChartPaintFactory.Create(name);if(!chart)return null;chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;}};this.SetMinuteInfo=function(aryInfo,bUpdate){this.ChartInfo=[];//先清空
|
|
8202
8175
|
for(var i in aryInfo){var infoItem=JSMinuteInfoMap.Get(aryInfo[i]);if(!infoItem)continue;var item=infoItem.Create();this.ChartInfo.push(item);}if(bUpdate==true)this.RequestMinuteInfoData();};this.GetChartMinuteInfo=function(){return this.ChartInfoPaint;};this.CreateMinuteInfo=function(option)//在Create()以后 在调用
|
|
8203
8176
|
{var chart=new ChartMinuteInfo();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;chart.ChartFrame=this.Frame.SubFrame[0].Frame;chart.HQChartBorder=this.Frame.ChartBorder;chart.ChartMinutePrice=this.ChartPaint[0];if(option&&chart.SetOption)chart.SetOption(option);this.ChartInfoPaint=chart;return chart;};//信息地雷数据请求
|
|
8204
8177
|
this.RequestMinuteInfoData=function(){if(this.ChartInfo.length<=0)return;var chart=this.GetChartMinuteInfo();if(!chart)chart=this.CreateMinuteInfo(null);//不存在就创建
|
|
@@ -8213,8 +8186,8 @@ if(option)drawPicture.SetOption(option);var self=this;drawPicture.Update=functio
|
|
|
8213
8186
|
{self.DrawDynamicInfo();};drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.CurrentChartDrawPicture=drawPicture;JSConsole.Chart.Log("[MinuteChartContainer::CreateChartDrawPicture] ",name,this.CurrentChartDrawPicture);return true;};//手动添加画线
|
|
8214
8187
|
this.AddChartDrawPicture=function(obj){if(!obj)return null;if(obj.FrameID<0||obj.FrameID>=this.Frame.SubFrame.length)return null;var self=this;var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var drawPicture=item.Create();drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame;//绑定框架坐标
|
|
8215
8188
|
drawPicture.Symbol=this.Symbol;drawPicture.Period=888888888;if(obj.Value)drawPicture.Value=obj.Value;if(obj.Guid)drawPicture.Guid=obj.Guid;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(obj);drawPicture.SetOption(obj);if(obj.EnableUpdateXValue)drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};if(drawPicture.ClassName==='ChartDrawPictureText')drawPicture.IsInitialized=true;this.ChartDrawPicture.push(drawPicture);if(obj.Draw==true)this.DrawDynamicInfo();return drawPicture;};this.ReloadChartDrawPicture=function(){this.ChartDrawPicture=[];if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;this.CurrentChartDrawPicture=null;this.MoveOnChartDrawPicture=null;if(this.ChartDrawStorage){this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData({Symbol:this.Symbol,Period:888888888});}};this.CreateChartDrawPictureByStorage=function()//把缓存(this.ChartDrawStorageCache) 画图工具创建出来
|
|
8216
|
-
{var
|
|
8217
|
-
if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(item);drawPicture.ResetXValue();drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return
|
|
8189
|
+
{var _this36=this;if(!this.ChartDrawStorageCache||this.ChartDrawStorageCache.length<=0)return;var self=this;for(var i=0;i<this.ChartDrawStorageCache.length;++i){var item=this.ChartDrawStorageCache[i];if(item.FrameID<0||!this.Frame.SubFrame||this.Frame.SubFrame.length<item.FrameID)continue;var drawPicture=IChartDrawPicture.CreateChartDrawPicture(item);if(!drawPicture)continue;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame;//绑定框架坐标
|
|
8190
|
+
if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(item);drawPicture.ResetXValue();drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return _this36.GetActiveDrawPicture();};if(drawPicture.ClassName==='ChartDrawPictureText')drawPicture.IsInitialized=true;this.ChartDrawPicture.push(drawPicture);}this.ChartDrawStorageCache=null;//清空缓存
|
|
8218
8191
|
};this.SetSizeChange=function(bChanged){this.Frame.SetSizeChage(bChanged);for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];item.SizeChange=bChanged;}};this.SetSizeChage=this.SetSizeChange;//根据X坐标获取数据索引
|
|
8219
8192
|
this.GetDataIndexByPoint=function(x){var frame=this.Frame;if(this.Frame.SubFrame&&this.Frame.SubFrame.length>0)frame=this.Frame.SubFrame[0].Frame;if(!frame)return;var value=frame.GetXData(x);var index=parseInt(value.toFixed(0));return index;};//不支持未来时间 目前只支持主图
|
|
8220
8193
|
this.GetDateTimeByPoint=function(x,y){var clientPos=this.PtInClient_V2(x,y);// 100-199=多日分时主图 200-299=盘前 300-399=盘后 1=主图 2=盘前 3=盘后
|
|
@@ -8410,8 +8383,8 @@ this.OnTouchStart=function(e){if(this.ChartSplashPaint&&this.ChartSplashPaint.Is
|
|
|
8410
8383
|
drag.Click.X=touches[0].clientX;drag.Click.Y=touches[0].clientY;drag.LastMove.X=touches[0].clientX;drag.LastMove.Y=touches[0].clientY;this.MouseDrag=drag;this.PhoneTouchInfo={Start:{X:touches[0].clientX,Y:touches[0].clientY},End:{X:touches[0].clientX,Y:touches[0].clientY}};if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;if(this.CurrentChartDrawPicture)//画图工具模式
|
|
8411
8384
|
{var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==2)this.SetChartDrawPictureThirdPoint(drag.Click.X,drag.Click.Y,true);else{this.SetChartDrawPictureFirstPoint(drag.Click.X,drag.Click.Y,true);//只有1个点 直接完成
|
|
8412
8385
|
if(this.FinishChartDrawPicturePoint())this.DrawDynamicInfo({Corss:false,Tooltip:false});}if(e.cancelable)e.preventDefault();return;}else{var drawPictrueData={};var pixelTatio=GetDevicePixelRatio();//鼠标移动坐标是原始坐标 需要乘以放大倍速
|
|
8413
|
-
drawPictrueData.X=touches[0].clientX-uielement.getBoundingClientRect().left;drawPictrueData.Y=touches[0].clientY-uielement.getBoundingClientRect().top;if(this.GetChartDrawPictureByPoint(drawPictrueData)){drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;drawPictrueData.ChartDrawPicture.IsSelected=true;this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;var
|
|
8414
|
-
if(
|
|
8386
|
+
drawPictrueData.X=touches[0].clientX-uielement.getBoundingClientRect().left;drawPictrueData.Y=touches[0].clientY-uielement.getBoundingClientRect().top;if(this.GetChartDrawPictureByPoint(drawPictrueData)){drawPictrueData.ChartDrawPicture.Status=20;drawPictrueData.ChartDrawPicture.ValueToPoint();drawPictrueData.ChartDrawPicture.MovePointIndex=drawPictrueData.PointIndex;drawPictrueData.ChartDrawPicture.IsSelected=true;this.CurrentChartDrawPicture=drawPictrueData.ChartDrawPicture;this.SelectChartDrawPicture=drawPictrueData.ChartDrawPicture;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_DRAWPICTURE);//选中画图工具事件
|
|
8387
|
+
if(event&&event.Callback){var sendData={DrawPicture:drawPictrueData.ChartDrawPicture};event.Callback(event,sendData,this);}if(e.cancelable)e.preventDefault();return;}}if(bStartTimer)//长按2秒,十字光标
|
|
8415
8388
|
{var self=this;this.DragTimer=setTimeout(function(){if(drag.Click.X==drag.LastMove.X&&drag.Click.Y==drag.LastMove.Y)//手指没有移动,出现十字光标
|
|
8416
8389
|
{var mouseDrag=self.MouseDrag;self.MouseDrag=null;self.MoveCorssCursor(drag.Click,e);//移动十字光标
|
|
8417
8390
|
}},self.PressTime);}if(this.ChartDrawOption.IsLockScreen){this.MouseDrag=null;}else if(this.DragMode==JSCHART_DRAG_ID.CLICK_TOUCH_MODE_ID){}else if(this.DragMode==JSCHART_DRAG_ID.DISABLE_DRAG_ID){this.MouseDrag=null;this.MoveCorssCursor(drag.Click,e);}else if(this.VerticalDrag){if(!this.VerticalDrag.IsDrag)this.MoveCorssCursor(drag.Click,e);//没有点击X轴, 就显示十字光标
|
|
@@ -8426,33 +8399,33 @@ if(this.DataMove(moveSetp,isLeft)){this.UpdataDataoffset();this.UpdatePointByCur
|
|
|
8426
8399
|
{var cursorIndex={};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomUp(cursorIndex))return;this.CursorIndex=cursorIndex.Index;this.UpdatePointByCursorIndex();this.UpdataDataoffset();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("OnTouchMove");}else//缩小
|
|
8427
8400
|
{var cursorIndex={};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomDown(cursorIndex))return;this.CursorIndex=cursorIndex.Index;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("OnTouchMove");}phonePinch.Last={"X":touches[0].pageX,"Y":touches[0].pageY,"X2":touches[1].pageX,"Y2":touches[1].pageY};}};this.OnTouchEnd=function(e){JSConsole.Chart.Log('[KLineChartHScreenContainer:OnTouchEnd]',e);if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;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();}}this.IsOnTouch=false;this.VerticalDrag=null;this.StopDragTimer();this.TouchEvent({EventID:JSCHART_EVENT_ID.ON_PHONE_TOUCH,FunctionName:"OnTouchEnd"},e);this.OnTouchFinished();this.TouchDrawCount=0;};//创建
|
|
8428
8401
|
//windowCount 窗口个数
|
|
8429
|
-
this.Create=function(windowCount){var
|
|
8402
|
+
this.Create=function(windowCount){var _this37=this;this.UIElement.JSChartContainer=this;//创建十字光标
|
|
8430
8403
|
this.ChartCorssCursor=new ChartCorssCursor();this.ChartCorssCursor.Canvas=this.Canvas;this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_XStringFormat");this.ChartCorssCursor.StringFormatX.LanguageID=this.LanguageID;this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;this.ChartCorssCursor.StringFormatY.ExtendChartPaint=this.ExtendChartPaint;//创建等待提示
|
|
8431
8404
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.HQChart=this;//创建框架容器
|
|
8432
8405
|
this.Frame=new HQTradeHScreenFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartCorssCursor.Frame=this.Frame;//十字光标绑定框架
|
|
8433
8406
|
this.ChartSplashPaint.Frame=this.Frame;this.CreateChildWindow(windowCount);this.CreateMainKLine();//子窗口动态标题
|
|
8434
|
-
for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return
|
|
8407
|
+
for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this37.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint.push(titlePaint);}this.UIElement.addEventListener("keydown",OnKeyDown,true);//键盘消息
|
|
8435
8408
|
};//创建子窗口
|
|
8436
|
-
this.CreateChildWindow=function(windowCount){var
|
|
8409
|
+
this.CreateChildWindow=function(windowCount){var _this38=this;for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=g_ChartFrameFactory.Create("KLineHScreenFrame",{ID:i});frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=i;//窗口序号
|
|
8437
8410
|
frame.RightSpaceCount=this.RightSpaceCount;//右边
|
|
8438
8411
|
if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
|
|
8439
|
-
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return
|
|
8412
|
+
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this38.GetEventCallback(id);};//主图上下间距
|
|
8440
8413
|
var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
8441
8414
|
border.TopSpace=12*pixelTatio;border.BottomSpace=12*pixelTatio;}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');//frame.IsLocked = true;
|
|
8442
|
-
}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.GetEventCallback=function(id){return
|
|
8415
|
+
}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.GetEventCallback=function(id){return _this38.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;}};}////////////////////////////////////////////////////////////////////////////////
|
|
8443
8416
|
// 走势图横屏显示
|
|
8444
8417
|
//
|
|
8445
8418
|
function MinuteChartHScreenContainer(uielement){this.newMethod=MinuteChartContainer;//派生
|
|
8446
8419
|
this.newMethod(uielement);delete this.newMethod;this.ClassName='MinuteChartHScreenContainer';this.OnMouseMove=function(x,y,e,isPhone){this.LastPoint.X=x;this.LastPoint.Y=y;this.CursorIndex=this.Frame.GetXData(y);var clientPos=this.PtInClient(x,y);var option={ParentFunction:'OnMouseMove',Point:{X:x,Y:y},IsPhone:isPhone===true,ClientPos:clientPos};this.DrawDynamicInfo(option);};//创建
|
|
8447
8420
|
//windowCount 窗口个数
|
|
8448
|
-
this.Create=function(windowCount){var
|
|
8449
|
-
this.ChartCorssCursor=new ChartCorssCursor();this.ChartCorssCursor.PtInClient=function(x,y){return
|
|
8421
|
+
this.Create=function(windowCount){var _this39=this;this.UIElement.JSChartContainer=this;//创建十字光标
|
|
8422
|
+
this.ChartCorssCursor=new ChartCorssCursor();this.ChartCorssCursor.PtInClient=function(x,y){return _this39.PtInClient(x,y);};this.ChartCorssCursor.Canvas=this.Canvas;this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");this.ChartCorssCursor.StringFormatX.GetEventCallback=function(id){return _this39.GetEventCallback(id);};this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");this.ChartCorssCursor.StringFormatY.GetEventCallback=function(id){return _this39.GetEventCallback(id);};this.ChartCorssCursor.CallAcutionXOperator=new CallAcutionXOperator();//创建等待提示
|
|
8450
8423
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.HQChart=this;//创建框架容器
|
|
8451
8424
|
this.Frame=new HQTradeHScreenFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=25;this.Frame.ChartBorder.Left=50;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartCorssCursor.Frame=this.Frame;//十字光标绑定框架
|
|
8452
8425
|
this.ChartSplashPaint.Frame=this.Frame;this.CreateChildWindow(windowCount);this.CreateMainKLine();//子窗口动态标题
|
|
8453
|
-
for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return
|
|
8426
|
+
for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this39.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint.push(titlePaint);}this.ChartCorssCursor.StringFormatX.Frame=this.Frame.SubFrame[0].Frame;this.ChartCorssCursor.StringFormatY.Frame=this.Frame;this.ChartCorssCursor.CallAcutionXOperator.Frame=this.Frame.SubFrame[0].Frame;this.UIElement.addEventListener("keydown",OnKeyDown,true);//键盘消息
|
|
8454
8427
|
};//创建子窗口
|
|
8455
|
-
this.CreateChildWindow=function(windowCount){var
|
|
8428
|
+
this.CreateChildWindow=function(windowCount){var _this40=this;for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=new MinuteHScreenFrame();frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=i;if(i<2)frame.ChartBorder.TitleHeight=0;frame.XPointCount=243;var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];if(i==0){frame.YSplitOperator=new FrameSplitMinutePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.GetEventCallback=function(id){return _this40.GetEventCallback(id);};frame.YSplitOperator.DayOffset=this.DayOffset;frame.YSplitOperator.HQChart=this;}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this40.GetEventCallback(id);};}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return _this40.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;frame.XSplitOperator.Operator();for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;}};}/////////////////////////////////////////////////////////////////////////////////
|
|
8456
8429
|
// 深度图
|
|
8457
8430
|
//
|
|
8458
8431
|
function DepthChartContainer(uielement){this.newMethod=JSChartContainer;//派生
|
|
@@ -8460,7 +8433,7 @@ this.newMethod(uielement);delete this.newMethod;this.ClassName="DepthChartContai
|
|
|
8460
8433
|
this.MapAsk=new _map2.default();this.MapBid=new _map2.default();this.IsAutoUpdate=false;//是否自动更新行情数据
|
|
8461
8434
|
this.AutoUpdateFrequency=30000;//30秒更新一次数据
|
|
8462
8435
|
this.AutoUpdateTimer;this.DefaultZoom=0.8;//默认显示80%的盘口 (0 - 1)
|
|
8463
|
-
this.MaxVolRate=1.1;this.Create=function(option){var
|
|
8436
|
+
this.MaxVolRate=1.1;this.Create=function(option){var _this41=this;this.UIElement.JSChartContainer=this;//创建十字光标
|
|
8464
8437
|
this.ChartCorssCursor=new DepthChartCorssCursor();this.ChartCorssCursor.Canvas=this.Canvas;this.ChartCorssCursor.HQChart=this;//this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_XStringFormat");
|
|
8465
8438
|
//this.ChartCorssCursor.StringFormatX.LanguageID=this.LanguageID;
|
|
8466
8439
|
//this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
|
|
@@ -8468,9 +8441,9 @@ this.ChartCorssCursor=new DepthChartCorssCursor();this.ChartCorssCursor.Canvas=t
|
|
|
8468
8441
|
//创建等待提示
|
|
8469
8442
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);//创建框架
|
|
8470
8443
|
this.Frame=new DepthChartFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.ChartBorder.TitleHeight=0;this.Frame.Canvas=this.Canvas;this.Frame.Identify=0;var ySplitOper=new FrameSplitY();ySplitOper.FrameSplitData=this.FrameSplitData.get('double');ySplitOper.LanguageID=this.LanguageID;ySplitOper.Frame=this.Frame;ySplitOper.SplitCount=5;ySplitOper.LineType=3;ySplitOper.IgnoreYValue=[0];//ySplitOper.SplitType=2;
|
|
8471
|
-
ySplitOper.ChartBorder=this.Frame.ChartBorder;ySplitOper.GetEventCallback=function(id){return
|
|
8472
|
-
this.ChartSplashPaint.Frame=this.Frame;var chartItem=new ChartOrderbookDepth();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name="深度图";this.ChartPaint.push(chartItem);var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[DepthChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){
|
|
8473
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
8444
|
+
ySplitOper.ChartBorder=this.Frame.ChartBorder;ySplitOper.GetEventCallback=function(id){return _this41.GetEventCallback(id);};this.Frame.YSplitOperator=ySplitOper;var xSplitOper=new FrameSplitXDepth();xSplitOper.Frame=this.Frame;;xSplitOper.ChartBorder=this.Frame.ChartBorder;;xSplitOper.LanguageID=this.LanguageID;xSplitOper.LineType=3;xSplitOper.GetEventCallback=function(id){return _this41.GetEventCallback(id);};this.Frame.XSplitOperator=xSplitOper;if(this.ChartCorssCursor)this.ChartCorssCursor.Frame=this.Frame;//十字光标绑定框架
|
|
8445
|
+
this.ChartSplashPaint.Frame=this.Frame;var chartItem=new ChartOrderbookDepth();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name="深度图";this.ChartPaint.push(chartItem);var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[DepthChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){_this41.OnKeyDown(e);},true);//键盘消息
|
|
8446
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this41.OnWheel(e);},true);//上下滚动消息
|
|
8474
8447
|
};this.OnWheel=function(e){JSConsole.Chart.Log('[KLineChartContainer::OnWheel]',e);var x=e.clientX-this.UIElement.getBoundingClientRect().left;var y=e.clientY-this.UIElement.getBoundingClientRect().top;var isInClient=false;this.Canvas.beginPath();this.Canvas.rect(this.Frame.ChartBorder.GetLeft(),this.Frame.ChartBorder.GetTop(),this.Frame.ChartBorder.GetWidth(),this.Frame.ChartBorder.GetHeight());isInClient=this.Canvas.isPointInPath(x,y);var wheelValue=e.wheelDelta;if(!IFrameSplitOperator.IsObjectExist(e.wheelDelta))wheelValue=e.deltaY*-0.01;var enableZoomUpDown=true;//是否允许缩放
|
|
8475
8448
|
if(this.EnableZoomUpDown&&this.EnableZoomUpDown.Wheel===false)enableZoomUpDown=false;if(isInClient&&wheelValue<0&&enableZoomUpDown)//缩小
|
|
8476
8449
|
{if(this.Frame.ZoomDown()){this.UpdateFrameMaxMin();this.Draw();}}else if(isInClient&&wheelValue>0&&enableZoomUpDown)//放大
|
|
@@ -8542,11 +8515,11 @@ this.BarPosition=1;//柱子方向 0=左边 1=右边
|
|
|
8542
8515
|
this.BarWidthRate=0.3;this.Arguments=[{Name:"VAVol",Value:70},{Name:"BarPosition",Value:0}];this.SetArgs=function(args){if(!args||!IFrameSplitOperator.IsNonEmptyArray(args))return;for(var i=0;i<args.length;++i){var item=args[i];if(item.Name=="VAVol")this.SetParamValue(item.Name,item.Value);else if(item.Name=="BarPosition")this.SetParamValue(item.Name,item.Value);}};this.SetParamValue=function(name,value){for(var i=0;i<this.Arguments.length;++i){var item=this.Arguments[i];if(item.Name==name)item.Value=value;}};if(option){if(IFrameSplitOperator.IsNumber(option.VolType))this.VolType=option.VolType;if(IFrameSplitOperator.IsNumber(option.BarWidthRate))this.BarWidthRate=option.BarWidthRate;if(IFrameSplitOperator.IsNumber(option.DelayRequestFrequency))this.DelayRequestFrequency=option.DelayRequestFrequency;if(option.Args)this.SetArgs(option.Args);if(IFrameSplitOperator.IsNumber(option.BarPosition)){this.BarPosition=option.BarPosition;this.SetParamValue("BarPosition",this.BarPosition);}}this.GetParamValue=function(name){for(var i=0;i<this.Arguments.length;++i){var item=this.Arguments[i];if(item.Name==name)return item.Value;}};this.Create=function(hqChart,windowIndex){this.HQChart=hqChart;this.WindowIndex=windowIndex;};this.CreateChart=function(hqChart,windowIndex){var frame=null;var isOverlay=this.IsOverlay();if(isOverlay){frame=this.OverlayIndex.Frame.Frame;this.OverlayIndex.Frame.ChartPaint=[];//清空
|
|
8543
8516
|
}else{frame=hqChart.Frame.SubFrame[windowIndex].Frame;hqChart.DeleteIndexPaint(windowIndex);//清空
|
|
8544
8517
|
}var aryPaint=[];var paint=new ChartVolProfileVisibleRange();paint.Canvas=hqChart.Canvas;paint.Name=this.Name+"-0";paint.ChartBorder=frame.ChartBorder;paint.ChartFrame=frame;paint.HQChart=this.HQChart;paint.Identify=this.Guid;paint.SetOption(this);if(isOverlay)this.OverlayIndex.Frame.ChartPaint.push(paint);else hqChart.ChartPaint.push(paint);aryPaint.push(paint);this.ChartVolProfile=paint;return aryPaint;};this.CancelRequestTimer=function(){if(this.RequestTimer){clearTimeout(this.RequestTimer);this.RequestTimer=null;}};//请求数据
|
|
8545
|
-
this.RequestData=function(hqChart,windowIndex,hisData,option){var
|
|
8518
|
+
this.RequestData=function(hqChart,windowIndex,hisData,option){var _this42=this;this.CancelRequestTimer();var T_RequestData=function T_RequestData(){//请求数据
|
|
8546
8519
|
var klineChart=hqChart.ChartPaint[0];//获取当前K线图实例
|
|
8547
8520
|
var kData=klineChart.Data;//K线数据
|
|
8548
8521
|
if(!kData||IFrameSplitOperator.IsNonEmptyArray(!kData.Data))return;var pageKRange=klineChart.DrawKRange;//当前显示的K线索引
|
|
8549
|
-
if(!pageKRange||!IFrameSplitOperator.IsNumber(pageKRange.Start)||!IFrameSplitOperator.IsNumber(pageKRange.End))return;var startKItem=kData.Data[pageKRange.Start];var endKItem=kData.Data[pageKRange.End];var option={Start:{Date:startKItem.Date,DataIndex:pageKRange.Start},End:{Date:endKItem.Date,DataIndex:pageKRange.End},Chart:
|
|
8522
|
+
if(!pageKRange||!IFrameSplitOperator.IsNumber(pageKRange.Start)||!IFrameSplitOperator.IsNumber(pageKRange.End))return;var startKItem=kData.Data[pageKRange.Start];var endKItem=kData.Data[pageKRange.End];var option={Start:{Date:startKItem.Date,DataIndex:pageKRange.Start},End:{Date:endKItem.Date,DataIndex:pageKRange.End},Chart:_this42};if(IFrameSplitOperator.IsNumber(startKItem.Time))option.Start.Time=startKItem.Time;if(IFrameSplitOperator.IsNumber(endKItem.Time))option.End.Time=endKItem.Time;option.ValueAreaVol=_this42.Arguments[0].Value;if(_this42.Arguments[1].Value>0)_this42.BarPosition=1;else _this42.BarPosition=0;if(_this42.ChartVolProfile){_this42.ChartVolProfile.SetOption({BarPosition:_this42.BarPosition});}_this42.DataStatus=0;if(hqChart&&hqChart.RequestVolumeProfileData){hqChart.RequestVolumeProfileData(option);}};if(option&&option.Type==1)//页面缩放或移动延迟更新
|
|
8550
8523
|
{this.RequestTimer=setTimeout(function(){T_RequestData();},this.DelayRequestFrequency);}else{T_RequestData();}return true;};this.OnRecvVolumeProfileData=function(data){this.BindData(data);this.HQChart.UpdataDataoffset();//更新数据偏移
|
|
8551
8524
|
this.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
8552
8525
|
this.HQChart.Draw();return true;};this.BindData=function(data){if(!this.ChartVolProfile||this.ChartVolProfile.IsDestroy==true)this.CreateChart(this.HQChart,this.WindowIndex);var chart=this.ChartVolProfile;chart.Data=null;if(!data||!IFrameSplitOperator.IsNonEmptyArray(data.Data))return;if(!IFrameSplitOperator.IsNumber(data.MaxPrice)||!IFrameSplitOperator.IsNumber(data.MinPrice))return;var maxVol=0,vol=0;var maxVolPrice=null;for(var i=0,j=0;i<data.Data.length;++i){var item=data.Data[i];vol=0;for(j=0;j<item.Vol.length;++j){var volItem=item.Vol[j];if(IFrameSplitOperator.IsNumber(volItem.Value))vol+=volItem.Value;}if(maxVol<vol){maxVol=vol;maxVolPrice=item.Price;}}if(this.maxVolPrice<=0||this.maxVol<=0)return;chart.MaxVolPrice=maxVolPrice;chart.MaxVol=maxVol;chart.MaxPrice=data.MaxPrice;chart.MinPrice=data.MinPrice;chart.Data=data;var titleIndex=this.WindowIndex+1;this.HQChart.TitlePaint[titleIndex].Title="VPVR";this.HQChart.TitlePaint[titleIndex].Identify=this.Guid;//指标ID
|
|
@@ -10638,7 +10611,7 @@ this.DRAWOVERLAYLINE=function(data,mainData,title){var drawData={Data:data,MainD
|
|
|
10638
10611
|
//2.SLOPE为0时,为水平线;
|
|
10639
10612
|
//3.SLOPE为10000时,为垂直线,LEN为向上的像素高度,DIRECT表示向上或向下延伸;
|
|
10640
10613
|
//4.SLOPE和LEN支持变量;
|
|
10641
|
-
this.DRAWSL=function(condition,data,slope,len,direct){var drawData={Data:[],Option:[]};var result={DrawData:drawData,DrawType:'DRAWSL'};var isNumber=this.IsNumber(data);if(Array.isArray(condition)){for(var i in condition){drawData[i]=null;if(!condition[i])continue;if(isNumber){drawData.Data[i]=data;drawData.Option[i]={Slope:slope,Length:len,Direct:direct};}else{if(i<data.length&&this.IsNumber(data[i])){drawData.Data[i]=data[i];drawData.Option[i]={Slope:slope,Length:len,Direct:direct};}}}}else{if(condition){var count=this.SymbolData.Data.Data.length;for(var i=0;i<count;++i){drawData[i]=null;if(isNumber){drawData.Data[i]=data;drawData.Option[i]={Slope:slope,Length:len,Direct:direct};}else{if(i<data.length&&this.IsNumber(data[i])){drawData.Data[i]=data[i];drawData.Option[i]={Slope:slope,Length:len,Direct:direct};}}}}}return result;};//含义:在图形上绘制垂直线。
|
|
10614
|
+
this.DRAWSL=function(condition,data,slope,len,direct){var drawData={Data:[],Option:[]};var result={DrawData:drawData,DrawType:'DRAWSL'};var isNumber=this.IsNumber(data);if(Array.isArray(condition)){for(var i in condition){drawData.Data[i]=null;if(!condition[i])continue;if(isNumber){drawData.Data[i]=data;drawData.Option[i]={Slope:slope,Length:len,Direct:direct};}else{if(i<data.length&&this.IsNumber(data[i])){drawData.Data[i]=data[i];drawData.Option[i]={Slope:slope,Length:len,Direct:direct};}}}}else{if(condition){var count=this.SymbolData.Data.Data.length;for(var i=0;i<count;++i){drawData.Data[i]=null;if(isNumber){drawData.Data[i]=data;drawData.Option[i]={Slope:slope,Length:len,Direct:direct};}else{if(i<data.length&&this.IsNumber(data[i])){drawData.Data[i]=data[i];drawData.Option[i]={Slope:slope,Length:len,Direct:direct};}}}}}return result;};//含义:在图形上绘制垂直线。
|
|
10642
10615
|
//用法:
|
|
10643
10616
|
//VERTLINE(COND,TYPE),当COND条件满足时,沿垂直方向绘制TYPE类型的线段,TYPE=0表示实线,1表示虚线'---',2表示点线'...',3表示点划线'-.-.-',4表示点点划线'-..-..-'。
|
|
10644
10617
|
//例如:VERTLINE(HIGH>=HHV(HIGH,20),1)表示在创20天新高画垂直虚线。
|
|
@@ -10955,21 +10928,21 @@ var symbol=readArgument.Value;//支持 SH60000, SZ000001
|
|
|
10955
10928
|
if(symbol.indexOf('.SH')>0)result.Symbol=symbol.replace('.SH',".sh");else if(symbol.indexOf('.SZ')>0)result.Symbol=symbol.replace('.SZ',".sz");else if(symbol.indexOf("SH")==0)result.Symbol=symbol.slice(2)+".sh";else if(symbol.indexOf("SZ")==0)result.Symbol=symbol.slice(2)+".sz";else result.Symbol=symbol;return true;};this.ReadIndexArgumentValue=function(args,result){result.Args=[];for(var i in result.SytemIndex.Args)//复制参数
|
|
10956
10929
|
{var item=result.SytemIndex.Args[i];result.Args.push({Value:item.Value,Name:item.Name});}if(args.length>2&&result.SytemIndex.Args&&result.SytemIndex.Args.length>0){for(var i=2,j=0;i<args.length&&j<result.SytemIndex.Args.length;++i,++j){var readArgument={};var item=args[i];if((typeof item==='undefined'?'undefined':(0,_typeof3.default)(item))==='object'){if(!this.ReadArgumentValue(item,readArgument)){result.Error=readArgument.Error;return false;}}else{readArgument.Value=item;}result.Args[j].Value=readArgument.Value;}}return true;};//key= (代码,周期),指标(参数) => 输出
|
|
10957
10930
|
this.GenerateScriptIndexKey=function(indexInfo){var indexParam='';var args=indexInfo.Args;for(var i in args){if(indexParam.length>0)indexParam+=',';var item=args[i];indexParam+=item.Value.toString();}var out="ALL";if(indexInfo.Out)out=indexInfo.Out;else if(IFrameSplitOperator.IsPlusNumber(indexInfo.OutIndex))out='Out['+(indexInfo.OutIndex-1)+']';var key='('+indexInfo.Symbol+','+indexInfo.PeriodID+'), '+indexInfo.Name+'('+indexParam+')=>'+out;return key;};//TMP2:=KDJ.K#WEEK;
|
|
10958
|
-
this.CallMemberScriptIndex=function(job){var
|
|
10931
|
+
this.CallMemberScriptIndex=function(job){var _this43=this;if(job.Member.Object.Type!=Syntax.Identifier||job.Member.Property.Type!=Syntax.Identifier){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallMemberScriptIndex() Error: \u53C2\u6570\u9519\u8BEF');}var objName=job.Member.Object.Name;var PropertyName=job.Member.Property.Name;if(PropertyName==""||PropertyName==null){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallMemberScriptIndex() Error: '+objName+'.'+PropertyName+' \u6307\u6807\u8F93\u51FA\u53D8\u91CF\u9519\u8BEF');}if(this.Execute.VarTable.has(objName)){var memberValue=this.Execute.VarTable.get(objName);if(memberValue.hasOwnProperty(PropertyName)){JSConsole.Complier.Log('[JSSymbolData::CallMemberScriptIndex] index data '+objName+'.'+PropertyName+' in cache.');return this.Execute.RunNextJob();}}var callInfo=objName+"."+PropertyName;var indexInfo={Job:job,PeriodID:this.Period,Symbol:this.Symbol};if(!this.ReadIndexFunctionValue(callInfo,indexInfo))//读取指标
|
|
10959
10932
|
{var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallMemberScriptIndex() Error: \''+callInfo+'\' '+indexInfo.Error);}var systemIndex=new JSIndexScript();var systemItem=systemIndex.Get(indexInfo.Name);if(!systemItem){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallMemberScriptIndex() Error: \''+callInfo+'\' '+indexInfo.Name+' \u6307\u6807\u4E0D\u5B58\u5728');}if(Array.isArray(systemItem.Args)&&systemItem.Args.length>0){indexInfo.Args=[];for(var i in systemItem.Args)//复制参数
|
|
10960
10933
|
{var item=systemItem.Args[i];indexInfo.Args.push({Value:item.Value,Name:item.Name});}}JSConsole.Complier.Log('[JSSymbolData::CallMemberScriptIndex] call script index',indexInfo);var dateTimeRange=this.Data.GetDateRange();var option={HQDataType:this.DataType,Symbol:indexInfo.Symbol,Name:'',Right:this.Right,//复权
|
|
10961
10934
|
Period:indexInfo.PeriodID,//周期
|
|
10962
|
-
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){
|
|
10935
|
+
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){_this43.RecvMemberScriptIndexData(outVar,job,symbolData);_this43.Execute.RunNextJob();},CallbackParam:indexInfo,Async:true,MaxRequestDataCount:this.MaxRequestDataCount+30*2,MaxRequestMinuteDayCount:this.MaxRequestMinuteDayCount+2,Arguments:indexInfo.Args,//Condition:this.Condition,
|
|
10963
10936
|
IsBeforeData:this.IsBeforeData,NetworkFilter:this.NetworkFilter,IsApiPeriod:this.IsApiPeriod,KLineRange:dateTimeRange//K线数据范围
|
|
10964
10937
|
};//执行脚本
|
|
10965
|
-
var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){
|
|
10938
|
+
var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){_this43.ExecuteScriptIndexError(error,indexInfo);});};this.CallDynamicScriptIndex=function(job,varTable){var _this44=this;var callInfo=job.DynamicName;var indexInfo={Job:job,PeriodID:this.Period,Symbol:this.Symbol};if(!this.ReadIndexFunctionValue(callInfo,indexInfo))//读取指标
|
|
10966
10939
|
{var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallDynamicScriptIndex() Error: \''+callInfo+'\' '+indexInfo.Error);}var systemIndex=new JSIndexScript();//系统指标
|
|
10967
10940
|
var systemItem=systemIndex.Get(indexInfo.Name);if(!systemItem){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallDynamicScriptIndex() Error: \''+callInfo+'\' '+indexInfo.Name+' \u6307\u6807\u4E0D\u5B58\u5728');}indexInfo.SytemIndex=systemItem;if(!this.ReadDynamicIndexArgumentValue(job.Args,indexInfo,varTable)){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallDynamicScriptIndex() '+indexInfo.Name+' \u6307\u6807\u53C2\u6570\u9519\u8BEF : '+indexInfo.Error+' ');}JSConsole.Complier.Log('[JSSymbolData::CallMemberScriptIndex] call script index',indexInfo);var dateTimeRange=this.Data.GetDateRange();var option={HQDataType:this.DataType,Symbol:indexInfo.Symbol,Name:'',Right:this.Right,//复权
|
|
10968
10941
|
Period:indexInfo.PeriodID,//周期
|
|
10969
|
-
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){
|
|
10942
|
+
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){_this44.RecvDynamicScriptIndexData(outVar,job,symbolData);_this44.Execute.RunNextJob();},CallbackParam:indexInfo,Async:true,MaxRequestDataCount:this.MaxRequestDataCount+30*2,MaxRequestMinuteDayCount:this.MaxRequestMinuteDayCount+2,Arguments:indexInfo.Args,//Condition:this.Condition,
|
|
10970
10943
|
IsBeforeData:this.IsBeforeData,NetworkFilter:this.NetworkFilter,IsApiPeriod:this.IsApiPeriod,KLineRange:dateTimeRange//K线数据范围
|
|
10971
10944
|
};//执行脚本
|
|
10972
|
-
var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){
|
|
10945
|
+
var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){_this44.ExecuteScriptIndexError(error,indexInfo);});};this.ReadDynamicIndexArgumentValue=function(args,result,varTable){result.Args=[];for(var i=0;i<result.SytemIndex.Args.length;++i)//复制参数
|
|
10973
10946
|
{var item=result.SytemIndex.Args[i];result.Args.push({Value:item.Value,Name:item.Name,IsDefault:true});}if(!IFrameSplitOperator.IsNonEmptyArray(args))return true;for(var i=0;i<args.length;++i){var item=args[i];var argItem=result.Args[i];if(!argItem)continue;if(item.Type==Syntax.Literal){argItem.Value=item.Value;argItem.IsDefault=false;}else if(item.Type==Syntax.Identifier)//支持传参
|
|
10974
10947
|
{if(varTable.has(item.Name)){argItem.Value=varTable.get(item.Name);argItem.IsDefault=false;}}}return true;};/*****************************************************************************************************************************
|
|
10975
10948
|
脚本调用
|
|
@@ -10986,16 +10959,16 @@ var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){_t
|
|
|
10986
10959
|
|
|
10987
10960
|
"MA.MA1"(6,12,18)
|
|
10988
10961
|
|
|
10989
|
-
*******************************************************************************************************************************/this.CallScriptIndex=function(job,varTable){var
|
|
10962
|
+
*******************************************************************************************************************************/this.CallScriptIndex=function(job,varTable){var _this45=this;if(job.Member)return this.CallMemberScriptIndex(job);if(job.DynamicName)return this.CallDynamicScriptIndex(job,varTable);if(!job.Args||!(job.Args.length>=2)){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() Error: '+job.FunctionName+' \u53C2\u6570\u9519\u8BEF');}var indexInfo={Job:job,PeriodID:this.Period};if(!this.ReadSymbolArgumentValue(job.Args[0],indexInfo))//读取代码
|
|
10990
10963
|
{var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() Error: '+indexInfo.Error);}if(!this.ReadIndexFunctionValue(job.Args[1],indexInfo))//读取指标
|
|
10991
10964
|
{var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() Error: '+indexInfo.Error);}if(job.FunctionName=="CALCSTOCKINDEX"){if(!this.ReadIndexFunctionOut(job.Args[2],indexInfo))//读取返回值索引
|
|
10992
10965
|
{var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() Error: '+indexInfo.Error);}}var systemIndex=new JSIndexScript();var systemItem=systemIndex.Get(indexInfo.Name);if(!systemItem){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() '+indexInfo.Name+' \u6307\u6807\u4E0D\u5B58\u5728');}indexInfo.SytemIndex=systemItem;//系统指标
|
|
10993
10966
|
if(!this.ReadIndexArgumentValue(job.Args,indexInfo)){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() '+indexInfo.Name+' \u6307\u6807\u53C2\u6570\u9519\u8BEF : '+indexInfo.Error+' ');}JSConsole.Complier.Log('[JSSymbolData::CallScriptIndex] call script index',indexInfo);var DateTimeRange=null;if(this.Data&&this.Data.Data.length>0){var start=this.Data.Data[0];var end=this.Data.Data[this.Data.Data.length-1];DateTimeRange={Start:{Date:start.Date,Time:start.Time},End:{Date:end.Date,Time:end.Time}};}var option={HQDataType:this.DataType,Symbol:indexInfo.Symbol,Name:'',Right:this.Right,//复权
|
|
10994
10967
|
Period:indexInfo.PeriodID,//周期
|
|
10995
|
-
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){
|
|
10968
|
+
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){_this45.RecvScriptIndexData(outVar,job,symbolData);_this45.Execute.RunNextJob();},CallbackParam:indexInfo,Async:true,MaxRequestDataCount:this.MaxRequestDataCount+30*2,MaxRequestMinuteDayCount:this.MaxRequestMinuteDayCount+2,Arguments:indexInfo.Args,//Condition:this.Condition,
|
|
10996
10969
|
IsBeforeData:this.IsBeforeData,NetworkFilter:this.NetworkFilter,IsApiPeriod:this.IsApiPeriod,KLineRange:DateTimeRange//K线数据范围
|
|
10997
10970
|
};//执行脚本
|
|
10998
|
-
var run=JSComplier.Execute(indexInfo.SytemIndex.Script,option,function(error,indexInfo){
|
|
10971
|
+
var run=JSComplier.Execute(indexInfo.SytemIndex.Script,option,function(error,indexInfo){_this45.ExecuteScriptIndexError(error,indexInfo);});};this.RecvMemberScriptIndexData=function(outVar,indexInfo,symbolData){JSConsole.Complier.Log('[JSSymbolData::RecvMemberScriptIndexData] ',outVar,indexInfo,symbolData);var kLine=symbolData.Data.Data;var aryOutVar=outVar;var data=this.Data.FitKLineIndex(kLine,aryOutVar,this.Period,indexInfo.PeriodID);var member=indexInfo.Job.Member;var objName=member.Object.Name;var propertyName=member.Property.Name;var memberValue={};if(this.Execute.VarTable.has(objName))memberValue=this.Execute.VarTable.get(objName);else this.Execute.VarTable.set(objName,memberValue);//保存所有的指标数据, 下面用到了就可以不用算了
|
|
10999
10972
|
for(var i in data){var key=outVar[i].Name;if(indexInfo.Period)key+='#'+indexInfo.Period;//带周期的变量
|
|
11000
10973
|
memberValue[key]=data[i].Data;}};this.RecvDynamicScriptIndexData=function(outVar,indexInfo,symbolData){JSConsole.Complier.Log('[JSSymbolData::RecvDynamicScriptIndexData] ',outVar,indexInfo,symbolData);var kLine=symbolData.Data.Data;var aryOutVar=outVar;var data=this.Data.FitKLineIndex(kLine,aryOutVar,this.Period,indexInfo.PeriodID);var objName=indexInfo.Name;var memberValue={};if(this.Execute.VarTable.has(objName))memberValue=this.Execute.VarTable.get(objName);else this.Execute.VarTable.set(objName,memberValue);var strValue="";for(var i=0;i<indexInfo.Args.length;++i){var item=indexInfo.Args[i];if(item.IsDefault===false){if(strValue.length>0)strValue+=",";strValue+=''+item.Value;}}var strArgs='('+strValue+')';//保存所有的指标数据, 下面用到了就可以不用算了
|
|
11001
10974
|
for(var i=0;i<data.length;++i){var key=outVar[i].Name+'#'+strArgs;if(indexInfo.Period)key+='#'+indexInfo.Period;//带周期的变量
|
|
@@ -11163,7 +11136,7 @@ GetMarginJobID:function GetMarginJobID(value){var dataMap=new _map2.default([[1,
|
|
|
11163
11136
|
[9,JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_NEWS_ANALYSIS_TOPMANAGERS],//NEWS(9) 高管要闻
|
|
11164
11137
|
[10,JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_NEWS_ANALYSIS_PLEDGE]]);if(dataMap.has(value))return dataMap.get(value);return null;},//财务截面数据 分报告期
|
|
11165
11138
|
GetSectionFinanceID:function GetSectionFinanceID(value){var dataMap=new _map2.default([['流动资产',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_01],['货币资金',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_02],['存货',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_03],['流动负债',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_04],['非流动负债',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_05],['三项费用',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_06],['投资收益',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_07],['归母净利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_08],['扣非净利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_09],['扣非每股收益',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_10],['加权平均净资产收益',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_11],['在建工程',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_12],['累计折旧',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_13],['少数股东利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_14],['汇兑损益',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_15],['坏账计提',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_16],['固定资产',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_17],['当期折旧',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_18],['营业总收入',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_19],['主营业务利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_20],['营业利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_21],['净利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_22],['应收账款',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_23],['财务费用',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_24],['经营性现金流',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_25],['资产总计',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_26],['负债总计',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_27],['所有者权益总计',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_28],['毛利率',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_29],['每股资本公积金',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_30],['每股未分配利润',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_31],['每股收益',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_32],['每股净资产',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_33],['每股经营性现金流',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_34],['扣非净利润涨幅',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_35],['扣非净利润涨速',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_36],['净利润涨幅',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_37],['资产负债率',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_38],['利润同比',JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_F_39]]);if(dataMap.has(value))return dataMap.get(value);return null;},//获取报告期 2018, 1
|
|
11166
|
-
GetSectionReportPeriod:function GetSectionReportPeriod(year,quarter){if(year>=2000&&quarter>=1&&quarter<=4)return{Year:year,Quarter:quarter};return null;}};function JSExecute(ast,option){var
|
|
11139
|
+
GetSectionReportPeriod:function GetSectionReportPeriod(year,quarter){if(year>=2000&&quarter>=1&&quarter<=4)return{Year:year,Quarter:quarter};return null;}};function JSExecute(ast,option){var _this46=this;this.AST=ast;//语法树
|
|
11167
11140
|
this.ErrorHandler=new ErrorHandler();this.VarTable=new _map2.default();//变量表
|
|
11168
11141
|
this.VarDrawTable=new _map2.default();//绘图变量表
|
|
11169
11142
|
this.OutVarTable=[];//输出变量
|
|
@@ -11209,7 +11182,7 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
11209
11182
|
['DRAWNULL',null],["NULL",null],["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null],["TR",null],//真实波幅
|
|
11210
11183
|
["AUTOFILTER",null]]);this.SymbolData=new JSSymbolData(this.AST,option,this);this.Algorithm=new JSAlgorithm(this.ErrorHandler,this.SymbolData);this.Draw=new JSDraw(this.ErrorHandler,this.SymbolData);this.JobList=[];//执行的任务队列
|
|
11211
11184
|
this.UpdateUICallback=null;//回调
|
|
11212
|
-
this.CallbackParam=null;this.IsSectionMode=false;if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam){this.CallbackParam=option.CallbackParam;if(this.CallbackParam.HQChart)this.GetEventCallback=function(id){return
|
|
11185
|
+
this.CallbackParam=null;this.IsSectionMode=false;if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam){this.CallbackParam=option.CallbackParam;if(this.CallbackParam.HQChart)this.GetEventCallback=function(id){return _this46.CallbackParam.HQChart.GetEventCallback(id);};}if(option.Arguments)this.Arguments=option.Arguments;if(option.IsSectionMode)this.IsSectionMode=option.IsSectionMode;if(option.Self)this.IndexCtrl=option.Self;//调试模式信息
|
|
11213
11186
|
if(IFrameSplitOperator.IsNumber(option.Debug))this.Debug=option.Debug;if(option.DebugFilter)this.DebugFilter=option.DebugFilter;}this.Execute=function(){this.OutVarTable=[];this.VarTable=new _map2.default();this.VarDrawTable=new _map2.default();//绘图变量表
|
|
11214
11187
|
JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i125 in this.Arguments)//预定义的变量
|
|
11215
11188
|
{var _item16=this.Arguments[_i125];this.VarTable.set(_item16.Name,_item16.Value);}this.RunNextJob();};this.RunNextJob=function(){if(this.JobList.length<=0)return;JSConsole.Complier.Log('[JSExecute::Execute] JobList',this.JobList);var jobItem=this.JobList.shift();switch(jobItem.ID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_DATA:return this.SymbolData.GetSymbolData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_PERIOD_DATA:return this.SymbolData.GetSymbolPeriodData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA:return this.SymbolData.GetIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA:return this.SymbolData.GetLatestIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA:return this.SymbolData.GetIndexIncreaseData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA:return this.SymbolData.GetLatestData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA://量比
|
|
@@ -11275,8 +11248,8 @@ else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","
|
|
|
11275
11248
|
{var _outVar13=this.VarTable.get(_varName3);var _value7={Name:_varName3,Data:_outVar13,Type:9};if(color)_value7.Color=color;if(upColor)_value7.UpColor=upColor;if(downColor)_value7.DownColor=downColor;if(lineWidth)_value7.LineWidth=lineWidth;this.OutVarTable.push(_value7);}else if(colorStick&&_varName3)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
11276
11249
|
{var _outVar14=this.VarTable.get(_varName3);var _value8={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value8.LineWidth=lineWidth;if(color)_value8.Color=color;if(upColor)_value8.UpColor=upColor;if(downColor)_value8.DownColor=downColor;this.OutVarTable.push(_value8);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value9={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value9.LineWidth=lineWidth;if(isShow==false)_value9.IsShow=false;if(isExData==true)_value9.IsExData=true;if(isDotLine==true)_value9.IsDotLine=true;if(isOverlayLine==true)_value9.IsOverlayLine=true;if(isNoneName==true)_value9.NoneName=true;if(isShowTitle==false)_value9.IsShowTitle=false;if(stepLine==true)_value9.Type=7;this.OutVarTable.push(_value9);}else if(_draw3)//画图函数
|
|
11277
11250
|
{var outVar={Name:_draw3.Name,Draw:_draw3,Type:1};if(color)outVar.Color=color;if(isDotLine==true)outVar.IsDotLine=true;if(lineWidth)outVar.LineWidth=lineWidth;if(isDrawAbove)outVar.IsDrawAbove=true;if(isDrawCenter)outVar.IsDrawCenter=true;if(isDrawBelow)outVar.IsDrawBelow=true;if(drawAlign>=0)outVar.DrawAlign=drawAlign;if(drawVAlign>=0)outVar.DrawVAlign=drawVAlign;if(fontSize>0)outVar.DrawFontSize=fontSize;if(bgConfig)outVar.Background=bgConfig;if(vLineConfig)outVar.VerticalLine=vLineConfig;if(IFrameSplitOperator.IsNumber(xOffset))outVar.XOffset=xOffset;if(IFrameSplitOperator.IsNumber(yOffset))outVar.YOffset=yOffset;if(IFrameSplitOperator.IsBool(isFirstDraw))outVar.IsFirstDraw=isFirstDraw;if(IFrameSplitOperator.IsNumber(klineType))outVar.KLineType=klineType;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value10={Name:_varName3,Data:_outVar16,Type:0};if(color)_value10.Color=color;if(lineWidth)_value10.LineWidth=lineWidth;if(isShow==false)_value10.IsShow=false;if(isExData==true)_value10.IsExData=true;if(isDotLine==true)_value10.IsDotLine=true;if(isOverlayLine==true)_value10.IsOverlayLine=true;if(isShowTitle==false)_value10.IsShowTitle=false;if(stepLine==true)_value10.Type=7;this.OutVarTable.push(_value10);}}}};this.ReadUnaryExpression=function(item,varInfo){var argument=item.Argument;var outVar=null;if(argument.Type==Syntax.Literal){outVar=argument.Value;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.Identifier){var varName=argument.Name;outVar=this.ReadVariable(varName,item.Expression);if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.BinaryExpression){outVar=argument.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.CallExpression){var callItem=argument;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){return false;}else if(callItem.Callee.Name==="IFC"&&callItem.Draw){return false;}else{outVar=callItem.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}}else{return false;}if(item.Operator=='-'){if(outVar)outVar=this.Algorithm.Subtract(0,outVar);}varInfo.OutVar=outVar;return true;};this.GetOutIconData=function(cond,iconDraw){if(Array.isArray(cond)){for(var i=0;i<cond.length&&i<iconDraw.DrawData.length;++i){var item=cond[i];if(item<=0)iconDraw.DrawData[i]=null;}return iconDraw;}if(cond)return iconDraw;return null;};this.GetSoundEvent=function(){if(!this.GetEventCallback)return null;return this.GetEventCallback(JSCHART_EVENT_ID.ON_PLAY_SOUND);};this.Run=function(){try{var data=this.RunAST();//执行脚本
|
|
11278
|
-
JSConsole.Complier.Log('[JSComplier.Run] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.Run] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}}catch(error){JSConsole.Complier.Log(error);if(error.Job){JSConsole.Complier.Log('[JSComplier.Run] download job and reexectue',error.Job);this.JobList.push(error.Job);this.JobList.push({ID:JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT});this.Execute();}else if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.DebugRun_End=function(){var data=this.OutVarTable;JSConsole.Complier.Log('[JSComplier.DebugRun_End] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.DebugRun_End] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}};this.DebugRun_Next=function(debugCtrl){var
|
|
11279
|
-
this.DebugRun=function(){var
|
|
11251
|
+
JSConsole.Complier.Log('[JSComplier.Run] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.Run] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}}catch(error){JSConsole.Complier.Log(error);if(error.Job){JSConsole.Complier.Log('[JSComplier.Run] download job and reexectue',error.Job);this.JobList.push(error.Job);this.JobList.push({ID:JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT});this.Execute();}else if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.DebugRun_End=function(){var data=this.OutVarTable;JSConsole.Complier.Log('[JSComplier.DebugRun_End] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.DebugRun_End] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}};this.DebugRun_Next=function(debugCtrl){var _this47=this;if(debugCtrl.ExeLine<debugCtrl.LineCount){var item=this.AST.Body[debugCtrl.ExeLine];this.RunASTNode(item);++debugCtrl.ExeLine;this.DebugFilter(debugCtrl,function(){_this47.DebugRun_Next(debugCtrl);});}else{this.DebugRun_End();debugCtrl.Status=2;this.DebugFilter(debugCtrl,null);}};//debug模式
|
|
11252
|
+
this.DebugRun=function(){var _this48=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this48.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var tempValue=this.GetNodeValueEx(node.Argument);var value=this.Algorithm.Subtract(0,tempValue);}else{var value=node.Argument.Value;}return value;};this.VisitSequenceExpression=function(node){for(var _i128 in node.Expression){var _item18=node.Expression[_i128];this.VisitNode(_item18);}};this.GetDynamicScriptIndex=function(node,args){var dynamicName=node.Callee.Value;var aryValue=dynamicName.split(".");if(aryValue.length!=2){this.ThrowUnexpectedNode(node,'\u8C03\u7528\u6307\u6807\u683C\u5F0F\''+dynamicName+'\'\u9519\u8BEF');}var name=aryValue[0];var outName=aryValue[1];var period=null;var pos=outName.indexOf('#');if(pos!=-1){period=outName.slice(pos+1);//周期
|
|
11280
11253
|
outName=outName.slice(0,pos);}var strValue="";for(var i=0;i<args.length;++i){var value=args[i];if(strValue.length>0)strValue+=",";strValue+=''+value;}var strArgs='('+strValue+')';var key=outName+'#'+strArgs;if(period)key+='#'+period;if(!this.VarTable.has(name))return null;var indexData=this.VarTable.get(name);var value=indexData[key];return value;};//函数调用
|
|
11281
11254
|
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var i=0;i<node.Arguments.length;++i){var item=node.Arguments[i];var value;if(funcName==="IFC"&&i>=1)break;//IFC先处理第1个条件参数
|
|
11282
11255
|
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(node.Callee.Type==Syntax.Literal){node.Out=[];node.Draw=null;var data=this.GetDynamicScriptIndex(node,args);if(data)node.Out=data;return node.Out;}if(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
|
|
@@ -12079,15 +12052,15 @@ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FILTER_DEAL_DATA);if(!event|
|
|
|
12079
12052
|
event.Callback(event,sendData,this);return sendData.Result;};this.EnableFilter=function(bEnable,option)//启动|关闭筛选
|
|
12080
12053
|
{this.EnableFilterData=bEnable;this.Data.Data=this.FilterData(this.SourceData.Data);this.Data.DataOffset=0;if(option){if(option.GotoLastPage==true)this.GotoLastPage();if(option.Redraw==true)this.Draw();}};this.CloneArray=function(aryData){var data=[];if(!IFrameSplitOperator.IsNonEmptyArray(aryData))return data;for(var i=0;i<aryData.length;++i){data.push(aryData[i]);}return data;};//创建
|
|
12081
12054
|
//windowCount 窗口个数
|
|
12082
|
-
this.Create=function(option){var
|
|
12055
|
+
this.Create=function(option){var _this49=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
12083
12056
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);//创建框架
|
|
12084
12057
|
this.Frame=new JSDealFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartSplashPaint.Frame=this.Frame;//创建表格
|
|
12085
|
-
var chart=new ChartDealList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return
|
|
12058
|
+
var chart=new ChartDealList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return _this49.GetEventCallback(id);};this.ChartPaint[0]=chart;if(option){if(IFrameSplitOperator.IsBool(option.IsSingleTable))chart.IsSingleTable=option.IsSingleTable;//单表模式
|
|
12086
12059
|
if(IFrameSplitOperator.IsBool(option.IsShowHeader))chart.IsShowHeader=option.IsShowHeader;//是否显示表头
|
|
12087
12060
|
if(IFrameSplitOperator.IsBool(option.IsShowLastPage))this.IsShowLastPage=option.IsShowLastPage;//是否显示最后一页
|
|
12088
12061
|
if(IFrameSplitOperator.IsNumber(option.BorderLine))this.Frame.BorderLine=option.BorderLine;//边框
|
|
12089
|
-
}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){
|
|
12090
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
12062
|
+
}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){_this49.OnKeyDown(e);},true);//键盘消息
|
|
12063
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this49.OnWheel(e);},true);//上下滚动消息
|
|
12091
12064
|
};this.Draw=function(){if(this.UIElement.width<=0||this.UIElement.height<=0)return;this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
12092
12065
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12093
12066
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
@@ -12249,26 +12222,26 @@ this.DragPageCycle=true;//手机翻页循环
|
|
|
12249
12222
|
this.DragXScroll=null;//{Start:{x,y}, End:{x, y}}
|
|
12250
12223
|
this.DragYScroll=null;this.IsShowVScrollbar=false;this.IsDestroy=false;//是否已经销毁了
|
|
12251
12224
|
this.ChartDestory=function()//销毁
|
|
12252
|
-
{this.IsDestroy=true;this.StopAutoUpdate();};this.StopAutoDragScrollTimer=function(){JSConsole.Chart.Log("[JSReportChartContainer::StopAutoDragScrollTimer] stop ");this.EnablePageScroll=false;if(this.AutoDragScrollTimer!=null){clearTimeout(this.AutoDragScrollTimer);this.AutoDragScrollTimer=null;}};this.AutoScrollPage=function(step){var
|
|
12225
|
+
{this.IsDestroy=true;this.StopAutoUpdate();};this.StopAutoDragScrollTimer=function(){JSConsole.Chart.Log("[JSReportChartContainer::StopAutoDragScrollTimer] stop ");this.EnablePageScroll=false;if(this.AutoDragScrollTimer!=null){clearTimeout(this.AutoDragScrollTimer);this.AutoDragScrollTimer=null;}};this.AutoScrollPage=function(step){var _this50=this;this.AutoDragScrollTimer=setTimeout(function(){_this50.ChartOperator_Temp_ScrollPage(step);},300);};this.ChartOperator_Temp_ScrollPage=function(moveSetp){if(!this.EnablePageScroll)return;var reportChart=this.GetReportChart();if(!reportChart)return;if(moveSetp>0){var pageStatus=reportChart.GetCurrentPageStatus();if(pageStatus.IsEnd)return;this.MoveYOffset(moveSetp,false);++moveSetp;}else if(moveSetp<0){if(this.Data.YOffset<=0)return;this.MoveYOffset(moveSetp,false);--moveSetp;}else{return;}this.Draw();if(!this.EnablePageScroll)return;this.AutoScrollPage(moveSetp);return;};//清空固定行数据
|
|
12253
12226
|
this.ClearFixedRowData=function(){this.FixedRowData.Data=[];this.FixedRowData.Symbol=[];};//设置固定行
|
|
12254
12227
|
this.SetFixedRowCount=function(value){var chart=this.GetReportChart();if(!chart)return;chart.FixedRowCount=value;};//创建
|
|
12255
|
-
this.Create=function(option){var
|
|
12228
|
+
this.Create=function(option){var _this51=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
12256
12229
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.IsEnableSplash=true;//创建框架
|
|
12257
12230
|
this.Frame=new JSReportFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartSplashPaint.Frame=this.Frame;//创建表格
|
|
12258
|
-
var chart=new ChartReport();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.UIElement=this.UIElement;chart.GetEventCallback=function(id){return
|
|
12231
|
+
var chart=new ChartReport();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.UIElement=this.UIElement;chart.GetEventCallback=function(id){return _this51.GetEventCallback(id);};chart.GetStockDataCallback=function(symbol){return _this51.GetStockData(symbol);};chart.GetBlockDataCallback=function(symbol){return _this51.GetBlockData(symbol);};chart.GetFlashBGDataCallback=function(symbol,time){return _this51.GetFlashBGData(symbol,time);};chart.Data=this.Data;chart.GlobalOption=this.GlobalOption;chart.FixedRowData=this.FixedRowData;chart.SortInfo=this.SortInfo;chart.Tab=new ChartReportTab();chart.Tab.Frame=this.Frame;chart.Tab.Canvas=this.Canvas;chart.Tab.ChartBorder=this.Frame.ChartBorder;chart.Tab.Report=chart;chart.VScrollbar=new ChartVScrollbar();chart.VScrollbar.Frame=this.Frame;chart.VScrollbar.Canvas=this.Canvas;chart.VScrollbar.ChartBorder=this.Frame.ChartBorder;chart.VScrollbar.Report=chart;chart.VScrollbar.IsShowCallback=function(){if(_this51.DragYScroll)return true;return _this51.IsShowVScrollbar;};this.ChartPaint[0]=chart;//页脚
|
|
12259
12232
|
if(option&&option.PageInfo===true){var pageInfoChart=new ChartReportPageInfo();pageInfoChart.Frame=this.Frame;pageInfoChart.ChartBorder=this.Frame.ChartBorder;pageInfoChart.Canvas=this.Canvas;pageInfoChart.Report=chart;this.ChartPaint[1]=pageInfoChart;}if(option){if(IFrameSplitOperator.IsBool(option.IsShowHeader))chart.IsShowHeader=option.IsShowHeader;//是否显示表头
|
|
12260
12233
|
if(IFrameSplitOperator.IsNumber(option.FixedColumn))chart.FixedColumn=option.FixedColumn;//固定列
|
|
12261
12234
|
if(IFrameSplitOperator.IsNumber(option.BorderLine))this.Frame.BorderLine=option.BorderLine;//边框
|
|
12262
12235
|
if(IFrameSplitOperator.IsBool(option.TabShow))chart.Tab.IsShow=option.TabShow;if(IFrameSplitOperator.IsNumber(option.FixedRowCount))chart.FixedRowCount=option.FixedRowCount;//固定行
|
|
12263
12236
|
if(IFrameSplitOperator.IsBool(option.ItemBorder))chart.IsDrawBorder=option.ItemBorder;//单元格边框
|
|
12264
|
-
if(IFrameSplitOperator.IsNumber(option.SelectedModel))chart.SelectedModel=option.SelectedModel;if(IFrameSplitOperator.IsNonEmptyArray(option.FixedSymbol)){chart.FixedRowCount=0;this.FixedRowData.Type=1;this.FixedRowData.Symbol=[];var aryData=option.FixedSymbol;for(var i=0;i<aryData.length;++i){var item=aryData[i];this.FixedRowData.Symbol.push(item.Symbol);++chart.FixedRowCount;}}}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){
|
|
12265
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
12266
|
-
this.UIElement.ondblclick=function(e){
|
|
12267
|
-
this.UIElement.ontouchstart=function(e){
|
|
12237
|
+
if(IFrameSplitOperator.IsNumber(option.SelectedModel))chart.SelectedModel=option.SelectedModel;if(IFrameSplitOperator.IsNonEmptyArray(option.FixedSymbol)){chart.FixedRowCount=0;this.FixedRowData.Type=1;this.FixedRowData.Symbol=[];var aryData=option.FixedSymbol;for(var i=0;i<aryData.length;++i){var item=aryData[i];this.FixedRowData.Symbol.push(item.Symbol);++chart.FixedRowCount;}}}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSDealChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){_this51.OnKeyDown(e);},true);//键盘消息
|
|
12238
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this51.OnWheel(e);},true);//上下滚动消息
|
|
12239
|
+
this.UIElement.ondblclick=function(e){_this51.UIOnDblClick(e);};this.UIElement.onmousedown=function(e){_this51.UIOnMouseDown(e);};this.UIElement.onmouseup=function(e){_this51.UIOnMounseUp(e);};this.UIElement.oncontextmenu=function(e){_this51.UIOnContextMenu(e);};this.UIElement.onmousemove=function(e){_this51.UIOnMouseMove(e);};this.UIElement.onmouseout=function(e){_this51.UIOnMounseOut(e);};this.UIElement.onmouseleave=function(e){_this51.UIOnMouseleave(e);};//手机拖拽
|
|
12240
|
+
this.UIElement.ontouchstart=function(e){_this51.OnTouchStart(e);};this.UIElement.ontouchmove=function(e){_this51.OnTouchMove(e);};this.UIElement.ontouchend=function(e){_this51.OnTouchEnd(e);};};this.Draw=function(){if(this.UIElement.width<=0||this.UIElement.height<=0)return;this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
12268
12241
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12269
12242
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
12270
|
-
for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}if(this.GlobalOption.FlashBGCount>0){this.DelayDraw(500);}};this.DelayDraw=function(frequency){var
|
|
12271
|
-
this.SetSymbolList=function(arySymbol,option){this.ClearData();this.ResetReportStatus();this.ResetSortStatus();if(IFrameSplitOperator.IsNonEmptyArray(arySymbol)){for(var i=0;i<arySymbol.length;++i){this.Data.Data.push(arySymbol[i]);}}var chart=this.ChartPaint[0];if(chart)chart.Data=this.Data;this.Draw();};this.ChangeSymbol=function(symbol,option){var
|
|
12243
|
+
for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}if(this.GlobalOption.FlashBGCount>0){this.DelayDraw(500);}};this.DelayDraw=function(frequency){var _this52=this;if(typeof this.FlashBGTimer=='number'){clearTimeout(this.FlashBGTimer);this.FlashBGTimer=null;}this.FlashBGTimer=setTimeout(function(){_this52.Draw();},frequency);};this.ResetReportStatus=function(){this.Data.XOffset=0;this.Data.YOffset=0;};this.ResetReportSelectStatus=function(){var chart=this.GetReportChart();if(chart){chart.SelectedRow=-1;chart.SelectedFixedRow=-1;}};this.ClearData=function(){this.SourceData.Data=[];this.Data.Data=[];this.BlockData=new _map2.default();};this.ResetSortStatus=function(){this.SortInfo.Field=-1;this.SortInfo.Sort=0;};//设置股票列表
|
|
12244
|
+
this.SetSymbolList=function(arySymbol,option){this.ClearData();this.ResetReportStatus();this.ResetSortStatus();if(IFrameSplitOperator.IsNonEmptyArray(arySymbol)){for(var i=0;i<arySymbol.length;++i){this.Data.Data.push(arySymbol[i]);}}var chart=this.ChartPaint[0];if(chart)chart.Data=this.Data;this.Draw();};this.ChangeSymbol=function(symbol,option){var _this53=this;this.Symbol=symbol;this.ClearData();this.ResetReportStatus();this.ResetSortStatus();this.ResetReportSelectStatus();if(option){if(IFrameSplitOperator.IsNumber(option.TabSelected)){var chartTab=this.GetTabChart();if(chartTab)chartTab.SelectedTabIndex=option.TabSelected;}if(Array.isArray(option.FixedSymbol)){var chart=this.GetReportChart();if(chart){chart.FixedRowCount=0;this.FixedRowData.Type=1;this.FixedRowData.Symbol=[];var aryData=option.FixedSymbol;for(var i=0;i<aryData.length;++i){var item=aryData[i];this.FixedRowData.Symbol.push(item.Symbol);++chart.FixedRowCount;}this.SetSizeChange(true);}}if(option.SortInfo){var item=option.SortInfo;if(IFrameSplitOperator.IsNumber(item.Field))this.SortInfo.Field=item.Field;if(IFrameSplitOperator.IsNumber(item.Sort))this.SortInfo.Sort=item.Sort;}if(IFrameSplitOperator.IsBool(option.IsReloadStockList)){var requestOption={Callback:null};if(this.Symbol)requestOption.Callback=function(){_this53.RequestMemberListData();};this.MapStockData=new _map2.default();this.RequestStockListData(requestOption);return;}}this.RequestMemberListData();};this.RequestMemberListData=function(){//this.ChartSplashPaint.SetTitle(this.SplashTitle.MemberList);
|
|
12272
12245
|
//this.ChartSplashPaint.EnableSplash(true);
|
|
12273
12246
|
//this.Draw();
|
|
12274
12247
|
var self=this;if(this.NetworkFilter){var obj={Name:'JSReportChartContainer::RequestMemberListData',//类名::
|
|
@@ -12286,7 +12259,7 @@ this.GetStockData=function(symbol){if(!this.MapStockData)return null;if(!this.Ma
|
|
|
12286
12259
|
this.SetFlashBGItem=function(symbol,obj){var item={ID:obj.ID,Color:obj.Color,Count:1};if(IFrameSplitOperator.IsNumber(obj.Count))item.Count=obj.Count;if(IFrameSplitOperator.IsNumber(obj.Time))item.Time=obj.Time;else item.Time=Date.now();if(this.FlashBG.has(symbol)){var stockItem=this.FlashBG.get(symbol);stockItem.LastTime=item.Time;stockItem.Data.set(item.ID,item);}else{var stockItem={LastTime:item.Time,Data:new _map2.default([[item.ID,item]])};this.FlashBG.set(symbol,stockItem);}};this.GetFlashBGData=function(symbol,time){if(!this.FlashBG)return null;if(!this.FlashBG.has(symbol))return null;var timeDiff=3*1000;var stockItem=this.FlashBG.get(symbol);if(time-stockItem.LastTime>=timeDiff)//超时的删除
|
|
12287
12260
|
{this.FlashBG.delete(symbol);return null;}if(!stockItem.Data||stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}var aryDelID=[];//超时需要参数的
|
|
12288
12261
|
var _iteratorNormalCompletion21=true;var _didIteratorError21=false;var _iteratorError21=undefined;try{for(var _iterator21=(0,_getIterator3.default)(stockItem.Data),_step21;!(_iteratorNormalCompletion21=(_step21=_iterator21.next()).done);_iteratorNormalCompletion21=true){var mapItem=_step21.value;var item=mapItem[1];if(time-item.Time>=timeDiff||item.Count<=0)aryDelID.push(item.ID);}}catch(err){_didIteratorError21=true;_iteratorError21=err;}finally{try{if(!_iteratorNormalCompletion21&&_iterator21.return){_iterator21.return();}}finally{if(_didIteratorError21){throw _iteratorError21;}}}if(IFrameSplitOperator.IsNonEmptyArray(aryDelID)){for(var i=0;i<aryDelID.length;++i){stockItem.Data.delete(aryDelID[i]);}if(stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}}return stockItem;};//delay=是否延迟
|
|
12289
|
-
this.DelayUpdateStockData=function(){var
|
|
12262
|
+
this.DelayUpdateStockData=function(){var _this54=this;if(this.DelayUpdateTimer!=null){clearTimeout(this.DelayUpdateTimer);this.DelayUpdateTimer=null;}var frequency=this.DelayUpdateFrequency;this.DelayUpdateTimer=setTimeout(function(){_this54.UpdateStockData();},frequency);};this.UpdateStockData=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;var chart=this.ChartPaint[0];if(!chart)return;if(this.SortInfo&&this.SortInfo.Field>=0&&this.SortInfo.Sort>0){var column=chart.Column[this.SortInfo.Field];if(column.Sort==2){this.RequestStockSortData(column,this.SortInfo.Field,this.SortInfo.Sort);//远程排序
|
|
12290
12263
|
return;}}var arySymbol=chart.ShowSymbol;if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return;this.RequestStockData(arySymbol);};//下载股票数据
|
|
12291
12264
|
this.RequestStockData=function(arySymbol){var self=this;if(this.NetworkFilter){var obj={Name:'JSDealChartContainer::RequestStockData',//类名::函数名
|
|
12292
12265
|
Explain:'报价列表股票数据',Request:{Data:{stocks:arySymbol}},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){self.RecvStockData(data);self.AutoUpdate();});if(obj.PreventDefault==true)return;}throw{Name:'JSReportChartContainer::RequestStockData',Error:'(报价列表股票数据)不提供内置测试数据'};};this.RecvStockData=function(data){var setUpdateSymbol=new _set2.default();//更新的股票列表
|
|
@@ -12342,7 +12315,7 @@ var result=this.MoveSelectedRow(-1);if(result){if(result.Redraw)this.Draw();if(r
|
|
|
12342
12315
|
var result=this.MoveSelectedRow(1);if(result){if(result.Redraw)this.Draw();if(result.Update)this.DelayUpdateStockData();}break;case 37://left
|
|
12343
12316
|
if(this.MoveXOffset(-1))this.Draw();break;case 39://right
|
|
12344
12317
|
if(this.MoveXOffset(1))this.Draw();break;}//不让滚动条滚动
|
|
12345
|
-
if(e.preventDefault)e.preventDefault();else e.returnValue=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;var chart=this.ChartPaint[0];if(chart)chart.OnDblClick(x,y,e);};this.UIOnMouseDown=function(e){var
|
|
12318
|
+
if(e.preventDefault)e.preventDefault();else e.returnValue=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;var chart=this.ChartPaint[0];if(chart)chart.OnDblClick(x,y,e);};this.UIOnMouseDown=function(e){var _this55=this;this.DragXScroll=null;this.DragYScroll=null;this.DragHeader=null;this.DragColumnWidth=null;this.DragMove={Click:{X:e.clientX,Y:e.clientY},Move:{X:e.clientX,Y:e.clientY},PreMove:{X:e.clientX,Y:e.clientY}};var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart){var dragColumnWidth=chart.PtInHeaderDragBorder(x,y);if(dragColumnWidth){this.DragColumnWidth={ClickPoint:{X:x,Y:y},LastPoint:{X:x,Y:y},//Click:{ X:e.clientX, Y:e.clientY },
|
|
12346
12319
|
//LastMove:{ X:e.clientX, Y:e.clientY},
|
|
12347
12320
|
ClickData:dragColumnWidth,ColumnWidth:dragColumnWidth.Column.Width};}else{var clickData=chart.OnMouseDown(x,y,e);if(!clickData)return;//if (e.button!=0) return;
|
|
12348
12321
|
if((clickData.Type==2||clickData.Type==4)&&(e.button==0||e.button==2))//点击行|固定行
|
|
@@ -12358,7 +12331,7 @@ if((clickData.Type==2||clickData.Type==4)&&(e.button==0||e.button==2))//点击
|
|
|
12358
12331
|
{if(this.MoveYOffset(-1)){this.Draw();this.DelayUpdateStockData();}}else if(scroll.Type==2)//底部按钮
|
|
12359
12332
|
{if(this.MoveYOffset(1)){this.Draw();this.DelayUpdateStockData();}}else if(scroll.Type==3)//滚动条
|
|
12360
12333
|
{this.DragYScroll={Click:{X:x,Y:y},LastMove:{X:x,Y:y}};}else if(scroll.Type==4)//滚动条内部
|
|
12361
|
-
{if(this.SetYOffset(scroll.Pos)){this.Draw();this.DelayUpdateStockData();}}}}}document.onmousemove=function(e){
|
|
12334
|
+
{if(this.SetYOffset(scroll.Pos)){this.Draw();this.DelayUpdateStockData();}}}}}document.onmousemove=function(e){_this55.DocOnMouseMove(e);};document.onmouseup=function(e){_this55.DocOnMouseUp(e);};};this.UIOnMounseUp=function(e){console.log('"UIOnMounseUp');};//去掉右键菜单
|
|
12362
12335
|
this.UIOnContextMenu=function(e){e.preventDefault();};this.UIOnMouseMove=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;if(this.DragRow)return;if(this.DrawHeader)return;if(this.DragColumnWidth)return;var tabChart=this.GetTabChart();if(tabChart){var tabData=tabChart.PtInTab(x,y);if(tabData){var index=tabData.Index;if(tabChart.MoveOnTabIndex!=index){tabChart.MoveOnTabIndex=index;this.Draw();}}}var mouseStatus={Cursor:"default",Name:"Default"};;//鼠标状态
|
|
12363
12336
|
var report=this.GetReportChart();var cell=null;var bDraw=false;if(report){var dragHeaderWidth=report.PtInHeaderDragBorder(x,y);if(dragHeaderWidth){mouseStatus={Cursor:"col-resize",Name:"DragHeaderWidth"};JSConsole.Chart.Log("[JSReportChartContainer::UIOnMouseMove] drag column width ",dragHeaderWidth);}else{cell=report.PtInCell(x,y);//是否在单元格(EnableTooltip)
|
|
12364
12337
|
}var scrollbar=report.VScrollbar;if(scrollbar.Enable){var bShowScrollbar=report.PtInClient(x,y);this.IsShowVScrollbar=bShowScrollbar;if(!this.DragYScroll){if(bShowScrollbar&&!scrollbar.LastStatus.Draw)bDraw=true;else if(!bShowScrollbar&&scrollbar.LastStatus.Draw)bDraw=true;}}}var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_MOUSE_MOVE);if(event){var sendData={X:x,Y:y,Cell:cell};event.Callback(event,sendData,this);}if(mouseStatus)this.UIElement.style.cursor=mouseStatus.Cursor;if(bDraw)this.Draw();};this.UIOnMounseOut=function(e){var bDraw=false;var tabChart=this.GetTabChart();if(tabChart&&tabChart.MoveOnTabIndex>=0){tabChart.MoveOnTabIndex=-1;bDraw=true;this.Draw();}var scrollbar=this.GetVScrollbarChart();if(scrollbar.Enable){this.IsShowVScrollbar=false;if(!this.DragYScroll){if(scrollbar.LastStatus.Draw)bDraw=true;}}if(bDraw)this.Draw();};this.UIOnMouseleave=function(e){var tabChart=this.GetTabChart();if(tabChart&&tabChart.MoveOnTabIndex>=0){tabChart.MoveOnTabIndex=-1;this.Draw();}};this.DocOnMouseMove=function(e){this.DragMove.PreMove.X=this.DragMove.Move.X;this.DragMove.PreMove.Y=this.DragMove.Move.Y;this.DragMove.Move.X=e.clientX;this.DragMove.Move.Y=e.clientX;if(this.DragMove.Move.X!=this.DragMove.PreMove.X||this.DragMove.Move.Y!=this.DragMove.PreMove.Y)this.StopAutoDragScrollTimer();if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;//JSConsole.Chart.Log(`[JSReportChartContainer::DocOnMouseMove] x=${x}, y=${y}`);
|
|
@@ -12397,8 +12370,8 @@ if(chart.SelectedModel==0)//不可翻页模式, 只能在当前页移动
|
|
|
12397
12370
|
{var pageStatus=chart.GetCurrentPageStatus();var pageSize=pageStatus.PageSize;var selected=pageStatus.SelectedRow;if(step>0){if(selected<0||selected<pageStatus.Start||selected>pageStatus.End){chart.SelectedRow=pageStatus.Start;result.Redraw=true;return result;}var offset=this.Data.YOffset;for(var i=0;i<step;++i){++selected;if(selected>pageStatus.End)++offset;if(selected>=this.Data.Data.length){selected=0;offset=0;}}result.Redraw=true;result.Update=offset!=this.Data.YOffset;chart.SelectedRow=selected;this.Data.YOffset=offset;return result;}else if(step<0){if(selected<0||selected<pageStatus.Start||selected>pageStatus.End){chart.SelectedRow=pageStatus.End;result.Redraw=true;return result;}step=Math.abs(step);var offset=this.Data.YOffset;for(var i=0;i<step;++i){--selected;if(selected<pageStatus.Start)--offset;if(selected<0){selected=this.Data.Data.length-1;offset=this.Data.Data.length-pageSize;if(offset<0)offset=0;}}result.Redraw=true;result.Update=offset!=this.Data.YOffset;chart.SelectedRow=selected;this.Data.YOffset=offset;return result;}}return null;};//左右移动
|
|
12398
12371
|
this.MoveXOffset=function(step){var chart=this.ChartPaint[0];if(!chart)return false;var maxOffset=chart.GetXScrollRange();if(maxOffset<=0)return false;if(step>0){if(this.Data.XOffset>=maxOffset)return false;for(var i=0;i<step;++i){if(this.Data.XOffset>=maxOffset)break;++this.Data.XOffset;}return true;}else if(step<0){if(this.Data.XOffset<=0)return false;step=Math.abs(step);for(var i=0;i<step;++i){if(this.Data.XOffset-1<0)break;--this.Data.XOffset;}return true;}return false;};this.SetXOffset=function(pos){if(!IFrameSplitOperator.IsNumber(pos))return false;var chart=this.ChartPaint[0];if(!chart)return false;var maxOffset=chart.GetXScrollRange();if(pos<0)pos=0;if(pos>maxOffset)pos=maxOffset;this.Data.XOffset=pos;return true;};this.SetYOffset=function(pos){if(!IFrameSplitOperator.IsNumber(pos))return false;var chart=this.ChartPaint[0];if(!chart)return false;var maxOffset=chart.GetYScrollRange();if(pos<0)pos=0;if(pos>maxOffset)pos=maxOffset;this.Data.YOffset=pos;return true;};this.GotoLastPage=function(){var chart=this.ChartPaint[0];if(!chart)return;//显示最后一屏
|
|
12399
12372
|
var pageSize=chart.GetPageSize(true);var offset=this.Data.Data.length-pageSize;if(offset<0)offset=0;this.Data.DataOffset=offset;};this.SetColumn=function(aryColunm,option){var chart=this.ChartPaint[0];if(!chart)return;chart.SetColumn(aryColunm);chart.SizeChange=true;if(option&&option.Redraw)this.Draw();};this.SetTab=function(aryTab,option){var chart=this.ChartPaint[0];;if(!chart)return;var chartTab=chart.Tab;if(!chartTab)return;chartTab.SetTabList(aryTab);if(option&&option.Redraw)this.Draw();};this.SetVScrollbar=function(option){var chart=this.GetReportChart();if(!chart)return;var scrollbar=chart.VScrollbar;if(!scrollbar)return;if(IFrameSplitOperator.IsBool(option.Enable))scrollbar.Enable=option.Enable;};this.SetSelectedTab=function(index,opiton){var chart=this.ChartPaint[0];;if(!chart)return;var chartTab=chart.Tab;if(!chartTab)return;chartTab.SelectedTabIndex=index;};this.ReloadResource=function(option){this.Frame.ReloadResource(option);for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.ReloadResource)item.ReloadResource(option);}if(option&&option.Redraw){this.SetSizeChange(true);this.Draw();}};//点表头
|
|
12400
|
-
this.OnClickHeader=function(clickData,e){var
|
|
12401
|
-
{var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_LOCAL_SORT);if(event&&event.Callback){var sendData={Column:header.Column,SortInfo:sortInfo,SymbolList:this.Data.Data,Result:null};event.Callback(event,sendData,this);if(Array.isArray(sendData.Result))this.Data.Data=sendData.Result;}else{this.Data.Data.sort(function(left,right){return
|
|
12373
|
+
this.OnClickHeader=function(clickData,e){var _this56=this;var header=clickData.Header;if(header.Column&&(header.Column.Sort==1||header.Column.Sort==2)){var index=header.Index;var sortInfo={Field:this.SortInfo.Field,Sort:this.SortInfo.Sort};var arySortType=header.Column.SortType;if(sortInfo.Field!=index){sortInfo.Field=index;sortInfo.Sort=arySortType[0];}else{if(arySortType.length==1){sortInfo.Sort=arySortType[0];}else{for(var i=0;i<arySortType.length;++i){if(sortInfo.Sort==arySortType[i]){sortInfo.Sort=arySortType[(i+1)%arySortType.length];break;}}}}if(header.Column.Sort==1||header.Column.Sort==2){if(sortInfo.Sort==0){this.Data.Data=[];for(var i=0;i<this.SourceData.Data.length;++i){this.Data.Data.push(this.SourceData.Data[i]);}}else{if(header.Column.Sort==1)//本地排序
|
|
12374
|
+
{var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_LOCAL_SORT);if(event&&event.Callback){var sendData={Column:header.Column,SortInfo:sortInfo,SymbolList:this.Data.Data,Result:null};event.Callback(event,sendData,this);if(Array.isArray(sendData.Result))this.Data.Data=sendData.Result;}else{this.Data.Data.sort(function(left,right){return _this56.LocalSort(left,right,header.Column,sortInfo.Sort);});}}else if(header.Column.Sort==2)//远程排序
|
|
12402
12375
|
{if(!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;this.SortInfo.Field=sortInfo.Field;this.SortInfo.Sort=sortInfo.Sort;this.Data.YOffset=0;this.ResetReportSelectStatus();this.RequestStockSortData(header.Column,sortInfo.Field,sortInfo.Sort);//远程排序
|
|
12403
12376
|
return;}}this.Data.YOffset=0;this.ResetReportSelectStatus();this.SortInfo.Field=sortInfo.Field;this.SortInfo.Sort=sortInfo.Sort;this.Draw();this.DelayUpdateStockData();}}};//点击标签
|
|
12404
12377
|
this.OnClickTab=function(tabData,e){if(!tabData.Tab)return;var redraw=false;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var uiElement={Left:this.UIElement.getBoundingClientRect().left,Top:this.UIElement.getBoundingClientRect().top};if(tabData.Tab.IsMenu){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_REPORT_TABMENU);if(event&&event.Callback){redraw=true;var rtItem=tabData.Rect;var rtDOM={Left:rtItem.Left/pixelTatio,Right:rtItem.Right/pixelTatio,Top:rtItem.Top/pixelTatio,Bottom:rtItem.Bottom/pixelTatio};var sendData={Data:tabData,IsSide:{X:x,Y:x},UIElement:uiElement,Rect:rtDOM,e:e,Redraw:redraw};event.Callback(event,sendData,this);if(IFrameSplitOperator.IsBool(sendData.Redraw))redraw=sendData.Redraw;}this.SetSelectedTab(tabData.Index);//选中tab
|
|
@@ -12680,16 +12653,16 @@ this.DragXScroll=null;//{Start:{x,y}, End:{x, y}}
|
|
|
12680
12653
|
this.IsDestroy=false;//是否已经销毁了
|
|
12681
12654
|
this.ChartDestory=function()//销毁
|
|
12682
12655
|
{this.IsDestroy=true;this.StopAutoUpdate();};//创建
|
|
12683
|
-
this.Create=function(option){var
|
|
12656
|
+
this.Create=function(option){var _this57=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
12684
12657
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.IsEnableSplash=true;//创建框架
|
|
12685
12658
|
this.Frame=new JSTReportFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartSplashPaint.Frame=this.Frame;//创建表格
|
|
12686
|
-
var chart=new ChartTReport();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.UIElement=this.UIElement;chart.GetEventCallback=function(id){return
|
|
12659
|
+
var chart=new ChartTReport();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.UIElement=this.UIElement;chart.GetEventCallback=function(id){return _this57.GetEventCallback(id);};chart.GetExePriceDataCallback=function(exePrice){return _this57.GetExePriceData(exePrice);};chart.GetFlashBGDataCallback=function(symbol,time){return _this57.GetFlashBGData(symbol,time);};chart.Data=this.Data;chart.BorderData=this.BorderData;chart.GlobalOption=this.GlobalOption;chart.SortInfo=this.SortInfo;this.ChartPaint[0]=chart;if(option){if(IFrameSplitOperator.IsBool(option.IsShowHeader))chart.IsShowHeader=option.IsShowHeader;//是否显示表头
|
|
12687
12660
|
if(IFrameSplitOperator.IsNumber(option.FixedColumn))chart.FixedColumn=option.FixedColumn;//固定列
|
|
12688
12661
|
if(IFrameSplitOperator.IsNumber(option.BorderLine))this.Frame.BorderLine=option.BorderLine;//边框
|
|
12689
12662
|
if(IFrameSplitOperator.IsBool(option.ItemBorder))chart.IsDrawBorder=option.ItemBorder;//单元格边框
|
|
12690
|
-
if(IFrameSplitOperator.IsNumber(option.SelectedModel))chart.SelectedModel=option.SelectedModel;}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSTReportChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSTReportChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){
|
|
12691
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
12692
|
-
this.UIElement.ondblclick=function(e){
|
|
12663
|
+
if(IFrameSplitOperator.IsNumber(option.SelectedModel))chart.SelectedModel=option.SelectedModel;}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSTReportChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSTReportChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){_this57.OnKeyDown(e);},true);//键盘消息
|
|
12664
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this57.OnWheel(e);},true);//上下滚动消息
|
|
12665
|
+
this.UIElement.ondblclick=function(e){_this57.UIOnDblClick(e);};this.UIElement.onmousedown=function(e){_this57.UIOnMouseDown(e);};/*
|
|
12693
12666
|
this.UIElement.onmouseup=(e)=>{ this.UIOnMounseUp(e); }
|
|
12694
12667
|
this.UIElement.oncontextmenu=(e)=> { this.UIOnContextMenu(e); }
|
|
12695
12668
|
this.UIElement.onmousemove=(e)=>{ this.UIOnMouseMove(e);}
|
|
@@ -12704,7 +12677,7 @@ this.UIElement.ondblclick=function(e){_this58.UIOnDblClick(e);};this.UIElement.o
|
|
|
12704
12677
|
*/};this.Draw=function(){if(this.UIElement.width<=0||this.UIElement.height<=0)return;this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
12705
12678
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12706
12679
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
12707
|
-
for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}if(this.GlobalOption.FlashBGCount>0){this.DelayDraw(500);}};this.DelayDraw=function(frequency){var
|
|
12680
|
+
for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}if(this.GlobalOption.FlashBGCount>0){this.DelayDraw(500);}};this.DelayDraw=function(frequency){var _this58=this;if(typeof this.FlashBGTimer=='number'){clearTimeout(this.FlashBGTimer);this.FlashBGTimer=null;}this.FlashBGTimer=setTimeout(function(){_this58.Draw();},frequency);};this.ClearData=function(){this.SourceData.Data=[];this.Data.Data=[];this.Data.Price=null;this.MapStockData=null;this.MapExePriceData=null;this.BorderData.MapData=null;};this.StopAutoUpdate=function(){this.CancelAutoUpdate();this.AutoUpdateEvent(false,'JSTReportChartContainer::StopAutoUpdate');if(!this.IsAutoUpdate)return;this.IsAutoUpdate=false;};//设置事件回调
|
|
12708
12681
|
//{event:事件id, callback:回调函数}
|
|
12709
12682
|
this.AddEventCallback=function(object){if(!object||!object.event||!object.callback)return;var data={Callback:object.callback,Source:object};this.mapEvent.set(object.event,data);};this.RemoveEventCallback=function(eventid){if(!this.mapEvent.has(eventid))return;this.mapEvent.delete(eventid);};this.GetEventCallback=function(id)//获取事件回调
|
|
12710
12683
|
{if(!this.mapEvent.has(id))return null;var item=this.mapEvent.get(id);return item;};this.OnSize=function(){if(!this.Frame)return;this.SetSizeChange(true);this.Draw();this.DelayUpdateStockData();};this.SetSizeChange=function(bChanged){for(var i=0;i<this.ChartPaint.length;++i){var chart=this.ChartPaint[i];if(chart)chart.SizeChange=bChanged;}};this.ChangeSymbol=function(symbol,option){this.CancelAutoUpdate();this.ClearData();this.Symbol=symbol;this.Name=symbol;if(option){if(option.Name)this.Name=option.Name;}this.RequestStockListData();};this.CancelAutoUpdate=function()//关闭停止更新
|
|
@@ -12714,10 +12687,10 @@ Explain:'T型报价列表数据',Self:this,PreventDefault:false};this.NetworkFil
|
|
|
12714
12687
|
}throw{Name:'JSTReportChartContainer::RequestStockListData',Error:'(T型报价列表数据)不提供内置测试数据'};};this.RecvStockListData=function(data){if(IFrameSplitOperator.IsNonEmptyArray(data.data)){this.MapExePriceData=new _map2.default();this.MapStockData=new _map2.default();//0=行权价格 1=左边期权代码 2=右侧期权代码 3=左侧期权名称 4=右侧期权名称
|
|
12715
12688
|
for(var i=0;i<data.data.length;++i){var item=data.data[i];var exePrice=item[0];var leftData=new HQTReportItem();leftData.Symbol=leftData.Name=item[1];if(item[3])leftData.Name=item[3];var rightData=new HQTReportItem();rightData.Symbol=rightData.Name=item[2];if(item[4])rightData.Name=item[4];this.MapStockData.set(leftData.Symbol,leftData);this.MapStockData.set(rightData.Symbol,rightData);var dataItem={ExePrice:exePrice,LeftData:leftData,RightData:rightData};this.MapExePriceData.set(dataItem.ExePrice,dataItem);this.SourceData.Data.push(exePrice);this.Data.Data.push(exePrice);}}if(IFrameSplitOperator.IsNumber(data.price)){this.Data.Price=data.price;}this.Draw();this.UpdateStockData();};this.GetExePriceData=function(exePrice){if(!this.MapExePriceData)return null;if(!this.MapExePriceData.has(exePrice))return null;return this.MapExePriceData.get(exePrice);};this.UpdateStockData=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;if(this.MapStockData.size<=0)return;var arySymbol=[];var _iteratorNormalCompletion22=true;var _didIteratorError22=false;var _iteratorError22=undefined;try{for(var _iterator22=(0,_getIterator3.default)(this.MapStockData),_step22;!(_iteratorNormalCompletion22=(_step22=_iterator22.next()).done);_iteratorNormalCompletion22=true){var mapItem=_step22.value;arySymbol.push(mapItem[0]);}}catch(err){_didIteratorError22=true;_iteratorError22=err;}finally{try{if(!_iteratorNormalCompletion22&&_iterator22.return){_iterator22.return();}}finally{if(_didIteratorError22){throw _iteratorError22;}}}if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return;this.RequestStockData(arySymbol);};//下载期权数据
|
|
12716
12689
|
this.RequestStockData=function(arySymbol){var self=this;if(this.NetworkFilter){var obj={Name:'JSTReportChartContainer::RequestStockData',//类名::函数名
|
|
12717
|
-
Explain:'T型报价列表期权数据',Request:{Data:{stocks:arySymbol,symbol:this.Symbol}},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){self.RecvStockData(data);self.AutoUpdate();});if(obj.PreventDefault==true)return;}throw{Name:'JSTReportChartContainer::RequestStockData',Error:'(T型报价列表期权数据)不提供内置测试数据'};};this.RecvStockData=function(data){var
|
|
12690
|
+
Explain:'T型报价列表期权数据',Request:{Data:{stocks:arySymbol,symbol:this.Symbol}},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){self.RecvStockData(data);self.AutoUpdate();});if(obj.PreventDefault==true)return;}throw{Name:'JSTReportChartContainer::RequestStockData',Error:'(T型报价列表期权数据)不提供内置测试数据'};};this.RecvStockData=function(data){var _this59=this;var setUpdateSymbol=new _set2.default();//更新的股票列表
|
|
12718
12691
|
if(IFrameSplitOperator.IsNonEmptyArray(data.data)){for(var i=0;i<data.data.length;++i){var item=data.data[i];var symbol=item[0];//0=证券代码;
|
|
12719
12692
|
if(!symbol)continue;var stock=null;if(this.MapStockData.has(symbol)){stock=this.MapStockData.get(symbol);}else{stock=new HQTReportItem();stock.Symbol=symbol;this.MapStockData.set(symbol,stock);}this.ReadStockJsonData(stock,item);if(!setUpdateSymbol.has(symbol))setUpdateSymbol.add(symbol);}}if(IFrameSplitOperator.IsNumber(data.price))this.Data.Price=data.price;//实时数据排序
|
|
12720
|
-
var chart=this.ChartPaint[0];if(chart&&(this.SortInfo.Sort==1||this.SortInfo.Sort==2)&&IFrameSplitOperator.IsNumber(this.SortInfo.Field)&&this.SortInfo.Field>=0){var column=chart.Column[this.SortInfo.Field];var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_TREPORT_LOCAL_SORT);if(event&&event.Callback){var sendData={Column:column,SortInfo:this.SortInfo,SymbolList:this.Data.Data,Result:null};event.Callback(event,sendData,this);if(Array.isArray(sendData.Result))this.Data.Data=sendData.Result;}else{this.Data.Data.sort(function(left,right){return
|
|
12693
|
+
var chart=this.ChartPaint[0];if(chart&&(this.SortInfo.Sort==1||this.SortInfo.Sort==2)&&IFrameSplitOperator.IsNumber(this.SortInfo.Field)&&this.SortInfo.Field>=0){var column=chart.Column[this.SortInfo.Field];var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_TREPORT_LOCAL_SORT);if(event&&event.Callback){var sendData={Column:column,SortInfo:this.SortInfo,SymbolList:this.Data.Data,Result:null};event.Callback(event,sendData,this);if(Array.isArray(sendData.Result))this.Data.Data=sendData.Result;}else{this.Data.Data.sort(function(left,right){return _this59.LocalSort(left,right,column,_this59.SortInfo.Sort,_this59.SortInfo.CellType);});}}this.CalculateData();this.Draw();};//计算统计数据
|
|
12721
12694
|
this.CalculateData=function(){if(!this.MapExePriceData||this.MapExePriceData.size<=0)return;var leftMaxPosition={Max:null,ExePrice:null,CellType:1};var rightMaxPosition={Max:null,ExePrice:null,CellType:2};this.BorderData.MapData=new _map2.default();var _iteratorNormalCompletion23=true;var _didIteratorError23=false;var _iteratorError23=undefined;try{for(var _iterator23=(0,_getIterator3.default)(this.MapExePriceData),_step23;!(_iteratorNormalCompletion23=(_step23=_iterator23.next()).done);_iteratorNormalCompletion23=true){var mapItem=_step23.value;var item=mapItem[1];var leftData=item.LeftData;var rightData=item.RightData;if(leftData&&IFrameSplitOperator.IsNumber(leftData.Position)){if(leftMaxPosition.Max==null||leftMaxPosition.Max<leftData.Position){leftMaxPosition.Max=leftData.Position;leftMaxPosition.ExePrice=mapItem[0];}}if(rightData&&IFrameSplitOperator.IsNumber(rightData.Position)){if(leftMaxPosition.Max==null||leftMaxPosition.Max<rightData.Position){rightMaxPosition.Max=rightData.Position;rightMaxPosition.ExePrice=mapItem[0];}}}}catch(err){_didIteratorError23=true;_iteratorError23=err;}finally{try{if(!_iteratorNormalCompletion23&&_iterator23.return){_iterator23.return();}}finally{if(_didIteratorError23){throw _iteratorError23;}}}var aryData=[null,null,null];if(leftMaxPosition.ExePrice)aryData[1]=leftMaxPosition;if(rightMaxPosition.ExePrice)aryData[2]=rightMaxPosition;this.BorderData.MapData.set(TREPORT_COLUMN_ID.POSITION_ID,{Data:aryData});};//读取单条股票json数据
|
|
12722
12695
|
this.ReadStockJsonData=function(stock,item){//0=证券代码 1=股票名称 2=昨收 3=开 4=高 5=低 6=收 7=成交量 8=成交金额, 9=买价 10=买量 11=卖价 12=卖量 13=均价 14=持仓 16=涨停价 17=跌停价
|
|
12723
12696
|
//21=涨幅% 22=涨跌 24=振幅%
|
|
@@ -12742,14 +12715,14 @@ if(item[33])stock.KLine=item[33];//33=K线
|
|
|
12742
12715
|
var frequency=this.AutoUpdateFrequency;if(marketStatus==1)//盘前
|
|
12743
12716
|
{this.AutoUpdateTimer=setTimeout(function(){self.AutoUpdate();},frequency);}else if(marketStatus==2)//盘中
|
|
12744
12717
|
{this.AutoUpdateTimer=setTimeout(function(){self.UpdateStockData();},frequency);}};//delay=是否延迟
|
|
12745
|
-
this.DelayUpdateStockData=function(){var
|
|
12718
|
+
this.DelayUpdateStockData=function(){var _this60=this;if(this.DelayUpdateTimer!=null){clearTimeout(this.DelayUpdateTimer);this.DelayUpdateTimer=null;}var frequency=this.DelayUpdateFrequency;this.DelayUpdateTimer=setTimeout(function(){_this60.UpdateStockData();},frequency);};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;var chart=this.GetTReportChart();if(chart)chart.OnDblClick(x,y,e);};this.UIOnMouseDown=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(!chart)return;var clickData=chart.OnMouseDown(x,y,e);if(!clickData)return;if(clickData.Type==2&&(e.button==0||e.button==2))//点击行
|
|
12746
12719
|
{if(clickData.Redraw==true)this.Draw();}else if(clickData.Type==3&&e.button==0)//表头
|
|
12747
12720
|
{this.OnClickHeader(clickData,e);}//document.onmousemove=(e)=>{ this.DocOnMouseMove(e); }
|
|
12748
12721
|
//document.onmouseup=(e)=> { this.DocOnMouseUp(e); }
|
|
12749
12722
|
};//点表头
|
|
12750
12723
|
this.OnClickHeader=function(clickData,e){var header=clickData.Header;if(header.Column&&header.Column.Sort==1){var data={CellType:header.CellType,ColumnIndex:header.ColumnIndex};this.SortHeader(header.Column,data);}};//排序
|
|
12751
|
-
this.SortHeader=function(column,sortData){var
|
|
12752
|
-
{this.Data.Data=[];for(var i=0;i<this.SourceData.Data.length;++i){this.Data.Data.push(this.SourceData.Data[i]);}}else{var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_TREPORT_LOCAL_SORT);if(event&&event.Callback){var sendData={Column:column,SortInfo:sortInfo,SymbolList:this.Data.Data,Result:null};event.Callback(event,sendData,this);if(Array.isArray(sendData.Result))this.Data.Data=sendData.Result;}else{this.Data.Data.sort(function(left,right){return
|
|
12724
|
+
this.SortHeader=function(column,sortData){var _this61=this;var sortInfo={Field:this.SortInfo.Field,Sort:this.SortInfo.Sort,CellType:this.SortInfo.CellType};var arySortType=column.SortType;if(sortInfo.Field!=sortData.ColumnIndex||sortInfo.CellType!=sortData.CellType){sortInfo.Field=sortData.ColumnIndex;sortInfo.CellType=sortData.CellType;sortInfo.Sort=arySortType[0];}else{if(arySortType.length==1){sortInfo.Sort=arySortType[0];}else{for(var i=0;i<arySortType.length;++i){if(sortInfo.Sort==arySortType[i]){sortInfo.Sort=arySortType[(i+1)%arySortType.length];break;}}}}if(sortInfo.Sort==0)//还原
|
|
12725
|
+
{this.Data.Data=[];for(var i=0;i<this.SourceData.Data.length;++i){this.Data.Data.push(this.SourceData.Data[i]);}}else{var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_TREPORT_LOCAL_SORT);if(event&&event.Callback){var sendData={Column:column,SortInfo:sortInfo,SymbolList:this.Data.Data,Result:null};event.Callback(event,sendData,this);if(Array.isArray(sendData.Result))this.Data.Data=sendData.Result;}else{this.Data.Data.sort(function(left,right){return _this61.LocalSort(left,right,column,sortInfo.Sort,sortInfo.CellType);});}}this.Data.YOffset=0;this.SortInfo.Field=sortInfo.Field;this.SortInfo.Sort=sortInfo.Sort;this.SortInfo.CellType=sortInfo.CellType;this.Draw();this.DelayUpdateStockData();};//本地排序
|
|
12753
12726
|
this.LocalSort=function(left,right,column,sortType,cellType){switch(column.Type){case TREPORT_COLUMN_ID.SYMBOL_ID:case TREPORT_COLUMN_ID.NAME_ID:return this.LocalStringSort(left,right,column,sortType,cellType);case TREPORT_COLUMN_ID.PRICE_ID:case TREPORT_COLUMN_ID.VOL_ID:case TREPORT_COLUMN_ID.UPDOWN_ID:case TREPORT_COLUMN_ID.BUY_PRICE_ID:case TREPORT_COLUMN_ID.SELL_PRICE_ID:case TREPORT_COLUMN_ID.AMOUNT_ID:case TREPORT_COLUMN_ID.BUY_VOL_ID:case TREPORT_COLUMN_ID.SELL_VOL_ID:case TREPORT_COLUMN_ID.YCLOSE_ID:case TREPORT_COLUMN_ID.OPEN_ID:case TREPORT_COLUMN_ID.HIGH_ID:case TREPORT_COLUMN_ID.LOW_ID:case TREPORT_COLUMN_ID.AVERAGE_PRICE_ID:case TREPORT_COLUMN_ID.EXE_PRICE_ID://行权价格
|
|
12754
12727
|
case TREPORT_COLUMN_ID.POSITION_ID://持仓量
|
|
12755
12728
|
case TREPORT_COLUMN_ID.AMPLITUDE_ID:case TREPORT_COLUMN_ID.INCREASE_ID:return this.LocalNumberSort(left,right,column,sortType,cellType);default:return 0;}};this.LocalNumberSort=function(left,right,column,sortType,cellType){var leftStock=this.GetExePriceData(left);var rightStock=this.GetExePriceData(right);var leftValue=-99999999999999,rightValue=-99999999999999;if(sortType==2)leftValue=rightValue=99999999999999;var filedName=MAP_TREPORT_COLUMN_FIELD.get(column.Type);if(cellType==0)//行权价格
|
|
@@ -12929,11 +12902,11 @@ this.MapSymbol.clear();this.Data.Data=[];this.Data.XOffset=0;this.Data.YOffset=0
|
|
|
12929
12902
|
}
|
|
12930
12903
|
this.ChartPaint[0].SelectedRow=0;
|
|
12931
12904
|
*/};//创建
|
|
12932
|
-
this.Create=function(option){var
|
|
12905
|
+
this.Create=function(option){var _this62=this;this.UIElement.JSChartContainer=this;//创建框架
|
|
12933
12906
|
this.Frame=new JSKeyboardFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;//创建表格
|
|
12934
|
-
var chart=new ChartSymbolList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.UIElement=this.UIElement;chart.GetEventCallback=function(id){return
|
|
12935
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
12936
|
-
this.UIElement.ondblclick=function(e){
|
|
12907
|
+
var chart=new ChartSymbolList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.UIElement=this.UIElement;chart.GetEventCallback=function(id){return _this62.GetEventCallback(id);};chart.GetStockDataCallback=function(symbol){return _this62.GetStockData(symbol);};chart.Data=this.Data;this.ChartPaint[0]=chart;if(option){}var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(option.KeyDown===false){bRegisterKeydown=false;JSConsole.Chart.Log('[JSKeyboardChartContainer::Create] not register keydown event.');}if(option.Wheel===false){bRegisterWheel=false;JSConsole.Chart.Log('[JSKeyboardChartContainer::Create] not register wheel event.');}}if(bRegisterKeydown)this.UIElement.addEventListener("keydown",function(e){_this62.OnKeyDown(e);},true);//键盘消息
|
|
12908
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this62.OnWheel(e);},true);//上下滚动消息
|
|
12909
|
+
this.UIElement.ondblclick=function(e){_this62.UIOnDblClick(e);};this.UIElement.onmousedown=function(e){_this62.UIOnMouseDown(e);};this.UIElement.oncontextmenu=function(e){_this62.UIOnContextMenu(e);};this.UIElement.onmousemove=function(e){_this62.UIOnMouseMove(e);};this.UIElement.onmouseout=function(e){_this62.UIOnMounseOut(e);};this.UIElement.onmouseleave=function(e){_this62.UIOnMouseleave(e);};};this.Draw=function(){if(this.UIElement.width<=0||this.UIElement.height<=0)return;this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
12937
12910
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12938
12911
|
this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
12939
12912
|
for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}};this.GetStockData=function(symbol){if(!this.MapSymbol.has(symbol))return null;return this.MapSymbol.get(symbol);};this.ResetStatus=function(){this.Data.XOffset=0;this.Data.YOffset=0;};this.ResetSelectStatus=function(){var chart=this.GetReportChart();if(chart){chart.SelectedRow=-1;chart.SelectedFixedRow=-1;}};//设置事件回调
|
|
@@ -12950,9 +12923,9 @@ var result=this.MoveSelectedRow(1);if(result){if(result.Redraw)this.Draw();}brea
|
|
|
12950
12923
|
if(this.MoveXOffset(-1))this.Draw();break;case 39://right
|
|
12951
12924
|
if(this.MoveXOffset(1))this.Draw();break;case 13://Enter
|
|
12952
12925
|
this.OnSelectedSymbol();break;}//不让滚动条滚动
|
|
12953
|
-
if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.OnSelectedSymbol=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return false;var chart=this.ChartPaint[0];if(!chart)return false;var data=chart.GetSelectedSymbol();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED);if(event&&event.Callback){event.Callback(event,{Data:data},this);}};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;var chart=this.ChartPaint[0];if(chart){if(chart.OnDblClick(x,y,e))this.OnSelectedSymbol();}};this.UIOnMouseDown=function(e){var
|
|
12926
|
+
if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.OnSelectedSymbol=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return false;var chart=this.ChartPaint[0];if(!chart)return false;var data=chart.GetSelectedSymbol();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED);if(event&&event.Callback){event.Callback(event,{Data:data},this);}};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;var chart=this.ChartPaint[0];if(chart){if(chart.OnDblClick(x,y,e))this.OnSelectedSymbol();}};this.UIOnMouseDown=function(e){var _this63=this;this.DragXScroll=null;this.DragMove={Click:{X:e.clientX,Y:e.clientY},Move:{X:e.clientX,Y:e.clientY},PreMove:{X:e.clientX,Y:e.clientY}};var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart){var clickData=chart.OnMouseDown(x,y,e);if(!clickData)return;//if (e.button!=0) return;
|
|
12954
12927
|
if(clickData.Type==2&&(e.button==0||e.button==2))//点击行
|
|
12955
|
-
{if(clickData.Redraw==true)this.Draw();}}document.onmousemove=function(e){
|
|
12928
|
+
{if(clickData.Redraw==true)this.Draw();}}document.onmousemove=function(e){_this63.DocOnMouseMove(e);};document.onmouseup=function(e){_this63.DocOnMouseUp(e);};};//去掉右键菜单
|
|
12956
12929
|
this.UIOnContextMenu=function(e){e.preventDefault();};this.UIOnMouseMove=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;};this.UIOnMounseOut=function(e){};this.UIOnMouseleave=function(e){};this.DocOnMouseMove=function(e){this.DragMove.PreMove.X=this.DragMove.Move.X;this.DragMove.PreMove.Y=this.DragMove.Move.Y;this.DragMove.Move.X=e.clientX;this.DragMove.Move.Y=e.clientX;//if (this.DragMove.Move.X!=this.DragMove.PreMove.X || this.DragMove.Move.Y!=this.DragMove.PreMove.Y)
|
|
12957
12930
|
// this.StopAutoDragScrollTimer();
|
|
12958
12931
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;//JSConsole.Chart.Log(`[JSReportChartContainer::DocOnMouseMove] x=${x}, y=${y}`);
|
|
@@ -13065,12 +13038,12 @@ this.HQChart=null;this.ChartDestory=function()//销毁
|
|
|
13065
13038
|
//{event:事件id, callback:回调函数}
|
|
13066
13039
|
this.AddEventCallback=function(object){if(!object||!object.event||!object.callback)return;var data={Callback:object.callback,Source:object};this.mapEvent.set(object.event,data);};this.RemoveEventCallback=function(eventid){if(!this.mapEvent.has(eventid))return;this.mapEvent.delete(eventid);};this.GetEventCallback=function(id)//获取事件回调
|
|
13067
13040
|
{if(!this.mapEvent.has(id))return null;var item=this.mapEvent.get(id);return item;};//创建
|
|
13068
|
-
this.Create=function(option){var
|
|
13041
|
+
this.Create=function(option){var _this64=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
13069
13042
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.IsEnableSplash=true;//创建框架
|
|
13070
13043
|
this.Frame=new JSScrollBarFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartSplashPaint.Frame=this.Frame;//背景
|
|
13071
|
-
var chart=new ScrollBarBGChart();chart.ChartFrame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return
|
|
13072
|
-
var chart=new SliderChart();chart.ChartFrame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.OffsetData=this.XOffsetData;chart.GetEventCallback=function(id){return
|
|
13073
|
-
this.UIElement.onmousedown=function(e){
|
|
13044
|
+
var chart=new ScrollBarBGChart();chart.ChartFrame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return _this64.GetEventCallback(id);};this.ChartPaint.push(chart);//创建滑块
|
|
13045
|
+
var chart=new SliderChart();chart.ChartFrame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.OffsetData=this.XOffsetData;chart.GetEventCallback=function(id){return _this64.GetEventCallback(id);};this.SliderChart=chart;this.ChartPaint.push(chart);//this.UIElement.ondblclick=(e)=>{ this.UIOnDblClick(e); }
|
|
13046
|
+
this.UIElement.onmousedown=function(e){_this64.UIOnMouseDown(e);};this.UIElement.oncontextmenu=function(e){_this64.UIOnContextMenu(e);};this.UIElement.onmousemove=function(e){_this64.UIOnMouseMove(e);};this.UIElement.onmouseout=function(e){_this64.UIOnMounseOut(e);};this.UIElement.onmouseleave=function(e){_this64.UIOnMouseleave(e);};//手机拖拽
|
|
13074
13047
|
//this.UIElement.ontouchstart=(e)=> { this.OnTouchStart(e); }
|
|
13075
13048
|
//this.UIElement.ontouchmove=(e)=> {this.OnTouchMove(e); }
|
|
13076
13049
|
//this.UIElement.ontouchend=(e)=> {this.OnTouchEnd(e); }
|
|
@@ -13078,13 +13051,13 @@ this.UIElement.onmousedown=function(e){_this65.UIOnMouseDown(e);};this.UIElement
|
|
|
13078
13051
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
13079
13052
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
13080
13053
|
for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}};this.OnSize=function(){if(!this.Frame)return;this.SetSizeChange(true);this.Draw();};this.SetSizeChange=function(bChanged){for(var i=0;i<this.ChartPaint.length;++i){var chart=this.ChartPaint[i];if(chart)chart.SizeChange=bChanged;}};this.UpdateFrameMaxMin=function(){var max=null,min=null;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.GetMaxMin)continue;var range=item.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;if(max==null||max<range.Max)max=range.Max;if(min==null||min>range.Min)min=range.Min;}if(IFrameSplitOperator.IsNumber(max)&&IFrameSplitOperator.IsNumber(min)){this.Frame.HorizontalMax=max;this.Frame.HorizontalMin=min;}};//未启动
|
|
13081
|
-
this.UIOnDblClick=function(e){};this.CancelDragTimer=function(){if(this.DragTimer){clearTimeout(this.DragTimer);this.DragTimer=null;}};this.UIOnMouseDown=function(e){var
|
|
13082
|
-
}document.onmousemove=function(e){
|
|
13054
|
+
this.UIOnDblClick=function(e){};this.CancelDragTimer=function(){if(this.DragTimer){clearTimeout(this.DragTimer);this.DragTimer=null;}};this.UIOnMouseDown=function(e){var _this65=this;this.CancelDragTimer();this.DragSlider=null;this.DragMove={Click:{X:e.clientX,Y:e.clientY},Move:{X:e.clientX,Y:e.clientY},PreMove:{X:e.clientX,Y:e.clientY}};var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;if(this.SliderChart){var clickData=this.SliderChart.PtInChart(x,y);if(!clickData)return;this.DragSlider={Click:{X:e.clientX,Y:e.clientY},LastMove:{X:e.clientX,Y:e.clientY},Data:clickData};this.DragSlider.DrawCount=0;//重绘次数
|
|
13055
|
+
}document.onmousemove=function(e){_this65.DocOnMouseMove(e);};document.onmouseup=function(e){_this65.DocOnMouseUp(e);};};//去掉右键菜单
|
|
13083
13056
|
this.UIOnContextMenu=function(e){e.preventDefault();};this.UIOnMouseMove=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;if(this.DragSlider)return;var mouseStatus=mouseStatus={Cursor:"default"};;//鼠标状态
|
|
13084
|
-
var item=this.SliderChart.PtInChart(x,y);if(item){switch(item.Data.Type){case 0:mouseStatus={Cursor:"grab",Name:"SliderChart"};break;case 1:case 2:mouseStatus={Cursor:"col-resize",Name:"SliderChart"};break;}}if(mouseStatus)this.UIElement.style.cursor=mouseStatus.Cursor;};this.UIOnMounseOut=function(e){};this.UIOnMouseleave=function(e){};this.DocOnMouseMove=function(e){var
|
|
13057
|
+
var item=this.SliderChart.PtInChart(x,y);if(item){switch(item.Data.Type){case 0:mouseStatus={Cursor:"grab",Name:"SliderChart"};break;case 1:case 2:mouseStatus={Cursor:"col-resize",Name:"SliderChart"};break;}}if(mouseStatus)this.UIElement.style.cursor=mouseStatus.Cursor;};this.UIOnMounseOut=function(e){};this.UIOnMouseleave=function(e){};this.DocOnMouseMove=function(e){var _this66=this;this.DragMove.PreMove.X=this.DragMove.Move.X;this.DragMove.PreMove.Y=this.DragMove.Move.Y;this.DragMove.Move.X=e.clientX;this.DragMove.Move.Y=e.clientX;if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;JSConsole.Chart.Log('[JSScrollBarChartContainer::DocOnMouseMove] x='+x+', y='+y);if(this.DragSlider){var drag=this.DragSlider;var moveSetp=(e.clientX-drag.LastMove.X)*pixelTatio;if(Math.abs(moveSetp)<1)return;var pageRange=this.GetPageRange();var left=this.Frame.ChartBorder.GetLeft();var right=this.Frame.ChartBorder.GetRight();this.SliderChart.DragMode=true;var type=drag.Data.Data.Type;var xStart=this.SliderChart.XStart+moveSetp;var xEnd=this.SliderChart.XEnd+moveSetp;if(type==0)//整体移动
|
|
13085
13058
|
{if(xStart<left)//第1页
|
|
13086
13059
|
{xStart=pageRange.First.XStart;xEnd=pageRange.First.XEnd;}else if(xEnd>=right){xStart=pageRange.Last.XStart;xEnd=pageRange.Last.XEnd;}this.SliderChart.XStart=xStart;this.SliderChart.XEnd=xEnd;}else if(type==1)//左移动
|
|
13087
|
-
{if(xStart<=left){xStart=pageRange.First.XStart;}else if(xStart>=right){xStart=pageRange.Last.XEnd;}this.SliderChart.XStart=xStart;}else if(type==2){if(xEnd>=right){xEnd=pageRange.Last.XEnd;}else if(xEnd<=left){xEnd=pageRange.First.XStart;}this.SliderChart.XEnd=xEnd;}drag.UpdateData={XStart:xStart,XEnd:xEnd,Type:type};drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;if(drag.DrawCount==0){this.DragUpdate(drag);}else{this.DragTimer=setTimeout(function(){
|
|
13060
|
+
{if(xStart<=left){xStart=pageRange.First.XStart;}else if(xStart>=right){xStart=pageRange.Last.XEnd;}this.SliderChart.XStart=xStart;}else if(type==2){if(xEnd>=right){xEnd=pageRange.Last.XEnd;}else if(xEnd<=left){xEnd=pageRange.First.XStart;}this.SliderChart.XEnd=xEnd;}drag.UpdateData={XStart:xStart,XEnd:xEnd,Type:type};drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;if(drag.DrawCount==0){this.DragUpdate(drag);}else{this.DragTimer=setTimeout(function(){_this66.DragUpdate(_this66.DragSlider);},this.DelayDragFrequency);}}};this.DocOnMouseUp=function(e){//清空事件
|
|
13088
13061
|
document.onmousemove=null;document.onmouseup=null;this.CancelDragTimer();var dragSlider=this.DragSlider;this.DragMove=null;this.DragSlider=null;this.SliderChart.DragMode=false;this.DragUpdate(dragSlider);};this.DragUpdate=function(dragData){if(!dragData||!dragData.UpdateData)return;this.UpdateXDataOffset(dragData.UpdateData);this.Draw();++dragData.DrawCount;};this.Reset=function(option){this.SourceData=null;this.XOffsetData.Start=-1;this.XOffsetData.End=-1;this.XOffsetData.Count=0;this.Frame.Data=null;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];item.Data=null;}if(this.ChartSplashPaint)this.ChartSplashPaint.IsEnableSplash=true;if(option.Draw)this.Draw();};//外部更新滑块 obj={ Start: , End: }
|
|
13089
13062
|
this.UpdateSlider=function(obj){if(this.SliderChart.DragMode)return;var bSizeChange=false;if((this.AutoMargin.Left||this.AutoMargin.Right)&&obj.Border){if(this.AutoMargin.Left){if(this.Frame.ChartBorder.Left!=obj.Border.Left)bSizeChange=true;}if(this.AutoMargin.Right){if(this.Frame.ChartBorder.Right!=obj.Border.Right)bSizeChange=true;}}var data=obj.Data;if(this.XOffsetData.Start==obj.Start&&this.XOffsetData.End==obj.End&&this.SourceData==data&&!bSizeChange)return;this.SourceData=data;var count=data.Data.length;if(IFrameSplitOperator.IsNumber(obj.RightSpaceCount))count+=obj.RightSpaceCount;this.Frame.XPointCount=count;this.Frame.Data=data;this.XOffsetData.Count=count;this.XOffsetData.Start=obj.Start;this.XOffsetData.End=obj.End;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];item.Data=data;}if(this.AutoMargin.Left&&obj.Border){if(IFrameSplitOperator.IsNumber(obj.Border.Left))this.Frame.ChartBorder.Left=obj.Border.Left;}if(this.AutoMargin.Right&&obj.Border){if(IFrameSplitOperator.IsNumber(obj.Border.Right))this.Frame.ChartBorder.Right=obj.Border.Right;}this.UpdateFrameMaxMin();if(this.ChartSplashPaint)this.ChartSplashPaint.IsEnableSplash=false;if(obj.Draw)this.Draw();};//移动滑块
|
|
13090
13063
|
this.UpdateXDataOffset=function(obj){if(obj.Type==0){var start=this.Frame.GetXData(obj.XStart);start=parseInt(start);var moveSetp=start-this.XOffsetData.Start;this.XOffsetData.Start=start;this.XOffsetData.End+=moveSetp;}else if(obj.Type==1){var start=this.Frame.GetXData(obj.XStart);start=parseInt(start);this.XOffsetData.Start=start;}else if(obj.Type==2){var end=this.Frame.GetXData(obj.XEnd);end=parseInt(end);this.XOffsetData.End=end;}var endItem=this.SourceData.Data[this.XOffsetData.End];var startItem=this.SourceData.Data[this.XOffsetData.Start];var sendData={Type:obj.Type,Count:this.XOffsetData.Count};if(this.XOffsetData.End>this.XOffsetData.Start){sendData.Start={Index:this.XOffsetData.Start,Item:startItem};sendData.End={Index:this.XOffsetData.End,Item:endItem};}else{sendData.Start={Index:this.XOffsetData.End,Item:endItem};sendData.End={Index:this.XOffsetData.Start,Item:startItem};}if(this.HQChart&&this.HQChart.JSChartContainer){var internalChart=this.HQChart.JSChartContainer;if(internalChart.ChartOperator){var obj={ID:JSCHART_OPERATOR_ID.OP_SCROOLBAR_SLIDER_CHANGED,Start:sendData.Start,End:sendData.End,Type:sendData.Type};internalChart.ChartOperator(obj);}}var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SCROLLBAR_SLIDER_CHANGED);if(event){event.Callback(event,sendData,this);}};this.ReloadResource=function(option){this.Frame.ReloadResource(option);for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.ReloadResource)item.ReloadResource(option);}if(option&&option.Redraw){this.SetSizeChange(true);this.Draw();}};this.GetPageRange=function(){var result={};var showCount=Math.abs(this.XOffsetData.Start-this.XOffsetData.End);result.ShowCount=showCount;//第1页
|
|
@@ -13155,15 +13128,15 @@ this.SelectedClassName="UMyChart_MenuItem_Tr_Selected";this.AryTDClassName=["UMy
|
|
|
13155
13128
|
"UMyChart_MenuItem_Td_Content",//文字
|
|
13156
13129
|
"UMyChart_MenuItem_Td_Shortcut",//快捷方式
|
|
13157
13130
|
"UMyChart_MenuItem_Td_Arrow"//箭头
|
|
13158
|
-
];this.Inital=function(){var
|
|
13131
|
+
];this.Inital=function(){var _this67=this;window.addEventListener('mousedown',function(e){_this67.OnWindowMouseDown(e);});};//创建菜单
|
|
13159
13132
|
this.CreatePopMenu=function(data){this.Clear();if(!IFrameSplitOperator.IsNonEmptyArray(data.Menu))return;var root=document.createElement("div");root.className="UMyChart_PopMenu";var table=document.createElement("table");table.className="UMyChart_PopMenu_Table";root.appendChild(table);var tbody=document.createElement("tbody");tbody.className="UMyChart_PopMenu_Tbody";table.appendChild(tbody);var rootData={Root:root,TBody:tbody,Table:table};for(var i=0;i<data.Menu.length;++i){var item=data.Menu[i];if(item.Name==JSPopMenu.SEPARATOR_LINE_NAME){var trSeparator=this.CreateSeparatorTr();if(trSeparator)tbody.appendChild(trSeparator);continue;}var trDom=this.CreateMenu(rootData,item);tbody.appendChild(trDom);}document.body.appendChild(root);this.RootDOM=root;this.TBodyDOM=tbody;if(IFrameSplitOperator.IsNumber(data.Position))this.Data.Position=data.Position;if(data.ClickCallback)this.ClickCallback=data.ClickCallback;};//清除菜单
|
|
13160
|
-
this.Clear=function(){this.Data.Menu=[];this.Data.Position=JSPopMenu.POSITION_ID.RIGHT_MENU_ID;this.ClickCallback=null;if(!this.RootDOM)return;document.body.removeChild(this.RootDOM);this.RootDOM=null;this.TBodyDOM=null;for(var i=0;i<this.ArySubRootDOM.length;++i){document.body.removeChild(this.ArySubRootDOM[i]);}this.ArySubRootDOM=[];};this.CreateMenu=function(parentItem,item){var
|
|
13133
|
+
this.Clear=function(){this.Data.Menu=[];this.Data.Position=JSPopMenu.POSITION_ID.RIGHT_MENU_ID;this.ClickCallback=null;if(!this.RootDOM)return;document.body.removeChild(this.RootDOM);this.RootDOM=null;this.TBodyDOM=null;for(var i=0;i<this.ArySubRootDOM.length;++i){document.body.removeChild(this.ArySubRootDOM[i]);}this.ArySubRootDOM=[];};this.CreateMenu=function(parentItem,item){var _this68=this;var trDom=document.createElement("tr");trDom.className='UMyChart_MenuItem_Tr';var prtTdDom=null;for(var i=0;i<this.AryTDClassName.length;++i){var tdDom=document.createElement("td");tdDom.className=this.AryTDClassName[i];if(i==0)//图标
|
|
13161
13134
|
{if(item.Checked){var spanDom=document.createElement("span");spanDom.className=this.CheckedClassName;spanDom.style["font-size"]="10px";tdDom.appendChild(spanDom);}}else if(i==1)//内容
|
|
13162
13135
|
{tdDom.innerText=item.Name;}else if(i==2)//快捷方式
|
|
13163
13136
|
{}else if(i==3)//箭头
|
|
13164
13137
|
{if(IFrameSplitOperator.IsNonEmptyArray(item.SubMenu)){var spanDom=document.createElement("span");spanDom.className=this.RightArrowClassName;spanDom.style["font-size"]="10px";tdDom.appendChild(spanDom);}}trDom.appendChild(tdDom);}if(IFrameSplitOperator.IsNonEmptyArray(item.SubMenu))//子菜单
|
|
13165
|
-
{var subRoot=document.createElement("div");subRoot.className="UMyChart_PopSubMenu";var subTable=document.createElement("table");subTable.className="UMyChart_PopMenu_Table";subRoot.appendChild(subTable);var subTbody=document.createElement("tbody");subTbody.className="UMyChart_PopMenu_TBody";subTable.appendChild(subTbody);var subRootData={Root:subRoot,TBody:subTbody,Table:subTable};var preTrDom=null;for(var i=0;i<item.SubMenu.length;++i){var subItem=item.SubMenu[i];if(subItem.Name==JSPopMenu.SEPARATOR_LINE_NAME){var trSeparator=this.CreateSeparatorTr();if(trSeparator)subTbody.appendChild(trSeparator);continue;}var subTrDom=this.CreateMenu(subRootData,subItem);preTrDom=subTrDom;subTbody.appendChild(subTrDom);}trDom.onmouseover=function(e){
|
|
13166
|
-
trDom.onmouseover=function(e){
|
|
13138
|
+
{var subRoot=document.createElement("div");subRoot.className="UMyChart_PopSubMenu";var subTable=document.createElement("table");subTable.className="UMyChart_PopMenu_Table";subRoot.appendChild(subTable);var subTbody=document.createElement("tbody");subTbody.className="UMyChart_PopMenu_TBody";subTable.appendChild(subTbody);var subRootData={Root:subRoot,TBody:subTbody,Table:subTable};var preTrDom=null;for(var i=0;i<item.SubMenu.length;++i){var subItem=item.SubMenu[i];if(subItem.Name==JSPopMenu.SEPARATOR_LINE_NAME){var trSeparator=this.CreateSeparatorTr();if(trSeparator)subTbody.appendChild(trSeparator);continue;}var subTrDom=this.CreateMenu(subRootData,subItem);preTrDom=subTrDom;subTbody.appendChild(subTrDom);}trDom.onmouseover=function(e){_this68.OnMouseOver(e,parentItem,trDom,subRoot);};document.body.appendChild(subRoot);this.ArySubRootDOM.push(subRoot);}else{trDom.onmousedown=function(e){_this68.OnClickMenu(e,item,false);};//菜单点击
|
|
13139
|
+
trDom.onmouseover=function(e){_this68.OnMouseOver(e,parentItem);};}return trDom;};this.CreateSeparatorTr=function(){var trSeparator=document.createElement("tr");trSeparator.className='UMyChart_MenuItem_Tr_Separator';var tdDom=document.createElement("td");tdDom.className="UMyChart_MenuItem_Td_Status_Separator";trSeparator.appendChild(tdDom);var tdDom=document.createElement("td");tdDom.className="UMyChart_MenuItem_Td_Separator";trSeparator.appendChild(tdDom);var tdDom=document.createElement("td");tdDom.className="UMyChart_MenuItem_Td_Separator";trSeparator.appendChild(tdDom);var tdDom=document.createElement("td");tdDom.className="UMyChart_MenuItem_Td_Separator";trSeparator.appendChild(tdDom);return trSeparator;};//弹tab菜单
|
|
13167
13140
|
this.PopupMenuByTab=function(rtTab){if(!this.RootDOM)return;if(!rtTab)return;var xLeft=rtTab.Left;var yTop=rtTab.Top-this.RootDOM.offsetHeight;this.RootDOM.style.visibility='visible';this.RootDOM.style.top=yTop+"px";this.RootDOM.style.left=xLeft+"px";};//弹右键菜单
|
|
13168
13141
|
this.PopupMenuByRight=function(x,y){if(!this.RootDOM)return;if(!IFrameSplitOperator.IsNumber(x)||!IFrameSplitOperator.IsNumber(y))return;//菜单在当前屏幕无法显示需要调整
|
|
13169
13142
|
var menuHeight=this.RootDOM.offsetHeight;var yMenuBottom=y+menuHeight;var yBottom=window.innerHeight-15;if(yMenuBottom>yBottom)y=yBottom-menuHeight;var menuWidth=this.RootDOM.offsetWidth;var yMenuRight=x+menuWidth;var yRight=window.innerWidth-15;if(yMenuRight>yRight)x=yRight-menuWidth;this.RootDOM.style.visibility='visible';this.RootDOM.style.top=y+"px";this.RootDOM.style.left=x+"px";};//下拉菜单
|
|
@@ -13182,19 +13155,39 @@ var yBottom=window.innerHeight-15;var yRight=window.innerWidth-15;var menuHeight
|
|
|
13182
13155
|
*/subMenu.style.visibility="visible";}parentItem.PopMenu=subMenu;parentItem.PopRow=trDom;}};this.OnWindowMouseDown=function(e){if(!this.RootDOM)return;console.log("[JSPopMenu::OnWindowMouseDown] e=",e);this.Clear();};}JSPopMenu.POSITION_ID={};JSPopMenu.POSITION_ID.RIGHT_MENU_ID=0;JSPopMenu.POSITION_ID.TAB_MENU_ID=1;JSPopMenu.POSITION_ID.DROPDOWN_MENU_ID=2;//左对齐下拉
|
|
13183
13156
|
JSPopMenu.POSITION_ID.DROPDOWN_RIGHT_MENU_ID=3;//右对齐下拉
|
|
13184
13157
|
JSPopMenu.SEPARATOR_LINE_NAME="MENU_SEPARATOR";//分割线
|
|
13185
|
-
|
|
13158
|
+
/*
|
|
13159
|
+
Copyright (c) 2018 jones
|
|
13160
|
+
|
|
13161
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
13162
|
+
|
|
13163
|
+
开源项目 https://github.com/jones2000/HQChart
|
|
13164
|
+
|
|
13165
|
+
jones_2000@163.com
|
|
13166
|
+
|
|
13167
|
+
内置画图工具 设置框
|
|
13168
|
+
*/JS_DRAWTOOL_MENU_ID={CMD_SELECTED_ID:1,CMD_CHANGE_LINE_COLOR_ID:2,CMD_DELETE_ALL_RAW_CHART_ID:3};function JSDialogDrawTool(){this.AryChartGroup=[{Title:"线段",AryChart:[{Title:'线段',ClassName:'hqchart_drawtool icon-draw_line',Type:0,Data:{ID:"线段"}},{Title:'射线',ClassName:'hqchart_drawtool icon-draw_rays',Type:0,Data:{ID:"射线"}},{Title:'标价线',ClassName:'hqchart_drawtool icon-price_line',Type:0,Data:{ID:"标价线"}},{Title:'垂直线',ClassName:'hqchart_drawtool icon-vertical_line',Type:0,Data:{ID:"垂直线"}},{Title:'箭头',ClassName:'hqchart_drawtool icon-draw_rays',Type:0,Data:{ID:"箭头"}},{Title:'趋势线',ClassName:'hqchart_drawtool icon-draw_trendline',Type:0,Data:{ID:"趋势线"}},{Title:'水平线',ClassName:'hqchart_drawtool icon-draw_hline',Type:0,Data:{ID:"水平线"}},{Title:'涂鸦线段',ClassName:'hqchart_drawtool icon-draw_line',Type:0,Data:{ID:"涂鸦线段"}}]},{Title:"通道",AryChart:[{Title:'平行线',ClassName:'hqchart_drawtool icon-draw_parallel_lines',Type:0,Data:{ID:"平行线"}},{Title:'水平线段',ClassName:'hqchart_drawtool icon-draw_hlinesegment',Type:0,Data:{ID:"水平线段"}},{Title:'平行射线',ClassName:'hqchart_drawtool icon-draw_p_rays_lines',Type:0,Data:{ID:"平行射线"}},{Title:'平行通道',ClassName:'hqchart_drawtool icon-draw_parallelchannel',Type:0,Data:{ID:"平行通道"}},{Title:'价格通道线',ClassName:'hqchart_drawtool icon-draw_pricechannel',Type:0,Data:{ID:"价格通道线"}},{Title:'箱型线',ClassName:'iconfont icon-draw_box',Type:0,Data:{ID:"箱型线"}},{Title:"不相交通道",ClassName:"hqchart_drawtool icon-buxiangjiaojiao",Type:0,Data:{ID:"DisjointChannel"}},{Title:"平滑顶/底",ClassName:"hqchart_drawtool icon-tubiao_buxiangjiaotongdao",Type:0,Data:{ID:"FlatTop"}}]},{Title:"多边形",AryChart:[{Title:'圆弧线',ClassName:'hqchart_drawtool icon-draw_arc',Type:0,Data:{ID:"圆弧线"}},{Title:'矩形',ClassName:'hqchart_drawtool icon-rectangle',Type:0,Data:{ID:"矩形"}},{Title:'平行四边形',ClassName:'hqchart_drawtool icon-draw_quadrangle',Type:0,Data:{ID:"平行四边形"}},{Title:'三角形',ClassName:'hqchart_drawtool icon-draw_triangle',Type:0,Data:{ID:"三角形"}},{Title:'圆',ClassName:'hqchart_drawtool icon-draw_circle',Type:0,Data:{ID:"圆"}},{Title:'对称角度',ClassName:'hqchart_drawtool icon-draw_symangle',Type:0,Data:{ID:"对称角度"}}]},{Title:"波浪线",AryChart:[{Title:'M头W底',ClassName:'hqchart_drawtool icon-draw_wavemw',Type:0,Data:{ID:"M头W底"}},{Title:'头肩型',ClassName:'hqchart_drawtool icon-draw_head_shoulders_bt',Type:0,Data:{ID:"头肩型"}},{Title:'波浪尺',ClassName:'hqchart_drawtool icon-waveruler',Type:0,Data:{ID:"波浪尺"}},{Title:'AB波浪尺',ClassName:'hqchart_drawtool icon-waveruler',Type:0,Data:{ID:"AB波浪尺"}}]},{Title:"测量工具",AryChart:[{Title:'价格范围',ClassName:'hqchart_drawtool icon-shijianfanwei',Type:0,Data:{ID:"PriceRange"}},{Title:'时间范围',ClassName:'hqchart_drawtool icon-jiagefanwei',Type:0,Data:{ID:"DateRange"}}]},{Title:"文字",AryChart:[{Title:'价格标签',ClassName:'hqchart_drawtool icon-Tooltip',Type:0,Data:{ID:"PriceLabel"}},{Title:'价格注释',ClassName:'hqchart_drawtool icon-tooltiptext',Type:0,Data:{ID:"PriceNote"}},{Title:'向上箭头',ClassName:'iconfont icon-arrow_up',Type:0,Data:{ID:"icon-arrow_up"}},{Title:'向下箭头',ClassName:'iconfont icon-arrow_down',Type:0,Data:{ID:"icon-arrow_down"}},{Title:'向左箭头',ClassName:'iconfont icon-arrow_left',Type:0,Data:{ID:"icon-arrow_left"}},{Title:'向右箭头',ClassName:'iconfont icon-arrow_right',Type:0,Data:{ID:"icon-arrow_right"}}]}];this.ToolConfig={Title:"工具",AryTool:[{Title:"选中",ClassName:'hqchart_drawtool icon-arrow',Type:1,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_SELECTED_ID}},{Title:'尺子',ClassName:'hqchart_drawtool icon-ruler',Type:0,Data:{ID:"尺子"}},{Title:"点击切换颜色",ClassName:'hqchart_drawtool icon-fangkuai',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID}},{Title:"删除所有画线",ClassName:'hqchart_drawtool icon-recycle_bin',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_DELETE_ALL_RAW_CHART_ID}}]};this.DivDialog=null;this.AryDivChart=[];this.HQChart=null;this.LineColor='rgb(255,140,0)';this.LineColorIndex=0;this.RandomLineColor=["rgb(255,69,0)","rgb(0,191,255)","rgb(255,0,255)","rgb(255,105,180)"];this.LineWidth=1*GetDevicePixelRatio();this.ColumnCount=4;this.DragTitle=null;this.Inital=function(hqchart){this.LineColor=g_JSChartResource.DrawPicture.LineColor[0];this.RandomLineColor.splice(0,0,this.LineColor);this.HQChart=hqchart;};this.Create=function(){var _this69=this;var divDom=document.createElement("div");divDom.className='UMyChart_DrawTool_Dialog_Div';var divTitle=document.createElement("div");divTitle.className='UMyChart_DrawTool_Title_Div';divTitle.innerText="画图工具";divTitle.onmousedown=function(e){_this69.OnMouseDownTitle(e);};var divClose=document.createElement("div");divClose.className='UMyChart_DrawTool_Close_Div';divClose.innerText="x";divClose.onmousedown=function(e){_this69.Close(e);};divTitle.appendChild(divClose);divDom.appendChild(divTitle);var table=document.createElement("table");table.className="UMyChart_DrawTool_Table";divDom.appendChild(table);var tbody=document.createElement("tbody");tbody.className="UMyChart_DrawTool_Tbody";table.appendChild(tbody);for(var i=0;i<this.AryChartGroup.length;++i){var item=this.AryChartGroup[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.AryChart))continue;this.CreateChartGroupItem(item,tbody);var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Group_End_Tr';tbody.appendChild(trDom);}//工具栏
|
|
13169
|
+
this.CreateToolGroup(tbody);this.DivDialog=divDom;document.body.appendChild(divDom);};this.Destroy=function(){this.AryDivChart=[];document.body.remove(this.DivDialog);this.DivDialog=null;};this.CreateChartGroupItem=function(groupItem,tbody){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Group_Tr';tbody.appendChild(trDom);var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Group_Td";tdDom.innerText=groupItem.Title;tdDom.colSpan=this.ColumnCount;trDom.appendChild(tdDom);var chartCount=groupItem.AryChart.length;for(var i=0,j=0;i<chartCount;){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Tr';for(j=0;j<this.ColumnCount&&i<chartCount;++j,++i){var item=groupItem.AryChart[i];this.CreateChartItem(item,trDom);}tbody.appendChild(trDom);}};this.CreateChartItem=function(item,trDom){var _this70=this;var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Td";tdDom.title=item.Title;trDom.appendChild(tdDom);var spanDom=document.createElement("span");spanDom.className=item.ClassName;spanDom.classList.add("UMyChart_DrawTool_Span");tdDom.appendChild(spanDom);var data={Item:item,TD:tdDom,Span:spanDom};tdDom.onmousedown=function(e){_this70.OnClickItem(e,data);};//点击
|
|
13170
|
+
this.AryDivChart.push(data);};this.OnClickItem=function(e,data){console.log('[JSDialogDrawTool::OnClickChartItem] ',data);if(!data.Item||!data.Item.Data)return;var type=data.Item.Type;var id=data.Item.Data.ID;if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID){this.OnChangeLineColor(data);}else if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_DELETE_ALL_RAW_CHART_ID){this.DeleteAllChart();}else if(type==1&&id==JS_DRAWTOOL_MENU_ID.CMD_SELECTED_ID){this.ClearAllSelectedChart();this.ClearCurrnetDrawPicture();}else if(type==0){this.ClearAllSelectedChart();data.Span.classList.add("UMyChart_DrawTool_Span_Selected");this.CreateDrawPicture(data);}};//清空选中状态
|
|
13171
|
+
this.ClearAllSelectedChart=function(){for(var i=0;i<this.AryDivChart.length;++i){var item=this.AryDivChart[i];item.Span.classList.remove("UMyChart_DrawTool_Span_Selected");}};this.CreateToolGroup=function(tbody){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Group_Tr';tbody.appendChild(trDom);var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Group_Td";tdDom.innerText=this.ToolConfig.Title;tdDom.colSpan=this.ColumnCount;trDom.appendChild(tdDom);var chartCount=this.ToolConfig.AryTool.length;for(var i=0,j=0;i<chartCount;){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Tr';for(j=0;j<this.ColumnCount&&i<chartCount;++j,++i){var item=this.ToolConfig.AryTool[i];this.CreateToolItem(item,trDom);}tbody.appendChild(trDom);}};this.CreateToolItem=function(item,trDom){var _this71=this;var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Td";tdDom.title=item.Title;trDom.appendChild(tdDom);var spanDom=document.createElement("span");spanDom.className=item.ClassName;spanDom.classList.add("UMyChart_DrawTool_Span");tdDom.appendChild(spanDom);var data={Item:item,TD:tdDom,Span:spanDom};if(item.Type==2&&item.Data.ID==JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID)//颜色
|
|
13172
|
+
{spanDom.style['color']=this.LineColor;}tdDom.onmousedown=function(e){_this71.OnClickItem(e,data);};//点击
|
|
13173
|
+
this.AryDivChart.push(data);};this.OnChangeLineColor=function(data){++this.LineColorIndex;var index=this.LineColorIndex%this.RandomLineColor.length;this.LineColor=this.RandomLineColor[index];data.Span.style['color']=this.LineColor;};//清空所有画图工具
|
|
13174
|
+
this.DeleteAllChart=function(){if(!this.HQChart)return;this.HQChart.ClearChartDrawPicture();};this.CreateDrawPicture=function(data){var _this72=this;if(!this.HQChart)return null;var option={LineColor:this.LineColor,//线段颜色
|
|
13175
|
+
LineWidth:this.LineWidth//线段宽度
|
|
13176
|
+
//PointColor:'rgba(255,130,71,0.5)' //点颜色
|
|
13177
|
+
};var name=data.Item.Data.ID;if(["icon-arrow_up","icon-arrow_down","icon-arrow_left","icon-arrow_right"].includes(name))option=null;this.HQChart.CreateChartDrawPicture(name,option,function(chart){_this72.OnFinishDrawPicture(chart,data);});};this.ClearCurrnetDrawPicture=function(){if(this.HQChart)this.HQChart.ClearCurrnetDrawPicture();};//画图工具绘制完成
|
|
13178
|
+
this.OnFinishDrawPicture=function(chart,data){data.Span.classList.remove("UMyChart_DrawTool_Span_Selected");};this.Show=function(x,y){if(!this.DivDialog)return;this.DivDialog.style.visibility='visible';this.DivDialog.style.top=y+"px";this.DivDialog.style.left=x+"px";};this.Close=function(e){if(!this.DivDialog)return;this.DivDialog.style.visibility='hidden';};this.IsShow=function(){if(!this.DivDialog)return false;return this.DivDialog.style.visibility==='visible';};this.OnMouseDownTitle=function(e){var _this73=this;if(!this.DivDialog)return;var dragData={X:e.clientX,Y:e.clientY};dragData.YOffset=e.clientX-this.DivDialog.offsetLeft;dragData.XOffset=e.clientY-this.DivDialog.offsetTop;this.DragTitle=dragData;document.onmousemove=function(e){_this73.DocOnMouseMoveTitle(e);};document.onmouseup=function(e){_this73.DocOnMouseUpTitle(e);};};this.DocOnMouseMoveTitle=function(e){if(!this.DragTitle)return;var left=e.clientX-this.DragTitle.YOffset;var top=e.clientY-this.DragTitle.XOffset;var right=left+this.DivDialog.offsetWidth;var bottom=top+this.DivDialog.offsetHeight;if(right+5>=window.innerWidth)left=window.innerWidth-this.DivDialog.offsetWidth-5;if(bottom+5>=window.innerHeight)top=window.innerHeight-this.DivDialog.offsetHeight-5;this.DivDialog.style.left=left+'px';this.DivDialog.style.top=top+'px';};this.DocOnMouseUpTitle=function(e){this.DragTitle=null;this.onmousemove=null;this.onmouseup=null;};}///////////////////////////////////////////////////////////////////////////////////
|
|
13186
13179
|
// 工作线程计算指标示例
|
|
13187
13180
|
//
|
|
13188
13181
|
//
|
|
13189
13182
|
//////////////////////////////////////////////////////////////////////////////////
|
|
13190
13183
|
function HQChartScriptWorker(){this.Status=0;//0=空闲 1=运行
|
|
13191
|
-
this.Create=function(){var
|
|
13192
|
-
};this.ExecuteScript=function(indexData,message){var
|
|
13184
|
+
this.Create=function(){var _this74=this;addEventListener('message',function(obj){_this74.OnRecvMessage(obj);});};this.NetworkFilter=function(data,callback,indexInfo){JSConsole.Complier.Log('[HQChartScriptWorker::NetworkFilter] ['+data.Name+']['+data.Explain+'] data=',data);//数据下载
|
|
13185
|
+
};this.ExecuteScript=function(indexData,message){var _this75=this;var scriptObj={};if(indexData.Script){scriptObj.Name=indexData.Name;scriptObj.ID=indexData.Index;scriptObj.Script=indexData.Script;}else{if(!indexData.Index)return false;var scriptData=new JSIndexScript();var finder=scriptData.Get(indexData.Index);if(!finder)return false;scriptObj.ID=indexData.Index;scriptObj.Name=finder.Name;scriptObj.Script=finder.Script;scriptObj.Args=finder.Args;}if(indexData.Args)scriptObj.Args=indexData.Args;if(IFrameSplitOperator.IsBool(message.IsApiPeriod))scriptObj.IsApiPeriod=message.IsApiPeriod;var indexInfo={Name:scriptObj.Name,ID:scriptObj.ID,Script:scriptObj.Script,Args:scriptObj.Args,Guid:message.Guid};scriptObj.ErrorCallback=function(error){_this75.OnExecuteError(error,indexInfo,message);};scriptObj.FinishCallback=function(data,jsExectute){_this75.OnExecuteFinish(data,indexInfo,jsExectute,message);};scriptObj.NetworkFilter=function(data,callback){_this75.NetworkFilter(data,callback,indexInfo,message);};JSConsole.Complier.Log('[HQChartScriptWorker::ExecuteScript] scriptObj=',scriptObj);var indexConsole=new ScriptIndexConsole(scriptObj);var hisData=null;if(message&&message.Data){hisData=new ChartData();hisData.Data=message.Data;hisData.Right=message.Right;hisData.Period=message.Period;hisData.DataType=message.DataType;//0=日线 1=分钟
|
|
13193
13186
|
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.Status=1;//执行状态
|
|
13194
13187
|
this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
13195
13188
|
* 版本信息输出
|
|
13196
13189
|
*
|
|
13197
|
-
*/var HQCHART_VERSION="1.1.
|
|
13190
|
+
*/var HQCHART_VERSION="1.1.13244";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();//把给外界调用的方法暴露出来
|
|
13198
13191
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
13199
13192
|
// BaseIndex:BaseIndex,
|
|
13200
13193
|
// ChartLine:ChartLine,
|
|
@@ -13221,4 +13214,4 @@ GetDevicePixelRatio:GetDevicePixelRatio},(0,_defineProperty3.default)(_jsChartIn
|
|
|
13221
13214
|
HQMinuteTimeStringFormat:HQMinuteTimeStringFormat,//分时图X轴 十字光标输出格式化
|
|
13222
13215
|
HQDateStringFormat:HQDateStringFormat,//K线图X轴 十字光标输出格式化
|
|
13223
13216
|
HQPriceStringFormat:HQPriceStringFormat//分时图,K线图Y轴 十字光标输出格式化
|
|
13224
|
-
}),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'JS_ID',{JSCHART_EVENT_ID:JSCHART_EVENT_ID,JSCHART_OPERATOR_ID:JSCHART_OPERATOR_ID,JSCHART_DRAG_ID:JSCHART_DRAG_ID,JSCHART_BUTTON_ID:JSCHART_BUTTON_ID,JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID,JSCHART_MENU_ID:JSCHART_MENU_ID}),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'HQChartScriptWorker',HQChartScriptWorker),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'JSPopMenu',JSPopMenu),_jsChartInit$jsChartS);
|
|
13217
|
+
}),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'JS_ID',{JSCHART_EVENT_ID:JSCHART_EVENT_ID,JSCHART_OPERATOR_ID:JSCHART_OPERATOR_ID,JSCHART_DRAG_ID:JSCHART_DRAG_ID,JSCHART_BUTTON_ID:JSCHART_BUTTON_ID,JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID,JSCHART_MENU_ID:JSCHART_MENU_ID}),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'HQChartScriptWorker',HQChartScriptWorker),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'JSPopMenu',JSPopMenu),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'JSDialogDrawTool',JSDialogDrawTool),_jsChartInit$jsChartS);
|