hqchart 1.1.12829 → 1.1.12836
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/umychart.vue.js
CHANGED
|
@@ -4270,10 +4270,11 @@ this.Canvas.strokeStyle=color;if(bgColor)this.Canvas.fill(path);if(color)this.Ca
|
|
|
4270
4270
|
function ChartMultiText(){this.newMethod=IChartPainting;//派生
|
|
4271
4271
|
this.newMethod();delete this.newMethod;this.ClassName="ChartMultiText";this.Texts=[];//[ {Index:, Value:, Text:, Color:, Font: , Baseline:, Line:{ Color:, Dash:[虚线点], KData:"H/L", Offset:[5,10], Width:线粗细 }} ]
|
|
4272
4272
|
this.Font=g_JSChartResource.DefaultTextFont;this.Color=g_JSChartResource.DefaultTextColor;this.IsHScreen=false;//是否横屏
|
|
4273
|
-
this.
|
|
4273
|
+
this.BuildKey=function(item){if(IFrameSplitOperator.IsNumber(item.Time)){var key=kItem.Date+'-'+item.Time;}else{var key=''+item.Date;}return key;};this.GetShowTextData=function(){var xPointCount=this.ChartFrame.XPointCount;var offset=this.Data.DataOffset;var mapText=new _map2.default();//key='date-time' value={ Data:[] }
|
|
4274
|
+
for(var i=0;i<this.Texts.length;++i){var item=this.Texts[i];if(!item.Text)continue;if(!IFrameSplitOperator.IsNumber(item.Index))continue;var index=item.Index-offset;if(index>=0&&index<xPointCount){var key=this.BuildKey(item);if(mapText.has(key)){var textItem=mapText.get(key);textItem.Data.push(item);}else{var textItem={Data:[item]};mapText.set(key,textItem);}}}return mapText;};this.DrawAllText=function(mapText){var bHScreen=this.ChartFrame.IsHScreen===true;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(bHScreen){var border=this.ChartBorder.GetHScreenBorder();var chartright=border.BottomEx;var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var left=this.ChartBorder.GetTop();var right=this.ChartBorder.GetBottom();}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();}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 key=this.BuildKey(kItem);if(!mapText.has(key))continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var textItem=mapText.get(key);for(var k=0;k<textItem.Data.length;++k){var item=textItem.Data[k];if(item.Value=="TOP")y=top;else if(item.Value=="BOTTOM")y=bottom;else y=this.ChartFrame.GetYFromData(item.Value);if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.Color;if(item.Font)this.Canvas.font=item.Font;else this.Canvas.font=this.Font;var textWidth=this.Canvas.measureText(item.Text).width;this.Canvas.textAlign='center';if(x+textWidth/2>=right){this.Canvas.textAlign='right';x=right;}else if(x-textWidth/2<left){this.Canvas.textAlign='left';x=left;}if(item.Baseline==1)this.Canvas.textBaseline='top';else if(item.Baseline==2)this.Canvas.textBaseline='bottom';else this.Canvas.textBaseline='middle';if(this.IsHScreen){this.Canvas.save();this.Canvas.translate(y,x);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(item.Text,0,0);this.Canvas.restore();}else{if(IFrameSplitOperator.IsNumber(item.YMove))y+=item.YMove;this.Canvas.fillText(item.Text,x,y);}if(item.Line){var kItem=this.Data.Data[item.Index];var price=item.Line.KData=="H"?kItem.High:kItem.Low;var yPrice=this.ChartFrame.GetYFromData(price);var yText=y;if(Array.isArray(item.Line.Offset)&&item.Line.Offset.length==2){if(yText>yPrice)//文字在下方
|
|
4274
4275
|
{yText-=item.Line.Offset[1];yPrice+=item.Line.Offset[0];}else if(yText<yPrice){yText+=item.Line.Offset[1];yPrice-=item.Line.Offset[0];}}this.Canvas.save();if(item.Line.Dash)this.Canvas.setLineDash(item.Line.Dash);//虚线
|
|
4275
4276
|
if(item.Line.Width>0)this.Canvas.lineWidth=item.Line.Width;//线宽
|
|
4276
|
-
this.Canvas.strokeStyle=item.Line.Color;this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(yText,ToFixedPoint(x));this.Canvas.lineTo(yPrice,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yText);this.Canvas.lineTo(ToFixedPoint(x),yPrice);}this.Canvas.stroke();this.Canvas.restore();}}}};this.GetMaxMin=function(){var range={Min:null,Max:null};if(!this.Texts)return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;var end=start+xPointCount;for(var i in this.Texts){var item=this.Texts[i];if(item.Index>=start&&item.Index<end){if(range.Max==null)range.Max=item.Value;else if(range.Max<item.Value)range.Max=item.Value;if(range.Min==null)range.Min=item.Value;else if(range.Min>item.Value)range.Min=item.Value;}}return range;};}// 图标集合 支持横屏
|
|
4277
|
+
this.Canvas.strokeStyle=item.Line.Color;this.Canvas.beginPath();if(this.IsHScreen){this.Canvas.moveTo(yText,ToFixedPoint(x));this.Canvas.lineTo(yPrice,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yText);this.Canvas.lineTo(ToFixedPoint(x),yPrice);}this.Canvas.stroke();this.Canvas.restore();}}}};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(!this.Data||this.Data.length<=0)return;if(!this.Texts)return;this.IsHScreen=this.ChartFrame.IsHScreen===true;var mapText=this.GetShowTextData();if(mapText.size<=0)return;this.DrawAllText(mapText);};this.GetMaxMin=function(){var range={Min:null,Max:null};if(!this.Texts)return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;var end=start+xPointCount;for(var i in this.Texts){var item=this.Texts[i];if(item.Index>=start&&item.Index<end){if(range.Max==null)range.Max=item.Value;else if(range.Max<item.Value)range.Max=item.Value;if(range.Min==null)range.Min=item.Value;else if(range.Min>item.Value)range.Min=item.Value;}}return range;};}// 图标集合 支持横屏
|
|
4277
4278
|
function ChartMultiSVGIcon(){this.newMethod=IChartPainting;//派生
|
|
4278
4279
|
this.newMethod();delete this.newMethod;this.ClassName="ChartMultiSVGIcon";this.Icon;//[ {Index:, Value:, Symbol:, Color:, Baseline:, Line:{ Color:, Dash:[虚线点], KData:"H/L", Offset:[5,10], Width:线粗细 } } ]
|
|
4279
4280
|
this.IconSize={Max:g_JSChartResource.DRAWICON.Icon.MaxSize,Min:g_JSChartResource.DRAWICON.Icon.MinSize,//图标的最大最小值
|
|
@@ -7001,9 +7002,9 @@ if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;
|
|
|
7001
7002
|
var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};//创建主图K线画法
|
|
7002
7003
|
this.CreateMainKLine=function(){var _this20=this;var kline=g_ChartPaintFactory.Create("ChartKLine");kline.Canvas=this.Canvas;kline.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;kline.ChartFrame=this.Frame.SubFrame[0].Frame;kline.Name="Main-KLine";kline.DrawType=this.KLineDrawType;kline.Identify="Main-KLine";kline.GetEventCallback=function(id){return _this20.GetEventCallback(id);};this.ChartPaint[0]=kline;this.TitlePaint[0]=new DynamicKLineTitlePainting();this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;this.TitlePaint[0].Canvas=this.Canvas;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
|
|
7003
7004
|
this.TitlePaint[0].LanguageID=this.LanguageID;this.TitlePaint[0].HQChart=this;this.TitlePaint[0].GetEventCallback=function(id){return _this20.GetEventCallback(id);};};//绑定主图K线数据
|
|
7004
|
-
this.BindMainData=function(hisData,showCount){this.ChartPaint[0].Data=hisData;this.ChartPaint[0].Symbol=this.Symbol;if(this.KLineSize){if(this.KLineSize.DataWidth
|
|
7005
|
+
this.BindMainData=function(hisData,showCount){this.ChartPaint[0].Data=hisData;this.ChartPaint[0].Symbol=this.Symbol;if(this.KLineSize){if(!IFrameSplitOperator.IsNumber(this.KLineSize.DataWidth)){showCount=this.Frame.SubFrame[0].Frame.XPointCount-this.RightSpaceCount;}else{var obj=this.Frame.SetDataWidth(this.KLineSize.DataWidth);showCount=obj.XPointCount-this.RightSpaceCount;this.KLineSize.DataWidth=null;}}for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;item.XPointCount=showCount+this.RightSpaceCount;item.Data=this.ChartPaint[0].Data;item.XSplitOperator.Symbol=this.Symbol;item.XSplitOperator.Period=this.Period;}this.TitlePaint[0].Data=this.ChartPaint[0].Data;//动态标题
|
|
7005
7006
|
this.TitlePaint[0].Symbol=this.Symbol;this.TitlePaint[0].Name=this.Name;this.TitlePaint[0].Period=this.Period;this.ChartCorssCursor.StringFormatX.Data=this.ChartPaint[0].Data;//十字光标
|
|
7006
|
-
this.Frame.Data=this.ChartPaint[0].Data;for(var i
|
|
7007
|
+
this.Frame.Data=this.ChartPaint[0].Data;for(var i=0;i<this.OverlayChartPaint.length;++i)//K线叠加 主图股票数据绑定到叠加上
|
|
7007
7008
|
{var item=this.OverlayChartPaint[i];item.MainData=this.ChartPaint[0].Data;}var dataOffset=hisData.Data.length-showCount;if(dataOffset<0)dataOffset=0;this.ChartPaint[0].Data.DataOffset=dataOffset;this.ChartPaint[0].Period=this.Period;this.ChartCorssCursor.StringFormatY.Symbol=this.Symbol;this.CursorIndex=showCount;if(this.CursorIndex+dataOffset>=hisData.Data.length)this.CursorIndex=hisData.Data.length-1-dataOffset;if(this.CursorIndex<0)this.CursorIndex=0;//不一定对啊
|
|
7008
7009
|
if(this.CustomShow)//定制显示 1次有效
|
|
7009
7010
|
{this.SetCustomShow(this.CustomShow,hisData);this.CustomShow=null;}};this.UpdateMainData=function(hisData,lastDataCount){var frameHisdata=null;if(!this.Frame.Data)frameHisdata=this.Frame.Data;else if(this.Frame.SubFrame&&this.Frame.SubFrame[0])frameHisdata=this.Frame.SubFrame[0].Frame.Data;if(!frameHisdata)return;var xPointCount=this.Frame.SubFrame[0].Frame.XPointCount;//当前一屏能显示的数据个数
|
|
@@ -13028,7 +13029,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
13028
13029
|
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);};}/********************************************************************************
|
|
13029
13030
|
* 版本信息输出
|
|
13030
13031
|
*
|
|
13031
|
-
*/var HQCHART_VERSION="1.1.
|
|
13032
|
+
*/var HQCHART_VERSION="1.1.12835";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
13032
13033
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
13033
13034
|
// BaseIndex:BaseIndex,
|
|
13034
13035
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -35950,38 +35950,95 @@ function ChartMultiText()
|
|
|
35950
35950
|
this.Color=g_JSChartResource.DefaultTextColor;
|
|
35951
35951
|
this.IsHScreen=false; //是否横屏
|
|
35952
35952
|
|
|
35953
|
-
this.
|
|
35953
|
+
this.BuildKey=function(item)
|
|
35954
35954
|
{
|
|
35955
|
-
if (
|
|
35956
|
-
|
|
35957
|
-
|
|
35955
|
+
if (IFrameSplitOperator.IsNumber(item.Time))
|
|
35956
|
+
{
|
|
35957
|
+
var key=`${kItem.Date}-${item.Time}`;
|
|
35958
|
+
}
|
|
35959
|
+
else
|
|
35960
|
+
{
|
|
35961
|
+
var key=`${item.Date}`;
|
|
35962
|
+
}
|
|
35963
|
+
|
|
35964
|
+
return key;
|
|
35965
|
+
}
|
|
35958
35966
|
|
|
35959
|
-
|
|
35967
|
+
this.GetShowTextData=function()
|
|
35968
|
+
{
|
|
35960
35969
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
35961
35970
|
var offset=this.Data.DataOffset;
|
|
35962
|
-
var left=this.ChartBorder.GetLeft();
|
|
35963
|
-
var right=this.ChartBorder.GetRight();
|
|
35964
|
-
var top=this.ChartBorder.GetTopEx();
|
|
35965
|
-
var bottom=this.ChartBorder.GetBottomEx();
|
|
35966
|
-
|
|
35967
|
-
if (this.IsHScreen)
|
|
35968
|
-
{
|
|
35969
|
-
left=this.ChartBorder.GetTop();
|
|
35970
|
-
right=this.ChartBorder.GetBottom();
|
|
35971
|
-
}
|
|
35972
35971
|
|
|
35973
|
-
var
|
|
35972
|
+
var mapText=new Map(); //key='date-time' value={ Data:[] }
|
|
35974
35973
|
for(var i=0; i<this.Texts.length; ++i)
|
|
35975
35974
|
{
|
|
35976
35975
|
var item=this.Texts[i];
|
|
35977
|
-
|
|
35978
35976
|
if (!item.Text) continue;
|
|
35979
35977
|
if (!IFrameSplitOperator.IsNumber(item.Index)) continue;
|
|
35980
35978
|
|
|
35981
35979
|
var index=item.Index-offset;
|
|
35982
35980
|
if (index>=0 && index<xPointCount)
|
|
35983
35981
|
{
|
|
35984
|
-
var
|
|
35982
|
+
var key=this.BuildKey(item);
|
|
35983
|
+
if (mapText.has(key))
|
|
35984
|
+
{
|
|
35985
|
+
var textItem=mapText.get(key);
|
|
35986
|
+
textItem.Data.push(item);
|
|
35987
|
+
}
|
|
35988
|
+
else
|
|
35989
|
+
{
|
|
35990
|
+
var textItem={ Data:[item] };
|
|
35991
|
+
mapText.set(key, textItem);
|
|
35992
|
+
}
|
|
35993
|
+
}
|
|
35994
|
+
}
|
|
35995
|
+
|
|
35996
|
+
return mapText;
|
|
35997
|
+
}
|
|
35998
|
+
|
|
35999
|
+
this.DrawAllText=function(mapText)
|
|
36000
|
+
{
|
|
36001
|
+
var bHScreen=(this.ChartFrame.IsHScreen===true);
|
|
36002
|
+
var isMinute=this.IsMinuteFrame();
|
|
36003
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
36004
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
36005
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
36006
|
+
|
|
36007
|
+
if (bHScreen)
|
|
36008
|
+
{
|
|
36009
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
36010
|
+
var chartright=border.BottomEx;
|
|
36011
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
36012
|
+
var left=this.ChartBorder.GetTop();
|
|
36013
|
+
var right=this.ChartBorder.GetBottom();
|
|
36014
|
+
}
|
|
36015
|
+
else
|
|
36016
|
+
{
|
|
36017
|
+
var border=this.ChartBorder.GetBorder();
|
|
36018
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
36019
|
+
var chartright=border.RightEx;
|
|
36020
|
+
var left=this.ChartBorder.GetLeft();
|
|
36021
|
+
var right=this.ChartBorder.GetRight();
|
|
36022
|
+
}
|
|
36023
|
+
|
|
36024
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
36025
|
+
{
|
|
36026
|
+
var kItem=this.Data.Data[i];
|
|
36027
|
+
if (!kItem) continue;
|
|
36028
|
+
|
|
36029
|
+
var key=this.BuildKey(kItem);
|
|
36030
|
+
if (!mapText.has(key)) continue;
|
|
36031
|
+
|
|
36032
|
+
var left=xOffset;
|
|
36033
|
+
var right=xOffset+dataWidth;
|
|
36034
|
+
if (right>chartright) break;
|
|
36035
|
+
var x=left+(right-left)/2;
|
|
36036
|
+
|
|
36037
|
+
var textItem=mapText.get(key);
|
|
36038
|
+
for(var k=0;k<textItem.Data.length;++k)
|
|
36039
|
+
{
|
|
36040
|
+
var item=textItem.Data[k];
|
|
36041
|
+
|
|
35985
36042
|
if (item.Value=="TOP") y=top;
|
|
35986
36043
|
else if (item.Value=="BOTTOM") y=bottom;
|
|
35987
36044
|
else y=this.ChartFrame.GetYFromData(item.Value);
|
|
@@ -36063,6 +36120,20 @@ function ChartMultiText()
|
|
|
36063
36120
|
}
|
|
36064
36121
|
}
|
|
36065
36122
|
|
|
36123
|
+
this.Draw=function()
|
|
36124
|
+
{
|
|
36125
|
+
if (!this.IsShow || this.ChartFrame.IsMinSize) return;
|
|
36126
|
+
if (!this.Data || this.Data.length<=0) return;
|
|
36127
|
+
if (!this.Texts) return;
|
|
36128
|
+
|
|
36129
|
+
this.IsHScreen=(this.ChartFrame.IsHScreen===true);
|
|
36130
|
+
|
|
36131
|
+
var mapText=this.GetShowTextData();
|
|
36132
|
+
if (mapText.size<=0) return;
|
|
36133
|
+
|
|
36134
|
+
this.DrawAllText(mapText);
|
|
36135
|
+
}
|
|
36136
|
+
|
|
36066
36137
|
this.GetMaxMin=function()
|
|
36067
36138
|
{
|
|
36068
36139
|
var range={ Min:null, Max:null };
|
|
@@ -66801,7 +66872,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
66801
66872
|
|
|
66802
66873
|
if (this.KLineSize)
|
|
66803
66874
|
{
|
|
66804
|
-
if (this.KLineSize.DataWidth
|
|
66875
|
+
if (!IFrameSplitOperator.IsNumber(this.KLineSize.DataWidth))
|
|
66805
66876
|
{
|
|
66806
66877
|
showCount=this.Frame.SubFrame[0].Frame.XPointCount-this.RightSpaceCount;
|
|
66807
66878
|
}
|
|
@@ -66813,7 +66884,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
66813
66884
|
}
|
|
66814
66885
|
}
|
|
66815
66886
|
|
|
66816
|
-
for(var i
|
|
66887
|
+
for(var i=0;i<this.Frame.SubFrame.length;++i)
|
|
66817
66888
|
{
|
|
66818
66889
|
var item =this.Frame.SubFrame[i].Frame;
|
|
66819
66890
|
item.XPointCount=showCount+this.RightSpaceCount;
|
|
@@ -66831,7 +66902,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
66831
66902
|
this.ChartCorssCursor.StringFormatX.Data=this.ChartPaint[0].Data; //十字光标
|
|
66832
66903
|
this.Frame.Data=this.ChartPaint[0].Data;
|
|
66833
66904
|
|
|
66834
|
-
for(var i
|
|
66905
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i) //K线叠加 主图股票数据绑定到叠加上
|
|
66835
66906
|
{
|
|
66836
66907
|
var item=this.OverlayChartPaint[i];
|
|
66837
66908
|
item.MainData=this.ChartPaint[0].Data;
|
|
@@ -40117,38 +40117,95 @@ function ChartMultiText()
|
|
|
40117
40117
|
this.Color=g_JSChartResource.DefaultTextColor;
|
|
40118
40118
|
this.IsHScreen=false; //是否横屏
|
|
40119
40119
|
|
|
40120
|
-
this.
|
|
40120
|
+
this.BuildKey=function(item)
|
|
40121
40121
|
{
|
|
40122
|
-
if (
|
|
40123
|
-
|
|
40124
|
-
|
|
40122
|
+
if (IFrameSplitOperator.IsNumber(item.Time))
|
|
40123
|
+
{
|
|
40124
|
+
var key=`${kItem.Date}-${item.Time}`;
|
|
40125
|
+
}
|
|
40126
|
+
else
|
|
40127
|
+
{
|
|
40128
|
+
var key=`${item.Date}`;
|
|
40129
|
+
}
|
|
40130
|
+
|
|
40131
|
+
return key;
|
|
40132
|
+
}
|
|
40125
40133
|
|
|
40126
|
-
|
|
40134
|
+
this.GetShowTextData=function()
|
|
40135
|
+
{
|
|
40127
40136
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
40128
40137
|
var offset=this.Data.DataOffset;
|
|
40129
|
-
var left=this.ChartBorder.GetLeft();
|
|
40130
|
-
var right=this.ChartBorder.GetRight();
|
|
40131
|
-
var top=this.ChartBorder.GetTopEx();
|
|
40132
|
-
var bottom=this.ChartBorder.GetBottomEx();
|
|
40133
40138
|
|
|
40134
|
-
|
|
40135
|
-
{
|
|
40136
|
-
left=this.ChartBorder.GetTop();
|
|
40137
|
-
right=this.ChartBorder.GetBottom();
|
|
40138
|
-
}
|
|
40139
|
-
|
|
40140
|
-
var y=0;
|
|
40139
|
+
var mapText=new Map(); //key='date-time' value={ Data:[] }
|
|
40141
40140
|
for(var i=0; i<this.Texts.length; ++i)
|
|
40142
40141
|
{
|
|
40143
40142
|
var item=this.Texts[i];
|
|
40144
|
-
|
|
40145
40143
|
if (!item.Text) continue;
|
|
40146
40144
|
if (!IFrameSplitOperator.IsNumber(item.Index)) continue;
|
|
40147
40145
|
|
|
40148
40146
|
var index=item.Index-offset;
|
|
40149
40147
|
if (index>=0 && index<xPointCount)
|
|
40150
40148
|
{
|
|
40151
|
-
var
|
|
40149
|
+
var key=this.BuildKey(item);
|
|
40150
|
+
if (mapText.has(key))
|
|
40151
|
+
{
|
|
40152
|
+
var textItem=mapText.get(key);
|
|
40153
|
+
textItem.Data.push(item);
|
|
40154
|
+
}
|
|
40155
|
+
else
|
|
40156
|
+
{
|
|
40157
|
+
var textItem={ Data:[item] };
|
|
40158
|
+
mapText.set(key, textItem);
|
|
40159
|
+
}
|
|
40160
|
+
}
|
|
40161
|
+
}
|
|
40162
|
+
|
|
40163
|
+
return mapText;
|
|
40164
|
+
}
|
|
40165
|
+
|
|
40166
|
+
this.DrawAllText=function(mapText)
|
|
40167
|
+
{
|
|
40168
|
+
var bHScreen=(this.ChartFrame.IsHScreen===true);
|
|
40169
|
+
var isMinute=this.IsMinuteFrame();
|
|
40170
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
40171
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
40172
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
40173
|
+
|
|
40174
|
+
if (bHScreen)
|
|
40175
|
+
{
|
|
40176
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
40177
|
+
var chartright=border.BottomEx;
|
|
40178
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
40179
|
+
var left=this.ChartBorder.GetTop();
|
|
40180
|
+
var right=this.ChartBorder.GetBottom();
|
|
40181
|
+
}
|
|
40182
|
+
else
|
|
40183
|
+
{
|
|
40184
|
+
var border=this.ChartBorder.GetBorder();
|
|
40185
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
40186
|
+
var chartright=border.RightEx;
|
|
40187
|
+
var left=this.ChartBorder.GetLeft();
|
|
40188
|
+
var right=this.ChartBorder.GetRight();
|
|
40189
|
+
}
|
|
40190
|
+
|
|
40191
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
40192
|
+
{
|
|
40193
|
+
var kItem=this.Data.Data[i];
|
|
40194
|
+
if (!kItem) continue;
|
|
40195
|
+
|
|
40196
|
+
var key=this.BuildKey(kItem);
|
|
40197
|
+
if (!mapText.has(key)) continue;
|
|
40198
|
+
|
|
40199
|
+
var left=xOffset;
|
|
40200
|
+
var right=xOffset+dataWidth;
|
|
40201
|
+
if (right>chartright) break;
|
|
40202
|
+
var x=left+(right-left)/2;
|
|
40203
|
+
|
|
40204
|
+
var textItem=mapText.get(key);
|
|
40205
|
+
for(var k=0;k<textItem.Data.length;++k)
|
|
40206
|
+
{
|
|
40207
|
+
var item=textItem.Data[k];
|
|
40208
|
+
|
|
40152
40209
|
if (item.Value=="TOP") y=top;
|
|
40153
40210
|
else if (item.Value=="BOTTOM") y=bottom;
|
|
40154
40211
|
else y=this.ChartFrame.GetYFromData(item.Value);
|
|
@@ -40230,6 +40287,20 @@ function ChartMultiText()
|
|
|
40230
40287
|
}
|
|
40231
40288
|
}
|
|
40232
40289
|
|
|
40290
|
+
this.Draw=function()
|
|
40291
|
+
{
|
|
40292
|
+
if (!this.IsShow || this.ChartFrame.IsMinSize) return;
|
|
40293
|
+
if (!this.Data || this.Data.length<=0) return;
|
|
40294
|
+
if (!this.Texts) return;
|
|
40295
|
+
|
|
40296
|
+
this.IsHScreen=(this.ChartFrame.IsHScreen===true);
|
|
40297
|
+
|
|
40298
|
+
var mapText=this.GetShowTextData();
|
|
40299
|
+
if (mapText.size<=0) return;
|
|
40300
|
+
|
|
40301
|
+
this.DrawAllText(mapText);
|
|
40302
|
+
}
|
|
40303
|
+
|
|
40233
40304
|
this.GetMaxMin=function()
|
|
40234
40305
|
{
|
|
40235
40306
|
var range={ Min:null, Max:null };
|
|
@@ -70968,7 +71039,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
70968
71039
|
|
|
70969
71040
|
if (this.KLineSize)
|
|
70970
71041
|
{
|
|
70971
|
-
if (this.KLineSize.DataWidth
|
|
71042
|
+
if (!IFrameSplitOperator.IsNumber(this.KLineSize.DataWidth))
|
|
70972
71043
|
{
|
|
70973
71044
|
showCount=this.Frame.SubFrame[0].Frame.XPointCount-this.RightSpaceCount;
|
|
70974
71045
|
}
|
|
@@ -70980,7 +71051,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
70980
71051
|
}
|
|
70981
71052
|
}
|
|
70982
71053
|
|
|
70983
|
-
for(var i
|
|
71054
|
+
for(var i=0;i<this.Frame.SubFrame.length;++i)
|
|
70984
71055
|
{
|
|
70985
71056
|
var item =this.Frame.SubFrame[i].Frame;
|
|
70986
71057
|
item.XPointCount=showCount+this.RightSpaceCount;
|
|
@@ -70998,7 +71069,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
70998
71069
|
this.ChartCorssCursor.StringFormatX.Data=this.ChartPaint[0].Data; //十字光标
|
|
70999
71070
|
this.Frame.Data=this.ChartPaint[0].Data;
|
|
71000
71071
|
|
|
71001
|
-
for(var i
|
|
71072
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i) //K线叠加 主图股票数据绑定到叠加上
|
|
71002
71073
|
{
|
|
71003
71074
|
var item=this.OverlayChartPaint[i];
|
|
71004
71075
|
item.MainData=this.ChartPaint[0].Data;
|
|
@@ -131793,7 +131864,7 @@ function ScrollBarBGChart()
|
|
|
131793
131864
|
|
|
131794
131865
|
|
|
131795
131866
|
|
|
131796
|
-
var HQCHART_VERSION="1.1.
|
|
131867
|
+
var HQCHART_VERSION="1.1.12835";
|
|
131797
131868
|
|
|
131798
131869
|
function PrintHQChartVersion()
|
|
131799
131870
|
{
|
|
@@ -40161,38 +40161,95 @@ function ChartMultiText()
|
|
|
40161
40161
|
this.Color=g_JSChartResource.DefaultTextColor;
|
|
40162
40162
|
this.IsHScreen=false; //是否横屏
|
|
40163
40163
|
|
|
40164
|
-
this.
|
|
40164
|
+
this.BuildKey=function(item)
|
|
40165
40165
|
{
|
|
40166
|
-
if (
|
|
40167
|
-
|
|
40168
|
-
|
|
40166
|
+
if (IFrameSplitOperator.IsNumber(item.Time))
|
|
40167
|
+
{
|
|
40168
|
+
var key=`${kItem.Date}-${item.Time}`;
|
|
40169
|
+
}
|
|
40170
|
+
else
|
|
40171
|
+
{
|
|
40172
|
+
var key=`${item.Date}`;
|
|
40173
|
+
}
|
|
40174
|
+
|
|
40175
|
+
return key;
|
|
40176
|
+
}
|
|
40169
40177
|
|
|
40170
|
-
|
|
40178
|
+
this.GetShowTextData=function()
|
|
40179
|
+
{
|
|
40171
40180
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
40172
40181
|
var offset=this.Data.DataOffset;
|
|
40173
|
-
var left=this.ChartBorder.GetLeft();
|
|
40174
|
-
var right=this.ChartBorder.GetRight();
|
|
40175
|
-
var top=this.ChartBorder.GetTopEx();
|
|
40176
|
-
var bottom=this.ChartBorder.GetBottomEx();
|
|
40177
40182
|
|
|
40178
|
-
|
|
40179
|
-
{
|
|
40180
|
-
left=this.ChartBorder.GetTop();
|
|
40181
|
-
right=this.ChartBorder.GetBottom();
|
|
40182
|
-
}
|
|
40183
|
-
|
|
40184
|
-
var y=0;
|
|
40183
|
+
var mapText=new Map(); //key='date-time' value={ Data:[] }
|
|
40185
40184
|
for(var i=0; i<this.Texts.length; ++i)
|
|
40186
40185
|
{
|
|
40187
40186
|
var item=this.Texts[i];
|
|
40188
|
-
|
|
40189
40187
|
if (!item.Text) continue;
|
|
40190
40188
|
if (!IFrameSplitOperator.IsNumber(item.Index)) continue;
|
|
40191
40189
|
|
|
40192
40190
|
var index=item.Index-offset;
|
|
40193
40191
|
if (index>=0 && index<xPointCount)
|
|
40194
40192
|
{
|
|
40195
|
-
var
|
|
40193
|
+
var key=this.BuildKey(item);
|
|
40194
|
+
if (mapText.has(key))
|
|
40195
|
+
{
|
|
40196
|
+
var textItem=mapText.get(key);
|
|
40197
|
+
textItem.Data.push(item);
|
|
40198
|
+
}
|
|
40199
|
+
else
|
|
40200
|
+
{
|
|
40201
|
+
var textItem={ Data:[item] };
|
|
40202
|
+
mapText.set(key, textItem);
|
|
40203
|
+
}
|
|
40204
|
+
}
|
|
40205
|
+
}
|
|
40206
|
+
|
|
40207
|
+
return mapText;
|
|
40208
|
+
}
|
|
40209
|
+
|
|
40210
|
+
this.DrawAllText=function(mapText)
|
|
40211
|
+
{
|
|
40212
|
+
var bHScreen=(this.ChartFrame.IsHScreen===true);
|
|
40213
|
+
var isMinute=this.IsMinuteFrame();
|
|
40214
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
40215
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
40216
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
40217
|
+
|
|
40218
|
+
if (bHScreen)
|
|
40219
|
+
{
|
|
40220
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
40221
|
+
var chartright=border.BottomEx;
|
|
40222
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
40223
|
+
var left=this.ChartBorder.GetTop();
|
|
40224
|
+
var right=this.ChartBorder.GetBottom();
|
|
40225
|
+
}
|
|
40226
|
+
else
|
|
40227
|
+
{
|
|
40228
|
+
var border=this.ChartBorder.GetBorder();
|
|
40229
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
40230
|
+
var chartright=border.RightEx;
|
|
40231
|
+
var left=this.ChartBorder.GetLeft();
|
|
40232
|
+
var right=this.ChartBorder.GetRight();
|
|
40233
|
+
}
|
|
40234
|
+
|
|
40235
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
40236
|
+
{
|
|
40237
|
+
var kItem=this.Data.Data[i];
|
|
40238
|
+
if (!kItem) continue;
|
|
40239
|
+
|
|
40240
|
+
var key=this.BuildKey(kItem);
|
|
40241
|
+
if (!mapText.has(key)) continue;
|
|
40242
|
+
|
|
40243
|
+
var left=xOffset;
|
|
40244
|
+
var right=xOffset+dataWidth;
|
|
40245
|
+
if (right>chartright) break;
|
|
40246
|
+
var x=left+(right-left)/2;
|
|
40247
|
+
|
|
40248
|
+
var textItem=mapText.get(key);
|
|
40249
|
+
for(var k=0;k<textItem.Data.length;++k)
|
|
40250
|
+
{
|
|
40251
|
+
var item=textItem.Data[k];
|
|
40252
|
+
|
|
40196
40253
|
if (item.Value=="TOP") y=top;
|
|
40197
40254
|
else if (item.Value=="BOTTOM") y=bottom;
|
|
40198
40255
|
else y=this.ChartFrame.GetYFromData(item.Value);
|
|
@@ -40274,6 +40331,20 @@ function ChartMultiText()
|
|
|
40274
40331
|
}
|
|
40275
40332
|
}
|
|
40276
40333
|
|
|
40334
|
+
this.Draw=function()
|
|
40335
|
+
{
|
|
40336
|
+
if (!this.IsShow || this.ChartFrame.IsMinSize) return;
|
|
40337
|
+
if (!this.Data || this.Data.length<=0) return;
|
|
40338
|
+
if (!this.Texts) return;
|
|
40339
|
+
|
|
40340
|
+
this.IsHScreen=(this.ChartFrame.IsHScreen===true);
|
|
40341
|
+
|
|
40342
|
+
var mapText=this.GetShowTextData();
|
|
40343
|
+
if (mapText.size<=0) return;
|
|
40344
|
+
|
|
40345
|
+
this.DrawAllText(mapText);
|
|
40346
|
+
}
|
|
40347
|
+
|
|
40277
40348
|
this.GetMaxMin=function()
|
|
40278
40349
|
{
|
|
40279
40350
|
var range={ Min:null, Max:null };
|
|
@@ -71012,7 +71083,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71012
71083
|
|
|
71013
71084
|
if (this.KLineSize)
|
|
71014
71085
|
{
|
|
71015
|
-
if (this.KLineSize.DataWidth
|
|
71086
|
+
if (!IFrameSplitOperator.IsNumber(this.KLineSize.DataWidth))
|
|
71016
71087
|
{
|
|
71017
71088
|
showCount=this.Frame.SubFrame[0].Frame.XPointCount-this.RightSpaceCount;
|
|
71018
71089
|
}
|
|
@@ -71024,7 +71095,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71024
71095
|
}
|
|
71025
71096
|
}
|
|
71026
71097
|
|
|
71027
|
-
for(var i
|
|
71098
|
+
for(var i=0;i<this.Frame.SubFrame.length;++i)
|
|
71028
71099
|
{
|
|
71029
71100
|
var item =this.Frame.SubFrame[i].Frame;
|
|
71030
71101
|
item.XPointCount=showCount+this.RightSpaceCount;
|
|
@@ -71042,7 +71113,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71042
71113
|
this.ChartCorssCursor.StringFormatX.Data=this.ChartPaint[0].Data; //十字光标
|
|
71043
71114
|
this.Frame.Data=this.ChartPaint[0].Data;
|
|
71044
71115
|
|
|
71045
|
-
for(var i
|
|
71116
|
+
for(var i=0; i<this.OverlayChartPaint.length; ++i) //K线叠加 主图股票数据绑定到叠加上
|
|
71046
71117
|
{
|
|
71047
71118
|
var item=this.OverlayChartPaint[i];
|
|
71048
71119
|
item.MainData=this.ChartPaint[0].Data;
|
|
@@ -131951,7 +132022,7 @@ function HQChartScriptWorker()
|
|
|
131951
132022
|
|
|
131952
132023
|
|
|
131953
132024
|
|
|
131954
|
-
var HQCHART_VERSION="1.1.
|
|
132025
|
+
var HQCHART_VERSION="1.1.12835";
|
|
131955
132026
|
|
|
131956
132027
|
function PrintHQChartVersion()
|
|
131957
132028
|
{
|