hqchart 1.1.14683 → 1.1.14691

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.
@@ -5168,6 +5168,12 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5168
5168
  chart.EnableBorderDrag=option.EnableBorderDrag;
5169
5169
  }
5170
5170
 
5171
+ if (IFrameSplitOperator.IsBool(option.EnableBuySellBar))
5172
+ {
5173
+ var barChart=chart.GetChartMinuteBuySellBar();
5174
+ if (barChart) barChart.IsShow=option.EnableBuySellBar;
5175
+ }
5176
+
5171
5177
  this.AdjustChartBorder(chart);
5172
5178
 
5173
5179
  if (option.Frame)
@@ -6730,7 +6736,7 @@ var JSCHART_EVENT_ID=
6730
6736
  ON_RCLICK_REPORT_HEADER:52, //右键点击表头
6731
6737
  ON_REPORT_LOCAL_SORT:53, //报价列表本地排序
6732
6738
  ON_DRAW_REPORT_NAME_COLOR:54, //报价列表股票名称列颜色
6733
- ON_DRAW_CUSTOM_TEXT:55, //报价列表自定义列
6739
+ ON_DRAW_CUSTOM_TEXT:55, //报价列表自定义列(废弃)
6734
6740
  ON_CLICK_REPORT_TAB:56, //报价列表标签点击
6735
6741
  ON_CLICK_REPORT_TABMENU:57, //报价列表标签菜单点击
6736
6742
  ON_DRAW_REPORT_FIXEDROW_TEXT:58, //报价列表固定行绘制
@@ -7067,6 +7073,7 @@ var JSCHART_MENU_ID=
7067
7073
  CMD_FULLSCREEN_SUMMARY_ID:56, //当前屏区间统计
7068
7074
  CMD_CORSS_DBCLICK_ID:57, //双击显示隐藏十字光标
7069
7075
  CMD_ENABLE_KLINE_DAY_SUMMARY_ID:58, //K线底部显示走完剩余时间
7076
+ CMD_SHOW_BUYSELL_BAR_ID:59, //盘口分析(右侧显示买卖盘柱子) 分时图
7070
7077
 
7071
7078
 
7072
7079
 
@@ -7309,6 +7316,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7309
7316
  this.CustomChartDrag; //自定义图形的拖拽操作 { Type:, Data: }
7310
7317
 
7311
7318
  this.StockCache={ Data:null }; //扩展数据缓存数据
7319
+ this.BuySellData={ ArySell:null, AryBuy:null }; //10档买卖盘
7312
7320
 
7313
7321
  this.JSPopMenu; //内置菜单
7314
7322
  this.IsShowRightMenu=true; //显示右键菜单
@@ -7360,6 +7368,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7360
7368
  this.ClearStockCache=function()
7361
7369
  {
7362
7370
  this.StockCache.Data=null;
7371
+ this.BuySellData.AryBuy=null;
7372
+ this.BuySellData.ArySell=null;
7363
7373
  }
7364
7374
 
7365
7375
  this.InitalPopMenu=function() //初始化弹出窗口
@@ -15047,6 +15057,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
15047
15057
  this.Draw();
15048
15058
  }
15049
15059
  break;
15060
+ case JSCHART_MENU_ID.CMD_SHOW_BUYSELL_BAR_ID:
15061
+ if (IFrameSplitOperator.IsBool(srcParam))
15062
+ {
15063
+ var chart=this.GetChartMinuteBuySellBar();
15064
+ chart.IsShow=srcParam;
15065
+ this.RequestData({ ClearYCoordinateMaxMin:true });
15066
+ this.Draw();
15067
+ }
15068
+ break;
15050
15069
  }
15051
15070
  }
15052
15071
 
@@ -29697,7 +29716,8 @@ function ChartPaintFactory()
29697
29716
  [
29698
29717
  ["ChartKLine", { Create:function(option) { return new ChartKLine(); } }], //K线图
29699
29718
  ["ChartMinuteVolumBar",{ Create:function(option) { return new ChartMinuteVolumBar(); } }], //分时成交量柱子
29700
- ["ChartMinutePriceLine",{ Create:function(option) { return new ChartMinutePriceLine();} }]
29719
+ ["ChartMinutePriceLine",{ Create:function(option) { return new ChartMinutePriceLine();} }],
29720
+ ["ChartMinuteBuySellBar", { Create:function(option){ return new ChartMinuteBuySellBar(); }}],
29701
29721
  ]);
29702
29722
 
29703
29723
  this.Create=function(name, option)
@@ -44218,6 +44238,216 @@ function ChartMinutePositionLine()
44218
44238
  }
44219
44239
  }
44220
44240
 
44241
+ //分时图 右侧10档买卖柱子
44242
+ function ChartMinuteBuySellBar()
44243
+ {
44244
+ this.newMethod=IChartPainting; //派生
44245
+ this.newMethod();
44246
+ delete this.newMethod;
44247
+
44248
+ this.BuyColor=g_JSChartResource.Minute.BuySellBar.BuyColor;
44249
+ this.SellColor=g_JSChartResource.Minute.BuySellBar.SellColor;
44250
+ this.BarWidth=g_JSChartResource.Minute.BuySellBar.BarWidth;
44251
+ this.MaxBarWidth=g_JSChartResource.Minute.BuySellBar.MaxBarWidth;
44252
+ this.YOffset=g_JSChartResource.Minute.BuySellBar.YOffset;
44253
+ this.Font=g_JSChartResource.Minute.BuySellBar.Font;
44254
+ this.TextColor=g_JSChartResource.Minute.BuySellBar.TextColor;
44255
+
44256
+ this.IsDrawFirst=true;
44257
+ this.IsShow=false;
44258
+
44259
+ this.BuySellData=null; //{ AryBuy:[{ Price:10.5, Vol:300}], ArySell:[{ Price:10.5, Vol:300}] }
44260
+
44261
+ this.ReloadResource=function(resource)
44262
+ {
44263
+ this.BuyColor=g_JSChartResource.Minute.BuySellBar.BuyColor;
44264
+ this.SellColor=g_JSChartResource.Minute.BuySellBar.SellColor;
44265
+ this.BarWidth=g_JSChartResource.Minute.BuySellBar.BarWidth;
44266
+ this.MaxBarWidth=g_JSChartResource.Minute.BuySellBar.MaxBarWidth;
44267
+ this.YOffset=g_JSChartResource.Minute.BuySellBar.YOffset;
44268
+ this.Font=g_JSChartResource.Minute.BuySellBar.Font;
44269
+ this.TextColor=g_JSChartResource.Minute.BuySellBar.TextColor;
44270
+ }
44271
+
44272
+ this.Draw=function()
44273
+ {
44274
+ if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
44275
+ if (this.IsShowIndexTitleOnly()) return;
44276
+ if (this.IsHideScriptIndex()) return;
44277
+ if (!this.BuySellData) return;
44278
+
44279
+ var volRange=this.GetVolRange();
44280
+ if (!volRange) return;
44281
+
44282
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
44283
+ var xPointCount=this.ChartFrame.XPointCount;
44284
+
44285
+ var xStart=this.ChartFrame.GetXFromIndex(xPointCount-this.MaxBarWidth);
44286
+ var xEnd=this.ChartFrame.GetXFromIndex(xPointCount-1);
44287
+
44288
+ function _Temp_GetXFromData(value)
44289
+ {
44290
+ var maxWidth=xEnd-xStart;
44291
+ var width = maxWidth * (value - volRange.Min) / (volRange.Max - volRange.Min);
44292
+ return xEnd-width;
44293
+ }
44294
+
44295
+ this.Canvas.save();
44296
+ this.ClipClient(bHScreen);
44297
+
44298
+ var aryBuy=this.BuySellData.AryBuy;
44299
+ if (IFrameSplitOperator.IsNonEmptyArray(aryBuy))
44300
+ {
44301
+ this.Canvas.beginPath();
44302
+ var lineCount=0;
44303
+ for(var i=0;i<aryBuy.length;++i)
44304
+ {
44305
+ var item=aryBuy[i];
44306
+ if (!item || !IFrameSplitOperator.IsNumber(item.Vol) || !IFrameSplitOperator.IsNumber(item.Price)) continue;
44307
+
44308
+ var y=this.GetYFromData(item.Price,false)
44309
+ var x=_Temp_GetXFromData(item.Vol);
44310
+
44311
+ if (bHScreen)
44312
+ {
44313
+ y-=-this.YOffset;
44314
+ this.Canvas.moveTo(y,x);
44315
+ this.Canvas.lineTo(y,xEnd);
44316
+ }
44317
+ else
44318
+ {
44319
+ y-=-this.YOffset;
44320
+ this.Canvas.moveTo(x,y);
44321
+ this.Canvas.lineTo(xEnd,y);
44322
+ }
44323
+
44324
+ ++lineCount;
44325
+ }
44326
+
44327
+ if (lineCount>0)
44328
+ {
44329
+ this.Canvas.strokeStyle=this.BuyColor;
44330
+ if (IFrameSplitOperator.IsPlusNumber(this.BarWidth)) this.Canvas.lineWidth=this.BarWidth;
44331
+ this.Canvas.stroke();
44332
+ }
44333
+ }
44334
+
44335
+ var arySell=this.BuySellData.ArySell;
44336
+ if (IFrameSplitOperator.IsNonEmptyArray(arySell))
44337
+ {
44338
+ this.Canvas.beginPath();
44339
+ var lineCount=0;
44340
+ for(var i=0;i<arySell.length;++i)
44341
+ {
44342
+ var item=arySell[i];
44343
+ if (!item || !IFrameSplitOperator.IsNumber(item.Vol) || !IFrameSplitOperator.IsNumber(item.Price)) continue;
44344
+
44345
+ var y=this.GetYFromData(item.Price,false);
44346
+ var x=_Temp_GetXFromData(item.Vol);
44347
+
44348
+ if (bHScreen)
44349
+ {
44350
+ y-=-this.YOffset;
44351
+ this.Canvas.moveTo(y,x);
44352
+ this.Canvas.lineTo(y,xEnd);
44353
+ }
44354
+ else
44355
+ {
44356
+ y-=-this.YOffset;
44357
+ this.Canvas.moveTo(x,y);
44358
+ this.Canvas.lineTo(xEnd,y);
44359
+ }
44360
+
44361
+ ++lineCount;
44362
+ }
44363
+
44364
+ if (lineCount>0)
44365
+ {
44366
+ this.Canvas.strokeStyle=this.SellColor;
44367
+ if (IFrameSplitOperator.IsPlusNumber(this.BarWidth)) this.Canvas.lineWidth=this.BarWidth;
44368
+ this.Canvas.stroke();
44369
+ }
44370
+ }
44371
+
44372
+
44373
+ this.DrawMaxVolText(volRange.Max, xStart);
44374
+
44375
+ this.Canvas.restore();
44376
+ }
44377
+
44378
+ this.DrawMaxVolText=function(value, x)
44379
+ {
44380
+ if (!IFrameSplitOperator.IsNumber(value)) return;
44381
+
44382
+ var border=this.ChartFrame.GetBorder();
44383
+ var text=value.toFixed(0);
44384
+ this.Canvas.textAlign = 'left';
44385
+ this.Canvas.textBaseline = 'bottom';
44386
+ this.Canvas.font=this.Font;
44387
+ this.Canvas.fillStyle=this.TextColor;
44388
+
44389
+ if (this.ChartFrame.IsHScreen===true)
44390
+ {
44391
+ var yBottom=border.LeftEx+1;
44392
+ this.Canvas.save();
44393
+ this.Canvas.translate(yBottom,x);
44394
+ this.Canvas.rotate(90 * Math.PI / 180);
44395
+ this.Canvas.fillText(text,0,0);
44396
+ this.Canvas.restore();
44397
+ }
44398
+ else
44399
+ {
44400
+ var yBottom=border.Bottom-1;
44401
+ this.Canvas.fillText(text,x,yBottom);
44402
+ }
44403
+ }
44404
+
44405
+ this.GetVolRange=function()
44406
+ {
44407
+ if (!this.BuySellData) return null;
44408
+
44409
+ var range={ Min:0, Max:null };
44410
+ var aryBuy=this.BuySellData.AryBuy;
44411
+ var arySell=this.BuySellData.ArySell;
44412
+ var count=0;
44413
+
44414
+ if (IFrameSplitOperator.IsNonEmptyArray(aryBuy))
44415
+ {
44416
+ for(var i=0;i<aryBuy.length;++i)
44417
+ {
44418
+ var item=aryBuy[i];
44419
+ if (!IFrameSplitOperator.IsNumber(item.Vol)) continue;
44420
+
44421
+ if (range.Min==null || range.Min>item.Vol) range.Min=item.Vol;
44422
+ if (range.Max==null || range.Max<item.Vol) range.Max=item.Vol;
44423
+ ++count;
44424
+ }
44425
+ }
44426
+
44427
+ if (IFrameSplitOperator.IsNonEmptyArray(arySell))
44428
+ {
44429
+ for(var i=0;i<arySell.length;++i)
44430
+ {
44431
+ var item=arySell[i];
44432
+ if (!IFrameSplitOperator.IsNumber(item.Vol)) continue;
44433
+
44434
+ if (range.Min==null || range.Min>item.Vol) range.Min=item.Vol;
44435
+ if (range.Max==null || range.Max<item.Vol) range.Max=item.Vol;
44436
+ ++count;
44437
+ }
44438
+ }
44439
+
44440
+ if (count<=0) return null;
44441
+
44442
+ return range;
44443
+ }
44444
+
44445
+ this.GetMaxMin=function()
44446
+ {
44447
+ return { Min:null, Max:null };
44448
+ }
44449
+ }
44450
+
44221
44451
  //分钟信息地雷 支持横屏
44222
44452
  function ChartMinuteInfo()
44223
44453
  {
@@ -51457,6 +51687,7 @@ function MinuteLeftTooltipPaint()
51457
51687
  this.Draw=function()
51458
51688
  {
51459
51689
  if (!this.IsEnableDraw()) return;
51690
+ if (this.ChartFrame && this.ChartFrame.IsHScreen===true) return; //不支持横屏
51460
51691
 
51461
51692
  this.TitlePaint=this.HQChart.TitlePaint[0];
51462
51693
  if (!this.TitlePaint) return;
@@ -77713,6 +77944,17 @@ function JSChartResource()
77713
77944
  Night: { Color:"rgb(0,0,0)", BGColor:"rgb(179,179,179)", BorderColor:"rgb(179,179,179)", Margin:{ Left:5, Top:2, Bottom:2, Right:5 } },
77714
77945
  }
77715
77946
 
77947
+ this.Minute.BuySellBar=
77948
+ {
77949
+ BuyColor:"rgb(242,54,69)",
77950
+ SellColor:"rgb(8,153,129)",
77951
+ BarWidth:4*GetDevicePixelRatio(),
77952
+ MaxBarWidth:120,
77953
+ YOffset:1,
77954
+ Font:`${12*GetDevicePixelRatio()}px 微软雅黑`,
77955
+ TextColor:"rgb(128,128,128)",
77956
+ }
77957
+
77716
77958
  this.DefaultTextColor="rgb(43,54,69)"; //图形中默认的字体颜色
77717
77959
  this.DefaultTextFont=14*GetDevicePixelRatio() +'px 微软雅黑'; //图形中默认的字体
77718
77960
  this.TitleFont=13*GetDevicePixelRatio() +'px 微软雅黑'; //指标显示,tooltip显示字体
@@ -78828,6 +79070,7 @@ function JSChartResource()
78828
79070
  {
78829
79071
  BorderColor:'rgb(192,192,192)', //边框线
78830
79072
  SelectedColor:"rgb(180,240,240)", //选中行
79073
+ SelectedLine:{ Color:"rgb(180,240,240)", Width:2 },
78831
79074
  Header:
78832
79075
  {
78833
79076
  Color:"rgb(60,60,60)", //表头文字颜色
@@ -79250,6 +79493,19 @@ function JSChartResource()
79250
79493
  CopyMarginConfig(this.Minute.NightDay.Night.Margin,subItem.Margin);
79251
79494
  }
79252
79495
  }
79496
+
79497
+ if (style.Minute.BuySellBar)
79498
+ {
79499
+ var item=style.Minute.BuySellBar;
79500
+ var dest=this.Minute.BuySellBar;
79501
+ if (item.BuyColor) dest.BuyColor=item.BuyColor;
79502
+ if (item.SellColor) dest.SellColor=item.SellColor;
79503
+ if (item.Font) dest.Font=item.Font;
79504
+ if (item.TextColor) dest.TextColor=item.TextColor;
79505
+ if (IFrameSplitOperator.IsNumber(item.BarWidth)) dest.BarWidth=item.BarWidth;
79506
+ if (IFrameSplitOperator.IsNumber(item.MaxBarWidth)) dest.MaxBarWidth=item.MaxBarWidth;
79507
+ if (IFrameSplitOperator.IsNumber(item.YOffset)) dest.YOffset=item.YOffset;
79508
+ }
79253
79509
  }
79254
79510
 
79255
79511
  if (style.PopMinuteChart)
@@ -80146,6 +80402,14 @@ function JSChartResource()
80146
80402
  if (item.DownTextColor) this.Report.DownTextColor=item.DownTextColor;
80147
80403
  if (item.UnchagneTextColor) this.Report.UnchagneTextColor=item.UnchagneTextColor;
80148
80404
  if (item.BorderColor) this.Report.SelectedColor=item.SelectedColor;
80405
+
80406
+ if (item.SelectedLine)
80407
+ {
80408
+ var subItem=item.SelectedLine;
80409
+ var subDest=this.Report.SelectedLine;
80410
+ if (subItem.Color) subDest.Color=subItem.Color;
80411
+ if (IFrameSplitOperator.IsNumber(subItem.Width)) subDest.Width=subItem.Width;
80412
+ }
80149
80413
 
80150
80414
 
80151
80415
  if (item.CloseLine)
@@ -90650,6 +90914,24 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
90650
90914
  return false;
90651
90915
  }
90652
90916
 
90917
+ this.GetChartMinuteBuySellBar=function()
90918
+ {
90919
+ var chart=this.ChartPaint[3];
90920
+ if (!chart) return null;
90921
+
90922
+ if (chart.Name!="Minute-BuySell-Bar") return null;
90923
+
90924
+ return chart;
90925
+ }
90926
+
90927
+ this.IsShowMinuteBuySellBar=function()
90928
+ {
90929
+ var chart=this.GetChartMinuteBuySellBar();
90930
+ if (!chart) return false;
90931
+
90932
+ return chart.IsShow;
90933
+ }
90934
+
90653
90935
  //左右拖拽
90654
90936
  this.OnDragMode_One=function(moveData, e)
90655
90937
  {
@@ -92109,7 +92391,9 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92109
92391
  bRButtonSelectRect=this.ChartDragSelectRect.EnableRButton;
92110
92392
  bLButtonSelectRect=this.ChartDragSelectRect.EnableLButton;
92111
92393
  }
92112
-
92394
+
92395
+ var bShowBuySellBar=this.IsShowMinuteBuySellBar();
92396
+
92113
92397
  var minItem=null;
92114
92398
  if (frameID>=0 && option && IFrameSplitOperator.IsNumber(option.CursorIndex))
92115
92399
  {
@@ -92206,6 +92490,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92206
92490
  SubMenu:
92207
92491
  [
92208
92492
  { Name:"画图工具", Data:{ ID:JSCHART_MENU_ID.CMD_SHOW_DRAWTOOL_ID, Args:[]}, Checked:this.IsShowDrawToolDialog()},
92493
+ { Name:"盘口分析", Data:{ ID:JSCHART_MENU_ID.CMD_SHOW_BUYSELL_BAR_ID, Args:[!bShowBuySellBar]}, Checked:bShowBuySellBar },
92209
92494
 
92210
92495
  { Name:JSPopMenu.SEPARATOR_LINE_NAME },
92211
92496
 
@@ -92898,6 +93183,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92898
93183
  volLine.ShareAfterVol=this.ShareAfterVol;
92899
93184
  this.ChartPaint[2]=volLine;
92900
93185
 
93186
+ var buySellBar=g_ChartPaintFactory.Create("ChartMinuteBuySellBar");
93187
+ buySellBar.Canvas=this.Canvas;
93188
+ buySellBar.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
93189
+ buySellBar.ChartFrame=this.Frame.SubFrame[0].Frame;
93190
+ buySellBar.Name="Minute-BuySell-Bar";
93191
+ buySellBar.Identify="Minute-BuySell-Bar";
93192
+ buySellBar.BuySellData=this.BuySellData;
93193
+ this.ChartPaint[3]=buySellBar;
93194
+
93195
+
92901
93196
  this.TitlePaint[0]=new DynamicMinuteTitlePainting();
92902
93197
  this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;
92903
93198
  this.TitlePaint[0].Canvas=this.Canvas;
@@ -93503,7 +93798,9 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
93503
93798
  this.AutoUpdateEvent(false, "MinuteChartContainer::ChangeDayCount");
93504
93799
  this.DayCount=count;
93505
93800
  this.ClearMinuteData();
93801
+ this.ClearStockCache();
93506
93802
  this.UnlockCorssCursor();
93803
+ this.Frame.ClearYCoordinateMaxMin();
93507
93804
 
93508
93805
  if (option && option.PageInfo)
93509
93806
  {
@@ -93773,8 +94070,14 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
93773
94070
  }
93774
94071
  }
93775
94072
 
93776
- this.RequestData=function()
94073
+ //option={ ClearYCoordinateMaxMin:true }
94074
+ this.RequestData=function(option)
93777
94075
  {
94076
+ if (option)
94077
+ {
94078
+ if (option.ClearYCoordinateMaxMin===true) this.Frame.ClearYCoordinateMaxMin();
94079
+ }
94080
+
93778
94081
  if (this.DayCount<=1) this.RequestMinuteData();
93779
94082
  else this.RequestHistoryMinuteData();
93780
94083
  }
@@ -93846,11 +94149,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
93846
94149
  After:this.IsShowMultiDayAfterData
93847
94150
  } //集合竞价
93848
94151
 
94152
+ var bBuySellBar=this.IsShowMinuteBuySellBar();
94153
+
93849
94154
  var obj=
93850
94155
  {
93851
94156
  Name:'MinuteChartContainer::RequestHistoryMinuteData', //类名::函数
93852
94157
  Explain:'多日分时数据',
93853
- Request:{ Url:self.HistoryMinuteApiUrl, Data:{daycount:self.DayCount, symbol:self.Symbol, callcation:callCation, AryDate:this.AryDate }, Type:'POST' },
94158
+ Request:{ Url:self.HistoryMinuteApiUrl, Data:{daycount:self.DayCount, symbol:self.Symbol, callcation:callCation, AryDate:this.AryDate, IsShowBuySellBar:bBuySellBar }, Type:'POST' },
93854
94159
  Self:this,
93855
94160
  PreventDefault:false
93856
94161
  };
@@ -93897,6 +94202,10 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
93897
94202
 
93898
94203
  this.DataStatus.MultiDay=true;
93899
94204
 
94205
+ var lastDayData=null;
94206
+ if (IFrameSplitOperator.IsNonEmptyArray(data.data) && data.data[0]) lastDayData=data.data[0];
94207
+ if (lastDayData) this.RecvBuySellData(lastDayData.BuySellData);
94208
+
93900
94209
  this.CaclutateCallCationYRange();
93901
94210
  this.Symbol=data.symbol;
93902
94211
  this.Name=data.name;
@@ -94216,6 +94525,9 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94216
94525
  this.IsAfterData=true;
94217
94526
  }
94218
94527
 
94528
+ //5档买卖盘
94529
+ var bBuySellBar=this.IsShowMinuteBuySellBar();
94530
+
94219
94531
  if (this.NetworkFilter)
94220
94532
  {
94221
94533
  var dateRange=null;
@@ -94240,7 +94552,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94240
94552
  {
94241
94553
  Name:'MinuteChartContainer::RequestMinuteData', //类名::函数名
94242
94554
  Explain:'最新分时数据',
94243
- Request:{ Url:self.MinuteApiUrl, Data:{field:fields, symbol:[self.Symbol], callcation:callCation, AryDate:this.AryDate }, Type:'POST' },
94555
+ Request:{ Url:self.MinuteApiUrl, Data:{field:fields, symbol:[self.Symbol], callcation:callCation, AryDate:this.AryDate, IsShowBuySellBar:bBuySellBar }, Type:'POST' },
94244
94556
  Self:this,
94245
94557
  PreventDefault:false
94246
94558
  };
@@ -94375,6 +94687,21 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94375
94687
  }
94376
94688
  }
94377
94689
 
94690
+ this.RecvBuySellData=function(data)
94691
+ {
94692
+ if (!data) return;
94693
+
94694
+ if (Array.isArray(data.AryBuy))
94695
+ {
94696
+ this.BuySellData.AryBuy=data.AryBuy.slice();
94697
+ }
94698
+
94699
+ if (Array.isArray(data.ArySell))
94700
+ {
94701
+ this.BuySellData.ArySell=data.ArySell.slice();
94702
+ }
94703
+ }
94704
+
94378
94705
  this.RecvMinuteData=function(data)
94379
94706
  {
94380
94707
  if (!data)
@@ -94409,7 +94736,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
94409
94736
 
94410
94737
  var bFirstData=(this.DataStatus.LatestDay==false); //首条单日数据
94411
94738
 
94412
- this.DataStatus.LatestDate=data.stock[0].date; //保存下最后一天的日期
94739
+ if (IFrameSplitOperator.IsNonEmptyArray(data.stock) && data.stock[0])
94740
+ {
94741
+ this.DataStatus.LatestDate=data.stock[0].date; //保存下最后一天的日期
94742
+ this.RecvBuySellData(data.stock[0].BuySellData);
94743
+ }
94744
+
94413
94745
  this.DataStatus.LatestDay=true;
94414
94746
 
94415
94747
  if (this.DayCount>1) //多日走势图
@@ -131667,6 +131999,14 @@ function GetBlackStyle()
131667
131999
  Font:`${12*GetDevicePixelRatio()}px 微软雅黑`,
131668
132000
  Day: { Color:"rgb(153,153,153)", BGColor:"rgb(51,51,51)", BorderColor:"rgb(51,51,51)", Margin:{ Left:5, Top:2, Bottom:2, Right:5 } },
131669
132001
  Night: { Color:"rgb(153,153,153)", BGColor:"rgb(51,51,51)", BorderColor:"rgb(51,51,51)", Margin:{ Left:5, Top:2, Bottom:2, Right:5 } },
132002
+ },
132003
+
132004
+ BuySellBar:
132005
+ {
132006
+ BuyColor:"rgb(102, 33, 33)",
132007
+ SellColor:"rgb(20, 63, 31)",
132008
+ Font:`${12*GetDevicePixelRatio()}px 微软雅黑`,
132009
+ TextColor:"rgb(220,220,220)",
131670
132010
  }
131671
132011
  },
131672
132012
 
@@ -132281,6 +132621,7 @@ function GetBlackStyle()
132281
132621
  {
132282
132622
  BorderColor:'rgb(38,38,41)', //边框线
132283
132623
  SelectedColor:"rgb(49,48,56)", //选中行
132624
+ SelectedLine:{ Color:"rgb(250,250,250)" },
132284
132625
  Header:
132285
132626
  {
132286
132627
  Color:"RGB(245,245,245)",
@@ -134407,6 +134748,7 @@ function JSReportChart(divElement)
134407
134748
  {
134408
134749
  if (IFrameSplitOperator.IsNumber(option.TextOverflowStyle)) reportChart.TextOverflowStyle=option.TextOverflowStyle;
134409
134750
  if (IFrameSplitOperator.IsNumber(option.MultiSelectModel)) reportChart.MultiSelectModel=option.MultiSelectModel;
134751
+ if (IFrameSplitOperator.IsNumber(option.SelectedStyle)) reportChart.SelectedStyle=option.SelectedStyle;
134410
134752
  }
134411
134753
 
134412
134754
  this.SetChartBorder(chart, option);
@@ -138917,6 +139259,7 @@ function ChartReport()
138917
139259
  this.SelectedModel=0; //选中模式 0=SelectedRow表示当前屏索引
138918
139260
  this.SelectedRow=-1; //选中行ID
138919
139261
  this.SelectedFixedRow=-1; //选中固定行ID
139262
+ this.SelectedStyle=1; //选中行样式 1=整行填充 2=底部绘制直线
138920
139263
  this.IsDrawBorder=1; //是否绘制单元格边框
138921
139264
  this.HeaderRowCount=1; //表头行数
138922
139265
 
@@ -138941,6 +139284,7 @@ function ChartReport()
138941
139284
 
138942
139285
  this.BorderColor=g_JSChartResource.Report.BorderColor; //边框线
138943
139286
  this.SelectedColor=g_JSChartResource.Report.SelectedColor; //选中行
139287
+ this.SelectedLineConfig={ Color:g_JSChartResource.Report.SelectedLine.Color, Width:g_JSChartResource.Report.SelectedLine.Width }; //选中行底部线段
138944
139288
 
138945
139289
  //表头配置
138946
139290
  this.HeaderFontConfig={ Size:g_JSChartResource.Report.Header.Font.Size, Name:g_JSChartResource.Report.Header.Font.Name };
@@ -139061,6 +139405,8 @@ function ChartReport()
139061
139405
  this.IsShowAllColumn=false; //是否已显示所有列
139062
139406
  this.DevicePixelRatio=GetDevicePixelRatio(); //分辨率
139063
139407
 
139408
+ this.AryFullSelectedRow=[]; //选中行
139409
+
139064
139410
  //{
139065
139411
  // Type:列id, Title:标题, TextAlign:文字对齐方式, MaxText:文字最大宽度 , TextColor:文字颜色, Sort:0=不支持排序 1=本地排序 0=远程排序,
139066
139412
  // Icon:{ Family:"iconfont", Size:12, Symbol:"", Margin: { Left:, Bottom }}
@@ -139205,8 +139551,11 @@ function ChartReport()
139205
139551
  if (IFrameSplitOperator.IsNumber(item.Sort)) colItem.Sort=item.Sort;
139206
139552
  if (IFrameSplitOperator.IsNumber(item.FixedWidth)) colItem.FixedWidth=item.FixedWidth;
139207
139553
  if (IFrameSplitOperator.IsBool(item.EnableDragWidth)) colItem.EnableDragWidth=item.EnableDragWidth;
139554
+
139555
+ colItem.IsDrawCallback=false;
139208
139556
  if (IFrameSplitOperator.IsBool(item.IsDrawCallback)) colItem.IsDrawCallback=item.IsDrawCallback;
139209
- else colItem.IsDrawCallback=false;
139557
+
139558
+ if (IFrameSplitOperator.IsBool(item.EnableFormatDrawInfoEvent)) colItem.EnableFormatDrawInfoEvent=item.EnableFormatDrawInfoEvent;
139210
139559
 
139211
139560
  if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) colItem.FloatPrecision=item.FloatPrecision; //小数位数
139212
139561
  if (IFrameSplitOperator.IsNumber(item.ColorType)) colItem.ColorType=item.ColorType; //0=默认 1=(>0, =0, <0) 2=(>=0, <0)
@@ -139548,6 +139897,7 @@ function ChartReport()
139548
139897
  this.ShowSymbol=[];
139549
139898
  this.TooltipRect=[];
139550
139899
  this.ButtonRect=[];
139900
+ this.AryFullSelectedRow=[];
139551
139901
  this.DevicePixelRatio=GetDevicePixelRatio()
139552
139902
  this.LastMouseStatus=lastMouseStatus;
139553
139903
 
@@ -139572,6 +139922,7 @@ function ChartReport()
139572
139922
 
139573
139923
  this.ClipClient();
139574
139924
  this.DrawBorder();
139925
+ this.DrawSelectedRow();
139575
139926
  this.Canvas.restore();
139576
139927
 
139577
139928
  this.DrawDragRow();
@@ -139586,6 +139937,7 @@ function ChartReport()
139586
139937
 
139587
139938
  this.LastMouseStatus=null;
139588
139939
  this.SizeChange=false;
139940
+ this.AryFullSelectedRow=[];
139589
139941
  }
139590
139942
 
139591
139943
  this.DrawDragHeaderBG=function()
@@ -140128,6 +140480,8 @@ function ChartReport()
140128
140480
  var left=this.RectClient.Left;
140129
140481
  var rowWidth=this.RectClient.Right-this.RectClient.Left;
140130
140482
 
140483
+ var arySelectedRow=[];
140484
+
140131
140485
  //固定行
140132
140486
  var textTop=top;
140133
140487
  this.Canvas.font=this.ItemFixedFont;
@@ -140219,8 +140573,16 @@ function ChartReport()
140219
140573
 
140220
140574
  if (bFillRow)
140221
140575
  {
140222
- this.Canvas.fillStyle=this.SelectedColor;
140223
- this.Canvas.fillRect(left,textTop,rowWidth,this.RowHeight);
140576
+ var rtRowBG={ Left:left, Top:textTop, Width:rowWidth, Height:this.RowHeight };
140577
+ rtRowBG.Right=rtRowBG.Left+rtRowBG.Width;
140578
+ rtRowBG.Bottom=rtRowBG.Top+rtRowBG.Height;
140579
+ this.AryFullSelectedRow.push(rtRowBG);
140580
+
140581
+ if (this.SelectedStyle===1)
140582
+ {
140583
+ this.Canvas.fillStyle=this.SelectedColor;
140584
+ this.Canvas.fillRect(rtRowBG.Left,rtRowBG.Top,rtRowBG.Width,rtRowBG.Height);
140585
+ }
140224
140586
  }
140225
140587
 
140226
140588
  this.DrawRow(symbol, textTop, i);
@@ -140229,6 +140591,22 @@ function ChartReport()
140229
140591
 
140230
140592
  textTop+=this.RowHeight;
140231
140593
  }
140594
+
140595
+
140596
+ }
140597
+
140598
+ this.DrawSelectedRow=function()
140599
+ {
140600
+ if (this.SelectedStyle===2 && IFrameSplitOperator.IsNonEmptyArray(this.AryFullSelectedRow))
140601
+ {
140602
+ this.Canvas.fillStyle=this.SelectedLineConfig.Color;
140603
+ var lineWidth=this.SelectedLineConfig.Width;
140604
+ for(var i=0;i<this.AryFullSelectedRow.length;++i)
140605
+ {
140606
+ var rtBG=this.AryFullSelectedRow[i];
140607
+ this.Canvas.fillRect(rtBG.Left,rtBG.Bottom-lineWidth,rtBG.Width,lineWidth);
140608
+ }
140609
+ }
140232
140610
  }
140233
140611
 
140234
140612
  this.GetSelectedSymbol=function()
@@ -140670,10 +141048,12 @@ function ChartReport()
140670
141048
  else if (column.Type==REPORT_COLUMN_ID.CUSTOM_NUMBER_TEXT_ID)
140671
141049
  {
140672
141050
  this.GetCustomNumberDrawInfo(data, column, drawInfo);
141051
+ this.FormatDrawInfoEvent(stock, data, column, drawInfo);
140673
141052
  }
140674
141053
  else if (column.Type==REPORT_COLUMN_ID.CUSTOM_DATETIME_TEXT_ID)
140675
141054
  {
140676
141055
  this.GetCustomDateTimeDrawInfo(data, column, drawInfo);
141056
+ this.FormatDrawInfoEvent(stock, data, column, drawInfo);
140677
141057
  }
140678
141058
  else if (column.Type==REPORT_COLUMN_ID.CUSTOM_ICON_ID)
140679
141059
  {
@@ -140696,10 +141076,12 @@ function ChartReport()
140696
141076
  else if (column.Type==REPORT_COLUMN_ID.TIME_ID)
140697
141077
  {
140698
141078
  this.FormaTimeDrawInfo(column, stock, drawInfo, data);
141079
+ this.FormatDrawInfoEvent(stock, data, column, drawInfo);
140699
141080
  }
140700
141081
  else if (column.Type==REPORT_COLUMN_ID.DATE_ID)
140701
141082
  {
140702
141083
  this.FormaDateDrawInfo(column, stock, drawInfo, data);
141084
+ this.FormatDrawInfoEvent(stock, data, column, drawInfo);
140703
141085
  }
140704
141086
  else if (column.Type==REPORT_COLUMN_ID.CHECKBOX_ID)
140705
141087
  {
@@ -140748,10 +141130,12 @@ function ChartReport()
140748
141130
  else if (this.IsReserveNumber(column.Type))
140749
141131
  {
140750
141132
  this.FormatReserveNumber(column, stock, drawInfo);
141133
+ this.FormatDrawInfoEvent(stock, data, column, drawInfo);
140751
141134
  }
140752
141135
  else if (this.IsReserveString(column.Type))
140753
141136
  {
140754
141137
  this.FormatReserveString(column, stock, drawInfo);
141138
+ this.FormatDrawInfoEvent(stock, data, column, drawInfo);
140755
141139
  }
140756
141140
  else if (this.IsReserveProgressBarColumn(column.Type))
140757
141141
  {
@@ -140856,8 +141240,22 @@ function ChartReport()
140856
141240
  var buttonData={ Stock:stock, Index:index, ColumnIndex:columnIndex, Column:column, Rect:drawInfo.Botton.Rect, Type:drawInfo.Botton.Type, Data:drawInfo.Data };
140857
141241
  this.ButtonRect.push(buttonData);
140858
141242
  }
141243
+ }
140859
141244
 
140860
-
141245
+ this.FormatDrawInfoEvent=function(stock, data, column, drawInfo)
141246
+ {
141247
+ if (!column.EnableFormatDrawInfoEvent) return;
141248
+
141249
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_FORMAT_DRAW_INFO);
141250
+ if (!event || !event.Callback) return;
141251
+
141252
+ var sendData=
141253
+ {
141254
+ Stock:stock, Column:column, Data:data,
141255
+ DrawInfo:drawInfo
141256
+ };
141257
+
141258
+ event.Callback(event, sendData, this);
140861
141259
  }
140862
141260
 
140863
141261
  this.IsReserveProgressBarColumn=function(value)
@@ -141143,12 +141541,6 @@ function ChartReport()
141143
141541
  this.GetCustomStringDrawInfo=function(data, column, drawInfo)
141144
141542
  {
141145
141543
  var value=this.GetExtendData(data, column);
141146
- if (column.IsDrawCallback) //外部处理输出格式
141147
- {
141148
- this.GetCustomTextDrawInfo(column, data.Symbol, value, drawInfo, data);
141149
- return;
141150
- }
141151
-
141152
141544
  if (!IFrameSplitOperator.IsString(value)) return;
141153
141545
  drawInfo.Text=value;
141154
141546
  }
@@ -141156,12 +141548,6 @@ function ChartReport()
141156
141548
  this.GetCustomNumberDrawInfo=function(data, column, drawInfo)
141157
141549
  {
141158
141550
  var value=this.GetExtendData(data, column);
141159
- if (column.IsDrawCallback) //外部处理输出格式
141160
- {
141161
- this.GetCustomTextDrawInfo(column, data.Symbol, value, drawInfo, data);
141162
- return;
141163
- }
141164
-
141165
141551
  if (!IFrameSplitOperator.IsNumber(value)) return;
141166
141552
 
141167
141553
  //格式化输出
@@ -141203,12 +141589,6 @@ function ChartReport()
141203
141589
  var value=this.GetExtendData(data, column);
141204
141590
  if (!IFrameSplitOperator.IsNumber(value)) return;
141205
141591
 
141206
- if (column.IsDrawCallback) //外部处理输出格式
141207
- {
141208
- this.GetCustomTextDrawInfo(column, data.Symbol, value, drawInfo, data);
141209
- return;
141210
- }
141211
-
141212
141592
  if (column.ValueType==0)
141213
141593
  {
141214
141594
  if (column.FormatType==1)
@@ -141517,9 +141897,13 @@ function ChartReport()
141517
141897
 
141518
141898
  this.DrawItemBG=function(drawInfo)
141519
141899
  {
141520
- if (drawInfo.BGColor && drawInfo.Rect)//绘制背景色
141900
+ if (!drawInfo.BGColor) return;
141901
+
141902
+ var rtItem=drawInfo.Rect; //绘制背景色
141903
+ if (drawInfo.RectBG) rtItem=drawInfo.RectBG;
141904
+
141905
+ if (rtItem)
141521
141906
  {
141522
- var rtItem=drawInfo.Rect;
141523
141907
  this.Canvas.fillStyle=drawInfo.BGColor;
141524
141908
  this.Canvas.fillRect(rtItem.Left,rtItem.Top,rtItem.Width,rtItem.Height); //画一个背景色, 不然是一个黑的背景
141525
141909
  }
@@ -142340,42 +142724,9 @@ function ChartReport()
142340
142724
  }
142341
142725
  }
142342
142726
 
142343
- //外部配置显示格式 颜色 对齐方式
142344
- this.GetCustomTextDrawInfo=function(columnInfo, symbol, value, drawInfo, data)
142345
- {
142346
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAW_CUSTOM_TEXT);
142347
- if (!event || !event.Callback) return false;
142348
-
142349
- var sendData=
142350
- {
142351
- Symbol:symbol, Column:columnInfo, Value:value, Data:data,
142352
- Out:{ Text:null, TextColor:null, TextAlign:null }
142353
- };
142354
-
142355
- event.Callback(event,sendData,this);
142356
-
142357
- if (sendData.Out.Text) drawInfo.Text=sendData.Out.Text;
142358
- if (sendData.Out.TextColor) drawInfo.TextColor=sendData.Out.TextColor;
142359
- if (sendData.Out.TextAlign) drawInfo.TextAlign=sendData.Out.TextAlign;
142360
- if (sendData.Out.BGColor) drawInfo.BGColor=sendData.Out.BGColor;
142361
-
142362
- return true;
142363
- }
142364
-
142365
142727
  this.FormatDrawInfo=function(column, stock, drawInfo, data)
142366
142728
  {
142367
- if (!column.IsDrawCallback) return false;
142368
-
142369
- var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_REPORT_FORMAT_DRAW_INFO);
142370
- if (!event || !event.Callback) return false;
142371
-
142372
- var sendData=
142373
- {
142374
- Stock:stock, Column:column, Data:data,
142375
- DrawInfo:drawInfo
142376
- };
142377
-
142378
- event.Callback(event,sendData,this);
142729
+ this.FormatDrawInfoEvent(stock, data, column, drawInfo);
142379
142730
  }
142380
142731
 
142381
142732
  this.GetFixedRowTextDrawInfo=function(rowIndex, colIndex, columnInfo, drawInfo)
@@ -157995,7 +158346,7 @@ function HQChartScriptWorker()
157995
158346
 
157996
158347
 
157997
158348
 
157998
- var HQCHART_VERSION="1.1.14682";
158349
+ var HQCHART_VERSION="1.1.14690";
157999
158350
 
158000
158351
  function PrintHQChartVersion()
158001
158352
  {