hqchart 1.1.11264 → 1.1.11276
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
|
@@ -1545,7 +1545,8 @@ ON_CLICK_REPORT_FIXEDROW:59,//点击报价列表点击固定行
|
|
|
1545
1545
|
ON_RCLICK_REPORT_FIXEDROW:60,//点击报价列表右键点击固定行
|
|
1546
1546
|
ON_KEYDOWN_SELECT_RECT_FIRST:61,//区间选择第1个位置事件
|
|
1547
1547
|
ON_CLICK_FRAME_TOOLBAR:62,//指标标题工具栏
|
|
1548
|
-
ON_REPORT_DRAG_ROW:63
|
|
1548
|
+
ON_REPORT_DRAG_ROW:63,//自选股行拖拽
|
|
1549
|
+
ON_MOUSE_MOVE:64//鼠标移动
|
|
1549
1550
|
};var JSCHART_OPERATOR_ID={OP_SCROLL_LEFT:1,//往左移动
|
|
1550
1551
|
OP_SCROLL_RIGHT:2,//往右移动
|
|
1551
1552
|
OP_ZOOM_OUT:3,//缩小
|
|
@@ -1645,8 +1646,7 @@ this.MoveOnChartDrawPicture=null;if(this.ChartSplashPaint&&this.ChartSplashPaint
|
|
|
1645
1646
|
}
|
|
1646
1647
|
*///保存最后一次鼠标移动信息
|
|
1647
1648
|
var MoveStatus={X:x,Y:y,IsInClient:this.IsMouseOnClient(x,y)};this.LastMouseStatus.OnMouseMove=MoveStatus;this.LastMouseStatus.MoveOnPoint={X:x,Y:y};//鼠标移动的位置
|
|
1648
|
-
|
|
1649
|
-
this.MoveOnPoint={X:x,Y:y};this.OnMouseMove(x,y,e);this.LastMouseStatus.MoveOnPoint=null;};this.IsMouseOnClient=function(x,y){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);return isInClient;};this.UIOnContextMenu=function(e){if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var x=e.clientX-this.UIElement.getBoundingClientRect().left;var y=e.clientY-this.UIElement.getBoundingClientRect().top;if(typeof this.OnRightMenu=='function')this.OnRightMenu(x,y,e);//右键菜单事件
|
|
1649
|
+
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);var titleChart=this.TitlePaint[0];if(event&&titleChart)titleChart.OnMouseMoveEvent=event;this.MoveOnPoint={X:x,Y:y};this.OnMouseMove(x,y,e);this.LastMouseStatus.MoveOnPoint=null;if(titleChart)titleChart.OnMouseMoveEvent=null;};this.IsMouseOnClient=function(x,y){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);return isInClient;};this.UIOnContextMenu=function(e){if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var x=e.clientX-this.UIElement.getBoundingClientRect().left;var y=e.clientY-this.UIElement.getBoundingClientRect().top;if(typeof this.OnRightMenu=='function')this.OnRightMenu(x,y,e);//右键菜单事件
|
|
1650
1650
|
return false;};this.UIOnDblClick=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;this.OnDoubleClick(x,y,e);};//是否在拖拽Y轴上
|
|
1651
1651
|
this.TryYDrag=function(x,y){if(!this.EnableYDrag)return null;if(!this.EnableYDrag.Left&&!this.EnableYDrag.Right)return null;if(!this.Frame||!this.Frame.PtInFrameY)return null;var dragY=this.Frame.PtInFrameY(x,y);if(!dragY||dragY.Index<0||dragY.IsOverlay==true)return null;if(dragY.Left&&this.EnableYDrag.Left&&this.Frame.IsEnableDragY(dragY.Index)){return dragY;}if(dragY.Right&&this.EnableYDrag.Right&&this.Frame.IsEnableDragY(dragY.Index)){return dragY;}return null;};//是否可以上下拖拽
|
|
1652
1652
|
this.TryUpDownDrag=function(x,y){var windowIndex=this.Frame.PtInFrame(x,y);if(windowIndex<0)return null;var item=this.Frame.SubFrame[windowIndex];if(!item||!item.Frame)return null;var frame=item.Frame;if(!frame.YSplitOperator||!frame.YSplitOperator.FixedYMaxMin)return null;return{Index:windowIndex,X:x,Y:y};};this.TryRectSelectDrag=function(x,y){var paint=this.GetRectSelectPaint();if(!paint)return null;if(paint.GetPointCount()<=0)return null;var item=paint.PtInPaint(x,y);return{Item:item,X:x,Y:y};};this.TryClickCrossCursor=function(x,y,e){if(!this.ChartCorssCursor)return;var button=this.ChartCorssCursor.PtInButton(x,y);if(!button)return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_CROSSCURSOR_RIGHT);if(event&&event.Callback){var sendData={Button:button,e:e};event.Callback(event,sendData,this);}return true;};this.UIOnMouseDown=function(e){var _this4=this;this.MoveOnChartDrawPicture=null;if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;this.ClickDownPoint={X:e.clientX,Y:e.clientY};this.IsOnTouch=true;this.BorderDrag=null;this.YDrag=null;this.UpDownDrag=null;this.RectSelectDrag=null;this.IndexChartDrag=null;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var button=this.Frame.PtInButtons(x,y);if(button&&this.ClickFrameButton){this.ClickFrameButton(button,e);return;}else{button=this.PtInExtendChartButtons(x,y);if(button&&this.ClickExtendChartButton){this.ClickExtendChartButton(button,e);return;}}if(this.TryClickCrossCursor(x,y,e)){return;}if(this.TryClickLock){//JSConsole.Chart.Log('[uielement.onmousedown] left, top ',e.clientX, e.clientY, this.getBoundingClientRect().left,this.getBoundingClientRect().top);
|
|
@@ -4222,7 +4222,7 @@ this.OverlayChartPaint;//叠加画法
|
|
|
4222
4222
|
this.IsShowName=true;//是否显示股票名称
|
|
4223
4223
|
this.IsShowSettingInfo=true;//是否显示设置信息(周期 复权)
|
|
4224
4224
|
this.IsShowDateTime=true;//是否显示日期
|
|
4225
|
-
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;this.OnDrawEvent;this.ReloadResource=function(){this.Font=g_JSChartResource.TitleFont;this.TitleColor=g_JSChartResource.DefaultTextColor;this.UpColor=g_JSChartResource.UpTextColor;this.DownColor=g_JSChartResource.DownTextColor;this.UnchagneColor=g_JSChartResource.UnchagneTextColor;this.VolColor=g_JSChartResource.Title.VolColor;this.AmountColor=g_JSChartResource.Title.AmountColor;this.DateTimeColor=g_JSChartResource.Title.DateTimeColor;this.NameColor=g_JSChartResource.Title.NameColor;this.SettingColor=g_JSChartResource.Title.SettingColor;this.TurnoverRateColor=g_JSChartResource.Title.TurnoverRateColor;//换手率
|
|
4225
|
+
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;this.OnDrawEvent;this.OnMouseMoveEvent;this.ReloadResource=function(){this.Font=g_JSChartResource.TitleFont;this.TitleColor=g_JSChartResource.DefaultTextColor;this.UpColor=g_JSChartResource.UpTextColor;this.DownColor=g_JSChartResource.DownTextColor;this.UnchagneColor=g_JSChartResource.UnchagneTextColor;this.VolColor=g_JSChartResource.Title.VolColor;this.AmountColor=g_JSChartResource.Title.AmountColor;this.DateTimeColor=g_JSChartResource.Title.DateTimeColor;this.NameColor=g_JSChartResource.Title.NameColor;this.SettingColor=g_JSChartResource.Title.SettingColor;this.TurnoverRateColor=g_JSChartResource.Title.TurnoverRateColor;//换手率
|
|
4226
4226
|
this.PositionColor=g_JSChartResource.Title.PositionColor;//持仓
|
|
4227
4227
|
};this.GetCurrentKLineData=function()//获取当天鼠标位置所在的K线数据
|
|
4228
4228
|
{if(this.CursorIndex==null||!this.Data)return null;if(this.Data.length<=0)return null;var index=this.CursorIndex;index=parseInt(index.toFixed(0));var dataIndex=this.Data.DataOffset+index;if(dataIndex>=this.Data.Data.length)dataIndex=this.Data.Data.length-1;if(dataIndex<0)return null;var item=this.Data.Data[dataIndex];return item;};this.DrawItem=function(item){var isHScreen=this.Frame.IsHScreen===true;var left=this.Frame.ChartBorder.GetLeft();var bottom=this.Frame.ChartBorder.GetTop()-this.Frame.ChartBorder.Top/2;var right=this.Frame.ChartBorder.GetRight();var defaultfloatPrecision=GetfloatPrecision(this.Symbol);//价格小数位数
|
|
@@ -4233,8 +4233,8 @@ var text=g_JSChartLocalization.GetText('KTitle-Vol',this.LanguageID)+IFrameSplit
|
|
|
4233
4233
|
{var value=item.Vol/item.FlowCapital*100;//成交量/流通A股*100
|
|
4234
4234
|
var text=g_JSChartLocalization.GetText('KTitle-Exchange',this.LanguageID)+IFrameSplitOperator.FormatValueString(value,2,this.LanguageID)+'%';if(!this.DrawText(text,this.TurnoverRateColor,position))return;}if(MARKET_SUFFIX_NAME.IsFutures(upperSymbol)&&IFrameSplitOperator.IsNumber(item.Position))//持仓量
|
|
4235
4235
|
{var text=g_JSChartLocalization.GetText('KTitle-Position',this.LanguageID)+item.Position;if(!this.DrawText(text,this.PositionColor,position))return;}//叠加股票的名字
|
|
4236
|
-
for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];if(!item.Symbol||!item.Title)continue;var name=item.Title;var clrText=item.Color;var text='['+name+']';if(!this.DrawText(text,clrText,position))return;}};this.Draw=function(){if(!this.IsShow)return;if(this.CursorIndex==null||!this.Data||this.Data.length<=0){this.OnDrawEventCallback(null);return;}this.Canvas.font=this.Font;this.SpaceWidth=this.Canvas.measureText('0').width;var index=this.CursorIndex;index=parseInt(index.toFixed(0));var dataIndex=this.Data.DataOffset+index;if(dataIndex>=this.Data.Data.length)dataIndex=this.Data.Data.length-1;if(dataIndex<0){this.OnDrawEventCallback(null);return;}var item=this.Data.Data[dataIndex];this.OnDrawEventCallback(item);this.Canvas.save();this.DrawItem(item);this.Canvas.restore();};this.OnDrawEventCallback=function(drawData){
|
|
4237
|
-
if(IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint)){data.OverlayStock=[];for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Symbol||!item.Title)continue;data.OverlayStock.push({Symbol:item.Symbol,Name:item.Title});}}this.OnDrawEvent.Callback(this.OnDrawEvent,data,this);};this.GetColor=function(price,yclse){if(price>yclse)return this.UpColor;else if(price<yclse)return this.DownColor;else return this.UnchagneColor;};this.DrawText=function(title,color,position){if(!title)return true;var isHScreen=this.Frame.IsHScreen===true;var right=this.Frame.ChartBorder.GetRight();if(isHScreen)right=this.Frame.ChartBorder.GetHeight();this.Canvas.fillStyle=color;var textWidth=this.Canvas.measureText(title).width;if(position.Left+textWidth>right)return false;if(this.IsShow)this.Canvas.fillText(title,position.Left,position.Bottom,textWidth);position.Left+=textWidth+this.SpaceWidth;return true;};}function DynamicMinuteTitlePainting(){this.newMethod=DynamicKLineTitlePainting;//派生
|
|
4236
|
+
for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];if(!item.Symbol||!item.Title)continue;var name=item.Title;var clrText=item.Color;var text='['+name+']';if(!this.DrawText(text,clrText,position))return;}};this.Draw=function(){if(!this.IsShow)return;if(this.CursorIndex==null||!this.Data||this.Data.length<=0){this.OnDrawEventCallback(null);return;}this.Canvas.font=this.Font;this.SpaceWidth=this.Canvas.measureText('0').width;var index=this.CursorIndex;index=parseInt(index.toFixed(0));var dataIndex=this.Data.DataOffset+index;if(dataIndex>=this.Data.Data.length)dataIndex=this.Data.Data.length-1;if(dataIndex<0){this.OnDrawEventCallback(null);return;}var item=this.Data.Data[dataIndex];this.OnDrawEventCallback(item);this.Canvas.save();this.DrawItem(item);this.Canvas.restore();};this.OnDrawEventCallback=function(drawData){var bDrawEvent=this.OnDrawEvent&&this.OnDrawEvent.Callback;var bMouseMoveEvent=this.OnMouseMoveEvent&&this.OnMouseMoveEvent.Callback;if(!bDrawEvent&&!bMouseMoveEvent)return;var data={Draw:drawData,Name:this.ClassName};if(this.Data&&this.Data.Data){var index=Math.abs(this.CursorIndex);index=parseInt(index.toFixed(0));var dataIndex=this.Data.DataOffset+index;var dataCount=this.Data.Data.length;data.DataIndex=dataIndex;data.DataCount=dataCount;}//叠加股票
|
|
4237
|
+
if(IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint)){data.OverlayStock=[];for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Symbol||!item.Title)continue;data.OverlayStock.push({Symbol:item.Symbol,Name:item.Title});}}if(bDrawEvent)this.OnDrawEvent.Callback(this.OnDrawEvent,data,this);if(bMouseMoveEvent)this.OnMouseMoveEvent.Callback(this.OnMouseMoveEvent,data,this);};this.GetColor=function(price,yclse){if(price>yclse)return this.UpColor;else if(price<yclse)return this.DownColor;else return this.UnchagneColor;};this.DrawText=function(title,color,position){if(!title)return true;var isHScreen=this.Frame.IsHScreen===true;var right=this.Frame.ChartBorder.GetRight();if(isHScreen)right=this.Frame.ChartBorder.GetHeight();this.Canvas.fillStyle=color;var textWidth=this.Canvas.measureText(title).width;if(position.Left+textWidth>right)return false;if(this.IsShow)this.Canvas.fillText(title,position.Left,position.Bottom,textWidth);position.Left+=textWidth+this.SpaceWidth;return true;};}function DynamicMinuteTitlePainting(){this.newMethod=DynamicKLineTitlePainting;//派生
|
|
4238
4238
|
this.newMethod();delete this.newMethod;this.ClassName='DynamicMinuteTitlePainting';this.SpaceWidth=1*GetDevicePixelRatio();this.YClose;this.IsShowDate=false;//标题是否显示日期
|
|
4239
4239
|
this.IsShowTime=true;//标题是否显示时间
|
|
4240
4240
|
this.IsShowName=true;//标题是否显示股票名字
|
|
@@ -4263,8 +4263,8 @@ var xText=border.ChartWidth;var yText=border.Top;this.Canvas.translate(xText,yTe
|
|
|
4263
4263
|
if(bDraw&&item&&IFrameSplitOperator.IsNumber(item.Price)){var color=this.GetColor(item.Price,this.YClose);var filedName='MTitle-AC-Price';if(this.BeforeOpenData&&this.BeforeOpenData.Ver==1.0)filedName="MTitle-Close";var text=g_JSChartLocalization.GetText(filedName,this.LanguageID)+item.Price.toFixed(defaultfloatPrecision);if(!this.DrawText(text,color,position))return;}//竞价涨幅
|
|
4264
4264
|
if(bDraw&&item&&IFrameSplitOperator.IsPlusNumber(this.YClose)&&IFrameSplitOperator.IsNumber(item.Price)){var value=(item.Price-this.YClose)/this.YClose*100;var color=this.GetColor(value,0);var filedName='MTitle-AC-Increase';if(this.BeforeOpenData&&this.BeforeOpenData.Ver==1.0)filedName="MTitle-Increase";var text=g_JSChartLocalization.GetText(filedName,this.LanguageID)+value.toFixed(2)+"%";if(!this.DrawText(text,color,position))return;}if(dataVersion==3.0){if(bDraw&&item&&IFrameSplitOperator.IsNumber(item.AvPrice)){var color=this.GetColor(item.Price,this.YClose);var text=g_JSChartLocalization.GetText('MTitle-AC-AvPrice',this.LanguageID)+item.AvPrice.toFixed(defaultfloatPrecision);if(!this.DrawText(text,color,position))return;}}//匹配量
|
|
4265
4265
|
if(bDraw&&IFrameSplitOperator.IsNumber(item.Vol[0])){var filedName='MTitle-AC-Vol';if(this.BeforeOpenData&&this.BeforeOpenData.Ver==1.0)filedName="MTitle-Vol";var text=g_JSChartLocalization.GetText(filedName,this.LanguageID)+IFrameSplitOperator.FromatIntegerString(item.Vol[0],2);if(!this.DrawText(text,this.VolColor,position))return;}//未匹配量
|
|
4266
|
-
if(bDraw&&IFrameSplitOperator.IsNumber(item.Vol[1])){var text=g_JSChartLocalization.GetText('MTitle-AC-NotMatchVol',this.LanguageID)+IFrameSplitOperator.FromatIntegerString(item.Vol[1],2);if(!this.DrawText(text,this.VolColor,position))return;}this.OnDrawCallAuctionEventCallback(callbackData);};this.OnDrawCallAuctionEventCallback=function(drawData){if(
|
|
4267
|
-
|
|
4266
|
+
if(bDraw&&IFrameSplitOperator.IsNumber(item.Vol[1])){var text=g_JSChartLocalization.GetText('MTitle-AC-NotMatchVol',this.LanguageID)+IFrameSplitOperator.FromatIntegerString(item.Vol[1],2);if(!this.DrawText(text,this.VolColor,position))return;}this.OnDrawCallAuctionEventCallback(callbackData);};this.OnDrawCallAuctionEventCallback=function(drawData){if(this.OnDrawEvent&&this.OnDrawEvent.Callback){var data={Draw:drawData,Name:this.ClassName};this.OnDrawEvent.Callback(this.OnDrawEvent,data,this);}if(this.OnMouseMoveEvent&&this.OnMouseMoveEvent.Callback){var data={Draw:drawData,Name:this.ClassName};this.OnMouseMoveEvent.Callback(this.OnDrawEvent,data,this);}};this.Draw=function(){this.LastShowData=null;if(!this.IsShow){//隐藏标题 并且没有回调事件
|
|
4267
|
+
var bEvent=this.OnDrawEvent&&this.OnDrawEvent.Callback||this.OnMouseMoveEvent&&this.OnMouseMoveEvent.Callback;if(!bEvent)return;}if(this.PointInfo&&(this.PointInfo.ClientPos==2||this.PointInfo.ClientPos==3||this.PointInfo.ClientPos>=200&&this.PointInfo.ClientPos<=299||this.PointInfo.ClientPos>=300&&this.PointInfo.ClientPos<=399)){//集合竞价区域
|
|
4268
4268
|
this.Canvas.save();this.DrawCallAuction();this.Canvas.restore();return;}if(this.CursorIndex==null||!this.Data||!this.Data.Data||this.Data.Data.length<=0){this.OnDrawEventCallback(null);if(this.IsAlwaysShowLastData){this.Canvas.save();this.DrawLastDataItem();this.Canvas.restore();}return;}this.Canvas.font=this.Font;this.SpaceWidth=this.Canvas.measureText('0').width;var isShowLastData=false;if(this.DrawStatus&&this.DrawStatus.IsTitleShowLatestData){var status=this.DrawStatus;if(!IFrameSplitOperator.IsNumber(status.FrameID)||status.FrameID<0)isShowLastData=true;else if(status.CorssCursorTouchEnd&&status.IsOnTouch==false)isShowLastData=true;}var isLastOne=false;if(isShowLastData){var item=null;var lastItem=this.GetLatestKLineData(false);if(lastItem&&lastItem.Type==0)item=lastItem.Data;isLastOne=true;}else{//var index=Math.abs(this.CursorIndex-0.5);
|
|
4269
4269
|
var index=this.CursorIndex;index=parseInt(index.toFixed(0));var dataIndex=index+this.Data.DataOffset;if(dataIndex>=this.Data.Data.length)dataIndex=this.Data.Data.length-1;var item=this.Data.Data[dataIndex];if(dataIndex==this.Data.Data.length-1)isLastOne=true;}this.LastShowData=item;this.Canvas.save();this.OnDrawEventCallback(item);if(this.IsAlwaysShowLastData){this.DrawLastDataItem();}else{this.DrawItem(item,isLastOne);}this.Canvas.restore();};this.DrawCallAuctionItem=function(callAuctionItem,isLastOne){if(!callAuctionItem)return;var item=callAuctionItem.Data;var dataVersion=callAuctionItem.Ver;var isHScreen=this.Frame.IsHScreen===true;var border=this.Frame.GetBorder();var left=border.Left;var bottom=border.Top-this.Frame.ChartBorder.Top/2;var defaultfloatPrecision=GetfloatPrecision(this.Symbol);//价格小数位数
|
|
4270
4270
|
var bDraw=true;if(isHScreen){var left=2;var bottom=this.Frame.ChartBorder.Right/2;//上下居中显示
|
|
@@ -4336,7 +4336,7 @@ var right=this.Frame.ChartBorder.GetRight();if(this.Frame.IsHScreen===true){bott
|
|
|
4336
4336
|
{value=item.Data.Data[0];valueText=this.FormatValue(value,item);}else{var index=Math.abs(this.CursorIndex-0.5);index=parseInt(index.toFixed(0));if(this.IsKLineFrame)index=this.CursorIndex;var dataIndex=item.Data.DataOffset+index;if(dataIndex>=item.Data.Data.length)dataIndex=item.Data.Data.length-1;if(dataIndex<0)continue;value=item.Data.Data[dataIndex];if(value==null)continue;if(item.DataType=="HistoryData-Vol"){value=value.Vol;valueText=this.FormatValue(value,item);}else if(item.DataType=="MultiReport"){valueText=this.FormatMultiReport(value,item);}else{valueText=this.FormatValue(value,item);}}this.Canvas.fillStyle=item.Color;var text=item.Name+":"+valueText;var textWidth=this.Canvas.measureText(text).width+2;//后空2个像素
|
|
4337
4337
|
drawLeft=left;left+=textWidth;if(left>right)break;this.Canvas.fillText(text,drawLeft,bottom,textWidth);}if(left>right)break;}}catch(err){_didIteratorError9=true;_iteratorError9=err;}finally{try{if(!_iteratorNormalCompletion9&&_iterator9.return){_iterator9.return();}}finally{if(_didIteratorError9){throw _iteratorError9;}}}};this.HScreenDraw=function(){var border=this.Frame.ChartBorder.GetHScreenBorder();var xText=this.Frame.ChartBorder.GetRightTitle();var yText=border.TopEx;this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);var left=1;var bottom=-this.Frame.ChartBorder.TitleHeight/2;//上下居中显示
|
|
4338
4338
|
var right=this.Frame.ChartBorder.GetHeight();this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.font=this.Font;if(this.Title&&this.IsShowIndexName){var textWidth=this.Canvas.measureText(this.Title).width+2;if(this.IsDrawTitleBG){var spaceSize=GetDevicePixelRatio()*2;this.Canvas.fillStyle=this.BGColor;this.TitleRect={Left:this.Frame.ChartBorder.GetRightTitle(),Top:border.TopEx,Width:this.Frame.ChartBorder.TitleHeight,Height:textWidth};//保存下标题的坐标
|
|
4339
|
-
var drawRect={Left:left,Top:-this.Frame.ChartBorder.TitleHeight+spaceSize,Width:textWidth,Height:this.Frame.ChartBorder.TitleHeight-spaceSize*2};this.Canvas.fillRect(drawRect.Left,drawRect.Top,drawRect.Width,drawRect.Height);}this.Canvas.fillStyle=this.TitleColor;this.Canvas.fillText(this.Title,left,bottom,textWidth);left+=textWidth;}var isShowLastData=this.IsShowLastData();var lockRect=this.Frame.GetLockRect();if(lockRect)//指标上锁区域不显示动态标题
|
|
4339
|
+
var drawRect={Left:left,Top:-this.Frame.ChartBorder.TitleHeight+spaceSize,Width:textWidth,Height:this.Frame.ChartBorder.TitleHeight-spaceSize*2};this.Canvas.fillRect(drawRect.Left,drawRect.Top,drawRect.Width,drawRect.Height);}this.Canvas.fillStyle=this.TitleColor;this.Canvas.fillText(this.Title,left,bottom,textWidth);left+=textWidth;left+=this.TitleSpace;}var isShowLastData=this.IsShowLastData();var lockRect=this.Frame.GetLockRect();if(lockRect)//指标上锁区域不显示动态标题
|
|
4340
4340
|
{var index=Math.abs(this.CursorIndex-0.5);if(this.IsKLineFrame)index=this.CursorIndex;var x=this.Frame.GetXFromIndex(index.toFixed(0));if(x>=lockRect.Top)return;if(isShowLastData)return;}for(var i in this.Data){var item=this.Data[i];var outText=this.GetTitleItem(item,isShowLastData);if(!outText)continue;var valueText=outText.Text;var aryText=outText.ArrayText;if(aryText){var text;for(var k=0;k<aryText.length;++k){var titleItem=aryText[k];if(titleItem.Name)text=titleItem.Name+":"+titleItem.Text;else text=titleItem.Text;var space=this.ParamSpace*GetDevicePixelRatio();var textWidth=this.Canvas.measureText(text).width+space;if(left+textWidth>right)break;this.Canvas.fillStyle=titleItem.Color;this.Canvas.fillText(text,left,bottom,textWidth);left+=textWidth;}}else{this.Canvas.fillStyle=item.Color;var text=item.Name+":"+valueText;var space=this.ParamSpace*GetDevicePixelRatio();var textWidth=this.Canvas.measureText(text).width+space;//后空2个像素
|
|
4341
4341
|
if(left+textWidth>right)break;this.Canvas.fillText(text,left,bottom,textWidth);left+=textWidth;}}if(this.Explain)//说明信息
|
|
4342
4342
|
{this.Canvas.fillStyle=this.TitleColor;var text="说明:"+this.Explain;var textWidth=this.Canvas.measureText(text).width+2;if(left+textWidth<right){this.Canvas.fillText(text,left,bottom,textWidth);left+=textWidth;}}if(this.OverlayIndexType.Position==1)this.DrawOverlayIndexSingleLine();else this.DrawOverlayIndex(left+5*GetDevicePixelRatio());//间距都空点 和主指标区分开
|
|
@@ -7030,8 +7030,9 @@ IsSHSZCustomIndex:function IsSHSZCustomIndex(upperSymbol){var pos=upperSymbol.le
|
|
|
7030
7030
|
{if(!symbol)return false;var upperSymbol=symbol.toUpperCase();if(this.IsSH(upperSymbol)){var temp=upperSymbol.replace('.SH','');if(upperSymbol.charAt(0)=='0'&&parseInt(temp)<=3000)return true;}else if(this.IsSZ(upperSymbol)){if(upperSymbol.charAt(0)=='3'&&upperSymbol.charAt(1)=='9')return true;}else if(this.IsSHSZCustomIndex(upperSymbol))//自定义指数
|
|
7031
7031
|
{return true;}return false;},IsSHSZStockA:function IsSHSZStockA(symbol)//是否是沪深A股
|
|
7032
7032
|
{if(!symbol)return false;var upperSymbol=symbol.toUpperCase();if(this.IsSH(upperSymbol)){var temp=upperSymbol.replace('.SH','');if(upperSymbol.charAt(0)=='6')return true;}else if(this.IsSZ(upperSymbol)){if(upperSymbol.charAt(0)=='0'){if(upperSymbol.charAt(1)=='0'&&upperSymbol.charAt(2)=='2')return true;//002 中小板
|
|
7033
|
-
if(upperSymbol.charAt(1)!='7'&&upperSymbol.charAt(1)!='8')return true;}else if(upperSymbol.charAt(0)=='3'){if(upperSymbol.charAt(1)=='0'
|
|
7034
|
-
|
|
7033
|
+
if(upperSymbol.charAt(1)!='7'&&upperSymbol.charAt(1)!='8')return true;}else if(upperSymbol.charAt(0)=='3'){if(upperSymbol.charAt(1)=='0'){if(upperSymbol.charAt(2)=='0')return true;//创业板 300XXX.sz
|
|
7034
|
+
if(upperSymbol.charAt(2)=='1')return true;//创业板 301XXX.sz
|
|
7035
|
+
}}}return false;},IsBJStock:function IsBJStock(symbol)//北交所股票
|
|
7035
7036
|
{if(!symbol)return false;var upperSymbol=symbol.toUpperCase();if(!this.IsBJ(upperSymbol))return false;var value=upperSymbol.charAt(0);if(value=='4'||value=='8')return true;return false;},IsSHStockSTAR:function IsSHStockSTAR(symbol)// 是否是科创板 Sci-Tech innovAtion boaRd (STAR Market)
|
|
7036
7037
|
{if(!symbol)return false;var upperSymbol=symbol.toUpperCase();if(!this.IsSH(upperSymbol))return false;if(upperSymbol.charAt(0)=='6'&&upperSymbol.charAt(1)=='8'&&upperSymbol.charAt(2)=='8')return true;return false;},GetMarketStatus:function GetMarketStatus(symbol)//获取市场状态 0=闭市 1=盘前 2=盘中 3=盘后
|
|
7037
7038
|
{if(!symbol)return 0;var upperSymbol=symbol.toUpperCase();var nowDate=new Date();var day=nowDate.getDay();var time=nowDate.getHours()*100+nowDate.getMinutes();if(this.IsUSA(upperSymbol)){var usaDate=GetLocalTime(-4);var day=usaDate.getDay();var time=usaDate.getHours()*100+usaDate.getMinutes();if(day==6||day==0)return 0;//周末
|
|
@@ -9116,7 +9117,8 @@ GetSectionReportPeriod:function GetSectionReportPeriod(year,quarter){if(year>=20
|
|
|
9116
9117
|
this.ErrorHandler=new ErrorHandler();this.VarTable=new _map2.default();//变量表
|
|
9117
9118
|
this.OutVarTable=[];//输出变量
|
|
9118
9119
|
this.Arguments=[];this.ErrorCallback;//执行错误回调
|
|
9119
|
-
this.GetEventCallback;this.IsUsePageData=false;this.IndexCtrl
|
|
9120
|
+
this.GetEventCallback;this.IsUsePageData=false;this.IndexCtrl;this.Debug=0;//0=非debug模式 1=debug 模式
|
|
9121
|
+
this.DebugFilter;//脚本自动变量表, 只读
|
|
9120
9122
|
this.ConstVarTable=new _map2.default([//个股数据
|
|
9121
9123
|
['CLOSE',null],['VOL',null],['OPEN',null],['HIGH',null],['LOW',null],['AMOUNT',null],['C',null],['V',null],['O',null],['H',null],['L',null],['AMO',null],['VOLR',null],//量比
|
|
9122
9124
|
['VOLINSTK',null],["OPI",null],//持仓量
|
|
@@ -9154,7 +9156,8 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
9154
9156
|
["HYSJL",null],//指数市净率或个股所属行业的市净率
|
|
9155
9157
|
['DRAWNULL',null],["NULL",null],["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",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=[];//执行的任务队列
|
|
9156
9158
|
this.UpdateUICallback=null;//回调
|
|
9157
|
-
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 _this32.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
|
|
9159
|
+
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 _this32.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;//调试模式信息
|
|
9160
|
+
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();JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i139 in this.Arguments)//预定义的变量
|
|
9158
9161
|
{var _item22=this.Arguments[_i139];this.VarTable.set(_item22.Name,_item22.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://量比
|
|
9159
9162
|
return this.SymbolData.GetVolRateData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_OTHER_SYMBOL_DATA://指定股票数据
|
|
9160
9163
|
return this.SymbolData.GetOtherSymbolData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_RELEASE_DATE_DATA:return this.SymbolData.GetCompanyReleaseDate(jobItem.ID);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE:case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE:case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE://买入信息-融资余额
|
|
@@ -9177,7 +9180,7 @@ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_NEWS_ANALYSIS_TOPMANAGERS://高管要闻
|
|
|
9177
9180
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_NEWS_ANALYSIS_PLEDGE://股权质押
|
|
9178
9181
|
return this.SymbolData.GetNewsAnalysisData(jobItem.ID);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_HK_TO_SHSZ:return this.SymbolData.GetHKToSHSZData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_SF:return this.SymbolData.GetSectionFinanceData(jobItem);//财务截面报告数据
|
|
9179
9182
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINONE:return this.SymbolData.GetFinOne(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINVALUE:return this.SymbolData.GetFinValue(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINANCE:return this.SymbolData.GetFinance(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_GPJYVALUE:return this.SymbolData.GetGPJYValue(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SCJYVALUE:return this.SymbolData.GetSCJYValue(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VARIANT://CAPITAL, TOTALCAPITAL
|
|
9180
|
-
return this.SymbolData.GetVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM_VARIANT_DATA:return this.SymbolData.GetCustomVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM_FUNCTION_DATA:return this.SymbolData.GetCustomFunctionData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_CUSTOM_API_DATA:return this.SymbolData.DownloadCustomAPIData(jobItem);case JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX:return this.SymbolData.CallScriptIndex(jobItem);case JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT:return this.Run();}};this.ReadSymbolData=function(name,node){switch(name){case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':case"OPI":case'VOLINSTK':case"SETTLE":case"QHJSJ":case"ZSTJJ":case"ISEQUAL"://平盘
|
|
9183
|
+
return this.SymbolData.GetVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM_VARIANT_DATA:return this.SymbolData.GetCustomVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM_FUNCTION_DATA:return this.SymbolData.GetCustomFunctionData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_CUSTOM_API_DATA:return this.SymbolData.DownloadCustomAPIData(jobItem);case JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX:return this.SymbolData.CallScriptIndex(jobItem);case JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT:if(this.Debug===1&&this.DebugFilter)return this.DebugRun();else return this.Run();}};this.ReadSymbolData=function(name,node){switch(name){case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':case"OPI":case'VOLINSTK':case"SETTLE":case"QHJSJ":case"ZSTJJ":case"ISEQUAL"://平盘
|
|
9181
9184
|
case"ISUP"://收阳
|
|
9182
9185
|
case"ISDOWN"://收阴
|
|
9183
9186
|
return this.SymbolData.GetSymbolCacheData(name);case'VOLR':return this.SymbolData.GetVolRateCacheData(node);//大盘数据
|
|
@@ -9185,30 +9188,31 @@ case'INDEXA':case'INDEXC':case'INDEXH':case'INDEXH':case'INDEXO':case'INDEXV':ca
|
|
|
9185
9188
|
this.ReadVariable=function(name,node){if(this.ConstVarTable.has(name)){var data=this.ConstVarTable.get(name);if(data==null)//动态加载,用到再加载
|
|
9186
9189
|
{data=this.ReadSymbolData(name,node);this.ConstVarTable.set(name,data);}return data;}if(g_JSComplierResource.IsCustomVariant(name))return this.ReadCustomVariant(name,node);//读取自定义变量
|
|
9187
9190
|
if(this.VarTable.has(name))return this.VarTable.get(name);if(name.indexOf('#')>0){var aryPeriod=name.split('#');return this.SymbolData.GetSymbolPeriodCacheData(aryPeriod[0],aryPeriod[1]);}if(name.indexOf("COLOR")==0){var colorValue=JSComplier.ColorVarToRGB(name);if(colorValue)return colorValue;}this.ThrowUnexpectedNode(node,'变量'+name+'不存在',name);return null;};this.ReadMemberVariable=function(node){var obj=node.Object;var member=node.Property;var maiObj=void 0;if(obj.Type==Syntax.BinaryExpression||obj.Type==Syntax.LogicalExpression)maiObj=this.VisitBinaryExpression(obj);else if(obj.Type==Syntax.CallExpression)maiObj=this.VisitCallExpression(obj);else maiObj=this.GetNodeValue(obj);if(!maiObj)return null;var value=maiObj[member.Name];if(value)return value;return null;};//单数据转成数组 个数和历史数据一致
|
|
9188
|
-
this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i140=0;_i140<count;++_i140){result[_i140]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i141=0;_i141<this.AST.Body.length;++_i141){var _item23=this.AST.Body[_i141];this.
|
|
9189
|
-
if(
|
|
9190
|
-
{var _outVar4=
|
|
9191
|
-
{var varName="__temp_l_"+
|
|
9191
|
+
this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i140=0;_i140<count;++_i140){result[_i140]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i141=0;_i141<this.AST.Body.length;++_i141){var _item23=this.AST.Body[_i141];this.RunASTNode(_item23);}JSConsole.Complier.Log('[JSExecute::Run]',this.VarTable);return this.OutVarTable;};this.RunASTNode=function(item){this.VisitNode(item);//输出变量
|
|
9192
|
+
if(item.Type==Syntax.ExpressionStatement&&item.Expression){if(item.Expression.Type==Syntax.AssignmentExpression){if(item.Expression.Operator==':'&&item.Expression.Left){var assignmentItem=item.Expression;var _varName=assignmentItem.Left.Name;var _outVar=this.VarTable.get(_varName);var type=0;if(_outVar&&(typeof _outVar==='undefined'?'undefined':(0,_typeof3.default)(_outVar))=='object'&&_outVar.__Type__=='Object'){type=1000;}else if(!this.IsSectionMode&&!Array.isArray(_outVar)){if(typeof _outVar=='string'){var floatValue=parseFloat(_outVar);if(IFrameSplitOperator.IsNumber(floatValue)){_outVar=this.SingleDataToArrayData(floatValue);}else{_outVar=this.SingleDataToArrayData(_outVar);type=1001;}}else _outVar=this.SingleDataToArrayData(_outVar);}this.OutVarTable.push({Name:_varName,Data:_outVar,Type:type});}}else if(item.Expression.Type==Syntax.CallExpression){var callItem=item.Expression;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){var draw=callItem.Draw;draw.Name=callItem.Callee.Name;this.OutVarTable.push({Name:draw.Name,Draw:draw,Type:1});}else{var _outVar2=callItem.Out;varName='__temp_c_'+callItem.Callee.Name+'_'+i+'__';var type=0;if(!Array.isArray(_outVar2))_outVar2=this.SingleDataToArrayData(_outVar2);this.OutVarTable.push({Name:varName,Data:_outVar2,Type:type,NoneName:true});}}else if(item.Expression.Type==Syntax.Identifier){var _varName2=item.Expression.Name;var _outVar3=this.ReadVariable(_varName2,item.Expression);var type=0;if(_outVar3&&(typeof _outVar3==='undefined'?'undefined':(0,_typeof3.default)(_outVar3))=='object'&&_outVar3.__Type__=='Object'){type=1000;}else if(!this.IsSectionMode&&!Array.isArray(_outVar3)){if(typeof _outVar3=='string')_outVar3=this.SingleDataToArrayData(parseFloat(_outVar3));else _outVar3=this.SingleDataToArrayData(_outVar3);}_varName2="__temp_i_"+i+"__";this.OutVarTable.push({Name:_varName2,Data:_outVar3,Type:type,NoneName:true});}else if(item.Expression.Type==Syntax.Literal)//常量
|
|
9193
|
+
{var _outVar4=item.Expression.Value;if(IFrameSplitOperator.IsString(_outVar4)&&_outVar4.indexOf("$")>0)_outVar4=this.SymbolData.GetOtherSymolCacheData({Literal:_outVar4});varName="__temp_li_"+i+"__";var type=0;this.OutVarTable.push({Name:varName,Data:_outVar4,Type:type,NoneName:true});}else if(item.Expression.Type==Syntax.BinaryExpression){var varName="__temp_b_"+i+"__";var _outVar5=item.Expression.Out;var type=0;if(!Array.isArray(_outVar5))_outVar5=this.SingleDataToArrayData(_outVar5);this.OutVarTable.push({Name:varName,Data:_outVar5,Type:type,NoneName:true});}else if(item.Expression.Type==Syntax.LogicalExpression)//逻辑语句 如 T1 AND T2
|
|
9194
|
+
{var varName="__temp_l_"+i+"__";var _outVar6=item.Expression.Out;var type=0;if(!Array.isArray(_outVar6))_outVar6=this.SingleDataToArrayData(_outVar6);this.OutVarTable.push({Name:varName,Data:_outVar6,Type:type,NoneName:true});}else if(item.Expression.Type==Syntax.SequenceExpression){var _varName3=void 0;var _draw=void 0;var color=void 0;var lineWidth=void 0;var colorStick=false;var pointDot=false;var circleDot=false;var lineStick=false;var stick=false;var volStick=false;var stepLine=false;var isShow=true;var isExData=false;var isDotLine=false;var isOverlayLine=false;//叠加线
|
|
9192
9195
|
var isNoneName=false;var isShowTitle=true;//显示在位置之上,对于DRAWTEXT和DRAWNUMBER等函数有用,放在语句的最后面(不能与LINETHICK等函数共用),比如:
|
|
9193
9196
|
//DRAWNUMBER(CLOSE>OPEN,HIGH,CLOSE),DRAWABOVE;
|
|
9194
9197
|
var isDrawAbove=false;var isDrawCenter=false;var isDrawBelow=false;//VALIGN0,VALIGN1,VALIGN2 设置文字垂直对齐方式(上中下)
|
|
9195
9198
|
//ALIGN0,ALIGN1,ALIGN2 设置文字水平对齐方式(左中右)
|
|
9196
9199
|
var drawAlign=-1,drawVAlign=-1;var fontSize=-1;var bgConfig=null;//背景设置
|
|
9197
|
-
var vLineConfig=null;for(var _j13=0;_j13<
|
|
9200
|
+
var vLineConfig=null;for(var _j13=0;_j13<item.Expression.Expression.length;++_j13){var itemExpression=item.Expression.Expression[_j13];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){if(_j13==0){_varName3=itemExpression.Left.Name;var varValue=this.VarTable.get(_varName3);if(!Array.isArray(varValue)){varValue=this.SingleDataToArrayData(varValue);this.VarTable.set(_varName3,varValue);//把常量放到变量表里
|
|
9198
9201
|
}}else{}}else if(itemExpression.Type==Syntax.Identifier){var value=itemExpression.Name;if(value==='COLORSTICK')colorStick=true;else if(value==='POINTDOT')pointDot=true;else if(value==='CIRCLEDOT')circleDot=true;else if(value==='DOTLINE')isDotLine=true;else if(value==='LINESTICK')lineStick=true;else if(value==='STICK')stick=true;else if(value==='VOLSTICK')volStick=true;else if(value==="DRAWABOVE")isDrawAbove=true;else if(value==="DRAWCENTER")isDrawCenter=true;else if(value=="DRAWBELOW")isDrawBelow=true;else if(value=="STEPLINE")stepLine=true;else if(value.indexOf('COLOR')==0)color=value;else if(value.indexOf('LINETHICK')==0)lineWidth=value;else if(value=="ALIGN0")drawAlign=0;else if(value=="ALIGN1")drawAlign=1;else if(value=="ALIGN2")drawAlign=2;else if(value=="VALIGN0")drawVAlign=0;else if(value=="VALIGN1")drawVAlign=1;else if(value=="VALIGN2")drawVAlign=2;else if(value.indexOf('NODRAW')==0)isShow=false;else if(value.indexOf('EXDATA')==0)isExData=true;//扩展数据, 不显示再图形里面
|
|
9199
9202
|
else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf("NOTEXT")==0||value.indexOf("NOTITLE")==0)isShowTitle=false;//标题不显示
|
|
9200
|
-
else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{if(_j13==0){_varName3=itemExpression.Name;var _varValue=this.ReadVariable(_varName3,itemExpression);if(!Array.isArray(_varValue))_varValue=this.SingleDataToArrayData(_varValue);_varName3="__temp_si_"+
|
|
9203
|
+
else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{if(_j13==0){_varName3=itemExpression.Name;var _varValue=this.ReadVariable(_varName3,itemExpression);if(!Array.isArray(_varValue))_varValue=this.SingleDataToArrayData(_varValue);_varName3="__temp_si_"+i+"__";isNoneName=true;this.VarTable.set(_varName3,_varValue);//放到变量表里
|
|
9201
9204
|
}}}else if(itemExpression.Type==Syntax.Literal)//常量
|
|
9202
9205
|
{if(_j13==0){var aryValue=this.SingleDataToArrayData(itemExpression.Value);_varName3=itemExpression.Value.toString();this.VarTable.set(_varName3,aryValue);//把常量放到变量表里
|
|
9203
|
-
}}else if(itemExpression.Type==Syntax.CallExpression){if(_j13==0){if(this.Draw.IsDrawFunction(itemExpression.Callee.Name)){_draw=itemExpression.Draw;_draw.Name=itemExpression.Callee.Name;}else{var _varValue2=itemExpression.Out;_varName3='__temp_sc_'+itemExpression.Callee.Name+'_'+
|
|
9206
|
+
}}else if(itemExpression.Type==Syntax.CallExpression){if(_j13==0){if(this.Draw.IsDrawFunction(itemExpression.Callee.Name)){_draw=itemExpression.Draw;_draw.Name=itemExpression.Callee.Name;}else{var _varValue2=itemExpression.Out;_varName3='__temp_sc_'+itemExpression.Callee.Name+'_'+i+'__';isNoneName=true;this.VarTable.set(_varName3,_varValue2);}}else{if(itemExpression.Callee.Name=="RGB"||itemExpression.Callee.Name=="RGBA"){color=itemExpression.Out;}else if(itemExpression.Callee.Name=="SOUND"){var event=this.GetSoundEvent();if(event){}_varName3=null;}else if(itemExpression.Callee.Name=="ICON"){var drawCond=this.VarTable.get(_varName3);if(drawCond){_draw=this.GetOutIconData(drawCond,itemExpression.Draw);if(_draw)_draw.Name=itemExpression.Callee.Name;}_varName3=null;}else if(itemExpression.Callee.Name=="BACKGROUND"){bgConfig=itemExpression.Draw;_varName3=null;}else if(itemExpression.Callee.Name=="CKLINE"){vLineConfig=itemExpression.Draw;_varName3=null;}}}else if(itemExpression.Type==Syntax.BinaryExpression){if(_j13==0){_varName3="__temp_sb_"+i+"__";var _aryValue=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName3,_aryValue);}}}if(pointDot&&_varName3)//圆点
|
|
9204
9207
|
{var _outVar7=this.VarTable.get(_varName3);if(!Array.isArray(_outVar7))_outVar7=this.SingleDataToArrayData(_outVar7);var _value4={Name:_varName3,Data:_outVar7,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};if(color)_value4.Color=color;if(lineWidth)_value4.LineWidth=lineWidth;this.OutVarTable.push(_value4);}else if(circleDot&&_varName3)//圆点
|
|
9205
9208
|
{var _outVar8=this.VarTable.get(_varName3);if(!Array.isArray(_outVar8))_outVar8=this.SingleDataToArrayData(_outVar8);var _value5={Name:_varName3,Data:_outVar8,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};if(color)_value5.Color=color;if(lineWidth)_value5.LineWidth=lineWidth;this.OutVarTable.push(_value5);}else if(lineStick&&_varName3)//LINESTICK 同时画出柱状线和指标线
|
|
9206
9209
|
{var _outVar9=this.VarTable.get(_varName3);var _value6={Name:_varName3,Data:_outVar9,Type:4};if(color)_value6.Color=color;if(lineWidth)_value6.LineWidth=lineWidth;this.OutVarTable.push(_value6);}else if(stick&&_varName3)//STICK 画柱状线
|
|
9207
9210
|
{var _outVar10=this.VarTable.get(_varName3);var _value7={Name:_varName3,Data:_outVar10,Type:5};if(color)_value7.Color=color;if(lineWidth)_value7.LineWidth=lineWidth;this.OutVarTable.push(_value7);}else if(volStick&&_varName3)//VOLSTICK 画彩色柱状线
|
|
9208
9211
|
{var _outVar11=this.VarTable.get(_varName3);var _value8={Name:_varName3,Data:_outVar11,Type:6};if(color)_value8.Color=color;this.OutVarTable.push(_value8);}else if(colorStick&&_varName3)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
9209
9212
|
{var _outVar12=this.VarTable.get(_varName3);var _value9={Name:_varName3,Data:_outVar12,Color:color,Type:2};if(lineWidth)_value9.LineWidth=lineWidth;if(color)_value9.Color=color;this.OutVarTable.push(_value9);}else if(_varName3&&color){var _outVar13=this.VarTable.get(_varName3);if(!Array.isArray(_outVar13))_outVar13=this.SingleDataToArrayData(_outVar13);var _value10={Name:_varName3,Data:_outVar13,Color:color,Type:0};if(lineWidth)_value10.LineWidth=lineWidth;if(isShow==false)_value10.IsShow=false;if(isExData==true)_value10.IsExData=true;if(isDotLine==true)_value10.IsDotLine=true;if(isOverlayLine==true)_value10.IsOverlayLine=true;if(isNoneName==true)_value10.NoneName=true;if(isShowTitle==false)_value10.IsShowTitle=false;if(stepLine==true)_value10.Type=7;this.OutVarTable.push(_value10);}else if(_draw)//画图函数
|
|
9210
|
-
{var outVar={Name:_draw.Name,Draw:_draw,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;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar14=this.VarTable.get(_varName3);var _value11={Name:_varName3,Data:_outVar14,Type:0};if(color)_value11.Color=color;if(lineWidth)_value11.LineWidth=lineWidth;if(isShow==false)_value11.IsShow=false;if(isExData==true)_value11.IsExData=true;if(isDotLine==true)_value11.IsDotLine=true;if(isOverlayLine==true)_value11.IsOverlayLine=true;if(isShowTitle==false)_value11.IsShowTitle=false;if(stepLine==true)_value11.Type=7;this.OutVarTable.push(_value11);}}}}
|
|
9211
|
-
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.
|
|
9213
|
+
{var outVar={Name:_draw.Name,Draw:_draw,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;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar14=this.VarTable.get(_varName3);var _value11={Name:_varName3,Data:_outVar14,Type:0};if(color)_value11.Color=color;if(lineWidth)_value11.LineWidth=lineWidth;if(isShow==false)_value11.IsShow=false;if(isExData==true)_value11.IsExData=true;if(isDotLine==true)_value11.IsDotLine=true;if(isOverlayLine==true)_value11.IsOverlayLine=true;if(isShowTitle==false)_value11.IsShowTitle=false;if(stepLine==true)_value11.Type=7;this.OutVarTable.push(_value11);}}}};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();//执行脚本
|
|
9214
|
+
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 _this33=this;if(debugCtrl.ExeLine<debugCtrl.LineCount){var item=this.AST.Body[debugCtrl.ExeLine];this.RunASTNode(item);++debugCtrl.ExeLine;this.DebugFilter(debugCtrl,function(){_this33.DebugRun_Next(debugCtrl);});}else{this.DebugRun_End();debugCtrl.Status=2;this.DebugFilter(debugCtrl,null);}};//debug模式
|
|
9215
|
+
this.DebugRun=function(){var _this34=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(){_this34.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 _i142 in node.Expression){var _item24=node.Expression[_i142];this.VisitNode(_item24);}};//函数调用
|
|
9212
9216
|
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i143 in node.Arguments){var _item25=node.Arguments[_i143];var value=void 0;if(_item25.Type==Syntax.BinaryExpression||_item25.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item25);else if(_item25.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item25);else value=this.GetNodeValue(_item25);args.push(value);}//JSConsole.Complier.Log('[JSExecute::VisitCallExpression]' , funcName, '(', args.toString() ,')');
|
|
9213
9217
|
if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}switch(funcName){case'DYNAINFO'://行情最新数据
|
|
9214
9218
|
node.Out=this.SymbolData.GetLatestCacheData(args[0]);break;case'STICKLINE':node.Draw=this.Draw.STICKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT':node.Draw=this.Draw.DRAWTEXT(args[0],args[1],args[2]);node.Out=[];break;case'DRAWTEXT_FIX':node.Draw=this.Draw.DRAWTEXT_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'SUPERDRAWTEXT':node.Draw=this.Draw.SUPERDRAWTEXT(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWICON':node.Draw=this.Draw.DRAWICON(args[0],args[1],args[2]);node.Out=[];break;case"ICON":node.Draw=this.Draw.ICON(args[0],args[1]);node.Out=[];break;case"BACKGROUND":node.Draw=this.Draw.BACKGROUND(args[0],args[1],args[2],args[3],args[4],args[5]);node.Out=[];break;case"CKLINE":node.Draw=this.Draw.CKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWLINE':node.Draw=this.Draw.DRAWLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData;break;case'DRAWBAND':node.Draw=this.Draw.DRAWBAND(args[0],args[1],args[2],args[3]);node.Out=[];break;case"FILLRGN":if(args.length>=4)node.Draw=this.Draw.FILLRGN2(args);else node.Draw=this.Draw.FILLRGN(args[0],args[1],args[2]);node.Out=[];break;case"FLOATRGN":node.Draw=this.Draw.FLOATRGN(args);node.Out=[];break;case"FILLTOPRGN":node.Draw=this.Draw.FILLBGRGN(1,args);node.Out=[];break;case"FILLBOTTOMRGN":node.Draw=this.Draw.FILLBGRGN(0,args);node.Out=[];break;case"FILLVERTICALRGN":node.Draw=this.Draw.FILLVERTICALRGN(args);node.Out=[];break;case'DRAWKLINE':case"DRAWKLINE1":node.Draw=this.Draw.DRAWKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWKLINE_IF':node.Draw=this.Draw.DRAWKLINE_IF(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWCOLORKLINE":node.Draw=this.Draw.DRAWCOLORKLINE(args[0],args[1],args[2]);node.Out=[];break;case'PLOYLINE':case'POLYLINE':node.Draw=this.Draw.POLYLINE(args[0],args[1]);node.Out=node.Draw.DrawData;break;case'DRAWNUMBER':node.Draw=this.Draw.DRAWNUMBER(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Value;break;case"DRAWNUMBER_FIX":node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData.Value;break;case"DRAWCHANNEL":node.Draw=this.Draw.DRAWCHANNEL(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'RGB':node.Out=this.Draw.RGB(args[0],args[1],args[2]);break;case"RGBA":node.Out=this.Draw.RGBA(args[0],args[1],args[2],args[3]);break;case'PARTLINE':node.Draw=this.Draw.PARTLINE(args);node.Out=[];break;case'DRAWGBK':node.Draw=this.Draw.DRAWGBK(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWGBK2':node.Draw=this.Draw.DRAWGBK2(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWTEXT_LINE':node.Draw=this.Draw.DRAWTEXT_LINE(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'DRAWRECTREL':node.Draw=this.Draw.DRAWRECTREL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWTEXTREL":node.Draw=this.Draw.DRAWTEXTREL(args[0],args[1],args[2]);node.Out=[];break;case"DRAWTEXTABS":node.Draw=this.Draw.DRAWTEXTABS(args[0],args[1],args[2]);node.Out=[];break;case"DRAWOVERLAYLINE":node.Draw=this.Draw.DRAWOVERLAYLINE(args[0],args[1],args[2]);node.Out=node.Draw.DrawData.Data;break;case"DRAWSL":node.Draw=this.Draw.DRAWSL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"VERTLINE":node.Draw=this.Draw.VERTLINE(args[0],args[1]);node.Out=node.Draw.DrawData.Data;break;case"HORLINE":node.Draw=this.Draw.HORLINE(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case'CODELIKE':node.Out=this.SymbolData.CODELIKE(args[0]);break;case'NAMELIKE':case"NAMEINCLUDE":node.Out=this.SymbolData.NAMELIKE(args[1]);break;case'REFDATE':node.Out=this.SymbolData.REFDATE(args[0],args[1]);break;case'FINANCE':node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINONE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"GPJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"SCJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"MARGIN":node.Out=this.SymbolData.GetMarginCacheData(args[0],node);break;case"HK2SHSZ":node.Out=this.SymbolData.GetHKToSHSZCacheData(args[0],node);break;case"NEWS":node.Out=this.SymbolData.GetNewsAnalysisCacheData(args[0],node);break;case'UPCOUNT':case'DOWNCOUNT':node.Out=this.SymbolData.GetIndexIncreaseCacheData(funcName,args[0],node);break;case'SF':node.Out=this.SymbolData.GetSectionFinanceCacheData(args[0],args[1],args[2],node);break;case'LOADAPIDATA':node.Out=this.SymbolData.GetCustomApiData(args);break;case"STKINDI":node.Out=this.SymbolData.GetScriptIndexOutData(args,node);break;case"SOUND":node.Draw=this.Draw.SOUND(args[0]);node.Out=[];break;case"PLAYSOUND":node.Draw=this.Draw.PLAYSOUND(args[0],args[1]);node.Out=[];break;case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':node.Out=this.SymbolData.GetOtherSymolCacheData({FunctionName:funcName,Args:args});break;case"INBLOCK":node.Out=this.SymbolData.IsInBlock(args[0],node);break;case'COVER_C':case'COVER_O':case'COVER_H':case'COVER_L':case'COVER_A':case'COVER_V':if(args.length==2)return this.SymbolData.GetSymbolPeriodCacheData2(JSComplierHelper.GetConvertValueName(funcName),args[0],args[1]);return this.SymbolData.GetSymbolPeriodCacheData(JSComplierHelper.GetConvertValueName(funcName),args[0]);case"SYSPARAM":return this.SymbolData.SysParam(args[0],this);default:node.Out=this.Algorithm.CallFunction(funcName,args,node,this.SymbolData);break;}return node.Out;};//赋值
|
|
@@ -9332,8 +9336,10 @@ this.IsLocked=false;//是否锁住指标
|
|
|
9332
9336
|
this.LockCallback=null;this.LockID=null;this.LockBG=null;//锁背景色
|
|
9333
9337
|
this.LockTextColor=null;this.LockText=null;this.LockFont=null;this.LockCount=20;this.LockMinWidth=null;this.TitleFont=g_JSChartResource.TitleFont;//标题字体
|
|
9334
9338
|
this.IsShortTitle=false;//是否显示指标参数
|
|
9335
|
-
this.IsUsePageData=false;//是否使用了K线界面数据
|
|
9336
|
-
|
|
9339
|
+
this.IsUsePageData=false;//是否使用了K线界面数据
|
|
9340
|
+
//调试信息
|
|
9341
|
+
this.Debug;// { Callback:, Count: }
|
|
9342
|
+
if(option){if(option.FloatPrecision>=0)this.FloatPrecision=option.FloatPrecision;if(option.StringFormat>0)this.StringFormat=option.StringFormat;if(option.ID)this.ID=option.ID;if(option.KLineType>=0||option.KLineType===-1)this.KLineType=option.KLineType;if(option.InstructionType)this.InstructionType=option.InstructionType;if(option.YSpecificMaxMin)this.YSpecificMaxMin=option.YSpecificMaxMin;if(option.YSplitScale)this.YSplitScale=option.YSplitScale;if(option.Condition)this.Condition=option.Condition;if(option.TitleFont)this.TitleFont=option.TitleFont;if(option.IsShortTitle)this.IsShortTitle=option.IsShortTitle;if(option.OutName)this.OutName=option.OutName;if(IFrameSplitOperator.IsNumber(option.YSplitType))this.YSplitType=option.YSplitType;if(option.Debug){if(IFrameSplitOperator.IsPlusNumber(option.Debug.Count)&&option.Debug.Callback){this.Debug={Count:option.Debug.Count,Callback:option.Debug.Callback};}}}if(option&&option.Lock){if(option.Lock.IsLocked==true)this.IsLocked=true;//指标上锁
|
|
9337
9343
|
if(option.Lock.Callback)this.LockCallback=option.Lock.Callback;//锁回调
|
|
9338
9344
|
if(option.Lock.ID)this.LockID=option.Lock.ID;//锁ID
|
|
9339
9345
|
if(option.Lock.BG)this.LockBG=option.Lock.BG;if(option.Lock.TextColor)this.LockTextColor=option.Lock.TextColor;if(option.Lock.Text)this.LockText=option.Lock.Text;if(option.Lock.Font)this.LockFont=option.Lock.Font;if(option.Lock.Count)this.LockCount=option.Lock.Count;if(option.Lock.MinWidth)this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();}if(args)this.Arguments=args;this.CopyTo=function(dest)//赋值到新实例出来
|
|
@@ -9348,7 +9354,7 @@ var hqDataType=HQ_DATA_TYPE.KLINE_ID;//默认K线
|
|
|
9348
9354
|
if(hqChart.ClassName==='MinuteChartContainer'||hqChart.ClassName==='MinuteChartHScreenContainer'){if(hqChart.DayCount>1)hqDataType=HQ_DATA_TYPE.MULTIDAY_MINUTE_ID;//多日分钟
|
|
9349
9355
|
else hqDataType=HQ_DATA_TYPE.MINUTE_ID;//分钟数据
|
|
9350
9356
|
}else if(hqChart.ClassName==='HistoryMinuteChartContainer'){hqDataType=HQ_DATA_TYPE.HISTORY_MINUTE_ID;//历史分钟
|
|
9351
|
-
}var option={HQDataType:hqDataType,Symbol:hqChart.Symbol,Name:hqChart.Name,Data:hisData,SourceData:hqChart.SourceData,Callback:this.RecvResultData,CallbackParam:param,Async:true,MaxRequestDataCount:hqChart.MaxRequestDataCount,MaxRequestMinuteDayCount:hqChart.MaxRequestMinuteDayCount,Arguments:this.Arguments,Condition:this.Condition,IsBeforeData:hqChart.IsBeforeData,IsApiPeriod:hqChart.IsApiPeriod,DrawInfo:null,Self:this};if(hqChart)//当前屏K线信息
|
|
9357
|
+
}var option={HQDataType:hqDataType,Symbol:hqChart.Symbol,Name:hqChart.Name,Data:hisData,SourceData:hqChart.SourceData,Callback:this.RecvResultData,CallbackParam:param,Async:true,MaxRequestDataCount:hqChart.MaxRequestDataCount,MaxRequestMinuteDayCount:hqChart.MaxRequestMinuteDayCount,Arguments:this.Arguments,Condition:this.Condition,IsBeforeData:hqChart.IsBeforeData,IsApiPeriod:hqChart.IsApiPeriod,DrawInfo:null,Self:this};if(this.Debug&&IFrameSplitOperator.IsPlusNumber(this.Debug.Count)&&this.Debug.Callback){--this.Debug.Count;option.Debug=1;option.DebugFilter=this.Debug.Callback;}if(hqChart)//当前屏K线信息
|
|
9352
9358
|
{if(hqChart.ChartPaint[0]){var item=hqChart.ChartPaint[0];if(item&&item.DrawKRange)option.DrawInfo={Start:item.DrawKRange.Start,End:item.DrawKRange.End};}}if(hqDataType===HQ_DATA_TYPE.HISTORY_MINUTE_ID)option.TrateDate=hqChart.TradeDate;if(hqDataType===HQ_DATA_TYPE.MULTIDAY_MINUTE_ID)option.DayCount=hqChart.DayCount;if(hqChart.NetworkFilter)option.NetworkFilter=hqChart.NetworkFilter;if(this.Condition&&!this.IsMeetCondition(param,option)){this.ShowConditionError(param);return;}var code=this.Script;var run=JSComplier.Execute(code,option,hqChart.ScriptErrorCallback);};//是否符合限制条件
|
|
9353
9359
|
this.IsMeetCondition=function(param,option){JSConsole.Complier.Log('[ScriptIndex::IsMeetCondition] ',this.Condition);if(this.Condition.Period)//周期是否满足
|
|
9354
9360
|
{if(!this.IsMeetPeriodCondition(param,option))return false;if(!this.IsMeetIncludeCondition(param,option))return false;}return true;};//周期是否满足条件
|
|
@@ -9895,15 +9901,15 @@ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FILTER_DEAL_DATA);if(!event|
|
|
|
9895
9901
|
event.Callback(event,sendData,this);return sendData.Result;};this.EnableFilter=function(bEnable,option)//启动|关闭筛选
|
|
9896
9902
|
{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;};//创建
|
|
9897
9903
|
//windowCount 窗口个数
|
|
9898
|
-
this.Create=function(option){var
|
|
9904
|
+
this.Create=function(option){var _this35=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
9899
9905
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);//创建框架
|
|
9900
9906
|
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;//创建表格
|
|
9901
|
-
var chart=new ChartDealList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return
|
|
9907
|
+
var chart=new ChartDealList();chart.Frame=this.Frame;chart.ChartBorder=this.Frame.ChartBorder;chart.Canvas=this.Canvas;chart.GetEventCallback=function(id){return _this35.GetEventCallback(id);};this.ChartPaint[0]=chart;if(option){if(IFrameSplitOperator.IsBool(option.IsSingleTable))chart.IsSingleTable=option.IsSingleTable;//单表模式
|
|
9902
9908
|
if(IFrameSplitOperator.IsBool(option.IsShowHeader))chart.IsShowHeader=option.IsShowHeader;//是否显示表头
|
|
9903
9909
|
if(IFrameSplitOperator.IsBool(option.IsShowLastPage))this.IsShowLastPage=option.IsShowLastPage;//是否显示最后一页
|
|
9904
9910
|
if(IFrameSplitOperator.IsNumber(option.BorderLine))this.Frame.BorderLine=option.BorderLine;//边框
|
|
9905
|
-
}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){
|
|
9906
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
9911
|
+
}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){_this35.OnKeyDown(e);},true);//键盘消息
|
|
9912
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this35.OnWheel(e);},true);//上下滚动消息
|
|
9907
9913
|
};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();//获取设备的分辨率
|
|
9908
9914
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
9909
9915
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
@@ -10060,22 +10066,22 @@ this.DragPageCycle=true;//手机翻页循环
|
|
|
10060
10066
|
this.DragXScroll=null;//{Start:{x,y}, End:{x, y}}
|
|
10061
10067
|
this.IsDestroy=false;//是否已经销毁了
|
|
10062
10068
|
this.ChartDestory=function()//销毁
|
|
10063
|
-
{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
|
|
10069
|
+
{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 _this36=this;this.AutoDragScrollTimer=setTimeout(function(){_this36.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;};//清空固定行数据
|
|
10064
10070
|
this.ClearFixedRowData=function(){this.FixedRowData.Data=[];this.FixedRowData.Symbol=[];};//设置固定行
|
|
10065
10071
|
this.SetFixedRowCount=function(value){var chart=this.GetReportChart();if(!chart)return;chart.FixedRowCount=value;};//创建
|
|
10066
|
-
this.Create=function(option){var
|
|
10072
|
+
this.Create=function(option){var _this37=this;this.UIElement.JSChartContainer=this;//创建等待提示
|
|
10067
10073
|
this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.IsEnableSplash=true;//创建框架
|
|
10068
10074
|
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;//创建表格
|
|
10069
|
-
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
|
|
10075
|
+
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 _this37.GetEventCallback(id);};chart.GetStockDataCallback=function(symbol){return _this37.GetStockData(symbol);};chart.GetBlockDataCallback=function(symbol){return _this37.GetBlockData(symbol);};chart.Data=this.Data;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;//页脚
|
|
10070
10076
|
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;//是否显示表头
|
|
10071
10077
|
if(IFrameSplitOperator.IsNumber(option.FixedColumn))chart.FixedColumn=option.FixedColumn;//固定列
|
|
10072
10078
|
if(IFrameSplitOperator.IsNumber(option.BorderLine))this.Frame.BorderLine=option.BorderLine;//边框
|
|
10073
10079
|
if(IFrameSplitOperator.IsBool(option.TabShow))chart.Tab.IsShow=option.TabShow;if(IFrameSplitOperator.IsNumber(option.FixedRowCount))chart.FixedRowCount=option.FixedRowCount;//固定行
|
|
10074
10080
|
if(IFrameSplitOperator.IsBool(option.ItemBorder))chart.IsDrawBorder=option.ItemBorder;//单元格边框
|
|
10075
|
-
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){
|
|
10076
|
-
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){
|
|
10077
|
-
this.UIElement.ondblclick=function(e){
|
|
10078
|
-
this.UIElement.ontouchstart=function(e){
|
|
10081
|
+
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){_this37.OnKeyDown(e);},true);//键盘消息
|
|
10082
|
+
if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this37.OnWheel(e);},true);//上下滚动消息
|
|
10083
|
+
this.UIElement.ondblclick=function(e){_this37.UIOnDblClick(e);};this.UIElement.onmousedown=function(e){_this37.UIOnMouseDown(e);};this.UIElement.oncontextmenu=function(e){_this37.UIOnContextMenu(e);};this.UIElement.onmousemove=function(e){_this37.UIOnMouseMove(e);};this.UIElement.onmouseout=function(e){_this37.UIOnMounseOut(e);};this.UIElement.onmouseleave=function(e){_this37.UIOnMouseleave(e);};//手机拖拽
|
|
10084
|
+
this.UIElement.ontouchstart=function(e){_this37.OnTouchStart(e);};this.UIElement.ontouchmove=function(e){_this37.OnTouchMove(e);};this.UIElement.ontouchend=function(e){_this37.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();//获取设备的分辨率
|
|
10079
10085
|
this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
|
|
10080
10086
|
if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
|
|
10081
10087
|
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.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;};//设置股票列表
|
|
@@ -10094,7 +10100,7 @@ for(var i=0;i<data.data.length;++i){var item=data.data[i];var symbol=item[0];var
|
|
|
10094
10100
|
this.UpdateMapStockData=function(data){if(!data||!IFrameSplitOperator.IsNonEmptyArray(data.data))return;//0=证券代码 1=股票名称
|
|
10095
10101
|
for(var i=0;i<data.data.length;++i){var item=data.data[i];var symbol=item[0];var stock=null;if(this.MapStockData.has(symbol)){stock=this.MapStockData.get(symbol);}else{stock=new HQReportItem();stock.OriginalSymbol=symbol;this.MapStockData.set(symbol,stock);}stock.Symbol=this.GetSymbolNoSuffix(symbol);stock.Name=item[1];this.ReadStockJsonData(stock,item);}};//获取个股数据
|
|
10096
10102
|
this.GetStockData=function(symbol){if(!this.MapStockData)return null;if(!this.MapStockData.has(symbol))return null;return this.MapStockData.get(symbol);};this.GetBlockData=function(symbol){if(!this.BlockData)return null;if(!this.BlockData.has(symbol))return null;return this.BlockData.get(symbol);};//delay=是否延迟
|
|
10097
|
-
this.DelayUpdateStockData=function(){var
|
|
10103
|
+
this.DelayUpdateStockData=function(){var _this38=this;if(this.DelayUpdateTimer!=null){clearTimeout(this.DelayUpdateTimer);this.DelayUpdateTimer=null;}var frequency=this.DelayUpdateFrequency;this.DelayUpdateTimer=setTimeout(function(){_this38.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);//远程排序
|
|
10098
10104
|
return;}}var arySymbol=chart.ShowSymbol;if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return;this.RequestStockData(arySymbol);};//下载股票数据
|
|
10099
10105
|
this.RequestStockData=function(arySymbol){var self=this;if(this.NetworkFilter){var obj={Name:'JSDealChartContainer::RequestStockData',//类名::函数名
|
|
10100
10106
|
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();//更新的股票列表
|
|
@@ -10145,7 +10151,7 @@ var result=this.MoveSelectedRow(-1);if(result){if(result.Redraw)this.Draw();if(r
|
|
|
10145
10151
|
var result=this.MoveSelectedRow(1);if(result){if(result.Redraw)this.Draw();if(result.Update)this.DelayUpdateStockData();}break;case 37://left
|
|
10146
10152
|
if(this.MoveXOffset(-1))this.Draw();break;case 39://right
|
|
10147
10153
|
if(this.MoveXOffset(1))this.Draw();break;}//不让滚动条滚动
|
|
10148
|
-
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
|
|
10154
|
+
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 _this39=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;
|
|
10149
10155
|
if((clickData.Type==2||clickData.Type==4)&&(e.button==0||e.button==2))//点击行|固定行
|
|
10150
10156
|
{if(e.button==0&&clickData.Type==2){if(this.EnableDragRow&&this.SortInfo.Sort<=0){this.DragRow={Click:{X:e.clientX,Y:e.clientY},LastMove:{X:e.clientX,Y:e.clientY},Data:clickData};}}if(clickData.Redraw==true)this.Draw();}else if(clickData.Type==3&&e.button==0)//表头
|
|
10151
10157
|
{this.OnClickHeader(clickData,e);}else if(clickData.Type==1&&e.button==0)//底部工具栏
|
|
@@ -10154,7 +10160,7 @@ if((clickData.Type==2||clickData.Type==4)&&(e.button==0||e.button==2))//点击
|
|
|
10154
10160
|
{if(this.MoveXOffset(1))this.Draw();}else if(tabData.Type==3)//滚动条
|
|
10155
10161
|
{this.DragXScroll={Click:{X:x,Y:y},LastMove:{X:x,Y:y}};}else if(tabData.Type==4)//滚动条内部
|
|
10156
10162
|
{if(this.SetXOffset(tabData.Pos))this.Draw();}else if(tabData.Type==5)//标签
|
|
10157
|
-
{this.OnClickTab(tabData,e);}}}document.onmousemove=function(e){
|
|
10163
|
+
{this.OnClickTab(tabData,e);}}}document.onmousemove=function(e){_this39.DocOnMouseMove(e);};document.onmouseup=function(e){_this39.DocOnMouseUp(e);};};//去掉右键菜单
|
|
10158
10164
|
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;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();}}}};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}`);
|
|
10159
10165
|
if(this.DragRow){var drag=this.DragRow;var moveSetpY=drag.LastMove.Y-e.clientY;if(Math.abs(moveSetpY)<2)return;var reportChart=this.GetReportChart();drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;drag.Inside={X:x,Y:y};if(reportChart){var moveRow=reportChart.OnDrawgRow(x,y,e);if(moveRow){if(moveRow.Type==2){if(moveRow.Data.DataIndex!=drag.Data.Row.DataIndex){drag.MoveRow=moveRow;}}else if(moveRow.Type==7){var pageStatus=reportChart.GetCurrentPageStatus();if(!pageStatus.IsEnd){this.MoveYOffset(1,false);drag.MoveRow=null;this.EnablePageScroll=true;this.AutoScrollPage(2);}}else if(moveRow.Type==5){if(this.Data.YOffset>0){this.MoveYOffset(-1,false);drag.MoveRow=null;this.EnablePageScroll=true;this.AutoScrollPage(-2);}}}reportChart.DragRow=drag;}this.Draw();}else if(this.DragXScroll){var chart=this.ChartPaint[0];if(!chart||!chart.Tab)return;this.DragXScroll.LastMove.X=x;this.DragXScroll.LastMove.Y=y;var pos=chart.Tab.GetScrollPostionByPoint(x,y);if(this.SetXOffset(pos))this.Draw();}};this.DocOnMouseUp=function(e){//清空事件
|
|
10160
10166
|
document.onmousemove=null;document.onmouseup=null;this.StopAutoDragScrollTimer();var bRedraw=false;if(this.DragRow){var reportChart=this.GetReportChart();if(reportChart){this.OnDragRow();reportChart.DragRow=null;}bRedraw=true;}this.DragXScroll=null;this.DragRow=null;this.DragMove=null;if(bRedraw)this.Draw();};this.OnDragRow=function(){if(!this.SourceData||!IFrameSplitOperator.IsNonEmptyArray(this.SourceData.Data))return;if(!this.DragRow||!this.DragRow.MoveRow)return;var drag=this.DragRow;var srcIndex=drag.Data.Row.DataIndex;var moveIndex=drag.MoveRow.Data.DataIndex;if(srcIndex==moveIndex||srcIndex<0||moveIndex<0)return;var data=this.SourceData.Data;if(srcIndex>=data.length||moveIndex>=data.length)return;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_DRAG_ROW);if(event){var sendData={Symbol:this.Symbol,Src:{Index:srcIndex,Symbol:data[srcIndex]},To:{Index:moveIndex,Symbol:data[moveIndex]},PreventDefault:false//PreventDefault 是否阻止内置的点击处理
|
|
@@ -10186,8 +10192,8 @@ if(chart.SelectedModel==0)//不可翻页模式, 只能在当前页移动
|
|
|
10186
10192
|
{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;};//左右移动
|
|
10187
10193
|
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;//显示最后一屏
|
|
10188
10194
|
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();}};//点表头
|
|
10189
|
-
this.OnClickHeader=function(clickData,e){var
|
|
10190
|
-
{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
|
|
10195
|
+
this.OnClickHeader=function(clickData,e){var _this40=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)//本地排序
|
|
10196
|
+
{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 _this40.LocalSort(left,right,header.Column,sortInfo.Sort);});}}else if(header.Column.Sort==2)//远程排序
|
|
10191
10197
|
{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);//远程排序
|
|
10192
10198
|
return;}}this.Data.YOffset=0;this.ResetReportSelectStatus();this.SortInfo.Field=sortInfo.Field;this.SortInfo.Sort=sortInfo.Sort;this.Draw();this.DelayUpdateStockData();}}};//点击标签
|
|
10193
10199
|
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
|