hqchart 1.1.15104 → 1.1.15106

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.
@@ -1563,9 +1563,7 @@ default:return null;}};//注册外部扩展图形
1563
1563
  JSChart.RegisterExtendChartClass=function(name,option){return g_ExtendChartPaintFactory.Add(name,option);};JSChart.AddExtendCallbackDraw=function(className){return g_ExtendChartPaintFactory.AddCallbackDrawClassName(className);};//注册外部图形类
1564
1564
  //option:{ Create:创建类方法 }
1565
1565
  JSChart.RegisterChartPaintClass=function(name,option){return g_ChartPaintFactory.Add(name,option);};//注册外部指标图形
1566
- JSChart.RegisterScriptIndexChart=function(name,option){return g_ScriptIndexChartFactory.Add(name,option);};//注册设置对话框类
1567
- //option:{ Create:创建类方法 }
1568
- JSChart.RegisterDialogClass=function(name,option){return g_DialogFactory.Add(name,option);};//注册框架类
1566
+ JSChart.RegisterScriptIndexChart=function(name,option){return g_ScriptIndexChartFactory.Add(name,option);};//注册框架类
1569
1567
  JSChart.RegisterChartFrameClass=function(name,option){return g_ChartFrameFactory.Add(name,option);};//一些公共函数
1570
1568
  JSChart.ToFixedPoint=function(value){return ToFixedPoint(value);};JSChart.ToFixedPoint2=function(width,value){return ToFixedPoint2(width,value);};JSChart.ToFixedRect=function(value){return ToFixedRect(value);};JSChart.GetScrollPosition=function(){return GetScrollPosition();};//品种小数位数
1571
1569
  JSChart.GetfloatPrecision=function(symbol){return GetfloatPrecision(symbol);};//获取不带后缀的代码
@@ -4999,11 +4997,12 @@ this.LockID;//锁ID
4999
4997
  this.Callback;//回调
5000
4998
  this.IndexName;//指标名字
5001
4999
  this.IndexID;//指标ID
5002
- this.CalculateTextSize=function(aryText,defaultFont,out){if(!out||!IFrameSplitOperator.IsNonEmptyArray(aryText))return false;this.Canvas.font=defaultFont;var lineHeight=this.Canvas.measureText("擎").width;//行高
5003
- var height=0,width=0;out.AryText=[];for(var i=0;i<aryText.length;++i){var item=aryText[i];if(!item||!item.Text)continue;var textWidth=this.Canvas.measureText(item.Text).width;var lineItem={Text:item.Text,Width:textWidth,Height:lineHeight,Color:item.Color,TextMargin:{Top:0,Bottom:0,Left:0,Right:0},YOffset:0};if(IFrameSplitOperator.IsNumber(item.YOffset))lineItem.YOffset=item.YOffset;if(item.TextMargin){var margin=item.TextMargin;if(IFrameSplitOperator.IsNumber(margin.Top))lineItem.TextMargin.Top=margin.Top;if(IFrameSplitOperator.IsNumber(margin.Bottom))lineItem.TextMargin.Bottom=margin.Bottom;if(IFrameSplitOperator.IsNumber(margin.Left))lineItem.TextMargin.Left=margin.Left;if(IFrameSplitOperator.IsNumber(margin.Right))lineItem.TextMargin.Right=margin.Right;}lineItem.Height+=lineItem.TextMargin.Top+lineItem.TextMargin.Bottom;lineItem.Width+=lineItem.TextMargin.Left+lineItem.TextMargin.Right;if(width<lineItem.Width)width=lineItem.Width;out.AryText.push(lineItem);height+=lineItem.Height;}out.Width=width;out.Height=height;return true;};this.Draw=function(bDraw){this.LockRect=null;if(!bDraw)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}var bHScreen=this.ChartFrame.IsHScreen;var bMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();if(bHScreen){var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var kData=this.ChartFrame.Data;var left=xOffset;if(kData&&IFrameSplitOperator.IsNonEmptyArray(kData.Data)){for(var i=kData.DataOffset,j=0;i<kData.Data.length-this.LockCount&&j<xPointCount-this.LockCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=kData.Data[i];if(kItem.Open==null||kItem.High==null||kItem.Low==null||kItem.Close==null)continue;if(bMinute){left=this.ChartFrame.GetXFromIndex(j);}else{left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;}}}if(bHScreen){var rtBG={Left:border.Left,Right:border.RightEx,Top:left,Bottom:border.Bottom};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;var bgColor=this.SetFillStyle(this.BGColor,rtBG.Left,rtBG.Top,rtBG.Right,rtBG.Top);this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);this.LockRect=rtBG;//保存上锁区域
5000
+ this.CalculateTextSize=function(aryText,defaultFont,out){if(!out||!IFrameSplitOperator.IsNonEmptyArray(aryText))return false;this.Canvas.font=defaultFont;var defaultLineHeight=this.Canvas.measureText("擎").width;//行高
5001
+ var lineHeight=defaultLineHeight;var height=0,width=0;out.AryText=[];for(var i=0;i<aryText.length;++i){var item=aryText[i];if(!item||!item.Text&&!item.Image)continue;if(item.Image){textWidth=item.Image.Width;lineHeight=item.Image.Height;}else{if(item.Font){this.Canvas.font=item.Font;lineHeight=this.Canvas.measureText("擎").width;}else{this.Canvas.font=defaultFont;lineHeight=defaultLineHeight;}var textWidth=this.Canvas.measureText(item.Text).width;}var lineItem={Text:item.Text,Width:textWidth,Height:lineHeight,Color:item.Color,TextMargin:{Top:0,Bottom:0,Left:0,Right:0},YOffset:0};if(IFrameSplitOperator.IsNumber(item.YOffset))lineItem.YOffset=item.YOffset;if(item.Font)lineItem.Font=item.Font;if(IFrameSplitOperator.IsNumber(item.Align))lineItem.Align=item.Align;//左右对齐 0=左 1=中 2=右
5002
+ if(item.Image)lineItem.Image=item.Image;if(item.TextMargin){var margin=item.TextMargin;if(IFrameSplitOperator.IsNumber(margin.Top))lineItem.TextMargin.Top=margin.Top;if(IFrameSplitOperator.IsNumber(margin.Bottom))lineItem.TextMargin.Bottom=margin.Bottom;if(IFrameSplitOperator.IsNumber(margin.Left))lineItem.TextMargin.Left=margin.Left;if(IFrameSplitOperator.IsNumber(margin.Right))lineItem.TextMargin.Right=margin.Right;}lineItem.Height+=lineItem.TextMargin.Top+lineItem.TextMargin.Bottom;lineItem.Width+=lineItem.TextMargin.Left+lineItem.TextMargin.Right;if(width<lineItem.Width)width=lineItem.Width;out.AryText.push(lineItem);height+=lineItem.Height;}out.Width=width;out.Height=height;return true;};this.Draw=function(bDraw){this.LockRect=null;if(!bDraw)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}var bHScreen=this.ChartFrame.IsHScreen;var bMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();if(bHScreen){var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var kData=this.ChartFrame.Data;var left=xOffset;if(kData&&IFrameSplitOperator.IsNonEmptyArray(kData.Data)){for(var i=kData.DataOffset,j=0;i<kData.Data.length-this.LockCount&&j<xPointCount-this.LockCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=kData.Data[i];if(kItem.Open==null||kItem.High==null||kItem.Low==null||kItem.Close==null)continue;if(bMinute){left=this.ChartFrame.GetXFromIndex(j);}else{left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;}}}if(bHScreen){var rtBG={Left:border.Left,Right:border.RightEx,Top:left,Bottom:border.Bottom};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;var bgColor=this.SetFillStyle(this.BGColor,rtBG.Left,rtBG.Top,rtBG.Right,rtBG.Top);this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);this.LockRect=rtBG;//保存上锁区域
5004
5003
  }else{var rtBG={Left:left,Right:border.RightEx,Top:border.TopTitle,Bottom:border.Bottom};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;//上下渐变
5005
5004
  var bgColor=this.SetFillStyle(this.BGColor,rtBG.Left,rtBG.Top,rtBG.Left,rtBG.Bottom);this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);this.LockRect=rtBG;//保存上锁区域
5006
- }var aryText=null;if(Array.isArray(this.Title))aryText=this.Title;else aryText=[{Text:this.Title}];var outSize={};if(!this.CalculateTextSize(aryText,this.Font,outSize))return;this.Canvas.textAlign='left';this.Canvas.textBaseline='bottom';this.Canvas.font=this.Font;if(bHScreen){var top=rtBG.Top+(rtBG.Height-outSize.Width)/2;if(outSize.Width>rtBG.Height)top=rtBG.Bottom-outSize.Width;var left=rtBG.Left+(rtBG.Width-outSize.Height)/2;this.Canvas.save();this.Canvas.translate(left,top);this.Canvas.rotate(90*Math.PI/180);var yText=0,xText=0;for(var i=0;i<outSize.AryText.length;++i){var item=outSize.AryText[i];if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.TextColor;yText+=item.Height;this.Canvas.fillText(item.Text,xText,yText+item.YOffset);}this.Canvas.restore();}else{var left=rtBG.Left+(rtBG.Width-outSize.Width)/2;if(outSize.Width>rtBG.Width)left=rtBG.Right-outSize.Width;var top=rtBG.Top+(rtBG.Height-outSize.Height)/2;var yText=top,xText=left;for(var i=0;i<outSize.AryText.length;++i){var item=outSize.AryText[i];if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.TextColor;yText+=item.Height;this.Canvas.fillText(item.Text,xText,yText+item.YOffset);}}};//x,y是否在上锁区域
5005
+ }var aryText=null;if(Array.isArray(this.Title))aryText=this.Title;else aryText=[{Text:this.Title}];var outSize={};if(!this.CalculateTextSize(aryText,this.Font,outSize))return;this.Canvas.textAlign='left';this.Canvas.textBaseline='bottom';this.Canvas.font=this.Font;if(bHScreen){var top=rtBG.Top+(rtBG.Height-outSize.Width)/2;if(outSize.Width>rtBG.Height)top=rtBG.Bottom-outSize.Width;var left=rtBG.Left+(rtBG.Width-outSize.Height)/2;this.Canvas.save();this.Canvas.translate(left,top);this.Canvas.rotate(90*Math.PI/180);var yText=0,xText=0;for(var i=0;i<outSize.AryText.length;++i){var item=outSize.AryText[i];if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.TextColor;if(item.Font)this.Canvas.font=item.Font;else this.Canvas.font=this.Font;yText+=item.Height;this.Canvas.fillText(item.Text,xText,yText+item.YOffset);}this.Canvas.restore();}else{var left=rtBG.Left+(rtBG.Width-outSize.Width)/2;if(outSize.Width>rtBG.Width)left=rtBG.Right-outSize.Width;var top=rtBG.Top+(rtBG.Height-outSize.Height)/2;var yText=top,xText=left;for(var i=0;i<outSize.AryText.length;++i){var item=outSize.AryText[i];if(item.Image){xText=left;if(item.Align===1){if(outSize.Width>item.Width)xText+=(outSize.Width-item.Width)/2;}this.Canvas.drawImage(item.Image.Data,xText,yText,item.Image.Width,item.Image.Height);yText+=item.Height;}else{if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.TextColor;if(item.Font)this.Canvas.font=item.Font;else this.Canvas.font=this.Font;yText+=item.Height;xText=left;if(item.Align===1){if(outSize.Width>item.Width)xText+=(outSize.Width-item.Width)/2;}this.Canvas.fillText(item.Text,xText,yText+item.YOffset);}}}};//x,y是否在上锁区域
5007
5006
  this.GetTooltipData=function(x,y,tooltip){if(!this.LockRect)return false;if(Path2DHelper.PtInRect(x,y,this.LockRect)){tooltip.Data={ID:this.LockID,Callback:this.Callback,IndexName:this.IndexName,IndexID:this.IndexID};tooltip.ChartPaint=this;return true;}return false;};}//买卖盘
5008
5007
  function ChartBuySell(){this.newMethod=ChartSingleText;//派生
5009
5008
  this.newMethod();delete this.newMethod;this.ClassName="ChartBuySell";this.TextFont=g_JSChartResource.KLineTrain.Font;//"bold 14px arial"; //买卖信息字体
@@ -9916,37 +9915,96 @@ function IsIndexSymbol(symbol){var upperSymbol=symbol.toUpperCase();if(upperSymb
9916
9915
  //是否是基金代码
9917
9916
  function IsFundSymbol(symbol){if(!symbol)return false;var upperSymbol=symbol.toUpperCase();if(upperSymbol.indexOf('.SH')>0){upperSymbol=upperSymbol.replace('.SH','');//51XXXX.sh
9918
9917
  if(upperSymbol.charAt(0)=='5'&&upperSymbol.charAt(1)=='1')return true;}else if(upperSymbol.indexOf('.SZ')>0){upperSymbol=upperSymbol.replace('.SZ','');//15XXXX.sz, 16XXXX.sz, 17XXXX.sz, 18XXXX.sz
9919
- if(upperSymbol.charAt(0)=='1'&&(upperSymbol.charAt(1)=='5'||upperSymbol.charAt(1)=='6'||upperSymbol.charAt(1)=='7'||upperSymbol.charAt(1)=='8'))return true;}return false;}//设置对话框工厂类
9920
- function DialogFactory(){//[key:name, { Create:function(divElement) { return new class(divElement); }} ]
9921
- this.DataMap=new _map2.default([["ChartPictureSettingMenu",{Create:function Create(divElement){return new ChartPictureSettingMenu(divElement);}}]]);this.Create=function(name,option){if(!this.DataMap.has(name)){JSConsole.Chart.Warn('[DialogFactory::Create] can\'t find class='+name+'.');return null;}var item=this.DataMap.get(name);return item.Create(option);};this.Add=function(name,option){this.DataMap.set(name,{Create:option.Create});};}var g_DialogFactory=new DialogFactory();//设置窗口基类
9922
- function IDivDialog(divElement){this.DivElement=divElement;//父节点
9923
- this.ID=null;//div id
9924
- this.TimeOut=null;//定时器
9925
- //隐藏窗口
9926
- this.Hide=function(){(0,_jquery2.default)("#"+this.ID).hide();};//显示窗口
9927
- this.Show=function(left,top,width,height){var cssData={display:'block'};if(IFrameSplitOperator.IsNumber(left))cssData.left=left+'px';if(IFrameSplitOperator.IsNumber(top))cssData.top=top+'px';if(IFrameSplitOperator.IsNumber(width))cssData.width=width+'px';if(IFrameSplitOperator.IsNumber(height))cssData.height=height+'px';(0,_jquery2.default)("#"+this.ID).css(cssData);};}//等待动画窗口
9928
- function WaitDialog(divElement){this.newMethod=IDivDialog;//派生
9929
- this.newMethod(divElement);delete this.newMethod;this.Title='加载中......';this.Dialog;//隐藏窗口
9930
- this.Close=function(){if(this.Dialog){this.DivElement.removeChild(this.Dialog);this.Dialog=null;}};this.SetTitle=function(title){this.Title=title;if(!this.Dialog)return;//TODO: 更新标题数据
9931
- };this.Create=function(){this.ID=Guid();var div=document.createElement('div');div.className='jchart-wait-box';div.id=this.ID;div.innerHTML=('<div class=\'parameter jchart-kline-match-box\'>\n <div class=\'parameter-header\'>\n <span>'+this.Title+'</span>\n </div>\n </div>').trim();this.DivElement.appendChild(div);this.Dialog=div;};//显示
9932
- this.DoModal=function(event){this.Title=event.data.Title;var chart=event.data.Chart;if(this.ID==null)this.Create();//第1次 需要创建div
9933
- //居中显示
9934
- var border=chart.Frame.ChartBorder;var scrollPos=GetScrollPosition();var left=border.GetWidth()/2;var top=border.GetHeight()/2;this.Show(left,top,200,40);//显示
9935
- };}//画图工具 单个图形设置
9936
- function ChartPictureSettingMenu(divElement){this.newMethod=IDivDialog;//派生
9937
- this.newMethod(divElement);delete this.newMethod;this.HQChart;this.ChartPicture;this.SubToolsDiv;this.SettingMenu;this.SettingPV;this.DoModal=function(event){var $body;if(!this.SubToolsDiv){this.ID=Guid();var div=document.createElement("div");div.className='subTolls';div.id=this.ID;this.DivElement.appendChild(div);//$body = $("."+event.data.HQChart.ClassName).context.body;
9938
- //$body.append(div);
9939
- this.SubToolsDiv=div;}this.HQChart=event.data.HQChart;this.ChartPicture=event.data.ChartPicture;var pixelTatio=GetDevicePixelRatio();var frame=this.HQChart.Frame.SubFrame[0].Frame;// var top=frame.ChartBorder.GetTopTitle();
9940
- var top=frame.ChartBorder.Top+40;// var right=frame.ChartBorder.GetRight();
9941
- var right=frame.ChartBorder.Right;var left=frame.ChartBorder.GetLeft();var className=this.ChartPicture.ClassName;//='ChartDrawPictureText'时加“设置”
9942
- var lineColor=this.ChartPicture.LineColor;if(lineColor.indexOf("rgb(")==0||lineColor.indexOf("RGB(")==0)lineColor=IChartDrawPicture.RGBToHex(lineColor.toLowerCase());var toolsDiv="";if(className==='ChartDrawPictureText'){toolsDiv='<span class="changes-color" title="改变图形颜色">'+'<i class="iconfont icon-bianji"></i>'+'<input type="color" name="color" id="color" class="change-color" value="'+lineColor+'">'+'</span>\n'+'<span class="subtool-set" title="设置"><i class="iconfont icon-shezhi"></i></span>'+'<span class="subtool-del"><i class="iconfont icon-recycle_bin"></i></span>';}else if(className=="ChartDrawVolProfile"){toolsDiv='<span class="vp-set" title="设置"><i class="iconfont icon-shezhi"></i></span>'+'<span class="subtool-del"><i class="iconfont icon-recycle_bin"></i></span>';}else{toolsDiv='<p class="changes-color" title="改变图形颜色"><i class="iconfont icon-bianji"></i>'+'<input type="color" name="color" id="color" class="change-color" value="'+lineColor+'"></p>\n'+' <p class="subtool-del"><i class="iconfont icon-recycle_bin"></i></p>';}this.SubToolsDiv.style.right=right/pixelTatio+"px";this.SubToolsDiv.style.top=top/pixelTatio+"px";this.SubToolsDiv.innerHTML=toolsDiv;this.SubToolsDiv.style.position="absolute";this.SubToolsDiv.style.display="block";var hqChart=this.HQChart;var picture=this.ChartPicture;var subToolDiv=this.SubToolsDiv;(0,_jquery2.default)(".subtool-del").click(function(){hqChart.SelectChartDrawPicture=null;hqChart.ClearChartDrawPicture(picture);// subToolDiv.innerHTML = "";
9943
- (0,_jquery2.default)(".subTolls").css("display","none");});var self=this;(0,_jquery2.default)(".subtool-set").click(function(){(0,_jquery2.default)(self.SubToolsDiv).hide();//创建div设置窗口
9944
- if(!self.SettingMenu)self.SettingMenu=new ChartPictureTextSettingMenu(frame.ChartBorder.UIElement.parentNode);self.SettingMenu.ChartPicture=picture;self.SettingMenu.HQChart=hqChart;self.SettingMenu.Position={Left:right+80,Top:top+20};self.SettingMenu.DoModal();});(0,_jquery2.default)(".changes-color").click(function(){document.getElementById('color').click();(0,_jquery2.default)(".change-color").change(function(){var color=(0,_jquery2.default)(".change-color").val();picture.LineColor=color;picture.PointColor=color;if(hqChart.ChartDrawStorage)hqChart.ChartDrawStorage.SaveDrawData(picture);//保存下
9945
- });});//成交量分布图设置
9946
- (0,_jquery2.default)(".vp-set").click(function(){if(!self.SettingPV)self.SettingPV=new ChartPictureVolProfileSettingMenu(frame.ChartBorder.UIElement.parentNode);self.SettingPV.ChartPicture=picture;self.SettingPV.HQChart=hqChart;self.SettingPV.Position={Left:right+80,Top:top+20};self.SettingPV.DoModal();});JSConsole.Chart.Log("[ChartPictureSettingMenu::DoModal]",{Top:top,Left:left,Right:right});};}function ChartPictureVolProfileSettingMenu(divElement){this.newMethod=IDivDialog;//派生
9947
- this.newMethod(divElement);delete this.newMethod;this.ChartPicture;this.SettingDiv;this.Position;this.ID=Guid();this.Close=function(){if(this.SettingDiv)this.DivElement.removeChild(this.SettingDiv);//直接删除
9948
- };this.DoModal=function(){var valueAreaVol=this.ChartPicture.VAVol;//Value area volume
9949
- var barPosition=this.ChartPicture.BarPosition;var self=this;var div=document.getElementById(this.ID);if(!div){div=document.createElement("div");div.className='jchart-modifyindex-box';div.id=this.ID;this.DivElement.appendChild(div);this.SettingDiv=div;}else{this.SettingDiv=div;}div.innerHTML='<div class=\'parameter\'> <div class=\'parameter-header\'> <span>\u56FA\u5B9A\u8303\u56F4\u6210\u4EA4\u91CF\u5206\u5E03\u8BBE\u7F6E</span> <strong id=\'close\' class=\'icon iconfont icon-close\'></strong> </div> <div class=\'parameter-content\'>\n <input class=\'row-line\' value='+valueAreaVol+' />VAVol <br>\n <input class=\'row-line\' value='+barPosition+' />BarPosition\n </div> <div class=\'parameter-footer\'> <button class=\'submit\' >\u786E\u5B9A</button> <button class=\'cancel\' >\u53D6\u6D88</button> </div> </div>';var pixelTatio=GetDevicePixelRatio();var frame=this.HQChart.Frame.SubFrame[0].Frame;var top=frame.ChartBorder.Top+40;var right=frame.ChartBorder.Right;var left=frame.ChartBorder.GetLeft();this.SettingDiv.style.right=right/pixelTatio+"px";this.SettingDiv.style.top=top/pixelTatio+"px";this.SettingDiv.style.position="absolute";this.SettingDiv.style.display="block";var btnCancel=div.getElementsByClassName("cancel")[0];btnCancel.onclick=function(){self.Close();};var btnClose=div.getElementsByClassName("icon iconfont icon-close")[0];btnClose.onclick=function(){self.Close();};var btnSubmit=div.getElementsByClassName("submit")[0];btnSubmit.onclick=function(){var value=div.getElementsByClassName("row-line")[0].value;self.ChartPicture.VAVol=parseFloat(value);var value=parseInt(div.getElementsByClassName("row-line")[1].value);self.ChartPicture.BarPosition=value>0?1:0;self.ChartPicture.RequestVolumeProfileData();self.Close();};};}///////////////////////////////////////////////////////////////////////////////////////
9918
+ if(upperSymbol.charAt(0)=='1'&&(upperSymbol.charAt(1)=='5'||upperSymbol.charAt(1)=='6'||upperSymbol.charAt(1)=='7'||upperSymbol.charAt(1)=='8'))return true;}return false;}/*
9919
+ function ChartPictureVolProfileSettingMenu(divElement)
9920
+ {
9921
+ this.newMethod=IDivDialog; //派生
9922
+ this.newMethod(divElement);
9923
+ delete this.newMethod;
9924
+
9925
+ this.ChartPicture;
9926
+ this.SettingDiv;
9927
+ this.Position;
9928
+ this.ID=Guid();
9929
+
9930
+ this.Close=function()
9931
+ {
9932
+ if (this.SettingDiv) this.DivElement.removeChild(this.SettingDiv); //直接删除
9933
+ }
9934
+
9935
+ this.DoModal=function()
9936
+ {
9937
+ var valueAreaVol=this.ChartPicture.VAVol; //Value area volume
9938
+ var barPosition=this.ChartPicture.BarPosition;
9939
+
9940
+ var self=this;
9941
+ var div=document.getElementById(this.ID);
9942
+ if (!div)
9943
+ {
9944
+ div=document.createElement("div");
9945
+ div.className='jchart-modifyindex-box';
9946
+ div.id=this.ID;
9947
+ this.DivElement.appendChild(div);
9948
+ this.SettingDiv=div;
9949
+ }
9950
+ else
9951
+ {
9952
+ this.SettingDiv=div;
9953
+ }
9954
+
9955
+ div.innerHTML=
9956
+ `<div class='parameter'>\
9957
+ <div class='parameter-header'>\
9958
+ <span>固定范围成交量分布设置</span>\
9959
+ <strong id='close' class='icon iconfont icon-close'></strong>\
9960
+ </div>\
9961
+ <div class='parameter-content'>
9962
+ <input class='row-line' value=${valueAreaVol} />VAVol <br>
9963
+ <input class='row-line' value=${barPosition} />BarPosition
9964
+ </div>\
9965
+ <div class='parameter-footer'>\
9966
+ <button class='submit' >确定</button>\
9967
+ <button class='cancel' >取消</button>\
9968
+ </div>\
9969
+ </div>`;
9970
+
9971
+ var pixelTatio = GetDevicePixelRatio();
9972
+ var frame=this.HQChart.Frame.SubFrame[0].Frame;
9973
+ var top=frame.ChartBorder.Top + 40;
9974
+ var right=frame.ChartBorder.Right;
9975
+ var left=frame.ChartBorder.GetLeft();
9976
+
9977
+ this.SettingDiv.style.right = right/pixelTatio + "px";
9978
+ this.SettingDiv.style.top = top/pixelTatio + "px";
9979
+ this.SettingDiv.style.position = "absolute";
9980
+ this.SettingDiv.style.display = "block";
9981
+
9982
+ var btnCancel=div.getElementsByClassName("cancel")[0];
9983
+ btnCancel.onclick=function()
9984
+ {
9985
+ self.Close();
9986
+ }
9987
+
9988
+ var btnClose=div.getElementsByClassName("icon iconfont icon-close")[0];
9989
+ btnClose.onclick=function()
9990
+ {
9991
+ self.Close();
9992
+ }
9993
+
9994
+ var btnSubmit=div.getElementsByClassName("submit")[0];
9995
+ btnSubmit.onclick=function()
9996
+ {
9997
+ var value=div.getElementsByClassName("row-line")[0].value;
9998
+ self.ChartPicture.VAVol=parseFloat(value);
9999
+ var value=parseInt(div.getElementsByClassName("row-line")[1].value);
10000
+ self.ChartPicture.BarPosition=value>0?1:0;
10001
+
10002
+ self.ChartPicture.RequestVolumeProfileData();
10003
+ self.Close();
10004
+ }
10005
+ }
10006
+ }
10007
+ *////////////////////////////////////////////////////////////////////////////////////////
9950
10008
  //
9951
10009
  // 各个品种分钟走势图坐标信息
9952
10010
  //
@@ -15036,7 +15094,7 @@ data.Tooltip.style.display="inline";};this.OnLeaveButton=function(e,data){data.T
15036
15094
  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);//保存下
15037
15095
  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);//保存下
15038
15096
  this.HQChart.Draw();};this.ModifyLockChart=function(){if(!this.ChartPicture||!this.HQChart)return;this.ChartPicture.EnableMove=!this.ChartPicture.EnableMove;if(this.LockButton)this.LockButton.Span.style['color']=this.ChartPicture.EnableMove?"rgb(220,220,220)":"rgb(0,0,0)";};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);//保存下
15039
- this.HQChart.Draw();};this.ModifyFontZoom=function(step){if(!this.ChartPicture||!this.HQChart)return;if(this.ChartPicture.FontOption.Size+step<=2)return;var chart=this.ChartPicture;chart.FontOption.Size+=step;if(chart.ClassName=="ChartDrawNote")chart.NoteFontOption.Size+=step;this.HQChart.Draw();};this.ModifyText=function(){if(!this.ChartPicture||!this.HQChart)return;var chart=this.ChartPicture;switch(chart.ClassName){case"ChartDrawPictureText":chart.Text=this.GetRandomText(chart.Text);break;case"ChartDrawAnchoredText":var text=null;if(IFrameSplitOperator.IsNonEmptyArray(chart.AryText))text=chart.AryText[0].Text;chart.AryText=[{Text:this.GetRandomText(text)},{Text:this.GetRandomText(null)}];break;case"ChartDrawNote":var text=null;if(IFrameSplitOperator.IsNonEmptyArray(chart.AryNoteText))text=chart.AryNoteText[0].Text;chart.AryNoteText=[{Text:this.GetRandomText(text)},{Text:this.GetRandomText(null)}];break;default:return;}this.HQChart.Draw();};this.GetRandomText=function(text){var ARY_TEXT=["下跌形态","反转十字星","低位档五阳线","倒V型反转","双顶","持续整理形态"];var index=this.GetRandomTestData(0,ARY_TEXT.length-1);for(var i=index;i<10;++i){var value=ARY_TEXT[i%ARY_TEXT.length];if(value!=text)return value;}};this.GetRandomTestData=function(min,max)//测试数据
15097
+ this.HQChart.Draw();};this.ModifyFontZoom=function(step){if(!this.ChartPicture||!this.HQChart)return;if(this.ChartPicture.FontOption.Size+step<=2)return;var chart=this.ChartPicture;chart.FontOption.Size+=step;if(chart.ClassName=="ChartDrawNote")chart.NoteFontOption.Size+=step;this.HQChart.Draw();};this.ModifyText=function(){if(!this.ChartPicture||!this.HQChart)return;var chart=this.ChartPicture;switch(chart.ClassName){case"ChartDrawPictureText":chart.Text=this.GetRandomText(chart.Text);break;case"ChartDrawAnchoredText":var text=null;if(IFrameSplitOperator.IsNonEmptyArray(chart.AryText))text=chart.AryText[0].Text;chart.AryText=[{Text:this.GetRandomText(text)},{Text:this.GetRandomText(null)}];break;case"ChartDrawNote":var text=null;if(IFrameSplitOperator.IsNonEmptyArray(chart.AryNoteText))text=chart.AryNoteText[0].Text;chart.AryNoteText=[{Text:this.GetRandomText(text)},{Text:this.GetRandomText(null)}];break;default:return;}this.HQChart.Draw();};this.AdvancedSetting=function(){};this.GetRandomText=function(text){var ARY_TEXT=["下跌形态","反转十字星","低位档五阳线","倒V型反转","双顶","持续整理形态"];var index=this.GetRandomTestData(0,ARY_TEXT.length-1);for(var i=index;i<10;++i){var value=ARY_TEXT[i%ARY_TEXT.length];if(value!=text)return value;}};this.GetRandomTestData=function(min,max)//测试数据
15040
15098
  {min=Math.ceil(min);max=Math.floor(max);return Math.floor(Math.random()*(max-min+1))+min;//含最大值,含最小值
15041
15099
  };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,bShowFontZoom=false,bModifyText=false,bAdvanced=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;bShowFontZoom=true;if(chart.ClassName=="ChartDrawAnchoredText")bModifyText=true;bgColor=chart.BGColor;fontColor=chart.TextColor;borderColor=chart.BorderColor;}else if(chart.ClassName=="ChartDrawPictureText"){bModifyText=true;bShowFontZoom=true;bShowLineColor=true;}else if(chart.ClassName=="ChartDrawNote"){bShowBGColor=true;bShowFontColor=true;bShowBorderColor=true;bModifyText=true;bShowFontZoom=true;bgColor=chart.NoteBGColor;fontColor=chart.NoteTextColor;borderColor=chart.NoteBorderColor;}else if(chart.ClassName=="ChartDrawVolProfile"){bShowLineColor=false;bAdvanced=true;}else if(chart.ClassName=="ChartDrawPictureIconFont"){bShowFontZoom=true;}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;}}if(this.LockButton){var item=this.LockButton;item.Span.style['color']=this.ChartPicture.EnableMove?"rgb(220,220,220)":"rgb(0,0,0)";}if(this.FontZoomButton){var item=this.FontZoomButton;this.ShowButton(item.Div,bShowFontZoom?"inline":"none");}if(this.FontZoomOutButton){var item=this.FontZoomOutButton;this.ShowButton(item.Div,bShowFontZoom?"inline":"none");}if(this.ModifyTextButton){var item=this.ModifyTextButton;this.ShowButton(item.Div,bModifyText?"inline":"none");}if(this.AdvancedButton){var item=this.AdvancedButton;this.ShowButton(item.Div,bAdvanced?"inline":"none");}};this.OnMouseDownTitle=function(e){var _this94=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){_this94.DocOnMouseMoveTitle(e);};document.onmouseup=function(e){_this94.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;document.onmousemove=null;document.onmouseup=null;};}/*
15042
15100
  Copyright (c) 2018 jones
@@ -15474,7 +15532,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
15474
15532
  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);};}/********************************************************************************
15475
15533
  * 版本信息输出
15476
15534
  *
15477
- */var HQCHART_VERSION="1.1.15103";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();//把给外界调用的方法暴露出来
15535
+ */var HQCHART_VERSION="1.1.15105";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();//把给外界调用的方法暴露出来
15478
15536
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
15479
15537
  // BaseIndex:BaseIndex,
15480
15538
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.15104",
3
+ "version": "1.1.15106",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -1052,6 +1052,11 @@ function JSDialogModifyDraw()
1052
1052
  this.HQChart.Draw();
1053
1053
  }
1054
1054
 
1055
+ this.AdvancedSetting=function()
1056
+ {
1057
+
1058
+ }
1059
+
1055
1060
  this.GetRandomText=function(text)
1056
1061
  {
1057
1062
  var ARY_TEXT=["下跌形态","反转十字星","低位档五阳线","倒V型反转","双顶","持续整理形态"];
@@ -2618,12 +2618,6 @@ JSChart.RegisterScriptIndexChart=function(name, option)
2618
2618
  return g_ScriptIndexChartFactory.Add(name, option);
2619
2619
  }
2620
2620
 
2621
- //注册设置对话框类
2622
- //option:{ Create:创建类方法 }
2623
- JSChart.RegisterDialogClass=function(name, option)
2624
- {
2625
- return g_DialogFactory.Add(name, option);
2626
- }
2627
2621
 
2628
2622
  //注册框架类
2629
2623
  JSChart.RegisterChartFrameClass=function(name, option)
@@ -47811,17 +47805,40 @@ function ChartLock()
47811
47805
  if (!out || !IFrameSplitOperator.IsNonEmptyArray(aryText)) return false;
47812
47806
 
47813
47807
  this.Canvas.font=defaultFont;
47814
- var lineHeight=this.Canvas.measureText("擎").width; //行高
47808
+ var defaultLineHeight=this.Canvas.measureText("擎").width; //行高
47809
+ var lineHeight=defaultLineHeight;
47815
47810
  var height=0, width=0;
47816
47811
  out.AryText=[];
47817
47812
  for(var i=0;i<aryText.length;++i)
47818
47813
  {
47819
47814
  var item=aryText[i];
47820
- if (!item || !item.Text) continue;
47821
- var textWidth=this.Canvas.measureText(item.Text).width;
47815
+ if (!item || (!item.Text && !item.Image)) continue;
47816
+ if (item.Image)
47817
+ {
47818
+ textWidth=item.Image.Width;
47819
+ lineHeight=item.Image.Height;
47820
+ }
47821
+ else
47822
+ {
47823
+ if (item.Font)
47824
+ {
47825
+ this.Canvas.font=item.Font;
47826
+ lineHeight=this.Canvas.measureText("擎").width;
47827
+ }
47828
+ else
47829
+ {
47830
+ this.Canvas.font=defaultFont;
47831
+ lineHeight=defaultLineHeight;
47832
+ }
47833
+
47834
+ var textWidth=this.Canvas.measureText(item.Text).width;
47835
+ }
47822
47836
 
47823
47837
  var lineItem={ Text:item.Text, Width:textWidth, Height:lineHeight, Color:item.Color, TextMargin:{ Top:0, Bottom:0, Left:0, Right:0 }, YOffset:0 };
47824
47838
  if (IFrameSplitOperator.IsNumber(item.YOffset)) lineItem.YOffset=item.YOffset;
47839
+ if (item.Font) lineItem.Font=item.Font;
47840
+ if (IFrameSplitOperator.IsNumber(item.Align)) lineItem.Align=item.Align; //左右对齐 0=左 1=中 2=右
47841
+ if (item.Image) lineItem.Image=item.Image;
47825
47842
  if (item.TextMargin)
47826
47843
  {
47827
47844
  var margin=item.TextMargin;
@@ -47945,6 +47962,9 @@ function ChartLock()
47945
47962
  if (item.Color) this.Canvas.fillStyle=item.Color;
47946
47963
  else this.Canvas.fillStyle=this.TextColor;
47947
47964
 
47965
+ if (item.Font) this.Canvas.font = item.Font;
47966
+ else this.Canvas.font = this.Font;
47967
+
47948
47968
  yText+=item.Height;
47949
47969
  this.Canvas.fillText(item.Text, xText, yText+item.YOffset);
47950
47970
  }
@@ -47961,11 +47981,35 @@ function ChartLock()
47961
47981
  for(var i=0;i<outSize.AryText.length;++i)
47962
47982
  {
47963
47983
  var item=outSize.AryText[i];
47964
- if (item.Color) this.Canvas.fillStyle=item.Color;
47965
- else this.Canvas.fillStyle=this.TextColor;
47984
+ if (item.Image)
47985
+ {
47986
+ xText=left;
47987
+ if (item.Align===1)
47988
+ {
47989
+ if (outSize.Width>item.Width) xText+=(outSize.Width-item.Width)/2;
47990
+ }
47966
47991
 
47967
- yText+=item.Height;
47968
- this.Canvas.fillText(item.Text, xText, yText+item.YOffset);
47992
+ this.Canvas.drawImage(item.Image.Data, xText, yText, item.Image.Width, item.Image.Height);
47993
+
47994
+ yText+=item.Height;
47995
+ }
47996
+ else
47997
+ {
47998
+ if (item.Color) this.Canvas.fillStyle=item.Color;
47999
+ else this.Canvas.fillStyle=this.TextColor;
48000
+
48001
+ if (item.Font) this.Canvas.font = item.Font;
48002
+ else this.Canvas.font = this.Font;
48003
+
48004
+ yText+=item.Height;
48005
+ xText=left;
48006
+ if (item.Align===1)
48007
+ {
48008
+ if (outSize.Width>item.Width) xText+=(outSize.Width-item.Width)/2;
48009
+ }
48010
+
48011
+ this.Canvas.fillText(item.Text, xText, yText+item.YOffset);
48012
+ }
47969
48013
  }
47970
48014
  }
47971
48015
  }
@@ -100963,239 +101007,9 @@ function IsFundSymbol(symbol)
100963
101007
  return false;
100964
101008
  }
100965
101009
 
100966
- //设置对话框工厂类
100967
- function DialogFactory()
100968
- {
100969
- //[key:name, { Create:function(divElement) { return new class(divElement); }} ]
100970
- this.DataMap=new Map(
100971
- [
100972
- ["ChartPictureSettingMenu", { Create:function(divElement) { return new ChartPictureSettingMenu(divElement); } }],
100973
- ]);
100974
-
100975
- this.Create=function(name, option)
100976
- {
100977
- if (!this.DataMap.has(name))
100978
- {
100979
- JSConsole.Chart.Warn(`[DialogFactory::Create] can't find class=${name}.`);
100980
- return null;
100981
- }
100982
-
100983
- var item=this.DataMap.get(name);
100984
- return item.Create(option);
100985
- }
100986
-
100987
- this.Add=function(name, option)
100988
- {
100989
- this.DataMap.set(name, { Create:option.Create } );
100990
- }
100991
- }
100992
-
100993
- var g_DialogFactory=new DialogFactory();
100994
-
100995
- //设置窗口基类
100996
- function IDivDialog(divElement)
100997
- {
100998
- this.DivElement=divElement; //父节点
100999
- this.ID=null; //div id
101000
- this.TimeOut=null; //定时器
101001
-
101002
- //隐藏窗口
101003
- this.Hide=function()
101004
- {
101005
- $("#"+this.ID).hide();
101006
- }
101007
-
101008
- //显示窗口
101009
- this.Show=function(left,top,width,height)
101010
- {
101011
- var cssData={display:'block'};
101012
- if (IFrameSplitOperator.IsNumber(left)) cssData.left=left+'px';
101013
- if (IFrameSplitOperator.IsNumber(top)) cssData.top=top+'px';
101014
- if (IFrameSplitOperator.IsNumber(width)) cssData.width=width+'px';
101015
- if (IFrameSplitOperator.IsNumber(height)) cssData.height=height+'px';
101016
-
101017
- $("#"+this.ID).css(cssData);
101018
- }
101019
- }
101020
-
101021
- //等待动画窗口
101022
- function WaitDialog(divElement)
101023
- {
101024
- this.newMethod=IDivDialog; //派生
101025
- this.newMethod(divElement);
101026
- delete this.newMethod;
101027
-
101028
- this.Title='加载中......';
101029
- this.Dialog;
101030
-
101031
- //隐藏窗口
101032
- this.Close=function()
101033
- {
101034
- if (this.Dialog)
101035
- {
101036
- this.DivElement.removeChild(this.Dialog);
101037
- this.Dialog=null;
101038
- }
101039
- }
101040
-
101041
- this.SetTitle=function(title)
101042
- {
101043
- this.Title=title;
101044
- if (!this.Dialog) return;
101045
- //TODO: 更新标题数据
101046
- }
101047
-
101048
- this.Create=function()
101049
- {
101050
- this.ID=Guid();
101051
- var div=document.createElement('div');
101052
- div.className='jchart-wait-box';
101053
- div.id=this.ID;
101054
- div.innerHTML=
101055
- `<div class='parameter jchart-kline-match-box'>
101056
- <div class='parameter-header'>
101057
- <span>${this.Title}</span>
101058
- </div>
101059
- </div>`.trim();
101060
-
101061
- this.DivElement.appendChild(div);
101062
- this.Dialog=div;
101063
- }
101064
-
101065
- //显示
101066
- this.DoModal=function(event)
101067
- {
101068
- this.Title=event.data.Title;
101069
- var chart=event.data.Chart;
101070
- if (this.ID==null) this.Create(); //第1次 需要创建div
101071
-
101072
- //居中显示
101073
- var border=chart.Frame.ChartBorder;
101074
- var scrollPos=GetScrollPosition();
101075
- var left=border.GetWidth()/2;
101076
- var top=border.GetHeight()/2;
101077
-
101078
- this.Show(left,top,200,40); //显示
101079
- }
101080
- }
101081
-
101082
- //画图工具 单个图形设置
101083
- function ChartPictureSettingMenu(divElement)
101084
- {
101085
- this.newMethod=IDivDialog; //派生
101086
- this.newMethod(divElement);
101087
- delete this.newMethod;
101088
-
101089
- this.HQChart;
101090
- this.ChartPicture;
101091
- this.SubToolsDiv;
101092
- this.SettingMenu;
101093
- this.SettingPV;
101094
-
101095
- this.DoModal=function(event)
101096
- {
101097
- var $body;
101098
- if (!this.SubToolsDiv)
101099
- {
101100
- this.ID=Guid();
101101
- var div=document.createElement("div");
101102
- div.className='subTolls';
101103
- div.id=this.ID;
101104
- this.DivElement.appendChild(div);
101105
- //$body = $("."+event.data.HQChart.ClassName).context.body;
101106
- //$body.append(div);
101107
- this.SubToolsDiv=div;
101108
- }
101109
- this.HQChart=event.data.HQChart;
101110
- this.ChartPicture=event.data.ChartPicture;
101111
-
101112
- var pixelTatio = GetDevicePixelRatio();
101113
- var frame=this.HQChart.Frame.SubFrame[0].Frame;
101114
- // var top=frame.ChartBorder.GetTopTitle();
101115
- var top=frame.ChartBorder.Top + 40;
101116
- // var right=frame.ChartBorder.GetRight();
101117
- var right=frame.ChartBorder.Right;
101118
- var left=frame.ChartBorder.GetLeft();
101119
- var className = this.ChartPicture.ClassName; //='ChartDrawPictureText'时加“设置”
101120
- var lineColor=this.ChartPicture.LineColor;
101121
- if (lineColor.indexOf("rgb(")==0 || lineColor.indexOf("RGB(")==0)
101122
- lineColor=IChartDrawPicture.RGBToHex(lineColor.toLowerCase());
101123
- var toolsDiv = "";
101124
- if(className === 'ChartDrawPictureText')
101125
- {
101126
- toolsDiv = '<span class="changes-color" title="改变图形颜色">'+
101127
- '<i class="iconfont icon-bianji"></i>'+
101128
- '<input type="color" name="color" id="color" class="change-color" value="'+ lineColor +'">'+
101129
- '</span>\n' +
101130
- '<span class="subtool-set" title="设置"><i class="iconfont icon-shezhi"></i></span>'+
101131
- '<span class="subtool-del"><i class="iconfont icon-recycle_bin"></i></span>';
101132
- }
101133
- else if (className=="ChartDrawVolProfile")
101134
- {
101135
- toolsDiv='<span class="vp-set" title="设置"><i class="iconfont icon-shezhi"></i></span>'+
101136
- '<span class="subtool-del"><i class="iconfont icon-recycle_bin"></i></span>';
101137
- }
101138
- else
101139
- {
101140
- toolsDiv =
101141
- '<p class="changes-color" title="改变图形颜色"><i class="iconfont icon-bianji"></i>' +
101142
- '<input type="color" name="color" id="color" class="change-color" value="'+ lineColor +'"></p>\n' +
101143
- ' <p class="subtool-del"><i class="iconfont icon-recycle_bin"></i></p>';
101144
- }
101145
-
101146
-
101147
- this.SubToolsDiv.style.right = right/pixelTatio + "px";
101148
- this.SubToolsDiv.style.top = top/pixelTatio + "px";
101149
- this.SubToolsDiv.innerHTML = toolsDiv;
101150
- this.SubToolsDiv.style.position = "absolute";
101151
- this.SubToolsDiv.style.display = "block";
101152
-
101153
- var hqChart = this.HQChart;
101154
- var picture = this.ChartPicture;
101155
- var subToolDiv = this.SubToolsDiv;
101156
- $(".subtool-del").click(function(){
101157
- hqChart.SelectChartDrawPicture=null;
101158
- hqChart.ClearChartDrawPicture(picture);
101159
- // subToolDiv.innerHTML = "";
101160
- $(".subTolls").css("display","none");
101161
- });
101162
- var self = this;
101163
- $(".subtool-set").click(function(){
101164
- $(self.SubToolsDiv).hide();
101165
- //创建div设置窗口
101166
- if (!self.SettingMenu) self.SettingMenu=new ChartPictureTextSettingMenu(frame.ChartBorder.UIElement.parentNode);
101167
-
101168
- self.SettingMenu.ChartPicture=picture;
101169
- self.SettingMenu.HQChart=hqChart;
101170
- self.SettingMenu.Position={Left:right + 80,Top:top + 20};
101171
- self.SettingMenu.DoModal();
101172
- });
101173
- $(".changes-color").click(function () {
101174
- document.getElementById('color').click();
101175
- $(".change-color").change(function () {
101176
- var color = $(".change-color").val();
101177
- picture.LineColor = color;
101178
- picture.PointColor = color;
101179
- if (hqChart.ChartDrawStorage) hqChart.ChartDrawStorage.SaveDrawData(picture); //保存下
101180
- });
101181
- });
101182
-
101183
- //成交量分布图设置
101184
- $(".vp-set").click(function()
101185
- {
101186
- if (!self.SettingPV) self.SettingPV=new ChartPictureVolProfileSettingMenu(frame.ChartBorder.UIElement.parentNode);
101187
- self.SettingPV.ChartPicture=picture;
101188
- self.SettingPV.HQChart=hqChart;
101189
- self.SettingPV.Position={Left:right + 80,Top:top + 20};
101190
- self.SettingPV.DoModal();
101191
- });
101192
-
101193
-
101194
- JSConsole.Chart.Log("[ChartPictureSettingMenu::DoModal]", {Top:top,Left:left, Right:right});
101195
- }
101196
- }
101197
101010
 
101198
101011
 
101012
+ /*
101199
101013
  function ChartPictureVolProfileSettingMenu(divElement)
101200
101014
  {
101201
101015
  this.newMethod=IDivDialog; //派生
@@ -101284,6 +101098,7 @@ function ChartPictureVolProfileSettingMenu(divElement)
101284
101098
  }
101285
101099
  }
101286
101100
  }
101101
+ */
101287
101102
 
101288
101103
 
101289
101104