hqchart 1.1.12774 → 1.1.12778
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
CHANGED
|
@@ -7932,7 +7932,9 @@ for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Fr
|
|
|
7932
7932
|
{self.RecvMinuteData(data);};}event.Callback(event,data,this);};this.ClearIndexPaint=function(){//清空指标
|
|
7933
7933
|
if(this.Frame&&this.Frame.SubFrame){for(var i=0;i<this.Frame.SubFrame.length;++i){if(i>=2)this.DeleteIndexPaint(i,true);var item=this.Frame.SubFrame[i];if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)){for(var j=0;j<item.OverlayIndex.length;++j)//清空叠加指标
|
|
7934
7934
|
{var overlayItem=item.OverlayIndex[j];for(var k=0;k<overlayItem.ChartPaint.length;++k){var overlayChart=overlayItem.ChartPaint[k];if(overlayChart&&overlayChart.OnDestroy)overlayChart.OnDestroy();}overlayItem.ChartPaint=[];}}}}//清空叠加标题
|
|
7935
|
-
for(var i=1;i<this.TitlePaint.length;++i){var item=this.TitlePaint[i];item.OverlayIndex=new _map2.default();}};this.ResetDayOffset=function(){if(this.PageInfo.Enable){this.DayOffset.Offset=this.PageInfo.Offset;this.DayOffset.ShowDayCount=this.PageInfo.ShowDayCount;}else{this.DayOffset.Offset=0;this.DayOffset.ShowDayCount=-1;}this.DayOffset.PageInfo=null;};this.ResetDataStatus=function(){this.DataStatus.MultiDay=false;this.DataStatus.LatestDay=false;}
|
|
7935
|
+
for(var i=1;i<this.TitlePaint.length;++i){var item=this.TitlePaint[i];item.OverlayIndex=new _map2.default();}};this.ResetDayOffset=function(){if(this.PageInfo.Enable){this.DayOffset.Offset=this.PageInfo.Offset;this.DayOffset.ShowDayCount=this.PageInfo.ShowDayCount;}else{this.DayOffset.Offset=0;this.DayOffset.ShowDayCount=-1;}this.DayOffset.PageInfo=null;};this.ResetDataStatus=function(){this.DataStatus.MultiDay=false;this.DataStatus.LatestDay=false;};this.ClearOverlaySymbolData=function(){for(var i=0;i<this.OverlayChartPaint.length;++i){var chart=this.OverlayChartPaint[i];chart.Status=OVERLAY_STATUS_ID.STATUS_NONE_ID;//重置状态
|
|
7936
|
+
chart.Data.Data=[];//清空数据
|
|
7937
|
+
}};//切换股票代码
|
|
7936
7938
|
this.ChangeSymbol=function(symbol,option){this.StopDisplayLatest();this.CancelAutoUpdate();this.AutoUpdateEvent(false,"MinuteChartContainer::ChangeSymbol");this.Symbol=symbol;this.ResetDayOffset();this.ResetDataStatus();this.ClearIndexPaint();//清空指标
|
|
7937
7939
|
this.ResetOverlaySymbolStatus();this.ReloadChartDrawPicture();this.ClearIndexRunCount();this.ClearStockCache();this.Frame.ClearYCoordinateMaxMin();if(option){if(IFrameSplitOperator.IsNumber(option.DayCount))this.DayCount=option.DayCount;if(IFrameSplitOperator.IsNonEmptyArray(option.Windows))//切换指标
|
|
7938
7940
|
{var systemScript=new JSIndexScript();for(var i=0;i<option.Windows.length;++i){var index=2+i;if(index>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
|
|
@@ -7946,7 +7948,12 @@ if(option.Overlay&&IFrameSplitOperator.IsNonEmptyArray(option.Overlay)){var setS
|
|
|
7946
7948
|
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];++g_JSChartResource.OverlaySymbol.Random;paint.MainData=this.SourceData;//绑定主图数据
|
|
7947
7949
|
if(paint.SetOption)paint.SetOption(item);this.OverlayChartPaint.push(paint);}}}if(!symbol||this.DayCount<=0){this.DrawEmpty();}else{this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.EnableSplash(true);//增加下载动画
|
|
7948
7950
|
this.Draw();this.RequestData();}};this.SetPageInfo=function(pageInfo){if(!pageInfo)return;if(IFrameSplitOperator.IsBool(pageInfo.Enable))this.PageInfo.Enable=pageInfo.Enable;if(IFrameSplitOperator.IsNumber(pageInfo.Offset))this.PageInfo.Offset=pageInfo.Offset;if(IFrameSplitOperator.IsNumber(pageInfo.ShowDayCount))this.PageInfo.ShowDayCount=pageInfo.ShowDayCount;};this.ClearMinuteData=function(){this.SourceData=null;this.DayData=null;this.BeforeOpenData=null;this.AfterCloseData=null;this.MultiDayBeforeOpenData=null;this.MultiDayAfterCloseData=null;};this.ChangeDayCount=function(count,option){if(count<0)return;this.StopDisplayLatest();this.CancelAutoUpdate();this.AutoUpdateEvent(false,"MinuteChartContainer::ChangeDayCount");this.DayCount=count;this.ClearMinuteData();if(option&&option.PageInfo){this.SetPageInfo(option.PageInfo);this.ResetDayOffset();}if(this.DayCount>1){this.ChartDrawPicture=[];}else{this.ReloadChartDrawPicture();}this.ResetDataStatus();this.ClearIndexPaint();//清空指标
|
|
7949
|
-
this.Frame.ClearYCoordinateMaxMin();this.ResetOverlaySymbolStatus();this.RequestData();}
|
|
7951
|
+
this.Frame.ClearYCoordinateMaxMin();this.ResetOverlaySymbolStatus();this.RequestData();};//[{ Symbol: , Color, Option: }]
|
|
7952
|
+
this.OverlaySymbols=function(aryData){var aryNewOverlay=[];for(var i=0,j=0;i<aryData.length;++i)//去重,已经叠加过的不用在叠加
|
|
7953
|
+
{var overlayItem=aryData[i];var strSymbol=overlayItem.Symbol;var bFind=false;for(j=0;j<this.OverlayChartPaint.length;++j){var item=this.OverlayChartPaint[j];if(item.Symbol==strSymbol){bFind=true;console.warn('[MinuteChartContainer::OverlaySymbols] overlay symbol='+strSymbol+' exist.');break;}}if(!bFind)aryNewOverlay.push(overlayItem);}if(!IFrameSplitOperator.IsNonEmptyArray(aryNewOverlay))return true;for(var i=0;i<aryNewSymbol.length;++i){var overlayItem=aryNewSymbol[i];var strSymbol=overlayItem.Symbol;var paint=new ChartOverlayMinutePriceLine();paint.Canvas=this.Canvas;paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;paint.ChartFrame=this.Frame.SubFrame[0].Frame;paint.Name="Overlay-Minute";paint.Symbol=strSymbol;paint.Identify='Overlay-Minute-'+strSymbol;if(overlayItem.Option&&overlayItem.Option.Color)paint.Color=overlayItem.Option.Color;//外部设置颜色
|
|
7954
|
+
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];++g_JSChartResource.OverlaySymbol.Random;paint.MainData=this.SourceData;//绑定主图数据
|
|
7955
|
+
if(paint.SetOption)paint.SetOption(overlayItem.Option);this.OverlayChartPaint.push(paint);}if(this.DayCount<=1)this.RequestOverlayMinuteData();//请求数据
|
|
7956
|
+
else this.RequestOverlayHistoryMinuteData();return true;};//叠加股票 symbol支持数据 ["600000.sh", "0000001.sz"]
|
|
7950
7957
|
this.OverlaySymbol=function(symbol,option){var arySymbol=null;if(IFrameSplitOperator.IsString(symbol))arySymbol=[symbol];else if(Array.isArray(symbol))arySymbol=symbol;if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return false;var aryNewSymbol=[];for(var i=0,j=0;i<arySymbol.length;++i){var strSymbol=arySymbol[i];var bFind=false;for(j=0;j<this.OverlayChartPaint.length;++j){var item=this.OverlayChartPaint[j];if(item.Symbol==strSymbol){bFind=true;console.warn('[MinuteChartContainer::OverlaySymbol] overlay symbol='+strSymbol+' exist.');break;}}if(!bFind)aryNewSymbol.push(strSymbol);}if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return true;for(var i=0;i<aryNewSymbol.length;++i){var strSymbol=aryNewSymbol[i];var paint=new ChartOverlayMinutePriceLine();paint.Canvas=this.Canvas;paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;paint.ChartFrame=this.Frame.SubFrame[0].Frame;paint.Name="Overlay-Minute";paint.Symbol=strSymbol;paint.Identify='Overlay-Minute-'+strSymbol;if(option&&option.Color)paint.Color=option.Color;//外部设置颜色
|
|
7951
7958
|
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];++g_JSChartResource.OverlaySymbol.Random;paint.MainData=this.SourceData;//绑定主图数据
|
|
7952
7959
|
if(paint.SetOption)paint.SetOption(option);this.OverlayChartPaint.push(paint);}if(this.DayCount<=1)this.RequestOverlayMinuteData();//请求数据
|
|
@@ -8030,9 +8037,9 @@ self.RecvOverlayMinuteData(data,item);}});};for(var i=0;i<this.OverlayChartPaint
|
|
|
8030
8037
|
this.RecvMultiOverlayMinuteData=function(aryData){if(!IFrameSplitOperator.IsNonEmptyArray(aryData))return;var bUpdate=false;for(var i=0;i<aryData.length;++i){var overlayData=aryData[i];if(!overlayData.symbol)continue;for(var j=0;j<this.OverlayChartPaint.length;++j){var item=this.OverlayChartPaint[j];if(!item.MainData)continue;if(overlayData.symbol==item.Symbol){this.RecvOverlayMinuteData(overlayData,item,{Redraw:false});bUpdate=true;break;}}}if(bUpdate){this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
8031
8038
|
this.Frame.SetSizeChage(true);this.Draw();}};this.RecvOverlayMinuteData=function(data,paint,option){if(paint.IsDelete)return;if(this.EnableVerifyRecvData&&data.symbol!=paint.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvOverlayMinuteData] recv data symbol not match. paint['+paint.Symbol+'] , Recv['+data.symbol+']');return;}var aryMinuteData=MinuteChartContainer.JsonDataToMinuteDataArray(data);var sourceData=null;var yClose;if(this.DayCount>1)//多日数据
|
|
8032
8039
|
{if(aryMinuteData.length<=0)return;var minuteData=aryMinuteData[0];for(var i in paint.SourceData){var item=paint.SourceData[i];if(item.Date==minuteData.Date){paint.SourceData[i]=minuteData;var allMinuteData=this.HistoryMinuteDataToArray(paint.SourceData);var sourceData=new ChartData();sourceData.Data=allMinuteData;yClose=minuteData.YClose;break;}}if(sourceData==null)return;}else{if(aryMinuteData.length>0)sourceData=aryMinuteData[0];else sourceData=new ChartData();yClose=sourceData.YClose;}paint.Data=sourceData;paint.Title=data.name;paint.Symbol=data.symbol;paint.YClose=yClose;paint.Status=OVERLAY_STATUS_ID.STATUS_FINISHED_ID;var bRedraw=true;if(option&&option.Redraw==false)bRedraw=false;if(bRedraw){this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
8033
|
-
this.Frame.SetSizeChage(true);this.Draw();}};this.RequestOverlayHistoryMinuteData=function(){
|
|
8034
|
-
Explain:'叠加股票多日分时数据',Request:{Url:self.HistoryMinuteApiUrl,Data:{days:days,symbol:symbol},Type:'POST'},Self:
|
|
8035
|
-
}JSNetwork.HttpRequest({url:self.HistoryMinuteApiUrl,data:{"symbol":symbol,"days":days},type:"post",dataType:"json",async:true,success:function success(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOverlayHistoryMinuteData(data,item);}});}
|
|
8040
|
+
this.Frame.SetSizeChage(true);this.Draw();}};this.RequestOverlayHistoryMinuteData=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.DayData))return;var self=this;var days=[];for(var i=0;i<this.DayData.length;++i){var item=this.DayData[i];days.push(item.Date);}if(days.length<=0)return;for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];var symbol=item.Symbol;if(!symbol)continue;if(item.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(this.NetworkFilter){var obj={Name:'MinuteChartContainer::RequestOverlayHistoryMinuteData',//类名::函数名
|
|
8041
|
+
Explain:'叠加股票多日分时数据',Request:{Url:self.HistoryMinuteApiUrl,Data:{days:days,symbol:symbol},Type:'POST'},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOverlayHistoryMinuteData(data,item);});if(obj.PreventDefault==true)continue;//已被上层替换,不调用默认的网络请求
|
|
8042
|
+
}JSNetwork.HttpRequest({url:self.HistoryMinuteApiUrl,data:{"symbol":symbol,"days":days},type:"post",dataType:"json",async:true,success:function success(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOverlayHistoryMinuteData(data,item);}});}};this.RecvOverlayHistoryMinuteData=function(data,paint)//叠加历史的分钟数据
|
|
8036
8043
|
{if(this.EnableVerifyRecvData&&data.symbol!=paint.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvOverlayHistoryMinuteData] recv data symbol not match. paint['+paint.Symbol+'] , Recv['+data.symbol+']');return;}if(!IFrameSplitOperator.IsNonEmptyArray(this.DayData))return;var dayData=MinuteChartContainer.JsonDataToMinuteDataArray(data);if(!IFrameSplitOperator.IsNonEmptyArray(dayData))return;var overlayDayData=[];for(var i=0;i<this.DayData.length;++i){var item=this.DayData[i];var bFind=false;for(var j=0;j<dayData.length;++j){if(item.Date==dayData[j].Date){overlayDayData.push(dayData[j]);bFind=true;break;}}if(!bFind)//当天不存在叠加数据, 存空
|
|
8037
8044
|
{var empytData=new ChartData();empytData.Date=item.Date;empytData.Data.length=item.Data.length;overlayDayData.push(empytData);}}paint.SourceData=overlayDayData;var allMinuteData=this.HistoryMinuteDataToArray(overlayDayData);var yClose=overlayDayData[0].YClose;//取最近一个交易日前收盘最为中轴线
|
|
8038
8045
|
//原始数据
|
|
@@ -8059,8 +8066,8 @@ else this.ClearBindOverlayPositionData();this.TitlePaint[0].Data=this.SourceData
|
|
|
8059
8066
|
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;//十字光标
|
|
8060
8067
|
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;//绑定主图数据
|
|
8061
8068
|
}};//绑定分钟叠加指标数据(持仓量)
|
|
8062
|
-
this.BindOverlayPositionData=function(minuteData,yClose){var
|
|
8063
|
-
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
|
|
8069
|
+
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个窗口
|
|
8070
|
+
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;//右边坐标绑定到主坐标上
|
|
8064
8071
|
}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)//图形不存在就创建一个
|
|
8065
8072
|
{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个窗口
|
|
8066
8073
|
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);};//更新叠加指标
|
|
@@ -8069,12 +8076,12 @@ this.AddOverlayIndex=function(obj){var overlay=this.CreateOverlayWindowsIndex(ob
|
|
|
8069
8076
|
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
8070
8077
|
this.Draw();};//创建一个叠加指标
|
|
8071
8078
|
this.CreateOverlayWindowsIndex=function(obj)//{WindowIndex:, IndexName:, Identify:, ShowRightText:, API:}
|
|
8072
|
-
{var
|
|
8079
|
+
{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)//动态执行脚本
|
|
8073
8080
|
{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);//系统指标
|
|
8074
8081
|
if(!indexInfo){indexCustom=JSIndexMap.Get(indexName);//定制指标
|
|
8075
8082
|
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
|
|
8076
8083
|
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最大最小值
|
|
8077
|
-
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
|
|
8084
|
+
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};//叠加指标信息
|
|
8078
8085
|
overlayFrame.Script=apiIndex;}else if(indexInfo){var indexData=indexInfo;if(obj.Args)indexData.Args=obj.Args;//外部可以设置参数
|
|
8079
8086
|
var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
|
|
8080
8087
|
scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
|
|
@@ -8325,33 +8332,33 @@ if(this.DataMove(moveSetp,isLeft)){this.UpdataDataoffset();this.UpdatePointByCur
|
|
|
8325
8332
|
{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//缩小
|
|
8326
8333
|
{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;};//创建
|
|
8327
8334
|
//windowCount 窗口个数
|
|
8328
|
-
this.Create=function(windowCount){var
|
|
8335
|
+
this.Create=function(windowCount){var _this36=this;this.UIElement.JSChartContainer=this;//创建十字光标
|
|
8329
8336
|
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;//创建等待提示
|
|
8330
8337
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.HQChart=this;//创建框架容器
|
|
8331
8338
|
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;//十字光标绑定框架
|
|
8332
8339
|
this.ChartSplashPaint.Frame=this.Frame;this.CreateChildWindow(windowCount);this.CreateMainKLine();//子窗口动态标题
|
|
8333
|
-
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
|
|
8340
|
+
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 _this36.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint.push(titlePaint);}this.UIElement.addEventListener("keydown",OnKeyDown,true);//键盘消息
|
|
8334
8341
|
};//创建子窗口
|
|
8335
|
-
this.CreateChildWindow=function(windowCount){var
|
|
8342
|
+
this.CreateChildWindow=function(windowCount){var _this37=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;//窗口序号
|
|
8336
8343
|
frame.RightSpaceCount=this.RightSpaceCount;//右边
|
|
8337
8344
|
if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
|
|
8338
|
-
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
|
|
8345
|
+
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 _this37.GetEventCallback(id);};//主图上下间距
|
|
8339
8346
|
var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
8340
8347
|
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;
|
|
8341
|
-
}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
|
|
8348
|
+
}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 _this37.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();subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;}};}////////////////////////////////////////////////////////////////////////////////
|
|
8342
8349
|
// 走势图横屏显示
|
|
8343
8350
|
//
|
|
8344
8351
|
function MinuteChartHScreenContainer(uielement){this.newMethod=MinuteChartContainer;//派生
|
|
8345
8352
|
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);};//创建
|
|
8346
8353
|
//windowCount 窗口个数
|
|
8347
|
-
this.Create=function(windowCount){var
|
|
8348
|
-
this.ChartCorssCursor=new ChartCorssCursor();this.ChartCorssCursor.PtInClient=function(x,y){return
|
|
8354
|
+
this.Create=function(windowCount){var _this38=this;this.UIElement.JSChartContainer=this;//创建十字光标
|
|
8355
|
+
this.ChartCorssCursor=new ChartCorssCursor();this.ChartCorssCursor.PtInClient=function(x,y){return _this38.PtInClient(x,y);};this.ChartCorssCursor.Canvas=this.Canvas;this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_Minute_XStringFormat");this.ChartCorssCursor.StringFormatX.GetEventCallback=function(id){return _this38.GetEventCallback(id);};this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");this.ChartCorssCursor.StringFormatY.GetEventCallback=function(id){return _this38.GetEventCallback(id);};this.ChartCorssCursor.CallAcutionXOperator=new CallAcutionXOperator();//创建等待提示
|
|
8349
8356
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.HQChart=this;//创建框架容器
|
|
8350
8357
|
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;//十字光标绑定框架
|
|
8351
8358
|
this.ChartSplashPaint.Frame=this.Frame;this.CreateChildWindow(windowCount);this.CreateMainKLine();//子窗口动态标题
|
|
8352
|
-
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
|
|
8359
|
+
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 _this38.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);//键盘消息
|
|
8353
8360
|
};//创建子窗口
|
|
8354
|
-
this.CreateChildWindow=function(windowCount){var
|
|
8361
|
+
this.CreateChildWindow=function(windowCount){var _this39=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 _this39.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 _this39.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 _this39.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();subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;}};}/////////////////////////////////////////////////////////////////////////////////
|
|
8355
8362
|
// 深度图
|
|
8356
8363
|
//
|
|
8357
8364
|
function DepthChartContainer(uielement){this.newMethod=JSChartContainer;//派生
|
|
@@ -8359,7 +8366,7 @@ this.newMethod(uielement);delete this.newMethod;this.ClassName="DepthChartContai
|
|
|
8359
8366
|
this.MapAsk=new _map2.default();this.MapBid=new _map2.default();this.IsAutoUpdate=false;//是否自动更新行情数据
|
|
8360
8367
|
this.AutoUpdateFrequency=30000;//30秒更新一次数据
|
|
8361
8368
|
this.AutoUpdateTimer;this.DefaultZoom=0.8;//默认显示80%的盘口 (0 - 1)
|
|
8362
|
-
this.MaxVolRate=1.1;this.Create=function(option){var
|
|
8369
|
+
this.MaxVolRate=1.1;this.Create=function(option){var _this40=this;this.UIElement.JSChartContainer=this;//创建十字光标
|
|
8363
8370
|
this.ChartCorssCursor=new DepthChartCorssCursor();this.ChartCorssCursor.Canvas=this.Canvas;this.ChartCorssCursor.HQChart=this;//this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_XStringFormat");
|
|
8364
8371
|
//this.ChartCorssCursor.StringFormatX.LanguageID=this.LanguageID;
|
|
8365
8372
|
//this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");
|
|
@@ -8367,9 +8374,9 @@ this.ChartCorssCursor=new DepthChartCorssCursor();this.ChartCorssCursor.Canvas=t
|
|
|
8367
8374
|
//创建等待提示
|
|
8368
8375
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);//创建框架
|
|
8369
8376
|
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;
|
|
8370
|
-
ySplitOper.ChartBorder=this.Frame.ChartBorder;ySplitOper.GetEventCallback=function(id){return
|
|
8371
|
-
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){
|
|
8372
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
8377
|
+
ySplitOper.ChartBorder=this.Frame.ChartBorder;ySplitOper.GetEventCallback=function(id){return _this40.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 _this40.GetEventCallback(id);};this.Frame.XSplitOperator=xSplitOper;if(this.ChartCorssCursor)this.ChartCorssCursor.Frame=this.Frame;//十字光标绑定框架
|
|
8378
|
+
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){_this40.OnKeyDown(e);},true);//键盘消息
|
|
8379
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this40.OnWheel(e);},true);//上下滚动消息
|
|
8373
8380
|
};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;//是否允许缩放
|
|
8374
8381
|
if(this.EnableZoomUpDown&&this.EnableZoomUpDown.Wheel===false)enableZoomUpDown=false;if(isInClient&&wheelValue<0&&enableZoomUpDown)//缩小
|
|
8375
8382
|
{if(this.Frame.ZoomDown()){this.UpdateFrameMaxMin();this.Draw();}}else if(isInClient&&wheelValue>0&&enableZoomUpDown)//放大
|
|
@@ -8492,11 +8499,11 @@ this.BarPosition=1;//柱子方向 0=左边 1=右边
|
|
|
8492
8499
|
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=[];//清空
|
|
8493
8500
|
}else{frame=hqChart.Frame.SubFrame[windowIndex].Frame;hqChart.DeleteIndexPaint(windowIndex);//清空
|
|
8494
8501
|
}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;}};//请求数据
|
|
8495
|
-
this.RequestData=function(hqChart,windowIndex,hisData,option){var
|
|
8502
|
+
this.RequestData=function(hqChart,windowIndex,hisData,option){var _this41=this;this.CancelRequestTimer();var T_RequestData=function T_RequestData(){//请求数据
|
|
8496
8503
|
var klineChart=hqChart.ChartPaint[0];//获取当前K线图实例
|
|
8497
8504
|
var kData=klineChart.Data;//K线数据
|
|
8498
8505
|
if(!kData||IFrameSplitOperator.IsNonEmptyArray(!kData.Data))return;var pageKRange=klineChart.DrawKRange;//当前显示的K线索引
|
|
8499
|
-
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:
|
|
8506
|
+
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:_this41};if(IFrameSplitOperator.IsNumber(startKItem.Time))option.Start.Time=startKItem.Time;if(IFrameSplitOperator.IsNumber(endKItem.Time))option.End.Time=endKItem.Time;option.ValueAreaVol=_this41.Arguments[0].Value;if(_this41.Arguments[1].Value>0)_this41.BarPosition=1;else _this41.BarPosition=0;if(_this41.ChartVolProfile){_this41.ChartVolProfile.SetOption({BarPosition:_this41.BarPosition});}_this41.DataStatus=0;if(hqChart&&hqChart.RequestVolumeProfileData){hqChart.RequestVolumeProfileData(option);}};if(option&&option.Type==1)//页面缩放或移动延迟更新
|
|
8500
8507
|
{this.RequestTimer=setTimeout(function(){T_RequestData();},this.DelayRequestFrequency);}else{T_RequestData();}return true;};this.OnRecvVolumeProfileData=function(data){this.BindData(data);this.HQChart.UpdataDataoffset();//更新数据偏移
|
|
8501
8508
|
this.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
8502
8509
|
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
|
|
@@ -8962,7 +8969,7 @@ this.GetTools=function(chart){var data=[];var drawTools=chart.GetExtendChartByCl
|
|
|
8962
8969
|
{var item=chart.ExtendChartPaint[i];if(item.ClassName=='StockChip'){item.Left-=toolsWidth;}}chart.DeleteExtendChart(drawTools);chart.Frame.ChartBorder.Right-=toolsWidth;chart.SetSizeChange(true);chart.Draw();}});}else{data.push({text:"画图工具",click:function click(){var option={Name:'画图工具',Top:chart.Frame.ChartBorder.Top};var extendChart=chart.CreateExtendChart(option.Name,option);//创建扩展图形
|
|
8963
8970
|
chart.SetSizeChange(true);chart.Draw();}});}var StockChip=chart.GetExtendChartByClassName('StockChip');if(StockChip){data.push({text:"关闭移动筹码",click:function click(){var chipWidth=StockChip.Chart.Width;var chipIndex=parseInt(StockChip.Index);for(var i=chipIndex+1;i<chart.ExtendChartPaint.length;++i)//在筹码后面创建的需要筹码的宽度
|
|
8964
8971
|
{var item=chart.ExtendChartPaint[i];if(item.ClassName=='DrawToolsButton'){item.Left-=chipWidth;}}chart.DeleteExtendChart(StockChip);chart.Frame.ChartBorder.Right-=chipWidth;chart.SetSizeChange(true);chart.Draw();}});}else{data.push({text:"移动筹码",click:function click(){var option={Name:'筹码分布',ShowType:1,Width:230};var extendChart=chart.CreateExtendChart(option.Name,option);//创建扩展图形
|
|
8965
|
-
chart.SetSizeChange(true);chart.Draw();}});}return data;};this.GetKLineInfo=function(chart){var setInfo=new _set2.default();for(var i in chart.ChartInfo){var item=chart.ChartInfo[i];setInfo.add(item.ClassName);}var aryKLineInfo=["公告","业绩预告","调研","大宗交易","龙虎榜","互动易"];var data=[];for(var i in aryKLineInfo){var infoName=aryKLineInfo[i];var classInfo=JSKLineInfoMap.GetClassInfo(infoName);if(!classInfo)continue;var item=this.CreateKlineInfoItem(infoName,setInfo.has(classInfo.ClassName),chart);data.push(item);}if(chart.ChartInfo.length>0){data[data.length-1].isBorder=true;var item={text:'删除所有',click:function click(){chart.ClearKLineInfo();}};data.push(item);}return data;};this.CreateKlineInfoItem=function(infoName,bExist,chart){var item={text:infoName,selected:bExist};if(bExist)item.click=function(){chart.DeleteKLineInfo(infoName);};else item.click=function(){chart.AddKLineInfo(infoName,true);};return item;};this.DoModal=function(event){var chart=event.data.Chart;var rightMenu=chart.RightMenu;var x=event.offsetX;var y=event.offsetY;var dataList=[{text:"分析周期",children:this.GetPeriod(chart)},{text:"复权处理",children:this.GetRight(chart)},{text:"指标切换",children:this.GetIndex(chart)},{text:"五彩K线",children:this.GetColorIndex(chart)},{text:'专家系统',children:this.GetTradeIndex(chart)},{text:'信息地雷',children:this.GetKLineInfo(chart)},{text:"叠加品种",children:this.GetOverlay(chart)},{text:'主图线型',children:this.GetKLineType(chart)},{text:"坐标类型",children:this.GetCoordinateType(chart)},{text:'指标窗口个数',children:this.GetIndexWindowCount(chart)},{text:'鼠标拖拽',children:this.GetDragModeType(chart)},{text:"工具",children:this.GetTools(chart)}];var upperSymbol=chart.Symbol.toUpperCase();if(MARKET_SUFFIX_NAME.IsSHSZIndex(chart.Symbol)||MARKET_SUFFIX_NAME.IsBIT(upperSymbol)){dataList.splice(1,1);}var identify=event.data.FrameID;var overlayIndex=this.GetOverlayIndex(chart,identify);if(overlayIndex&&overlayIndex.length>0){var delOverlayIndexMenu={text:'删除叠加指标',children:this.GetDeleteOverlayIndex(chart,overlayIndex)};dataList.splice(3,0,delOverlayIndexMenu);}JSConsole.Chart.Log('[KLineRightMenu::DoModal]',identify);rightMenu.Show({windowIndex:identify,x:x+chart.UIElement.offsetLeft,y:y+chart.UIElement.offsetTop,position:chart.Frame.Position,data:dataList});(0,_jquery2.default)(document).click(function(){rightMenu.Hide();});};this.GetOverlayIndex=function(chart,windowsIndex){if(windowsIndex>=chart.Frame.SubFrame.length||windowsIndex<0)return[];var result=[];var item=chart.Frame.SubFrame[windowsIndex];for(var i in item.OverlayIndex){var overlayItem=item.OverlayIndex[i];result.push({Name:overlayItem.Script.Name,Identify:overlayItem.Identify});}return result;};this.GetDeleteOverlayIndex=function(chart,overlayIndex){var data=[];var
|
|
8972
|
+
chart.SetSizeChange(true);chart.Draw();}});}return data;};this.GetKLineInfo=function(chart){var setInfo=new _set2.default();for(var i in chart.ChartInfo){var item=chart.ChartInfo[i];setInfo.add(item.ClassName);}var aryKLineInfo=["公告","业绩预告","调研","大宗交易","龙虎榜","互动易"];var data=[];for(var i in aryKLineInfo){var infoName=aryKLineInfo[i];var classInfo=JSKLineInfoMap.GetClassInfo(infoName);if(!classInfo)continue;var item=this.CreateKlineInfoItem(infoName,setInfo.has(classInfo.ClassName),chart);data.push(item);}if(chart.ChartInfo.length>0){data[data.length-1].isBorder=true;var item={text:'删除所有',click:function click(){chart.ClearKLineInfo();}};data.push(item);}return data;};this.CreateKlineInfoItem=function(infoName,bExist,chart){var item={text:infoName,selected:bExist};if(bExist)item.click=function(){chart.DeleteKLineInfo(infoName);};else item.click=function(){chart.AddKLineInfo(infoName,true);};return item;};this.DoModal=function(event){var chart=event.data.Chart;var rightMenu=chart.RightMenu;var x=event.offsetX;var y=event.offsetY;var dataList=[{text:"分析周期",children:this.GetPeriod(chart)},{text:"复权处理",children:this.GetRight(chart)},{text:"指标切换",children:this.GetIndex(chart)},{text:"五彩K线",children:this.GetColorIndex(chart)},{text:'专家系统',children:this.GetTradeIndex(chart)},{text:'信息地雷',children:this.GetKLineInfo(chart)},{text:"叠加品种",children:this.GetOverlay(chart)},{text:'主图线型',children:this.GetKLineType(chart)},{text:"坐标类型",children:this.GetCoordinateType(chart)},{text:'指标窗口个数',children:this.GetIndexWindowCount(chart)},{text:'鼠标拖拽',children:this.GetDragModeType(chart)},{text:"工具",children:this.GetTools(chart)}];var upperSymbol=chart.Symbol.toUpperCase();if(MARKET_SUFFIX_NAME.IsSHSZIndex(chart.Symbol)||MARKET_SUFFIX_NAME.IsBIT(upperSymbol)){dataList.splice(1,1);}var identify=event.data.FrameID;var overlayIndex=this.GetOverlayIndex(chart,identify);if(overlayIndex&&overlayIndex.length>0){var delOverlayIndexMenu={text:'删除叠加指标',children:this.GetDeleteOverlayIndex(chart,overlayIndex)};dataList.splice(3,0,delOverlayIndexMenu);}JSConsole.Chart.Log('[KLineRightMenu::DoModal]',identify);rightMenu.Show({windowIndex:identify,x:x+chart.UIElement.offsetLeft,y:y+chart.UIElement.offsetTop,position:chart.Frame.Position,data:dataList});(0,_jquery2.default)(document).click(function(){rightMenu.Hide();});};this.GetOverlayIndex=function(chart,windowsIndex){if(windowsIndex>=chart.Frame.SubFrame.length||windowsIndex<0)return[];var result=[];var item=chart.Frame.SubFrame[windowsIndex];for(var i in item.OverlayIndex){var overlayItem=item.OverlayIndex[i];result.push({Name:overlayItem.Script.Name,Identify:overlayItem.Identify});}return result;};this.GetDeleteOverlayIndex=function(chart,overlayIndex){var data=[];var _loop5=function _loop5(){var identify=overlayIndex[i].Identify;data.push({text:overlayIndex[i].Name,click:function click(){chart.DeleteOverlayWindowsIndex(identify);}});};for(var i in overlayIndex){_loop5();}return data;};}//K线区间选择右键菜单
|
|
8966
8973
|
function KLineSelectRightMenu(divElement){this.newMethod=KLineRightMenu;//派生
|
|
8967
8974
|
this.newMethod(divElement);delete this.newMethod;this.DoModal=function(event){var chart=event.data.Chart;var rightMenu=this;var x=event.data.X;var y=event.data.Y;var dataList=[{text:"区间统计",click:function click(){JSConsole.Chart.Log('[KLineSelectRightMenu::click] 区间统计');rightMenu.Hide();var dialog=new KLineSelectRectDialog(divElement);dialog.DoModal(event);}},{text:'区间放大',click:function click(){JSConsole.Chart.Log('[KLineSelectRightMenu::click] 区间放大');var chart=event.data.Chart;chart.ShowSelectData(event.data.SelectData);}}];rightMenu.Show({x:x,y:y,position:chart.Frame.Position,data:dataList});};this.Show=function(obj){var _self=this;_jquery2.default.extend(_self.option,obj);//判断是否重复创建
|
|
8968
8975
|
if(!_self.ID)_self.Create();//判断下如果DOM没了需要重新创建
|
|
@@ -11071,14 +11078,14 @@ var symbol=readArgument.Value;//支持 SH60000, SZ000001
|
|
|
11071
11078
|
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)//复制参数
|
|
11072
11079
|
{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= (代码,周期),指标(参数) => 输出
|
|
11073
11080
|
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;
|
|
11074
|
-
this.CallMemberScriptIndex=function(job){var
|
|
11081
|
+
this.CallMemberScriptIndex=function(job){var _this42=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))//读取指标
|
|
11075
11082
|
{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)//复制参数
|
|
11076
11083
|
{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,//复权
|
|
11077
11084
|
Period:indexInfo.PeriodID,//周期
|
|
11078
|
-
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){
|
|
11085
|
+
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){_this42.RecvMemberScriptIndexData(outVar,job,symbolData);_this42.Execute.RunNextJob();},CallbackParam:indexInfo,Async:true,MaxRequestDataCount:this.MaxRequestDataCount+30*2,MaxRequestMinuteDayCount:this.MaxRequestMinuteDayCount+2,Arguments:indexInfo.Args,//Condition:this.Condition,
|
|
11079
11086
|
IsBeforeData:this.IsBeforeData,NetworkFilter:this.NetworkFilter,IsApiPeriod:this.IsApiPeriod,KLineRange:dateTimeRange//K线数据范围
|
|
11080
11087
|
};//执行脚本
|
|
11081
|
-
var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){
|
|
11088
|
+
var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){_this42.ExecuteScriptIndexError(error,indexInfo);});};/*****************************************************************************************************************************
|
|
11082
11089
|
脚本调用
|
|
11083
11090
|
|
|
11084
11091
|
STKINDI
|
|
@@ -11091,16 +11098,16 @@ var run=JSComplier.Execute(systemItem.Script,option,function(error,indexInfo){_t
|
|
|
11091
11098
|
CALCSTOCKINDEX('SH600000','KDJ',3)表示上证600000的KDJ指标第3个输出即J之值,第一个参数可在前面加SZ(深市),SH(沪市),BJ(京市),或市场_,,
|
|
11092
11099
|
CALCSTOCKINDEX('47_IFL0','MACD',2)表示IFL0品种的MACD指标第2个输出值.
|
|
11093
11100
|
|
|
11094
|
-
*******************************************************************************************************************************/this.CallScriptIndex=function(job){var
|
|
11101
|
+
*******************************************************************************************************************************/this.CallScriptIndex=function(job){var _this43=this;if(job.Member)return this.CallMemberScriptIndex(job);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))//读取代码
|
|
11095
11102
|
{var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() Error: '+indexInfo.Error);}if(!this.ReadIndexFunctionValue(job.Args[1],indexInfo))//读取指标
|
|
11096
11103
|
{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))//读取返回值索引
|
|
11097
11104
|
{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;//系统指标
|
|
11098
11105
|
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,//复权
|
|
11099
11106
|
Period:indexInfo.PeriodID,//周期
|
|
11100
|
-
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){
|
|
11107
|
+
Data:null,SourceData:null,Callback:function Callback(outVar,job,symbolData){_this43.RecvScriptIndexData(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,
|
|
11101
11108
|
IsBeforeData:this.IsBeforeData,NetworkFilter:this.NetworkFilter,IsApiPeriod:this.IsApiPeriod,KLineRange:DateTimeRange//K线数据范围
|
|
11102
11109
|
};//执行脚本
|
|
11103
|
-
var run=JSComplier.Execute(indexInfo.SytemIndex.Script,option,function(error,indexInfo){
|
|
11110
|
+
var run=JSComplier.Execute(indexInfo.SytemIndex.Script,option,function(error,indexInfo){_this43.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);//保存所有的指标数据, 下面用到了就可以不用算了
|
|
11104
11111
|
for(var i in data){var key=outVar[i].Name;if(indexInfo.Period)key+='#'+indexInfo.Period;//带周期的变量
|
|
11105
11112
|
memberValue[key]=data[i].Data;}};this.RecvScriptIndexData=function(outVar,indexInfo,symbolData){var key=this.GenerateScriptIndexKey(indexInfo);JSConsole.Complier.Log('[JSSymbolData::RecvScriptIndexData] ',outVar,indexInfo,symbolData,key);var kLine=symbolData.Data.Data;var aryOutVar=outVar;if(indexInfo.Out){for(var i=0;i<outVar.length;++i){var item=outVar[i];if(item.Name==indexInfo.Out){aryOutVar=[item];break;}}var data=this.Data.FitKLineIndex(kLine,aryOutVar,this.Period,indexInfo.PeriodID);this.ScriptIndexOutData.set(key,data[0].Data);}else if(IFrameSplitOperator.IsPlusNumber(indexInfo.OutIndex)){var index=indexInfo.OutIndex-1;aryOutVar=[outVar[index]];var data=this.Data.FitKLineIndex(kLine,aryOutVar,this.Period,indexInfo.PeriodID);this.ScriptIndexOutData.set(key,data[0].Data);}else{var data=this.Data.FitKLineIndex(kLine,aryOutVar,this.Period,indexInfo.PeriodID);var result={__Type__:"Object"};for(var i in data){var item=data[i];result[item.Name]=item.Data;}this.ScriptIndexOutData.set(key,result);}};this.ExecuteScriptIndexError=function(error,indexInfo){var token=indexInfo.Job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'CallScriptIndex() '+indexInfo.Name+' \u6307\u6807\u6267\u884C\u9519\u8BEF : '+error+' ');};this.GetScriptIndexOutData=function(args,node,funcName){var indexInfo={PeriodID:this.Period};if(!this.ReadSymbolArgumentValue(args[0],indexInfo))//读取代码
|
|
11106
11113
|
this.Execute.ThrowUnexpectedNode(node,funcName+'() \u80A1\u7968\u4EE3\u7801\u9519\u8BEF: '+indexInfo.Error);if(!this.ReadIndexFunctionValue(args[1],indexInfo))//读取指标
|
|
@@ -11265,7 +11272,7 @@ GetMarginJobID:function GetMarginJobID(value){var dataMap=new _map2.default([[1,
|
|
|
11265
11272
|
[9,JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_NEWS_ANALYSIS_TOPMANAGERS],//NEWS(9) 高管要闻
|
|
11266
11273
|
[10,JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_NEWS_ANALYSIS_PLEDGE]]);if(dataMap.has(value))return dataMap.get(value);return null;},//财务截面数据 分报告期
|
|
11267
11274
|
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
|
|
11268
|
-
GetSectionReportPeriod:function GetSectionReportPeriod(year,quarter){if(year>=2000&&quarter>=1&&quarter<=4)return{Year:year,Quarter:quarter};return null;}};function JSExecute(ast,option){var
|
|
11275
|
+
GetSectionReportPeriod:function GetSectionReportPeriod(year,quarter){if(year>=2000&&quarter>=1&&quarter<=4)return{Year:year,Quarter:quarter};return null;}};function JSExecute(ast,option){var _this44=this;this.AST=ast;//语法树
|
|
11269
11276
|
this.ErrorHandler=new ErrorHandler();this.VarTable=new _map2.default();//变量表
|
|
11270
11277
|
this.VarDrawTable=new _map2.default();//绘图变量表
|
|
11271
11278
|
this.OutVarTable=[];//输出变量
|
|
@@ -11311,7 +11318,7 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
11311
11318
|
['DRAWNULL',null],["NULL",null],["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null],["TR",null],//真实波幅
|
|
11312
11319
|
["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=[];//执行的任务队列
|
|
11313
11320
|
this.UpdateUICallback=null;//回调
|
|
11314
|
-
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
|
|
11321
|
+
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 _this44.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;//调试模式信息
|
|
11315
11322
|
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();//绘图变量表
|
|
11316
11323
|
JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i142 in this.Arguments)//预定义的变量
|
|
11317
11324
|
{var _item23=this.Arguments[_i142];this.VarTable.set(_item23.Name,_item23.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://量比
|
|
@@ -11374,8 +11381,8 @@ else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","
|
|
|
11374
11381
|
{var _outVar13=this.VarTable.get(_varName3);var _value10={Name:_varName3,Data:_outVar13,Type:9};if(color)_value10.Color=color;if(upColor)_value10.UpColor=upColor;if(downColor)_value10.DownColor=downColor;if(lineWidth)_value10.LineWidth=lineWidth;this.OutVarTable.push(_value10);}else if(colorStick&&_varName3)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
11375
11382
|
{var _outVar14=this.VarTable.get(_varName3);var _value11={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value11.LineWidth=lineWidth;if(color)_value11.Color=color;if(upColor)_value11.UpColor=upColor;if(downColor)_value11.DownColor=downColor;this.OutVarTable.push(_value11);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value12={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value12.LineWidth=lineWidth;if(isShow==false)_value12.IsShow=false;if(isExData==true)_value12.IsExData=true;if(isDotLine==true)_value12.IsDotLine=true;if(isOverlayLine==true)_value12.IsOverlayLine=true;if(isNoneName==true)_value12.NoneName=true;if(isShowTitle==false)_value12.IsShowTitle=false;if(stepLine==true)_value12.Type=7;this.OutVarTable.push(_value12);}else if(_draw3)//画图函数
|
|
11376
11383
|
{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;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value13={Name:_varName3,Data:_outVar16,Type:0};if(color)_value13.Color=color;if(lineWidth)_value13.LineWidth=lineWidth;if(isShow==false)_value13.IsShow=false;if(isExData==true)_value13.IsExData=true;if(isDotLine==true)_value13.IsDotLine=true;if(isOverlayLine==true)_value13.IsOverlayLine=true;if(isShowTitle==false)_value13.IsShowTitle=false;if(stepLine==true)_value13.Type=7;this.OutVarTable.push(_value13);}}}};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();//执行脚本
|
|
11377
|
-
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
|
|
11378
|
-
this.DebugRun=function(){var
|
|
11384
|
+
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 _this45=this;if(debugCtrl.ExeLine<debugCtrl.LineCount){var item=this.AST.Body[debugCtrl.ExeLine];this.RunASTNode(item);++debugCtrl.ExeLine;this.DebugFilter(debugCtrl,function(){_this45.DebugRun_Next(debugCtrl);});}else{this.DebugRun_End();debugCtrl.Status=2;this.DebugFilter(debugCtrl,null);}};//debug模式
|
|
11385
|
+
this.DebugRun=function(){var _this46=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(){_this46.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;}};this.VisitSequenceExpression=function(node){for(var _i145 in node.Expression){var _item25=node.Expression[_i145];this.VisitNode(_item25);}};//函数调用
|
|
11379
11386
|
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个条件参数
|
|
11380
11387
|
if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);args.push(value);}if(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
|
|
11381
11388
|
var bResult=this.Algorithm.IFC(args[0]);var item=bResult?node.Arguments[1]:node.Arguments[2];var value;if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);node.Out=value;if(item.Draw)node.Draw=item.Draw;return node.Out;}//JSConsole.Complier.Log('[JSExecute::VisitCallExpression]' , funcName, '(', args.toString() ,')');
|
|
@@ -12142,15 +12149,15 @@ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FILTER_DEAL_DATA);if(!event|
|
|
|
12142
12149
|
event.Callback(event,sendData,this);return sendData.Result;};this.EnableFilter=function(bEnable,option)//启动|关闭筛选
|
|
12143
12150
|
{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;};//创建
|
|
12144
12151
|
//windowCount 窗口个数
|
|
12145
|
-
this.Create=function(option){var
|
|
12152
|
+
this.Create=function(option){var _this47=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
12146
12153
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);//创建框架
|
|
12147
12154
|
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;//创建表格
|
|
12148
|
-
var chart=new ChartDealList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return
|
|
12155
|
+
var chart=new ChartDealList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return _this47.GetEventCallback(id);};this.ChartPaint[0]=chart;if(option){if(IFrameSplitOperator.IsBool(option.IsSingleTable))chart.IsSingleTable=option.IsSingleTable;//单表模式
|
|
12149
12156
|
if(IFrameSplitOperator.IsBool(option.IsShowHeader))chart.IsShowHeader=option.IsShowHeader;//是否显示表头
|
|
12150
12157
|
if(IFrameSplitOperator.IsBool(option.IsShowLastPage))this.IsShowLastPage=option.IsShowLastPage;//是否显示最后一页
|
|
12151
12158
|
if(IFrameSplitOperator.IsNumber(option.BorderLine))this.Frame.BorderLine=option.BorderLine;//边框
|
|
12152
|
-
}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){
|
|
12153
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
12159
|
+
}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){_this47.OnKeyDown(e);},true);//键盘消息
|
|
12160
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this47.OnWheel(e);},true);//上下滚动消息
|
|
12154
12161
|
};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();//获取设备的分辨率
|
|
12155
12162
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12156
12163
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
@@ -12312,25 +12319,25 @@ this.DragPageCycle=true;//手机翻页循环
|
|
|
12312
12319
|
this.DragXScroll=null;//{Start:{x,y}, End:{x, y}}
|
|
12313
12320
|
this.IsDestroy=false;//是否已经销毁了
|
|
12314
12321
|
this.ChartDestory=function()//销毁
|
|
12315
|
-
{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
|
|
12322
|
+
{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 _this48=this;this.AutoDragScrollTimer=setTimeout(function(){_this48.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;};//清空固定行数据
|
|
12316
12323
|
this.ClearFixedRowData=function(){this.FixedRowData.Data=[];this.FixedRowData.Symbol=[];};//设置固定行
|
|
12317
12324
|
this.SetFixedRowCount=function(value){var chart=this.GetReportChart();if(!chart)return;chart.FixedRowCount=value;};//创建
|
|
12318
|
-
this.Create=function(option){var
|
|
12325
|
+
this.Create=function(option){var _this49=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
12319
12326
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.IsEnableSplash=true;//创建框架
|
|
12320
12327
|
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;//创建表格
|
|
12321
|
-
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
|
|
12328
|
+
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 _this49.GetEventCallback(id);};chart.GetStockDataCallback=function(symbol){return _this49.GetStockData(symbol);};chart.GetBlockDataCallback=function(symbol){return _this49.GetBlockData(symbol);};chart.GetFlashBGDataCallback=function(symbol,time){return _this49.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;this.ChartPaint[0]=chart;//页脚
|
|
12322
12329
|
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;//是否显示表头
|
|
12323
12330
|
if(IFrameSplitOperator.IsNumber(option.FixedColumn))chart.FixedColumn=option.FixedColumn;//固定列
|
|
12324
12331
|
if(IFrameSplitOperator.IsNumber(option.BorderLine))this.Frame.BorderLine=option.BorderLine;//边框
|
|
12325
12332
|
if(IFrameSplitOperator.IsBool(option.TabShow))chart.Tab.IsShow=option.TabShow;if(IFrameSplitOperator.IsNumber(option.FixedRowCount))chart.FixedRowCount=option.FixedRowCount;//固定行
|
|
12326
12333
|
if(IFrameSplitOperator.IsBool(option.ItemBorder))chart.IsDrawBorder=option.ItemBorder;//单元格边框
|
|
12327
|
-
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){
|
|
12328
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
12329
|
-
this.UIElement.ondblclick=function(e){
|
|
12330
|
-
this.UIElement.ontouchstart=function(e){
|
|
12334
|
+
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){_this49.OnKeyDown(e);},true);//键盘消息
|
|
12335
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this49.OnWheel(e);},true);//上下滚动消息
|
|
12336
|
+
this.UIElement.ondblclick=function(e){_this49.UIOnDblClick(e);};this.UIElement.onmousedown=function(e){_this49.UIOnMouseDown(e);};this.UIElement.onmouseup=function(e){_this49.UIOnMounseUp(e);};this.UIElement.oncontextmenu=function(e){_this49.UIOnContextMenu(e);};this.UIElement.onmousemove=function(e){_this49.UIOnMouseMove(e);};this.UIElement.onmouseout=function(e){_this49.UIOnMounseOut(e);};this.UIElement.onmouseleave=function(e){_this49.UIOnMouseleave(e);};//手机拖拽
|
|
12337
|
+
this.UIElement.ontouchstart=function(e){_this49.OnTouchStart(e);};this.UIElement.ontouchmove=function(e){_this49.OnTouchMove(e);};this.UIElement.ontouchend=function(e){_this49.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();//获取设备的分辨率
|
|
12331
12338
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12332
12339
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
12333
|
-
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
|
|
12340
|
+
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 _this50=this;if(typeof this.FlashBGTimer=='number'){clearTimeout(this.FlashBGTimer);this.FlashBGTimer=null;}this.FlashBGTimer=setTimeout(function(){_this50.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;};//设置股票列表
|
|
12334
12341
|
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){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;}}this.RequestMemberListData();};this.RequestMemberListData=function(){//this.ChartSplashPaint.SetTitle(this.SplashTitle.MemberList);
|
|
12335
12342
|
//this.ChartSplashPaint.EnableSplash(true);
|
|
12336
12343
|
//this.Draw();
|
|
@@ -12349,7 +12356,7 @@ this.GetStockData=function(symbol){if(!this.MapStockData)return null;if(!this.Ma
|
|
|
12349
12356
|
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)//超时的删除
|
|
12350
12357
|
{this.FlashBG.delete(symbol);return null;}if(!stockItem.Data||stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}var aryDelID=[];//超时需要参数的
|
|
12351
12358
|
var _iteratorNormalCompletion22=true;var _didIteratorError22=false;var _iteratorError22=undefined;try{for(var _iterator22=(0,_getIterator3.default)(stockItem.Data),_step22;!(_iteratorNormalCompletion22=(_step22=_iterator22.next()).done);_iteratorNormalCompletion22=true){var mapItem=_step22.value;var item=mapItem[1];if(time-item.Time>=timeDiff||item.Count<=0)aryDelID.push(item.ID);}}catch(err){_didIteratorError22=true;_iteratorError22=err;}finally{try{if(!_iteratorNormalCompletion22&&_iterator22.return){_iterator22.return();}}finally{if(_didIteratorError22){throw _iteratorError22;}}}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=是否延迟
|
|
12352
|
-
this.DelayUpdateStockData=function(){var
|
|
12359
|
+
this.DelayUpdateStockData=function(){var _this51=this;if(this.DelayUpdateTimer!=null){clearTimeout(this.DelayUpdateTimer);this.DelayUpdateTimer=null;}var frequency=this.DelayUpdateFrequency;this.DelayUpdateTimer=setTimeout(function(){_this51.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);//远程排序
|
|
12353
12360
|
return;}}var arySymbol=chart.ShowSymbol;if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return;this.RequestStockData(arySymbol);};//下载股票数据
|
|
12354
12361
|
this.RequestStockData=function(arySymbol){var self=this;if(this.NetworkFilter){var obj={Name:'JSDealChartContainer::RequestStockData',//类名::函数名
|
|
12355
12362
|
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();//更新的股票列表
|
|
@@ -12403,7 +12410,7 @@ var result=this.MoveSelectedRow(-1);if(result){if(result.Redraw)this.Draw();if(r
|
|
|
12403
12410
|
var result=this.MoveSelectedRow(1);if(result){if(result.Redraw)this.Draw();if(result.Update)this.DelayUpdateStockData();}break;case 37://left
|
|
12404
12411
|
if(this.MoveXOffset(-1))this.Draw();break;case 39://right
|
|
12405
12412
|
if(this.MoveXOffset(1))this.Draw();break;}//不让滚动条滚动
|
|
12406
|
-
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
|
|
12413
|
+
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 _this52=this;this.DragXScroll=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 },
|
|
12407
12414
|
//LastMove:{ X:e.clientX, Y:e.clientY},
|
|
12408
12415
|
ClickData:dragColumnWidth,ColumnWidth:dragColumnWidth.Column.Width};}else{var clickData=chart.OnMouseDown(x,y,e);if(!clickData)return;//if (e.button!=0) return;
|
|
12409
12416
|
if((clickData.Type==2||clickData.Type==4)&&(e.button==0||e.button==2))//点击行|固定行
|
|
@@ -12414,7 +12421,7 @@ if((clickData.Type==2||clickData.Type==4)&&(e.button==0||e.button==2))//点击
|
|
|
12414
12421
|
{if(this.MoveXOffset(1))this.Draw();}else if(tabData.Type==3)//滚动条
|
|
12415
12422
|
{this.DragXScroll={Click:{X:x,Y:y},LastMove:{X:x,Y:y}};}else if(tabData.Type==4)//滚动条内部
|
|
12416
12423
|
{if(this.SetXOffset(tabData.Pos))this.Draw();}else if(tabData.Type==5)//标签
|
|
12417
|
-
{this.OnClickTab(tabData,e);}}}}document.onmousemove=function(e){
|
|
12424
|
+
{this.OnClickTab(tabData,e);}}}}document.onmousemove=function(e){_this52.DocOnMouseMove(e);};document.onmouseup=function(e){_this52.DocOnMouseUp(e);};};this.UIOnMounseUp=function(e){console.log('"UIOnMounseUp');};//去掉右键菜单
|
|
12418
12425
|
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"};;//鼠标状态
|
|
12419
12426
|
var report=this.GetReportChart();var cell=null;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)
|
|
12420
12427
|
}}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;};this.UIOnMounseOut=function(e){var tabChart=this.GetTabChart();if(tabChart&&tabChart.MoveOnTabIndex>=0){tabChart.MoveOnTabIndex=-1;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}`);
|
|
@@ -12453,8 +12460,8 @@ if(chart.SelectedModel==0)//不可翻页模式, 只能在当前页移动
|
|
|
12453
12460
|
{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;};//左右移动
|
|
12454
12461
|
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.GotoLastPage=function(){var chart=this.ChartPaint[0];if(!chart)return;//显示最后一屏
|
|
12455
12462
|
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.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();}};//点表头
|
|
12456
|
-
this.OnClickHeader=function(clickData,e){var
|
|
12457
|
-
{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
|
|
12463
|
+
this.OnClickHeader=function(clickData,e){var _this53=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)//本地排序
|
|
12464
|
+
{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 _this53.LocalSort(left,right,header.Column,sortInfo.Sort);});}}else if(header.Column.Sort==2)//远程排序
|
|
12458
12465
|
{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);//远程排序
|
|
12459
12466
|
return;}}this.Data.YOffset=0;this.ResetReportSelectStatus();this.SortInfo.Field=sortInfo.Field;this.SortInfo.Sort=sortInfo.Sort;this.Draw();this.DelayUpdateStockData();}}};//点击标签
|
|
12460
12467
|
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
|
|
@@ -12701,11 +12708,11 @@ this.MapSymbol.clear();this.Data.Data=[];this.Data.XOffset=0;this.Data.YOffset=0
|
|
|
12701
12708
|
}
|
|
12702
12709
|
this.ChartPaint[0].SelectedRow=0;
|
|
12703
12710
|
*/};//创建
|
|
12704
|
-
this.Create=function(option){var
|
|
12711
|
+
this.Create=function(option){var _this54=this;this.UIElement.JSChartContainer=this;//创建框架
|
|
12705
12712
|
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;//创建表格
|
|
12706
|
-
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
|
|
12707
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
12708
|
-
this.UIElement.ondblclick=function(e){
|
|
12713
|
+
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 _this54.GetEventCallback(id);};chart.GetStockDataCallback=function(symbol){return _this54.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){_this54.OnKeyDown(e);},true);//键盘消息
|
|
12714
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this54.OnWheel(e);},true);//上下滚动消息
|
|
12715
|
+
this.UIElement.ondblclick=function(e){_this54.UIOnDblClick(e);};this.UIElement.onmousedown=function(e){_this54.UIOnMouseDown(e);};this.UIElement.oncontextmenu=function(e){_this54.UIOnContextMenu(e);};this.UIElement.onmousemove=function(e){_this54.UIOnMouseMove(e);};this.UIElement.onmouseout=function(e){_this54.UIOnMounseOut(e);};this.UIElement.onmouseleave=function(e){_this54.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();//获取设备的分辨率
|
|
12709
12716
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12710
12717
|
this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
12711
12718
|
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;}};//设置事件回调
|
|
@@ -12722,9 +12729,9 @@ var result=this.MoveSelectedRow(1);if(result){if(result.Redraw)this.Draw();}brea
|
|
|
12722
12729
|
if(this.MoveXOffset(-1))this.Draw();break;case 39://right
|
|
12723
12730
|
if(this.MoveXOffset(1))this.Draw();break;case 13://Enter
|
|
12724
12731
|
this.OnSelectedSymbol();break;}//不让滚动条滚动
|
|
12725
|
-
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
|
|
12732
|
+
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 _this55=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;
|
|
12726
12733
|
if(clickData.Type==2&&(e.button==0||e.button==2))//点击行
|
|
12727
|
-
{if(clickData.Redraw==true)this.Draw();}}document.onmousemove=function(e){
|
|
12734
|
+
{if(clickData.Redraw==true)this.Draw();}}document.onmousemove=function(e){_this55.DocOnMouseMove(e);};document.onmouseup=function(e){_this55.DocOnMouseUp(e);};};//去掉右键菜单
|
|
12728
12735
|
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)
|
|
12729
12736
|
// this.StopAutoDragScrollTimer();
|
|
12730
12737
|
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}`);
|
|
@@ -12837,12 +12844,12 @@ this.HQChart=null;this.ChartDestory=function()//销毁
|
|
|
12837
12844
|
//{event:事件id, callback:回调函数}
|
|
12838
12845
|
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)//获取事件回调
|
|
12839
12846
|
{if(!this.mapEvent.has(id))return null;var item=this.mapEvent.get(id);return item;};//创建
|
|
12840
|
-
this.Create=function(option){var
|
|
12847
|
+
this.Create=function(option){var _this56=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
12841
12848
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.IsEnableSplash=true;//创建框架
|
|
12842
12849
|
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;//背景
|
|
12843
|
-
var chart=new ScrollBarBGChart();chart.ChartFrame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return
|
|
12844
|
-
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
|
|
12845
|
-
this.UIElement.onmousedown=function(e){
|
|
12850
|
+
var chart=new ScrollBarBGChart();chart.ChartFrame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return _this56.GetEventCallback(id);};this.ChartPaint.push(chart);//创建滑块
|
|
12851
|
+
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 _this56.GetEventCallback(id);};this.SliderChart=chart;this.ChartPaint.push(chart);//this.UIElement.ondblclick=(e)=>{ this.UIOnDblClick(e); }
|
|
12852
|
+
this.UIElement.onmousedown=function(e){_this56.UIOnMouseDown(e);};this.UIElement.oncontextmenu=function(e){_this56.UIOnContextMenu(e);};this.UIElement.onmousemove=function(e){_this56.UIOnMouseMove(e);};this.UIElement.onmouseout=function(e){_this56.UIOnMounseOut(e);};this.UIElement.onmouseleave=function(e){_this56.UIOnMouseleave(e);};//手机拖拽
|
|
12846
12853
|
//this.UIElement.ontouchstart=(e)=> { this.OnTouchStart(e); }
|
|
12847
12854
|
//this.UIElement.ontouchmove=(e)=> {this.OnTouchMove(e); }
|
|
12848
12855
|
//this.UIElement.ontouchend=(e)=> {this.OnTouchEnd(e); }
|
|
@@ -12850,13 +12857,13 @@ this.UIElement.onmousedown=function(e){_this57.UIOnMouseDown(e);};this.UIElement
|
|
|
12850
12857
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
12851
12858
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
12852
12859
|
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;}};//未启动
|
|
12853
|
-
this.UIOnDblClick=function(e){};this.CancelDragTimer=function(){if(this.DragTimer){clearTimeout(this.DragTimer);this.DragTimer=null;}};this.UIOnMouseDown=function(e){var
|
|
12854
|
-
}document.onmousemove=function(e){
|
|
12860
|
+
this.UIOnDblClick=function(e){};this.CancelDragTimer=function(){if(this.DragTimer){clearTimeout(this.DragTimer);this.DragTimer=null;}};this.UIOnMouseDown=function(e){var _this57=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;//重绘次数
|
|
12861
|
+
}document.onmousemove=function(e){_this57.DocOnMouseMove(e);};document.onmouseup=function(e){_this57.DocOnMouseUp(e);};};//去掉右键菜单
|
|
12855
12862
|
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"};;//鼠标状态
|
|
12856
|
-
var item=this.SliderChart.PtInChart(x,y);if(item){switch(item.Data.Type){case 0:mouseStatus={Cursor:"move",Name:"SliderChart"};break;case 1:case 2:mouseStatus={Cursor:"ew-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
|
|
12863
|
+
var item=this.SliderChart.PtInChart(x,y);if(item){switch(item.Data.Type){case 0:mouseStatus={Cursor:"move",Name:"SliderChart"};break;case 1:case 2:mouseStatus={Cursor:"ew-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 _this58=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)//整体移动
|
|
12857
12864
|
{if(xStart<left)//第1页
|
|
12858
12865
|
{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)//左移动
|
|
12859
|
-
{if(xStart<=left){xStart=pageRange.First.XStart;}this.SliderChart.XStart=xStart;}else if(type==2){if(xEnd>=right){xEnd=pageRange.Last.XEnd;}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(){
|
|
12866
|
+
{if(xStart<=left){xStart=pageRange.First.XStart;}this.SliderChart.XStart=xStart;}else if(type==2){if(xEnd>=right){xEnd=pageRange.Last.XEnd;}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(){_this58.DragUpdate(_this58.DragSlider);},this.DelayDragFrequency);}}};this.DocOnMouseUp=function(e){//清空事件
|
|
12860
12867
|
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: }
|
|
12861
12868
|
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();};//移动滑块
|
|
12862
12869
|
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页
|
|
@@ -12914,13 +12921,13 @@ this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
|
|
|
12914
12921
|
//
|
|
12915
12922
|
//////////////////////////////////////////////////////////////////////////////////
|
|
12916
12923
|
function HQChartScriptWorker(){this.Status=0;//0=空闲 1=运行
|
|
12917
|
-
this.Create=function(){var
|
|
12918
|
-
};this.ExecuteScript=function(indexData,message){var
|
|
12924
|
+
this.Create=function(){var _this59=this;addEventListener('message',function(obj){_this59.OnRecvMessage(obj);});};this.NetworkFilter=function(data,callback,indexInfo){JSConsole.Complier.Log('[HQChartScriptWorker::NetworkFilter] ['+data.Name+']['+data.Explain+'] data=',data);//数据下载
|
|
12925
|
+
};this.ExecuteScript=function(indexData,message){var _this60=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){_this60.OnExecuteError(error,indexInfo,message);};scriptObj.FinishCallback=function(data,jsExectute){_this60.OnExecuteFinish(data,indexInfo,jsExectute,message);};scriptObj.NetworkFilter=function(data,callback){_this60.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=分钟
|
|
12919
12926
|
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;//执行状态
|
|
12920
12927
|
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);};}/********************************************************************************
|
|
12921
12928
|
* 版本信息输出
|
|
12922
12929
|
*
|
|
12923
|
-
*/var HQCHART_VERSION="1.1.
|
|
12930
|
+
*/var HQCHART_VERSION="1.1.12777";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();//把给外界调用的方法暴露出来
|
|
12924
12931
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12925
12932
|
// BaseIndex:BaseIndex,
|
|
12926
12933
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -75025,6 +75025,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
75025
75025
|
this.DataStatus.LatestDay=false;
|
|
75026
75026
|
}
|
|
75027
75027
|
|
|
75028
|
+
this.ClearOverlaySymbolData=function()
|
|
75029
|
+
{
|
|
75030
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
75031
|
+
{
|
|
75032
|
+
var chart=this.OverlayChartPaint[i];
|
|
75033
|
+
chart.Status=OVERLAY_STATUS_ID.STATUS_NONE_ID; //重置状态
|
|
75034
|
+
chart.Data.Data=[]; //清空数据
|
|
75035
|
+
}
|
|
75036
|
+
}
|
|
75037
|
+
|
|
75028
75038
|
//切换股票代码
|
|
75029
75039
|
this.ChangeSymbol=function(symbol,option)
|
|
75030
75040
|
{
|
|
@@ -75192,6 +75202,58 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
75192
75202
|
this.RequestData();
|
|
75193
75203
|
}
|
|
75194
75204
|
|
|
75205
|
+
//[{ Symbol: , Color, Option: }]
|
|
75206
|
+
this.OverlaySymbols=function(aryData)
|
|
75207
|
+
{
|
|
75208
|
+
var aryNewOverlay=[];
|
|
75209
|
+
for(var i=0, j=0;i<aryData.length;++i) //去重,已经叠加过的不用在叠加
|
|
75210
|
+
{
|
|
75211
|
+
var overlayItem=aryData[i];
|
|
75212
|
+
var strSymbol=overlayItem.Symbol;
|
|
75213
|
+
var bFind=false;
|
|
75214
|
+
for(j=0;j<this.OverlayChartPaint.length; ++j)
|
|
75215
|
+
{
|
|
75216
|
+
var item=this.OverlayChartPaint[j];
|
|
75217
|
+
if (item.Symbol==strSymbol)
|
|
75218
|
+
{
|
|
75219
|
+
bFind=true;
|
|
75220
|
+
console.warn(`[MinuteChartContainer::OverlaySymbols] overlay symbol=${strSymbol} exist.`);
|
|
75221
|
+
break;
|
|
75222
|
+
}
|
|
75223
|
+
}
|
|
75224
|
+
|
|
75225
|
+
if (!bFind) aryNewOverlay.push(overlayItem);
|
|
75226
|
+
}
|
|
75227
|
+
|
|
75228
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(aryNewOverlay)) return true;
|
|
75229
|
+
|
|
75230
|
+
for(var i=0;i<aryNewSymbol.length;++i)
|
|
75231
|
+
{
|
|
75232
|
+
var overlayItem=aryNewSymbol[i];
|
|
75233
|
+
var strSymbol=overlayItem.Symbol;
|
|
75234
|
+
var paint=new ChartOverlayMinutePriceLine();
|
|
75235
|
+
paint.Canvas=this.Canvas;
|
|
75236
|
+
paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
|
|
75237
|
+
paint.ChartFrame=this.Frame.SubFrame[0].Frame;
|
|
75238
|
+
paint.Name="Overlay-Minute";
|
|
75239
|
+
paint.Symbol=strSymbol;
|
|
75240
|
+
paint.Identify=`Overlay-Minute-${strSymbol}`;
|
|
75241
|
+
if (overlayItem.Option && overlayItem.Option.Color) paint.Color=overlayItem.Option.Color; //外部设置颜色
|
|
75242
|
+
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
|
|
75243
|
+
++g_JSChartResource.OverlaySymbol.Random;
|
|
75244
|
+
paint.MainData=this.SourceData; //绑定主图数据
|
|
75245
|
+
|
|
75246
|
+
if (paint.SetOption) paint.SetOption(overlayItem.Option);
|
|
75247
|
+
|
|
75248
|
+
this.OverlayChartPaint.push(paint);
|
|
75249
|
+
}
|
|
75250
|
+
|
|
75251
|
+
if (this.DayCount<=1) this.RequestOverlayMinuteData(); //请求数据
|
|
75252
|
+
else this.RequestOverlayHistoryMinuteData();
|
|
75253
|
+
|
|
75254
|
+
return true;
|
|
75255
|
+
}
|
|
75256
|
+
|
|
75195
75257
|
//叠加股票 symbol支持数据 ["600000.sh", "0000001.sz"]
|
|
75196
75258
|
this.OverlaySymbol=function(symbol,option)
|
|
75197
75259
|
{
|
|
@@ -76367,7 +76429,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
76367
76429
|
|
|
76368
76430
|
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
76369
76431
|
{
|
|
76370
|
-
|
|
76432
|
+
var item=this.OverlayChartPaint[i]
|
|
76371
76433
|
var symbol=item.Symbol;
|
|
76372
76434
|
if (!symbol) continue;
|
|
76373
76435
|
if (item.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID) continue;
|
|
@@ -79169,6 +79169,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79169
79169
|
this.DataStatus.LatestDay=false;
|
|
79170
79170
|
}
|
|
79171
79171
|
|
|
79172
|
+
this.ClearOverlaySymbolData=function()
|
|
79173
|
+
{
|
|
79174
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
79175
|
+
{
|
|
79176
|
+
var chart=this.OverlayChartPaint[i];
|
|
79177
|
+
chart.Status=OVERLAY_STATUS_ID.STATUS_NONE_ID; //重置状态
|
|
79178
|
+
chart.Data.Data=[]; //清空数据
|
|
79179
|
+
}
|
|
79180
|
+
}
|
|
79181
|
+
|
|
79172
79182
|
//切换股票代码
|
|
79173
79183
|
this.ChangeSymbol=function(symbol,option)
|
|
79174
79184
|
{
|
|
@@ -79336,6 +79346,58 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79336
79346
|
this.RequestData();
|
|
79337
79347
|
}
|
|
79338
79348
|
|
|
79349
|
+
//[{ Symbol: , Color, Option: }]
|
|
79350
|
+
this.OverlaySymbols=function(aryData)
|
|
79351
|
+
{
|
|
79352
|
+
var aryNewOverlay=[];
|
|
79353
|
+
for(var i=0, j=0;i<aryData.length;++i) //去重,已经叠加过的不用在叠加
|
|
79354
|
+
{
|
|
79355
|
+
var overlayItem=aryData[i];
|
|
79356
|
+
var strSymbol=overlayItem.Symbol;
|
|
79357
|
+
var bFind=false;
|
|
79358
|
+
for(j=0;j<this.OverlayChartPaint.length; ++j)
|
|
79359
|
+
{
|
|
79360
|
+
var item=this.OverlayChartPaint[j];
|
|
79361
|
+
if (item.Symbol==strSymbol)
|
|
79362
|
+
{
|
|
79363
|
+
bFind=true;
|
|
79364
|
+
console.warn(`[MinuteChartContainer::OverlaySymbols] overlay symbol=${strSymbol} exist.`);
|
|
79365
|
+
break;
|
|
79366
|
+
}
|
|
79367
|
+
}
|
|
79368
|
+
|
|
79369
|
+
if (!bFind) aryNewOverlay.push(overlayItem);
|
|
79370
|
+
}
|
|
79371
|
+
|
|
79372
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(aryNewOverlay)) return true;
|
|
79373
|
+
|
|
79374
|
+
for(var i=0;i<aryNewSymbol.length;++i)
|
|
79375
|
+
{
|
|
79376
|
+
var overlayItem=aryNewSymbol[i];
|
|
79377
|
+
var strSymbol=overlayItem.Symbol;
|
|
79378
|
+
var paint=new ChartOverlayMinutePriceLine();
|
|
79379
|
+
paint.Canvas=this.Canvas;
|
|
79380
|
+
paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
|
|
79381
|
+
paint.ChartFrame=this.Frame.SubFrame[0].Frame;
|
|
79382
|
+
paint.Name="Overlay-Minute";
|
|
79383
|
+
paint.Symbol=strSymbol;
|
|
79384
|
+
paint.Identify=`Overlay-Minute-${strSymbol}`;
|
|
79385
|
+
if (overlayItem.Option && overlayItem.Option.Color) paint.Color=overlayItem.Option.Color; //外部设置颜色
|
|
79386
|
+
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
|
|
79387
|
+
++g_JSChartResource.OverlaySymbol.Random;
|
|
79388
|
+
paint.MainData=this.SourceData; //绑定主图数据
|
|
79389
|
+
|
|
79390
|
+
if (paint.SetOption) paint.SetOption(overlayItem.Option);
|
|
79391
|
+
|
|
79392
|
+
this.OverlayChartPaint.push(paint);
|
|
79393
|
+
}
|
|
79394
|
+
|
|
79395
|
+
if (this.DayCount<=1) this.RequestOverlayMinuteData(); //请求数据
|
|
79396
|
+
else this.RequestOverlayHistoryMinuteData();
|
|
79397
|
+
|
|
79398
|
+
return true;
|
|
79399
|
+
}
|
|
79400
|
+
|
|
79339
79401
|
//叠加股票 symbol支持数据 ["600000.sh", "0000001.sz"]
|
|
79340
79402
|
this.OverlaySymbol=function(symbol,option)
|
|
79341
79403
|
{
|
|
@@ -80511,7 +80573,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
80511
80573
|
|
|
80512
80574
|
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
80513
80575
|
{
|
|
80514
|
-
|
|
80576
|
+
var item=this.OverlayChartPaint[i]
|
|
80515
80577
|
var symbol=item.Symbol;
|
|
80516
80578
|
if (!symbol) continue;
|
|
80517
80579
|
if (item.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID) continue;
|
|
@@ -131315,7 +131377,7 @@ function ScrollBarBGChart()
|
|
|
131315
131377
|
|
|
131316
131378
|
|
|
131317
131379
|
|
|
131318
|
-
var HQCHART_VERSION="1.1.
|
|
131380
|
+
var HQCHART_VERSION="1.1.12777";
|
|
131319
131381
|
|
|
131320
131382
|
function PrintHQChartVersion()
|
|
131321
131383
|
{
|
|
@@ -79213,6 +79213,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79213
79213
|
this.DataStatus.LatestDay=false;
|
|
79214
79214
|
}
|
|
79215
79215
|
|
|
79216
|
+
this.ClearOverlaySymbolData=function()
|
|
79217
|
+
{
|
|
79218
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
79219
|
+
{
|
|
79220
|
+
var chart=this.OverlayChartPaint[i];
|
|
79221
|
+
chart.Status=OVERLAY_STATUS_ID.STATUS_NONE_ID; //重置状态
|
|
79222
|
+
chart.Data.Data=[]; //清空数据
|
|
79223
|
+
}
|
|
79224
|
+
}
|
|
79225
|
+
|
|
79216
79226
|
//切换股票代码
|
|
79217
79227
|
this.ChangeSymbol=function(symbol,option)
|
|
79218
79228
|
{
|
|
@@ -79380,6 +79390,58 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79380
79390
|
this.RequestData();
|
|
79381
79391
|
}
|
|
79382
79392
|
|
|
79393
|
+
//[{ Symbol: , Color, Option: }]
|
|
79394
|
+
this.OverlaySymbols=function(aryData)
|
|
79395
|
+
{
|
|
79396
|
+
var aryNewOverlay=[];
|
|
79397
|
+
for(var i=0, j=0;i<aryData.length;++i) //去重,已经叠加过的不用在叠加
|
|
79398
|
+
{
|
|
79399
|
+
var overlayItem=aryData[i];
|
|
79400
|
+
var strSymbol=overlayItem.Symbol;
|
|
79401
|
+
var bFind=false;
|
|
79402
|
+
for(j=0;j<this.OverlayChartPaint.length; ++j)
|
|
79403
|
+
{
|
|
79404
|
+
var item=this.OverlayChartPaint[j];
|
|
79405
|
+
if (item.Symbol==strSymbol)
|
|
79406
|
+
{
|
|
79407
|
+
bFind=true;
|
|
79408
|
+
console.warn(`[MinuteChartContainer::OverlaySymbols] overlay symbol=${strSymbol} exist.`);
|
|
79409
|
+
break;
|
|
79410
|
+
}
|
|
79411
|
+
}
|
|
79412
|
+
|
|
79413
|
+
if (!bFind) aryNewOverlay.push(overlayItem);
|
|
79414
|
+
}
|
|
79415
|
+
|
|
79416
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(aryNewOverlay)) return true;
|
|
79417
|
+
|
|
79418
|
+
for(var i=0;i<aryNewSymbol.length;++i)
|
|
79419
|
+
{
|
|
79420
|
+
var overlayItem=aryNewSymbol[i];
|
|
79421
|
+
var strSymbol=overlayItem.Symbol;
|
|
79422
|
+
var paint=new ChartOverlayMinutePriceLine();
|
|
79423
|
+
paint.Canvas=this.Canvas;
|
|
79424
|
+
paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
|
|
79425
|
+
paint.ChartFrame=this.Frame.SubFrame[0].Frame;
|
|
79426
|
+
paint.Name="Overlay-Minute";
|
|
79427
|
+
paint.Symbol=strSymbol;
|
|
79428
|
+
paint.Identify=`Overlay-Minute-${strSymbol}`;
|
|
79429
|
+
if (overlayItem.Option && overlayItem.Option.Color) paint.Color=overlayItem.Option.Color; //外部设置颜色
|
|
79430
|
+
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
|
|
79431
|
+
++g_JSChartResource.OverlaySymbol.Random;
|
|
79432
|
+
paint.MainData=this.SourceData; //绑定主图数据
|
|
79433
|
+
|
|
79434
|
+
if (paint.SetOption) paint.SetOption(overlayItem.Option);
|
|
79435
|
+
|
|
79436
|
+
this.OverlayChartPaint.push(paint);
|
|
79437
|
+
}
|
|
79438
|
+
|
|
79439
|
+
if (this.DayCount<=1) this.RequestOverlayMinuteData(); //请求数据
|
|
79440
|
+
else this.RequestOverlayHistoryMinuteData();
|
|
79441
|
+
|
|
79442
|
+
return true;
|
|
79443
|
+
}
|
|
79444
|
+
|
|
79383
79445
|
//叠加股票 symbol支持数据 ["600000.sh", "0000001.sz"]
|
|
79384
79446
|
this.OverlaySymbol=function(symbol,option)
|
|
79385
79447
|
{
|
|
@@ -80555,7 +80617,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
80555
80617
|
|
|
80556
80618
|
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
80557
80619
|
{
|
|
80558
|
-
|
|
80620
|
+
var item=this.OverlayChartPaint[i]
|
|
80559
80621
|
var symbol=item.Symbol;
|
|
80560
80622
|
if (!symbol) continue;
|
|
80561
80623
|
if (item.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID) continue;
|
|
@@ -131473,7 +131535,7 @@ function HQChartScriptWorker()
|
|
|
131473
131535
|
|
|
131474
131536
|
|
|
131475
131537
|
|
|
131476
|
-
var HQCHART_VERSION="1.1.
|
|
131538
|
+
var HQCHART_VERSION="1.1.12777";
|
|
131477
131539
|
|
|
131478
131540
|
function PrintHQChartVersion()
|
|
131479
131541
|
{
|