hqchart 1.1.13304 → 1.1.13313

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.
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13303";
8
+ var HQCHART_VERSION="1.1.13312";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -6615,6 +6615,9 @@ var JSCHART_MENU_ID=
6615
6615
  CMD_CHANGE_DEFAULTCURSOR_ID:32, //修改鼠标形状
6616
6616
  CMD_CHANGE_API_INDEX_ID:33, //切换后台接口指标
6617
6617
  CMD_CHANGE_SCRIPT_INDEX_ID:34, //切换成自定义的脚本指标
6618
+
6619
+ CMD_CHANGE_BASELINE_ID:35, //分时图切换基准线
6620
+
6618
6621
  }
6619
6622
 
6620
6623
 
@@ -13253,6 +13256,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13253
13256
  if (this.ShowCallAuctionData && IFrameSplitOperator.IsBool(srcParam))
13254
13257
  this.ShowCallAuctionData({ Left:srcParam, MultiDay:{ Left:srcParam }});
13255
13258
  break;
13259
+ case JSCHART_MENU_ID.CMD_CHANGE_BASELINE_ID:
13260
+ if (this.ChangeBaselineType && IFrameSplitOperator.IsNumber(param))
13261
+ this.ChangeBaselineType(param);
13262
+ break;
13256
13263
 
13257
13264
  case JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID:
13258
13265
  if (this.ShowSelectData && srcParam) this.ShowSelectData(srcParam);
@@ -59516,6 +59523,8 @@ IChartDrawPicture.ArrayDrawPricture=
59516
59523
 
59517
59524
  { Name:"水平线2", ClassName:"ChartDrawHLine", Create:function() { return new ChartDrawHLine(); }},
59518
59525
 
59526
+ { Name:"MonitorLine", ClassName:"ChartDrawMonitorLine", Create:function() { return new ChartDrawMonitorLine(); }},
59527
+
59519
59528
 
59520
59529
  //trading view样式
59521
59530
  { Name:"Note", ClassName:"ChartDrawNote", Create:function() { return new ChartDrawNote(); } },
@@ -64371,6 +64380,222 @@ function ChartDrawCrosshair()
64371
64380
  }
64372
64381
  }
64373
64382
 
64383
+ //画图工具-监测线
64384
+ function ChartDrawMonitorLine()
64385
+ {
64386
+ this.newMethod=IChartDrawPicture; //派生
64387
+ this.newMethod();
64388
+ delete this.newMethod;
64389
+
64390
+ this.ClassName='ChartDrawMonitorLine';
64391
+ this.PointCount=1;
64392
+ this.IsPointIn=this.IsPointIn_XYValue_Line;
64393
+ this.IsHScreen=false;
64394
+ this.GetXYCoordinate=this.GetXYCoordinate_default;
64395
+ this.FormatLabelTextCallback=null;
64396
+
64397
+ this.LineColor='rgb(255,215,0)'
64398
+ this.LabelConfig=
64399
+ {
64400
+ Font:`${12*GetDevicePixelRatio()}px 微软雅黑`,
64401
+ BGColor:"rgb(30,144,255)", YTextOffset:4,
64402
+ LineColor:"rgba(255,215,0,0.8)",
64403
+ LineDash:[3,5],
64404
+ }
64405
+
64406
+
64407
+ this.SetOption=function(option)
64408
+ {
64409
+ if (option.LineColor) this.LineColor=option.LineColor;
64410
+ if (option.Label)
64411
+ {
64412
+ var item=option.Label;
64413
+ var dest=this.LabelConfig
64414
+ if (item.Font) dest.Font=item.Font;
64415
+ if (item.BGColor) dest.BGColor=item.BGColor;
64416
+ if (item.LineColor) dest.LineColor=item.LineColor;
64417
+ if (item.LineDash) dest.LineDash=item.LineDash;
64418
+ if (IFrameSplitOperator.IsNumber(item.YTextOffset)) dest.YTextOffset=item.YTextOffset;
64419
+ }
64420
+
64421
+ if (option.FormatLabelText) this.FormatLabelTextCallback=option.FormatLabelText;
64422
+ }
64423
+
64424
+ this.Draw=function()
64425
+ {
64426
+ this.LinePoint=[];
64427
+ if (this.IsFrameMinSize()) return;
64428
+ if (!this.IsShow) return;
64429
+
64430
+ if (!this.Frame || !this.Frame.Data) return;
64431
+ var data=this.Frame.Data;
64432
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.Data)) return;
64433
+
64434
+ if (this.Point.length!=1) return;
64435
+ if (this.Value.length!=1) return;
64436
+ this.IsHScreen=this.Frame.IsHScreen;
64437
+ if (this.IsHScreen) return;
64438
+
64439
+ if (this.Status==20) this.DrawMoveLine();
64440
+ else if (this.Status==10) this.DrawMonitorLine(data);
64441
+ }
64442
+
64443
+ this.DrawMoveLine=function()
64444
+ {
64445
+ var border=this.Frame.ChartBorder.GetBorder();
64446
+ var pt=this.Point[0];
64447
+ var x=ToFixedPoint(pt.X);
64448
+ this.ClipFrame();
64449
+
64450
+ this.Canvas.strokeStyle=this.LineColor;
64451
+ this.Canvas.beginPath();
64452
+ this.Canvas.moveTo(x,border.TopEx);
64453
+ this.Canvas.lineTo(x,border.BottomEx);
64454
+ this.Canvas.stroke();
64455
+
64456
+ this.Canvas.restore();
64457
+ }
64458
+
64459
+ this.DrawMonitorLine=function(data)
64460
+ {
64461
+ var isMinute=this.Frame.IsMinuteFrame();
64462
+ var dataWidth=this.Frame.DataWidth;
64463
+ var distanceWidth=this.Frame.DistanceWidth;
64464
+ var xPointCount=this.Frame.XPointCount;
64465
+
64466
+ if (this.IsHScreen)
64467
+ {
64468
+ //var border=this.Frame.ChartBorder.GetHScreenBorder();
64469
+ //var chartright=border.BottomEx;
64470
+ //var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
64471
+ }
64472
+ else
64473
+ {
64474
+ var border=this.Frame.ChartBorder.GetBorder();
64475
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
64476
+ var chartright=border.RightEx;
64477
+ }
64478
+
64479
+ var ptData=this.Value[0];
64480
+ this.ClipFrame();
64481
+
64482
+ var labelInfo=null;
64483
+ for(var i=data.DataOffset,j=0;i<data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
64484
+ {
64485
+ var item=data.Data[i];
64486
+
64487
+ if (isMinute)
64488
+ {
64489
+ var x=this.Frame.GetXFromIndex(j);
64490
+ }
64491
+ else
64492
+ {
64493
+ var left=xOffset;
64494
+ var right=xOffset+dataWidth;
64495
+ if (right>chartright) break;
64496
+ var x=left+(right-left)/2;
64497
+ }
64498
+
64499
+ if (i==ptData.XValue) //起始
64500
+ {
64501
+ this.Canvas.strokeStyle=this.LineColor;
64502
+ this.Canvas.beginPath();
64503
+ this.Canvas.moveTo(x,border.TopEx);
64504
+ this.Canvas.lineTo(x,border.BottomEx);
64505
+ this.Canvas.stroke();
64506
+
64507
+ var line={Start:{X:x, Y:border.TopEx}, End:{X:x, Y:border.BottomEx}};
64508
+ this.LinePoint.push(line);
64509
+ }
64510
+ else if (i==data.Data.length-1) //结束
64511
+ {
64512
+ if (this.LabelConfig.LineDash) this.Canvas.setLineDash(this.LabelConfig.LineDash);
64513
+ this.Canvas.strokeStyle=this.LabelConfig.LineColor;
64514
+ this.Canvas.beginPath();
64515
+ this.Canvas.moveTo(x,border.TopEx);
64516
+ this.Canvas.lineTo(x,border.BottomEx);
64517
+ this.Canvas.stroke();
64518
+ if (this.LabelConfig.LineDash) this.Canvas.setLineDash([]);
64519
+
64520
+ labelInfo={ Left:right, Data:data, StartIndex:ptData.XValue, AryText:[] };
64521
+ }
64522
+ }
64523
+
64524
+ this.Canvas.restore();
64525
+
64526
+ if (labelInfo) this.DrawLabel(labelInfo);
64527
+ }
64528
+
64529
+ this.DrawLabel=function(labelInfo)
64530
+ {
64531
+ if (!this.FormatLabelTextCallback) return;
64532
+ this.FormatLabelTextCallback(labelInfo);
64533
+ if (!IFrameSplitOperator.IsNonEmptyArray(labelInfo.AryText)) return;
64534
+ if (!IFrameSplitOperator.IsNumber(labelInfo.YValue)) return;
64535
+
64536
+ /*
64537
+ labelInfo.YValue=7.15;
64538
+ labelInfo.AryText=
64539
+ [
64540
+ { Name:"标题1:", Text:"6666", NameColor:"rgb(255,255,255)", TextColor:"rgb(30,10,30)" },
64541
+ { Name:"标题2:", Text:"08.00", NameColor:"rgb(255,255,255)", TextColor:"rgb(30,10,30)" },
64542
+ { Name:"标题3:", Text:"999.1", NameColor:"rgb(255,255,255)", TextColor:"rgb(30,10,30)" },
64543
+ { Name:"标题4:", Text:"320" , NameColor:"rgb(255,255,255)", TextColor:"rgb(30,10,30)"},
64544
+ { Name:"标题5:", Text:"77775.77", NameColor:"rgb(255,255,255)", TextColor:"rgb(30,10,30)" }
64545
+ ]
64546
+ */
64547
+
64548
+ var y=this.Frame.GetYFromData(labelInfo.YValue,false);
64549
+ this.Canvas.font=this.LabelConfig.Font;
64550
+ this.Canvas.textAlign="left";
64551
+ this.Canvas.textBaseline="top";
64552
+ var lineHeight=this.Canvas.measureText("擎").width+2;
64553
+ var maxWidth=0, lineCount=0;
64554
+ for(var i=0;i<labelInfo.AryText.length;++i)
64555
+ {
64556
+ var item=labelInfo.AryText[i];
64557
+ item.NameWidth=0;
64558
+ item.TextWidth=0;
64559
+ if (item.Name) item.NameWidth=this.Canvas.measureText(item.Name).width+2;
64560
+ if (item.Text) item.TextWidth=this.Canvas.measureText(item.Text).width+2;
64561
+
64562
+ var itemWidth=item.NameWidth+item.TextWidth;
64563
+ if (maxWidth<itemWidth) maxWidth=itemWidth;
64564
+ ++lineCount;
64565
+ }
64566
+
64567
+ var rtBG={ Left:labelInfo.Left+1, Top:y, Width:maxWidth+4, Height:lineHeight*lineCount+4 };
64568
+ rtBG.Right=rtBG.Left+rtBG.Width;
64569
+ rtBG.Bottom=rtBG.Top+rtBG.Height;
64570
+ if (this.LabelConfig.BGColor)
64571
+ {
64572
+ this.Canvas.fillStyle=this.LabelConfig.BGColor
64573
+ this.Canvas.fillRect(ToFixedRect(rtBG.Left),ToFixedRect(rtBG.Top),ToFixedRect(rtBG.Width),ToFixedRect(rtBG.Height));
64574
+ }
64575
+
64576
+ var xText=rtBG.Left+2;
64577
+ var yText=rtBG.Top+this.LabelConfig.YTextOffset;
64578
+ for(var i=0;i<labelInfo.AryText.length;++i)
64579
+ {
64580
+ var item=labelInfo.AryText[i];
64581
+
64582
+ if (item.Name)
64583
+ {
64584
+ this.Canvas.fillStyle=item.NameColor;
64585
+ this.Canvas.fillText(item.Name,xText,yText);
64586
+ }
64587
+
64588
+ if (item.Text)
64589
+ {
64590
+ this.Canvas.fillStyle=item.TextColor;
64591
+ this.Canvas.fillText(item.Text,xText+item.NameWidth ,yText);
64592
+ }
64593
+
64594
+ yText+=lineHeight;
64595
+ }
64596
+ }
64597
+ }
64598
+
64374
64599
  //画图工具-波浪尺
64375
64600
  function ChartDrawWaveRuler()
64376
64601
  {
@@ -79334,6 +79559,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
79334
79559
  this.DataStatus={ MultiDay:false, LatestDay:false, LatestDate:null}; //MultiDay=多日 LatestDay:当天 LatestDate:最后的日期
79335
79560
 
79336
79561
  this.ZoomStepPixel=50;
79562
+ this.BaselineType=0; //基准线类型 0=最新昨收盘 1=多日前昨收盘
79337
79563
 
79338
79564
  //集合竞价设置 obj={ Left:true/false, Right:true/false, MultiDay:{Left:, Right:} }
79339
79565
  this.SetCallCationDataBorder=function(obj)
@@ -80809,6 +81035,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
80809
81035
  { Name:"最近3日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[3]}, Checked:this.DayCount==3 },
80810
81036
  { Name:"最近4日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[4]}, Checked:this.DayCount==4 },
80811
81037
  { Name:"最近5日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[5]}, Checked:this.DayCount==5 },
81038
+
81039
+ {
81040
+ Name:"基准线选择",
81041
+ SubMenu:
81042
+ [
81043
+ { Name:"最新昨收价", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_BASELINE_ID, Args:[0]}, Checked:this.BaselineType===0 },
81044
+ { Name:"多日前昨收价", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_BASELINE_ID, Args:[1]}, Checked:this.BaselineType===1 }
81045
+ ]
81046
+
81047
+ }
80812
81048
  ]
80813
81049
  },
80814
81050
  {
@@ -81997,6 +82233,14 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
81997
82233
  this.RequestData();
81998
82234
  }
81999
82235
 
82236
+ this.ChangeBaselineType=function(type)
82237
+ {
82238
+ if (this.BaselineType==type) return;
82239
+
82240
+ this.BaselineType=type;
82241
+ if (this.DayCount>1) this.RequestData();
82242
+ }
82243
+
82000
82244
  //[{ Symbol: , Color, Option: }]
82001
82245
  this.OverlaySymbols=function(aryData, option)
82002
82246
  {
@@ -82484,10 +82728,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
82484
82728
 
82485
82729
 
82486
82730
  var upperSymbol=this.Symbol.toUpperCase();
82487
-
82488
- var yClose=this.DayData[0].YClose;
82489
82731
  var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
82490
- if (IFrameSplitOperator.IsNumber(this.DayData[0].YClearing) && isFutures) yClose=this.DayData[0].YClearing; //期货使用前结算价
82732
+ var dayItem=this.DayData[0]; //最新
82733
+ if (this.BaselineType===1) dayItem=this.DayData[this.DayData.length-1]; //多日前
82734
+
82735
+ var yClose=dayItem.YClose;
82736
+ if (IFrameSplitOperator.IsNumber(dayItem.YClearing) && isFutures) yClose=dayItem.YClearing; //期货使用前结算价
82737
+
82491
82738
  this.BindMainData(sourceData,yClose);
82492
82739
 
82493
82740
  //外汇 均线暂时不用
@@ -84312,6 +84559,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
84312
84559
  {
84313
84560
  var value=frame.GetXData(x);
84314
84561
  index=parseInt(value.toFixed(0));
84562
+ if (IFrameSplitOperator.IsNumber(data.DataOffset)) index+=data.DataOffset; //加上数据偏移
84315
84563
  }
84316
84564
  else if (clientPos>=100 && clientPos<=199)
84317
84565
  {
@@ -135401,6 +135649,7 @@ function JSDialogDrawTool()
135401
135649
  [
135402
135650
  { Title: '价格范围', ClassName: 'hqchart_drawtool icon-shijianfanwei', Type:0, Data:{ ID:"PriceRange" } },
135403
135651
  { Title: '时间范围', ClassName: 'hqchart_drawtool icon-jiagefanwei', Type:0, Data:{ ID:"DateRange" } },
135652
+ { Title: "监测线", ClassName:"hqchart_drawtool icon-jiance", Type:0, Data:{ ID:"MonitorLine"} },
135404
135653
  ]
135405
135654
  },
135406
135655
  {
@@ -135748,7 +135997,7 @@ function JSDialogDrawTool()
135748
135997
  {
135749
135998
  LineColor:this.LineColor, //线段颜色
135750
135999
  LineWidth:this.LineWidth, //线段宽度
135751
- //PointColor:'rgba(255,130,71,0.5)' //点颜色
136000
+ PointColor:this.LineColor //点颜色
135752
136001
  };
135753
136002
 
135754
136003
  var name=data.Item.Data.ID;
@@ -135831,6 +136080,19 @@ function JSDialogDrawTool()
135831
136080
  }
135832
136081
 
135833
136082
 
136083
+ /////////////////////////////////////////////////////////////////////////////////////
136084
+ // 修改画图工具
136085
+ //
136086
+ //
136087
+ ////////////////////////////////////////////////////////////////////////////////////
136088
+ function JSDialogModifyDraw()
136089
+ {
136090
+ this.DivDialog=null;
136091
+ this.HQChart;
136092
+ this.ChartPicture;
136093
+ }
136094
+
136095
+
135834
136096
 
135835
136097
 
135836
136098
 
@@ -135955,7 +136217,7 @@ function HQChartScriptWorker()
135955
136217
 
135956
136218
 
135957
136219
 
135958
- var HQCHART_VERSION="1.1.13303";
136220
+ var HQCHART_VERSION="1.1.13312";
135959
136221
 
135960
136222
  function PrintHQChartVersion()
135961
136223
  {