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.
@@ -2679,6 +2679,9 @@ var JSCHART_MENU_ID=
2679
2679
  CMD_CHANGE_DEFAULTCURSOR_ID:32, //修改鼠标形状
2680
2680
  CMD_CHANGE_API_INDEX_ID:33, //切换后台接口指标
2681
2681
  CMD_CHANGE_SCRIPT_INDEX_ID:34, //切换成自定义的脚本指标
2682
+
2683
+ CMD_CHANGE_BASELINE_ID:35, //分时图切换基准线
2684
+
2682
2685
  }
2683
2686
 
2684
2687
 
@@ -9317,6 +9320,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9317
9320
  if (this.ShowCallAuctionData && IFrameSplitOperator.IsBool(srcParam))
9318
9321
  this.ShowCallAuctionData({ Left:srcParam, MultiDay:{ Left:srcParam }});
9319
9322
  break;
9323
+ case JSCHART_MENU_ID.CMD_CHANGE_BASELINE_ID:
9324
+ if (this.ChangeBaselineType && IFrameSplitOperator.IsNumber(param))
9325
+ this.ChangeBaselineType(param);
9326
+ break;
9320
9327
 
9321
9328
  case JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID:
9322
9329
  if (this.ShowSelectData && srcParam) this.ShowSelectData(srcParam);
@@ -55580,6 +55587,8 @@ IChartDrawPicture.ArrayDrawPricture=
55580
55587
 
55581
55588
  { Name:"水平线2", ClassName:"ChartDrawHLine", Create:function() { return new ChartDrawHLine(); }},
55582
55589
 
55590
+ { Name:"MonitorLine", ClassName:"ChartDrawMonitorLine", Create:function() { return new ChartDrawMonitorLine(); }},
55591
+
55583
55592
 
55584
55593
  //trading view样式
55585
55594
  { Name:"Note", ClassName:"ChartDrawNote", Create:function() { return new ChartDrawNote(); } },
@@ -60435,6 +60444,222 @@ function ChartDrawCrosshair()
60435
60444
  }
60436
60445
  }
60437
60446
 
60447
+ //画图工具-监测线
60448
+ function ChartDrawMonitorLine()
60449
+ {
60450
+ this.newMethod=IChartDrawPicture; //派生
60451
+ this.newMethod();
60452
+ delete this.newMethod;
60453
+
60454
+ this.ClassName='ChartDrawMonitorLine';
60455
+ this.PointCount=1;
60456
+ this.IsPointIn=this.IsPointIn_XYValue_Line;
60457
+ this.IsHScreen=false;
60458
+ this.GetXYCoordinate=this.GetXYCoordinate_default;
60459
+ this.FormatLabelTextCallback=null;
60460
+
60461
+ this.LineColor='rgb(255,215,0)'
60462
+ this.LabelConfig=
60463
+ {
60464
+ Font:`${12*GetDevicePixelRatio()}px 微软雅黑`,
60465
+ BGColor:"rgb(30,144,255)", YTextOffset:4,
60466
+ LineColor:"rgba(255,215,0,0.8)",
60467
+ LineDash:[3,5],
60468
+ }
60469
+
60470
+
60471
+ this.SetOption=function(option)
60472
+ {
60473
+ if (option.LineColor) this.LineColor=option.LineColor;
60474
+ if (option.Label)
60475
+ {
60476
+ var item=option.Label;
60477
+ var dest=this.LabelConfig
60478
+ if (item.Font) dest.Font=item.Font;
60479
+ if (item.BGColor) dest.BGColor=item.BGColor;
60480
+ if (item.LineColor) dest.LineColor=item.LineColor;
60481
+ if (item.LineDash) dest.LineDash=item.LineDash;
60482
+ if (IFrameSplitOperator.IsNumber(item.YTextOffset)) dest.YTextOffset=item.YTextOffset;
60483
+ }
60484
+
60485
+ if (option.FormatLabelText) this.FormatLabelTextCallback=option.FormatLabelText;
60486
+ }
60487
+
60488
+ this.Draw=function()
60489
+ {
60490
+ this.LinePoint=[];
60491
+ if (this.IsFrameMinSize()) return;
60492
+ if (!this.IsShow) return;
60493
+
60494
+ if (!this.Frame || !this.Frame.Data) return;
60495
+ var data=this.Frame.Data;
60496
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.Data)) return;
60497
+
60498
+ if (this.Point.length!=1) return;
60499
+ if (this.Value.length!=1) return;
60500
+ this.IsHScreen=this.Frame.IsHScreen;
60501
+ if (this.IsHScreen) return;
60502
+
60503
+ if (this.Status==20) this.DrawMoveLine();
60504
+ else if (this.Status==10) this.DrawMonitorLine(data);
60505
+ }
60506
+
60507
+ this.DrawMoveLine=function()
60508
+ {
60509
+ var border=this.Frame.ChartBorder.GetBorder();
60510
+ var pt=this.Point[0];
60511
+ var x=ToFixedPoint(pt.X);
60512
+ this.ClipFrame();
60513
+
60514
+ this.Canvas.strokeStyle=this.LineColor;
60515
+ this.Canvas.beginPath();
60516
+ this.Canvas.moveTo(x,border.TopEx);
60517
+ this.Canvas.lineTo(x,border.BottomEx);
60518
+ this.Canvas.stroke();
60519
+
60520
+ this.Canvas.restore();
60521
+ }
60522
+
60523
+ this.DrawMonitorLine=function(data)
60524
+ {
60525
+ var isMinute=this.Frame.IsMinuteFrame();
60526
+ var dataWidth=this.Frame.DataWidth;
60527
+ var distanceWidth=this.Frame.DistanceWidth;
60528
+ var xPointCount=this.Frame.XPointCount;
60529
+
60530
+ if (this.IsHScreen)
60531
+ {
60532
+ //var border=this.Frame.ChartBorder.GetHScreenBorder();
60533
+ //var chartright=border.BottomEx;
60534
+ //var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
60535
+ }
60536
+ else
60537
+ {
60538
+ var border=this.Frame.ChartBorder.GetBorder();
60539
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
60540
+ var chartright=border.RightEx;
60541
+ }
60542
+
60543
+ var ptData=this.Value[0];
60544
+ this.ClipFrame();
60545
+
60546
+ var labelInfo=null;
60547
+ for(var i=data.DataOffset,j=0;i<data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
60548
+ {
60549
+ var item=data.Data[i];
60550
+
60551
+ if (isMinute)
60552
+ {
60553
+ var x=this.Frame.GetXFromIndex(j);
60554
+ }
60555
+ else
60556
+ {
60557
+ var left=xOffset;
60558
+ var right=xOffset+dataWidth;
60559
+ if (right>chartright) break;
60560
+ var x=left+(right-left)/2;
60561
+ }
60562
+
60563
+ if (i==ptData.XValue) //起始
60564
+ {
60565
+ this.Canvas.strokeStyle=this.LineColor;
60566
+ this.Canvas.beginPath();
60567
+ this.Canvas.moveTo(x,border.TopEx);
60568
+ this.Canvas.lineTo(x,border.BottomEx);
60569
+ this.Canvas.stroke();
60570
+
60571
+ var line={Start:{X:x, Y:border.TopEx}, End:{X:x, Y:border.BottomEx}};
60572
+ this.LinePoint.push(line);
60573
+ }
60574
+ else if (i==data.Data.length-1) //结束
60575
+ {
60576
+ if (this.LabelConfig.LineDash) this.Canvas.setLineDash(this.LabelConfig.LineDash);
60577
+ this.Canvas.strokeStyle=this.LabelConfig.LineColor;
60578
+ this.Canvas.beginPath();
60579
+ this.Canvas.moveTo(x,border.TopEx);
60580
+ this.Canvas.lineTo(x,border.BottomEx);
60581
+ this.Canvas.stroke();
60582
+ if (this.LabelConfig.LineDash) this.Canvas.setLineDash([]);
60583
+
60584
+ labelInfo={ Left:right, Data:data, StartIndex:ptData.XValue, AryText:[] };
60585
+ }
60586
+ }
60587
+
60588
+ this.Canvas.restore();
60589
+
60590
+ if (labelInfo) this.DrawLabel(labelInfo);
60591
+ }
60592
+
60593
+ this.DrawLabel=function(labelInfo)
60594
+ {
60595
+ if (!this.FormatLabelTextCallback) return;
60596
+ this.FormatLabelTextCallback(labelInfo);
60597
+ if (!IFrameSplitOperator.IsNonEmptyArray(labelInfo.AryText)) return;
60598
+ if (!IFrameSplitOperator.IsNumber(labelInfo.YValue)) return;
60599
+
60600
+ /*
60601
+ labelInfo.YValue=7.15;
60602
+ labelInfo.AryText=
60603
+ [
60604
+ { Name:"标题1:", Text:"6666", NameColor:"rgb(255,255,255)", TextColor:"rgb(30,10,30)" },
60605
+ { Name:"标题2:", Text:"08.00", NameColor:"rgb(255,255,255)", TextColor:"rgb(30,10,30)" },
60606
+ { Name:"标题3:", Text:"999.1", NameColor:"rgb(255,255,255)", TextColor:"rgb(30,10,30)" },
60607
+ { Name:"标题4:", Text:"320" , NameColor:"rgb(255,255,255)", TextColor:"rgb(30,10,30)"},
60608
+ { Name:"标题5:", Text:"77775.77", NameColor:"rgb(255,255,255)", TextColor:"rgb(30,10,30)" }
60609
+ ]
60610
+ */
60611
+
60612
+ var y=this.Frame.GetYFromData(labelInfo.YValue,false);
60613
+ this.Canvas.font=this.LabelConfig.Font;
60614
+ this.Canvas.textAlign="left";
60615
+ this.Canvas.textBaseline="top";
60616
+ var lineHeight=this.Canvas.measureText("擎").width+2;
60617
+ var maxWidth=0, lineCount=0;
60618
+ for(var i=0;i<labelInfo.AryText.length;++i)
60619
+ {
60620
+ var item=labelInfo.AryText[i];
60621
+ item.NameWidth=0;
60622
+ item.TextWidth=0;
60623
+ if (item.Name) item.NameWidth=this.Canvas.measureText(item.Name).width+2;
60624
+ if (item.Text) item.TextWidth=this.Canvas.measureText(item.Text).width+2;
60625
+
60626
+ var itemWidth=item.NameWidth+item.TextWidth;
60627
+ if (maxWidth<itemWidth) maxWidth=itemWidth;
60628
+ ++lineCount;
60629
+ }
60630
+
60631
+ var rtBG={ Left:labelInfo.Left+1, Top:y, Width:maxWidth+4, Height:lineHeight*lineCount+4 };
60632
+ rtBG.Right=rtBG.Left+rtBG.Width;
60633
+ rtBG.Bottom=rtBG.Top+rtBG.Height;
60634
+ if (this.LabelConfig.BGColor)
60635
+ {
60636
+ this.Canvas.fillStyle=this.LabelConfig.BGColor
60637
+ this.Canvas.fillRect(ToFixedRect(rtBG.Left),ToFixedRect(rtBG.Top),ToFixedRect(rtBG.Width),ToFixedRect(rtBG.Height));
60638
+ }
60639
+
60640
+ var xText=rtBG.Left+2;
60641
+ var yText=rtBG.Top+this.LabelConfig.YTextOffset;
60642
+ for(var i=0;i<labelInfo.AryText.length;++i)
60643
+ {
60644
+ var item=labelInfo.AryText[i];
60645
+
60646
+ if (item.Name)
60647
+ {
60648
+ this.Canvas.fillStyle=item.NameColor;
60649
+ this.Canvas.fillText(item.Name,xText,yText);
60650
+ }
60651
+
60652
+ if (item.Text)
60653
+ {
60654
+ this.Canvas.fillStyle=item.TextColor;
60655
+ this.Canvas.fillText(item.Text,xText+item.NameWidth ,yText);
60656
+ }
60657
+
60658
+ yText+=lineHeight;
60659
+ }
60660
+ }
60661
+ }
60662
+
60438
60663
  //画图工具-波浪尺
60439
60664
  function ChartDrawWaveRuler()
60440
60665
  {
@@ -75398,6 +75623,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
75398
75623
  this.DataStatus={ MultiDay:false, LatestDay:false, LatestDate:null}; //MultiDay=多日 LatestDay:当天 LatestDate:最后的日期
75399
75624
 
75400
75625
  this.ZoomStepPixel=50;
75626
+ this.BaselineType=0; //基准线类型 0=最新昨收盘 1=多日前昨收盘
75401
75627
 
75402
75628
  //集合竞价设置 obj={ Left:true/false, Right:true/false, MultiDay:{Left:, Right:} }
75403
75629
  this.SetCallCationDataBorder=function(obj)
@@ -76873,6 +77099,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
76873
77099
  { Name:"最近3日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[3]}, Checked:this.DayCount==3 },
76874
77100
  { Name:"最近4日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[4]}, Checked:this.DayCount==4 },
76875
77101
  { Name:"最近5日", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_DAY_COUNT_ID, Args:[5]}, Checked:this.DayCount==5 },
77102
+
77103
+ {
77104
+ Name:"基准线选择",
77105
+ SubMenu:
77106
+ [
77107
+ { Name:"最新昨收价", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_BASELINE_ID, Args:[0]}, Checked:this.BaselineType===0 },
77108
+ { Name:"多日前昨收价", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_BASELINE_ID, Args:[1]}, Checked:this.BaselineType===1 }
77109
+ ]
77110
+
77111
+ }
76876
77112
  ]
76877
77113
  },
76878
77114
  {
@@ -78061,6 +78297,14 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78061
78297
  this.RequestData();
78062
78298
  }
78063
78299
 
78300
+ this.ChangeBaselineType=function(type)
78301
+ {
78302
+ if (this.BaselineType==type) return;
78303
+
78304
+ this.BaselineType=type;
78305
+ if (this.DayCount>1) this.RequestData();
78306
+ }
78307
+
78064
78308
  //[{ Symbol: , Color, Option: }]
78065
78309
  this.OverlaySymbols=function(aryData, option)
78066
78310
  {
@@ -78548,10 +78792,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78548
78792
 
78549
78793
 
78550
78794
  var upperSymbol=this.Symbol.toUpperCase();
78551
-
78552
- var yClose=this.DayData[0].YClose;
78553
78795
  var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
78554
- if (IFrameSplitOperator.IsNumber(this.DayData[0].YClearing) && isFutures) yClose=this.DayData[0].YClearing; //期货使用前结算价
78796
+ var dayItem=this.DayData[0]; //最新
78797
+ if (this.BaselineType===1) dayItem=this.DayData[this.DayData.length-1]; //多日前
78798
+
78799
+ var yClose=dayItem.YClose;
78800
+ if (IFrameSplitOperator.IsNumber(dayItem.YClearing) && isFutures) yClose=dayItem.YClearing; //期货使用前结算价
78801
+
78555
78802
  this.BindMainData(sourceData,yClose);
78556
78803
 
78557
78804
  //外汇 均线暂时不用
@@ -80376,6 +80623,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
80376
80623
  {
80377
80624
  var value=frame.GetXData(x);
80378
80625
  index=parseInt(value.toFixed(0));
80626
+ if (IFrameSplitOperator.IsNumber(data.DataOffset)) index+=data.DataOffset; //加上数据偏移
80379
80627
  }
80380
80628
  else if (clientPos>=100 && clientPos<=199)
80381
80629
  {
@@ -54,6 +54,12 @@
54
54
  <div class="content unicode" style="display: block;">
55
55
  <ul class="icon_lists dib-box">
56
56
 
57
+ <li class="dib">
58
+ <span class="icon hqchart_drawtool">&#xe936;</span>
59
+ <div class="name">监测</div>
60
+ <div class="code-name">&amp;#xe936;</div>
61
+ </li>
62
+
57
63
  <li class="dib">
58
64
  <span class="icon hqchart_drawtool">&#xe79d;</span>
59
65
  <div class="name">图标_十字线</div>
@@ -402,9 +408,9 @@
402
408
  <pre><code class="language-css"
403
409
  >@font-face {
404
410
  font-family: 'hqchart_drawtool';
405
- src: url('iconfont.woff2?t=1715613859609') format('woff2'),
406
- url('iconfont.woff?t=1715613859609') format('woff'),
407
- url('iconfont.ttf?t=1715613859609') format('truetype');
411
+ src: url('iconfont.woff2?t=1715871387338') format('woff2'),
412
+ url('iconfont.woff?t=1715871387338') format('woff'),
413
+ url('iconfont.ttf?t=1715871387338') format('truetype');
408
414
  }
409
415
  </code></pre>
410
416
  <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@@ -430,6 +436,15 @@
430
436
  <div class="content font-class">
431
437
  <ul class="icon_lists dib-box">
432
438
 
439
+ <li class="dib">
440
+ <span class="icon hqchart_drawtool icon-jiance"></span>
441
+ <div class="name">
442
+ 监测
443
+ </div>
444
+ <div class="code-name">.icon-jiance
445
+ </div>
446
+ </li>
447
+
433
448
  <li class="dib">
434
449
  <span class="icon hqchart_drawtool icon-tubiao_shizixian"></span>
435
450
  <div class="name">
@@ -952,6 +967,14 @@
952
967
  <div class="content symbol">
953
968
  <ul class="icon_lists dib-box">
954
969
 
970
+ <li class="dib">
971
+ <svg class="icon svg-icon" aria-hidden="true">
972
+ <use xlink:href="#icon-jiance"></use>
973
+ </svg>
974
+ <div class="name">监测</div>
975
+ <div class="code-name">#icon-jiance</div>
976
+ </li>
977
+
955
978
  <li class="dib">
956
979
  <svg class="icon svg-icon" aria-hidden="true">
957
980
  <use xlink:href="#icon-tubiao_shizixian"></use>
@@ -1,8 +1,8 @@
1
1
  @font-face {
2
2
  font-family: "hqchart_drawtool"; /* Project id 4529603 */
3
- src: url('iconfont.woff2?t=1715613859609') format('woff2'),
4
- url('iconfont.woff?t=1715613859609') format('woff'),
5
- url('iconfont.ttf?t=1715613859609') format('truetype');
3
+ src: url('iconfont.woff2?t=1715871387338') format('woff2'),
4
+ url('iconfont.woff?t=1715871387338') format('woff'),
5
+ url('iconfont.ttf?t=1715871387338') format('truetype');
6
6
  }
7
7
 
8
8
  .hqchart_drawtool {
@@ -13,6 +13,10 @@
13
13
  -moz-osx-font-smoothing: grayscale;
14
14
  }
15
15
 
16
+ .icon-jiance:before {
17
+ content: "\e936";
18
+ }
19
+
16
20
  .icon-tubiao_shizixian:before {
17
21
  content: "\e79d";
18
22
  }