hqchart 1.1.14628 → 1.1.14632

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.
@@ -4061,11 +4061,20 @@ if(firstOpen==null)return;var drawType=this.DrawType;if(this.CustomDrawType!=nul
4061
4061
  }return this.PtInKBar(x,y,{OverlayKLine:true});};this.DrawSelectedStatus=function(){this.DrawLinePoint({OverlayKLine:true});};}//K线表格
4062
4062
  function ChartKLineTable(){this.newMethod=IChartPainting;//派生
4063
4063
  this.newMethod();delete this.newMethod;this.ClassName='ChartKlineTable';//类名
4064
- this.Data;this.RowName;this.IsShowRowName=false;this.BGColor;//背景色
4064
+ this.Data;this.RowName;this.RowNamePosition=1;//0=不显示 1=左边内部 2=左边外部 3=右边外部
4065
+ this.BGColor;//背景色
4066
+ this.BorderColor;//分割线颜色
4065
4067
  this.RowCount=5;//行数
4066
4068
  this.RowHeight=10;//行高
4067
- this.TextFontConfig=CloneData(g_JSChartResource.ChartKLineTable.TextFont);this.ItemMergin=CloneData(g_JSChartResource.ChartKLineTable.ItemMergin);this.TextFont;this.TextColor='rgb(0,0,0)';this.NameColor="rgb(0,0,0)";this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen)return;if(this.RowCount<=0)return;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();var height=border.Bottom-border.TopTitle;this.RowHeight=height/this.RowCount;var xOffset=border.LeftEx+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var top=border.TopTitle;var bottom=border.Bottom;if(this.BGColor){this.Canvas.fillStyle=this.BGColor;var left=border.LeftEx;var width=border.RightEx-border.LeftEx;var height=bottom-top;this.Canvas.fillRect(left,top,width,height);}var itemHeight=this.RowHeight;var itemWidth=dataWidth+distanceWidth;if(itemHeight-this.ItemMergin.Top-this.ItemMergin.Bottom>0)itemHeight=itemHeight-this.ItemMergin.Left-this.ItemMergin.Right;if(itemWidth-this.ItemMergin.Left-this.ItemMergin.Right>0)itemWidth=itemWidth-this.ItemMergin.Left-this.ItemMergin.Right;var font=this.GetDynamicTextFont(itemHeight,itemWidth);this.TextFont=font;this.Canvas.font=this.TextFont;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var item=this.Data.Data[i];if(!item)continue;var left=xOffset;var right=xOffset+dataWidth+distanceWidth;if(right>chartright)break;var x=left+(right-left)/2;if(x>chartright)break;if(j==0&&this.IsShowRowName){this.DrawRowName(top,bottom,left,right);}else{this.DrawRow(item,top,bottom,left,right);//绘制一列
4068
- }}};this.DrawRowName=function(top,bottom,left,right){if(!IFrameSplitOperator.IsNonEmptyArray(this.RowName))return;var x=left,y=top,width=right-left;for(var i=0;i<this.RowName.length;++i){var item=this.RowName[i];var rtBG={Left:x,Top:y,Right:right,Height:this.RowHeight,Width:width};rtBG.Bottom=rtBG.Top+this.RowHeight;if(item.Name&&rtBG.Width>10){this.Canvas.fillStyle=item.Color?item.Color:this.TextColor;this.Canvas.textBaseline='middle';if(item.TextAlign=='right'){this.Canvas.textAlign='right';this.Canvas.fillText(item.Name,rtBG.Right-2,rtBG.Top+this.RowHeight/2,width-4);}else if(item.TextAlign=='center'){this.Canvas.textAlign='center';this.Canvas.fillText(item.Name,rtBG.Left+rtBG.Width/2,rtBG.Top+this.RowHeight/2,width-4);}else{this.Canvas.textAlign='left';this.Canvas.fillText(item.Name,rtBG.Left+2,rtBG.Top+this.RowHeight/2,width-4);}}y+=this.RowHeight;}};this.DrawRow=function(data,top,bottom,left,right){var x=left,y=top,width=right-left;for(var i=0;i<data.length;++i){var item=data[i];var rtBG={Left:x,Top:y,Right:right,Height:this.RowHeight,Width:width};rtBG.Bottom=rtBG.Top+this.RowHeight;if(item.BGColor){this.Canvas.fillStyle=item.BGColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}if(item.Color&&rtBG.Width>10){this.Canvas.fillStyle=item.Color;this.Canvas.textBaseline='middle';if(item.TextAlign=='right'){this.Canvas.textAlign='right';this.Canvas.fillText(item.Text,rtBG.Right-2,rtBG.Top+this.RowHeight/2,width-4);}else if(item.TextAlign=='center'){this.Canvas.textAlign='center';this.Canvas.fillText(item.Text,rtBG.Left+rtBG.Width/2,rtBG.Top+this.RowHeight/2,width-4);}else{this.Canvas.textAlign='left';this.Canvas.fillText(item.Text,rtBG.Left+2,rtBG.Top+this.RowHeight/2,width-4);}}y+=this.RowHeight;}};this.GetDynamicTextFont=function(cellHeight,width,fontOption){var fontSize=parseInt(cellHeight)-2;if(cellHeight<5)fontSize=parseInt(cellHeight);//高度太小了就不要上下间距了
4069
+ this.RowHeightType=1;//0=均分 1=固定高度
4070
+ this.TextFontConfig=CloneData(g_JSChartResource.ChartKLineTable.TextFont);this.ItemMergin=CloneData(g_JSChartResource.ChartKLineTable.ItemMergin);this.TextFont;this.TextColor='rgb(0,0,0)';this.AryTableData=[];this.MapCache=null;//key=date/date-time value={ Date:, Time:, Data:[ ] }
4071
+ this.GetKValue=ChartData.GetKValue;this.BuildCacheData=function(){var mapData=new _map2.default();this.MapCache=mapData;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryTableData))return;for(var i=0;i<this.AryTableData.length;++i){var item=this.AryTableData[i];var key=this.BuildKey(item);mapData.set(key,item);}};//绘制背景色
4072
+ this.DrawBG=function(rtBG){if(!this.BGColor)return;if(this.BGColor){this.Canvas.fillStyle=this.BGColor;this.Canvas.fillRect(rtBG.Left+1,rtBG.Top,rtBG.Width-1,rtBG.Height);}};this.DrawBorder=function(rtBG){if(!this.BorderColor)return;var yLine=rtBG.Top;for(var i=0;i<30;++i){this.Canvas.beginPath();this.Canvas.moveTo(rtBG.Left,ToFixedPoint(yLine));this.Canvas.lineTo(rtBG.Right,ToFixedPoint(yLine));this.Canvas.stroke();yLine+=this.RowHeight;if(yLine>=rtBG.Bottom)break;}};//计算行高
4073
+ this.CalculateRowHeight=function(rtBG){if(this.RowHeightType==1){this.RowHeight=this.TextFontConfig.FontMaxSize+this.ItemMergin.Top+this.ItemMergin.Bottom;}else{this.RowHeight=rtBG.Height/this.RowCount;}};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryTableData))return;if(!this.MapCache||this.MapCache.size<=0)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen)return;if(this.RowCount<=0)return;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();var height=border.Bottom-border.TopTitle;var xOffset=border.LeftEx+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var top=border.TopTitle;var bottom=border.Bottom;//绘制背景
4074
+ var rtBG={Left:border.LeftEx,Top:top,Right:border.RightEx,Bottom:bottom};rtBG.Width=rtBG.Right-rtBG.Left;rtBG.Height=rtBG.Bottom-rtBG.Top;this.DrawBG(rtBG);this.CalculateRowHeight(rtBG);var itemHeight=this.RowHeight;var itemWidth=dataWidth+distanceWidth;if(itemHeight-this.ItemMergin.Top-this.ItemMergin.Bottom>0)itemHeight=itemHeight-this.ItemMergin.Top-this.ItemMergin.Bottom;if(itemWidth-this.ItemMergin.Left-this.ItemMergin.Right>0)itemWidth=itemWidth-this.ItemMergin.Left-this.ItemMergin.Right;var font=this.GetDynamicTextFont(itemHeight,itemWidth);this.TextFont=font;this.Canvas.font=this.TextFont;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=this.Data.Data[i];if(!kItem)continue;var left=xOffset;var right=xOffset+dataWidth+distanceWidth;if(right>chartright)break;var x=left+(right-left)/2;if(x>chartright)break;var bDrawName=false;if(j==0&&this.RowNamePosition===1)bDrawName=true;if(bDrawName)this.DrawRowName(top,bottom,left,right);var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var mapItem=this.MapCache.get(key);if(!bDrawName)this.DrawRow(mapItem,top,bottom,left,right);//绘制一列
4075
+ }if(this.RowNamePosition==3)this.DrawRightRowName();this.DrawBorder(rtBG);};this.DrawRowName=function(top,bottom,left,right){if(!IFrameSplitOperator.IsNonEmptyArray(this.RowName))return;var x=left,y=top,width=right-left;var yOffset=3;if(this.ItemMergin.YOffset)yOffset=this.ItemMergin.YOffset;for(var i=0;i<this.RowName.length;++i){var item=this.RowName[i];var rtBG={Left:x,Top:y,Right:right,Height:this.RowHeight,Width:width};rtBG.Bottom=rtBG.Top+this.RowHeight;var yText=rtBG.Bottom-yOffset;if(item.Name&&rtBG.Width>10){this.Canvas.fillStyle=item.Color?item.Color:this.TextColor;this.Canvas.textBaseline='bottom';if(item.TextAlign=='right'){this.Canvas.textAlign='right';this.Canvas.fillText(item.Name,rtBG.Right-2,yText,width-4);}else if(item.TextAlign=='center'){this.Canvas.textAlign='center';this.Canvas.fillText(item.Name,rtBG.Left+rtBG.Width/2,yText,width-4);}else{this.Canvas.textAlign='left';this.Canvas.fillText(item.Name,rtBG.Left+2,yText,width-4);}}y+=this.RowHeight;}};//绘制右侧行名
4076
+ this.DrawRightRowName=function(){var border=this.ChartFrame.GetBorder();if(this.BGColor){var rtRightBG={Left:border.RightEx,Top:border.TopTitle,Right:border.ChartWidth,Bottom:border.Bottom};rtRightBG.Width=rtRightBG.Right-rtRightBG.Left;rtRightBG.Height=rtRightBG.Bottom-rtRightBG.Top;this.Canvas.fillStyle=this.BGColor;this.Canvas.fillRect(rtRightBG.Left+1,rtRightBG.Top,rtRightBG.Width-1,rtRightBG.Height);}var x=border.RightEx,y=border.TopTitle;var yOffset=3;if(this.ItemMergin.YOffset)yOffset=this.ItemMergin.YOffset;for(var i=0;i<this.RowName.length;++i){var item=this.RowName[i];var rtBG={Left:x,Top:y,Right:border.ChartWidth,Height:this.RowHeight};rtBG.Bottom=rtBG.Top+this.RowHeight;rtBG.Width=rtBG.Right-rtBG.Left;var yText=rtBG.Bottom-yOffset;if(rtBG.Bottom>border.Bottom)break;if(item.Name&&rtBG.Width>10){this.Canvas.fillStyle=item.Color?item.Color:this.TextColor;this.Canvas.textBaseline='bottom';this.Canvas.textAlign='left';this.Canvas.fillText(item.Name,rtBG.Left+2,yText);}y+=this.RowHeight;}};this.DrawRow=function(data,top,bottom,left,right){if(!IFrameSplitOperator.IsNonEmptyArray(data.Data))return;var x=left,y=top,width=right-left;var yOffset=3;if(this.ItemMergin.YOffset)yOffset=this.ItemMergin.YOffset;for(var i=0;i<data.Data.length;++i){var item=data.Data[i];var rtBG={Left:x,Top:y,Right:right,Height:this.RowHeight,Width:width};rtBG.Bottom=rtBG.Top+this.RowHeight;if(rtBG.Bottom>bottom)break;if(IFrameSplitOperator.IsNonEmptyArray(item.AryText))//左右显示
4077
+ {var subCellWidth=rtBG.Width/item.AryText.length;var xCell=rtBG.Left;for(var j=0;j<item.AryText.length;++j){var subItem=item.AryText[j];var rtSubBG={Left:xCell,Top:rtBG.Top,Bottom:rtBG.Bottom,Width:subCellWidth,Height:rtBG.Height};rtSubBG.Right=rtSubBG.Left+rtSubBG.Width;if(subItem&&subItem.BGColor){this.Canvas.fillStyle=subItem.BGColor;this.Canvas.fillRect(rtSubBG.Left,rtSubBG.Top,rtSubBG.Width,rtSubBG.Height);}if(subItem&&subItem.Color&&subCellWidth>10){this.Canvas.fillStyle=subItem.Color;this.Canvas.textBaseline='bottom';var yText=rtSubBG.Bottom-yOffset;if(subItem.TextAlign=='right'){this.Canvas.textAlign='right';this.Canvas.fillText(subItem.Text,rtSubBG.Right-2,yText,width-4);}else if(subItem.TextAlign=='center'){this.Canvas.textAlign='center';this.Canvas.fillText(subItem.Text,rtSubBG.Left+rtSubBG.Width/2,yText,width-4);}else{this.Canvas.textAlign='left';this.Canvas.fillText(subItem.Text,rtSubBG.Left+2,yText,width-4);}}xCell+=subCellWidth;}}else{if(item&&item.BGColor){this.Canvas.fillStyle=item.BGColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}if(item&&item.Color&&rtBG.Width>10){this.Canvas.fillStyle=item.Color;this.Canvas.textBaseline='bottom';var yText=rtBG.Bottom-yOffset;if(item.TextAlign=='right'){this.Canvas.textAlign='right';this.Canvas.fillText(item.Text,rtBG.Right-2,yText,width-4);}else if(item.TextAlign=='center'){this.Canvas.textAlign='center';this.Canvas.fillText(item.Text,rtBG.Left+rtBG.Width/2,yText,width-4);}else{this.Canvas.textAlign='left';this.Canvas.fillText(item.Text,rtBG.Left+2,yText,width-4);}}}y+=this.RowHeight;}};this.GetDynamicTextFont=function(cellHeight,width,fontOption){var fontSize=parseInt(cellHeight)-2;if(cellHeight<5)fontSize=parseInt(cellHeight);//高度太小了就不要上下间距了
4069
4078
  if(fontSize>this.TextFontConfig.FontMaxSize)fontSize=this.TextFontConfig.FontMaxSize;else if(fontSize<=0)fontSize=1;var font=this.FormatFontString(fontSize,this.TextFontConfig.Family,fontOption);return font;};this.FormatFontString=function(fontSize,family,option){var font;if(!option){font=fontSize+'px '+family;}else{if(option.Weight)font=option.Weight+' '+fontSize+'px '+family;}return font;};this.GetMaxMin=function(){return{Min:0,Max:this.RowCount};};}//表格
4070
4079
  function ChartSimpleTable(){this.newMethod=IChartPainting;//派生
4071
4080
  this.newMethod();delete this.newMethod;this.ClassName='ChartSimpleTable';//类名
@@ -12280,7 +12289,8 @@ chart.PointGroup=varItem.Draw.DrawData;if(varItem.Draw.Name)chart.Name=varItem.D
12280
12289
  chart.Bars=varItem.Draw.DrawData;chart.BuildCacheData();this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var bShowTitle=true;if(varItem.IsShowTitle===false)bShowTitle=false;if(bShowTitle){var titleData=new DynamicTitleData(chart.Data,varItem.Name,null);titleData.DataType="ChartMultiBar";titleData.GetItemCallback=function(kItem){return chart.GetItem(kItem);};hqChart.TitlePaint[titleIndex].Data[id]=titleData;}};this.CreateMultiText=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.GetKData();//绑定K线
12281
12290
  chart.Texts=varItem.Draw.DrawData;chart.BuildCacheData();this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateMultiSVGIcon=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiSVGIconV2();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.GetKData();//绑定K线
12282
12291
  chart.Family=varItem.Draw.DrawData.Family;chart.AryIcon=varItem.Draw.DrawData.Icon;chart.BuildCacheData();this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateChartDrawSVG=function(hqChart,windowIndex,varItem,i){var chart=new ChartDrawSVG();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.GetKData();if(IFrameSplitOperator.IsBool(varItem.Draw.DrawData.EnableTooltip))chart.EnableTooltip=varItem.Draw.DrawData.EnableTooltip;if(IFrameSplitOperator.IsBool(varItem.Draw.DrawData.IsDrawFirst))chart.IsDrawFirst=varItem.Draw.DrawData.IsDrawFirst;if(varItem.Draw.BuildKeyCallback)chart.BuildKeyCallback=varItem.Draw.BuildKeyCallback;chart.Family=varItem.Draw.DrawData.Family;chart.TextFont=varItem.Draw.DrawData.TextFont;chart.Texts=varItem.Draw.DrawData.Data;chart.BuildCacheData();this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateMulitHtmlDom=function(hqChart,windowIndex,varItem,i){var chart=new ChartMultiHtmlDom();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
12283
- chart.Texts=varItem.Draw.DrawData;chart.DrawCallback=varItem.Draw.Callback;hqChart.ChartPaint.push(chart);};this.CreateStackedBar=function(hqChart,windowIndex,varItem,i){var chart=new ChartStackedBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data.Data=varItem.Draw.DrawData;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarColor))chart.BarColor=varItem.Draw.BarColor;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarName))chart.BarName=varItem.Draw.BarName;if(IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth))chart.LineWidth=varItem.Draw.LineWidth;if(IFrameSplitOperator.IsNumber(varItem.Draw.BarType))chart.BarType=varItem.Draw.BarType;hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);titleData.DataType="ChartStackedBar";hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateKLineTable=function(hqChart,windowIndex,varItem,i){var chart=new ChartKLineTable();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data.Data=varItem.Draw.DrawData;if(IFrameSplitOperator.IsNumber(varItem.Draw.RowCount))chart.RowCount=varItem.Draw.RowCount;if(IFrameSplitOperator.IsBool(varItem.Draw.IsShowRowName))chart.IsShowRowName=varItem.Draw.IsShowRowName;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.RowName))chart.RowName=varItem.Draw.RowName;if(varItem.Draw.BGColor)chart.BGColor=varItem.Draw.BGColor;hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);titleData.DataType="ChartKLineTable";hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateScatterPlot=function(hqChart,windowIndex,varItem,i){var chart=new ChartScatterPlot();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data.Data=varItem.Draw.DrawData;chart.Color=varItem.Draw.Color;chart.Radius=varItem.Draw.Radius;hqChart.ChartPaint.push(chart);};this.CreateScatterPlotV2=function(hqChart,windowIndex,varItem,i){var chart=new ChartScatterPlotV2();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data=hqChart.GetKData();//绑定K线
12292
+ chart.Texts=varItem.Draw.DrawData;chart.DrawCallback=varItem.Draw.Callback;hqChart.ChartPaint.push(chart);};this.CreateStackedBar=function(hqChart,windowIndex,varItem,i){var chart=new ChartStackedBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data.Data=varItem.Draw.DrawData;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarColor))chart.BarColor=varItem.Draw.BarColor;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarName))chart.BarName=varItem.Draw.BarName;if(IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth))chart.LineWidth=varItem.Draw.LineWidth;if(IFrameSplitOperator.IsNumber(varItem.Draw.BarType))chart.BarType=varItem.Draw.BarType;hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);titleData.DataType="ChartStackedBar";hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateKLineTable=function(hqChart,windowIndex,varItem,i){var chart=new ChartKLineTable();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data=hqChart.GetKData();//绑定K线
12293
+ chart.AryTableData=varItem.Draw.DrawData;if(IFrameSplitOperator.IsNumber(varItem.Draw.RowCount))chart.RowCount=varItem.Draw.RowCount;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.RowName))chart.RowName=varItem.Draw.RowName;var config=varItem.Draw.Config;if(config){if(config.BGColor)chart.BGColor=config.BGColor;if(config.TextColor)chart.TextColor=config.TextColor;if(config.BorderColor)chart.BorderColor=config.BorderColor;if(IFrameSplitOperator.IsNumber(config.RowNamePosition))chart.RowNamePosition=config.RowNamePosition;if(config.ItemMergin){var subItem=config.ItemMergin;if(IFrameSplitOperator.IsNumber(subItem.Left))chart.ItemMergin.Left=subItem.Left;if(IFrameSplitOperator.IsNumber(subItem.Top))chart.ItemMergin.Top=subItem.Top;if(IFrameSplitOperator.IsNumber(subItem.Bottom))chart.ItemMergin.Bottom=subItem.Bottom;if(IFrameSplitOperator.IsNumber(subItem.Right))chart.ItemMergin.Right=subItem.Right;if(IFrameSplitOperator.IsNumber(subItem.YOffset))chart.ItemMergin.YOffset=subItem.YOffset;}if(config.TextFont){var subItem=config.TextFont;if(IFrameSplitOperator.IsNumber(subItem.FontMaxSize))chart.TextFontConfig.FontMaxSize=subItem.FontMaxSize;if(subItem.Family)chart.TextFontConfig.Family=subItem.Family;}}chart.BuildCacheData();hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);titleData.DataType="ChartKLineTable";hqChart.TitlePaint[titleIndex].Data[i]=titleData;};this.CreateScatterPlot=function(hqChart,windowIndex,varItem,i){var chart=new ChartScatterPlot();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data.Data=varItem.Draw.DrawData;chart.Color=varItem.Draw.Color;chart.Radius=varItem.Draw.Radius;hqChart.ChartPaint.push(chart);};this.CreateScatterPlotV2=function(hqChart,windowIndex,varItem,i){var chart=new ChartScatterPlotV2();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data=hqChart.GetKData();//绑定K线
12284
12294
  chart.AryPoint=varItem.Draw.DrawData;var config=varItem.Draw.Config;if(config){if(config.Color)chart.Color=config.Color;if(IFrameSplitOperator.IsNumber(config.Radius))chart.Radius=config.Radius;if(config.TextColor)chart.TextColor=config.TextColor;if(config.Font)chart.Font=config.Font;}chart.BuildCacheData();hqChart.ChartPaint.push(chart);};this.CreateClipColorStick=function(hqChart,windowIndex,varItem,id){var chart=new ChartClipColorStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.HQChart=hqChart;chart.Identify=this.Guid;chart.Data.Data=varItem.Draw.DrawData;if(varItem.Option&&chart.SetOption)chart.SetOption(varItem.Option);hqChart.ChartPaint.push(chart);var titleIndex=windowIndex+1;if(varItem.IsShowTitle===false){}else{var clrTitle=this.GetDefaultColor(id);if(varItem.Option&&varItem.Option.TitleColor)clrTitle=this.GetColor(varItem.Option.TitleColor);hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chart.Data,varItem.Name,clrTitle);}};this.CreateColorKLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartColorKline();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
12285
12295
  chart.KLineColor=varItem.Draw.DrawData.KLine;if(varItem.Color)chart.Color=varItem.Color;hqChart.ChartPaint.push(chart);};this.CreateRectangle=function(hqChart,windowIndex,varItem,i){var chart=new ChartRectangle();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Color=[varItem.Draw.DrawData.Color];chart.Rect=varItem.Draw.DrawData.Rect;if(varItem.Color)chart.BorderColor=this.GetColor(varItem.Color);hqChart.ChartPaint.push(chart);};this.CreateScriptOverlayLine=function(hqChart,windowIndex,varItem,i){var chart=new ChartOverlayLine();chart.Canvas=hqChart.Canvas;chart.DrawType=1;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(i);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}if(varItem.IsDotLine)chart.IsDotLine=true;//虚线
12286
12296
  if(varItem.IsShow==false)chart.IsShow=false;var titleIndex=windowIndex+1;chart.Data.Data=varItem.Draw.DrawData.Data;chart.MainData.Data=varItem.Draw.DrawData.MainData;if(varItem.Draw.DrawData.Title)hqChart.TitlePaint[titleIndex].Data[i]=new DynamicTitleData(chart.Data,varItem.Draw.DrawData.Title,chart.Color);hqChart.ChartPaint.push(chart);};//创建K线
@@ -12464,7 +12474,7 @@ if(item.isexdata==true)outVarItem.IsExData=true;if(item.BreakPoint)outVarItem.Br
12464
12474
  {drawItem.Icon=draw.Icon;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWTEXT')//文本
12465
12475
  {drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='STICKLINE')//柱子
12466
12476
  {drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.Width=draw.Width;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="DRAWBAND"){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);drawItem.Color=draw.Color;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_LINE'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);if(IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData)){for(var k=0;k<drawItem.DrawData.length;++k){this.GetKLineData(drawItem.DrawData[k].Point,hqChart);}}outVarItem.Draw=drawItem;if(draw.LineDash)drawItem.LineDash=draw.LineDash;if(IFrameSplitOperator.IsBool(draw.IsFullRangeMaxMin))drawItem.IsFullRangeMaxMin=draw.IsFullRangeMaxMin;if(draw.Arrow)drawItem.Arrow=draw.Arrow;if(IFrameSplitOperator.IsNumber(draw.LineWidth))drawItem.LineWidth=draw.LineWidth;result.push(outVarItem);}else if(draw.DrawType=='MULTI_POINT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_BAR'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.OVERLAY_BARS){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.BarName=draw.BarName;drawItem.BarColor=draw.BarColor;drawItem.LineWidth=draw.LineWidth;drawItem.BarType=draw.BarType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.SCATTER_PLOT){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);//默认的值
12467
- drawItem.Color=draw.Color;drawItem.Radius=draw.Radius;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.SCATTER_PLOT_V2){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;drawItem.Config=draw.Config;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.KLINE_TABLE){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);drawItem.RowCount=draw.RowCount;drawItem.RowName=draw.RowName;drawItem.IsShowRowName=draw.IsShowRowName;drawItem.BGColor=draw.BGColor;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_TEXT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_SVGICON'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={Icon:draw.DrawData.Icon,Family:draw.DrawData.Family};outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWSVG'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;if(draw.AutoPosition)drawItem.AutoPosition=draw.AutoPosition;if(draw.BuildKeyCallback)drawItem.BuildKeyCallback=draw.BuildKeyCallback;drawItem.DrawData={Data:draw.Data,Family:draw.Family,TextFont:draw.TextFont,EnableTooltip:draw.EnableTooltip,IsDrawFirst:draw.IsDrawFirst};outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="MULTI_HTMLDOM")//外部自己创建dom
12477
+ drawItem.Color=draw.Color;drawItem.Radius=draw.Radius;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.SCATTER_PLOT_V2){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;drawItem.Config=draw.Config;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.KLINE_TABLE){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;drawItem.RowCount=draw.RowCount;drawItem.RowName=draw.RowName;drawItem.Config=draw.Config;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_TEXT'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='MULTI_SVGICON'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={Icon:draw.DrawData.Icon,Family:draw.DrawData.Family};outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=='DRAWSVG'){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;if(draw.AutoPosition)drawItem.AutoPosition=draw.AutoPosition;if(draw.BuildKeyCallback)drawItem.BuildKeyCallback=draw.BuildKeyCallback;drawItem.DrawData={Data:draw.Data,Family:draw.Family,TextFont:draw.TextFont,EnableTooltip:draw.EnableTooltip,IsDrawFirst:draw.IsDrawFirst};outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="MULTI_HTMLDOM")//外部自己创建dom
12468
12478
  {drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.Callback=draw.Callback;drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);this.GetKLineData(drawItem.DrawData,hqChart);outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="COLOR_KLINE"){drawItem.Text=draw.Text;drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;var klineOption=this.FittingMultiText(draw.DrawData.KLine,date,time,hqChart);var mapKLineOption=new _map2.default();for(var i in klineOption){var item=klineOption[i];mapKLineOption.set(item.Index,item);}drawItem.DrawData={KLine:mapKLineOption};if(draw.Color)outVarItem.Color=draw.Color;outVarItem.Draw=drawItem;result.push(outVarItem);}else if(draw.DrawType=="KLINE_BG"){drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={};drawItem.DrawData.Color=draw.Color;drawItem.DrawData.Angle=draw.Angle;if(draw.Ver==2.0)drawItem.DrawData.Data=this.FittingKLineBG_V2(draw.DrawData,hqChart);else drawItem.DrawData.Data=this.FittingKLineBG(draw.DrawData,hqChart);outVarItem.Draw=drawItem;outVarItem.Name=draw.DrawType;result.push(outVarItem);}else if(draw.DrawType=='MULTI_POINT_LINE'){drawItem.Name=draw.Name;drawItem.DrawType=draw.DrawType;drawItem.DrawData={};drawItem.DrawData.Color=draw.Color;drawItem.DrawData.PointRadius=draw.PointRadius;drawItem.DrawData.PointColor=draw.PointColor;drawItem.DrawData.LineWidth=draw.LineWidth;drawItem.DrawData.Data=this.FittingMultiPointLine(draw.DrawData,hqChart);outVarItem.Draw=drawItem;//outVarItem.Name=draw.DrawType;
12469
12479
  result.push(outVarItem);}else if(draw.DrawType=="PARTLINE"){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;if(IFrameSplitOperator.IsString(draw.LineWidth))outVarItem.LineWidth=draw.LineWidth;if(IFrameSplitOperator.IsBool(draw.IsDotLine))outVarItem.IsDotLine=draw.IsDotLine;if(IFrameSplitOperator.IsNonEmptyArray(draw.LineDash))outVarItem.LineDash=draw.LineDash;result.push(outVarItem);}else if(draw.DrawType==SCRIPT_CHART_NAME.CLIP_COLOR_STICK){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.Data,date,time,hqChart);outVarItem.Draw=drawItem;if(draw.LineWidth)outVarItem.LineWidth=draw.LineWidth;if(draw.UpColor)outVarItem.UpColor=draw.UpColor;if(draw.DownColor)outVarItem.DownColor=draw.DownColor;result.push(outVarItem);}else if(draw.DrawType=="DRAWCOLORKLINE"){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);outVarItem.Draw=drawItem;if(draw.Color)drawItem.Color=draw.Color;if(IFrameSplitOperator.IsBool(draw.IsEmptyBar))drawItem.IsEmptyBar=draw.IsEmptyBar;result.push(outVarItem);}else if(draw.DrawType=="DRAWTEXTREL"||draw.DrawType=="DRAWTEXTABS"){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;//{ Point: { X: 5,Y: 5 }, Text: "注意(居中):前方高能!!!!!" }
12470
12480
  outVarItem.Draw=drawItem;if(draw.Font)outVarItem.Font=draw.Font;result.push(outVarItem);}else if(draw.DrawType=="DRAWTEXT_LINE"){drawItem.Name=draw.Name;drawItem.Type=draw.Type;drawItem.DrawType=draw.DrawType;drawItem.DrawData=draw.DrawData;//{ Price:, Text:{ Title:text, Color:textcolor }, Line:{ Type:linetype, Color:linecolor } };
@@ -14875,7 +14885,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
14875
14885
  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);};}/********************************************************************************
14876
14886
  * 版本信息输出
14877
14887
  *
14878
- */var HQCHART_VERSION="1.1.14627";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();//把给外界调用的方法暴露出来
14888
+ */var HQCHART_VERSION="1.1.14631";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();//把给外界调用的方法暴露出来
14879
14889
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
14880
14890
  // BaseIndex:BaseIndex,
14881
14891
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14628",
3
+ "version": "1.1.14632",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -22231,16 +22231,41 @@ function ScriptIndex(name,script,args,option)
22231
22231
  chart.HQChart=hqChart;
22232
22232
  chart.Identify=this.Guid;
22233
22233
 
22234
- chart.Data.Data=varItem.Draw.DrawData;
22234
+ chart.Data=hqChart.GetKData(); //绑定K线
22235
+ chart.AryTableData=varItem.Draw.DrawData;
22235
22236
  if (IFrameSplitOperator.IsNumber(varItem.Draw.RowCount)) chart.RowCount=varItem.Draw.RowCount;
22236
- if (IFrameSplitOperator.IsBool(varItem.Draw.IsShowRowName)) chart.IsShowRowName=varItem.Draw.IsShowRowName;
22237
22237
  if (IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.RowName)) chart.RowName=varItem.Draw.RowName;
22238
- if (varItem.Draw.BGColor) chart.BGColor=varItem.Draw.BGColor;
22239
22238
 
22239
+ var config=varItem.Draw.Config;
22240
+ if (config)
22241
+ {
22242
+ if (config.BGColor) chart.BGColor=config.BGColor;
22243
+ if (config.TextColor) chart.TextColor=config.TextColor;
22244
+ if (config.BorderColor) chart.BorderColor=config.BorderColor;
22245
+ if (IFrameSplitOperator.IsNumber(config.RowNamePosition)) chart.RowNamePosition=config.RowNamePosition;
22246
+
22247
+ if (config.ItemMergin)
22248
+ {
22249
+ var subItem=config.ItemMergin;
22250
+ if (IFrameSplitOperator.IsNumber(subItem.Left)) chart.ItemMergin.Left=subItem.Left;
22251
+ if (IFrameSplitOperator.IsNumber(subItem.Top)) chart.ItemMergin.Top=subItem.Top;
22252
+ if (IFrameSplitOperator.IsNumber(subItem.Bottom)) chart.ItemMergin.Bottom=subItem.Bottom;
22253
+ if (IFrameSplitOperator.IsNumber(subItem.Right)) chart.ItemMergin.Right=subItem.Right;
22254
+ if (IFrameSplitOperator.IsNumber(subItem.YOffset)) chart.ItemMergin.YOffset=subItem.YOffset;
22255
+ }
22256
+
22257
+ if (config.TextFont)
22258
+ {
22259
+ var subItem=config.TextFont;
22260
+ if (IFrameSplitOperator.IsNumber(subItem.FontMaxSize)) chart.TextFontConfig.FontMaxSize=subItem.FontMaxSize;
22261
+ if (subItem.Family) chart.TextFontConfig.Family=subItem.Family;
22262
+ }
22263
+ }
22264
+
22265
+ chart.BuildCacheData();
22240
22266
  hqChart.ChartPaint.push(chart);
22241
22267
 
22242
22268
  var titleIndex=windowIndex+1;
22243
-
22244
22269
  var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);
22245
22270
  titleData.DataType="ChartKLineTable";
22246
22271
  hqChart.TitlePaint[titleIndex].Data[i]=titleData;
@@ -25232,13 +25257,11 @@ function APIScriptIndex(name,script,args,option, isOverlay)
25232
25257
  drawItem.Name=draw.Name;
25233
25258
  drawItem.Type=draw.Type;
25234
25259
  drawItem.DrawType=draw.DrawType;
25235
- drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);
25260
+ drawItem.DrawData=draw.DrawData;
25236
25261
  drawItem.RowCount=draw.RowCount;
25237
25262
  drawItem.RowName=draw.RowName;
25238
- drawItem.IsShowRowName=draw.IsShowRowName;
25239
- drawItem.BGColor=draw.BGColor;
25263
+ drawItem.Config=draw.Config;
25240
25264
  outVarItem.Draw=drawItem;
25241
-
25242
25265
  result.push(outVarItem);
25243
25266
  }
25244
25267
  else if (draw.DrawType=='MULTI_TEXT')
@@ -32597,28 +32597,87 @@ function ChartKLineTable()
32597
32597
  this.ClassName='ChartKlineTable'; //类名
32598
32598
  this.Data;
32599
32599
  this.RowName;
32600
- this.IsShowRowName=false;
32600
+ this.RowNamePosition=1; //0=不显示 1=左边内部 2=左边外部 3=右边外部
32601
32601
  this.BGColor; //背景色
32602
+ this.BorderColor; //分割线颜色
32602
32603
 
32603
32604
  this.RowCount=5; //行数
32604
32605
  this.RowHeight=10; //行高
32606
+ this.RowHeightType=1; //0=均分 1=固定高度
32605
32607
  this.TextFontConfig=CloneData(g_JSChartResource.ChartKLineTable.TextFont);
32606
32608
  this.ItemMergin=CloneData(g_JSChartResource.ChartKLineTable.ItemMergin);
32607
32609
 
32608
32610
  this.TextFont;
32609
32611
  this.TextColor='rgb(0,0,0)';
32610
- this.NameColor="rgb(0,0,0)";
32611
32612
 
32612
- this.Draw=function()
32613
+ this.AryTableData=[];
32614
+ this.MapCache=null; //key=date/date-time value={ Date:, Time:, Data:[ ] }
32615
+ this.GetKValue=ChartData.GetKValue;
32616
+
32617
+ this.BuildCacheData=function()
32613
32618
  {
32614
- if (!this.IsShow || this.ChartFrame.IsMinSize) return;
32615
- if (this.NotSupportMessage)
32619
+ var mapData=new Map();
32620
+ this.MapCache=mapData;
32621
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryTableData)) return;
32622
+
32623
+ for(var i=0;i<this.AryTableData.length;++i)
32616
32624
  {
32617
- this.DrawNotSupportmessage();
32618
- return;
32625
+ var item=this.AryTableData[i];
32626
+ var key=this.BuildKey(item);
32627
+ mapData.set(key,item);
32619
32628
  }
32629
+ }
32620
32630
 
32621
- if (!this.Data || !this.Data.Data) return;
32631
+ //绘制背景色
32632
+ this.DrawBG=function(rtBG)
32633
+ {
32634
+ if (!this.BGColor) return;
32635
+
32636
+ if (this.BGColor)
32637
+ {
32638
+ this.Canvas.fillStyle=this.BGColor;
32639
+ this.Canvas.fillRect(rtBG.Left+1, rtBG.Top, rtBG.Width-1, rtBG.Height);
32640
+ }
32641
+ }
32642
+
32643
+ this.DrawBorder=function(rtBG)
32644
+ {
32645
+ if (!this.BorderColor) return;
32646
+
32647
+ var yLine=rtBG.Top;
32648
+ for(var i=0;i<30;++i)
32649
+ {
32650
+ this.Canvas.beginPath();
32651
+ this.Canvas.moveTo(rtBG.Left,ToFixedPoint(yLine));
32652
+ this.Canvas.lineTo(rtBG.Right,ToFixedPoint(yLine));
32653
+ this.Canvas.stroke();
32654
+
32655
+ yLine+=this.RowHeight;
32656
+ if (yLine>=rtBG.Bottom) break;
32657
+ }
32658
+ }
32659
+
32660
+ //计算行高
32661
+ this.CalculateRowHeight=function(rtBG)
32662
+ {
32663
+ if (this.RowHeightType==1)
32664
+ {
32665
+ this.RowHeight=this.TextFontConfig.FontMaxSize+this.ItemMergin.Top+this.ItemMergin.Bottom;
32666
+ }
32667
+ else
32668
+ {
32669
+ this.RowHeight=rtBG.Height/this.RowCount;
32670
+ }
32671
+ }
32672
+
32673
+ this.Draw=function()
32674
+ {
32675
+ if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
32676
+ if (this.IsShowIndexTitleOnly()) return;
32677
+ if (this.IsHideScriptIndex()) return;
32678
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryTableData)) return;
32679
+ if (!this.MapCache || this.MapCache.size<=0) return;
32680
+ if(!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return;
32622
32681
 
32623
32682
  var isHScreen=(this.ChartFrame.IsHScreen===true);
32624
32683
  if (isHScreen) return;
@@ -32629,24 +32688,22 @@ function ChartKLineTable()
32629
32688
  var xPointCount=this.ChartFrame.XPointCount;
32630
32689
  var border=this.ChartFrame.GetBorder();
32631
32690
  var height=border.Bottom-border.TopTitle;
32632
- this.RowHeight=height/this.RowCount;
32633
32691
  var xOffset=border.LeftEx+g_JSChartResource.FrameLeftMargin;
32634
32692
  var chartright=border.RightEx;
32635
32693
  var top=border.TopTitle;
32636
32694
  var bottom=border.Bottom;
32637
32695
 
32638
- if (this.BGColor)
32639
- {
32640
- this.Canvas.fillStyle=this.BGColor;
32641
- var left=border.LeftEx;
32642
- var width=border.RightEx-border.LeftEx;
32643
- var height=bottom-top;
32644
- this.Canvas.fillRect(left, top, width, height);
32645
- }
32696
+ //绘制背景
32697
+ var rtBG={ Left:border.LeftEx, Top:top, Right:border.RightEx, Bottom:bottom };
32698
+ rtBG.Width=rtBG.Right-rtBG.Left;
32699
+ rtBG.Height=rtBG.Bottom-rtBG.Top;
32700
+ this.DrawBG(rtBG);
32646
32701
 
32702
+ this.CalculateRowHeight(rtBG);
32703
+
32647
32704
  var itemHeight=this.RowHeight;
32648
32705
  var itemWidth=dataWidth+distanceWidth;
32649
- if (itemHeight-this.ItemMergin.Top-this.ItemMergin.Bottom>0) itemHeight=itemHeight-this.ItemMergin.Left-this.ItemMergin.Right;
32706
+ if (itemHeight-this.ItemMergin.Top-this.ItemMergin.Bottom>0) itemHeight=itemHeight-this.ItemMergin.Top-this.ItemMergin.Bottom;
32650
32707
  if (itemWidth-this.ItemMergin.Left-this.ItemMergin.Right>0) itemWidth=itemWidth-this.ItemMergin.Left-this.ItemMergin.Right;
32651
32708
 
32652
32709
  var font=this.GetDynamicTextFont(itemHeight, itemWidth);
@@ -32655,8 +32712,8 @@ function ChartKLineTable()
32655
32712
 
32656
32713
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
32657
32714
  {
32658
- var item=this.Data.Data[i];
32659
- if (!item) continue;
32715
+ var kItem=this.Data.Data[i];
32716
+ if (!kItem) continue;
32660
32717
 
32661
32718
  var left=xOffset;
32662
32719
  var right=xOffset+dataWidth+distanceWidth;
@@ -32664,15 +32721,20 @@ function ChartKLineTable()
32664
32721
  var x=left+(right-left)/2;
32665
32722
  if (x>chartright) break;
32666
32723
 
32667
- if (j==0 && this.IsShowRowName)
32668
- {
32669
- this.DrawRowName(top, bottom, left, right);
32670
- }
32671
- else
32672
- {
32673
- this.DrawRow(item, top, bottom, left, right); //绘制一列
32674
- }
32724
+ var bDrawName=false;
32725
+ if (j==0 && this.RowNamePosition===1) bDrawName=true;
32726
+ if (bDrawName) this.DrawRowName(top, bottom, left, right);
32727
+
32728
+ var key=this.BuildKey(kItem);
32729
+ if (!this.MapCache.has(key)) continue;
32730
+ var mapItem=this.MapCache.get(key);
32731
+
32732
+ if (!bDrawName) this.DrawRow(mapItem, top, bottom, left, right); //绘制一列
32675
32733
  }
32734
+
32735
+ if (this.RowNamePosition==3) this.DrawRightRowName();
32736
+
32737
+ this.DrawBorder(rtBG);
32676
32738
  }
32677
32739
 
32678
32740
  this.DrawRowName=function(top, bottom, left, right)
@@ -32680,32 +32742,35 @@ function ChartKLineTable()
32680
32742
  if (!IFrameSplitOperator.IsNonEmptyArray(this.RowName)) return;
32681
32743
 
32682
32744
  var x=left,y=top, width=right-left;
32745
+ var yOffset=3;
32746
+ if (this.ItemMergin.YOffset) yOffset=this.ItemMergin.YOffset;
32683
32747
  for(var i=0;i<this.RowName.length;++i)
32684
32748
  {
32685
32749
  var item=this.RowName[i];
32686
32750
 
32687
32751
  var rtBG={Left:x, Top:y, Right:right, Height:this.RowHeight, Width:width };
32688
32752
  rtBG.Bottom=rtBG.Top+this.RowHeight;
32753
+ var yText=rtBG.Bottom-yOffset;
32689
32754
 
32690
32755
  if (item.Name && rtBG.Width>10)
32691
32756
  {
32692
32757
  this.Canvas.fillStyle=item.Color?item.Color:this.TextColor;
32693
- this.Canvas.textBaseline='middle';
32758
+ this.Canvas.textBaseline='bottom';
32694
32759
 
32695
32760
  if (item.TextAlign=='right')
32696
32761
  {
32697
32762
  this.Canvas.textAlign='right';
32698
- this.Canvas.fillText(item.Name,rtBG.Right-2,rtBG.Top+this.RowHeight/2, width-4);
32763
+ this.Canvas.fillText(item.Name,rtBG.Right-2,yText, width-4);
32699
32764
  }
32700
32765
  else if (item.TextAlign=='center')
32701
32766
  {
32702
32767
  this.Canvas.textAlign='center';
32703
- this.Canvas.fillText(item.Name,rtBG.Left+rtBG.Width/2,rtBG.Top+this.RowHeight/2, width-4);
32768
+ this.Canvas.fillText(item.Name,rtBG.Left+rtBG.Width/2,yText, width-4);
32704
32769
  }
32705
32770
  else
32706
32771
  {
32707
32772
  this.Canvas.textAlign='left';
32708
- this.Canvas.fillText(item.Name,rtBG.Left+2,rtBG.Top+this.RowHeight/2, width-4);
32773
+ this.Canvas.fillText(item.Name,rtBG.Left+2,yText, width-4);
32709
32774
  }
32710
32775
  }
32711
32776
 
@@ -32713,40 +32778,133 @@ function ChartKLineTable()
32713
32778
  }
32714
32779
  }
32715
32780
 
32781
+ //绘制右侧行名
32782
+ this.DrawRightRowName=function()
32783
+ {
32784
+ var border=this.ChartFrame.GetBorder();
32785
+
32786
+ if (this.BGColor)
32787
+ {
32788
+ var rtRightBG={Left:border.RightEx, Top:border.TopTitle, Right:border.ChartWidth, Bottom:border.Bottom };
32789
+ rtRightBG.Width=rtRightBG.Right-rtRightBG.Left;
32790
+ rtRightBG.Height=rtRightBG.Bottom-rtRightBG.Top;
32791
+ this.Canvas.fillStyle=this.BGColor;
32792
+ this.Canvas.fillRect(rtRightBG.Left+1, rtRightBG.Top, rtRightBG.Width-1, rtRightBG.Height);
32793
+ }
32794
+
32795
+ var x=border.RightEx, y=border.TopTitle;
32796
+ var yOffset=3;
32797
+ if (this.ItemMergin.YOffset) yOffset=this.ItemMergin.YOffset;
32798
+ for(var i=0;i<this.RowName.length;++i)
32799
+ {
32800
+ var item=this.RowName[i];
32801
+
32802
+ var rtBG={Left:x, Top:y, Right:border.ChartWidth, Height:this.RowHeight };
32803
+ rtBG.Bottom=rtBG.Top+this.RowHeight;
32804
+ rtBG.Width=rtBG.Right-rtBG.Left;
32805
+ var yText=rtBG.Bottom-yOffset;
32806
+
32807
+ if (rtBG.Bottom>border.Bottom) break;
32808
+
32809
+ if (item.Name && rtBG.Width>10)
32810
+ {
32811
+ this.Canvas.fillStyle=item.Color?item.Color:this.TextColor;
32812
+ this.Canvas.textBaseline='bottom';
32813
+ this.Canvas.textAlign='left';
32814
+ this.Canvas.fillText(item.Name,rtBG.Left+2,yText);
32815
+ }
32816
+
32817
+ y+=this.RowHeight;
32818
+ }
32819
+ }
32820
+
32821
+
32716
32822
  this.DrawRow=function(data, top, bottom, left, right)
32717
32823
  {
32824
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.Data)) return;
32825
+
32718
32826
  var x=left,y=top, width=right-left;
32719
- for(var i=0;i<data.length;++i)
32827
+ var yOffset=3;
32828
+ if (this.ItemMergin.YOffset) yOffset=this.ItemMergin.YOffset;
32829
+ for(var i=0;i<data.Data.length;++i)
32720
32830
  {
32721
- var item=data[i];
32831
+ var item=data.Data[i];
32722
32832
  var rtBG={Left:x, Top:y, Right:right, Height:this.RowHeight, Width:width };
32723
32833
  rtBG.Bottom=rtBG.Top+this.RowHeight;
32724
32834
 
32725
- if (item.BGColor)
32726
- {
32727
- this.Canvas.fillStyle=item.BGColor;
32728
- this.Canvas.fillRect(rtBG.Left, rtBG.Top, rtBG.Width, rtBG.Height);
32729
- }
32835
+ if (rtBG.Bottom>bottom) break;
32730
32836
 
32731
- if (item.Color && rtBG.Width>10)
32837
+ if (IFrameSplitOperator.IsNonEmptyArray(item.AryText)) //左右显示
32732
32838
  {
32733
- this.Canvas.fillStyle=item.Color;
32734
- this.Canvas.textBaseline='middle';
32735
-
32736
- if (item.TextAlign=='right')
32839
+ var subCellWidth=rtBG.Width/item.AryText.length;
32840
+ var xCell=rtBG.Left;
32841
+ for(var j=0;j<item.AryText.length;++j)
32737
32842
  {
32738
- this.Canvas.textAlign='right';
32739
- this.Canvas.fillText(item.Text,rtBG.Right-2,rtBG.Top+this.RowHeight/2, width-4);
32843
+ var subItem=item.AryText[j];
32844
+ var rtSubBG={ Left:xCell, Top:rtBG.Top, Bottom:rtBG.Bottom, Width:subCellWidth, Height:rtBG.Height };
32845
+ rtSubBG.Right=rtSubBG.Left+rtSubBG.Width;
32846
+
32847
+ if (subItem && subItem.BGColor)
32848
+ {
32849
+ this.Canvas.fillStyle=subItem.BGColor;
32850
+ this.Canvas.fillRect(rtSubBG.Left, rtSubBG.Top, rtSubBG.Width, rtSubBG.Height);
32851
+ }
32852
+
32853
+ if (subItem && subItem.Color && subCellWidth>10)
32854
+ {
32855
+ this.Canvas.fillStyle=subItem.Color;
32856
+ this.Canvas.textBaseline='bottom';
32857
+ var yText=rtSubBG.Bottom-yOffset;
32858
+
32859
+ if (subItem.TextAlign=='right')
32860
+ {
32861
+ this.Canvas.textAlign='right';
32862
+ this.Canvas.fillText(subItem.Text,rtSubBG.Right-2,yText, width-4);
32863
+ }
32864
+ else if (subItem.TextAlign=='center')
32865
+ {
32866
+ this.Canvas.textAlign='center';
32867
+ this.Canvas.fillText(subItem.Text,rtSubBG.Left+rtSubBG.Width/2,yText, width-4);
32868
+ }
32869
+ else
32870
+ {
32871
+ this.Canvas.textAlign='left';
32872
+ this.Canvas.fillText(subItem.Text,rtSubBG.Left+2,yText, width-4);
32873
+ }
32874
+ }
32875
+
32876
+ xCell+=subCellWidth;
32740
32877
  }
32741
- else if (item.TextAlign=='center')
32878
+ }
32879
+ else
32880
+ {
32881
+ if (item && item.BGColor)
32742
32882
  {
32743
- this.Canvas.textAlign='center';
32744
- this.Canvas.fillText(item.Text,rtBG.Left+rtBG.Width/2,rtBG.Top+this.RowHeight/2, width-4);
32883
+ this.Canvas.fillStyle=item.BGColor;
32884
+ this.Canvas.fillRect(rtBG.Left, rtBG.Top, rtBG.Width, rtBG.Height);
32745
32885
  }
32746
- else
32886
+
32887
+ if (item && item.Color && rtBG.Width>10)
32747
32888
  {
32748
- this.Canvas.textAlign='left';
32749
- this.Canvas.fillText(item.Text,rtBG.Left+2,rtBG.Top+this.RowHeight/2, width-4);
32889
+ this.Canvas.fillStyle=item.Color;
32890
+ this.Canvas.textBaseline='bottom';
32891
+ var yText=rtBG.Bottom-yOffset;
32892
+
32893
+ if (item.TextAlign=='right')
32894
+ {
32895
+ this.Canvas.textAlign='right';
32896
+ this.Canvas.fillText(item.Text,rtBG.Right-2,yText, width-4);
32897
+ }
32898
+ else if (item.TextAlign=='center')
32899
+ {
32900
+ this.Canvas.textAlign='center';
32901
+ this.Canvas.fillText(item.Text,rtBG.Left+rtBG.Width/2,yText, width-4);
32902
+ }
32903
+ else
32904
+ {
32905
+ this.Canvas.textAlign='left';
32906
+ this.Canvas.fillText(item.Text,rtBG.Left+2,yText, width-4);
32907
+ }
32750
32908
  }
32751
32909
  }
32752
32910