hqchart 1.1.15043 → 1.1.15051
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 +22 -18
- package/package.json +1 -1
- package/src/jscommon/umychart.DialogDrawTool.js +35 -1
- package/src/jscommon/umychart.js +34 -14
- package/src/jscommon/umychart.resource/font/drawtool/demo_index.html +26 -3
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.css +7 -3
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.js +1 -1
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.json +7 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.ttf +0 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.woff +0 -0
- package/src/jscommon/umychart.resource/font/drawtool/iconfont.woff2 +0 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +35 -15
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +70 -16
package/lib/umychart.vue.js
CHANGED
|
@@ -1243,7 +1243,9 @@ if(option.CorssCursorInfo){var item=option.CorssCursorInfo;if(!isNaN(option.Cors
|
|
|
1243
1243
|
if(IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime))chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;if(item.RightButton){if(IFrameSplitOperator.IsBool(item.RightButton.Enable))chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;}if(item.BottomButton){var subItem=item.BottomButton;if(IFrameSplitOperator.IsBool(subItem.Enable))chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;}if(IFrameSplitOperator.IsNumber(item.PriceFormatType))chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;if(IFrameSplitOperator.IsNumber(item.DataFormatType))chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;if(IFrameSplitOperator.IsNumber(item.HPenType))chart.ChartCorssCursor.HPenType=item.HPenType;if(IFrameSplitOperator.IsNumber(item.VPenType))chart.ChartCorssCursor.VPenType=item.VPenType;if(IFrameSplitOperator.IsBool(item.EnableKeyboard))chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;if(IFrameSplitOperator.IsBool(item.EnableDBClick))chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;if(IFrameSplitOperator.IsBool(item.IsShowCorssPoint))chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;if(IFrameSplitOperator.IsNumber(item.VLineType))chart.ChartCorssCursor.VLineType=item.VLineType;}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;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;var subFrame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsNumber(item.SplitCount))chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;if(item.StringFormat)chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsNumber(item.SplitType)){chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;}if(IFrameSplitOperator.IsNumber(item.FilterType))subFrame.YSplitOperator.FilterType=item.FilterType;if(item.IsShowLeftText==false){chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
|
|
1244
1244
|
}if(item.IsShowRightText==false){chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
|
|
1245
1245
|
}if(item.Height>=0)chart.Frame.SubFrame[i].Height=item.Height;if(item.Custom)chart.Frame.SubFrame[i].Frame.YSplitOperator.Custom=item.Custom;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsNumber(item.BorderLine))chart.Frame.SubFrame[i].Frame.BorderLine=item.BorderLine;if(IFrameSplitOperator.IsBool(item.EnableRemoveZero))chart.Frame.SubFrame[i].Frame.YSplitOperator.EnableRemoveZero=item.EnableRemoveZero;if(IFrameSplitOperator.IsNumber(item.FloatPrecision))chart.Frame.SubFrame[i].Frame.YSplitOperator.FloatPrecision=item.FloatPrecision;if(IFrameSplitOperator.IsBool(item.IsShowXLine))chart.Frame.SubFrame[i].Frame.IsShowXLine=item.IsShowXLine;if(IFrameSplitOperator.IsBool(item.IsShowYLine))chart.Frame.SubFrame[i].Frame.IsShowYLine=item.IsShowYLine;if(IFrameSplitOperator.IsNumber(item.YTextBaseline))chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;if(IFrameSplitOperator.IsBool(item.IsShowIndexTitle))chart.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;if(item.TopSpace>=0)chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;if(item.BottomSpace>=0)chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;//是否显示关闭集合竞价按钮
|
|
1246
|
-
if(IFrameSplitOperator.IsBool(item.CloseBeforeButton))chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;if(item.ClientBGColor)subFrame.ClientBGColor=item.ClientBGColor;if(!IFrameSplitOperator.IsUndefined(item.HorizontalReserved))subFrame.HorizontalReserved=item.HorizontalReserved;if(i==0){if(IFrameSplitOperator.IsNumber(item.RightTextFormat))
|
|
1246
|
+
if(IFrameSplitOperator.IsBool(item.CloseBeforeButton))chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;if(item.ClientBGColor)subFrame.ClientBGColor=item.ClientBGColor;if(!IFrameSplitOperator.IsUndefined(item.HorizontalReserved))subFrame.HorizontalReserved=item.HorizontalReserved;if(i==0){if(IFrameSplitOperator.IsNumber(item.RightTextFormat))//废弃
|
|
1247
|
+
{subFrame.YSplitOperator.RightTextConfig.Format=item.RightTextFormat;if(item.RightTextFormat==2)subFrame.MultiTextFormat=1;}if(item.RightText)//主图右侧坐标设置
|
|
1248
|
+
{var subItem=item.RightText;if(IFrameSplitOperator.IsNumber(subItem.Format))subFrame.YSplitOperator.RightTextConfig.Format=subItem.Format;if(subItem.Format==2)subFrame.MultiTextFormat=1;if(subItem.Percentage&&IFrameSplitOperator.IsNumber(subItem.Percentage.Dec))subFrame.YSplitOperator.RightTextConfig.Percentage.Dec=subItem.Percentage.Dec;}}}chart.UpdateXShowText();}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}//叠加股票
|
|
1247
1249
|
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;//标题栏均线也不显示
|
|
1248
1250
|
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)//显示位置高级配置
|
|
1249
1251
|
{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;//分钟数据指标从第3个指标窗口设置
|
|
@@ -1258,9 +1260,9 @@ if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<optio
|
|
|
1258
1260
|
if(option.CorssCursorInfo){var item=option.CorssCursorInfo;if(IFrameSplitOperator.IsNumber(option.CorssCursorInfo.Left))chart.ChartCorssCursor.ShowTextMode.Left=option.CorssCursorInfo.Left;if(IFrameSplitOperator.IsNumber(option.CorssCursorInfo.Right))chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;if(IFrameSplitOperator.IsNumber(option.CorssCursorInfo.Bottom))chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;if(option.CorssCursorInfo.IsShowCorss===false)chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;if(option.CorssCursorInfo.RightTextFormat>0)chart.ChartCorssCursor.TextFormat.Right=option.CorssCursorInfo.RightTextFormat;if(option.CorssCursorInfo.IsOnlyDrawMinute==true)chart.ChartCorssCursor.IsOnlyDrawMinute=option.CorssCursorInfo.IsOnlyDrawMinute;//Y轴显示收盘价
|
|
1259
1261
|
if(IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime))chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;if(item.RightButton){if(IFrameSplitOperator.IsBool(item.RightButton.Enable))chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;}if(IFrameSplitOperator.IsNumber(item.PriceFormatType))chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;if(IFrameSplitOperator.IsNumber(item.DataFormatType))chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;if(IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType))chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;if(IFrameSplitOperator.IsNumber(option.CorssCursorInfo.VPenType))chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;}if(IFrameSplitOperator.IsNumber(option.DayCount))chart.DayCount=option.DayCount;this.SetChartBorder(chart,option);if(option.SplashTitle)chart.ChartSplashPaint.SplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableVerifyRecvData))chart.EnableVerifyRecvData=option.EnableVerifyRecvData;chart.TitlePaint[0].IsShow=false;//主窗口 隐藏刻度
|
|
1260
1262
|
var mainFrame=chart.Frame.SubFrame[0];mainFrame.Frame.IsShowYText[0]=false;mainFrame.Frame.IsShowYText[1]=false;mainFrame.Frame.IsShowXLine=false;mainFrame.Frame.IsShowYLine=false;mainFrame.Frame.BorderLine=0;chart.Frame.SubFrame[1].Height=0;//隐藏成交量
|
|
1261
|
-
chart.EnableBorderDrag=false;if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;if(item.SplitCount)chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;if(item.StringFormat)chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsNumber(item.SplitType)){chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;}if(IFrameSplitOperator.IsBool(item.IsShowLeftText)){chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
|
|
1263
|
+
chart.EnableBorderDrag=false;if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;var subFrame=chart.Frame.SubFrame[i].Frame;if(item.SplitCount)chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;if(item.StringFormat)chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsNumber(item.SplitType)){chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;}if(IFrameSplitOperator.IsBool(item.IsShowLeftText)){chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
|
|
1262
1264
|
}if(IFrameSplitOperator.IsBool(item.IsShowRightText)){chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
|
|
1263
|
-
}if(item.Height>=0)chart.Frame.SubFrame[i].Height=item.Height;if(item.Custom)chart.Frame.SubFrame[i].Frame.YSplitOperator.Custom=item.Custom;if(
|
|
1265
|
+
}if(item.Height>=0)chart.Frame.SubFrame[i].Height=item.Height;if(item.Custom)chart.Frame.SubFrame[i].Frame.YSplitOperator.Custom=item.Custom;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsNumber(item.BorderLine))chart.Frame.SubFrame[i].Frame.BorderLine=item.BorderLine;if(IFrameSplitOperator.IsBool(item.EnableRemoveZero))chart.Frame.SubFrame[i].Frame.YSplitOperator.EnableRemoveZero=item.EnableRemoveZero;if(IFrameSplitOperator.IsNumber(item.FloatPrecision))chart.Frame.SubFrame[i].Frame.YSplitOperator.FloatPrecision=item.FloatPrecision;if(IFrameSplitOperator.IsBool(item.IsShowXLine))chart.Frame.SubFrame[i].Frame.IsShowXLine=item.IsShowXLine;if(IFrameSplitOperator.IsBool(item.IsShowYLine))chart.Frame.SubFrame[i].Frame.IsShowYLine=item.IsShowYLine;if(IFrameSplitOperator.IsNumber(item.YTextBaseline))chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;if(i==0){if(IFrameSplitOperator.IsNumber(item.RightTextFormat))subFrame.YSplitOperator.RightTextConfig.Format=item.RightTextFormat;}}}chart.UpdateXShowText();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;//标题栏均线也不显示
|
|
1264
1266
|
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;}this.AdjustTitleHeight(chart);if(option.DisableMouseEvent===true){//取消鼠标事件
|
|
1265
1267
|
this.CanvasElement.onmousemove=function(e){};this.CanvasElement.oncontextmenu=function(e){};this.CanvasElement.ondblclick=function(e){};this.CanvasElement.onmousedown=function(e){};this.CanvasElement.onmouseout=function(e){};this.CanvasElement.onmouseleave=function(e){};}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}return chart;};/*废弃
|
|
1266
1268
|
//统一全部使用 MinuteChartContainer
|
|
@@ -2265,7 +2267,7 @@ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FINISH_DRAWPICTURE);//完成
|
|
|
2265
2267
|
if(event&&event.Callback){var sendData={DrawPicture:drawPicture};event.Callback(event,sendData,this);}//单个回调
|
|
2266
2268
|
if(drawPicture.FinishedCallback)drawPicture.FinishedCallback(drawPicture);if(drawPicture.OnFinish)drawPicture.OnFinish();if(this.ChartDrawStorage)this.ChartDrawStorage.SaveDrawData(drawPicture);return true;};//选中画图工具 出现单个图形设置菜单
|
|
2267
2269
|
this.OnSelectChartPicture=function(chart){JSConsole.Chart.Log('[JSChartContainer::OnSelectChartPicture]',chart);if(!this.DialogModifyDraw)return;this.ShowModifyDrawDialog(chart);};this.FinishMoveChartDrawPicture=function(){var drawPicture=this.CurrentChartDrawPicture;if(!drawPicture)return false;if(drawPicture.PointCount!=drawPicture.Point.length)return false;drawPicture.PointMagnetKLine();drawPicture.Status=10;//完成
|
|
2268
|
-
drawPicture.PointToValue();if(this.ChartDrawStorage)this.ChartDrawStorage.SaveDrawData(drawPicture);this.CurrentChartDrawPicture=null;if(this.SelectChartDrawPicture&&this.SelectChartDrawPicture.DragInfo)//图形移动了回调调用移动完成函数
|
|
2270
|
+
drawPicture.Period=this.Period;drawPicture.PointToValue();if(this.ChartDrawStorage)this.ChartDrawStorage.SaveDrawData(drawPicture);this.CurrentChartDrawPicture=null;if(this.SelectChartDrawPicture&&this.SelectChartDrawPicture.DragInfo)//图形移动了回调调用移动完成函数
|
|
2269
2271
|
{var dargInfo=this.SelectChartDrawPicture.DragInfo;if(dargInfo.Click&&dargInfo.Move){if(dargInfo.Click.X!=dargInfo.Move.X||dargInfo.Click.Y!=dargInfo.Move.Y){//通知上层画好了
|
|
2270
2272
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FINISH_MOVE_DRAWPICTURE);//完成画图工具事件
|
|
2271
2273
|
if(event&&event.Callback){var sendData={DrawPicture:drawPicture};event.Callback(event,sendData,this);}if(drawPicture.OnMoveFinish)drawPicture.OnMoveFinish();}}}return true;};//清空所有的画线工具 option={ Draw:false/true }
|
|
@@ -5830,8 +5832,9 @@ this.Data;//分钟数据
|
|
|
5830
5832
|
this.SourceData;//原始数据
|
|
5831
5833
|
this.OverlayChartPaint;this.SplitCount=7;this.Symbol;this.SplitType=0;//0=默认根据最大最小值分割 1=涨跌停分割 2=数据最大最大值分割
|
|
5832
5834
|
this.DefaultSplitType=0;this.LimitPrice;//{Max: Min:} 涨跌停价
|
|
5833
|
-
this.Custom
|
|
5834
|
-
this.
|
|
5835
|
+
this.Custom;//this.RightTextFormat=0; //右边刻度显示模式 0=百分比 1=价格 2=价格 | 百分比 !!! 废弃, 用下面的格式
|
|
5836
|
+
this.RightTextConfig={Percentage:{Dec:2},Format:0//Percentage:{ Dec: 百分比小数位数 }, Format: 0=百分比 1=价格 2=价格 | 百分比
|
|
5837
|
+
};this.BeforeOpenData;this.IsBeforeData=false;this.AfterCloseData;this.IsAfterData=false;this.MultiDayBeforeOpenData;this.MultiDayAfterCloseData;this.DayOffset;this.AverageData;//均线
|
|
5835
5838
|
this.DayCount=1;this.GlobalOption;this.HQChart;this.FixedYMaxMin;//{ Max, Min} 固定Y轴最大最小值
|
|
5836
5839
|
this.EnableZoomUpDown=false;this.IsEnableDragY=function(){return true;};this.Operator=function(){this.Frame.HorizontalInfo=[];this.Frame.CustomHorizontalInfo=[];if(!this.Data)return;var range=null;var isFixedMaxMin=this.FixedYMaxMin&&IFrameSplitOperator.IsNumber(this.FixedYMaxMin.Max)&&IFrameSplitOperator.IsNumber(this.FixedYMaxMin.Min);if(isFixedMaxMin){range={Max:this.FixedYMaxMin.Max,Min:this.FixedYMaxMin.Min};JSConsole.Chart.Log('[FrameSplitMinutePriceY::Operator] FixedYMaxMin.Max='+this.FixedYMaxMin.Max+' FixedYMaxMin.Min='+this.FixedYMaxMin.Min+' ');}else{range=this.GetMaxMin();}if(this.Symbol&&MARKET_SUFFIX_NAME.IsUSA(this.Symbol.toUpperCase())){this.USASplit(range,isFixedMaxMin);}else if(this.SplitType==2){this.USASplit(range,isFixedMaxMin);}else{this.DefaultSplit(range,isFixedMaxMin);}this.CustomCoordinate();if(this.EnableZoomUpDown==true&&!this.FixedYMaxMin)this.FixedYMaxMin={Max:range.Max,Min:range.Min};this.ReservedHeight({Max:this.Frame.HorizontalMax,Min:this.Frame.HorizontalMin});//预留高度
|
|
5837
5840
|
if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};event.Callback(event,data,this);}}};this.CustomCoordinate=function()//自定义刻度
|
|
@@ -5855,13 +5858,13 @@ var spacePrice=5*pixelTatio*(max-min)/height;max+=spacePrice;min-=spacePrice;if(
|
|
|
5855
5858
|
}for(var i=0;i<showCount;++i){var price=min+distance*i;if(this.YClose&&price==this.YClose)continue;var coordinate=new CoordinateInfo();coordinate.Value=price;this.FormatCoordinate(coordinate,defaultfloatPrecision);this.Frame.HorizontalInfo.push(coordinate);}if(this.YClose>min&&this.YClose<max)//前收盘线
|
|
5856
5859
|
{var coordinate=new CoordinateInfo();coordinate.Value=this.YClose;coordinate.LineType=2;//中间的线画虚线
|
|
5857
5860
|
if(g_JSChartResource.FrameDotSplitPen)coordinate.LineColor=g_JSChartResource.FrameDotSplitPen;var strPrice=this.YClose.toFixed(defaultfloatPrecision);//价格刻度字符串
|
|
5858
|
-
if(this.IsShowLeftText)coordinate.Message[0]=strPrice;if(this.IsShowRightText){if(this.
|
|
5861
|
+
if(this.IsShowLeftText)coordinate.Message[0]=strPrice;if(this.IsShowRightText){var value=0;var dec=this.RightTextConfig.Percentage.Dec;if(this.RightTextConfig.Format==1)coordinate.Message[1]=strPrice;else coordinate.Message[1]=value.toFixed(dec)+'%';//百分比
|
|
5859
5862
|
}this.Frame.HorizontalInfo.push(coordinate);}this.Frame.HorizontalInfo.sort(function(a,b){return a.Value-b.Value;});this.Frame.HorizontalMax=max;this.Frame.HorizontalMin=min;};this.DefaultSplit=function(range,isFixedMaxMin){var max=range.Max;var min=range.Min;if(!isFixedMaxMin){if(this.YClose==max&&this.YClose==min){max=this.YClose+this.YClose*0.1;min=this.YClose-this.YClose*0.1;}else{var distanceValue=Math.max(Math.abs(this.YClose-max),Math.abs(this.YClose-min));max=this.YClose+distanceValue;min=this.YClose-distanceValue;//if (min<0) min=range.Min;
|
|
5860
5863
|
}}var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
5861
5864
|
var width=this.Frame.ChartBorder.GetChartWidth();//画布的宽度
|
|
5862
5865
|
var isPhoneModel=width<450*pixelTatio;JSConsole.Chart.Log('[FrameSplitMinutePriceY]'+'max='+max+' min='+min+' isPhoneModel='+isPhoneModel);var showCount=this.SplitCount;var distance=(max-min)/(showCount-1);var minDistance=[1,0.1,0.01,0.001,0.0001];var defaultfloatPrecision=GetfloatPrecision(this.Symbol);if(isPhoneModel&&MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol))defaultfloatPrecision=0;//手机端指数不显示小数位数,太长了
|
|
5863
5866
|
if(distance<minDistance[defaultfloatPrecision]&&!isFixedMaxMin){distance=minDistance[defaultfloatPrecision];max=this.YClose+distance*(showCount-1)/2;min=this.YClose-distance*(showCount-1)/2;}var aryCoordinate=[];var extendValue=distance*0.5;for(var price=this.YClose,i=0;price<=max+extendValue&&i<30;price+=distance,++i){var coordinate=new CoordinateInfo();coordinate.Value=price;this.FormatCoordinate(coordinate,defaultfloatPrecision);aryCoordinate.push(coordinate);}for(var price=this.YClose-distance,i=0;price>=min-extendValue&&i<30;price-=distance,++i){var coordinate=new CoordinateInfo();coordinate.Value=price;this.FormatCoordinate(coordinate,defaultfloatPrecision);aryCoordinate.push(coordinate);}aryCoordinate.sort(function(left,right){return left.Value-right.Value;});this.Frame.HorizontalInfo=aryCoordinate;this.Frame.HorizontalMax=max;this.Frame.HorizontalMin=min;};this.FormatCoordinate=function(coordinate,defaultfloatPrecision){var price=coordinate.Value;var strPrice=price.toFixed(defaultfloatPrecision);//价格刻度字符串
|
|
5864
|
-
if(this.IsShowLeftText)coordinate.Message[0]=strPrice;if(IFrameSplitOperator.IsNumber(this.YClose)&&this.YClose!=0){var per=(price/this.YClose-1)*100;if(per>0)coordinate.TextColor=g_JSChartResource.UpTextColor;else if(per<0)coordinate.TextColor=g_JSChartResource.DownTextColor;var strPer=IFrameSplitOperator.FormatValueString(per,
|
|
5867
|
+
if(this.IsShowLeftText)coordinate.Message[0]=strPrice;if(IFrameSplitOperator.IsNumber(this.YClose)&&this.YClose!=0){var per=(price/this.YClose-1)*100;if(per>0)coordinate.TextColor=g_JSChartResource.UpTextColor;else if(per<0)coordinate.TextColor=g_JSChartResource.DownTextColor;var dec=this.RightTextConfig.Percentage.Dec;var strPer=IFrameSplitOperator.FormatValueString(per,dec)+'%';if(this.IsShowRightText){if(this.RightTextConfig.Format==1){coordinate.Message[1]=strPrice;}else if(this.RightTextConfig.Format==2)//价格/百分比
|
|
5865
5868
|
{coordinate.Message[1]=[{Text:strPrice},{Text:"/"},{Text:strPer}];}else{coordinate.Message[1]=strPer;//百分比
|
|
5866
5869
|
}}if(Math.abs(price-this.YClose)<0.00000000001)//小数有精度问题 使用差值
|
|
5867
5870
|
{coordinate.LineType=2;//中间的线画虚线
|
|
@@ -6455,9 +6458,9 @@ this.PointMagnetKLine=function(){if(!this.IsSupportMagnet)return false;if(!this.
|
|
|
6455
6458
|
this.PointToValue=function(){if(!this.Frame)return false;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame"){return this.PointToValue_Minute();}else{return this.PointToValue_KLine();}};this.PointToKLine=function(aryPoint){if(!this.Frame)return null;var data=this.Frame.Data;if(!data)return null;var kLine=[];var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i in aryPoint){var item=aryPoint[i];var xValue=parseInt(this.Frame.GetXData(item.Y))+data.DataOffset;var yValue=this.Frame.GetYData(item.X);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;kLine[i]=valueItem;}}else{for(var i in aryPoint){var item=aryPoint[i];var index=parseInt(this.Frame.GetXData(item.X,false));var xValue=index+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length){xValue=data.Data.length-1;index=xValue-data.DataOffset;}var yValue=this.Frame.GetYData(item.Y,false);var valueItem={XValue:xValue,YValue:yValue,XIndex:index};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;kLine[i]=valueItem;}}return kLine;};this.PointToValue_KLine=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.Y,false))+data.DataOffset;var yValue=this.Frame.GetYData(item.X,false);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;this.Value[i]=valueItem;}}else{for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.X,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var yValue=this.Frame.GetYData(item.Y,false);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;this.Value[i]=valueItem;}}return true;};this.PointToValue_Minute=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.Y,false));var yValue=this.Frame.GetYData(item.X,false);var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[xValue];valueItem.DateTime={Date:minuteItem.Date,Time:minuteItem.Time};this.Value[i]=valueItem;}}else{var xDatetime=g_MinuteTimeStringData.GetTimeData(this.Symbol);for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.X,false));var yValue=this.Frame.GetYData(item.Y,false);if(xValue>=data.Data.length)//超过当前数据,直接读固定时间
|
|
6456
6459
|
{var index=xValue%xDatetime.length;var dataIndex=data.Data.length-1;var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[dataIndex];var timeItem=xDatetime[index];valueItem.DateTime={Date:minuteItem.Date,Time:timeItem};this.Value[i]=valueItem;}else{var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[xValue];valueItem.DateTime={Date:minuteItem.Date,Time:minuteItem.Time};this.Value[i]=valueItem;}}}return true;};this.IsPointIn=function(x,y,option){return false;};//Value => Point
|
|
6457
6460
|
this.ValueToPoint=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;//this.UpdateXValue();
|
|
6458
|
-
var isHScreen=this.Frame.IsHScreen;this.Point=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.X=this.Frame.GetYFromData(item.YValue,false);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);}this.Point[i]=pt;}};this.
|
|
6459
|
-
this.ChangePeriod=function(period){var kData=this.
|
|
6460
|
-
{var data=this.
|
|
6461
|
+
var isHScreen=this.Frame.IsHScreen;this.Point=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.X=this.Frame.GetYFromData(item.YValue,false);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);}this.Point[i]=pt;}};this.GetKData=function(){if(!this.Frame)return null;var data=this.Frame.Data;if(!data)return null;return data;};//周期变动 X重新定位
|
|
6462
|
+
this.ChangePeriod=function(period){var kData=this.GetKData();if(!kData)return;var aryDateTime=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];if(!item.DateTime)break;var dateTime={Date:item.DateTime.Date,Time:0,Match:null};if(IFrameSplitOperator.IsNumber(item.DateTime.Time))dateTime.Time=item.DateTime.Time;aryDateTime[i]=dateTime;}var findCount=0;var perData=null;var perIndex=-1;for(var i=0,j=0;i<kData.Data.length;++i){var kItem=kData.Data[i];for(j=0;j<aryDateTime.length;++j){var item=aryDateTime[j];if(item.Match)continue;if(ChartData.IsDayPeriod(period,true)){if(kItem.Date>item.Date){item.Match={KItem:perData,Index:perIndex};++findCount;}}else if(ChartData.IsMinutePeriod(period,true)){if(kItem.Date>item.Date||kItem.Date==item.Date&&kItem.Time>item.Time){item.Match={KItem:perData,Index:perIndex};++findCount;}}}perData=kItem;perIndex=i;if(findCount>=aryDateTime.length)break;}for(var i=0;i<aryDateTime.length;++i){var item=aryDateTime[i];var valueItem=this.Value[i];if(item.Match&&item.Match.KItem){valueItem.DateTime={Date:item.Match.Date,Time:item.Match.Time};valueItem.XValue=item.Match.Index;}else{valueItem.DateTime=null;valueItem.XValue=null;}}this.Period=period;};this.UpdateXValue=function()//通过datetime更新x的索引
|
|
6463
|
+
{var data=this.GetKData();if(!data)return false;var aryDateTime=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];if(!item.DateTime)break;var dateTime={Date:item.DateTime.Date};if(IFrameSplitOperator.IsNumber(item.DateTime.Time))dateTime.Time=item.DateTime.Time;aryDateTime[i]=dateTime;}data.FindDataIndexByDateTime(aryDateTime);for(var i=0;i<aryDateTime.length;++i){var findItem=aryDateTime[i];var valueItem=this.Value[i];if(findItem.Index>=0)valueItem.XValue=findItem.Index;}};//重置X索引数据
|
|
6461
6464
|
this.ResetXValue=function(){for(var i=0;i<this.Value.length;++i){var item=this.Value[i];item.XValue=null;}return true;};//xStep,yStep 移动的偏移量
|
|
6462
6465
|
this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==null)return false;var index=parseInt(this.MovePointIndex);if(index===100)//整体移动
|
|
6463
6466
|
{if(this.IsMoveOutOfBounds(this.Point,xStep,yStep))return false;for(var i in this.Point){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(index===0||index===1||index===2||index===3||index===4||index===5){if(index<this.Point.length){this.Point[index].X+=xStep;this.Point[index].Y+=yStep;}}else{return false;}};//是否超出边界了
|
|
@@ -7159,7 +7162,7 @@ var stockItem={Symbol:item.Symbol,MapPicture:new _map2.default()};for(var j=0;j<
|
|
|
7159
7162
|
{if(!this.StorageKey)return;var saveData=[];var _iteratorNormalCompletion14=true;var _didIteratorError14=false;var _iteratorError14=undefined;try{for(var _iterator14=(0,_getIterator3.default)(this.DrawDataV2),_step14;!(_iteratorNormalCompletion14=(_step14=_iterator14.next()).done);_iteratorNormalCompletion14=true){var mapItem=_step14.value;var symbol=mapItem[0];var stockItem=mapItem[1];var itemData={Symbol:symbol,AryPicture:[]};var _iteratorNormalCompletion15=true;var _didIteratorError15=false;var _iteratorError15=undefined;try{for(var _iterator15=(0,_getIterator3.default)(stockItem.MapPicture),_step15;!(_iteratorNormalCompletion15=(_step15=_iterator15.next()).done);_iteratorNormalCompletion15=true){var pictureItem=_step15.value;var drawItem=pictureItem[1];if(drawItem.EnableSave===false)continue;itemData.AryPicture.push(drawItem);}}catch(err){_didIteratorError15=true;_iteratorError15=err;}finally{try{if(!_iteratorNormalCompletion15&&_iterator15.return){_iterator15.return();}}finally{if(_didIteratorError15){throw _iteratorError15;}}}if(IFrameSplitOperator.IsNonEmptyArray(itemData.AryPicture))saveData.push(itemData);}}catch(err){_didIteratorError14=true;_iteratorError14=err;}finally{try{if(!_iteratorNormalCompletion14&&_iterator14.return){_iterator14.return();}}finally{if(_didIteratorError14){throw _iteratorError14;}}}JSConsole.Chart.Log('[ChartDrawStorage::Save] save to localStorage, key='+this.StorageKey);var strData=(0,_stringify2.default)({Ver:2.0,Data:saveData});localStorage[this.StorageKey]=strData;};this.SaveDrawData=function(drawPicture)//保存一个画图工具
|
|
7160
7163
|
{var symbol=drawPicture.Symbol;var data=drawPicture.ExportStorageData();if(!data)return;if(this.DrawDataV2.has(symbol))//更新
|
|
7161
7164
|
{JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: symbol, drawPicture, data',symbol,drawPicture,data);var stockItem=this.DrawDataV2.get(symbol);stockItem.MapPicture.set(data.Guid,data);}else//新增
|
|
7162
|
-
{JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: symbol, drawPicture, data',symbol,drawPicture,data);var stockItem={Symbol:symbol,MapPicture:new _map2.default()};stockItem.set(data.Guid,data);this.DrawDataV2.set(symbol,
|
|
7165
|
+
{JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: symbol, drawPicture, data',symbol,drawPicture,data);var stockItem={Symbol:symbol,MapPicture:new _map2.default()};stockItem.MapPicture.set(data.Guid,data);this.DrawDataV2.set(symbol,stockItem);}JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ',this.DrawDataV2);this.Save();};this.DeleteDrawData=function(drawPicture)//删除一个画图工具
|
|
7163
7166
|
{var symbol=drawPicture.Symbol;if(!this.DrawDataV2.has(symbol))return;var stockItem=this.DrawDataV2.get(symbol);if(!stockItem.MapPicture.has(drawPicture.Guid))return;stockItem.MapPicture.delete(drawPicture.Guid);this.Save();};this.Clear=function(){this.DrawDataV2=new _map2.default();this.Save();};this.GetDrawData=function(obj)//获取已有的画图工具数据{ Symbol: , Period:, }
|
|
7164
7167
|
{var aryData=[];var symbol=obj.Symbol;if(!this.DrawDataV2.has(symbol))return aryData;var stockItem=this.DrawDataV2.get(symbol);var _iteratorNormalCompletion16=true;var _didIteratorError16=false;var _iteratorError16=undefined;try{for(var _iterator16=(0,_getIterator3.default)(stockItem.MapPicture),_step16;!(_iteratorNormalCompletion16=(_step16=_iterator16.next()).done);_iteratorNormalCompletion16=true){var mapItem=_step16.value;var drawItem=mapItem[1];if(this.EnableCrossPeriod){aryData.push(drawItem);}else{if(drawItem.Period==obj.Period)aryData.push(drawItem);}}}catch(err){_didIteratorError16=true;_iteratorError16=err;}finally{try{if(!_iteratorNormalCompletion16&&_iterator16.return){_iterator16.return();}}finally{if(_didIteratorError16){throw _iteratorError16;}}}return aryData;};}/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
7165
7168
|
// 数据分割
|
|
@@ -14865,12 +14868,13 @@ CMD_LOCK_DRAW_CHART_ID:10,//上锁
|
|
|
14865
14868
|
CMD_ZOOM_FONT_ID:11,//字体放大
|
|
14866
14869
|
CMD_ZOOM_OUT_FONT_ID:12,//字体缩小
|
|
14867
14870
|
CMD_MODIFY_TEXT_ID:13,//随机生成文字内容
|
|
14868
|
-
CMD_ADVANCED_SETTING_ID:14
|
|
14869
|
-
|
|
14871
|
+
CMD_ADVANCED_SETTING_ID:14,//高级设置
|
|
14872
|
+
CMD_CROSS_PERIOD_ID:15//跨周期
|
|
14873
|
+
};function JSDialogDrawTool(){this.AryChartGroup=[{Title:"线段",AryChart:[{Title:'线段',ClassName:'hqchart_drawtool icon-draw_line',Type:0,Data:{ID:"线段"}},{Title:'线段信息',ClassName:'hqchart_drawtool icon-infoline',Type:0,Data:{ID:"InfoLine"}},{Title:'射线',ClassName:'hqchart_drawtool icon-draw_rays',Type:0,Data:{ID:"射线"}},{Title:"趋势线角度",ClassName:"hqchart_drawtool icon-qushixianjiaodu",Type:0,Data:{ID:"TrendAngle"}},{Title:'标价线',ClassName:'hqchart_drawtool icon-price_line',Type:0,Data:{ID:"标价线"}},{Title:'垂直线',ClassName:'hqchart_drawtool icon-vertical_line',Type:0,Data:{ID:"垂直线"}},{Title:'十字线',ClassName:'hqchart_drawtool icon-tubiao_shizixian',Type:0,Data:{ID:"十字线"}},{Title:'箭头',ClassName:'hqchart_drawtool icon-bottom-arrow-solid',Type:0,Data:{ID:"箭头"}},{Title:'大箭头',ClassName:'hqchart_drawtool icon-big_arrow',Type:0,Data:{ID:"ArrowMarker"}},{Title:'趋势线',ClassName:'hqchart_drawtool icon-draw_trendline',Type:0,Data:{ID:"趋势线"}},{Title:'水平线',ClassName:'hqchart_drawtool icon-draw_hline',Type:0,Data:{ID:"水平线"}},{Title:'水平射线',ClassName:'hqchart_drawtool icon-tubiao_shuipingshexian',Type:0,Data:{ID:"水平射线"}},{Title:'涂鸦线段',ClassName:'hqchart_drawtool icon-draw_line',Type:0,Data:{ID:"涂鸦线段"}},{Title:'阻速线',ClassName:'hqchart_drawtool icon-draw_resline',Type:0,Data:{ID:"阻速线"}},{Title:'通达信阻速线',ClassName:'hqchart_drawtool icon-draw_resline',Type:0,Data:{ID:"阻速线2"}},{Title:'江恩角度线',ClassName:'hqchart_drawtool icon-jiangenjiaoduxian',Type:0,Data:{ID:"江恩角度线"}},{Title:'通达信江恩角度线',ClassName:'hqchart_drawtool icon-jiangenjiaoduxian',Type:0,Data:{ID:"江恩角度线2"}}]},{Title:"通道",AryChart:[{Title:'平行线',ClassName:'hqchart_drawtool icon-draw_parallel_lines',Type:0,Data:{ID:"平行线"}},{Title:'水平线段',ClassName:'hqchart_drawtool icon-draw_hlinesegment',Type:0,Data:{ID:"水平线段"}},{Title:'平行射线',ClassName:'hqchart_drawtool icon-draw_p_rays_lines',Type:0,Data:{ID:"平行射线"}},{Title:'平行通道',ClassName:'hqchart_drawtool icon-draw_parallelchannel',Type:0,Data:{ID:"平行通道"}},{Title:'价格通道线',ClassName:'hqchart_drawtool icon-draw_pricechannel',Type:0,Data:{ID:"价格通道线"}},{Title:'箱型线',ClassName:'hqchart_drawtool icon-draw_box',Type:0,Data:{ID:"箱型线"}},{Title:"不相交通道",ClassName:"hqchart_drawtool icon-buxiangjiaojiao",Type:0,Data:{ID:"DisjointChannel"}},{Title:"平滑顶/底",ClassName:"hqchart_drawtool icon-tubiao_buxiangjiaotongdao",Type:0,Data:{ID:"FlatTop"}},{Title:"波段线",ClassName:'hqchart_drawtool icon-draw_waveband',Type:0,Data:{ID:"波段线"}},{Title:"百分比线",ClassName:'hqchart_drawtool icon-PercentageLine',Type:0,Data:{ID:"百分比线"}},{Title:"黄金分割",ClassName:'hqchart_drawtool icon-GoldenSection',Type:0,Data:{ID:"黄金分割"}},{Title:"线形回归线",ClassName:'hqchart_drawtool icon-linear_3',Type:0,Data:{ID:"线形回归线"}},{Title:"线形回归带",ClassName:'hqchart_drawtool icon-linear_1',Type:0,Data:{ID:"线形回归带"}},{Title:"延长线形回归带",ClassName:'hqchart_drawtool icon-linear_2',Type:0,Data:{ID:"延长线形回归带"}},{Title:"Long Position",ClassName:'hqchart_drawtool icon-chart-long-position',Type:0,Data:{ID:"TVLongPosition"}},{Title:"Short Position",ClassName:'hqchart_drawtool icon-chart-short-position',Type:0,Data:{ID:"TVShortPosition"}}]},{Title:"形状",AryChart:[{Title:'圆弧线',ClassName:'hqchart_drawtool icon-draw_arc',Type:0,Data:{ID:"圆弧线"}},{Title:'矩形',ClassName:'hqchart_drawtool icon-rectangle',Type:0,Data:{ID:"矩形"}},{Title:'平行四边形',ClassName:'hqchart_drawtool icon-draw_quadrangle',Type:0,Data:{ID:"平行四边形"}},{Title:'三角形',ClassName:'hqchart_drawtool icon-draw_triangle',Type:0,Data:{ID:"三角形"}},{Title:'圆',ClassName:'hqchart_drawtool icon-draw_circle',Type:0,Data:{ID:"圆"}},{Title:'对称角度',ClassName:'hqchart_drawtool icon-draw_symangle',Type:0,Data:{ID:"对称角度"}}]},{Title:"波浪线",AryChart:[{Title:'M头W底',ClassName:'hqchart_drawtool icon-draw_wavemw',Type:0,Data:{ID:"M头W底"}},{Title:'头肩型',ClassName:'hqchart_drawtool icon-draw_head_shoulders_bt',Type:0,Data:{ID:"头肩型"}},{Title:'波浪尺',ClassName:'hqchart_drawtool icon-waveruler',Type:0,Data:{ID:"波浪尺"}},{Title:'AB波浪尺',ClassName:'hqchart_drawtool icon-waveruler',Type:0,Data:{ID:"AB波浪尺"}}]},{Title:"斐波那契",AryChart:[{Title:'斐波那契周期线',ClassName:'hqchart_drawtool icon-feibonaqizhouqixian',Type:0,Data:{ID:"斐波那契周期线"}},{Title:'斐波那契楔形',ClassName:'hqchart_drawtool icon-feibonaqiqixing',Type:0,Data:{ID:"FibWedge"}},{Title:'斐波那契回撤',ClassName:'hqchart_drawtool icon-feibonaqihuiche',Type:0,Data:{ID:"FibRetracement"}},{Title:'斐波那契速度阻力扇',ClassName:'hqchart_drawtool icon-feibonaqisuduzulishan',Type:0,Data:{ID:"FibSpeedResistanceFan"}}]},{Title:"测量工具",AryChart:[{Title:'价格范围',ClassName:'hqchart_drawtool icon-shijianfanwei',Type:0,Data:{ID:"PriceRange"}},{Title:'时间范围',ClassName:'hqchart_drawtool icon-jiagefanwei',Type:0,Data:{ID:"DateRange"}},{Title:"价格和时间范围",ClassName:"hqchart_drawtool icon-jiagefanwei",Type:0,Data:{ID:"DatePriceRange"}},{Title:"监测线",ClassName:"hqchart_drawtool icon-jiance",Type:0,Data:{ID:"MonitorLine"}},{Title:"固定范围成交量分布图",ClassName:"hqchart_drawtool icon-tubiao_gudingfanweichengjiaoliangfenbutu",Type:0,Data:{ID:"固定范围成交量分布图"}}]},{Title:"文字",AryChart:[{Title:"文字",ClassName:'hqchart_drawtool icon-draw_text',Type:0,Data:{ID:"文本"}},{Title:"锚点文字",ClassName:'hqchart_drawtool icon-maodianwenzi',Type:0,Data:{ID:"AnchoredText"}},{Title:"注释",ClassName:'hqchart_drawtool icon-maodian ',Type:0,Data:{ID:"Note"}},{Title:'价格标签',ClassName:'hqchart_drawtool icon-Tooltip',Type:0,Data:{ID:"PriceLabel"}},{Title:'价格注释',ClassName:'hqchart_drawtool icon-tooltiptext',Type:0,Data:{ID:"PriceNote"}},{Title:'向上箭头',ClassName:'iconfont icon-arrow_up',Type:0,Data:{ID:"icon-arrow_up"}},{Title:'向下箭头',ClassName:'iconfont icon-arrow_down',Type:0,Data:{ID:"icon-arrow_down"}},{Title:'向左箭头',ClassName:'iconfont icon-arrow_left',Type:0,Data:{ID:"icon-arrow_left"}},{Title:'向右箭头',ClassName:'iconfont icon-arrow_right',Type:0,Data:{ID:"icon-arrow_right"}}]}];this.ToolConfig={Title:"工具",AryTool:[{Title:"选中",ClassName:'hqchart_drawtool icon-arrow',Type:1,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_SELECTED_ID}},{Title:"跨周期",ClassName:'hqchart_drawtool icon-kuazhouqi',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_CROSS_PERIOD_ID}},{Title:'尺子',ClassName:'hqchart_drawtool icon-ruler',Type:0,Data:{ID:"尺子"}},{Title:"磁铁",ClassName:'hqchart_drawtool icon-xifu',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_ENABLE_MAGNET_ID}},{Title:"点击切换颜色",ClassName:'hqchart_drawtool icon-fangkuai',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID}},{Title:"擦除画线",ClassName:'hqchart_drawtool icon-a-xiangpicachuxiangpica',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_ERASE_DRAW_CHART_ID}},{Title:"删除所有画线",ClassName:'hqchart_drawtool icon-recycle_bin',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_DELETE_ALL_DRAW_CHART_ID}}]};this.DivDialog=null;this.AryDivChart=[];this.HQChart=null;this.LineColor='rgb(255,140,0)';this.LineColorIndex=0;this.RandomLineColor=["rgb(255,69,0)","rgb(0,191,255)","rgb(255,0,255)","rgb(255,105,180)"];this.LineWidth=1*GetDevicePixelRatio();this.ColumnCount=5;this.DragTitle=null;this.RestoreFocusDelay=800;this.Inital=function(hqchart){this.LineColor=g_JSChartResource.DrawPicture.LineColor[0];this.RandomLineColor.splice(0,0,this.LineColor);this.HQChart=hqchart;};this.Create=function(){var _this86=this;var divDom=document.createElement("div");divDom.className='UMyChart_DrawTool_Dialog_Div';var divTitle=document.createElement("div");divTitle.className='UMyChart_DrawTool_Title_Div';divTitle.innerText="画图工具";divTitle.onmousedown=function(e){_this86.OnMouseDownTitle(e);};var divClose=document.createElement("div");divClose.className='UMyChart_DrawTool_Close_Div';divClose.innerText="x";divClose.onmousedown=function(e){_this86.Close(e);};divTitle.appendChild(divClose);divDom.appendChild(divTitle);var table=document.createElement("table");table.className="UMyChart_DrawTool_Table";divDom.appendChild(table);var tbody=document.createElement("tbody");tbody.className="UMyChart_DrawTool_Tbody";table.appendChild(tbody);for(var i=0;i<this.AryChartGroup.length;++i){var item=this.AryChartGroup[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.AryChart))continue;this.CreateChartGroupItem(item,tbody);var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Group_End_Tr';tbody.appendChild(trDom);}//工具栏
|
|
14870
14874
|
this.CreateToolGroup(tbody);this.DivDialog=divDom;document.body.appendChild(divDom);};this.Destroy=function(){this.AryDivChart=[];if(this.DivDialog){if(document&&document.body&&document.body.removeChild)document.body.removeChild(this.DivDialog);}this.DivDialog=null;};this.CreateChartGroupItem=function(groupItem,tbody){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Group_Tr';tbody.appendChild(trDom);var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Group_Td";tdDom.innerText=groupItem.Title;tdDom.colSpan=this.ColumnCount;trDom.appendChild(tdDom);var chartCount=groupItem.AryChart.length;for(var i=0,j=0;i<chartCount;){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Tr';for(j=0;j<this.ColumnCount&&i<chartCount;++j,++i){var item=groupItem.AryChart[i];this.CreateChartItem(item,trDom);}tbody.appendChild(trDom);}};this.CreateChartItem=function(item,trDom){var _this87=this;var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Td";tdDom.title=item.Title;trDom.appendChild(tdDom);var spanDom=document.createElement("span");spanDom.className=item.ClassName;spanDom.classList.add("UMyChart_DrawTool_Span");tdDom.appendChild(spanDom);var data={Item:item,TD:tdDom,Span:spanDom};tdDom.onmousedown=function(e){_this87.OnClickItem(e,data);};//点击
|
|
14871
|
-
this.AryDivChart.push(data);};this.OnClickItem=function(e,data){console.log('[JSDialogDrawTool::OnClickChartItem] ',data);if(!data.Item||!data.Item.Data)return;var type=data.Item.Type;var id=data.Item.Data.ID;if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID){this.OnChangeLineColor(data);}else if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_DELETE_ALL_DRAW_CHART_ID){this.DeleteAllChart();}else if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_ERASE_DRAW_CHART_ID){this.ClearAllSelectedChart();this.ClearCurrnetDrawPicture();this.EnableEraseChart(true);}else if(type==1&&id==JS_DRAWTOOL_MENU_ID.CMD_SELECTED_ID){this.ClearAllSelectedChart();this.ClearCurrnetDrawPicture();this.EnableEraseChart(false);}else if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_ENABLE_MAGNET_ID){this.ChangeMagnet(data);}else if(type==0){this.ClearAllSelectedChart();this.EnableEraseChart(false);data.Span.classList.remove("UMyChart_DrawTool_Span");data.Span.classList.add("UMyChart_DrawTool_Span_Selected");this.CreateDrawPicture(data);}};//清空选中状态
|
|
14872
|
-
this.ClearAllSelectedChart=function(){for(var i=0;i<this.AryDivChart.length;++i){var item=this.AryDivChart[i];if(item.Item.Type==2)continue;item.Span.classList.remove("UMyChart_DrawTool_Span_Selected");item.Span.classList.add("UMyChart_DrawTool_Span");}};this.CreateToolGroup=function(tbody){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Group_Tr';tbody.appendChild(trDom);var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Group_Td";tdDom.innerText=this.ToolConfig.Title;tdDom.colSpan=this.ColumnCount;trDom.appendChild(tdDom);var chartCount=this.ToolConfig.AryTool.length;for(var i=0,j=0;i<chartCount;){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Tr';for(j=0;j<this.ColumnCount&&i<chartCount;++j,++i){var item=this.ToolConfig.AryTool[i];this.CreateToolItem(item,trDom);}tbody.appendChild(trDom);}};this.CreateToolItem=function(item,trDom){var _this88=this;var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Td";tdDom.title=item.Title;trDom.appendChild(tdDom);var spanDom=document.createElement("span");spanDom.className=item.ClassName;spanDom.classList.add("UMyChart_DrawTool_Span");tdDom.appendChild(spanDom);var data={Item:item,TD:tdDom,Span:spanDom};if(item.Type==2&&item.Data.ID==JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID)//颜色
|
|
14873
|
-
{spanDom.style['color']=this.LineColor;}tdDom.onmousedown=function(e){_this88.OnClickItem(e,data);};//点击
|
|
14875
|
+
this.AryDivChart.push(data);};this.OnClickItem=function(e,data){console.log('[JSDialogDrawTool::OnClickChartItem] ',data);if(!data.Item||!data.Item.Data)return;var type=data.Item.Type;var id=data.Item.Data.ID;if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID){this.OnChangeLineColor(data);}else if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_DELETE_ALL_DRAW_CHART_ID){this.DeleteAllChart();}else if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_ERASE_DRAW_CHART_ID){this.ClearAllSelectedChart();this.ClearCurrnetDrawPicture();this.EnableEraseChart(true);}else if(type==1&&id==JS_DRAWTOOL_MENU_ID.CMD_SELECTED_ID){this.ClearAllSelectedChart();this.ClearCurrnetDrawPicture();this.EnableEraseChart(false);}else if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_CROSS_PERIOD_ID){this.EnableCrossPeriod(data);}else if(type==2&&id==JS_DRAWTOOL_MENU_ID.CMD_ENABLE_MAGNET_ID){this.ChangeMagnet(data);}else if(type==0){this.ClearAllSelectedChart();this.EnableEraseChart(false);data.Span.classList.remove("UMyChart_DrawTool_Span");data.Span.classList.add("UMyChart_DrawTool_Span_Selected");this.CreateDrawPicture(data);}};//清空选中状态
|
|
14876
|
+
this.ClearAllSelectedChart=function(){for(var i=0;i<this.AryDivChart.length;++i){var item=this.AryDivChart[i];if(item.Item.Type==2)continue;item.Span.classList.remove("UMyChart_DrawTool_Span_Selected");item.Span.classList.add("UMyChart_DrawTool_Span");}};this.EnableCrossPeriod=function(data){if(!this.HQChart)return;if(!this.HQChart.ChartDrawStorage)return;this.HQChart.ChartDrawStorage.EnableCrossPeriod=!this.HQChart.ChartDrawStorage.EnableCrossPeriod;var enable=this.HQChart.ChartDrawStorage.EnableCrossPeriod;if(enable){data.Span.classList.remove("UMyChart_DrawTool_Span");data.Span.classList.add("UMyChart_DrawTool_Span_Selected");}else{data.Span.classList.remove("UMyChart_DrawTool_Span_Selected");data.Span.classList.add("UMyChart_DrawTool_Span");}};this.CreateToolGroup=function(tbody){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Group_Tr';tbody.appendChild(trDom);var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Group_Td";tdDom.innerText=this.ToolConfig.Title;tdDom.colSpan=this.ColumnCount;trDom.appendChild(tdDom);var chartCount=this.ToolConfig.AryTool.length;for(var i=0,j=0;i<chartCount;){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Tr';for(j=0;j<this.ColumnCount&&i<chartCount;++j,++i){var item=this.ToolConfig.AryTool[i];this.CreateToolItem(item,trDom);}tbody.appendChild(trDom);}};this.CreateToolItem=function(item,trDom){var _this88=this;var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Td";tdDom.title=item.Title;trDom.appendChild(tdDom);var spanDom=document.createElement("span");spanDom.className=item.ClassName;spanDom.classList.add("UMyChart_DrawTool_Span");tdDom.appendChild(spanDom);var data={Item:item,TD:tdDom,Span:spanDom};if(item.Type==2&&item.Data.ID==JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID)//颜色
|
|
14877
|
+
{spanDom.style['color']=this.LineColor;}else if(item.Type==2&&item.Data.ID==JS_DRAWTOOL_MENU_ID.CMD_CROSS_PERIOD_ID){if(this.HQChart&&this.HQChart.ChartDrawStorage&&this.HQChart.ChartDrawStorage.EnableCrossPeriod){data.Span.classList.remove("UMyChart_DrawTool_Span");data.Span.classList.add("UMyChart_DrawTool_Span_Selected");}}tdDom.onmousedown=function(e){_this88.OnClickItem(e,data);};//点击
|
|
14874
14878
|
this.AryDivChart.push(data);};this.OnChangeLineColor=function(data){++this.LineColorIndex;var index=this.LineColorIndex%this.RandomLineColor.length;this.LineColor=this.RandomLineColor[index];data.Span.style['color']=this.LineColor;};//清空所有画图工具
|
|
14875
14879
|
this.DeleteAllChart=function(){if(!this.HQChart)return;this.HQChart.ClearChartDrawPicture();};this.SetEraseChartButtonStatus=function(enable){for(var i=0;i<this.AryDivChart.length;++i){var item=this.AryDivChart[i];if(item.Item.Type==2&&item.Item.Data&&item.Item.Data.ID==JS_DRAWTOOL_MENU_ID.CMD_ERASE_DRAW_CHART_ID){if(enable){if(item.Span.classList.contains("UMyChart_DrawTool_Span")){item.Span.classList.replace("UMyChart_DrawTool_Span","UMyChart_DrawTool_Span_Selected");}}else{if(item.Span.classList.contains("UMyChart_DrawTool_Span_Selected")){item.Span.classList.replace("UMyChart_DrawTool_Span_Selected","UMyChart_DrawTool_Span");}}break;}}};this.EnableEraseChart=function(enable){if(!this.HQChart)return;if(this.HQChart.EnableEraseChartDrawPicture==enable)return;this.HQChart.EnableEraseChartDrawPicture=enable;this.SetEraseChartButtonStatus(enable);};this.ChangeMagnet=function(data){if(!this.HQChart)return;var enable=true;if(this.HQChart.ChartDrawOption.Magnet){var item=this.HQChart.ChartDrawOption.Magnet;var enable=!item.Enable;}if(enable){this.HQChart.SetChartDrawOption({Magnet:{Enable:enable,Type:0}});data.Span.classList.remove("UMyChart_DrawTool_Span");data.Span.classList.add("UMyChart_DrawTool_Span_Selected");}else{this.HQChart.SetChartDrawOption({Magnet:{Enable:false}});data.Span.classList.remove("UMyChart_DrawTool_Span_Selected");data.Span.classList.add("UMyChart_DrawTool_Span");}};this.CreateDrawPicture=function(data){var _this89=this;if(!this.HQChart)return null;var option={LineColor:this.LineColor,//线段颜色
|
|
14876
14880
|
LineWidth:this.LineWidth,//线段宽度
|
|
@@ -15332,7 +15336,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
15332
15336
|
this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
15333
15337
|
* 版本信息输出
|
|
15334
15338
|
*
|
|
15335
|
-
*/var HQCHART_VERSION="1.1.
|
|
15339
|
+
*/var HQCHART_VERSION="1.1.15050";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();//把给外界调用的方法暴露出来
|
|
15336
15340
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
15337
15341
|
// BaseIndex:BaseIndex,
|
|
15338
15342
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -29,6 +29,8 @@ var JS_DRAWTOOL_MENU_ID=
|
|
|
29
29
|
CMD_ZOOM_OUT_FONT_ID:12, //字体缩小
|
|
30
30
|
CMD_MODIFY_TEXT_ID:13, //随机生成文字内容
|
|
31
31
|
CMD_ADVANCED_SETTING_ID:14, //高级设置
|
|
32
|
+
|
|
33
|
+
CMD_CROSS_PERIOD_ID:15, //跨周期
|
|
32
34
|
};
|
|
33
35
|
|
|
34
36
|
function JSDialogDrawTool()
|
|
@@ -151,6 +153,7 @@ function JSDialogDrawTool()
|
|
|
151
153
|
AryTool:
|
|
152
154
|
[
|
|
153
155
|
{ Title:"选中", ClassName:'hqchart_drawtool icon-arrow', Type:1, Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_SELECTED_ID} },
|
|
156
|
+
{ Title:"跨周期", ClassName: 'hqchart_drawtool icon-kuazhouqi', Type:2, Data:{ ID:JS_DRAWTOOL_MENU_ID.CMD_CROSS_PERIOD_ID }},
|
|
154
157
|
{ Title:'尺子', ClassName: 'hqchart_drawtool icon-ruler', Type:0, Data:{ ID:"尺子" } },
|
|
155
158
|
{ Title:"磁铁", ClassName:'hqchart_drawtool icon-xifu', Type:2, Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_ENABLE_MAGNET_ID} },
|
|
156
159
|
{ Title:"点击切换颜色", ClassName: 'hqchart_drawtool icon-fangkuai', Type:2, Data:{ ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID }},
|
|
@@ -310,12 +313,15 @@ function JSDialogDrawTool()
|
|
|
310
313
|
this.ClearCurrnetDrawPicture();
|
|
311
314
|
this.EnableEraseChart(false);
|
|
312
315
|
}
|
|
316
|
+
else if (type==2 && id==JS_DRAWTOOL_MENU_ID.CMD_CROSS_PERIOD_ID)
|
|
317
|
+
{
|
|
318
|
+
this.EnableCrossPeriod(data);
|
|
319
|
+
}
|
|
313
320
|
else if (type==2 && id==JS_DRAWTOOL_MENU_ID.CMD_ENABLE_MAGNET_ID)
|
|
314
321
|
{
|
|
315
322
|
this.ChangeMagnet(data);
|
|
316
323
|
}
|
|
317
324
|
else if (type==0)
|
|
318
|
-
|
|
319
325
|
{
|
|
320
326
|
this.ClearAllSelectedChart();
|
|
321
327
|
this.EnableEraseChart(false);
|
|
@@ -338,6 +344,26 @@ function JSDialogDrawTool()
|
|
|
338
344
|
}
|
|
339
345
|
}
|
|
340
346
|
|
|
347
|
+
this.EnableCrossPeriod=function(data)
|
|
348
|
+
{
|
|
349
|
+
if (!this.HQChart) return;
|
|
350
|
+
if (!this.HQChart.ChartDrawStorage) return;
|
|
351
|
+
|
|
352
|
+
this.HQChart.ChartDrawStorage.EnableCrossPeriod=!this.HQChart.ChartDrawStorage.EnableCrossPeriod;
|
|
353
|
+
var enable=this.HQChart.ChartDrawStorage.EnableCrossPeriod;
|
|
354
|
+
|
|
355
|
+
if (enable)
|
|
356
|
+
{
|
|
357
|
+
data.Span.classList.remove("UMyChart_DrawTool_Span");
|
|
358
|
+
data.Span.classList.add("UMyChart_DrawTool_Span_Selected");
|
|
359
|
+
}
|
|
360
|
+
else
|
|
361
|
+
{
|
|
362
|
+
data.Span.classList.remove("UMyChart_DrawTool_Span_Selected");
|
|
363
|
+
data.Span.classList.add("UMyChart_DrawTool_Span");
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
341
367
|
this.CreateToolGroup=function(tbody)
|
|
342
368
|
{
|
|
343
369
|
var trDom=document.createElement("tr");
|
|
@@ -383,6 +409,14 @@ function JSDialogDrawTool()
|
|
|
383
409
|
{
|
|
384
410
|
spanDom.style['color']=this.LineColor;
|
|
385
411
|
}
|
|
412
|
+
else if (item.Type==2 && item.Data.ID==JS_DRAWTOOL_MENU_ID.CMD_CROSS_PERIOD_ID)
|
|
413
|
+
{
|
|
414
|
+
if (this.HQChart && this.HQChart.ChartDrawStorage && this.HQChart.ChartDrawStorage.EnableCrossPeriod)
|
|
415
|
+
{
|
|
416
|
+
data.Span.classList.remove("UMyChart_DrawTool_Span");
|
|
417
|
+
data.Span.classList.add("UMyChart_DrawTool_Span_Selected");
|
|
418
|
+
}
|
|
419
|
+
}
|
|
386
420
|
|
|
387
421
|
tdDom.onmousedown=(e)=> { this.OnClickItem(e, data); }; //点击
|
|
388
422
|
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -1186,11 +1186,19 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1186
1186
|
|
|
1187
1187
|
if (i==0)
|
|
1188
1188
|
{
|
|
1189
|
-
if (IFrameSplitOperator.IsNumber(item.RightTextFormat))
|
|
1189
|
+
if (IFrameSplitOperator.IsNumber(item.RightTextFormat)) //废弃
|
|
1190
1190
|
{
|
|
1191
|
-
subFrame.YSplitOperator.
|
|
1191
|
+
subFrame.YSplitOperator.RightTextConfig.Format=item.RightTextFormat;
|
|
1192
1192
|
if (item.RightTextFormat==2) subFrame.MultiTextFormat=1;
|
|
1193
1193
|
}
|
|
1194
|
+
|
|
1195
|
+
if (item.RightText) //主图右侧坐标设置
|
|
1196
|
+
{
|
|
1197
|
+
var subItem=item.RightText;
|
|
1198
|
+
if (IFrameSplitOperator.IsNumber(subItem.Format)) subFrame.YSplitOperator.RightTextConfig.Format=subItem.Format;
|
|
1199
|
+
if (subItem.Format==2) subFrame.MultiTextFormat=1;
|
|
1200
|
+
if (subItem.Percentage && IFrameSplitOperator.IsNumber(subItem.Percentage.Dec)) subFrame.YSplitOperator.RightTextConfig.Percentage.Dec=subItem.Percentage.Dec;
|
|
1201
|
+
}
|
|
1194
1202
|
}
|
|
1195
1203
|
}
|
|
1196
1204
|
|
|
@@ -1442,6 +1450,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1442
1450
|
{
|
|
1443
1451
|
var item=option.Frame[i];
|
|
1444
1452
|
if (!chart.Frame.SubFrame[i]) continue;
|
|
1453
|
+
var subFrame=chart.Frame.SubFrame[i].Frame;
|
|
1445
1454
|
if (item.SplitCount) chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;
|
|
1446
1455
|
if (item.StringFormat) chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;
|
|
1447
1456
|
if (IFrameSplitOperator.IsNumber(item.SplitType))
|
|
@@ -1461,7 +1470,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1461
1470
|
}
|
|
1462
1471
|
if (item.Height>=0) chart.Frame.SubFrame[i].Height = item.Height;
|
|
1463
1472
|
if (item.Custom) chart.Frame.SubFrame[i].Frame.YSplitOperator.Custom=item.Custom;
|
|
1464
|
-
|
|
1473
|
+
|
|
1465
1474
|
if (IFrameSplitOperator.IsNumber(item.TitleHeight)) chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
|
|
1466
1475
|
if (IFrameSplitOperator.IsNumber(item.BorderLine)) chart.Frame.SubFrame[i].Frame.BorderLine=item.BorderLine;
|
|
1467
1476
|
if (IFrameSplitOperator.IsBool(item.EnableRemoveZero)) chart.Frame.SubFrame[i].Frame.YSplitOperator.EnableRemoveZero=item.EnableRemoveZero;
|
|
@@ -1469,6 +1478,11 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1469
1478
|
if (IFrameSplitOperator.IsBool(item.IsShowXLine)) chart.Frame.SubFrame[i].Frame.IsShowXLine=item.IsShowXLine;
|
|
1470
1479
|
if (IFrameSplitOperator.IsBool(item.IsShowYLine)) chart.Frame.SubFrame[i].Frame.IsShowYLine=item.IsShowYLine;
|
|
1471
1480
|
if (IFrameSplitOperator.IsNumber(item.YTextBaseline)) chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;
|
|
1481
|
+
|
|
1482
|
+
if (i==0)
|
|
1483
|
+
{
|
|
1484
|
+
if (IFrameSplitOperator.IsNumber(item.RightTextFormat)) subFrame.YSplitOperator.RightTextConfig.Format=item.RightTextFormat;
|
|
1485
|
+
}
|
|
1472
1486
|
}
|
|
1473
1487
|
}
|
|
1474
1488
|
|
|
@@ -10032,6 +10046,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10032
10046
|
|
|
10033
10047
|
drawPicture.PointMagnetKLine();
|
|
10034
10048
|
drawPicture.Status=10; //完成
|
|
10049
|
+
drawPicture.Period=this.Period;
|
|
10035
10050
|
drawPicture.PointToValue();
|
|
10036
10051
|
|
|
10037
10052
|
if (this.ChartDrawStorage) this.ChartDrawStorage.SaveDrawData(drawPicture);
|
|
@@ -56781,7 +56796,8 @@ function FrameSplitMinutePriceY()
|
|
|
56781
56796
|
this.DefaultSplitType=0;
|
|
56782
56797
|
this.LimitPrice; //{Max: Min:} 涨跌停价
|
|
56783
56798
|
this.Custom;
|
|
56784
|
-
this.RightTextFormat=0; //右边刻度显示模式 0=百分比 1=价格 2=价格 | 百分比
|
|
56799
|
+
//this.RightTextFormat=0; //右边刻度显示模式 0=百分比 1=价格 2=价格 | 百分比 !!! 废弃, 用下面的格式
|
|
56800
|
+
this.RightTextConfig={ Percentage:{ Dec:2 }, Format:0 } //Percentage:{ Dec: 百分比小数位数 }, Format: 0=百分比 1=价格 2=价格 | 百分比
|
|
56785
56801
|
|
|
56786
56802
|
this.BeforeOpenData;
|
|
56787
56803
|
this.IsBeforeData=false;
|
|
@@ -57243,8 +57259,10 @@ function FrameSplitMinutePriceY()
|
|
|
57243
57259
|
|
|
57244
57260
|
if (this.IsShowRightText)
|
|
57245
57261
|
{
|
|
57246
|
-
|
|
57247
|
-
|
|
57262
|
+
var value=0;
|
|
57263
|
+
var dec=this.RightTextConfig.Percentage.Dec;
|
|
57264
|
+
if (this.RightTextConfig.Format==1) coordinate.Message[1]=strPrice;
|
|
57265
|
+
else coordinate.Message[1]=`${value.toFixed(dec)}%`; //百分比
|
|
57248
57266
|
}
|
|
57249
57267
|
|
|
57250
57268
|
this.Frame.HorizontalInfo.push(coordinate);
|
|
@@ -57330,15 +57348,17 @@ function FrameSplitMinutePriceY()
|
|
|
57330
57348
|
var per=(price/this.YClose-1)*100;
|
|
57331
57349
|
if (per>0) coordinate.TextColor=g_JSChartResource.UpTextColor;
|
|
57332
57350
|
else if (per<0) coordinate.TextColor=g_JSChartResource.DownTextColor;
|
|
57333
|
-
|
|
57351
|
+
|
|
57352
|
+
var dec=this.RightTextConfig.Percentage.Dec;
|
|
57353
|
+
var strPer=`${IFrameSplitOperator.FormatValueString(per,dec)}%`;
|
|
57334
57354
|
|
|
57335
57355
|
if (this.IsShowRightText)
|
|
57336
57356
|
{
|
|
57337
|
-
if (this.
|
|
57357
|
+
if (this.RightTextConfig.Format==1)
|
|
57338
57358
|
{
|
|
57339
57359
|
coordinate.Message[1]=strPrice;
|
|
57340
57360
|
}
|
|
57341
|
-
else if (this.
|
|
57361
|
+
else if (this.RightTextConfig.Format==2) //价格/百分比
|
|
57342
57362
|
{
|
|
57343
57363
|
coordinate.Message[1]=[ {Text:strPrice}, {Text:"/"}, { Text:strPer} ];
|
|
57344
57364
|
}
|
|
@@ -64636,7 +64656,7 @@ function IChartDrawPicture()
|
|
|
64636
64656
|
}
|
|
64637
64657
|
}
|
|
64638
64658
|
|
|
64639
|
-
this.
|
|
64659
|
+
this.GetKData=function()
|
|
64640
64660
|
{
|
|
64641
64661
|
if (!this.Frame) return null;
|
|
64642
64662
|
var data=this.Frame.Data;
|
|
@@ -64648,7 +64668,7 @@ function IChartDrawPicture()
|
|
|
64648
64668
|
//周期变动 X重新定位
|
|
64649
64669
|
this.ChangePeriod=function(period)
|
|
64650
64670
|
{
|
|
64651
|
-
var kData=this.
|
|
64671
|
+
var kData=this.GetKData();
|
|
64652
64672
|
if (!kData) return;
|
|
64653
64673
|
|
|
64654
64674
|
var aryDateTime=[];
|
|
@@ -64718,7 +64738,7 @@ function IChartDrawPicture()
|
|
|
64718
64738
|
|
|
64719
64739
|
this.UpdateXValue=function() //通过datetime更新x的索引
|
|
64720
64740
|
{
|
|
64721
|
-
var data=this.
|
|
64741
|
+
var data=this.GetKData();
|
|
64722
64742
|
if (!data) return false;
|
|
64723
64743
|
|
|
64724
64744
|
var aryDateTime=[];
|
|
@@ -76527,8 +76547,8 @@ function ChartDrawStorage()
|
|
|
76527
76547
|
{
|
|
76528
76548
|
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: symbol, drawPicture, data', symbol, drawPicture,data);
|
|
76529
76549
|
var stockItem={ Symbol:symbol, MapPicture:new Map() } ;
|
|
76530
|
-
stockItem.set(data.Guid, data);
|
|
76531
|
-
this.DrawDataV2.set(symbol,
|
|
76550
|
+
stockItem.MapPicture.set(data.Guid, data);
|
|
76551
|
+
this.DrawDataV2.set(symbol,stockItem);
|
|
76532
76552
|
}
|
|
76533
76553
|
|
|
76534
76554
|
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.DrawDataV2);
|
|
@@ -54,6 +54,12 @@
|
|
|
54
54
|
<div class="content unicode" style="display: block;">
|
|
55
55
|
<ul class="icon_lists dib-box">
|
|
56
56
|
|
|
57
|
+
<li class="dib">
|
|
58
|
+
<span class="icon hqchart_drawtool"></span>
|
|
59
|
+
<div class="name">跨周期</div>
|
|
60
|
+
<div class="code-name">&#xe647;</div>
|
|
61
|
+
</li>
|
|
62
|
+
|
|
57
63
|
<li class="dib">
|
|
58
64
|
<span class="icon hqchart_drawtool"></span>
|
|
59
65
|
<div class="name">chart-long-position</div>
|
|
@@ -516,9 +522,9 @@
|
|
|
516
522
|
<pre><code class="language-css"
|
|
517
523
|
>@font-face {
|
|
518
524
|
font-family: 'hqchart_drawtool';
|
|
519
|
-
src: url('iconfont.woff2?t=
|
|
520
|
-
url('iconfont.woff?t=
|
|
521
|
-
url('iconfont.ttf?t=
|
|
525
|
+
src: url('iconfont.woff2?t=1753977984776') format('woff2'),
|
|
526
|
+
url('iconfont.woff?t=1753977984776') format('woff'),
|
|
527
|
+
url('iconfont.ttf?t=1753977984776') format('truetype');
|
|
522
528
|
}
|
|
523
529
|
</code></pre>
|
|
524
530
|
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
|
|
@@ -544,6 +550,15 @@
|
|
|
544
550
|
<div class="content font-class">
|
|
545
551
|
<ul class="icon_lists dib-box">
|
|
546
552
|
|
|
553
|
+
<li class="dib">
|
|
554
|
+
<span class="icon hqchart_drawtool icon-kuazhouqi"></span>
|
|
555
|
+
<div class="name">
|
|
556
|
+
跨周期
|
|
557
|
+
</div>
|
|
558
|
+
<div class="code-name">.icon-kuazhouqi
|
|
559
|
+
</div>
|
|
560
|
+
</li>
|
|
561
|
+
|
|
547
562
|
<li class="dib">
|
|
548
563
|
<span class="icon hqchart_drawtool icon-chart-long-position"></span>
|
|
549
564
|
<div class="name">
|
|
@@ -1237,6 +1252,14 @@
|
|
|
1237
1252
|
<div class="content symbol">
|
|
1238
1253
|
<ul class="icon_lists dib-box">
|
|
1239
1254
|
|
|
1255
|
+
<li class="dib">
|
|
1256
|
+
<svg class="icon svg-icon" aria-hidden="true">
|
|
1257
|
+
<use xlink:href="#icon-kuazhouqi"></use>
|
|
1258
|
+
</svg>
|
|
1259
|
+
<div class="name">跨周期</div>
|
|
1260
|
+
<div class="code-name">#icon-kuazhouqi</div>
|
|
1261
|
+
</li>
|
|
1262
|
+
|
|
1240
1263
|
<li class="dib">
|
|
1241
1264
|
<svg class="icon svg-icon" aria-hidden="true">
|
|
1242
1265
|
<use xlink:href="#icon-chart-long-position"></use>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
@font-face {
|
|
2
2
|
font-family: "hqchart_drawtool"; /* Project id 4529603 */
|
|
3
|
-
src: url('iconfont.woff2?t=
|
|
4
|
-
url('iconfont.woff?t=
|
|
5
|
-
url('iconfont.ttf?t=
|
|
3
|
+
src: url('iconfont.woff2?t=1753977984776') format('woff2'),
|
|
4
|
+
url('iconfont.woff?t=1753977984776') format('woff'),
|
|
5
|
+
url('iconfont.ttf?t=1753977984776') format('truetype');
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
.hqchart_drawtool {
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
-moz-osx-font-smoothing: grayscale;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
.icon-kuazhouqi:before {
|
|
17
|
+
content: "\e647";
|
|
18
|
+
}
|
|
19
|
+
|
|
16
20
|
.icon-chart-long-position:before {
|
|
17
21
|
content: "\e73a";
|
|
18
22
|
}
|