hqchart 1.1.15710 → 1.1.15726
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 +30 -21
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +3 -1
- package/src/jscommon/umychart.complier.js +5 -3
- package/src/jscommon/umychart.js +123 -12
- package/src/jscommon/umychart.testdata.js +3 -1
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +129 -16
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +3 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +129 -16
package/lib/umychart.vue.js
CHANGED
|
@@ -1245,7 +1245,7 @@ if(IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime))chart.Chart
|
|
|
1245
1245
|
{var subItem=item.TextStyle.Right;if(IFrameSplitOperator.IsNumber(subItem.Type))chart.ChartCorssCursor.StringFormatY.TextStyleConfig.Right.Type=subItem.Type;}}}if(option.MinuteInfo)chart.CreateMinuteInfo(option.MinuteInfo);if(IFrameSplitOperator.IsBool(option.IsShowRightMenu))chart.IsShowRightMenu=option.IsShowRightMenu;if(IFrameSplitOperator.IsNumber(option.DayCount))chart.DayCount=option.DayCount;if(IFrameSplitOperator.IsBool(option.IsShowMaxMinText))chart.ChartPaint[0].MaxMinTextConfig.IsShow=option.IsShowMaxMinText;this.SetChartBorder(chart,option);if(option.SplashTitle)chart.ChartSplashPaint.SplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableBorderDrag)){chart.EnableBorderDrag=option.EnableBorderDrag;}if(IFrameSplitOperator.IsBool(option.EnableBuySellBar)){var barChart=chart.GetChartMinuteBuySellBar();if(barChart)barChart.IsShow=option.EnableBuySellBar;}this.AdjustChartBorder(chart);if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;chart.SetSubFrameAttribute(chart.Frame.SubFrame[i],null,item);}chart.UpdateXShowText();}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}//叠加股票
|
|
1246
1246
|
if(option.Overlay){for(var i=0;i<option.Overlay.length;++i){var item=option.Overlay[i];chart.OverlaySymbol(item.Symbol,item);}}if(option.MinuteLine){if(option.MinuteLine.IsDrawAreaPrice==false)chart.ChartPaint[0].IsDrawArea=false;if(option.MinuteLine.IsShowLead==false)chart.IsShowLead=false;if(option.MinuteLine.IsShowAveragePrice==false){chart.ChartPaint[1].IsShow=false;chart.TitlePaint[0].IsShowAveragePrice=false;//标题栏均线也不显示
|
|
1247
1247
|
for(var i=0;i<chart.ExtendChartPaint.length;++i){var item=chart.ExtendChartPaint[i];if(item.ClassName=="MinuteTooltipPaint")item.IsShowAveragePrice=false;}}if(option.MinuteLine.SplitType>0)chart.Frame.SubFrame[0].Frame.YSplitOperator.SplitType=option.MinuteLine.SplitType;}if(option.MinuteVol){var item=option.MinuteVol;if(IFrameSplitOperator.IsNumber(item.BarColorType))chart.ChartPaint[2].BarColorType=item.BarColorType;}if(option.MinuteTitle){var item=option.MinuteTitle;var chartTitle=chart.TitlePaint[0];if(IFrameSplitOperator.IsBool(item.IsShowName))chart.TitlePaint[0].IsShowName=item.IsShowName;if(IFrameSplitOperator.IsBool(item.IsShowDate))chart.TitlePaint[0].IsShowDate=item.IsShowDate;if(IFrameSplitOperator.IsBool(item.IsShowTime))chart.TitlePaint[0].IsShowTime=item.IsShowTime;if(IFrameSplitOperator.IsBool(item.IsTitleShowLatestData))chart.IsTitleShowLatestData=item.IsTitleShowLatestData;if(IFrameSplitOperator.IsBool(item.IsAlwaysShowLastData))chart.TitlePaint[0].IsAlwaysShowLastData=item.IsAlwaysShowLastData;if(IFrameSplitOperator.IsNumber(item.ShowLastDataFormat))chart.TitlePaint[0].ShowLastDataFormat=item.ShowLastDataFormat;if(item.TimeFormat)chart.TitlePaint[0].TimeFormat=item.TimeFormat;if(item.ShowPostion||item.ShowPosition)//显示位置高级配置
|
|
1248
|
-
{var subItem=item.ShowPostion;if(item.ShowPosition)subItem=item.ShowPosition;if(!chartTitle.ShowPositionConfig)chartTitle.ShowPositionConfig={Margin:{}};if(IFrameSplitOperator.IsNumber(subItem.Type))chartTitle.ShowPositionConfig.Type=subItem.Type;if(subItem.Margin){if(IFrameSplitOperator.IsNumber(subItem.Margin.Left))chartTitle.ShowPositionConfig.Margin.Left=subItem.Margin.Left;if(IFrameSplitOperator.IsNumber(subItem.Margin.Right))chartTitle.ShowPositionConfig.Margin.Right=subItem.Margin.Right;if(IFrameSplitOperator.IsNumber(subItem.Margin.Bottom))chartTitle.ShowPositionConfig.Margin.Bottom=subItem.Margin.Bottom;}}}if(IFrameSplitOperator.IsBool(option.CorssCursorTouchEnd))chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(IFrameSplitOperator.IsBool(option.IsClickShowCorssCursor))chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;if(option.IsShowBeforeData===true)chart.IsShowBeforeData=option.IsShowBeforeData;var windows=[null,null];if(option.MainWindow)windows[0]=option.MainWindow;if(IFrameSplitOperator.IsNonEmptyArray(option.Windows))windows.push.apply(windows,(0,_toConsumableArray3.default)(option.Windows));//分钟数据指标从第3个指标窗口设置
|
|
1248
|
+
{var subItem=item.ShowPostion;if(item.ShowPosition)subItem=item.ShowPosition;if(!chartTitle.ShowPositionConfig)chartTitle.ShowPositionConfig={Margin:{}};if(IFrameSplitOperator.IsNumber(subItem.Type))chartTitle.ShowPositionConfig.Type=subItem.Type;if(subItem.Margin){if(IFrameSplitOperator.IsNumber(subItem.Margin.Left))chartTitle.ShowPositionConfig.Margin.Left=subItem.Margin.Left;if(IFrameSplitOperator.IsNumber(subItem.Margin.Right))chartTitle.ShowPositionConfig.Margin.Right=subItem.Margin.Right;if(IFrameSplitOperator.IsNumber(subItem.Margin.Bottom))chartTitle.ShowPositionConfig.Margin.Bottom=subItem.Margin.Bottom;}}if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayTitleName))chartTitle.AryOverlayTitleName=item.OverlayTitleName.slice();}if(IFrameSplitOperator.IsBool(option.CorssCursorTouchEnd))chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(IFrameSplitOperator.IsBool(option.IsClickShowCorssCursor))chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;if(option.IsShowBeforeData===true)chart.IsShowBeforeData=option.IsShowBeforeData;var windows=[null,null];if(option.MainWindow)windows[0]=option.MainWindow;if(IFrameSplitOperator.IsNonEmptyArray(option.Windows))windows.push.apply(windows,(0,_toConsumableArray3.default)(option.Windows));//分钟数据指标从第3个指标窗口设置
|
|
1249
1249
|
if(IFrameSplitOperator.IsNonEmptyArray(windows)){var scriptData=new JSIndexScript();for(var i=0;i<windows.length;++i){var index=i;var item=windows[i];if(!item)continue;if(item.Script){chart.WindowIndex[index]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
1250
1250
|
}else if(item.API)//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
|
|
1251
1251
|
{var apiItem=item.API;chart.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[index]=indexItem.Create();//创建子窗口的指标
|
|
@@ -1699,7 +1699,9 @@ SUSP_ID:1//停牌
|
|
|
1699
1699
|
//十字光标状态
|
|
1700
1700
|
};var JSCHART_CORSSCURSOR_STATUS_ID={NONE_ID:0,LINE_ID:1,LEFT_TEXT_ID:2,LEFT_INTER_TEXT_ID:4,RIGHT_TEXT_ID:8,RIGHT_INTER_TEXT_ID:16,BOTTOM_TEXT_ID:32};var JSCHART_TEMPORARY_ATTRIBUTE={MAINFRAME:{BOTTOMSPACE:"MainFrame-BottomSpace",//主图底部预留空间,单位像素
|
|
1701
1701
|
TOPSPACE:"MainFrame-TopSpace",//主图顶部预留空间,单位像素
|
|
1702
|
-
SHOWLEFTTEXT:"MainFrame-ShowLeftText",SHOWRIGHTTEXT:"MainFrame-ShowRightText",SPLITTYPE:"MainFrame-SplitType"
|
|
1702
|
+
SHOWLEFTTEXT:"MainFrame-ShowLeftText",SHOWRIGHTTEXT:"MainFrame-ShowRightText",SPLITTYPE:"MainFrame-SplitType",//0=自动分割 1=数据的最大最小值分割 2=堆积图(0-100)
|
|
1703
|
+
HRESERVED:"MainFrame-HorizontalReserved",//上下预留空间 { Top:, Bottom: }
|
|
1704
|
+
TITLEHEIGHT:"MainFrame-TitleHeight"//标题栏高度
|
|
1703
1705
|
}};function PhoneDBClick(){this.Start=[];this.Clear=function(){this.Start=[];};this.AddTouchStart=function(x,y,time){if(this.Start.length>0){var item=this.Start[this.Start.length-1];var spanTime=time-item.Time;if(spanTime>0&&spanTime<300){this.Start.push({X:x,Y:y,Time:time});}else{this.Start=[];}}else{this.Start.push({X:x,Y:y,Time:time});}};this.IsVaildDBClick=function(){if(this.Start.length==2)return true;return false;};this.AddTouchEnd=function(time){if(this.Start.length<=0)return;var item=this.Start[this.Start.length-1];var spanTime=time-item.Time;if(spanTime>=0&&spanTime<150){}else{this.Start=[];}};}/*
|
|
1704
1706
|
图形控件
|
|
1705
1707
|
*/function JSChartContainer(uielement,OffscreenElement,cacheElement){var _this9=this;this.ClassName='JSChartContainer';var _self=this;this.Frame;//框架画法
|
|
@@ -1852,7 +1854,7 @@ this.TryYDrag=function(x,y){if(!this.EnableYDrag)return null;if(!this.EnableYDra
|
|
|
1852
1854
|
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;if(button.Type==1){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);}}else if(button.Type==2){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_CROSSCURSOR_BOTTOM);if(event&&event.Callback){var sendData={Button:button,e:e};event.Callback(event,sendData,this);}}return true;};this.TryClickButton=function(x,y,e){var button=this.Frame.PtInButtons(x,y);if(button&&this.ClickFrameButton){this.ClickFrameButton(button,e);return true;}button=this.PtInExtendChartButtons(x,y);if(button&&this.ClickExtendChartButton){this.ClickExtendChartButton(button,e);return true;}button=this.PtInDrawPictureButtons(x,y);if(button&&this.ClickDrawPictureButton){this.ClickDrawPictureButton(button,e);return true;}button=this.PtInTitleButtons(x,y);if(button&&this.ClickTitleButton){this.ClickTitleButton(button,e);return true;}var label=this.Frame.PtInHorizontalLabel(x,y);if(label&&this.ClickHorizontalLabel){this.ClickHorizontalLabel(label,e);return true;}return false;};//点击图新内部元素
|
|
1853
1855
|
this.TryClickChartCell=function(x,y,e){var result=null;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.ClickCell)continue;if(item.IsHideScriptIndex())continue;result=item.ClickCell(x,y,e);if(result){result.Chart=item;return result;}}for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.ClickCell)continue;result=item.ClickCell(x,y,e);if(result){result.Chart=item;result.IsOverlayChart=true;return result;}}for(var i=0,j=0,k=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))continue;for(j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(!IFrameSplitOperator.IsNonEmptyArray(overlayItem.ChartPaint))continue;for(var k=0;k<overlayItem.ChartPaint.length;++k){var chart=overlayItem.ChartPaint[k];if(!chart.IsShow)continue;if(chart.IsHideScriptIndex())continue;if(chart.ClickCell){result=chart.ClickCell(x,y,e);if(result){result.Chart=chart;result.IsOverlayIndex=true;return result;}}}}}return null;};this.TryMouseMove_CustomChartDrag=function(sendData){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_DRAG_MOUSE_MOVE);if(!event||!event.Callback)return false;return event.Callback(event,sendData,this);};this.TryClick_CustomChartDrag=function(sendData){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_DRAG_MOUSE_DOWN);if(!event||!event.Callback)return false;sendData.ChartDrag=null;sendData.Cusrsor=null;event.Callback(event,sendData,this);this.CustomChartDrag=sendData.ChartDrag;this.SetCursor(sendData);};this.TryDragMove_CustomChartDrag=function(sendData){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_DRAG_DOC_MOUSE_MOVE);if(!event||!event.Callback)return;var e=sendData.e;var drag=sendData.Drag;if(Math.abs(drag.LastMove.Y-e.clientY)<2&&Math.abs(drag.LastMove.X-e.clientX)<2)return;if(event.Callback(event,sendData,this)){drag.LastMove.X=e.clientX;drag.LastMove.Y=e.clientY;}};this.TryMouseUp_CustomChartDrag=function(sendData){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_DRAG_DOC_MOUSE_UP);if(!event||!event.Callback)return;event.Callback(event,sendData,this);};this.UIOnMouseDown=function(e){var _this10=this;this.MoveOnChartDrawPicture=null;if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;this.ClickDownPoint={X:e.clientX,Y:e.clientY};this.IsOnTouch=true;this.BorderDrag=null;this.YDrag=null;this.UpDownDrag=null;this.RectSelectDrag=null;this.IndexChartDrag=null;this.CustomChartDrag=null;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;if(this.TryClickButton(x,y,e)){this.IsOnTouch=false;return;}var bDrawDynamicInfo=false;if(this.GlobalOption.SelectedBorder&&this.GlobalOption.SelectedBorder.Mode>=1){var item=this.GlobalOption.SelectedBorder;var frameId=this.Frame.PtInFrame(x,y);if(frameId>=0&&frameId!=item.SelFrame){item.SelFrame=frameId;bDrawDynamicInfo=true;}}var bRedraw=false;if(this.GlobalOption.SelectedXBorder&&this.GlobalOption.SelectedXBorder.Mode>=1){if(this.PtInMulitDayMinute){var item=this.GlobalOption.SelectedXBorder;var selectedDate=this.PtInMulitDayMinute(x,y);if(item.Date!=selectedDate){item.Date=selectedDate;bRedraw=true;}}}if(this.TryClickCrossCursor(x,y,e)){this.IsOnTouch=false;return;}if(this.TryClickChartTooltipData&&this.TryClickChartTooltipData(x,y,e))//预留给外部点击图标什么用的
|
|
1854
1856
|
{this.IsOnTouch=false;return;}if(this.TryClickLock){//JSConsole.Chart.Log('[uielement.onmousedown] left, top ',e.clientX, e.clientY, this.getBoundingClientRect().left,this.getBoundingClientRect().top);
|
|
1855
|
-
if(this.TryClickLock(x,y))return;}this.HideSelectRect();this.ClearDragSelectRect();if(this.ChartPictureMenu)this.ChartPictureMenu.Hide();var paint=this.GetRectSelectPaint();if(paint&&paint.GetPointCount()>0){var item=paint.PtInPaint(x,y);if(item){if(item.Type==4){//this.UIElement.style.cursor="pointer";
|
|
1857
|
+
if(this.TryClickLock(x,y)){this.IsOnTouch=false;return;}}this.HideSelectRect();this.ClearDragSelectRect();if(this.ChartPictureMenu)this.ChartPictureMenu.Hide();var paint=this.GetRectSelectPaint();if(paint&&paint.GetPointCount()>0){var item=paint.PtInPaint(x,y);if(item){if(item.Type==4){//this.UIElement.style.cursor="pointer";
|
|
1856
1858
|
this.SetCursor({Cursor:"pointer"});var obj={X:e.clientX};if(this.GetXDataIndex(obj)){this.RectSelectDrag={DataIndex:obj.DataIndex,Type:item.Type,X:e.clientX};JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] drag sub rect select ",obj);}}else{//this.UIElement.style.cursor="ew-resize";
|
|
1857
1859
|
this.SetCursor({Cursor:"ew-resize"});this.RectSelectDrag={Index:item.PointIndex,Type:item.Type};JSConsole.Chart.Log("[JSChartContainer::UIOnMouseDown] drag rect select ",item);}}}if(!this.IsShowSelectRectDialog())//区间统计框存在,不清空区间背景色
|
|
1858
1860
|
{if(!this.RectSelectDrag&&this.ClearRectSelect(false))this.Draw();}if(this.EnableBorderDrag&&this.Frame){var dragBorder=this.Frame.PtInFrameBorder(x,y);if(dragBorder&&dragBorder.Index>=0){//this.UIElement.style.cursor="n-resize";
|
|
@@ -2345,8 +2347,7 @@ this.GetExtendChartByClassNameV2=function(name){var aryChart=[];for(var i=0;i<th
|
|
|
2345
2347
|
this.DeleteExtendChart=function(data){if(data.Index>=this.ExtendChartPaint.length)return;if(this.ExtendChartPaint[data.Index]!=data.Chart)return;if(typeof data.Chart.Clear=='function')data.Chart.Clear();this.ExtendChartPaint.splice(data.Index,1);};//删除扩展画法
|
|
2346
2348
|
this.DeleteExtendChartByID=function(id){for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ID==id){this.ExtendChartPaint.splice(i,1);return true;}}return false;};//全屏提示信息 { Title:提示信息, Draw:false/true 是否立即重绘, }
|
|
2347
2349
|
this.EnableSplashScreen=function(enable,option){if(!this.ChartSplashPaint)return;this.ChartSplashPaint.EnableSplash(enable);if(option&&option.Draw===false)return;if(enable)this.DrawSplashScreen(option);else this.Draw();};this.SetSplashScreen=function(option){if(!option)return;if(IFrameSplitOperator.IsBool(option.Enable))this.ChartSplashPaint.EnableSplash(option.Enable);if(option.Title)this.ChartSplashPaint.SetTitle(option.Title);if(option.Draw)this.Draw();};this.IsEnableSplashScreen=function(){if(!this.ChartSplashPaint)return false;return this.ChartSplashPaint.IsEnableSplash;};//设置指标窗口属性 windowItem=SetOption.Windows[i], frameItem=SetOption.Frames[i];
|
|
2348
|
-
this.SetSubFrameAttribute=function(subFrame,windowItem,frameItem){if(!subFrame||!subFrame.Frame)return;var frame=subFrame.Frame;var pixelRatio=GetDevicePixelRatio();if(windowItem){if(IFrameSplitOperator.IsBool(windowItem.Modify))frame.ModifyIndex=windowItem.Modify;if(IFrameSplitOperator.IsBool(windowItem.Change))frame.ChangeIndex=windowItem.Change;if(IFrameSplitOperator.IsBool(windowItem.Close))frame.CloseIndex=windowItem.Close;if(IFrameSplitOperator.IsBool(windowItem.Overlay))frame.OverlayIndex=windowItem.Overlay;if(IFrameSplitOperator.IsBool(windowItem.Export))frame.ExportData=windowItem.Export;if(IFrameSplitOperator.IsBool(windowItem.MaxMin))frame.MaxMinWindow=windowItem.MaxMin;if(IFrameSplitOperator.IsBool(windowItem.TitleWindow))frame.TitleWindow=windowItem.TitleWindow;if(IFrameSplitOperator.IsBool(windowItem.AddIndexWindow))frame.AddIndexWindow=windowItem.AddIndexWindow;if(IFrameSplitOperator.IsBool(windowItem.IndexHelp))frame.IndexHelp=windowItem.IndexHelp;if(IFrameSplitOperator.IsBool(windowItem.IsDrawTitleBG))frame.IsDrawTitleBG=windowItem.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(windowItem.IsShowNameArrow))frame.IsShowNameArrow=windowItem.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(windowItem.TitleHeight))frame.ChartBorder.TitleHeight=windowItem.TitleHeight;else windowItem.TitleHeight=frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(windowItem.IsShowTitleArrow))frame.IsShowTitleArrow=windowItem.IsShowTitleArrow;if(IFrameSplitOperator.IsNumber(windowItem.TitleArrowType))frame.TitleArrowType=windowItem.TitleArrowType;if(IFrameSplitOperator.IsBool(windowItem.IsShowIndexName))frame.IsShowIndexName=windowItem.IsShowIndexName;if(IFrameSplitOperator.IsBool(windowItem.IsSinlgeLine))frame.IsSinlgeLine=windowItem.IsSinlgeLine;if(IFrameSplitOperator.IsBool(windowItem.IsShowOverlayIndexName))frame.IsShowOverlayIndexName=windowItem.IsShowOverlayIndexName;if(IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace))frame.IndexParamSpace=windowItem.IndexParamSpace;if(IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace))frame.IndexTitleSpace=windowItem.IndexTitleSpace;if(
|
|
2349
|
-
if(windowItem.OverlayIndexType){if(IFrameSplitOperator.IsNumber(windowItem.OverlayIndexType.Position))frame.OverlayIndexType.Position=windowItem.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(windowItem.OverlayIndexType.LineSpace))frame.OverlayIndexType.LineSpace=windowItem.OverlayIndexType.LineSpace;}}if(frameItem){if(frameItem.SplitCount)frame.YSplitOperator.SplitCount=frameItem.SplitCount;//Y轴刻度线个数
|
|
2350
|
+
this.SetSubFrameAttribute=function(subFrame,windowItem,frameItem){if(!subFrame||!subFrame.Frame)return;var frame=subFrame.Frame;var pixelRatio=GetDevicePixelRatio();if(windowItem){if(IFrameSplitOperator.IsBool(windowItem.Modify))frame.ModifyIndex=windowItem.Modify;if(IFrameSplitOperator.IsBool(windowItem.Change))frame.ChangeIndex=windowItem.Change;if(IFrameSplitOperator.IsBool(windowItem.Close))frame.CloseIndex=windowItem.Close;if(IFrameSplitOperator.IsBool(windowItem.Overlay))frame.OverlayIndex=windowItem.Overlay;if(IFrameSplitOperator.IsBool(windowItem.Export))frame.ExportData=windowItem.Export;if(IFrameSplitOperator.IsBool(windowItem.MaxMin))frame.MaxMinWindow=windowItem.MaxMin;if(IFrameSplitOperator.IsBool(windowItem.TitleWindow))frame.TitleWindow=windowItem.TitleWindow;if(IFrameSplitOperator.IsBool(windowItem.AddIndexWindow))frame.AddIndexWindow=windowItem.AddIndexWindow;if(IFrameSplitOperator.IsBool(windowItem.IndexHelp))frame.IndexHelp=windowItem.IndexHelp;if(IFrameSplitOperator.IsBool(windowItem.IsDrawTitleBG))frame.IsDrawTitleBG=windowItem.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(windowItem.IsShowNameArrow))frame.IsShowNameArrow=windowItem.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(windowItem.TitleHeight))frame.ChartBorder.TitleHeight=windowItem.TitleHeight;else windowItem.TitleHeight=frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(windowItem.IsShowTitleArrow))frame.IsShowTitleArrow=windowItem.IsShowTitleArrow;if(IFrameSplitOperator.IsNumber(windowItem.TitleArrowType))frame.TitleArrowType=windowItem.TitleArrowType;if(IFrameSplitOperator.IsBool(windowItem.IsShowIndexName))frame.IsShowIndexName=windowItem.IsShowIndexName;if(IFrameSplitOperator.IsBool(windowItem.IsSinlgeLine))frame.IsSinlgeLine=windowItem.IsSinlgeLine;if(IFrameSplitOperator.IsBool(windowItem.IsShowOverlayIndexName))frame.IsShowOverlayIndexName=windowItem.IsShowOverlayIndexName;if(IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace))frame.IndexParamSpace=windowItem.IndexParamSpace;if(IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace))frame.IndexTitleSpace=windowItem.IndexTitleSpace;if(windowItem.OverlayIndexType){if(IFrameSplitOperator.IsNumber(windowItem.OverlayIndexType.Position))frame.OverlayIndexType.Position=windowItem.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(windowItem.OverlayIndexType.LineSpace))frame.OverlayIndexType.LineSpace=windowItem.OverlayIndexType.LineSpace;}}if(frameItem){if(frameItem.SplitCount)frame.YSplitOperator.SplitCount=frameItem.SplitCount;//Y轴刻度线个数
|
|
2350
2351
|
if(frameItem.StringFormat)frame.YSplitOperator.StringFormat=frameItem.StringFormat;//Y轴文字格式
|
|
2351
2352
|
if(IFrameSplitOperator.IsNumber(frameItem.FloatPrecision))frame.YSplitOperator.FloatPrecision=frameItem.FloatPrecision;//Y轴小数位数
|
|
2352
2353
|
if(frameItem.Custom)frame.YSplitOperator.Custom=frameItem.Custom;//Y轴自定义刻度
|
|
@@ -2357,8 +2358,9 @@ if(frameItem.IsYReverse===true)frame.CoordinateType=1;//反转坐标
|
|
|
2357
2358
|
if(IFrameSplitOperator.IsNumber(frameItem.PercentageTextFormat))frame.YSplitOperator.PercentageTextFormat=frameItem.PercentageTextFormat;//百分比坐标格式
|
|
2358
2359
|
if(frameItem.DefaultYMaxMin)frame.YSplitOperator.DefaultYMaxMin=frameItem.DefaultYMaxMin;//指定最大最小值
|
|
2359
2360
|
if(IFrameSplitOperator.IsBool(frameItem.EnableRemoveZero))frame.YSplitOperator.EnableRemoveZero=frameItem.EnableRemoveZero;//Y轴文字小数位是否自动抹0
|
|
2360
|
-
if(IFrameSplitOperator.IsPlusNumber(frameItem.MinYDistance))frame.MinYDistance=frameItem.MinYDistance;if(IFrameSplitOperator.IsNumber(frameItem.BorderLine))frame.BorderLine=frameItem.BorderLine;if(IFrameSplitOperator.IsBool(frameItem.IsDrawTitleBottomLine))frame.IsDrawTitleBottomLine=frameItem.IsDrawTitleBottomLine;if(IFrameSplitOperator.IsBool(frameItem.IsShowIndexTitle))frame.IsShowIndexTitle=frameItem.IsShowIndexTitle;if(frameItem.ClientBGColor)frame.ClientBGColor=frameItem.ClientBGColor;if(frameItem.Toolbar){var subItem=frameItem.Toolbar.Margin;if(subItem&&IFrameSplitOperator.IsNumber(subItem.Right))frame.ToolbarConfig.Margin.Right=subItem.Right;}
|
|
2361
|
-
|
|
2361
|
+
if(IFrameSplitOperator.IsPlusNumber(frameItem.MinYDistance))frame.MinYDistance=frameItem.MinYDistance;if(IFrameSplitOperator.IsNumber(frameItem.BorderLine))frame.BorderLine=frameItem.BorderLine;if(IFrameSplitOperator.IsBool(frameItem.IsDrawTitleBottomLine))frame.IsDrawTitleBottomLine=frameItem.IsDrawTitleBottomLine;if(IFrameSplitOperator.IsBool(frameItem.IsShowIndexTitle))frame.IsShowIndexTitle=frameItem.IsShowIndexTitle;if(frameItem.ClientBGColor)frame.ClientBGColor=frameItem.ClientBGColor;if(frameItem.Toolbar){var subItem=frameItem.Toolbar.Margin;if(subItem&&IFrameSplitOperator.IsNumber(subItem.Right))frame.ToolbarConfig.Margin.Right=subItem.Right;}if(!IFrameSplitOperator.IsUndefined(frameItem.HorizontalReserved))frame.HorizontalReserved=frameItem.HorizontalReserved;//Y轴上下预留
|
|
2362
|
+
//分时图属性
|
|
2363
|
+
if(IFrameSplitOperator.IsBool(frameItem.CloseBeforeButton))frame.IsShowCloseButton=frameItem.CloseBeforeButton;if(frame.YSplitOperator.RightTextConfig)//主图右侧坐标设置
|
|
2362
2364
|
{if(IFrameSplitOperator.IsNumber(frameItem.RightTextFormat))//废弃(兼容版本)
|
|
2363
2365
|
{frame.YSplitOperator.RightTextConfig.Format=frameItem.RightTextFormat;if(frameItem.RightTextFormat==2)frame.MultiTextFormat=1;}if(frameItem.RightText)//主图右侧坐标设置(新版本)
|
|
2364
2366
|
{var subItem=frameItem.RightText;if(IFrameSplitOperator.IsNumber(subItem.Format))frame.YSplitOperator.RightTextConfig.Format=subItem.Format;if(subItem.Format==2)frame.MultiTextFormat=1;if(subItem.Percentage&&IFrameSplitOperator.IsNumber(subItem.Percentage.Dec))frame.YSplitOperator.RightTextConfig.Percentage.Dec=subItem.Percentage.Dec;}}}if(frame.DivFrameToolbar)frame.DivFrameToolbar.UpdateButton();//更新div工具条
|
|
@@ -2436,11 +2438,11 @@ for(var i=0,j=0,k=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFra
|
|
|
2436
2438
|
this.ClearIndexRunCount=function(){//主图指标
|
|
2437
2439
|
for(var i=0;i<this.WindowIndex.length;++i){var item=this.WindowIndex[i];if(!item)continue;item.RunCount=0;}//叠加指标
|
|
2438
2440
|
for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Script)overlayItem.Script.RunCount=0;}}};//获取当前的显示的指标 包含叠加指标
|
|
2439
|
-
this.GetIndexInfo=function(){var aryIndex=[];for(var i=0,j=0;i<this.WindowIndex.length;++i){var item=this.WindowIndex[i];if(!item)continue;var info={Name:item.Name,WindowIndex:i,IsOverlay:false};if(item.ID)info.ID=item.ID;if(IFrameSplitOperator.IsNonEmptyArray(item.Arguments))//参数
|
|
2440
|
-
{info.Args=[];for(j=0;j<item.Arguments.length;++j){var argItem=item.Arguments[j];info.Args.push({Name:argItem.Name,Value:argItem.Value});}}aryIndex.push(info);}this.GetOverlayIndexInfo(aryIndex);//叠加指标
|
|
2441
|
+
this.GetIndexInfo=function(){var aryIndex=[];for(var i=0,j=0;i<this.WindowIndex.length;++i){var item=this.WindowIndex[i];if(!item)continue;var info={Name:item.Name,WindowIndex:i,IsOverlay:false,IsAuthorization:item.IsAuthorization};if(item.ID)info.ID=item.ID;if(item.ClassName=="APIScriptIndex")info.API={Url:item.ApiUrl,Name:item.Name,ID:item.ID};if(IFrameSplitOperator.IsNonEmptyArray(item.Arguments))//参数
|
|
2442
|
+
{info.Args=[];for(j=0;j<item.Arguments.length;++j){var argItem=item.Arguments[j];info.Args.push({Name:argItem.Name,Value:argItem.Value});}if(info.API)info.API.Args=info.Args;}aryIndex.push(info);}this.GetOverlayIndexInfo(aryIndex);//叠加指标
|
|
2441
2443
|
return aryIndex;};//叠加指标
|
|
2442
|
-
this.GetOverlayIndexInfo=function(aryIndex){for(var i=0,j=0,k=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))continue;for(j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(!overlayItem.Script)continue;var indexData=overlayItem.Script;var info={Name:indexData.Name,ID:indexData.ID,WindowIndex:i,IsOverlay:true,Identify:overlayItem.Identify};if(IFrameSplitOperator.IsNonEmptyArray(indexData.Arguments))//参数
|
|
2443
|
-
{info.Args=[];for(k=0;k<indexData.Arguments.length;++k){var argItem=indexData.Arguments[k];info.Args.push({Name:argItem.Name,Value:argItem.Value});}}aryIndex.push(info);}}};//点tab弹菜单
|
|
2444
|
+
this.GetOverlayIndexInfo=function(aryIndex){for(var i=0,j=0,k=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex))continue;for(j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(!overlayItem.Script)continue;var indexData=overlayItem.Script;var info={Name:indexData.Name,ID:indexData.ID,WindowIndex:i,IsOverlay:true,Identify:overlayItem.Identify,IsAuthorization:indexData.IsAuthorization};if(indexData.ClassName=="APIScriptIndex")info.API={Url:indexData.ApiUrl,Name:indexData.Name,ID:indexData.ID};if(IFrameSplitOperator.IsNonEmptyArray(indexData.Arguments))//参数
|
|
2445
|
+
{info.Args=[];for(k=0;k<indexData.Arguments.length;++k){var argItem=indexData.Arguments[k];info.Args.push({Name:argItem.Name,Value:argItem.Value});}if(info.API)info.API.Args=info.Args;}aryIndex.push(info);}}};//点tab弹菜单
|
|
2444
2446
|
this.PopupMenuByTab=function(menuData,rtTab){if(!this.JSPopMenu)return;var pixelRatio=GetDevicePixelRatio();var rtCell={Left:rtTab.Left/pixelRatio,Right:rtTab.Right/pixelRatio,Bottom:rtTab.Bottom/pixelRatio,Top:rtTab.Top/pixelRatio};rtCell.Width=rtCell.Right-rtCell.Left;rtCell.Height=rtCell.Bottom-rtCell.Top;var rtClient=this.UIElement.getBoundingClientRect();var rtScroll=GetScrollPosition();var offsetLeft=rtClient.left+rtScroll.Left;var offsetTop=rtClient.top+rtScroll.Top;rtCell.Left+=offsetLeft;rtCell.Right+=offsetLeft;rtCell.Top+=offsetTop;rtCell.Bottom+=offsetTop;this.JSPopMenu.CreatePopMenu(menuData);this.JSPopMenu.PopupMenuByTab(rtCell);};//下拉菜单
|
|
2445
2447
|
this.PopupMenuByDrapdown=function(menuData,rtButton){if(!this.JSPopMenu)return;var pixelRatio=GetDevicePixelRatio();var rtCell={Left:rtButton.Left/pixelRatio,Right:rtButton.Right/pixelRatio,Bottom:rtButton.Bottom/pixelRatio,Top:rtButton.Top/pixelRatio};rtCell.Width=rtCell.Right-rtCell.Left;rtCell.Height=rtCell.Bottom-rtCell.Top;var rtClient=this.UIElement.getBoundingClientRect();var rtScroll=GetScrollPosition();var offsetLeft=rtClient.left+rtScroll.Left;var offsetTop=rtClient.top+rtScroll.Top;rtCell.Left+=offsetLeft;rtCell.Right+=offsetLeft;rtCell.Top+=offsetTop;rtCell.Bottom+=offsetTop;this.JSPopMenu.CreatePopMenu(menuData);this.JSPopMenu.PopupMenuByDrapdown(rtCell);};//右键菜单
|
|
2446
2448
|
this.PopupMenuByRClick=function(menuData,x,y){if(!this.JSPopMenu)return;var rtClient=this.UIElement.getBoundingClientRect();var rtScroll=GetScrollPosition();x+=rtClient.left+rtScroll.Left;y+=rtClient.top+rtScroll.Top;this.JSPopMenu.CreatePopMenu(menuData);this.JSPopMenu.PopupMenuByRight(x,y);};//菜单命令
|
|
@@ -2523,7 +2525,7 @@ this.UpdateTradeStatusData=function(data,option){if(option){//是否清空
|
|
|
2523
2525
|
if(option.IsClear===true)this.GlobalOption.TradeStatus=null;}if(!data)return false;if(IFrameSplitOperator.IsNumber(data.Date)&&IFrameSplitOperator.IsNumber(data.Time)&&IFrameSplitOperator.IsNumber(data.Status)){this.GlobalOption.TradeStatus={Date:data.Date,Time:data.Time,Status:data.Status};return true;}return false;};//键盘下按暂停更新
|
|
2524
2526
|
this.IsPauseUpdateByKeyboard=function(){if(!this.IsPressKeyboard)return false;if(!this.PressKeyboardConfig)return false;if(!this.PressKeyboardConfig.PauseUpdate)return false;return true;},//启动|关闭锁指标 aryIndex=[{ IndexID:指标ID, LockData:{IsLocked:} } ]
|
|
2525
2527
|
this.EnableLockIndex=function(aryIndex){if(!IFrameSplitOperator.IsNonEmptyArray(aryIndex))return false;var mapIndex=new _map2.default();for(var i=0;i<aryIndex.length;++i){var item=aryIndex[i];if(item.IndexID&&item.LockData)mapIndex.set(item.IndexID,item);}var aryUpdate=[];for(var i=0;i<this.WindowIndex.length;++i){var item=this.WindowIndex[i];if(!item)continue;if(mapIndex.has(item.ID)){var mapItem=mapIndex.get(item.ID);item.SetLock(mapItem.LockData);//设置锁
|
|
2526
|
-
aryUpdate.push({ID:i});}}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];var script=overlayItem.Script;if(mapIndex.has(script.ID)){var mapItem=mapIndex.get(script.ID);script.SetLock(mapItem.LockData);aryUpdate.push({OverlayID:overlayItem.Identify});}}}if(!IFrameSplitOperator.IsNonEmptyArray(aryUpdate))return false;this.UpdateWindowIndexV2(aryUpdate);return true;};this.TryClickLock=function(x,y){if(!this.Frame||!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))return false;for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];var chartLock=item.Frame.LockPaint;if(!chartLock||!chartLock.LockRect)continue;var tooltip=new TooltipData();if(!chartLock.GetTooltipData(x,y,tooltip))continue;tooltip.HQChart=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEX_LOCK);if(event&&event.Callback){var sendData={FrameID:item.Frame.Identify,Data:tooltip};event.Callback(event,sendData,this);}if(tooltip.Data.Callback)tooltip.Data.Callback(tooltip);return true;}return false;};this.RecvOverlayIndex=function(identify,data){var overlayIndex=this.GetOverlayIndexByIdentify(identify);if(overlayIndex==null){console.warn('[JSChartContainer::RecvOverlayIndex] can\'t find overlay index. [identify='+identify+']');return;}var script=overlayIndex.OverlayItem.Script;if(!script)return;if(typeof script.RecvSubscribeData!="function")return;var kData=this.GetKData();if(!kData)return;script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,kData);};this.UpdateIndexTemporaryAttribute=function(windowIndex,aryAttribute){if(windowIndex<0)return;if(!IFrameSplitOperator.IsNonEmptyArray(aryAttribute))return;if(!this.Frame||!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))return;var mainFrame=this.Frame.SubFrame[windowIndex].Frame;this.IndexTemporaryAttribute[windowIndex]=[];var aryTemporaryAttribute=this.IndexTemporaryAttribute[windowIndex];for(var i=0;i<aryAttribute.length;++i){var item=aryAttribute[i];if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.BOTTOMSPACE){var backup=mainFrame.ChartBorder.BottomSpace;mainFrame.ChartBorder.BottomSpace=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TOPSPACE){var backup=mainFrame.ChartBorder.TopSpace;mainFrame.ChartBorder.TopSpace=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWLEFTTEXT){var backup=mainFrame.YSplitOperator.IsShowLeftText;mainFrame.YSplitOperator.IsShowLeftText=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWRIGHTTEXT){var backup=mainFrame.YSplitOperator.IsShowRightText;mainFrame.YSplitOperator.IsShowRightText=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SPLITTYPE){var backup=mainFrame.YSplitOperator.SplitType;mainFrame.YSplitOperator.SplitType=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}}};this.RestoreIndexTemporaryAttribute=function(windowIndex){if(windowIndex<0)return;if(!this.Frame||!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))return;var aryTemporaryAttribute=this.IndexTemporaryAttribute[windowIndex];if(!IFrameSplitOperator.IsNonEmptyArray(aryTemporaryAttribute))return;var mainFrame=this.Frame.SubFrame[windowIndex].Frame;for(var i=0;i<aryTemporaryAttribute.length;++i){var item=aryTemporaryAttribute[i];if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.BOTTOMSPACE){mainFrame.ChartBorder.BottomSpace=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TOPSPACE){mainFrame.ChartBorder.TopSpace=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWLEFTTEXT){mainFrame.YSplitOperator.IsShowLeftText=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWRIGHTTEXT){mainFrame.YSplitOperator.IsShowRightText=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SPLITTYPE){mainFrame.YSplitOperator.SplitType=item.BackupValue;}}};}function GetDevicePixelRatio(){if(typeof window=='undefined')return 1;return window.devicePixelRatio||1;}function GetFontHeight(context,font,word){if(!context)return null;if(font)context.font=font;var text='擎';if(IFrameSplitOperator.IsString(word))text=word;var fontInfo=context.measureText(text);var textHeight=fontInfo.fontBoundingBoxAscent+fontInfo.fontBoundingBoxDescent;if(!IFrameSplitOperator.IsNumber(textHeight))textHeight=fontInfo.width+2*GetDevicePixelRatio();return textHeight;}function IsPhoneWeb(){var userAgentInfo=navigator.userAgent;var Agents=new Array("Android","iPhone","SymbianOS","Windows Phone","iPad","iPod");for(var v=0;v<Agents.length;v++){if(userAgentInfo.indexOf(Agents[v])>0)return true;}return false;}function OnKeyDown(e)//键盘事件
|
|
2528
|
+
aryUpdate.push({ID:i});}}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];var script=overlayItem.Script;if(mapIndex.has(script.ID)){var mapItem=mapIndex.get(script.ID);script.SetLock(mapItem.LockData);aryUpdate.push({OverlayID:overlayItem.Identify});}}}if(!IFrameSplitOperator.IsNonEmptyArray(aryUpdate))return false;this.UpdateWindowIndexV2(aryUpdate);return true;};this.TryClickLock=function(x,y){if(!this.Frame||!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))return false;for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];var chartLock=item.Frame.LockPaint;if(!chartLock||!chartLock.LockRect)continue;var tooltip=new TooltipData();if(!chartLock.GetTooltipData(x,y,tooltip))continue;tooltip.HQChart=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEX_LOCK);if(event&&event.Callback){var sendData={FrameID:item.Frame.Identify,Data:tooltip};event.Callback(event,sendData,this);}if(tooltip.Data.Callback)tooltip.Data.Callback(tooltip);return true;}return false;};this.RecvOverlayIndex=function(identify,data){var overlayIndex=this.GetOverlayIndexByIdentify(identify);if(overlayIndex==null){console.warn('[JSChartContainer::RecvOverlayIndex] can\'t find overlay index. [identify='+identify+']');return;}var script=overlayIndex.OverlayItem.Script;if(!script)return;if(typeof script.RecvSubscribeData!="function")return;var kData=this.GetKData();if(!kData)return;script.RecvSubscribeData(data,this,overlayIndex.WindowIndex,kData);};this.UpdateIndexTemporaryAttribute=function(windowIndex,aryAttribute){if(windowIndex<0)return;if(!IFrameSplitOperator.IsNonEmptyArray(aryAttribute))return;if(!this.Frame||!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))return;var mainFrame=this.Frame.SubFrame[windowIndex].Frame;this.IndexTemporaryAttribute[windowIndex]=[];var aryTemporaryAttribute=this.IndexTemporaryAttribute[windowIndex];for(var i=0;i<aryAttribute.length;++i){var item=aryAttribute[i];if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.BOTTOMSPACE){var backup=mainFrame.ChartBorder.BottomSpace;mainFrame.ChartBorder.BottomSpace=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TOPSPACE){var backup=mainFrame.ChartBorder.TopSpace;mainFrame.ChartBorder.TopSpace=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWLEFTTEXT){var backup=mainFrame.YSplitOperator.IsShowLeftText;mainFrame.YSplitOperator.IsShowLeftText=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWRIGHTTEXT){var backup=mainFrame.YSplitOperator.IsShowRightText;mainFrame.YSplitOperator.IsShowRightText=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SPLITTYPE){var backup=mainFrame.YSplitOperator.SplitType;mainFrame.YSplitOperator.SplitType=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED){var backup=mainFrame.HorizontalReserved;mainFrame.HorizontalReserved=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT){var backup=mainFrame.ChartBorder.TitleHeight;mainFrame.ChartBorder.TitleHeight=item.Value;aryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}}};this.RestoreIndexTemporaryAttribute=function(windowIndex){if(windowIndex<0)return;if(!this.Frame||!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame))return;var aryTemporaryAttribute=this.IndexTemporaryAttribute[windowIndex];if(!IFrameSplitOperator.IsNonEmptyArray(aryTemporaryAttribute))return;var mainFrame=this.Frame.SubFrame[windowIndex].Frame;for(var i=0;i<aryTemporaryAttribute.length;++i){var item=aryTemporaryAttribute[i];if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.BOTTOMSPACE){mainFrame.ChartBorder.BottomSpace=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TOPSPACE){mainFrame.ChartBorder.TopSpace=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWLEFTTEXT){mainFrame.YSplitOperator.IsShowLeftText=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWRIGHTTEXT){mainFrame.YSplitOperator.IsShowRightText=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SPLITTYPE){mainFrame.YSplitOperator.SplitType=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED){mainFrame.HorizontalReserved=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT){mainFrame.ChartBorder.TitleHeight=item.BackupValue;}}};}function GetDevicePixelRatio(){if(typeof window=='undefined')return 1;return window.devicePixelRatio||1;}function GetFontHeight(context,font,word){if(!context)return null;if(font)context.font=font;var text='擎';if(IFrameSplitOperator.IsString(word))text=word;var fontInfo=context.measureText(text);var textHeight=fontInfo.fontBoundingBoxAscent+fontInfo.fontBoundingBoxDescent;if(!IFrameSplitOperator.IsNumber(textHeight))textHeight=fontInfo.width+2*GetDevicePixelRatio();return textHeight;}function IsPhoneWeb(){var userAgentInfo=navigator.userAgent;var Agents=new Array("Android","iPhone","SymbianOS","Windows Phone","iPad","iPod");for(var v=0;v<Agents.length;v++){if(userAgentInfo.indexOf(Agents[v])>0)return true;}return false;}function OnKeyDown(e)//键盘事件
|
|
2527
2529
|
{if(this.JSChartContainer&&this.JSChartContainer.OnKeyDown)this.JSChartContainer.OnKeyDown(e);}function OnKeyUp(e)//键盘事件
|
|
2528
2530
|
{if(this.JSChartContainer&&this.JSChartContainer.OnKeyUp)this.JSChartContainer.OnKeyUp(e);}function OnWheel(e)//上下滚动事件
|
|
2529
2531
|
{if(this.JSChartContainer&&this.JSChartContainer.OnWheel)this.JSChartContainer.OnWheel(e);}function ToFixed(number,precision){var b=1;if(isNaN(number))return number;if(number<0)b=-1;var multiplier=Math.pow(10,precision);var value=Math.round(Math.abs(number)*multiplier)/multiplier*b;if(/^(\d+(?:\.\d+)?)(e)([\-]?\d+)$/.test(value))var s=value.toFixed2(precision);else var s=value.toString();var rs=s.indexOf('.');if(rs<0&&precision>0){rs=s.length;s+='.';}while(s.length<=rs+precision){s+='0';}return s;}function IsRectOverlap(rt,rt2){if(Math.max(rt.Left,rt2.Left)<Math.min(rt.Right,rt2.Right)&&Math.max(rt.Top,rt2.Top)<Math.min(rt.Bottom,rt2.Bottom))return true;return false;}//获取文字高度和宽度
|
|
@@ -3316,8 +3318,8 @@ this.UpdateFrameMaxMin=function()//调整坐标最大 最小值
|
|
|
3316
3318
|
{this.Frame.XYSplit=true;return;}if(this.Frame.YSpecificMaxMin)//固定坐标
|
|
3317
3319
|
{value.Max=this.Frame.YSpecificMaxMin.Max;value.Min=this.Frame.YSpecificMaxMin.Min;}else{for(var i=0;i<this.ChartPaint.length;++i){var paint=this.ChartPaint[i];if(paint.IsShow==false)continue;//隐藏的图形不计算
|
|
3318
3320
|
var range=paint.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;if(IFrameSplitOperator.IsNumber(range.Max)){if(value.Max==null||value.Max<range.Max)value.Max=range.Max;}if(IFrameSplitOperator.IsNumber(range.Min)){if(value.Min==null||value.Min>range.Min)value.Min=range.Min;}}}if(!IFrameSplitOperator.IsNumber(this.Frame.YMaxMin.Max)||this.Frame.YMaxMin.Max!=value.Max){this.Frame.YMaxMin.Max=value.Max;this.Frame.XYSplit=true;}if(!IFrameSplitOperator.IsNumber(this.Frame.YMaxMin.Min)||this.Frame.YMaxMin.Min!=value.Min){this.Frame.YMaxMin.Min=value.Min;this.Frame.XYSplit=true;}if(this.Frame.XYSplit){var max=10,min=0;if(value.Max!=null)max=value.Max;if(value.Min!=null)min=value.Min;this.Frame.HorizontalMax=max;this.Frame.HorizontalMin=min;}else{this.Frame.XYSplit=true;}};this.UpdateTemporaryAttribute=function(mainFrame,aryAttribute)//更新临时属性
|
|
3319
|
-
{if(!IFrameSplitOperator.IsNonEmptyArray(aryAttribute))return;for(var i=0;i<aryAttribute.length;++i){var item=aryAttribute[i];if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.BOTTOMSPACE){var backup=mainFrame.ChartBorder.BottomSpace;mainFrame.ChartBorder.BottomSpace=item.Value;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TOPSPACE){var backup=mainFrame.ChartBorder.TopSpace;mainFrame.ChartBorder.TopSpace=item.Value;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWLEFTTEXT){var backup=mainFrame.YSplitOperator.IsShowLeftText;mainFrame.YSplitOperator.IsShowLeftText=item.Value;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWRIGHTTEXT){var backup=mainFrame.YSplitOperator.IsShowRightText;mainFrame.YSplitOperator.IsShowRightText=item.Value;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}}};this.RestoreTemporaryAttribute=function(mainFrame)//还原临时属性
|
|
3320
|
-
{if(!IFrameSplitOperator.IsNonEmptyArray(this.AryTemporaryAttribute))return;for(var i=0;i<this.AryTemporaryAttribute.length;++i){var item=this.AryTemporaryAttribute[i];if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.BOTTOMSPACE){mainFrame.ChartBorder.BottomSpace=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TOPSPACE){mainFrame.ChartBorder.TopSpace=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWLEFTTEXT){mainFrame.YSplitOperator.IsShowLeftText=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWRIGHTTEXT){mainFrame.YSplitOperator.IsShowRightText=item.BackupValue;}}this.AryTemporaryAttribute=[];};}//行情框架
|
|
3321
|
+
{if(!IFrameSplitOperator.IsNonEmptyArray(aryAttribute))return;for(var i=0;i<aryAttribute.length;++i){var item=aryAttribute[i];if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.BOTTOMSPACE){var backup=mainFrame.ChartBorder.BottomSpace;mainFrame.ChartBorder.BottomSpace=item.Value;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TOPSPACE){var backup=mainFrame.ChartBorder.TopSpace;mainFrame.ChartBorder.TopSpace=item.Value;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWLEFTTEXT){var backup=mainFrame.YSplitOperator.IsShowLeftText;mainFrame.YSplitOperator.IsShowLeftText=item.Value;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWRIGHTTEXT){var backup=mainFrame.YSplitOperator.IsShowRightText;mainFrame.YSplitOperator.IsShowRightText=item.Value;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED){var backup=mainFrame.HorizontalReserved;mainFrame.HorizontalReserved=item.Value;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT){var backup=mainFrame.ChartBorder.TitleHeight;mainFrame.ChartBorder.TitleHeight=item.Value;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}}};this.RestoreTemporaryAttribute=function(mainFrame)//还原临时属性
|
|
3322
|
+
{if(!IFrameSplitOperator.IsNonEmptyArray(this.AryTemporaryAttribute))return;for(var i=0;i<this.AryTemporaryAttribute.length;++i){var item=this.AryTemporaryAttribute[i];if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.BOTTOMSPACE){mainFrame.ChartBorder.BottomSpace=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TOPSPACE){mainFrame.ChartBorder.TopSpace=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWLEFTTEXT){mainFrame.YSplitOperator.IsShowLeftText=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.SHOWRIGHTTEXT){mainFrame.YSplitOperator.IsShowRightText=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED){mainFrame.HorizontalReserved=item.BackupValue;}else if(item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT){mainFrame.ChartBorder.TitleHeight=item.BackupValue;this.AryTemporaryAttribute.push({Name:item.Name,Value:item.Value,BackupValue:backup});}}this.AryTemporaryAttribute=[];};}//行情框架
|
|
3321
3323
|
function HQTradeFrame(){this.SubFrame=new Array();//SubFrameItem 数组
|
|
3322
3324
|
this.SizeChange=true;//大小是否改变
|
|
3323
3325
|
this.ChartBorder;this.Canvas;//画布
|
|
@@ -6508,6 +6510,7 @@ this.ShowLastDataFormat=0;//0=默认 1=更新时间替换时间
|
|
|
6508
6510
|
this.MultiDayBeforeOpenData;//多日分时图 盘前数据
|
|
6509
6511
|
this.MultiDayAfterCloseData;//多日分时图 收盘数据
|
|
6510
6512
|
this.TimeFormat;//显示时间格式 "HH:MM:SS", "hh:MM", "HH:MM:SS.fff"
|
|
6513
|
+
this.AryOverlayTitleName=[];//["MTitle-Close", "MTitle-Increase"];
|
|
6511
6514
|
this.CallAuctionShowTitle=new _set2.default(["MTitle-AC-Price","MTitle-AC-Vol","MTitle-AC-NotMatchVol","MTitle-AC-Increase","MTitle-AC-AvPrice"]);this.GetCurrentKLineData=function()//获取当天鼠标位置所在的K线数据
|
|
6512
6515
|
{if(this.LastShowData)return this.LastShowData;if(this.CursorIndex==null||!this.Data)return null;if(this.Data.length<=0)return null;var index=Math.abs(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.GetCurrentAuctionData=function()//获取当前鼠标所在位置的盘前盘后数据
|
|
6513
6516
|
{var isHScreen=this.Frame.IsHScreen===true;//空数据 返回坐标信息
|
|
@@ -6524,7 +6527,9 @@ if(isLastOne&&this.ShowLastDataFormat==1){if(this.Data&&this.Data.UpdateTime&&IF
|
|
|
6524
6527
|
{var strDate=null,strTime=null,text=null;if(this.IsShowDate)strDate=IFrameSplitOperator.FormatDateString(item.Date,"YYYY-MM-DD");if(this.IsShowTime)strTime=IFrameSplitOperator.FormatTimeString(item.Time,this.TimeFormat);if(strDate&&strTime)text=strDate+' '+strTime;else if(strDate)text=strDate;else if(strTime)text=strTime;if(text)aryText.push({Text:text,Color:this.DateTimeColor});}else{var text=IFrameSplitOperator.FormatDateTimeString(item.DateTime,this.IsShowDate,this.IsShowTime);aryText.push({Text:text,Color:this.DateTimeColor});}}}var close=item.Close;var increase=item.Increase;var vol=item.Vol;var amount=item.Amount;var yClose=item.YClose;if(!IFrameSplitOperator.IsNumber(yClose))yClose=this.YClose;if(isFutures&&IFrameSplitOperator.IsNumber(item.YClearing))yClose=item.YClearing;//期货使用昨结算
|
|
6525
6528
|
if(IFrameSplitOperator.IsNumber(close)){var color=this.GetColor(close,yClose);var text=g_JSChartLocalization.GetText('MTitle-Close',this.LanguageID)+close.toFixed(defaultfloatPrecision);aryText.push({Text:text,Color:color});}if(IFrameSplitOperator.IsNumber(increase)){var color=this.GetColor(increase,0);var text=g_JSChartLocalization.GetText('MTitle-Increase',this.LanguageID)+increase.toFixed(2)+'%';aryText.push({Text:text,Color:color});}var isShowAvPrice=true;var upperSymbol=this.Symbol.toUpperCase();if(MARKET_SUFFIX_NAME.IsET(upperSymbol)&&!MARKET_SUFFIX_NAME.IsETShowAvPrice(upperSymbol))isShowAvPrice=false;else if(MARKET_SUFFIX_NAME.IsShowAvPrice&&!MARKET_SUFFIX_NAME.IsShowAvPrice(upperSymbol))isShowAvPrice=false;if(IFrameSplitOperator.IsNumber(item.AvPrice)&&isShowAvPrice&&this.IsShowAveragePrice){var color=this.GetColor(item.AvPrice,yClose);var text=g_JSChartLocalization.GetText('MTitle-AvPrice',this.LanguageID)+item.AvPrice.toFixed(defaultfloatPrecision);aryText.push({Text:text,Color:color});}if(IFrameSplitOperator.IsNumber(vol)){var text=g_JSChartLocalization.GetText('MTitle-Vol',this.LanguageID)+IFrameSplitOperator.FromatIntegerString(vol/unit,2,this.LanguageID);aryText.push({Text:text,Color:this.VolColor});}if(IFrameSplitOperator.IsNumber(amount)){var text=g_JSChartLocalization.GetText('MTitle-Amount',this.LanguageID)+IFrameSplitOperator.FormatValueString(amount,2,this.LanguageID);aryText.push({Text:text,Color:this.AmountColor});}if(IFrameSplitOperator.IsNumber(item.Position)){var text=g_JSChartLocalization.GetText('MTitle-Position',this.LanguageID)+IFrameSplitOperator.FromatIntegerString(item.Position,2,this.LanguageID);aryText.push({Text:text,Color:this.VolColor});}if(isLastOne&&this.ShowLastDataFormat==0)//显示数据最后的更新时间
|
|
6526
6529
|
{if(this.Data&&this.Data.UpdateTime&&IFrameSplitOperator.IsNumber(this.Data.UpdateTime.Date)&&IFrameSplitOperator.IsNumber(this.Data.UpdateTime.Time)){var text=g_JSChartLocalization.GetText('MTitle-UpdateTime',this.LanguageID)+IFrameSplitOperator.FormatTimeString(this.Data.UpdateTime.Time,"HH:MM:SS");aryText.push({Text:text,Color:this.DateTimeColor});}}//叠加股票的名字
|
|
6527
|
-
if(IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint)){for(var i=0;i<this.OverlayChartPaint.length;++i){var
|
|
6530
|
+
if(IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint)){for(var i=0;i<this.OverlayChartPaint.length;++i){var overlayItem=this.OverlayChartPaint[i];if(!overlayItem.Symbol||!overlayItem.Title)continue;var clrText=overlayItem.Color;var text=''+overlayItem.Title;var arySubText=[{Text:"[",Color:clrText}];arySubText.push({Text:text,Color:clrText});//分钟数据
|
|
6531
|
+
if(IFrameSplitOperator.IsNonEmptyArray(this.AryOverlayTitleName)){var minItem=this.GetMinuteItemByDateTime(overlayItem.Data,{Date:item.Date,Time:item.Time});if(minItem){var dec=GetfloatPrecision(overlayItem.Symbol);//价格小数位数
|
|
6532
|
+
for(var j=0;j<this.AryOverlayTitleName.length;++j){var titleName=this.AryOverlayTitleName[j];if(titleName=="MTitle-Close"){if(IFrameSplitOperator.IsNumber(minItem.Close)&&IFrameSplitOperator.IsNumber(minItem.YClose))var color=this.GetColor(minItem.Close,minItem.YClose);var text=g_JSChartLocalization.GetText(titleName,this.LanguageID)+minItem.Close.toFixed(dec);arySubText.push({Text:text,Color:color});}else if(titleName="MTitle-Increase"){if(IFrameSplitOperator.IsNumber(minItem.Increase)){var color=this.GetColor(minItem.Increase,0);var text=g_JSChartLocalization.GetText(titleName,this.LanguageID)+minItem.Increase.toFixed(2)+'%';arySubText.push({Text:text,Color:color});}}}}}arySubText.push({Text:"]",Color:clrText});aryText.push.apply(aryText,arySubText);}}return{AryText:aryText};};this.GetMinuteItemByDateTime=function(data,dateTime){if(!dateTime||!data||!IFrameSplitOperator.IsNonEmptyArray(data.Data))return null;for(var i=0;i<data.Data.length;++i){var item=data.Data[i];if(item.Date===dateTime.Date&&item.Time===dateTime.Time){return item;}}return null;};this.DrawItem=function(item,isLastOne)//isLastOne 是否是最后一个数据
|
|
6528
6533
|
{if(!item)return;var pixelRatio=GetDevicePixelRatio();var isHScreen=this.Frame.IsHScreen===true;var border=this.Frame.GetBorder();var left=this.GetLeft(isHScreen);var right=this.GetRight(isHScreen);var bottom=this.GetBottom(isHScreen);if(isHScreen){if(this.Frame.ChartBorder.Right<5*pixelRatio)return;var xText=bottom;var yText=left;this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);left=bottom=0;//旋转以后 位置调整0
|
|
6529
6534
|
}else{if(this.Frame.ChartBorder.Top<5*pixelRatio)return;}this.Canvas.font=this.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="bottom";var position={Left:left,MaxRight:right,Bottom:bottom,IsHScreen:isHScreen};var titleData=this.GetFormatTitle({Data:item,IsLastOne:isLastOne});if(titleData&&IFrameSplitOperator.IsNonEmptyArray(titleData.AryText)){for(var i=0;i<titleData.AryText.length;++i){var item=titleData.AryText[i];if(!this.DrawText(item.Text,item.Color,position))break;}}};//盘前 盘后数据格式化
|
|
6530
6535
|
this.FormatCallAuctionTitle=function(data){var aryText=[];//{ Color: Text: }
|
|
@@ -8521,9 +8526,11 @@ this.ChartPaint[0].TradeData=null;//交易系统数据取消
|
|
|
8521
8526
|
var title=this.TitlePaint[1];if(title){title.TradeIndex=null;title.ColorIndex=null;}this.UpdataDataoffset();//更新数据偏移
|
|
8522
8527
|
this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
8523
8528
|
this.Draw();};this.SetFrameToolbar=function(windowIndex,window){if(!window||!this.Frame.SubFrame[windowIndex]||!this.Frame.SubFrame[windowIndex].Frame)return;var frame=this.Frame.SubFrame[windowIndex].Frame;var bChanged=false;if(IFrameSplitOperator.IsBool(window.Modify)){frame.ModifyIndex=window.Modify;bChanged=true;}if(IFrameSplitOperator.IsBool(window.Change)){frame.ChangeIndex=window.Change;bChanged=true;}if(IFrameSplitOperator.IsBool(window.Close)){frame.CloseIndex=window.Close;bChanged=true;}if(IFrameSplitOperator.IsBool(window.Overlay)){frame.OverlayIndex=window.Overlay;bChanged=true;}//工具栏变 先刷新工具栏
|
|
8524
|
-
if(bChanged){frame.SizeChange=true;frame.DrawToolbar();}}
|
|
8529
|
+
if(bChanged){frame.SizeChange=true;frame.DrawToolbar();}};//TODO:准备废弃
|
|
8530
|
+
this.SetFrameAttribute=function(windowIndex,attr){if(!this.Frame.SubFrame[windowIndex]||!this.Frame.SubFrame[windowIndex].Frame)return;if(!attr)return;var frame=this.Frame.SubFrame[windowIndex].Frame;if(!IFrameSplitOperator.IsUndefined(attr.HorizontalReserved))frame.HorizontalReserved=attr.HorizontalReserved;//Y轴上下预留
|
|
8525
8531
|
if(IFrameSplitOperator.IsNumber(attr.TitleHeight))frame.ChartBorder.TitleHeight=attr.TitleHeight;//指标标题高度
|
|
8526
|
-
}
|
|
8532
|
+
};//TODO:准备废弃
|
|
8533
|
+
this.ResetFrameAttribute=function(windowIndex){if(!this.Frame.SubFrame[windowIndex]||!this.Frame.SubFrame[windowIndex].Frame)return;var frame=this.Frame.SubFrame[windowIndex].Frame;frame.HorizontalReserved=null;};//切换成 脚本指标
|
|
8527
8534
|
this.ChangeScriptIndex=function(windowIndex,indexData,option){this.DeleteIndexPaint(windowIndex,true);this.RestoreIndexTemporaryAttribute(windowIndex);//恢复临时属性
|
|
8528
8535
|
this.WindowIndex[windowIndex]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
|
|
8529
8536
|
this.ResetFrameAttribute(windowIndex);this.Frame.ClearYCoordinateMaxMin(windowIndex);if(option){if(option.Window){this.SetFrameToolbar(windowIndex,option.Window);this.SetFrameAttribute(windowIndex,option.Window);//窗口属性
|
|
@@ -12089,7 +12096,7 @@ this.HORLINE=function(condition,data,type,extend){var drawData={Data:[],LineType
|
|
|
12089
12096
|
//{ Color:背景色, Border:边框颜色, Margin=[上,下,左, 右] }
|
|
12090
12097
|
this.BACKGROUND=function(color,borderColor,left,right,top,bottom){var bg={Margin:[0,1,1,1]};if(color)bg.Color=color;if(borderColor)bg.Border=borderColor;if(IFrameSplitOperator.IsNumber(left))bg.Margin[2]=left;if(IFrameSplitOperator.IsNumber(right))bg.Margin[3]=right;if(IFrameSplitOperator.IsNumber(top))bg.Margin[0]=top;if(IFrameSplitOperator.IsNumber(bottom))bg.Margin[1]=bottom;return bg;};//该函数和DRAWTEXT, DRAWICON连用
|
|
12091
12098
|
//{ color:线段颜色, lineWidth:宽度 lineType:线段样式0=直线 1=虚线}
|
|
12092
|
-
this.CKLINE=function(color,lineWidth,lineType,lineDotted){var drawData={Color:color,LineWidth:1,LineType:0,LineDot:[3,3]};if(IFrameSplitOperator.IsPlusNumber(lineWidth))drawData.LineWidth=lineWidth;if(IFrameSplitOperator.IsPlusNumber(lineType))drawData.LineType=lineType;if(lineDotted){var ary=lineDotted.split(',');var dotted=[];for(var i in ary){var item=ary[i];if(!item)continue;var value=parseInt(ary[i]);if(value<=0)continue;dotted.push(value);}if(dotted.length>0)drawData.LineDotted=dotted;}drawData.Data=[];for(var i=0;i<this.SymbolData.Data.Data.length;++i){var item=this.SymbolData.Data.Data[i];drawData.Data[i]={High:item.High,Low:item.Low};}return drawData;};//多头建仓(买入开仓).
|
|
12099
|
+
this.CKLINE=function(color,lineWidth,lineType,lineDotted){var drawData={Color:color,LineWidth:1,LineType:0,LineDot:[3,3]};if(IFrameSplitOperator.IsPlusNumber(lineWidth))drawData.LineWidth=lineWidth;if(IFrameSplitOperator.IsPlusNumber(lineType))drawData.LineType=lineType;if(lineDotted){var ary=lineDotted.split(',');var dotted=[];for(var i in ary){var item=ary[i];if(!item)continue;var value=parseInt(ary[i]);if(value<=0)continue;dotted.push(value);}if(dotted.length>0)drawData.LineDotted=dotted;}drawData.Data=[];for(var i=0;i<this.SymbolData.Data.Data.length;++i){var item=this.SymbolData.Data.Data[i];drawData.Data[i]={High:item.High,Low:item.Low,Close:item.Close};}return drawData;};//多头建仓(买入开仓).
|
|
12093
12100
|
//参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
|
|
12094
12101
|
//例如: BUY(CROSS(A,B),LOW),当A上穿B时,在LOW处画标记,同时突出提示或直接下单,如果LOW改为DRAWNULL,就不画标记.(分时图上不支持)
|
|
12095
12102
|
this.BUY=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(0,255,0)",Type:"SVG",Icon:'\uE660'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='BUY';return result;};this.BUYSHORT=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(0,255,0)",Type:"SVG",Icon:'\uE660'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='BUYSHORT';return result;};//多头平仓(卖出平仓).
|
|
@@ -12970,7 +12977,7 @@ else hqDataType=HQ_DATA_TYPE.MINUTE_ID;//分钟数据
|
|
|
12970
12977
|
{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,this.Condition.Message);return;}function _Temp_ExecuteScript(){++self.RunCount;var code=self.Script;var run=JSComplier.Execute(code,option,hqChart.ScriptErrorCallback);}if(this.IsAuthorization===true&&this.RunCount===0)//权限认证 执行一次
|
|
12971
12978
|
{this.RequestAuthorization(hqChart,function(){_Temp_ExecuteScript();});}else{_Temp_ExecuteScript();}};//是否符合限制条件
|
|
12972
12979
|
this.IsMeetCondition=function(param,option){JSConsole.Complier.Log('[ScriptIndex::IsMeetCondition] ',this.Condition);if(this.Condition.Period)//周期是否满足
|
|
12973
|
-
{if(!this.IsMeetPeriodCondition(param,option))return false;if(!this.IsMeetIncludeCondition(param,option))return false;}return true;};this.RequestAuthorization=function(hqChart,callback){var _this60=this;var reqData={IndexName:this.Name,IndexID:this.ID,IsOverlayIndex:this.IsOverlayIndex===true};var obj={Name:'ScriptIndex::RequestAuthorization',//类名::
|
|
12980
|
+
{if(!this.IsMeetPeriodCondition(param,option))return false;if(!this.IsMeetIncludeCondition(param,option))return false;}return true;};this.RequestAuthorization=function(hqChart,callback){var _this60=this;var reqData={IndexName:this.Name,IndexID:this.ID,IsOverlayIndex:this.IsOverlayIndex===true,Symbol:hqChart.Symbol};var obj={Name:'ScriptIndex::RequestAuthorization',//类名::
|
|
12974
12981
|
Explain:'指标权限验证',Request:{Data:reqData},Self:this,HQChart:hqChart,PreventDefault:false};if(hqChart.NetworkFilter){hqChart.NetworkFilter(obj,function(data){_this60.OnRecvAuthorization(data);callback();});}else{JSConsole.JSComplier.Warn("[ScriptIndex::RequestData] NetworkFilter error.");}};this.OnRecvAuthorization=function(recv){if(recv&&recv.Lock)this.SetLock(recv.Lock);};//周期是否满足条件
|
|
12975
12982
|
this.IsMeetPeriodCondition=function(param,option){if(!this.Condition.Period)return true;for(var i in this.Condition.Period){var item=this.Condition.Period[i];switch(item){case CONDITION_PERIOD.MINUTE_ID:if(option.HQDataType==HQ_DATA_TYPE.MINUTE_ID)return true;break;case CONDITION_PERIOD.MULTIDAY_MINUTE_ID:if(option.HQDataType==HQ_DATA_TYPE.MULTIDAY_MINUTE_ID)return true;break;case CONDITION_PERIOD.KLINE_DAY_ID:case CONDITION_PERIOD.KLINE_WEEK_ID:case CONDITION_PERIOD.KLINE_MONTH_ID:case CONDITION_PERIOD.KLINE_YEAR_ID:case CONDITION_PERIOD.KLINE_TWOWEEK_ID:case CONDITION_PERIOD.KLINE_QUARTER_ID:case CONDITION_PERIOD.KLINE_MINUTE_ID:case CONDITION_PERIOD.KLINE_5_MINUTE_ID:case CONDITION_PERIOD.KLINE_15_MINUTE_ID:case CONDITION_PERIOD.KLINE_30_MINUTE_ID:case CONDITION_PERIOD.KLINE_60_MINUTE_ID:if(param.HQChart.Period==item)return true;break;}}return false;};this.IsMeetIncludeCondition=function(param,option){if(!this.Condition.Include||this.Condition.Include.length<=0)return true;var symbol=param.HQChart.Symbol;if(symbol)symbol=symbol.toUpperCase();for(var i in this.Condition.Include){var item=this.Condition.Include[i];if(symbol==item)return true;}return false;};//显示指标不符合条件
|
|
12976
12983
|
this.ShowConditionError=function(param,msg){var hqChart=param.HQChart;var windowIndex=param.WindowIndex;hqChart.DeleteIndexPaint(windowIndex);if(windowIndex==0)hqChart.ShowKLine(true);var message='指标不支持当前品种或周期';if(msg)message=msg;var line=new ChartLine();line.Canvas=hqChart.Canvas;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;line.NotSupportMessage=message;hqChart.ChartPaint.push(line);hqChart.UpdataDataoffset();//更新数据偏移
|
|
@@ -13224,7 +13231,9 @@ var hqDataType=HQ_DATA_TYPE.KLINE_ID;//默认K线
|
|
|
13224
13231
|
var dateRange=null;if(hqChart.ClassName==='MinuteChartContainer'||hqChart.ClassName==='MinuteChartHScreenContainer'){if(hqChart.DayCount>1)hqDataType=HQ_DATA_TYPE.MULTIDAY_MINUTE_ID;//多日分钟
|
|
13225
13232
|
else hqDataType=HQ_DATA_TYPE.MINUTE_ID;//分钟数据
|
|
13226
13233
|
dateRange=hisData.GetDateRange();}else if(hqChart.ClassName==='HistoryMinuteChartContainer'){hqDataType=HQ_DATA_TYPE.HISTORY_MINUTE_ID;//历史分钟
|
|
13227
|
-
}else{dateRange=hisData.GetDateRange();}var args=[];if(this.Arguments){for(var i in this.Arguments){var item=this.Arguments[i];args.push({name:item.Name,value:item.Value});}}var requestCount;if(hqChart.GetRequestDataCount)requestCount=hqChart.GetRequestDataCount();var self=this;var postData={indexname:this.ID,symbol:hqChart.Symbol,script:this.Script,args:args,period:hqChart.Period,right:hqChart.Right,hqdatatype:hqDataType,IsAuthorization:this.IsAuthorization
|
|
13234
|
+
}else{dateRange=hisData.GetDateRange();}var args=[];if(this.Arguments){for(var i in this.Arguments){var item=this.Arguments[i];args.push({name:item.Name,value:item.Value});}}var requestCount;if(hqChart.GetRequestDataCount)requestCount=hqChart.GetRequestDataCount();var self=this;var postData={indexname:this.ID,symbol:hqChart.Symbol,script:this.Script,args:args,period:hqChart.Period,right:hqChart.Right,hqdatatype:hqDataType,IsAuthorization:this.IsAuthorization,//是否需要鉴权
|
|
13235
|
+
IsFirst:this.RunCount===0,//指标是否首次请求数据
|
|
13236
|
+
WindowID:windowIndex,IsOverlayIndex:this.IsOverlayIndex===true};if(dateRange)postData.DateRange=dateRange;if(requestCount){postData.maxdatacount=requestCount.MaxRequestDataCount;postData.maxminutedaycount=requestCount.MaxRequestMinuteDayCount;}if(hqDataType==HQ_DATA_TYPE.MULTIDAY_MINUTE_ID||hqDataType==HQ_DATA_TYPE.MINUTE_ID)postData.daycount=hqChart.DayCount;this.HQDataType=hqDataType;++this.RunCount;if(hqChart.NetworkFilter){var obj={Name:'APIScriptIndex::ExecuteScript',//类名::
|
|
13228
13237
|
Explain:'指标计算',Request:{Url:self.ApiUrl,Type:'POST',Data:postData},Self:this,HQChart:hqChart,PreventDefault:false};hqChart.NetworkFilter(obj,function(data){if(self.Version==2)self.RecvAPIData2(data,hqChart,windowIndex,hisData);else self.RecvAPIData(data,hqChart,windowIndex,hisData);});if(obj.PreventDefault==true)return;//已被上层替换,不调用默认的网络请求
|
|
13229
13238
|
}JSNetwork.HttpRequest({url:self.ApiUrl,data:postData,type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvAPIData(recvData,hqChart,windowIndex,hisData);},error:function error(request){self.RecvError(request);}});};//py 后台指标计算格式
|
|
13230
13239
|
this.RecvAPIData2=function(data,hqChart,windowIndex,hisData){JSConsole.Complier.Log('[APIScriptIndex::RecvAPIData2] recv data ',this.Name,data);//if (data.code!=0) return;
|
|
@@ -16321,7 +16330,7 @@ if(this.MouseOnItem){if(this.MouseOnItem.Data==item)color=this.TextConfig.MouseO
|
|
|
16321
16330
|
*/this.Canvas.restore();this.ResizeDataCount(endIndex);};this.ResizeDataCount=function(startIndex){if(!IFrameSplitOperator.IsNumber(startIndex))return;if(startIndex<=0)return;if(this.LimitCount<=0)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.AryText))return;if(this.Data.AryText.length<=this.LimitCount)return;var delCount=this.Data.AryText.length-this.LimitCount;for(var i=0;i<delCount&&i<startIndex;++i){this.Data.AryText.shift();}};this.GetTooltipData=function(x,y,tooltip){var rtClient=this.GetClientRect();if(x>=rtClient.Left&&x<=rtClient.Right){for(var i=0;i<this.AryRect.length;++i){var item=this.AryRect[i];if(Path2DHelper.PtInRect(x,y,item.Rect)){tooltip.Data=item;tooltip.ChartPaint=this;tooltip.Type=1;return true;}}}return false;};this.ScrollStep=function(defaultStep){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.AryText))return false;if(!this.FirstItem)return false;var moveStep=this.MoveStep;if(IFrameSplitOperator.IsNumber(defaultStep))moveStep=defaultStep;var rtClient=this.GetClientRect();var left=rtClient.Left;var right=rtClient.Right;var width=this.FirstItem.Move.Width;var xOffset=this.FirstItem.Move.XOffset+moveStep;if(right-xOffset+width<left){var startIndex=this.GetDataIndex(this.FirstItem);nextIndex=startIndex-1;if(nextIndex<0){var index=this.Data.AryText.length-1;this.FirstItem=this.Data.AryText[index];this.FirstItem.Move={XOffset:0};}else{this.FirstItem=this.Data.AryText[nextIndex];this.FirstItem.Move={XOffset:xOffset-width};}}else{this.FirstItem.Move.XOffset=xOffset;}return true;};}/********************************************************************************
|
|
16322
16331
|
* 版本信息输出
|
|
16323
16332
|
*
|
|
16324
|
-
*/var HQCHART_VERSION="1.1.
|
|
16333
|
+
*/var HQCHART_VERSION="1.1.15725";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
16325
16334
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
16326
16335
|
// BaseIndex:BaseIndex,
|
|
16327
16336
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -59509,6 +59509,7 @@ HQData.APIIndex_PARTLINE=function(data, callback)
|
|
|
59509
59509
|
var hqchart=data.HQChart;
|
|
59510
59510
|
var kData=hqchart.GetKData();
|
|
59511
59511
|
var bAuthorization=data.Request.Data.IsAuthorization;
|
|
59512
|
+
var bFirst=data.Request.Data.IsFirst;
|
|
59512
59513
|
|
|
59513
59514
|
var lineData=
|
|
59514
59515
|
{
|
|
@@ -59544,7 +59545,7 @@ HQData.APIIndex_PARTLINE=function(data, callback)
|
|
|
59544
59545
|
outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[lineData] }
|
|
59545
59546
|
};
|
|
59546
59547
|
|
|
59547
|
-
if (bAuthorization)
|
|
59548
|
+
if (bAuthorization && bFirst) //首次请求鉴权
|
|
59548
59549
|
{
|
|
59549
59550
|
apiData.Lock={ IsLocked:true };
|
|
59550
59551
|
}
|
|
@@ -60927,6 +60928,7 @@ HQData.Request_IndexAuthorization=function(data, callback)
|
|
|
60927
60928
|
Lock:
|
|
60928
60929
|
{
|
|
60929
60930
|
IsLocked:true,
|
|
60931
|
+
IsFullFrame:true,
|
|
60930
60932
|
//Text:""
|
|
60931
60933
|
//BG: ['rgba(245,245,220, 0.5)', "rgb(100,255,100)"], //锁区域背景色
|
|
60932
60934
|
/*
|
|
@@ -11748,7 +11748,7 @@ function JSDraw(errorHandler,symbolData)
|
|
|
11748
11748
|
for(var i=0;i<this.SymbolData.Data.Data.length;++i)
|
|
11749
11749
|
{
|
|
11750
11750
|
var item=this.SymbolData.Data.Data[i];
|
|
11751
|
-
drawData.Data[i]={ High:item.High, Low:item.Low };
|
|
11751
|
+
drawData.Data[i]={ High:item.High, Low:item.Low, Close:item.Close };
|
|
11752
11752
|
}
|
|
11753
11753
|
|
|
11754
11754
|
return drawData;
|
|
@@ -21085,7 +21085,7 @@ function ScriptIndex(name,script,args,option)
|
|
|
21085
21085
|
|
|
21086
21086
|
this.RequestAuthorization=function(hqChart, callback)
|
|
21087
21087
|
{
|
|
21088
|
-
var reqData={ IndexName:this.Name, IndexID:this.ID, IsOverlayIndex:this.IsOverlayIndex===true };
|
|
21088
|
+
var reqData={ IndexName:this.Name, IndexID:this.ID, IsOverlayIndex:this.IsOverlayIndex===true, Symbol:hqChart.Symbol };
|
|
21089
21089
|
|
|
21090
21090
|
var obj=
|
|
21091
21091
|
{
|
|
@@ -25480,7 +25480,9 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
25480
25480
|
{
|
|
25481
25481
|
indexname:this.ID, symbol: hqChart.Symbol, script:this.Script, args:args,
|
|
25482
25482
|
period:hqChart.Period, right:hqChart.Right, hqdatatype: hqDataType,
|
|
25483
|
-
IsAuthorization:this.IsAuthorization,
|
|
25483
|
+
IsAuthorization:this.IsAuthorization, //是否需要鉴权
|
|
25484
|
+
IsFirst:this.RunCount===0, //指标是否首次请求数据
|
|
25485
|
+
WindowID:windowIndex,
|
|
25484
25486
|
IsOverlayIndex:this.IsOverlayIndex===true,
|
|
25485
25487
|
};
|
|
25486
25488
|
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -1166,6 +1166,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1166
1166
|
if (IFrameSplitOperator.IsNumber(subItem.Margin.Bottom)) chartTitle.ShowPositionConfig.Margin.Bottom=subItem.Margin.Bottom;
|
|
1167
1167
|
}
|
|
1168
1168
|
}
|
|
1169
|
+
|
|
1170
|
+
if (IFrameSplitOperator.IsNonEmptyArray(item.OverlayTitleName)) chartTitle.AryOverlayTitleName=item.OverlayTitleName.slice();
|
|
1169
1171
|
}
|
|
1170
1172
|
|
|
1171
1173
|
if (IFrameSplitOperator.IsBool(option.CorssCursorTouchEnd)) chart.CorssCursorTouchEnd = option.CorssCursorTouchEnd;
|
|
@@ -3081,6 +3083,8 @@ var JSCHART_TEMPORARY_ATTRIBUTE=
|
|
|
3081
3083
|
SHOWLEFTTEXT:"MainFrame-ShowLeftText",
|
|
3082
3084
|
SHOWRIGHTTEXT:"MainFrame-ShowRightText",
|
|
3083
3085
|
SPLITTYPE:"MainFrame-SplitType", //0=自动分割 1=数据的最大最小值分割 2=堆积图(0-100)
|
|
3086
|
+
HRESERVED:"MainFrame-HorizontalReserved", //上下预留空间 { Top:, Bottom: }
|
|
3087
|
+
TITLEHEIGHT:"MainFrame-TitleHeight", //标题栏高度
|
|
3084
3088
|
}
|
|
3085
3089
|
}
|
|
3086
3090
|
|
|
@@ -4421,7 +4425,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
4421
4425
|
if (this.TryClickLock)
|
|
4422
4426
|
{
|
|
4423
4427
|
//JSConsole.Chart.Log('[uielement.onmousedown] left, top ',e.clientX, e.clientY, this.getBoundingClientRect().left,this.getBoundingClientRect().top);
|
|
4424
|
-
if (this.TryClickLock(x,y))
|
|
4428
|
+
if (this.TryClickLock(x,y))
|
|
4429
|
+
{
|
|
4430
|
+
this.IsOnTouch=false;
|
|
4431
|
+
return;
|
|
4432
|
+
}
|
|
4425
4433
|
}
|
|
4426
4434
|
|
|
4427
4435
|
this.HideSelectRect();
|
|
@@ -10536,7 +10544,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10536
10544
|
if (IFrameSplitOperator.IsBool(windowItem.IsShowOverlayIndexName)) frame.IsShowOverlayIndexName=windowItem.IsShowOverlayIndexName;
|
|
10537
10545
|
if (IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace)) frame.IndexParamSpace=windowItem.IndexParamSpace;
|
|
10538
10546
|
if (IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace)) frame.IndexTitleSpace=windowItem.IndexTitleSpace;
|
|
10539
|
-
|
|
10547
|
+
|
|
10540
10548
|
|
|
10541
10549
|
if (windowItem.OverlayIndexType)
|
|
10542
10550
|
{
|
|
@@ -10596,8 +10604,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10596
10604
|
if (subItem && IFrameSplitOperator.IsNumber(subItem.Right)) frame.ToolbarConfig.Margin.Right=subItem.Right;
|
|
10597
10605
|
}
|
|
10598
10606
|
|
|
10607
|
+
if (!IFrameSplitOperator.IsUndefined(frameItem.HorizontalReserved)) frame.HorizontalReserved=frameItem.HorizontalReserved; //Y轴上下预留
|
|
10608
|
+
|
|
10599
10609
|
//分时图属性
|
|
10600
|
-
if (IFrameSplitOperator.IsBool(frameItem.CloseBeforeButton))
|
|
10610
|
+
if (IFrameSplitOperator.IsBool(frameItem.CloseBeforeButton)) frame.IsShowCloseButton=frameItem.CloseBeforeButton;
|
|
10601
10611
|
if (frame.YSplitOperator.RightTextConfig) //主图右侧坐标设置
|
|
10602
10612
|
{
|
|
10603
10613
|
if (IFrameSplitOperator.IsNumber(frameItem.RightTextFormat)) //废弃(兼容版本)
|
|
@@ -11458,8 +11468,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11458
11468
|
var item=this.WindowIndex[i];
|
|
11459
11469
|
if (!item) continue;
|
|
11460
11470
|
|
|
11461
|
-
var info={ Name:item.Name, WindowIndex:i, IsOverlay:false };
|
|
11471
|
+
var info={ Name:item.Name, WindowIndex:i, IsOverlay:false, IsAuthorization:item.IsAuthorization };
|
|
11462
11472
|
if (item.ID) info.ID=item.ID;
|
|
11473
|
+
if (item.ClassName=="APIScriptIndex") info.API={ Url:item.ApiUrl, Name:item.Name, ID:item.ID };
|
|
11463
11474
|
if (IFrameSplitOperator.IsNonEmptyArray(item.Arguments)) //参数
|
|
11464
11475
|
{
|
|
11465
11476
|
info.Args=[];
|
|
@@ -11468,6 +11479,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11468
11479
|
var argItem=item.Arguments[j];
|
|
11469
11480
|
info.Args.push( { Name:argItem.Name, Value:argItem.Value} );
|
|
11470
11481
|
}
|
|
11482
|
+
|
|
11483
|
+
if (info.API) info.API.Args=info.Args;
|
|
11471
11484
|
}
|
|
11472
11485
|
|
|
11473
11486
|
aryIndex.push(info);
|
|
@@ -11491,8 +11504,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11491
11504
|
var overlayItem=item.OverlayIndex[j];
|
|
11492
11505
|
if (!overlayItem.Script) continue;
|
|
11493
11506
|
var indexData=overlayItem.Script;
|
|
11494
|
-
var info={ Name:indexData.Name, ID:indexData.ID, WindowIndex:i, IsOverlay:true, Identify:overlayItem.Identify };
|
|
11495
|
-
|
|
11507
|
+
var info={ Name:indexData.Name, ID:indexData.ID, WindowIndex:i, IsOverlay:true, Identify:overlayItem.Identify, IsAuthorization:indexData.IsAuthorization };
|
|
11508
|
+
if (indexData.ClassName=="APIScriptIndex") info.API={ Url:indexData.ApiUrl, Name:indexData.Name, ID:indexData.ID };
|
|
11496
11509
|
if (IFrameSplitOperator.IsNonEmptyArray(indexData.Arguments)) //参数
|
|
11497
11510
|
{
|
|
11498
11511
|
info.Args=[];
|
|
@@ -11501,6 +11514,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11501
11514
|
var argItem=indexData.Arguments[k];
|
|
11502
11515
|
info.Args.push( { Name:argItem.Name, Value:argItem.Value} );
|
|
11503
11516
|
}
|
|
11517
|
+
|
|
11518
|
+
if (info.API) info.API.Args=info.Args;
|
|
11504
11519
|
}
|
|
11505
11520
|
|
|
11506
11521
|
aryIndex.push(info);
|
|
@@ -12920,6 +12935,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12920
12935
|
mainFrame.YSplitOperator.SplitType=item.Value;
|
|
12921
12936
|
aryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
12922
12937
|
}
|
|
12938
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
12939
|
+
{
|
|
12940
|
+
var backup=mainFrame.HorizontalReserved;
|
|
12941
|
+
mainFrame.HorizontalReserved=item.Value;
|
|
12942
|
+
aryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
12943
|
+
}
|
|
12944
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
12945
|
+
{
|
|
12946
|
+
var backup=mainFrame.ChartBorder.TitleHeight;
|
|
12947
|
+
mainFrame.ChartBorder.TitleHeight=item.Value;
|
|
12948
|
+
aryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
12949
|
+
}
|
|
12923
12950
|
|
|
12924
12951
|
}
|
|
12925
12952
|
}
|
|
@@ -12955,6 +12982,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12955
12982
|
{
|
|
12956
12983
|
mainFrame.YSplitOperator.SplitType=item.BackupValue;
|
|
12957
12984
|
}
|
|
12985
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
12986
|
+
{
|
|
12987
|
+
mainFrame.HorizontalReserved=item.BackupValue;
|
|
12988
|
+
}
|
|
12989
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
12990
|
+
{
|
|
12991
|
+
mainFrame.ChartBorder.TitleHeight=item.BackupValue;
|
|
12992
|
+
}
|
|
12958
12993
|
}
|
|
12959
12994
|
|
|
12960
12995
|
}
|
|
@@ -21928,6 +21963,19 @@ function OverlayIndexItem()
|
|
|
21928
21963
|
mainFrame.YSplitOperator.IsShowRightText=item.Value;
|
|
21929
21964
|
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
21930
21965
|
}
|
|
21966
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
21967
|
+
{
|
|
21968
|
+
var backup=mainFrame.HorizontalReserved;
|
|
21969
|
+
mainFrame.HorizontalReserved=item.Value;
|
|
21970
|
+
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
21971
|
+
}
|
|
21972
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
21973
|
+
{
|
|
21974
|
+
var backup=mainFrame.ChartBorder.TitleHeight;
|
|
21975
|
+
mainFrame.ChartBorder.TitleHeight=item.Value;
|
|
21976
|
+
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
21977
|
+
}
|
|
21978
|
+
|
|
21931
21979
|
}
|
|
21932
21980
|
}
|
|
21933
21981
|
|
|
@@ -21954,6 +22002,15 @@ function OverlayIndexItem()
|
|
|
21954
22002
|
{
|
|
21955
22003
|
mainFrame.YSplitOperator.IsShowRightText=item.BackupValue;
|
|
21956
22004
|
}
|
|
22005
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
22006
|
+
{
|
|
22007
|
+
mainFrame.HorizontalReserved=item.BackupValue;
|
|
22008
|
+
}
|
|
22009
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
22010
|
+
{
|
|
22011
|
+
mainFrame.ChartBorder.TitleHeight=item.BackupValue;
|
|
22012
|
+
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
22013
|
+
}
|
|
21957
22014
|
}
|
|
21958
22015
|
|
|
21959
22016
|
this.AryTemporaryAttribute=[];
|
|
@@ -64358,6 +64415,7 @@ function DynamicMinuteTitlePainting()
|
|
|
64358
64415
|
this.MultiDayAfterCloseData; //多日分时图 收盘数据
|
|
64359
64416
|
|
|
64360
64417
|
this.TimeFormat; //显示时间格式 "HH:MM:SS", "hh:MM", "HH:MM:SS.fff"
|
|
64418
|
+
this.AryOverlayTitleName=[]; //["MTitle-Close", "MTitle-Increase"];
|
|
64361
64419
|
|
|
64362
64420
|
|
|
64363
64421
|
this.CallAuctionShowTitle=new Set(
|
|
@@ -64651,20 +64709,71 @@ function DynamicMinuteTitlePainting()
|
|
|
64651
64709
|
{
|
|
64652
64710
|
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
64653
64711
|
{
|
|
64654
|
-
var
|
|
64655
|
-
if (!
|
|
64712
|
+
var overlayItem=this.OverlayChartPaint[i];
|
|
64713
|
+
if (!overlayItem.Symbol || !overlayItem.Title) continue;
|
|
64656
64714
|
|
|
64657
|
-
var clrText=
|
|
64658
|
-
var text
|
|
64715
|
+
var clrText=overlayItem.Color;
|
|
64716
|
+
var text=`${overlayItem.Title}`;
|
|
64717
|
+
|
|
64718
|
+
var arySubText=[{Text:"[", Color:clrText}];
|
|
64719
|
+
|
|
64720
|
+
arySubText.push({Text:text, Color:clrText});
|
|
64721
|
+
|
|
64722
|
+
//分钟数据
|
|
64723
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.AryOverlayTitleName))
|
|
64724
|
+
{
|
|
64725
|
+
var minItem=this.GetMinuteItemByDateTime(overlayItem.Data, { Date:item.Date, Time:item.Time});
|
|
64726
|
+
if (minItem)
|
|
64727
|
+
{
|
|
64728
|
+
var dec=GetfloatPrecision(overlayItem.Symbol); //价格小数位数
|
|
64729
|
+
for(var j=0;j<this.AryOverlayTitleName.length;++j)
|
|
64730
|
+
{
|
|
64731
|
+
var titleName=this.AryOverlayTitleName[j];
|
|
64732
|
+
if (titleName=="MTitle-Close")
|
|
64733
|
+
{
|
|
64734
|
+
if (IFrameSplitOperator.IsNumber(minItem.Close) && IFrameSplitOperator.IsNumber(minItem.YClose))
|
|
64735
|
+
var color=this.GetColor(minItem.Close,minItem.YClose);
|
|
64736
|
+
var text=g_JSChartLocalization.GetText(titleName,this.LanguageID)+minItem.Close.toFixed(dec);
|
|
64737
|
+
arySubText.push({Text:text, Color:color});
|
|
64738
|
+
}
|
|
64739
|
+
else if (titleName="MTitle-Increase")
|
|
64740
|
+
{
|
|
64741
|
+
if (IFrameSplitOperator.IsNumber(minItem.Increase))
|
|
64742
|
+
{
|
|
64743
|
+
var color=this.GetColor(minItem.Increase,0);
|
|
64744
|
+
var text=g_JSChartLocalization.GetText(titleName,this.LanguageID)+minItem.Increase.toFixed(2)+'%';
|
|
64745
|
+
arySubText.push({Text:text, Color:color});
|
|
64746
|
+
}
|
|
64747
|
+
}
|
|
64748
|
+
}
|
|
64749
|
+
}
|
|
64750
|
+
}
|
|
64751
|
+
|
|
64752
|
+
arySubText.push({Text:"]", Color:clrText});
|
|
64659
64753
|
|
|
64660
|
-
aryText.push(
|
|
64754
|
+
aryText.push(...arySubText);
|
|
64661
64755
|
}
|
|
64662
64756
|
}
|
|
64663
64757
|
|
|
64664
|
-
|
|
64665
64758
|
return { AryText:aryText };
|
|
64666
64759
|
}
|
|
64667
64760
|
|
|
64761
|
+
this.GetMinuteItemByDateTime=function(data, dateTime)
|
|
64762
|
+
{
|
|
64763
|
+
if (!dateTime || !data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) return null;
|
|
64764
|
+
|
|
64765
|
+
for(var i=0;i<data.Data.length;++i)
|
|
64766
|
+
{
|
|
64767
|
+
var item=data.Data[i];
|
|
64768
|
+
if (item.Date===dateTime.Date && item.Time===dateTime.Time)
|
|
64769
|
+
{
|
|
64770
|
+
return item;
|
|
64771
|
+
}
|
|
64772
|
+
}
|
|
64773
|
+
|
|
64774
|
+
return null;
|
|
64775
|
+
}
|
|
64776
|
+
|
|
64668
64777
|
this.DrawItem=function(item, isLastOne) //isLastOne 是否是最后一个数据
|
|
64669
64778
|
{
|
|
64670
64779
|
if (!item) return;
|
|
@@ -88822,6 +88931,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
88822
88931
|
}
|
|
88823
88932
|
}
|
|
88824
88933
|
|
|
88934
|
+
//TODO:准备废弃
|
|
88825
88935
|
this.SetFrameAttribute=function(windowIndex, attr)
|
|
88826
88936
|
{
|
|
88827
88937
|
if (!this.Frame.SubFrame[windowIndex] || !this.Frame.SubFrame[windowIndex].Frame) return;
|
|
@@ -88833,6 +88943,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
88833
88943
|
if (IFrameSplitOperator.IsNumber(attr.TitleHeight)) frame.ChartBorder.TitleHeight=attr.TitleHeight; //指标标题高度
|
|
88834
88944
|
}
|
|
88835
88945
|
|
|
88946
|
+
//TODO:准备废弃
|
|
88836
88947
|
this.ResetFrameAttribute=function(windowIndex)
|
|
88837
88948
|
{
|
|
88838
88949
|
if (!this.Frame.SubFrame[windowIndex] || !this.Frame.SubFrame[windowIndex].Frame) return;
|
|
@@ -3995,6 +3995,7 @@ HQData.APIIndex_PARTLINE=function(data, callback)
|
|
|
3995
3995
|
var hqchart=data.HQChart;
|
|
3996
3996
|
var kData=hqchart.GetKData();
|
|
3997
3997
|
var bAuthorization=data.Request.Data.IsAuthorization;
|
|
3998
|
+
var bFirst=data.Request.Data.IsFirst;
|
|
3998
3999
|
|
|
3999
4000
|
var lineData=
|
|
4000
4001
|
{
|
|
@@ -4030,7 +4031,7 @@ HQData.APIIndex_PARTLINE=function(data, callback)
|
|
|
4030
4031
|
outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[lineData] }
|
|
4031
4032
|
};
|
|
4032
4033
|
|
|
4033
|
-
if (bAuthorization)
|
|
4034
|
+
if (bAuthorization && bFirst) //首次请求鉴权
|
|
4034
4035
|
{
|
|
4035
4036
|
apiData.Lock={ IsLocked:true };
|
|
4036
4037
|
}
|
|
@@ -5413,6 +5414,7 @@ HQData.Request_IndexAuthorization=function(data, callback)
|
|
|
5413
5414
|
Lock:
|
|
5414
5415
|
{
|
|
5415
5416
|
IsLocked:true,
|
|
5417
|
+
IsFullFrame:true,
|
|
5416
5418
|
//Text:""
|
|
5417
5419
|
//BG: ['rgba(245,245,220, 0.5)', "rgb(100,255,100)"], //锁区域背景色
|
|
5418
5420
|
/*
|
|
@@ -5264,6 +5264,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5264
5264
|
if (IFrameSplitOperator.IsNumber(subItem.Margin.Bottom)) chartTitle.ShowPositionConfig.Margin.Bottom=subItem.Margin.Bottom;
|
|
5265
5265
|
}
|
|
5266
5266
|
}
|
|
5267
|
+
|
|
5268
|
+
if (IFrameSplitOperator.IsNonEmptyArray(item.OverlayTitleName)) chartTitle.AryOverlayTitleName=item.OverlayTitleName.slice();
|
|
5267
5269
|
}
|
|
5268
5270
|
|
|
5269
5271
|
if (IFrameSplitOperator.IsBool(option.CorssCursorTouchEnd)) chart.CorssCursorTouchEnd = option.CorssCursorTouchEnd;
|
|
@@ -7179,6 +7181,8 @@ var JSCHART_TEMPORARY_ATTRIBUTE=
|
|
|
7179
7181
|
SHOWLEFTTEXT:"MainFrame-ShowLeftText",
|
|
7180
7182
|
SHOWRIGHTTEXT:"MainFrame-ShowRightText",
|
|
7181
7183
|
SPLITTYPE:"MainFrame-SplitType", //0=自动分割 1=数据的最大最小值分割 2=堆积图(0-100)
|
|
7184
|
+
HRESERVED:"MainFrame-HorizontalReserved", //上下预留空间 { Top:, Bottom: }
|
|
7185
|
+
TITLEHEIGHT:"MainFrame-TitleHeight", //标题栏高度
|
|
7182
7186
|
}
|
|
7183
7187
|
}
|
|
7184
7188
|
|
|
@@ -8519,7 +8523,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8519
8523
|
if (this.TryClickLock)
|
|
8520
8524
|
{
|
|
8521
8525
|
//JSConsole.Chart.Log('[uielement.onmousedown] left, top ',e.clientX, e.clientY, this.getBoundingClientRect().left,this.getBoundingClientRect().top);
|
|
8522
|
-
if (this.TryClickLock(x,y))
|
|
8526
|
+
if (this.TryClickLock(x,y))
|
|
8527
|
+
{
|
|
8528
|
+
this.IsOnTouch=false;
|
|
8529
|
+
return;
|
|
8530
|
+
}
|
|
8523
8531
|
}
|
|
8524
8532
|
|
|
8525
8533
|
this.HideSelectRect();
|
|
@@ -14634,7 +14642,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14634
14642
|
if (IFrameSplitOperator.IsBool(windowItem.IsShowOverlayIndexName)) frame.IsShowOverlayIndexName=windowItem.IsShowOverlayIndexName;
|
|
14635
14643
|
if (IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace)) frame.IndexParamSpace=windowItem.IndexParamSpace;
|
|
14636
14644
|
if (IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace)) frame.IndexTitleSpace=windowItem.IndexTitleSpace;
|
|
14637
|
-
|
|
14645
|
+
|
|
14638
14646
|
|
|
14639
14647
|
if (windowItem.OverlayIndexType)
|
|
14640
14648
|
{
|
|
@@ -14694,8 +14702,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14694
14702
|
if (subItem && IFrameSplitOperator.IsNumber(subItem.Right)) frame.ToolbarConfig.Margin.Right=subItem.Right;
|
|
14695
14703
|
}
|
|
14696
14704
|
|
|
14705
|
+
if (!IFrameSplitOperator.IsUndefined(frameItem.HorizontalReserved)) frame.HorizontalReserved=frameItem.HorizontalReserved; //Y轴上下预留
|
|
14706
|
+
|
|
14697
14707
|
//分时图属性
|
|
14698
|
-
if (IFrameSplitOperator.IsBool(frameItem.CloseBeforeButton))
|
|
14708
|
+
if (IFrameSplitOperator.IsBool(frameItem.CloseBeforeButton)) frame.IsShowCloseButton=frameItem.CloseBeforeButton;
|
|
14699
14709
|
if (frame.YSplitOperator.RightTextConfig) //主图右侧坐标设置
|
|
14700
14710
|
{
|
|
14701
14711
|
if (IFrameSplitOperator.IsNumber(frameItem.RightTextFormat)) //废弃(兼容版本)
|
|
@@ -15556,8 +15566,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
15556
15566
|
var item=this.WindowIndex[i];
|
|
15557
15567
|
if (!item) continue;
|
|
15558
15568
|
|
|
15559
|
-
var info={ Name:item.Name, WindowIndex:i, IsOverlay:false };
|
|
15569
|
+
var info={ Name:item.Name, WindowIndex:i, IsOverlay:false, IsAuthorization:item.IsAuthorization };
|
|
15560
15570
|
if (item.ID) info.ID=item.ID;
|
|
15571
|
+
if (item.ClassName=="APIScriptIndex") info.API={ Url:item.ApiUrl, Name:item.Name, ID:item.ID };
|
|
15561
15572
|
if (IFrameSplitOperator.IsNonEmptyArray(item.Arguments)) //参数
|
|
15562
15573
|
{
|
|
15563
15574
|
info.Args=[];
|
|
@@ -15566,6 +15577,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
15566
15577
|
var argItem=item.Arguments[j];
|
|
15567
15578
|
info.Args.push( { Name:argItem.Name, Value:argItem.Value} );
|
|
15568
15579
|
}
|
|
15580
|
+
|
|
15581
|
+
if (info.API) info.API.Args=info.Args;
|
|
15569
15582
|
}
|
|
15570
15583
|
|
|
15571
15584
|
aryIndex.push(info);
|
|
@@ -15589,8 +15602,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
15589
15602
|
var overlayItem=item.OverlayIndex[j];
|
|
15590
15603
|
if (!overlayItem.Script) continue;
|
|
15591
15604
|
var indexData=overlayItem.Script;
|
|
15592
|
-
var info={ Name:indexData.Name, ID:indexData.ID, WindowIndex:i, IsOverlay:true, Identify:overlayItem.Identify };
|
|
15593
|
-
|
|
15605
|
+
var info={ Name:indexData.Name, ID:indexData.ID, WindowIndex:i, IsOverlay:true, Identify:overlayItem.Identify, IsAuthorization:indexData.IsAuthorization };
|
|
15606
|
+
if (indexData.ClassName=="APIScriptIndex") info.API={ Url:indexData.ApiUrl, Name:indexData.Name, ID:indexData.ID };
|
|
15594
15607
|
if (IFrameSplitOperator.IsNonEmptyArray(indexData.Arguments)) //参数
|
|
15595
15608
|
{
|
|
15596
15609
|
info.Args=[];
|
|
@@ -15599,6 +15612,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
15599
15612
|
var argItem=indexData.Arguments[k];
|
|
15600
15613
|
info.Args.push( { Name:argItem.Name, Value:argItem.Value} );
|
|
15601
15614
|
}
|
|
15615
|
+
|
|
15616
|
+
if (info.API) info.API.Args=info.Args;
|
|
15602
15617
|
}
|
|
15603
15618
|
|
|
15604
15619
|
aryIndex.push(info);
|
|
@@ -17018,6 +17033,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
17018
17033
|
mainFrame.YSplitOperator.SplitType=item.Value;
|
|
17019
17034
|
aryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
17020
17035
|
}
|
|
17036
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
17037
|
+
{
|
|
17038
|
+
var backup=mainFrame.HorizontalReserved;
|
|
17039
|
+
mainFrame.HorizontalReserved=item.Value;
|
|
17040
|
+
aryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
17041
|
+
}
|
|
17042
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
17043
|
+
{
|
|
17044
|
+
var backup=mainFrame.ChartBorder.TitleHeight;
|
|
17045
|
+
mainFrame.ChartBorder.TitleHeight=item.Value;
|
|
17046
|
+
aryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
17047
|
+
}
|
|
17021
17048
|
|
|
17022
17049
|
}
|
|
17023
17050
|
}
|
|
@@ -17053,6 +17080,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
17053
17080
|
{
|
|
17054
17081
|
mainFrame.YSplitOperator.SplitType=item.BackupValue;
|
|
17055
17082
|
}
|
|
17083
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
17084
|
+
{
|
|
17085
|
+
mainFrame.HorizontalReserved=item.BackupValue;
|
|
17086
|
+
}
|
|
17087
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
17088
|
+
{
|
|
17089
|
+
mainFrame.ChartBorder.TitleHeight=item.BackupValue;
|
|
17090
|
+
}
|
|
17056
17091
|
}
|
|
17057
17092
|
|
|
17058
17093
|
}
|
|
@@ -26026,6 +26061,19 @@ function OverlayIndexItem()
|
|
|
26026
26061
|
mainFrame.YSplitOperator.IsShowRightText=item.Value;
|
|
26027
26062
|
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
26028
26063
|
}
|
|
26064
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
26065
|
+
{
|
|
26066
|
+
var backup=mainFrame.HorizontalReserved;
|
|
26067
|
+
mainFrame.HorizontalReserved=item.Value;
|
|
26068
|
+
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
26069
|
+
}
|
|
26070
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
26071
|
+
{
|
|
26072
|
+
var backup=mainFrame.ChartBorder.TitleHeight;
|
|
26073
|
+
mainFrame.ChartBorder.TitleHeight=item.Value;
|
|
26074
|
+
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
26075
|
+
}
|
|
26076
|
+
|
|
26029
26077
|
}
|
|
26030
26078
|
}
|
|
26031
26079
|
|
|
@@ -26052,6 +26100,15 @@ function OverlayIndexItem()
|
|
|
26052
26100
|
{
|
|
26053
26101
|
mainFrame.YSplitOperator.IsShowRightText=item.BackupValue;
|
|
26054
26102
|
}
|
|
26103
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
26104
|
+
{
|
|
26105
|
+
mainFrame.HorizontalReserved=item.BackupValue;
|
|
26106
|
+
}
|
|
26107
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
26108
|
+
{
|
|
26109
|
+
mainFrame.ChartBorder.TitleHeight=item.BackupValue;
|
|
26110
|
+
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
26111
|
+
}
|
|
26055
26112
|
}
|
|
26056
26113
|
|
|
26057
26114
|
this.AryTemporaryAttribute=[];
|
|
@@ -68456,6 +68513,7 @@ function DynamicMinuteTitlePainting()
|
|
|
68456
68513
|
this.MultiDayAfterCloseData; //多日分时图 收盘数据
|
|
68457
68514
|
|
|
68458
68515
|
this.TimeFormat; //显示时间格式 "HH:MM:SS", "hh:MM", "HH:MM:SS.fff"
|
|
68516
|
+
this.AryOverlayTitleName=[]; //["MTitle-Close", "MTitle-Increase"];
|
|
68459
68517
|
|
|
68460
68518
|
|
|
68461
68519
|
this.CallAuctionShowTitle=new Set(
|
|
@@ -68749,20 +68807,71 @@ function DynamicMinuteTitlePainting()
|
|
|
68749
68807
|
{
|
|
68750
68808
|
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
68751
68809
|
{
|
|
68752
|
-
var
|
|
68753
|
-
if (!
|
|
68810
|
+
var overlayItem=this.OverlayChartPaint[i];
|
|
68811
|
+
if (!overlayItem.Symbol || !overlayItem.Title) continue;
|
|
68754
68812
|
|
|
68755
|
-
var clrText=
|
|
68756
|
-
var text
|
|
68813
|
+
var clrText=overlayItem.Color;
|
|
68814
|
+
var text=`${overlayItem.Title}`;
|
|
68815
|
+
|
|
68816
|
+
var arySubText=[{Text:"[", Color:clrText}];
|
|
68817
|
+
|
|
68818
|
+
arySubText.push({Text:text, Color:clrText});
|
|
68819
|
+
|
|
68820
|
+
//分钟数据
|
|
68821
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.AryOverlayTitleName))
|
|
68822
|
+
{
|
|
68823
|
+
var minItem=this.GetMinuteItemByDateTime(overlayItem.Data, { Date:item.Date, Time:item.Time});
|
|
68824
|
+
if (minItem)
|
|
68825
|
+
{
|
|
68826
|
+
var dec=GetfloatPrecision(overlayItem.Symbol); //价格小数位数
|
|
68827
|
+
for(var j=0;j<this.AryOverlayTitleName.length;++j)
|
|
68828
|
+
{
|
|
68829
|
+
var titleName=this.AryOverlayTitleName[j];
|
|
68830
|
+
if (titleName=="MTitle-Close")
|
|
68831
|
+
{
|
|
68832
|
+
if (IFrameSplitOperator.IsNumber(minItem.Close) && IFrameSplitOperator.IsNumber(minItem.YClose))
|
|
68833
|
+
var color=this.GetColor(minItem.Close,minItem.YClose);
|
|
68834
|
+
var text=g_JSChartLocalization.GetText(titleName,this.LanguageID)+minItem.Close.toFixed(dec);
|
|
68835
|
+
arySubText.push({Text:text, Color:color});
|
|
68836
|
+
}
|
|
68837
|
+
else if (titleName="MTitle-Increase")
|
|
68838
|
+
{
|
|
68839
|
+
if (IFrameSplitOperator.IsNumber(minItem.Increase))
|
|
68840
|
+
{
|
|
68841
|
+
var color=this.GetColor(minItem.Increase,0);
|
|
68842
|
+
var text=g_JSChartLocalization.GetText(titleName,this.LanguageID)+minItem.Increase.toFixed(2)+'%';
|
|
68843
|
+
arySubText.push({Text:text, Color:color});
|
|
68844
|
+
}
|
|
68845
|
+
}
|
|
68846
|
+
}
|
|
68847
|
+
}
|
|
68848
|
+
}
|
|
68849
|
+
|
|
68850
|
+
arySubText.push({Text:"]", Color:clrText});
|
|
68757
68851
|
|
|
68758
|
-
aryText.push(
|
|
68852
|
+
aryText.push(...arySubText);
|
|
68759
68853
|
}
|
|
68760
68854
|
}
|
|
68761
68855
|
|
|
68762
|
-
|
|
68763
68856
|
return { AryText:aryText };
|
|
68764
68857
|
}
|
|
68765
68858
|
|
|
68859
|
+
this.GetMinuteItemByDateTime=function(data, dateTime)
|
|
68860
|
+
{
|
|
68861
|
+
if (!dateTime || !data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) return null;
|
|
68862
|
+
|
|
68863
|
+
for(var i=0;i<data.Data.length;++i)
|
|
68864
|
+
{
|
|
68865
|
+
var item=data.Data[i];
|
|
68866
|
+
if (item.Date===dateTime.Date && item.Time===dateTime.Time)
|
|
68867
|
+
{
|
|
68868
|
+
return item;
|
|
68869
|
+
}
|
|
68870
|
+
}
|
|
68871
|
+
|
|
68872
|
+
return null;
|
|
68873
|
+
}
|
|
68874
|
+
|
|
68766
68875
|
this.DrawItem=function(item, isLastOne) //isLastOne 是否是最后一个数据
|
|
68767
68876
|
{
|
|
68768
68877
|
if (!item) return;
|
|
@@ -92920,6 +93029,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
92920
93029
|
}
|
|
92921
93030
|
}
|
|
92922
93031
|
|
|
93032
|
+
//TODO:准备废弃
|
|
92923
93033
|
this.SetFrameAttribute=function(windowIndex, attr)
|
|
92924
93034
|
{
|
|
92925
93035
|
if (!this.Frame.SubFrame[windowIndex] || !this.Frame.SubFrame[windowIndex].Frame) return;
|
|
@@ -92931,6 +93041,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
92931
93041
|
if (IFrameSplitOperator.IsNumber(attr.TitleHeight)) frame.ChartBorder.TitleHeight=attr.TitleHeight; //指标标题高度
|
|
92932
93042
|
}
|
|
92933
93043
|
|
|
93044
|
+
//TODO:准备废弃
|
|
92934
93045
|
this.ResetFrameAttribute=function(windowIndex)
|
|
92935
93046
|
{
|
|
92936
93047
|
if (!this.Frame.SubFrame[windowIndex] || !this.Frame.SubFrame[windowIndex].Frame) return;
|
|
@@ -125372,7 +125483,7 @@ function JSDraw(errorHandler,symbolData)
|
|
|
125372
125483
|
for(var i=0;i<this.SymbolData.Data.Data.length;++i)
|
|
125373
125484
|
{
|
|
125374
125485
|
var item=this.SymbolData.Data.Data[i];
|
|
125375
|
-
drawData.Data[i]={ High:item.High, Low:item.Low };
|
|
125486
|
+
drawData.Data[i]={ High:item.High, Low:item.Low, Close:item.Close };
|
|
125376
125487
|
}
|
|
125377
125488
|
|
|
125378
125489
|
return drawData;
|
|
@@ -134709,7 +134820,7 @@ function ScriptIndex(name,script,args,option)
|
|
|
134709
134820
|
|
|
134710
134821
|
this.RequestAuthorization=function(hqChart, callback)
|
|
134711
134822
|
{
|
|
134712
|
-
var reqData={ IndexName:this.Name, IndexID:this.ID, IsOverlayIndex:this.IsOverlayIndex===true };
|
|
134823
|
+
var reqData={ IndexName:this.Name, IndexID:this.ID, IsOverlayIndex:this.IsOverlayIndex===true, Symbol:hqChart.Symbol };
|
|
134713
134824
|
|
|
134714
134825
|
var obj=
|
|
134715
134826
|
{
|
|
@@ -139104,7 +139215,9 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
139104
139215
|
{
|
|
139105
139216
|
indexname:this.ID, symbol: hqChart.Symbol, script:this.Script, args:args,
|
|
139106
139217
|
period:hqChart.Period, right:hqChart.Right, hqdatatype: hqDataType,
|
|
139107
|
-
IsAuthorization:this.IsAuthorization,
|
|
139218
|
+
IsAuthorization:this.IsAuthorization, //是否需要鉴权
|
|
139219
|
+
IsFirst:this.RunCount===0, //指标是否首次请求数据
|
|
139220
|
+
WindowID:windowIndex,
|
|
139108
139221
|
IsOverlayIndex:this.IsOverlayIndex===true,
|
|
139109
139222
|
};
|
|
139110
139223
|
|
|
@@ -159099,7 +159212,7 @@ function ScrollBarBGChart()
|
|
|
159099
159212
|
|
|
159100
159213
|
|
|
159101
159214
|
|
|
159102
|
-
var HQCHART_VERSION="1.1.
|
|
159215
|
+
var HQCHART_VERSION="1.1.15725";
|
|
159103
159216
|
|
|
159104
159217
|
function PrintHQChartVersion()
|
|
159105
159218
|
{
|
|
@@ -59527,6 +59527,7 @@ HQData.APIIndex_PARTLINE=function(data, callback)
|
|
|
59527
59527
|
var hqchart=data.HQChart;
|
|
59528
59528
|
var kData=hqchart.GetKData();
|
|
59529
59529
|
var bAuthorization=data.Request.Data.IsAuthorization;
|
|
59530
|
+
var bFirst=data.Request.Data.IsFirst;
|
|
59530
59531
|
|
|
59531
59532
|
var lineData=
|
|
59532
59533
|
{
|
|
@@ -59562,7 +59563,7 @@ HQData.APIIndex_PARTLINE=function(data, callback)
|
|
|
59562
59563
|
outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[lineData] }
|
|
59563
59564
|
};
|
|
59564
59565
|
|
|
59565
|
-
if (bAuthorization)
|
|
59566
|
+
if (bAuthorization && bFirst) //首次请求鉴权
|
|
59566
59567
|
{
|
|
59567
59568
|
apiData.Lock={ IsLocked:true };
|
|
59568
59569
|
}
|
|
@@ -60945,6 +60946,7 @@ HQData.Request_IndexAuthorization=function(data, callback)
|
|
|
60945
60946
|
Lock:
|
|
60946
60947
|
{
|
|
60947
60948
|
IsLocked:true,
|
|
60949
|
+
IsFullFrame:true,
|
|
60948
60950
|
//Text:""
|
|
60949
60951
|
//BG: ['rgba(245,245,220, 0.5)', "rgb(100,255,100)"], //锁区域背景色
|
|
60950
60952
|
/*
|
|
@@ -5308,6 +5308,8 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5308
5308
|
if (IFrameSplitOperator.IsNumber(subItem.Margin.Bottom)) chartTitle.ShowPositionConfig.Margin.Bottom=subItem.Margin.Bottom;
|
|
5309
5309
|
}
|
|
5310
5310
|
}
|
|
5311
|
+
|
|
5312
|
+
if (IFrameSplitOperator.IsNonEmptyArray(item.OverlayTitleName)) chartTitle.AryOverlayTitleName=item.OverlayTitleName.slice();
|
|
5311
5313
|
}
|
|
5312
5314
|
|
|
5313
5315
|
if (IFrameSplitOperator.IsBool(option.CorssCursorTouchEnd)) chart.CorssCursorTouchEnd = option.CorssCursorTouchEnd;
|
|
@@ -7223,6 +7225,8 @@ var JSCHART_TEMPORARY_ATTRIBUTE=
|
|
|
7223
7225
|
SHOWLEFTTEXT:"MainFrame-ShowLeftText",
|
|
7224
7226
|
SHOWRIGHTTEXT:"MainFrame-ShowRightText",
|
|
7225
7227
|
SPLITTYPE:"MainFrame-SplitType", //0=自动分割 1=数据的最大最小值分割 2=堆积图(0-100)
|
|
7228
|
+
HRESERVED:"MainFrame-HorizontalReserved", //上下预留空间 { Top:, Bottom: }
|
|
7229
|
+
TITLEHEIGHT:"MainFrame-TitleHeight", //标题栏高度
|
|
7226
7230
|
}
|
|
7227
7231
|
}
|
|
7228
7232
|
|
|
@@ -8563,7 +8567,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8563
8567
|
if (this.TryClickLock)
|
|
8564
8568
|
{
|
|
8565
8569
|
//JSConsole.Chart.Log('[uielement.onmousedown] left, top ',e.clientX, e.clientY, this.getBoundingClientRect().left,this.getBoundingClientRect().top);
|
|
8566
|
-
if (this.TryClickLock(x,y))
|
|
8570
|
+
if (this.TryClickLock(x,y))
|
|
8571
|
+
{
|
|
8572
|
+
this.IsOnTouch=false;
|
|
8573
|
+
return;
|
|
8574
|
+
}
|
|
8567
8575
|
}
|
|
8568
8576
|
|
|
8569
8577
|
this.HideSelectRect();
|
|
@@ -14678,7 +14686,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14678
14686
|
if (IFrameSplitOperator.IsBool(windowItem.IsShowOverlayIndexName)) frame.IsShowOverlayIndexName=windowItem.IsShowOverlayIndexName;
|
|
14679
14687
|
if (IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace)) frame.IndexParamSpace=windowItem.IndexParamSpace;
|
|
14680
14688
|
if (IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace)) frame.IndexTitleSpace=windowItem.IndexTitleSpace;
|
|
14681
|
-
|
|
14689
|
+
|
|
14682
14690
|
|
|
14683
14691
|
if (windowItem.OverlayIndexType)
|
|
14684
14692
|
{
|
|
@@ -14738,8 +14746,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14738
14746
|
if (subItem && IFrameSplitOperator.IsNumber(subItem.Right)) frame.ToolbarConfig.Margin.Right=subItem.Right;
|
|
14739
14747
|
}
|
|
14740
14748
|
|
|
14749
|
+
if (!IFrameSplitOperator.IsUndefined(frameItem.HorizontalReserved)) frame.HorizontalReserved=frameItem.HorizontalReserved; //Y轴上下预留
|
|
14750
|
+
|
|
14741
14751
|
//分时图属性
|
|
14742
|
-
if (IFrameSplitOperator.IsBool(frameItem.CloseBeforeButton))
|
|
14752
|
+
if (IFrameSplitOperator.IsBool(frameItem.CloseBeforeButton)) frame.IsShowCloseButton=frameItem.CloseBeforeButton;
|
|
14743
14753
|
if (frame.YSplitOperator.RightTextConfig) //主图右侧坐标设置
|
|
14744
14754
|
{
|
|
14745
14755
|
if (IFrameSplitOperator.IsNumber(frameItem.RightTextFormat)) //废弃(兼容版本)
|
|
@@ -15600,8 +15610,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
15600
15610
|
var item=this.WindowIndex[i];
|
|
15601
15611
|
if (!item) continue;
|
|
15602
15612
|
|
|
15603
|
-
var info={ Name:item.Name, WindowIndex:i, IsOverlay:false };
|
|
15613
|
+
var info={ Name:item.Name, WindowIndex:i, IsOverlay:false, IsAuthorization:item.IsAuthorization };
|
|
15604
15614
|
if (item.ID) info.ID=item.ID;
|
|
15615
|
+
if (item.ClassName=="APIScriptIndex") info.API={ Url:item.ApiUrl, Name:item.Name, ID:item.ID };
|
|
15605
15616
|
if (IFrameSplitOperator.IsNonEmptyArray(item.Arguments)) //参数
|
|
15606
15617
|
{
|
|
15607
15618
|
info.Args=[];
|
|
@@ -15610,6 +15621,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
15610
15621
|
var argItem=item.Arguments[j];
|
|
15611
15622
|
info.Args.push( { Name:argItem.Name, Value:argItem.Value} );
|
|
15612
15623
|
}
|
|
15624
|
+
|
|
15625
|
+
if (info.API) info.API.Args=info.Args;
|
|
15613
15626
|
}
|
|
15614
15627
|
|
|
15615
15628
|
aryIndex.push(info);
|
|
@@ -15633,8 +15646,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
15633
15646
|
var overlayItem=item.OverlayIndex[j];
|
|
15634
15647
|
if (!overlayItem.Script) continue;
|
|
15635
15648
|
var indexData=overlayItem.Script;
|
|
15636
|
-
var info={ Name:indexData.Name, ID:indexData.ID, WindowIndex:i, IsOverlay:true, Identify:overlayItem.Identify };
|
|
15637
|
-
|
|
15649
|
+
var info={ Name:indexData.Name, ID:indexData.ID, WindowIndex:i, IsOverlay:true, Identify:overlayItem.Identify, IsAuthorization:indexData.IsAuthorization };
|
|
15650
|
+
if (indexData.ClassName=="APIScriptIndex") info.API={ Url:indexData.ApiUrl, Name:indexData.Name, ID:indexData.ID };
|
|
15638
15651
|
if (IFrameSplitOperator.IsNonEmptyArray(indexData.Arguments)) //参数
|
|
15639
15652
|
{
|
|
15640
15653
|
info.Args=[];
|
|
@@ -15643,6 +15656,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
15643
15656
|
var argItem=indexData.Arguments[k];
|
|
15644
15657
|
info.Args.push( { Name:argItem.Name, Value:argItem.Value} );
|
|
15645
15658
|
}
|
|
15659
|
+
|
|
15660
|
+
if (info.API) info.API.Args=info.Args;
|
|
15646
15661
|
}
|
|
15647
15662
|
|
|
15648
15663
|
aryIndex.push(info);
|
|
@@ -17062,6 +17077,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
17062
17077
|
mainFrame.YSplitOperator.SplitType=item.Value;
|
|
17063
17078
|
aryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
17064
17079
|
}
|
|
17080
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
17081
|
+
{
|
|
17082
|
+
var backup=mainFrame.HorizontalReserved;
|
|
17083
|
+
mainFrame.HorizontalReserved=item.Value;
|
|
17084
|
+
aryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
17085
|
+
}
|
|
17086
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
17087
|
+
{
|
|
17088
|
+
var backup=mainFrame.ChartBorder.TitleHeight;
|
|
17089
|
+
mainFrame.ChartBorder.TitleHeight=item.Value;
|
|
17090
|
+
aryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
17091
|
+
}
|
|
17065
17092
|
|
|
17066
17093
|
}
|
|
17067
17094
|
}
|
|
@@ -17097,6 +17124,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
17097
17124
|
{
|
|
17098
17125
|
mainFrame.YSplitOperator.SplitType=item.BackupValue;
|
|
17099
17126
|
}
|
|
17127
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
17128
|
+
{
|
|
17129
|
+
mainFrame.HorizontalReserved=item.BackupValue;
|
|
17130
|
+
}
|
|
17131
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
17132
|
+
{
|
|
17133
|
+
mainFrame.ChartBorder.TitleHeight=item.BackupValue;
|
|
17134
|
+
}
|
|
17100
17135
|
}
|
|
17101
17136
|
|
|
17102
17137
|
}
|
|
@@ -26070,6 +26105,19 @@ function OverlayIndexItem()
|
|
|
26070
26105
|
mainFrame.YSplitOperator.IsShowRightText=item.Value;
|
|
26071
26106
|
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
26072
26107
|
}
|
|
26108
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
26109
|
+
{
|
|
26110
|
+
var backup=mainFrame.HorizontalReserved;
|
|
26111
|
+
mainFrame.HorizontalReserved=item.Value;
|
|
26112
|
+
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
26113
|
+
}
|
|
26114
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
26115
|
+
{
|
|
26116
|
+
var backup=mainFrame.ChartBorder.TitleHeight;
|
|
26117
|
+
mainFrame.ChartBorder.TitleHeight=item.Value;
|
|
26118
|
+
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
26119
|
+
}
|
|
26120
|
+
|
|
26073
26121
|
}
|
|
26074
26122
|
}
|
|
26075
26123
|
|
|
@@ -26096,6 +26144,15 @@ function OverlayIndexItem()
|
|
|
26096
26144
|
{
|
|
26097
26145
|
mainFrame.YSplitOperator.IsShowRightText=item.BackupValue;
|
|
26098
26146
|
}
|
|
26147
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.HRESERVED)
|
|
26148
|
+
{
|
|
26149
|
+
mainFrame.HorizontalReserved=item.BackupValue;
|
|
26150
|
+
}
|
|
26151
|
+
else if (item.Name==JSCHART_TEMPORARY_ATTRIBUTE.MAINFRAME.TITLEHEIGHT)
|
|
26152
|
+
{
|
|
26153
|
+
mainFrame.ChartBorder.TitleHeight=item.BackupValue;
|
|
26154
|
+
this.AryTemporaryAttribute.push({ Name:item.Name, Value:item.Value, BackupValue:backup });
|
|
26155
|
+
}
|
|
26099
26156
|
}
|
|
26100
26157
|
|
|
26101
26158
|
this.AryTemporaryAttribute=[];
|
|
@@ -68500,6 +68557,7 @@ function DynamicMinuteTitlePainting()
|
|
|
68500
68557
|
this.MultiDayAfterCloseData; //多日分时图 收盘数据
|
|
68501
68558
|
|
|
68502
68559
|
this.TimeFormat; //显示时间格式 "HH:MM:SS", "hh:MM", "HH:MM:SS.fff"
|
|
68560
|
+
this.AryOverlayTitleName=[]; //["MTitle-Close", "MTitle-Increase"];
|
|
68503
68561
|
|
|
68504
68562
|
|
|
68505
68563
|
this.CallAuctionShowTitle=new Set(
|
|
@@ -68793,20 +68851,71 @@ function DynamicMinuteTitlePainting()
|
|
|
68793
68851
|
{
|
|
68794
68852
|
for(var i=0; i<this.OverlayChartPaint.length; ++i)
|
|
68795
68853
|
{
|
|
68796
|
-
var
|
|
68797
|
-
if (!
|
|
68854
|
+
var overlayItem=this.OverlayChartPaint[i];
|
|
68855
|
+
if (!overlayItem.Symbol || !overlayItem.Title) continue;
|
|
68798
68856
|
|
|
68799
|
-
var clrText=
|
|
68800
|
-
var text
|
|
68857
|
+
var clrText=overlayItem.Color;
|
|
68858
|
+
var text=`${overlayItem.Title}`;
|
|
68859
|
+
|
|
68860
|
+
var arySubText=[{Text:"[", Color:clrText}];
|
|
68861
|
+
|
|
68862
|
+
arySubText.push({Text:text, Color:clrText});
|
|
68863
|
+
|
|
68864
|
+
//分钟数据
|
|
68865
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.AryOverlayTitleName))
|
|
68866
|
+
{
|
|
68867
|
+
var minItem=this.GetMinuteItemByDateTime(overlayItem.Data, { Date:item.Date, Time:item.Time});
|
|
68868
|
+
if (minItem)
|
|
68869
|
+
{
|
|
68870
|
+
var dec=GetfloatPrecision(overlayItem.Symbol); //价格小数位数
|
|
68871
|
+
for(var j=0;j<this.AryOverlayTitleName.length;++j)
|
|
68872
|
+
{
|
|
68873
|
+
var titleName=this.AryOverlayTitleName[j];
|
|
68874
|
+
if (titleName=="MTitle-Close")
|
|
68875
|
+
{
|
|
68876
|
+
if (IFrameSplitOperator.IsNumber(minItem.Close) && IFrameSplitOperator.IsNumber(minItem.YClose))
|
|
68877
|
+
var color=this.GetColor(minItem.Close,minItem.YClose);
|
|
68878
|
+
var text=g_JSChartLocalization.GetText(titleName,this.LanguageID)+minItem.Close.toFixed(dec);
|
|
68879
|
+
arySubText.push({Text:text, Color:color});
|
|
68880
|
+
}
|
|
68881
|
+
else if (titleName="MTitle-Increase")
|
|
68882
|
+
{
|
|
68883
|
+
if (IFrameSplitOperator.IsNumber(minItem.Increase))
|
|
68884
|
+
{
|
|
68885
|
+
var color=this.GetColor(minItem.Increase,0);
|
|
68886
|
+
var text=g_JSChartLocalization.GetText(titleName,this.LanguageID)+minItem.Increase.toFixed(2)+'%';
|
|
68887
|
+
arySubText.push({Text:text, Color:color});
|
|
68888
|
+
}
|
|
68889
|
+
}
|
|
68890
|
+
}
|
|
68891
|
+
}
|
|
68892
|
+
}
|
|
68893
|
+
|
|
68894
|
+
arySubText.push({Text:"]", Color:clrText});
|
|
68801
68895
|
|
|
68802
|
-
aryText.push(
|
|
68896
|
+
aryText.push(...arySubText);
|
|
68803
68897
|
}
|
|
68804
68898
|
}
|
|
68805
68899
|
|
|
68806
|
-
|
|
68807
68900
|
return { AryText:aryText };
|
|
68808
68901
|
}
|
|
68809
68902
|
|
|
68903
|
+
this.GetMinuteItemByDateTime=function(data, dateTime)
|
|
68904
|
+
{
|
|
68905
|
+
if (!dateTime || !data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) return null;
|
|
68906
|
+
|
|
68907
|
+
for(var i=0;i<data.Data.length;++i)
|
|
68908
|
+
{
|
|
68909
|
+
var item=data.Data[i];
|
|
68910
|
+
if (item.Date===dateTime.Date && item.Time===dateTime.Time)
|
|
68911
|
+
{
|
|
68912
|
+
return item;
|
|
68913
|
+
}
|
|
68914
|
+
}
|
|
68915
|
+
|
|
68916
|
+
return null;
|
|
68917
|
+
}
|
|
68918
|
+
|
|
68810
68919
|
this.DrawItem=function(item, isLastOne) //isLastOne 是否是最后一个数据
|
|
68811
68920
|
{
|
|
68812
68921
|
if (!item) return;
|
|
@@ -92964,6 +93073,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
92964
93073
|
}
|
|
92965
93074
|
}
|
|
92966
93075
|
|
|
93076
|
+
//TODO:准备废弃
|
|
92967
93077
|
this.SetFrameAttribute=function(windowIndex, attr)
|
|
92968
93078
|
{
|
|
92969
93079
|
if (!this.Frame.SubFrame[windowIndex] || !this.Frame.SubFrame[windowIndex].Frame) return;
|
|
@@ -92975,6 +93085,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
92975
93085
|
if (IFrameSplitOperator.IsNumber(attr.TitleHeight)) frame.ChartBorder.TitleHeight=attr.TitleHeight; //指标标题高度
|
|
92976
93086
|
}
|
|
92977
93087
|
|
|
93088
|
+
//TODO:准备废弃
|
|
92978
93089
|
this.ResetFrameAttribute=function(windowIndex)
|
|
92979
93090
|
{
|
|
92980
93091
|
if (!this.Frame.SubFrame[windowIndex] || !this.Frame.SubFrame[windowIndex].Frame) return;
|
|
@@ -125416,7 +125527,7 @@ function JSDraw(errorHandler,symbolData)
|
|
|
125416
125527
|
for(var i=0;i<this.SymbolData.Data.Data.length;++i)
|
|
125417
125528
|
{
|
|
125418
125529
|
var item=this.SymbolData.Data.Data[i];
|
|
125419
|
-
drawData.Data[i]={ High:item.High, Low:item.Low };
|
|
125530
|
+
drawData.Data[i]={ High:item.High, Low:item.Low, Close:item.Close };
|
|
125420
125531
|
}
|
|
125421
125532
|
|
|
125422
125533
|
return drawData;
|
|
@@ -134753,7 +134864,7 @@ function ScriptIndex(name,script,args,option)
|
|
|
134753
134864
|
|
|
134754
134865
|
this.RequestAuthorization=function(hqChart, callback)
|
|
134755
134866
|
{
|
|
134756
|
-
var reqData={ IndexName:this.Name, IndexID:this.ID, IsOverlayIndex:this.IsOverlayIndex===true };
|
|
134867
|
+
var reqData={ IndexName:this.Name, IndexID:this.ID, IsOverlayIndex:this.IsOverlayIndex===true, Symbol:hqChart.Symbol };
|
|
134757
134868
|
|
|
134758
134869
|
var obj=
|
|
134759
134870
|
{
|
|
@@ -139148,7 +139259,9 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
139148
139259
|
{
|
|
139149
139260
|
indexname:this.ID, symbol: hqChart.Symbol, script:this.Script, args:args,
|
|
139150
139261
|
period:hqChart.Period, right:hqChart.Right, hqdatatype: hqDataType,
|
|
139151
|
-
IsAuthorization:this.IsAuthorization,
|
|
139262
|
+
IsAuthorization:this.IsAuthorization, //是否需要鉴权
|
|
139263
|
+
IsFirst:this.RunCount===0, //指标是否首次请求数据
|
|
139264
|
+
WindowID:windowIndex,
|
|
139152
139265
|
IsOverlayIndex:this.IsOverlayIndex===true,
|
|
139153
139266
|
};
|
|
139154
139267
|
|
|
@@ -175461,7 +175574,7 @@ function ChartScrollText()
|
|
|
175461
175574
|
|
|
175462
175575
|
|
|
175463
175576
|
|
|
175464
|
-
var HQCHART_VERSION="1.1.
|
|
175577
|
+
var HQCHART_VERSION="1.1.15725";
|
|
175465
175578
|
|
|
175466
175579
|
function PrintHQChartVersion()
|
|
175467
175580
|
{
|