hqchart 1.1.13370 → 1.1.13381
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 +25 -15
- package/package.json +1 -1
- package/src/jscommon/umychart.DialogDrawTool.js +82 -11
- package/src/jscommon/umychart.js +51 -17
- package/src/jscommon/umychart.resource/css/tools.css +21 -0
- 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 +93 -29
- package/src/jscommon/umychart.version.js +42 -12
- package/src/jscommon/umychart.vue/umychart.vue.js +175 -40
package/lib/umychart.vue.js
CHANGED
|
@@ -1293,7 +1293,7 @@ this.PasteChartDrawPicture=function(data,frameID,option){if(this.JSChartContaine
|
|
|
1293
1293
|
this.ReloadResource=function(option){if(this.JSChartContainer&&typeof this.JSChartContainer.ReloadResource=='function'){JSConsole.Chart.Log('[JSChart:ReloadResource] ');this.JSChartContainer.ReloadResource(option);}};this.EnableSplashScreen=function(enable,option){if(this.JSChartContainer&&typeof this.JSChartContainer.EnableSplashScreen=='function'){JSConsole.Chart.Log('[JSChart:EnableSplashScreen] ');this.JSChartContainer.EnableSplashScreen(enable,option);}};this.Draw=function(){if(this.JSChartContainer&&typeof this.JSChartContainer.Draw=='function'){JSConsole.Chart.Log('[JSChart:Draw] ');this.JSChartContainer.Draw();}};this.SetFocus=function(){if(this.JSChartContainer&&typeof this.JSChartContainer.SetFocus=='function'){JSConsole.Chart.Log('[JSChart:SetFocus] ');this.JSChartContainer.SetFocus();}};//数据导出, option={ Start:{ Date, Time:可选}, End:{Date: Time:可选} }
|
|
1294
1294
|
this.ExportData=function(option){if(this.JSChartContainer&&typeof this.JSChartContainer.ExportData=='function'){JSConsole.Chart.Log('[JSChart:ExportData] ');return this.JSChartContainer.ExportData(option);}};this.ChangePriceGap=function(option){if(this.JSChartContainer&&typeof this.JSChartContainer.ChangePriceGap=='function'){JSConsole.Chart.Log('[JSChart:ChangePriceGap] ');return this.JSChartContainer.ChangePriceGap(option);}};this.PopupMenuByTab=function(menuData,rtTab){if(this.JSChartContainer&&typeof this.JSChartContainer.PopupMenuByTab=='function'){JSConsole.Chart.Log('[JSChart:PopupMenuByTab] ');return this.JSChartContainer.PopupMenuByTab(menuData,rtTab);}};this.PopupMenuByDrapdown=function(menuData,rtButton){if(this.JSChartContainer&&typeof this.JSChartContainer.PopupMenuByDrapdown=='function'){JSConsole.Chart.Log('[JSChart:PopupMenuByDrapdown] ');return this.JSChartContainer.PopupMenuByDrapdown(menuData,rtButton);}};}JSChart.LastVersion=null;//最新的版本号
|
|
1295
1295
|
JSChart.EnableCanvasWillReadFrequently=false;//https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently
|
|
1296
|
-
JSChart.CorssCursorCanvasKey="hqchart_corsscursor";//初始化
|
|
1296
|
+
JSChart.CorssCursorCanvasKey="hqchart_corsscursor";JSChart.TooltipCursorCanvasKey="hqchart_tooltip";//初始化
|
|
1297
1297
|
JSChart.Init=function(divElement,bScreen,bCacheCanvas){var jsChartControl=new JSChart(divElement,bScreen,bCacheCanvas);jsChartControl.OnSize();return jsChartControl;};JSChart.SetDomain=function(domain,cacheDomain){if(domain)g_JSChartResource.Domain=domain;if(cacheDomain)g_JSChartResource.CacheDomain=cacheDomain;};JSChart.SetPyIndexDomain=function(domain)//设置py指标计算api域名
|
|
1298
1298
|
{if(domain)g_JSChartResource.PyIndexDomain=domain;};//自定义风格
|
|
1299
1299
|
JSChart.SetStyle=function(option){if(option)g_JSChartResource.SetStyle(option);};//value { EN:'', CH:'' }
|
|
@@ -1446,7 +1446,8 @@ OP_SET_SELECTRECT:12,//区间选择
|
|
|
1446
1446
|
OP_SET_SUB_SELECTRECT:13,//区间选择子区域
|
|
1447
1447
|
OP_CORSSCURSOR_GOTO:14,//十字光标移动某一个时刻点
|
|
1448
1448
|
OP_SCROOLBAR_SLIDER_CHANGED:15,//滑块变动
|
|
1449
|
-
OP_GOTO:16
|
|
1449
|
+
OP_GOTO:16,//移动到某一个天或某一个分钟
|
|
1450
|
+
OP_GOTO_BY_DATAINDEX:17//的移动到某一个数据起始位置
|
|
1450
1451
|
};var JSCHART_DRAG_ID={DISABLE_DRAG_ID:0,CLICK_TOUCH_MODE_ID:3//长按十字光标显示保留/点击十字光标消失 (使用TouchStatus)
|
|
1451
1452
|
};var JSCHART_BUTTON_ID={CLOSE_BEFOREOPEN_ID:1,//关闭集合竞价
|
|
1452
1453
|
CLOSE_OVERLAY_INDEX:2,//关闭叠加指标
|
|
@@ -2191,9 +2192,9 @@ this.FrameData={SubFrameItem:null};//窗口框架信息
|
|
|
2191
2192
|
this.DrawPicture={BGColor:g_JSChartResource.DrawPicture.XYCoordinate.BGColor,TextBGColor:g_JSChartResource.DrawPicture.XYCoordinate.TextBGColor,TextColor:g_JSChartResource.DrawPicture.XYCoordinate.TextColor,Font:g_JSChartResource.DrawPicture.XYCoordinate.Font};this.IChartFramePainting_ReloadResource=this.ReloadResource;this.ReloadResource=function(resource){this.IChartFramePainting_ReloadResource(resource);if(!resource){this.ToolbarButtonStyle=g_JSChartResource.ToolbarButtonStyle;this.CloseWindowButton=CloneData(g_JSChartResource.Buttons.CloseWindow);this.OverlayIndexButton=CloneData(g_JSChartResource.Buttons.OverlayIndex);this.ChangeIndexButton=CloneData(g_JSChartResource.Buttons.ChangeIndex);this.ModifyIndexParamButton=CloneData(g_JSChartResource.Buttons.ModifyIndexParam);this.MaxMinWindowButton=CloneData(g_JSChartResource.Buttons.MaxMinWindow);this.TitleWindowButton=CloneData(g_JSChartResource.Buttons.TitleWindow);this.ButtonTooltip=CloneData(g_JSChartResource.Buttons.Tooltip);}};this.DrawFrame=function(){if(this.XPointCount>0){var dInterval=this.ChartBorder.GetWidth()/(6*this.XPointCount);//分6份, 数据4 间距2
|
|
2192
2193
|
this.DistanceWidth=2*dInterval;this.DataWidth=4*dInterval;}this.DrawHorizontal();this.DrawVertical();};this.DrawTitleButton=function(aryButton,moveonPoint,mouseStatus){var border=this.GetBorder();if(this.IsHScreen){var y=border.Bottom-3;var x=border.RightTitle+this.ChartBorder.TitleHeight/2;this.Canvas.save();this.Canvas.translate(x,y);this.Canvas.rotate(90*Math.PI/180);//底部开始画
|
|
2193
2194
|
var yButton=0,xButton=0,bottom=0;for(var i=0;i<aryButton.length;++i){var item=aryButton[i];var size=item.Style.Size;var xButton=bottom-size-item.Style.MerginLeft;var font=size+'px '+item.Style.Family;var color=item.Style.Color;this.Canvas.fillStyle=color;this.Canvas.font=font;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.fillText(item.Style.Text,xButton,0);var rtButton={Left:x-size/2,Right:x+size/2,Bottom:y,Width:size,Height:size+item.Style.MerginLeft};rtButton.Top=rtButton.Bottom-size-item.Style.MerginLeft;this.Buttons.push({ID:item.ID,Rect:rtButton});bottom=xButton;y=rtButton.Top;}this.Canvas.restore();}else{var right=border.Right-3;var left=border.Left;var yButton=border.Top+this.ChartBorder.TitleHeight/2;//右往左绘制
|
|
2194
|
-
for(var i=0;i<aryButton.length;++i){var item=aryButton[i];var size=item.Style.Size;var xBotton=right-size-item.Style.MerginLeft;var font=size+'px '+item.Style.Family;var rtButton={Left:xBotton,Top:yButton-size/2,Right:xBotton+size+item.Style.MerginLeft,Bottom:yButton+size/2,Width:size+item.Style.MerginLeft,Height:size};var color=item.Style.Color;if(moveonPoint&&moveonPoint.X>=rtButton.Left&&moveonPoint.X<rtButton.Right&&moveonPoint.Y>=rtButton.Top&&moveonPoint.Y<=rtButton.Bottom){color=item.Style.MoveOnColor;if(mouseStatus)mouseStatus.MouseOnToolbar={Rect:rtButton,Item:item,Frame:this,Point:{X:moveonPoint.X,Y:moveonPoint.Y}};}this.Canvas.fillStyle=color;this.Canvas.font=font;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.fillText(item.Style.Text,xBotton,yButton);this.Buttons.push({ID:item.ID,Rect:rtButton});right=xBotton;}}};this.DrawToolbarTooltip=function(mouseOnToolbar){if(!mouseOnToolbar)return;var border=this.GetBorder();var text=null;if(mouseOnToolbar.Item.TooltipText){text=mouseOnToolbar.Item.TooltipText;}else{var key='Toolbar-'+mouseOnToolbar.Item.ID;text=g_JSChartLocalization.GetText(key,0);}if(!text)return;var pixelRatio=GetDevicePixelRatio();var xCenter=mouseOnToolbar.Rect.Left+mouseOnToolbar.Rect.Width/2;
|
|
2195
|
-
{var roundRadius=this.ButtonTooltip.BorderRadius;
|
|
2196
|
-
|
|
2195
|
+
for(var i=0;i<aryButton.length;++i){var item=aryButton[i];var size=item.Style.Size;var xBotton=right-size-item.Style.MerginLeft;var font=size+'px '+item.Style.Family;var rtButton={Left:xBotton,Top:yButton-size/2,Right:xBotton+size+item.Style.MerginLeft,Bottom:yButton+size/2,Width:size+item.Style.MerginLeft,Height:size};var color=item.Style.Color;if(moveonPoint&&moveonPoint.X>=rtButton.Left&&moveonPoint.X<rtButton.Right&&moveonPoint.Y>=rtButton.Top&&moveonPoint.Y<=rtButton.Bottom){color=item.Style.MoveOnColor;if(mouseStatus)mouseStatus.MouseOnToolbar={Rect:rtButton,Item:item,Frame:this,Point:{X:moveonPoint.X,Y:moveonPoint.Y}};}this.Canvas.fillStyle=color;this.Canvas.font=font;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.fillText(item.Style.Text,xBotton,yButton);this.Buttons.push({ID:item.ID,Rect:rtButton});right=xBotton;}}};this.DrawToolbarTooltip=function(mouseOnToolbar){if(!mouseOnToolbar)return;var border=this.GetBorder();var text=null;if(mouseOnToolbar.Item.TooltipText){text=mouseOnToolbar.Item.TooltipText;}else{var key='Toolbar-'+mouseOnToolbar.Item.ID;text=g_JSChartLocalization.GetText(key,0);}if(!text)return;var pixelRatio=GetDevicePixelRatio();var canvas=this.Canvas;if(this.GetExtraCanvas){var finder=this.GetExtraCanvas(JSChart.TooltipCursorCanvasKey);if(finder)canvas=finder.Canvas;}var xCenter=mouseOnToolbar.Rect.Left+mouseOnToolbar.Rect.Width/2;canvas.font=this.ButtonTooltip.Font;canvas.textAlign="left";canvas.textBaseline="bottom";var mergin=this.ButtonTooltip.Mergin;var textWidth=canvas.measureText(text).width+mergin.Left+mergin.Right;var textHeight=this.GetFontHeight();var bgHeight=textHeight+mergin.Top+mergin.Bottom;if(mouseOnToolbar.ID=="TitleButton"){var x=mouseOnToolbar.Point.X;var y=mouseOnToolbar.Point.Y+20;}else if(JSCHART_BUTTON_ID.CLOSE_BEFOREOPEN_ID==mouseOnToolbar.Item.ID){var x=mouseOnToolbar.Rect.Right+5;var y=mouseOnToolbar.Rect.Top;}else if(JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE==mouseOnToolbar.Item.ID||JSCHART_BUTTON_ID.DRAW_PICTURE_SETTING==mouseOnToolbar.Item.ID||mouseOnToolbar.Item.ID>=JSCHART_BUTTON_ID.DRAW_PICTURE_BUTTON_1&&mouseOnToolbar.Item.ID<=JSCHART_BUTTON_ID.DRAW_PICTURE_BUTTON_18){var x=mouseOnToolbar.Point.X;var y=mouseOnToolbar.Point.Y+20;if(x+textWidth>=border.ChartWidth)x=border.ChartWidth-textWidth-2;}else{var x=xCenter-textWidth/2;var y=border.Top-bgHeight;if(y<0)y=border.TopEx+1;if(x+textWidth>border.ChartWidth)x=border.ChartWidth-textWidth-2;}if(IFrameSplitOperator.IsNumber(this.ButtonTooltip.BorderRadius))//圆角
|
|
2196
|
+
{var roundRadius=this.ButtonTooltip.BorderRadius;canvas.beginPath();canvas.roundRect(ToFixedPoint(x),ToFixedPoint(y),ToFixedRect(textWidth),ToFixedRect(bgHeight),[roundRadius]);canvas.closePath();canvas.fillStyle=this.ButtonTooltip.ColorBG;canvas.fill();canvas.strokeStyle=this.ButtonTooltip.ColorBorder;canvas.stroke();canvas.fillStyle=this.ButtonTooltip.Color;canvas.fillText(text,x+mergin.Left,y+bgHeight-mergin.Bottom);}else{canvas.fillStyle=this.ButtonTooltip.ColorBG;canvas.fillRect(x,y,textWidth,bgHeight);//画一个背景色, 不然是一个黑的背景
|
|
2197
|
+
canvas.fillStyle=this.ButtonTooltip.Color;canvas.fillText(text,x+mergin.Left,y+bgHeight-mergin.Bottom);}};//isLimit 是否限制在当前坐标下
|
|
2197
2198
|
this.GetYFromData=function(value,isLimit){if(this.Logarithmic&&this.GetYLogarithmicFromData){return this.GetYLogarithmicFromData(value,isLimit);}if(isLimit===false){if(this.CoordinateType==1){var height=this.ChartBorder.GetHeightEx()*(value-this.HorizontalMin)/(this.HorizontalMax-this.HorizontalMin);return this.ChartBorder.GetTopEx()+height;}else{var height=this.ChartBorder.GetHeightEx()*(value-this.HorizontalMin)/(this.HorizontalMax-this.HorizontalMin);return this.ChartBorder.GetBottomEx()-height;}}else{if(this.CoordinateType==1){if(value<=this.HorizontalMin)return this.ChartBorder.GetTopEx();if(value>=this.HorizontalMax)return this.ChartBorder.GetBottomEx();var height=this.ChartBorder.GetHeightEx()*(value-this.HorizontalMin)/(this.HorizontalMax-this.HorizontalMin);return this.ChartBorder.GetTopEx()+height;}else{if(value<=this.HorizontalMin)return this.ChartBorder.GetBottomEx();if(value>=this.HorizontalMax)return this.ChartBorder.GetTopEx();var height=this.ChartBorder.GetHeightEx()*(value-this.HorizontalMin)/(this.HorizontalMax-this.HorizontalMin);return this.ChartBorder.GetBottomEx()-height;}}};//画Y轴
|
|
2198
2199
|
this.DrawHorizontal=function(){this.RightTextMaxWidth=0;if(!IFrameSplitOperator.IsNonEmptyArray(this.HorizontalInfo))return;if(this.ChartBorder.IsShowTitleOnly)return;var border=this.ChartBorder.GetBorder();var left=border.Left;var right=border.Right;var bottom=border.Bottom;var top=this.ChartBorder.GetTop();var borderRight=this.ChartBorder.Right;var borderLeft=this.ChartBorder.Left;var isDrawLeft=borderLeft>10&&this.IsShowYText[0]===true&&this.YTextPosition[0]!=2;var isDrawRight=borderRight>10&&this.IsShowYText[1]===true&&this.YTextPosition[1]!=2;var rightExtendLine=null;//右侧延长线
|
|
2199
2200
|
var leftExtendLine=null;//左侧延长线
|
|
@@ -6983,7 +6984,11 @@ this.Frame.SetXShowCount(showCount);hisData.DataOffset=obj.Start.Index;this.Curs
|
|
|
6983
6984
|
{if(!IFrameSplitOperator.IsNumber(obj.Date))return;var hisData=this.ChartOperator_Temp_GetHistroyData();if(!hisData)return;//数据还没有到达
|
|
6984
6985
|
var index=this.ChartOperator_GetIndex_ByDateTime(hisData,obj,this.Period,0);if(index===null){JSConsole.Chart.Log('[KLineChartContainer::ChartOperator] OP_GOTO can\'t find date='+obj.Date+' time='+obj.Time);return;}var oldXPointCount=this.Frame.SubFrame[0].Frame.XPointCount;var xPointCount=oldXPointCount;if(obj.PageSize>0)//调整一屏显示的个数
|
|
6985
6986
|
{xPointCount=obj.PageSize;}if(xPointCount!=oldXPointCount){//设置X轴显示数据个数
|
|
6986
|
-
this.Frame.SetXShowCount(xPointCount);}hisData.DataOffset=index;this.CursorIndex=0;this.LastPoint.X=null;this.LastPoint.Y=null;this.ChartOperator_Temp_Update();}else if(id==JSCHART_OPERATOR_ID.
|
|
6987
|
+
this.Frame.SetXShowCount(xPointCount);}hisData.DataOffset=index;this.CursorIndex=0;this.LastPoint.X=null;this.LastPoint.Y=null;this.ChartOperator_Temp_Update();}else if(id==JSCHART_OPERATOR_ID.OP_GOTO_BY_DATAINDEX)//{PageSize:可选, DataIndex:起始位置数据索引}
|
|
6988
|
+
{if(!IFrameSplitOperator.IsNumber(obj.DataIndex))return;var hisData=this.ChartOperator_Temp_GetHistroyData();if(!hisData)return;//数据还没有到达
|
|
6989
|
+
if(obj.DataIndex<0||obj.DataIndex>=hisData.Data.length){JSConsole.Chart.Log('[KLineChartContainer::ChartOperator] OP_GOTO_BY_DATAINDEX obj.DataIndex='+obj.DataIndex+' error.}');return;}var oldXPointCount=this.Frame.SubFrame[0].Frame.XPointCount;var xPointCount=oldXPointCount;if(obj.PageSize>0)xPointCount=obj.PageSize;//调整一屏显示的个数
|
|
6990
|
+
if(xPointCount!=oldXPointCount)this.Frame.SetXShowCount(xPointCount);//设置X轴显示数据个数
|
|
6991
|
+
hisData.DataOffset=obj.DataIndex;this.CursorIndex=0;this.LastPoint.X=null;this.LastPoint.Y=null;this.ChartOperator_Temp_Update();}else if(id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_GOTO)//移动十字光标{ Date:, Time }
|
|
6987
6992
|
{if(!IFrameSplitOperator.IsNumber(obj.Date))return;var bTime=IFrameSplitOperator.IsNumber(obj.Time);var pageInfo=this.GetChartStatus();if(!pageInfo)return;var hisData=this.ChartOperator_Temp_GetHistroyData();if(!hisData)return;//数据还没有到达
|
|
6988
6993
|
var start=hisData.DataOffset;var findIndex=-1,findItem=null,dataIndex=-1;for(var i=start,j=0;i<hisData.Data.length&&j<pageInfo.KLine.PageSize;++i,++j){var item=hisData.Data[i];if(bTime){if(item.Date==obj.Date&&item.Time==obj.Time){findItem=item;findIndex=j;dataIndex=i;break;}}else{if(item.Date==obj.Date){findItem=item;findIndex=j;dataIndex=i;break;}}}if(findIndex<0){return;}if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return false;var frame=this.Frame.SubFrame[0].Frame;var x=frame.GetXFromIndex(findIndex);var y=frame.GetYFromData(item.Close);//保存最后一次鼠标移动信息
|
|
6989
6994
|
var MoveStatus={X:x,Y:y,IsInClient:this.IsMouseOnClient(x,y)};this.LastMouseStatus.OnMouseMove=MoveStatus;this.LastMouseStatus.MoveOnPoint={X:x,Y:y};//鼠标移动的位置
|
|
@@ -7026,13 +7031,13 @@ if(this.CursorIndex+step+data.DataOffset+1>data.Data.length)//数据不够步长
|
|
|
7026
7031
|
{step=data.Data.length-1-data.DataOffset-this.CursorIndex;bMoveEnd=true;}if(this.CursorIndex+step>=xPointcount)//当前屏最右边了
|
|
7027
7032
|
{var lMoveStep=this.CursorIndex+step-(xPointcount-1);data.DataOffset+=lMoveStep;if(bMoveEnd)this.CursorIndex=xPointcount-1;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");return;}this.CursorIndex+=step;this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();};//获取K线图实例
|
|
7028
7033
|
this.GetKLineChart=function(){if(!this.ChartPaint[0])return null;return this.ChartPaint[0];};//创建子窗口
|
|
7029
|
-
this.CreateChildWindow=function(windowCount){var _this18=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=g_ChartFrameFactory.Create("KLineFrame",{ID:i});frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=i;//窗口序号
|
|
7034
|
+
this.CreateChildWindow=function(windowCount){var _this18=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=g_ChartFrameFactory.Create("KLineFrame",{ID:i});frame.Canvas=this.Canvas;frame.GetExtraCanvas=function(name){_this18.GetExtraCanvas(name);};frame.ChartBorder=border;frame.Identify=i;//窗口序号
|
|
7030
7035
|
frame.RightSpaceCount=this.RightSpaceCount;//右边
|
|
7031
7036
|
frame.GetEventCallback=function(id){return _this18.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
|
|
7032
7037
|
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this18.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this18.GetKLineChart();};frame.YSplitOperator.HQChart=this;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
7033
7038
|
border.BottomSpace=15*pixelTatio;//主图上下留空间
|
|
7034
7039
|
border.TopSpace=15*pixelTatio;frame.GetEventCallback=function(id){return _this18.GetEventCallback(id);};}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.GetEventCallback=function(id){return _this18.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this18.GetKLineChart();};frame.YSplitOperator.HQChart=this;//frame.IsLocked = true;
|
|
7035
|
-
}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.LanguageID=this.LanguageID;frame.XSplitOperator.GetEventCallback=function(id){return _this18.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}};this.CreateSubFrameItem=function(id){var _this19=this;var border=new ChartBorder();border.UIElement=this.UIElement;var frameClassName="KLineFrame";if(this.ClassName=="KLineChartHScreenContainer")frameClassName="KLineHScreenFrame";var frame=g_ChartFrameFactory.Create(frameClassName,{ID:id});frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=id;//窗口序号
|
|
7040
|
+
}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.LanguageID=this.LanguageID;frame.XSplitOperator.GetEventCallback=function(id){return _this18.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}};this.CreateSubFrameItem=function(id){var _this19=this;var border=new ChartBorder();border.UIElement=this.UIElement;var frameClassName="KLineFrame";if(this.ClassName=="KLineChartHScreenContainer")frameClassName="KLineHScreenFrame";var frame=g_ChartFrameFactory.Create(frameClassName,{ID:id});frame.Canvas=this.Canvas;frame.GetExtraCanvas=function(name){_this19.GetExtraCanvas(name);};frame.ChartBorder=border;frame.Identify=id;//窗口序号
|
|
7036
7041
|
frame.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
|
|
7037
7042
|
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.YSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this19.GetKLineChart();};frame.YSplitOperator.HQChart=this;frame.XSplitOperator.Symbol=this.Symbol;frame.XSplitOperator.Period=this.Period;//K线数据绑定
|
|
7038
7043
|
var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};//创建主图K线画法
|
|
@@ -8507,7 +8512,7 @@ this.Frame=new HQTradeHScreenFrame();this.Frame.ChartBorder=new ChartBorder();th
|
|
|
8507
8512
|
this.ChartSplashPaint.Frame=this.Frame;this.CreateChildWindow(windowCount);this.CreateMainKLine();//子窗口动态标题
|
|
8508
8513
|
for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this37.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint.push(titlePaint);}this.UIElement.addEventListener("keydown",OnKeyDown,true);//键盘消息
|
|
8509
8514
|
};//创建子窗口
|
|
8510
|
-
this.CreateChildWindow=function(windowCount){var _this38=this;for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=g_ChartFrameFactory.Create("KLineHScreenFrame",{ID:i});frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=i;//窗口序号
|
|
8515
|
+
this.CreateChildWindow=function(windowCount){var _this38=this;for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=g_ChartFrameFactory.Create("KLineHScreenFrame",{ID:i});frame.Canvas=this.Canvas;frame.GetExtraCanvas=function(name){_this38.GetExtraCanvas(name);};frame.ChartBorder=border;frame.Identify=i;//窗口序号
|
|
8511
8516
|
frame.RightSpaceCount=this.RightSpaceCount;//右边
|
|
8512
8517
|
if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
|
|
8513
8518
|
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this38.GetEventCallback(id);};//主图上下间距
|
|
@@ -13282,7 +13287,8 @@ JSPopMenu.SEPARATOR_LINE_NAME="MENU_SEPARATOR";//分割线
|
|
|
13282
13287
|
内置画图工具 设置框
|
|
13283
13288
|
*/var JS_DRAWTOOL_MENU_ID={CMD_SELECTED_ID:1,CMD_CHANGE_LINE_COLOR_ID:2,CMD_DELETE_ALL_DRAW_CHART_ID:3,CMD_ERASE_DRAW_CHART_ID:4,CMD_ENABLE_MAGNET_ID:5,//画图工具磁体功能
|
|
13284
13289
|
CMD_DELETE_DRAW_CHART_ID:6,CMD_CHANGE_FONT_COLOR_ID:7,//切换字体颜色
|
|
13285
|
-
CMD_CHANGE_BG_COLOR_ID:8
|
|
13290
|
+
CMD_CHANGE_BG_COLOR_ID:8,//切换背景色
|
|
13291
|
+
CMD_CHANGE_BORDER_COLOR_ID:9//边框颜色
|
|
13286
13292
|
};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-draw_rays',Type:0,Data:{ID:"箭头"}},{Title:'趋势线',ClassName:'hqchart_drawtool icon-draw_trendline',Type:0,Data:{ID:"趋势线"}},{Title:'水平线',ClassName:'hqchart_drawtool icon-draw_hline',Type:0,Data:{ID:"水平线"}},{Title:'水平射线',ClassName:'hqchart_drawtool icon-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-jiangenjiaoduxian',Type:0,Data:{ID:"江恩角度线"}}]},{Title:"通道",AryChart:[{Title:'平行线',ClassName:'hqchart_drawtool icon-draw_parallel_lines',Type:0,Data:{ID:"平行线"}},{Title:'水平线段',ClassName:'hqchart_drawtool icon-draw_hlinesegment',Type:0,Data:{ID:"水平线段"}},{Title:'平行射线',ClassName:'hqchart_drawtool icon-draw_p_rays_lines',Type:0,Data:{ID:"平行射线"}},{Title:'平行通道',ClassName:'hqchart_drawtool icon-draw_parallelchannel',Type:0,Data:{ID:"平行通道"}},{Title:'价格通道线',ClassName:'hqchart_drawtool icon-draw_pricechannel',Type:0,Data:{ID:"价格通道线"}},{Title:'箱型线',ClassName:'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:"形状",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-jiance",Type:0,Data:{ID:"MonitorLine"}}]},{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-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.Inital=function(hqchart){this.LineColor=g_JSChartResource.DrawPicture.LineColor[0];this.RandomLineColor.splice(0,0,this.LineColor);this.HQChart=hqchart;};this.Create=function(){var _this69=this;var divDom=document.createElement("div");divDom.className='UMyChart_DrawTool_Dialog_Div';var divTitle=document.createElement("div");divTitle.className='UMyChart_DrawTool_Title_Div';divTitle.innerText="画图工具";divTitle.onmousedown=function(e){_this69.OnMouseDownTitle(e);};var divClose=document.createElement("div");divClose.className='UMyChart_DrawTool_Close_Div';divClose.innerText="x";divClose.onmousedown=function(e){_this69.Close(e);};divTitle.appendChild(divClose);divDom.appendChild(divTitle);var table=document.createElement("table");table.className="UMyChart_DrawTool_Table";divDom.appendChild(table);var tbody=document.createElement("tbody");tbody.className="UMyChart_DrawTool_Tbody";table.appendChild(tbody);for(var i=0;i<this.AryChartGroup.length;++i){var item=this.AryChartGroup[i];if(!IFrameSplitOperator.IsNonEmptyArray(item.AryChart))continue;this.CreateChartGroupItem(item,tbody);var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Group_End_Tr';tbody.appendChild(trDom);}//工具栏
|
|
13287
13293
|
this.CreateToolGroup(tbody);this.DivDialog=divDom;document.body.appendChild(divDom);};this.Destroy=function(){this.AryDivChart=[];document.body.remove(this.DivDialog);this.DivDialog=null;};this.CreateChartGroupItem=function(groupItem,tbody){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Group_Tr';tbody.appendChild(trDom);var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Group_Td";tdDom.innerText=groupItem.Title;tdDom.colSpan=this.ColumnCount;trDom.appendChild(tdDom);var chartCount=groupItem.AryChart.length;for(var i=0,j=0;i<chartCount;){var trDom=document.createElement("tr");trDom.className='UMyChart_DrawTool_Tr';for(j=0;j<this.ColumnCount&&i<chartCount;++j,++i){var item=groupItem.AryChart[i];this.CreateChartItem(item,trDom);}tbody.appendChild(trDom);}};this.CreateChartItem=function(item,trDom){var _this70=this;var tdDom=document.createElement("td");tdDom.className="UMyChart_DrawTool_Td";tdDom.title=item.Title;trDom.appendChild(tdDom);var spanDom=document.createElement("span");spanDom.className=item.ClassName;spanDom.classList.add("UMyChart_DrawTool_Span");tdDom.appendChild(spanDom);var data={Item:item,TD:tdDom,Span:spanDom};tdDom.onmousedown=function(e){_this70.OnClickItem(e,data);};//点击
|
|
13288
13294
|
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);}};//清空选中状态
|
|
@@ -13300,14 +13306,18 @@ var x=labelInfo.AryPoint[1].X-labelInfo.AryPoint[0].X;var y=labelInfo.AryPoint[1
|
|
|
13300
13306
|
//
|
|
13301
13307
|
////////////////////////////////////////////////////////////////////////////////////
|
|
13302
13308
|
function JSDialogModifyDraw(){this.DivDialog=null;this.HQChart;this.ChartPicture;//按钮
|
|
13303
|
-
this.ColorButton=null;this.BGColorButton=null;this.FontColorButton=null;this.RandomLineColor=["rgb(255,69,0)","rgb(173,255,47)","rgb(238,154,73)","rgb(255,105,180)"];//线段颜色
|
|
13309
|
+
this.ColorButton=null;this.BGColorButton=null;this.FontColorButton=null;this.BorderColorButton=null;this.RandomLineColor=["rgb(255,69,0)","rgb(173,255,47)","rgb(238,154,73)","rgb(255,105,180)"];//线段颜色
|
|
13304
13310
|
this.RandomBGColor=["rgba(210,251,209,0.8)","rgb(217,217,253)","rgb(255,208,204)","rgb(252,249,206)"];//背景颜色
|
|
13305
13311
|
this.RandomFontColor=["rgb(0,0,0)","rgb(255, 0, 0)","rgb(20, 255, 0)","rgb(255, 0, 255)"];//文字颜色
|
|
13306
|
-
this.
|
|
13307
|
-
|
|
13312
|
+
this.RandomBorderColor=["rgb(0,0,0)","rgb(5, 246, 143)","rgb(139, 137, 137)","rgb(255, 20, 147)"];//边框颜色
|
|
13313
|
+
this.AryButton=[{Title:"修改线段颜色",ClassName:'hqchart_drawtool icon-huabi',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID}},{Title:"修改字体颜色",ClassName:'hqchart_drawtool icon-zitiyanse',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_FONT_COLOR_ID}},{Title:"修改背景颜色",ClassName:'hqchart_drawtool icon-zitibeijingse',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_BG_COLOR_ID}},{Title:"修改边框颜色",ClassName:'hqchart_drawtool icon-biankuang',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_BORDER_COLOR_ID}},{Title:"删除图形",ClassName:'hqchart_drawtool icon-recycle_bin',Type:2,Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_DELETE_DRAW_CHART_ID}}];this.Inital=function(hqchart){this.HQChart=hqchart;};this.Destroy=function(){this.ChartPicture=null;this.ColorButton=null;if(this.DivDialog){document.body.remove(this.DivDialog);this.DivDialog=null;}};this.Create=function(){var _this74=this;var divDom=document.createElement("div");divDom.className='UMyChart_Draw_Modify_Dialog_Div';var drgDiv=document.createElement("div");drgDiv.className="UMyChart_Draw_Modify_Dialog_Drag_Div";drgDiv.onmousedown=function(e){_this74.OnMouseDownTitle(e);};divDom.appendChild(drgDiv);var spanDom=document.createElement("span");spanDom.className="hqchart_drawtool icon-tuodong";spanDom.classList.add("UMyChart_DrawTool_Span");drgDiv.appendChild(spanDom);for(var i=0;i<this.AryButton.length;++i){var item=this.AryButton[i];this.CreateButtonItem(item,divDom);}this.DivDialog=divDom;document.body.appendChild(divDom);};this.CreateButtonItem=function(item,parentDivDom){var _this75=this;var divItem=document.createElement("div");divItem.className="UMyChart_Draw_Modify_Dialog_Button_Div";var spanTooltip=document.createElement("span");spanTooltip.className="UMyChart_Draw_Modify_Tooltip";spanTooltip.innerText=item.Title;divItem.appendChild(spanTooltip);var spanDom=document.createElement("span");spanDom.className=item.ClassName;spanDom.classList.add("UMyChart_DrawTool_Span");divItem.appendChild(spanDom);var data={Div:divItem,Span:spanDom,Parent:parentDivDom,Item:item,Tooltip:spanTooltip};divItem.onmousedown=function(e){_this75.OnClickButton(e,data);};//点击
|
|
13314
|
+
divItem.onmouseover=function(e){_this75.OnHoverButton(e,data);};divItem.onmouseout=function(e){_this75.OnLeaveButton(e,data);};switch(item.Data.ID){case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID:this.ColorButton=data;break;case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_BG_COLOR_ID:this.BGColorButton=data;divItem.style.display="none";break;case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_FONT_COLOR_ID:this.FontColorButton=data;divItem.style.display="none";break;case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_BORDER_COLOR_ID:this.BorderColorButton=data;divItem.style.display="none";break;}parentDivDom.appendChild(divItem);};this.OnClickButton=function(e,data){console.log('[JSDialogModifyDraw::OnClickButton] ',data);if(!data.Item||!data.Item.Data)return;var id=data.Item.Data.ID;switch(id){case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID:this.ModifyLineColor();break;case JS_DRAWTOOL_MENU_ID.CMD_DELETE_DRAW_CHART_ID:this.DeleteDrawPicture();break;case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_BG_COLOR_ID:this.ModifyBGColor();break;case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_FONT_COLOR_ID:this.ModifyFontColor();break;case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_BORDER_COLOR_ID:this.ModifyBorderColor();break;}};this.OnHoverButton=function(e,data){//var x=e.clientX;
|
|
13315
|
+
//data.Tooltip.style.left=x+"px";
|
|
13316
|
+
data.Tooltip.style.display="inline";};this.OnLeaveButton=function(e,data){data.Tooltip.style.display="none";};this.Close=function(e){if(!this.DivDialog)return;this.ChartPicture=null;this.DivDialog.style.visibility='hidden';};this.IsShow=function(){if(!this.DivDialog)return false;return this.DivDialog.style.visibility==='visible';};this.DeleteDrawPicture=function(){if(this.ChartPicture&&this.HQChart){this.HQChart.ClearChartDrawPicture(this.ChartPicture);}this.Close();};this.ShowButton=function(dom,diaplay){if(dom.style.display==diaplay)return;dom.style.display=diaplay;};this.GetRandomColor=function(currentColor,randomLineColor){var colorIndex=0;for(var i=0;i<randomLineColor.length;++i){if(currentColor==randomLineColor[i]){colorIndex=i+1;break;}}colorIndex=colorIndex%randomLineColor.length;var color=randomLineColor[colorIndex];return color;};this.ModifyLineColor=function(){if(!this.ChartPicture||!this.HQChart)return;var color=this.GetRandomColor(this.ChartPicture.LineColor,this.RandomLineColor);this.ChartPicture.LineColor=color;this.ChartPicture.PointColor=color;if(this.ColorButton)this.ColorButton.Span.style['color']=color;if(this.HQChart.ChartDrawStorage)this.HQChart.ChartDrawStorage.SaveDrawData(this.ChartPicture);//保存下
|
|
13308
13317
|
this.HQChart.Draw();};this.ModifyFontColor=function(){if(!this.ChartPicture||!this.HQChart)return;if(this.ChartPicture.ClassName=="ChartDrawNote"){var color=this.GetRandomColor(this.ChartPicture.NoteTextColor,this.RandomFontColor);this.ChartPicture.NoteTextColor=color;}else{var color=this.GetRandomColor(this.ChartPicture.TextColor,this.RandomFontColor);this.ChartPicture.TextColor=color;}if(this.FontColorButton)this.FontColorButton.Span.style['color']=color;if(this.HQChart.ChartDrawStorage)this.HQChart.ChartDrawStorage.SaveDrawData(this.ChartPicture);//保存下
|
|
13309
13318
|
this.HQChart.Draw();};this.ModifyBGColor=function(){if(!this.ChartPicture||!this.HQChart)return;if(this.ChartPicture.ClassName=="ChartDrawNote"){var color=this.GetRandomColor(this.ChartPicture.NoteBGColor,this.RandomBGColor);this.ChartPicture.NoteBGColor=color;}else{var color=this.GetRandomColor(this.ChartPicture.BGColor,this.RandomBGColor);this.ChartPicture.BGColor=color;}if(this.BGColorButton)this.BGColorButton.Span.style['color']=color;if(this.HQChart.ChartDrawStorage)this.HQChart.ChartDrawStorage.SaveDrawData(this.ChartPicture);//保存下
|
|
13310
|
-
this.HQChart.Draw();};this.
|
|
13319
|
+
this.HQChart.Draw();};this.ModifyBorderColor=function(){if(!this.ChartPicture||!this.HQChart)return;if(this.ChartPicture.ClassName=="ChartDrawNote"){var color=this.GetRandomColor(this.ChartPicture.NoteBorderColor,this.RandomBorderColor);this.ChartPicture.NoteBorderColor=color;}else{var color=this.GetRandomColor(this.ChartPicture.BorderColor,this.RandomBorderColor);this.ChartPicture.BorderColor=color;}if(this.BorderColorButton)this.BorderColorButton.Span.style['color']=color;if(this.HQChart.ChartDrawStorage)this.HQChart.ChartDrawStorage.SaveDrawData(this.ChartPicture);//保存下
|
|
13320
|
+
this.HQChart.Draw();};this.Show=function(x,y){if(!this.DivDialog)this.Create();this.DivDialog.style.visibility='visible';this.DivDialog.style.top=y+"px";this.DivDialog.style.left=x+"px";};this.SetChartPicture=function(chart){this.ChartPicture=chart;var bShowLineColor=true,bShowBGColor=false,bShowFontColor=false,bShowBorderColor=false;var bgColor=null,fontColor=null,borderColor=null;var ARRAY_TEXT_CHART=['ChartDrawPriceLabel',"ChartDrawAnchoredText","ChartDrawPriceNote"];if(ARRAY_TEXT_CHART.includes(chart.ClassName)){bShowBGColor=true;bShowFontColor=true;bShowBorderColor=true;bgColor=chart.BGColor;fontColor=chart.TextColor;borderColor=chart.BorderColor;}else if(chart.ClassName=="ChartDrawNote"){bShowBGColor=true;bShowFontColor=true;bShowBorderColor=true;bgColor=chart.NoteBGColor;fontColor=chart.NoteTextColor;borderColor=chart.NoteBorderColor;}if(this.ColorButton){var item=this.ColorButton;this.ShowButton(item.Div,bShowLineColor?"inline":"none");if(bShowLineColor){item.Span.style['color']=chart.LineColor;}}if(this.BGColorButton){var item=this.BGColorButton;this.ShowButton(item.Div,bShowBGColor?"inline":"none");if(bShowBGColor){item.Span.style['color']=bgColor;}}if(this.FontColorButton){var item=this.FontColorButton;this.ShowButton(item.Div,bShowFontColor?"inline":"none");if(bShowFontColor){item.Span.style['color']=fontColor;}}if(this.BorderColorButton){var item=this.BorderColorButton;this.ShowButton(item.Div,bShowBorderColor?"inline":"none");if(bShowBorderColor){item.Span.style['color']=borderColor;}}};this.OnMouseDownTitle=function(e){var _this76=this;if(!this.DivDialog)return;var dragData={X:e.clientX,Y:e.clientY};dragData.YOffset=e.clientX-this.DivDialog.offsetLeft;dragData.XOffset=e.clientY-this.DivDialog.offsetTop;this.DragTitle=dragData;document.onmousemove=function(e){_this76.DocOnMouseMoveTitle(e);};document.onmouseup=function(e){_this76.DocOnMouseUpTitle(e);};};this.DocOnMouseMoveTitle=function(e){if(!this.DragTitle)return;var left=e.clientX-this.DragTitle.YOffset;var top=e.clientY-this.DragTitle.XOffset;var right=left+this.DivDialog.offsetWidth;var bottom=top+this.DivDialog.offsetHeight;if(right+5>=window.innerWidth)left=window.innerWidth-this.DivDialog.offsetWidth-5;if(bottom+5>=window.innerHeight)top=window.innerHeight-this.DivDialog.offsetHeight-5;this.DivDialog.style.left=left+'px';this.DivDialog.style.top=top+'px';if(e.preventDefault)e.preventDefault();if(e.stopPropagation)e.stopPropagation();};this.DocOnMouseUpTitle=function(e){this.DragTitle=null;this.onmousemove=null;this.onmouseup=null;};}///////////////////////////////////////////////////////////////////////////////////
|
|
13311
13321
|
// 工作线程计算指标示例
|
|
13312
13322
|
//
|
|
13313
13323
|
//
|
|
@@ -13319,7 +13329,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
13319
13329
|
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);};}/********************************************************************************
|
|
13320
13330
|
* 版本信息输出
|
|
13321
13331
|
*
|
|
13322
|
-
*/var HQCHART_VERSION="1.1.
|
|
13332
|
+
*/var HQCHART_VERSION="1.1.13380";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();//把给外界调用的方法暴露出来
|
|
13323
13333
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
13324
13334
|
// BaseIndex:BaseIndex,
|
|
13325
13335
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -20,7 +20,8 @@ var JS_DRAWTOOL_MENU_ID=
|
|
|
20
20
|
CMD_DELETE_DRAW_CHART_ID:6,
|
|
21
21
|
|
|
22
22
|
CMD_CHANGE_FONT_COLOR_ID:7, //切换字体颜色
|
|
23
|
-
CMD_CHANGE_BG_COLOR_ID:8 //切换背景色
|
|
23
|
+
CMD_CHANGE_BG_COLOR_ID:8, //切换背景色
|
|
24
|
+
CMD_CHANGE_BORDER_COLOR_ID:9, //边框颜色
|
|
24
25
|
};
|
|
25
26
|
|
|
26
27
|
function JSDialogDrawTool()
|
|
@@ -612,17 +613,20 @@ function JSDialogModifyDraw()
|
|
|
612
613
|
this.ColorButton=null;
|
|
613
614
|
this.BGColorButton=null;
|
|
614
615
|
this.FontColorButton=null;
|
|
616
|
+
this.BorderColorButton=null;
|
|
615
617
|
|
|
616
618
|
this.RandomLineColor=["rgb(255,69,0)", "rgb(173,255,47)", "rgb(238,154,73)", "rgb(255,105,180)"]; //线段颜色
|
|
617
619
|
this.RandomBGColor=["rgba(210,251,209,0.8)", "rgb(217,217,253)", "rgb(255,208,204)", "rgb(252,249,206)"]; //背景颜色
|
|
618
620
|
this.RandomFontColor=["rgb(0,0,0)", "rgb(255, 0, 0)", "rgb(20, 255, 0)", "rgb(255, 0, 255)"]; //文字颜色
|
|
621
|
+
this.RandomBorderColor=["rgb(0,0,0)", "rgb(5, 246, 143)", "rgb(139, 137, 137)", "rgb(255, 20, 147)"]; //边框颜色
|
|
619
622
|
|
|
620
623
|
this.AryButton=
|
|
621
624
|
[
|
|
622
|
-
{ Title:"
|
|
623
|
-
{ Title:"
|
|
624
|
-
{ Title:"
|
|
625
|
-
{ Title:"
|
|
625
|
+
{ Title:"修改线段颜色", ClassName: 'hqchart_drawtool icon-huabi', Type:2, Data:{ ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID }},
|
|
626
|
+
{ Title:"修改字体颜色", ClassName: 'hqchart_drawtool icon-zitiyanse', Type:2, Data:{ ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_FONT_COLOR_ID }},
|
|
627
|
+
{ Title:"修改背景颜色", ClassName: 'hqchart_drawtool icon-zitibeijingse', Type:2, Data:{ ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_BG_COLOR_ID }},
|
|
628
|
+
{ Title:"修改边框颜色", ClassName: 'hqchart_drawtool icon-biankuang', Type:2, Data:{ ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_BORDER_COLOR_ID }},
|
|
629
|
+
{ Title:"删除图形", ClassName: 'hqchart_drawtool icon-recycle_bin', Type:2, Data:{ ID:JS_DRAWTOOL_MENU_ID.CMD_DELETE_DRAW_CHART_ID }}
|
|
626
630
|
];
|
|
627
631
|
|
|
628
632
|
this.Inital=function(hqchart)
|
|
@@ -670,14 +674,25 @@ function JSDialogModifyDraw()
|
|
|
670
674
|
{
|
|
671
675
|
var divItem=document.createElement("div");
|
|
672
676
|
divItem.className="UMyChart_Draw_Modify_Dialog_Button_Div";
|
|
677
|
+
|
|
678
|
+
var spanTooltip=document.createElement("span");
|
|
679
|
+
spanTooltip.className="UMyChart_Draw_Modify_Tooltip";
|
|
680
|
+
spanTooltip.innerText=item.Title;
|
|
681
|
+
divItem.appendChild(spanTooltip);
|
|
682
|
+
|
|
683
|
+
|
|
673
684
|
var spanDom=document.createElement("span");
|
|
674
685
|
spanDom.className=item.ClassName;
|
|
675
686
|
spanDom.classList.add("UMyChart_DrawTool_Span");
|
|
676
687
|
divItem.appendChild(spanDom);
|
|
688
|
+
|
|
677
689
|
|
|
678
|
-
var data={ Div:divItem, Span:spanDom, Parent:parentDivDom, Item:item };
|
|
690
|
+
var data={ Div:divItem, Span:spanDom, Parent:parentDivDom, Item:item, Tooltip:spanTooltip };
|
|
679
691
|
divItem.onmousedown=(e)=> { this.OnClickButton(e, data); }; //点击
|
|
680
692
|
|
|
693
|
+
divItem.onmouseover=(e)=> { this.OnHoverButton(e, data); }
|
|
694
|
+
divItem.onmouseout=(e)=>{ this.OnLeaveButton(e, data); }
|
|
695
|
+
|
|
681
696
|
switch(item.Data.ID)
|
|
682
697
|
{
|
|
683
698
|
case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID:
|
|
@@ -691,6 +706,11 @@ function JSDialogModifyDraw()
|
|
|
691
706
|
this.FontColorButton=data;
|
|
692
707
|
divItem.style.display="none";
|
|
693
708
|
break;
|
|
709
|
+
case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_BORDER_COLOR_ID:
|
|
710
|
+
this.BorderColorButton=data;
|
|
711
|
+
divItem.style.display="none";
|
|
712
|
+
break;
|
|
713
|
+
|
|
694
714
|
}
|
|
695
715
|
|
|
696
716
|
parentDivDom.appendChild(divItem);
|
|
@@ -716,9 +736,24 @@ function JSDialogModifyDraw()
|
|
|
716
736
|
case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_FONT_COLOR_ID:
|
|
717
737
|
this.ModifyFontColor();
|
|
718
738
|
break;
|
|
739
|
+
case JS_DRAWTOOL_MENU_ID.CMD_CHANGE_BORDER_COLOR_ID:
|
|
740
|
+
this.ModifyBorderColor();
|
|
741
|
+
break;
|
|
719
742
|
}
|
|
720
743
|
}
|
|
721
744
|
|
|
745
|
+
this.OnHoverButton=function(e, data)
|
|
746
|
+
{
|
|
747
|
+
//var x=e.clientX;
|
|
748
|
+
//data.Tooltip.style.left=x+"px";
|
|
749
|
+
data.Tooltip.style.display="inline";
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
this.OnLeaveButton=function(e, data)
|
|
753
|
+
{
|
|
754
|
+
data.Tooltip.style.display="none";
|
|
755
|
+
}
|
|
756
|
+
|
|
722
757
|
this.Close=function(e)
|
|
723
758
|
{
|
|
724
759
|
if (!this.DivDialog) return;
|
|
@@ -828,6 +863,28 @@ function JSDialogModifyDraw()
|
|
|
828
863
|
this.HQChart.Draw();
|
|
829
864
|
}
|
|
830
865
|
|
|
866
|
+
this.ModifyBorderColor=function()
|
|
867
|
+
{
|
|
868
|
+
if (!this.ChartPicture || !this.HQChart) return;
|
|
869
|
+
|
|
870
|
+
if (this.ChartPicture.ClassName=="ChartDrawNote")
|
|
871
|
+
{
|
|
872
|
+
var color=this.GetRandomColor(this.ChartPicture.NoteBorderColor, this.RandomBorderColor);
|
|
873
|
+
this.ChartPicture.NoteBorderColor=color;
|
|
874
|
+
}
|
|
875
|
+
else
|
|
876
|
+
{
|
|
877
|
+
var color=this.GetRandomColor(this.ChartPicture.BorderColor, this.RandomBorderColor);
|
|
878
|
+
this.ChartPicture.BorderColor=color;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
if (this.BorderColorButton) this.BorderColorButton.Span.style['color']=color;
|
|
883
|
+
if (this.HQChart.ChartDrawStorage) this.HQChart.ChartDrawStorage.SaveDrawData(this.ChartPicture); //保存下
|
|
884
|
+
|
|
885
|
+
this.HQChart.Draw();
|
|
886
|
+
}
|
|
887
|
+
|
|
831
888
|
this.Show=function(x, y)
|
|
832
889
|
{
|
|
833
890
|
if (!this.DivDialog) this.Create();
|
|
@@ -841,28 +898,32 @@ function JSDialogModifyDraw()
|
|
|
841
898
|
{
|
|
842
899
|
this.ChartPicture=chart;
|
|
843
900
|
|
|
844
|
-
var bShowLineColor=true, bShowBGColor=false, bShowFontColor=false;
|
|
845
|
-
var bgColor=null, fontColor=null;
|
|
901
|
+
var bShowLineColor=true, bShowBGColor=false, bShowFontColor=false, bShowBorderColor=false;
|
|
902
|
+
var bgColor=null, fontColor=null,borderColor=null;
|
|
846
903
|
var ARRAY_TEXT_CHART=['ChartDrawPriceLabel', "ChartDrawAnchoredText","ChartDrawPriceNote"];
|
|
847
904
|
if (ARRAY_TEXT_CHART.includes(chart.ClassName))
|
|
848
905
|
{
|
|
849
906
|
bShowBGColor=true;
|
|
850
907
|
bShowFontColor=true;
|
|
908
|
+
bShowBorderColor=true;
|
|
851
909
|
bgColor=chart.BGColor;
|
|
852
910
|
fontColor=chart.TextColor;
|
|
911
|
+
borderColor=chart.BorderColor;
|
|
853
912
|
}
|
|
854
913
|
else if (chart.ClassName=="ChartDrawNote")
|
|
855
914
|
{
|
|
856
915
|
bShowBGColor=true;
|
|
857
916
|
bShowFontColor=true;
|
|
917
|
+
bShowBorderColor=true;
|
|
858
918
|
bgColor=chart.NoteBGColor;
|
|
859
919
|
fontColor=chart.NoteTextColor;
|
|
920
|
+
borderColor=chart.NoteBorderColor;
|
|
860
921
|
}
|
|
861
922
|
|
|
862
923
|
if (this.ColorButton)
|
|
863
924
|
{
|
|
864
925
|
var item=this.ColorButton;
|
|
865
|
-
this.ShowButton(item.Div, bShowLineColor?"
|
|
926
|
+
this.ShowButton(item.Div, bShowLineColor?"inline":"none");
|
|
866
927
|
if (bShowLineColor)
|
|
867
928
|
{
|
|
868
929
|
item.Span.style['color']=chart.LineColor;
|
|
@@ -872,7 +933,7 @@ function JSDialogModifyDraw()
|
|
|
872
933
|
if (this.BGColorButton)
|
|
873
934
|
{
|
|
874
935
|
var item=this.BGColorButton;
|
|
875
|
-
this.ShowButton(item.Div, bShowBGColor?"
|
|
936
|
+
this.ShowButton(item.Div, bShowBGColor?"inline":"none");
|
|
876
937
|
if (bShowBGColor)
|
|
877
938
|
{
|
|
878
939
|
item.Span.style['color']=bgColor;
|
|
@@ -882,12 +943,22 @@ function JSDialogModifyDraw()
|
|
|
882
943
|
if (this.FontColorButton)
|
|
883
944
|
{
|
|
884
945
|
var item=this.FontColorButton;
|
|
885
|
-
this.ShowButton(item.Div, bShowFontColor?"
|
|
946
|
+
this.ShowButton(item.Div, bShowFontColor?"inline":"none");
|
|
886
947
|
if (bShowFontColor)
|
|
887
948
|
{
|
|
888
949
|
item.Span.style['color']=fontColor;
|
|
889
950
|
}
|
|
890
951
|
}
|
|
952
|
+
|
|
953
|
+
if (this.BorderColorButton)
|
|
954
|
+
{
|
|
955
|
+
var item=this.BorderColorButton;
|
|
956
|
+
this.ShowButton(item.Div, bShowBorderColor?"inline":"none");
|
|
957
|
+
if (bShowBorderColor)
|
|
958
|
+
{
|
|
959
|
+
item.Span.style['color']=borderColor;
|
|
960
|
+
}
|
|
961
|
+
}
|
|
891
962
|
|
|
892
963
|
}
|
|
893
964
|
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -2154,6 +2154,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
2154
2154
|
JSChart.LastVersion=null; //最新的版本号
|
|
2155
2155
|
JSChart.EnableCanvasWillReadFrequently=false; //https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently
|
|
2156
2156
|
JSChart.CorssCursorCanvasKey="hqchart_corsscursor";
|
|
2157
|
+
JSChart.TooltipCursorCanvasKey="hqchart_tooltip";
|
|
2157
2158
|
|
|
2158
2159
|
//初始化
|
|
2159
2160
|
JSChart.Init=function(divElement,bScreen,bCacheCanvas)
|
|
@@ -2564,6 +2565,7 @@ var JSCHART_OPERATOR_ID=
|
|
|
2564
2565
|
OP_SCROOLBAR_SLIDER_CHANGED:15, //滑块变动
|
|
2565
2566
|
|
|
2566
2567
|
OP_GOTO:16, //移动到某一个天或某一个分钟
|
|
2568
|
+
OP_GOTO_BY_DATAINDEX:17, //的移动到某一个数据起始位置
|
|
2567
2569
|
}
|
|
2568
2570
|
|
|
2569
2571
|
var JSCHART_DRAG_ID=
|
|
@@ -10785,15 +10787,21 @@ function AverageWidthFrame()
|
|
|
10785
10787
|
if (!text) return;
|
|
10786
10788
|
|
|
10787
10789
|
var pixelRatio=GetDevicePixelRatio();
|
|
10790
|
+
var canvas=this.Canvas;
|
|
10791
|
+
if (this.GetExtraCanvas)
|
|
10792
|
+
{
|
|
10793
|
+
var finder=this.GetExtraCanvas(JSChart.TooltipCursorCanvasKey);
|
|
10794
|
+
if (finder) canvas=finder.Canvas;
|
|
10795
|
+
}
|
|
10788
10796
|
|
|
10789
10797
|
var xCenter=mouseOnToolbar.Rect.Left+mouseOnToolbar.Rect.Width/2;
|
|
10790
10798
|
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
|
|
10799
|
+
canvas.font=this.ButtonTooltip.Font;
|
|
10800
|
+
canvas.textAlign="left";
|
|
10801
|
+
canvas.textBaseline="bottom";
|
|
10794
10802
|
|
|
10795
10803
|
var mergin= this.ButtonTooltip.Mergin;
|
|
10796
|
-
var textWidth=
|
|
10804
|
+
var textWidth=canvas.measureText(text).width+mergin.Left+mergin.Right;
|
|
10797
10805
|
var textHeight=this.GetFontHeight();
|
|
10798
10806
|
var bgHeight=textHeight+mergin.Top+mergin.Bottom;
|
|
10799
10807
|
if (mouseOnToolbar.ID=="TitleButton")
|
|
@@ -10825,25 +10833,25 @@ function AverageWidthFrame()
|
|
|
10825
10833
|
if (IFrameSplitOperator.IsNumber(this.ButtonTooltip.BorderRadius)) //圆角
|
|
10826
10834
|
{
|
|
10827
10835
|
var roundRadius=this.ButtonTooltip.BorderRadius;
|
|
10828
|
-
|
|
10829
|
-
|
|
10830
|
-
|
|
10836
|
+
canvas.beginPath();
|
|
10837
|
+
canvas.roundRect(ToFixedPoint(x), ToFixedPoint(y), ToFixedRect(textWidth), ToFixedRect(bgHeight), [roundRadius]);
|
|
10838
|
+
canvas.closePath();
|
|
10831
10839
|
|
|
10832
|
-
|
|
10833
|
-
|
|
10840
|
+
canvas.fillStyle=this.ButtonTooltip.ColorBG;
|
|
10841
|
+
canvas.fill();
|
|
10834
10842
|
|
|
10835
|
-
|
|
10836
|
-
|
|
10843
|
+
canvas.strokeStyle=this.ButtonTooltip.ColorBorder;
|
|
10844
|
+
canvas.stroke();
|
|
10837
10845
|
|
|
10838
|
-
|
|
10839
|
-
|
|
10846
|
+
canvas.fillStyle=this.ButtonTooltip.Color;
|
|
10847
|
+
canvas.fillText(text, x+mergin.Left, y+bgHeight-mergin.Bottom);
|
|
10840
10848
|
}
|
|
10841
10849
|
else
|
|
10842
10850
|
{
|
|
10843
|
-
|
|
10844
|
-
|
|
10845
|
-
|
|
10846
|
-
|
|
10851
|
+
canvas.fillStyle=this.ButtonTooltip.ColorBG;
|
|
10852
|
+
canvas.fillRect(x,y,textWidth,bgHeight); //画一个背景色, 不然是一个黑的背景
|
|
10853
|
+
canvas.fillStyle=this.ButtonTooltip.Color;
|
|
10854
|
+
canvas.fillText(text, x+mergin.Left,y+bgHeight-mergin.Bottom);
|
|
10847
10855
|
}
|
|
10848
10856
|
|
|
10849
10857
|
|
|
@@ -69221,6 +69229,29 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
69221
69229
|
|
|
69222
69230
|
this.ChartOperator_Temp_Update();
|
|
69223
69231
|
}
|
|
69232
|
+
else if (id==JSCHART_OPERATOR_ID.OP_GOTO_BY_DATAINDEX) //{PageSize:可选, DataIndex:起始位置数据索引}
|
|
69233
|
+
{
|
|
69234
|
+
if (!IFrameSplitOperator.IsNumber(obj.DataIndex)) return;
|
|
69235
|
+
var hisData=this.ChartOperator_Temp_GetHistroyData();
|
|
69236
|
+
if (!hisData) return; //数据还没有到达
|
|
69237
|
+
if (obj.DataIndex<0 || obj.DataIndex>=hisData.Data.length)
|
|
69238
|
+
{
|
|
69239
|
+
JSConsole.Chart.Log(`[KLineChartContainer::ChartOperator] OP_GOTO_BY_DATAINDEX obj.DataIndex=${obj.DataIndex} error.}`);
|
|
69240
|
+
return;
|
|
69241
|
+
}
|
|
69242
|
+
|
|
69243
|
+
var oldXPointCount=this.Frame.SubFrame[0].Frame.XPointCount;
|
|
69244
|
+
var xPointCount=oldXPointCount;
|
|
69245
|
+
if (obj.PageSize>0) xPointCount=obj.PageSize; //调整一屏显示的个数
|
|
69246
|
+
if (xPointCount!=oldXPointCount) this.Frame.SetXShowCount(xPointCount); //设置X轴显示数据个数
|
|
69247
|
+
|
|
69248
|
+
hisData.DataOffset=obj.DataIndex;
|
|
69249
|
+
this.CursorIndex=0;
|
|
69250
|
+
this.LastPoint.X=null;
|
|
69251
|
+
this.LastPoint.Y=null;
|
|
69252
|
+
|
|
69253
|
+
this.ChartOperator_Temp_Update();
|
|
69254
|
+
}
|
|
69224
69255
|
else if (id==JSCHART_OPERATOR_ID.OP_CORSSCURSOR_GOTO) //移动十字光标{ Date:, Time }
|
|
69225
69256
|
{
|
|
69226
69257
|
if (!IFrameSplitOperator.IsNumber(obj.Date)) return;
|
|
@@ -69671,6 +69702,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
69671
69702
|
|
|
69672
69703
|
var frame=g_ChartFrameFactory.Create("KLineFrame", { ID:i });
|
|
69673
69704
|
frame.Canvas=this.Canvas;
|
|
69705
|
+
frame.GetExtraCanvas=(name)=>{ this.GetExtraCanvas(name); };
|
|
69674
69706
|
frame.ChartBorder=border;
|
|
69675
69707
|
frame.Identify=i; //窗口序号
|
|
69676
69708
|
frame.RightSpaceCount=this.RightSpaceCount; //右边
|
|
@@ -69756,6 +69788,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
69756
69788
|
var frame=g_ChartFrameFactory.Create(frameClassName, { ID:id });
|
|
69757
69789
|
|
|
69758
69790
|
frame.Canvas=this.Canvas;
|
|
69791
|
+
frame.GetExtraCanvas=(name)=>{ this.GetExtraCanvas(name); };
|
|
69759
69792
|
frame.ChartBorder=border;
|
|
69760
69793
|
frame.Identify=id; //窗口序号
|
|
69761
69794
|
frame.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
|
|
@@ -83693,6 +83726,7 @@ function KLineChartHScreenContainer(uielement)
|
|
|
83693
83726
|
|
|
83694
83727
|
var frame=g_ChartFrameFactory.Create("KLineHScreenFrame", { ID:i });
|
|
83695
83728
|
frame.Canvas=this.Canvas;
|
|
83729
|
+
frame.GetExtraCanvas=(name)=>{ this.GetExtraCanvas(name); };
|
|
83696
83730
|
frame.ChartBorder=border;
|
|
83697
83731
|
frame.Identify=i; //窗口序号
|
|
83698
83732
|
frame.RightSpaceCount=this.RightSpaceCount; //右边
|
|
@@ -1475,6 +1475,27 @@ input[type="color"] {
|
|
|
1475
1475
|
|
|
1476
1476
|
}
|
|
1477
1477
|
|
|
1478
|
+
.UMyChart_Draw_Modify_Tooltip
|
|
1479
|
+
{
|
|
1480
|
+
position: absolute;
|
|
1481
|
+
display: none;
|
|
1482
|
+
top: 30px;
|
|
1483
|
+
z-index: 2;
|
|
1484
|
+
width: 80px;
|
|
1485
|
+
color: rgb(0,0,0);
|
|
1486
|
+
font-size: 12px;
|
|
1487
|
+
text-align: center;
|
|
1488
|
+
background-color:rgb(250,250,250);
|
|
1489
|
+
border-radius: 2px;
|
|
1490
|
+
padding: 5px 5px 5px 5px;
|
|
1491
|
+
pointer-events: none;
|
|
1492
|
+
border-color: rgb(169,169,169);
|
|
1493
|
+
border-style:solid;
|
|
1494
|
+
border-width:1px;
|
|
1495
|
+
user-select: none;
|
|
1496
|
+
}
|
|
1497
|
+
|
|
1498
|
+
|
|
1478
1499
|
|
|
1479
1500
|
|
|
1480
1501
|
|