hqchart 1.1.13678 → 1.1.13689

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.
@@ -72215,6 +72215,16 @@ function JSChartResource()
72215
72215
  NameFont:{ Size:14, Name:"微软雅黑" },
72216
72216
  SymbolFont:{ Size:12, Name:"微软雅黑" }
72217
72217
  },
72218
+
72219
+ VScrollbar:
72220
+ {
72221
+ ScrollBarHeight:50,
72222
+ ButtonColor:"rgba(252,252,252,0.8)",
72223
+ BarColor:"rgba(168,168,168,0.9)",
72224
+ BorderColor:'rgba(180,180,180,0.9)',
72225
+ BGColor:"rgba(234,239,248,0.9)",
72226
+ BarWidth:{ Size:8 }
72227
+ },
72218
72228
  },
72219
72229
 
72220
72230
  //滚动条
@@ -98125,6 +98135,38 @@ var g_JSComplierResource=
98125
98135
  Data:new Map() //自定义函数 key=变量名, Value:{ Name:变量名, Description:描述信息 }
98126
98136
  },
98127
98137
 
98138
+ CustomDataFunction: //自定义数据函数
98139
+ {
98140
+ //自定义函数 key=变量名, Value:{ Name:变量名, Description:描述信息, ArgCount:参数个数 }
98141
+ Data:new Map(
98142
+ [
98143
+ [
98144
+ "L2_VOLNUM",
98145
+ {
98146
+ Name:"L2_VOLNUM",
98147
+ Description:"单数分档,按: N(0--1):(超大+大)/(中+小),M(0--1):买/卖二类,沪深京品种的资金流向,仅日线以上周期,用于特定版本",
98148
+ ArgCount:2
98149
+ }
98150
+ ],
98151
+ [
98152
+ "L2_VOL",
98153
+ {
98154
+ Name:"L2_VOL",
98155
+ Description:"成交量分档,按: N(0--3):超大/大/中/小四档处理,M(0--3):买入/卖出/主买/主卖四类,沪深京品种的资金流向,仅日线以上周期,用于特定版本",
98156
+ ArgCount:2
98157
+ }
98158
+ ],
98159
+ [
98160
+ "L2_AMO",
98161
+ {
98162
+ Name:"L2_AMO",
98163
+ Description:"成交额分档,按: N(0--3):超大/大/中/小四档处理,M(0--3):买入/卖出/主买/主卖四类,沪深京品种的资金流向,仅日线以上周期,用于特定版本",
98164
+ ArgCount:2
98165
+ }
98166
+ ]
98167
+ ])
98168
+ },
98169
+
98128
98170
  GetDrawIcon:function(id)
98129
98171
  {
98130
98172
  var icon;
@@ -98177,6 +98219,12 @@ var g_JSComplierResource=
98177
98219
  {
98178
98220
  if (g_JSComplierResource.CustomVariant.Data.has(name)) return true;
98179
98221
  return false;
98222
+ },
98223
+
98224
+ IsCustomDataFunction:function(name)
98225
+ {
98226
+ if (g_JSComplierResource.CustomDataFunction.Data.has(name)) return true;
98227
+ return false;
98180
98228
  }
98181
98229
  }
98182
98230
 
@@ -99083,7 +99131,15 @@ function Node(ErrorHandler)
99083
99131
  "CAPITAL","TOTALCAPITAL","EXCHANGE",
99084
99132
  "HYBLOCK","DYBLOCK","GNBLOCK","FGBLOCK","ZSBLOCK","ZHBLOCK","ZDBLOCK","HYZSCODE",
99085
99133
  "GNBLOCKNUM","FGBLOCKNUM","ZSBLOCKNUM","ZHBLOCKNUM","ZDBLOCKNUM",
99086
- "HYSYL","HYSJL","FROMOPEN"
99134
+ "HYSYL","HYSJL","FROMOPEN",
99135
+ //资金流向
99136
+ "LARGEINTRDVOL","LARGEOUTTRDVOL",
99137
+ "TRADENUM","TRADEINNUM","TRADEOUTNUM",
99138
+ "LARGETRDINNUM","LARGETRDOUTNUM",
99139
+ "CUR_BUYORDER","CUR_SELLORDER",
99140
+ "ACTINVOL","ACTOUTVOL",
99141
+ "BIDORDERVOL","BIDCANCELVOL","AVGBIDPX",
99142
+ "OFFERORDERVOL","OFFERCANCELVOL","AVGOFFERPX",
99087
99143
  ]);
99088
99144
 
99089
99145
  if (setVariantName.has(varName))
@@ -99176,6 +99232,15 @@ function Node(ErrorHandler)
99176
99232
  return;
99177
99233
  }
99178
99234
 
99235
+ //自定义数据函数
99236
+ if (g_JSComplierResource.IsCustomDataFunction(callee.Name))
99237
+ {
99238
+ var item={FunctionName:callee.Name, ID:JS_EXECUTE_JOB_ID.JOB_CUSTOM_DATA_FUNCTION, Args:args}
99239
+ if (token) item.Token={ Index:token.Start, Line:token.LineNumber};
99240
+ this.FunctionData.push(item);
99241
+ return;
99242
+ }
99243
+
99179
99244
  if (callee.Name=='DYNAINFO')
99180
99245
  {
99181
99246
  var item={ ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA, Args:args, FunctionName:callee.Name };
@@ -112602,7 +112667,7 @@ function JSSymbolData(ast,option,jsExecute)
112602
112667
  Request:
112603
112668
  {
112604
112669
  Url:"数据地址", Type:'POST',
112605
- Data:{ VariantName:jobItem.VariantName, symbol: this.Symbol, daterange:dateRange, period:this.Period }
112670
+ Data:{ VariantName:jobItem.VariantName, symbol: this.Symbol, daterange:dateRange, period:this.Period, right:this.Right }
112606
112671
  },
112607
112672
  Self:this,
112608
112673
  VariantInfo:variantInfo,
@@ -112645,7 +112710,61 @@ function JSSymbolData(ast,option,jsExecute)
112645
112710
  {
112646
112711
  FunctionName:jobItem.FunctionName,
112647
112712
  symbol: this.Symbol, daterange:dateRange,
112648
- JobItem:jobItem //函数编译信息
112713
+ JobItem:jobItem, //函数编译信息
112714
+ period:this.Period,
112715
+ right:this.Right,
112716
+ }
112717
+ },
112718
+ Self:this,
112719
+ FunctionInfo:functionInfo,
112720
+ PreventDefault:false
112721
+ };
112722
+ this.NetworkFilter(obj, function(recvData)
112723
+ {
112724
+ if (recvData.Error) self.AddStockValueError(key,recvData.Error);
112725
+ else self.RecvStockValue(recvData.Data,jobItem,key,recvData.DataType);
112726
+ self.Execute.RunNextJob();
112727
+ });
112728
+ }
112729
+ else
112730
+ {
112731
+ this.AddStockValueError(key, `自定义函数${key}下载失败`);
112732
+ this.Execute.RunNextJob();
112733
+ }
112734
+ }
112735
+
112736
+
112737
+ this.GetCustomFunctionDataV2=function(jobItem)
112738
+ {
112739
+ var funcName=jobItem.FunctionName;
112740
+ var functionInfo=g_JSComplierResource.CustomDataFunction.Data.get(funcName);
112741
+ if (!functionInfo) return;
112742
+
112743
+ var aryArgs=this.JobArgumentsToArray(jobItem, functionInfo.ArgCount);
112744
+ var key=this.GetStockDataKey(jobItem,aryArgs);
112745
+
112746
+ if (this.StockData.has(key)) return this.Execute.RunNextJob(); //一个函数只能缓存一个数据, 保存多个外部自己保存
112747
+
112748
+ var self=this;
112749
+ if (this.NetworkFilter)
112750
+ {
112751
+ var dateRange=this.Data.GetDateRange();
112752
+ var obj=
112753
+ {
112754
+ Name:'JSSymbolData::GetCustomFunctionData', //类名::函数名
112755
+ Explain:'自定义函数数据下载',
112756
+ JobID:jobItem.ID,
112757
+ Request:
112758
+ {
112759
+ Url:"数据地址", Type:'POST',
112760
+ Data:
112761
+ {
112762
+ FunctionName:jobItem.FunctionName,
112763
+ symbol: this.Symbol, daterange:dateRange,
112764
+ JobItem:jobItem, //函数编译信息
112765
+ Key:key,
112766
+ period:this.Period,
112767
+ right:this.Right,
112649
112768
  }
112650
112769
  },
112651
112770
  Self:this,
@@ -114462,6 +114581,7 @@ var JS_EXECUTE_JOB_ID=
114462
114581
 
114463
114582
  JOB_CUSTOM_FUNCTION_DATA:6000, //自定义函数
114464
114583
  JOB_CUSTOM_VARIANT_DATA:6001, //自定义变量
114584
+ JOB_CUSTOM_DATA_FUNCTION:6002, //自定义数据函数
114465
114585
  //截面数据
114466
114586
  //财务数据 SF(公告期,数据名称) 如: SF(201901,"流动资产");
114467
114587
  JOB_DOWNLOAD_SECTION_SF:20000,
@@ -114702,8 +114822,26 @@ function JSExecute(ast,option)
114702
114822
  ["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null],
114703
114823
 
114704
114824
  ["TR", null], //真实波幅
114705
- ["AUTOFILTER", null]
114706
-
114825
+ ["AUTOFILTER", null],
114826
+
114827
+ ['LARGEINTRDVOL', null], //逐笔买入大单成交量,相当于L2_VOL(0,0)+L2_VOL(1,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114828
+ ['LARGEOUTTRDVOL', null], //逐笔卖出大单成交量,相当于L2_VOL(0,1)+L2_VOL(1,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114829
+ ["TRADENUM", null], //逐笔成交总单数,沪深京品种的资金流向,仅日线以上周期,用于特定版本
114830
+ ["TRADEINNUM", null], //逐笔买入成交单数,相当于L2_VOLNUM(0,0)+L2_VOLNUM(1,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114831
+ ["TRADEOUTNUM", null], //逐笔卖出成交单数,相当于L2_VOLNUM(0,1)+L2_VOLNUM(1,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114832
+ ["LARGETRDINNUM", null], //逐笔买入大单成交单数,相当于L2_VOLNUM(0,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114833
+ ["LARGETRDOUTNUM", null], //逐笔卖出大单成交单数,相当于L2_VOLNUM(0,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114834
+ ["CUR_BUYORDER", null], //总委买量,序列数据,专业版等(资金流向功能)沪深京品种行情专用
114835
+ ["CUR_SELLORDER", null], //总委卖量,序列数据,专业版等(资金流向功能)沪深京品种行情专用
114836
+ ["ACTINVOL", null], //主动买成交量,相当于L2_VOL(0,2)+L2_VOL(1,2)+L2_VOL(2,2)+L2_VOL(3,2),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114837
+ ["ACTOUTVOL", null], //主动卖成交量,相当于L2_VOL(0,3)+L2_VOL(1,3)+L2_VOL(2,3)+L2_VOL(3,3),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114838
+ ["BIDORDERVOL", null], //累计总有效委买量,专业版等(资金流向功能)沪深京品种行情专用 累计总有效委买量-累计总有效撤买量=总买+总成交量
114839
+ ["BIDCANCELVOL", null], //累计总有效撤买量,专业版等(资金流向功能)沪深京品种行情专用 累计总有效委买量-累计总有效撤买量=总买+总成交量
114840
+ ["AVGBIDPX", null], //专业版等(资金流向功能)沪深京品种行情专用:最新委买均价
114841
+ ["OFFERORDERVOL", null], //累计总有效委卖量,专业版等(资金流向功能)沪深京品种行情专用 累计总有效委卖量-累计总有效撤卖量=总卖+总成交量
114842
+ ["OFFERCANCELVOL", null], //累计总有效撤卖量,专业版等(资金流向功能)沪深京品种行情专用 累计总有效委卖量-累计总有效撤卖量=总卖+总成交量
114843
+ ["AVGOFFERPX", null], //专业版等(资金流向功能)沪深京品种行情专用:最新委卖均价
114844
+ //["", null],
114707
114845
  ]);
114708
114846
 
114709
114847
  this.SymbolData=new JSSymbolData(this.AST,option,this);
@@ -114828,6 +114966,9 @@ function JSExecute(ast,option)
114828
114966
  case JS_EXECUTE_JOB_ID.JOB_CUSTOM_FUNCTION_DATA:
114829
114967
  return this.SymbolData.GetCustomFunctionData(jobItem);
114830
114968
 
114969
+ case JS_EXECUTE_JOB_ID.JOB_CUSTOM_DATA_FUNCTION:
114970
+ return this.SymbolData.GetCustomFunctionDataV2(jobItem);
114971
+
114831
114972
 
114832
114973
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_CUSTOM_API_DATA:
114833
114974
  return this.SymbolData.DownloadCustomAPIData(jobItem);
@@ -114920,6 +115061,24 @@ function JSExecute(ast,option)
114920
115061
  case "HYSJL":
114921
115062
 
114922
115063
  case 'FROMOPEN':
115064
+
115065
+ case "LARGEINTRDVOL":
115066
+ case "LARGEOUTTRDVOL":
115067
+ case "TRADENUM":
115068
+ case "TRADEINNUM":
115069
+ case "TRADEOUTNUM":
115070
+ case "LARGETRDINNUM":
115071
+ case "LARGETRDOUTNUM":
115072
+ case "CUR_BUYORDER":
115073
+ case "CUR_SELLORDER":
115074
+ case "ACTINVOL":
115075
+ case "ACTOUTVOL":
115076
+ case "BIDORDERVOL":
115077
+ case "BIDCANCELVOL":
115078
+ case "AVGBIDPX":
115079
+ case "OFFERORDERVOL":
115080
+ case "OFFERCANCELVOL":
115081
+ case "AVGOFFERPX":
114923
115082
  return this.SymbolData.GetStockCacheData({ VariantName:name, Node:node });
114924
115083
  case 'SETCODE':
114925
115084
  return this.SymbolData.SETCODE();
@@ -114983,8 +115142,9 @@ function JSExecute(ast,option)
114983
115142
  return this.SymbolData.WEEKOFYEAR();
114984
115143
  case "DAYSTOTODAY":
114985
115144
  return this.SymbolData.DAYSTOTODAY();
114986
-
114987
115145
  }
115146
+
115147
+ this.ThrowUnexpectedNode(node, '变量'+name+'不存在', name);
114988
115148
  }
114989
115149
 
114990
115150
  this.ReadCustomVariant=function(name,node)
@@ -115935,6 +116095,15 @@ function JSExecute(ast,option)
115935
116095
  return node.Out;
115936
116096
  }
115937
116097
 
116098
+ if (g_JSComplierResource.IsCustomDataFunction(funcName))
116099
+ {
116100
+ var functionInfo=g_JSComplierResource.CustomDataFunction.Data.get(funcName);
116101
+ node.Out=this.SymbolData.GetStockCacheData( {FunctionName:funcName, Args:args, ArgCount:functionInfo.ArgCount, Node:node } );
116102
+ node.Draw=null;
116103
+
116104
+ return node.Out;
116105
+ }
116106
+
115938
116107
  switch(funcName)
115939
116108
  {
115940
116109
  case 'DYNAINFO': //行情最新数据
@@ -116504,6 +116673,24 @@ function JSExplainer(ast,option)
116504
116673
  ['DRAWNULL',"无效数据"],
116505
116674
  ["TR", "求真实波幅"],
116506
116675
 
116676
+ ["LARGEINTRDVOL","逐笔买入大单成交量"],
116677
+ ["LARGEOUTTRDVOL","逐笔卖出大单成交量"],
116678
+ ["TRADENUM", "逐笔成交总单数"],
116679
+ ["TRADEINNUM", "逐笔买入成交单数"],
116680
+ ["TRADEOUTNUM", "逐笔卖出成交单数"],
116681
+ ["LARGETRDINNUM", "逐笔买入大单成交单数"],
116682
+ ["LARGETRDOUTNUM", "逐笔卖出大单成交单数"],
116683
+ ["CUR_BUYORDER", "总委买量"],
116684
+ ["CUR_SELLORDER", "总委卖量"],
116685
+ ["ACTINVOL", "主动买成交量"],
116686
+ ["ACTOUTVOL", "主动卖成交量"],
116687
+ ["BIDORDERVOL", "累计总有效委买量"],
116688
+ ["BIDCANCELVOL", "累计总有效撤买量"],
116689
+ ["AVGBIDPX", "最新委买均价"],
116690
+ ["OFFERORDERVOL", "累计总有效委卖量"],
116691
+ ["OFFERCANCELVOL", "累计总有效撤卖量"],
116692
+ ["AVGOFFERPX", "最新委卖均价"],
116693
+
116507
116694
  ]);
116508
116695
 
116509
116696
  if (option)
@@ -117095,7 +117282,9 @@ function JSExplainer(ast,option)
117095
117282
  }
117096
117283
  ],
117097
117284
 
117098
-
117285
+ ["L2_VOLNUM", { Name:"L2_VOLNUM", Param:{ Count:2 }, ToString:function(args) { return `单数分档`; } }],
117286
+ ["L2_VOL", { Name:"L2_VOL", Param:{ Count:2 }, ToString:function(args) { return `成交量分档`; } }],
117287
+ ["L2_AMO", { Name:"L2_AMO", Param:{ Count:2 }, ToString:function(args) { return `成交额分档`; } }],
117099
117288
 
117100
117289
  ]
117101
117290
  );
@@ -134037,7 +134226,7 @@ function ChartVScrollbar()
134037
134226
  this.ChartBorder; //边框信息
134038
134227
  this.ChartFrame; //框架画法
134039
134228
  this.Name; //名称
134040
- this.ClassName='ChartReportTab'; //类名
134229
+ this.ClassName='ChartVScrollbar'; //类名
134041
134230
  this.IsDrawFirst=false;
134042
134231
  this.GetEventCallback; //获取事件
134043
134232
  this.Report;
@@ -137020,6 +137209,7 @@ function JSKeyboardChartContainer(uielement)
137020
137209
 
137021
137210
  //拖拽滚动条
137022
137211
  this.DragYScroll=null; //{Start:{x,y}, End:{x, y}}
137212
+
137023
137213
  this.IsDestroy=false; //是否已经销毁了
137024
137214
 
137025
137215
  this.ChartDestory=function() //销毁
@@ -137060,6 +137250,7 @@ function JSKeyboardChartContainer(uielement)
137060
137250
  this.Data.Data=aryExactQuery.concat(aryFuzzyQuery);
137061
137251
 
137062
137252
  this.ChartPaint[0].SelectedRow=0;
137253
+ this.ChartPaint[0].SizeChange=true;
137063
137254
 
137064
137255
  JSConsole.Chart.Log(`[JSKeyboardChart:Search] search=${strSearch}, source=${this.SourceData.Data.length} match=${this.Data.Data.length}`);
137065
137256
 
@@ -137136,6 +137327,12 @@ function JSKeyboardChartContainer(uielement)
137136
137327
  chart.Data=this.Data;
137137
137328
  this.ChartPaint[0]=chart;
137138
137329
 
137330
+ chart.VScrollbar=new ChartKeyboardVScrollbar();
137331
+ chart.VScrollbar.Frame=this.Frame;
137332
+ chart.VScrollbar.Canvas=this.Canvas;
137333
+ chart.VScrollbar.ChartBorder=this.Frame.ChartBorder;
137334
+ chart.VScrollbar.Report=chart;
137335
+
137139
137336
  if (option)
137140
137337
  {
137141
137338
 
@@ -137387,7 +137584,7 @@ function JSKeyboardChartContainer(uielement)
137387
137584
 
137388
137585
  this.UIOnMouseDown=function(e)
137389
137586
  {
137390
- this.DragXScroll=null;
137587
+ this.DragYScroll=null;
137391
137588
  this.DragMove={ Click:{ X:e.clientX, Y:e.clientY }, Move:{X:e.clientX, Y:e.clientY}, PreMove:{X:e.clientX, Y:e.clientY } };
137392
137589
 
137393
137590
  var pixelTatio = GetDevicePixelRatio();
@@ -137406,6 +137603,29 @@ function JSKeyboardChartContainer(uielement)
137406
137603
  if (clickData.Redraw==true)
137407
137604
  this.Draw();
137408
137605
  }
137606
+ else if (clickData.Type==5 && e.button==0) //右侧滚动条
137607
+ {
137608
+ var scroll=clickData.VScrollbar;
137609
+ if (scroll.Type==1) //顶部按钮
137610
+ {
137611
+ if (this.MoveYOffset(-1))
137612
+ this.Draw();
137613
+ }
137614
+ else if (scroll.Type==2) //底部按钮
137615
+ {
137616
+ if (this.MoveYOffset(1))
137617
+ this.Draw();
137618
+ }
137619
+ else if (scroll.Type==3) //滚动条
137620
+ {
137621
+ this.DragYScroll={ Click:{X:x, Y:y}, LastMove:{X:x, Y:y} };
137622
+ }
137623
+ else if (scroll.Type==4) //滚动条内部
137624
+ {
137625
+ if (this.SetYOffset(scroll.Pos))
137626
+ this.Draw();
137627
+ }
137628
+ }
137409
137629
  }
137410
137630
 
137411
137631
  document.onmousemove=(e)=>{ this.DocOnMouseMove(e); }
@@ -137451,68 +137671,17 @@ function JSKeyboardChartContainer(uielement)
137451
137671
  var x = (e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;
137452
137672
  var y = (e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;
137453
137673
 
137454
- //JSConsole.Chart.Log(`[JSReportChartContainer::DocOnMouseMove] x=${x}, y=${y}`);
137455
-
137456
- if (this.DragRow)
137457
- {
137458
- var drag=this.DragRow;
137459
- var moveSetpY=drag.LastMove.Y-e.clientY;
137460
- if (Math.abs(moveSetpY)<2) return;
137461
- var reportChart=this.GetReportChart();
137462
- drag.LastMove.X=e.clientX;
137463
- drag.LastMove.Y=e.clientY;
137464
- drag.Inside={X:x, Y:y};
137465
-
137466
- if (reportChart)
137467
- {
137468
- var moveRow=reportChart.OnDrawgRow(x,y,e);
137469
- if (moveRow )
137470
- {
137471
- if (moveRow.Type==2)
137472
- {
137473
- if (moveRow.Data.DataIndex!=drag.Data.Row.DataIndex)
137474
- {
137475
- drag.MoveRow=moveRow;
137476
- }
137477
- }
137478
- else if (moveRow.Type==7)
137479
- {
137480
- var pageStatus=reportChart.GetCurrentPageStatus();
137481
- if (!pageStatus.IsEnd)
137482
- {
137483
- this.MoveYOffset(1, false);
137484
- drag.MoveRow=null;
137485
-
137486
- this.EnablePageScroll=true;
137487
- this.AutoScrollPage(2);
137488
- }
137489
- }
137490
- else if (moveRow.Type==5)
137491
- {
137492
- if (this.Data.YOffset>0)
137493
- {
137494
- this.MoveYOffset(-1, false);
137495
- drag.MoveRow=null;
137496
-
137497
- this.EnablePageScroll=true;
137498
- this.AutoScrollPage(-2);
137499
- }
137500
- }
137501
- }
137502
- reportChart.DragRow=drag;
137503
- }
137504
-
137505
- this.Draw();
137506
- }
137507
- else if (this.DragXScroll)
137674
+ if (this.DragYScroll)
137508
137675
  {
137509
137676
  var chart=this.ChartPaint[0];
137510
- if (!chart || !chart.Tab) return;
137677
+ if (!chart || !chart.VScrollbar) return;
137511
137678
 
137512
- this.DragXScroll.LastMove.X=x;
137513
- this.DragXScroll.LastMove.Y=y;
137514
- var pos=chart.Tab.GetScrollPostionByPoint(x,y);
137515
- if (this.SetXOffset(pos)) this.Draw();
137679
+ this.DragYScroll.LastMove.X=x;
137680
+ this.DragYScroll.LastMove.Y=y;
137681
+
137682
+ var pos=chart.VScrollbar.GetScrollPostionByPoint(x,y);
137683
+ if (this.SetYOffset(pos))
137684
+ this.Draw();
137516
137685
  }
137517
137686
  }
137518
137687
 
@@ -137522,6 +137691,8 @@ function JSKeyboardChartContainer(uielement)
137522
137691
  document.onmousemove=null;
137523
137692
  document.onmouseup=null;
137524
137693
 
137694
+ this.DragYScroll=null;
137695
+
137525
137696
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_MOUSEUP)
137526
137697
  if (event && event.Callback)
137527
137698
  {
@@ -137828,6 +137999,21 @@ function JSKeyboardChartContainer(uielement)
137828
137999
  return result;
137829
138000
  }
137830
138001
  }
138002
+
138003
+ this.SetYOffset=function(pos)
138004
+ {
138005
+ if (!IFrameSplitOperator.IsNumber(pos)) return false;
138006
+ var chart=this.ChartPaint[0];
138007
+ if (!chart) return false;
138008
+
138009
+ var maxOffset=chart.GetYScrollRange();
138010
+ if (pos<0) pos=0;
138011
+ if (pos>maxOffset) pos=maxOffset;
138012
+
138013
+ this.Data.YOffset=pos;
138014
+
138015
+ return true;
138016
+ }
137831
138017
  }
137832
138018
 
137833
138019
  function JSKeyboardFrame()
@@ -137837,14 +138023,14 @@ function JSKeyboardFrame()
137837
138023
 
137838
138024
  this.BorderLine=null; //1=上 2=下 4=左 8=右
137839
138025
 
137840
- this.BorderColor=g_JSChartResource.Report.BorderColor; //边框线
138026
+ this.BorderColor=g_JSChartResource.Keyboard.BorderColor; //边框线
137841
138027
 
137842
138028
  this.LogoTextColor=g_JSChartResource.FrameLogo.TextColor;
137843
138029
  this.LogoTextFont=g_JSChartResource.FrameLogo.Font;
137844
138030
 
137845
- this.ReloadResource=function(resource)
138031
+ this.ReloadResource=function(option)
137846
138032
  {
137847
- this.BorderColor=g_JSChartResource.Report.BorderColor; //边框线
138033
+ this.BorderColor=g_JSChartResource.Keyboard.BorderColor; //边框线
137848
138034
  this.LogoTextColor=g_JSChartResource.FrameLogo.TextColor;
137849
138035
  this.LogoTextFont=g_JSChartResource.FrameLogo.Font;
137850
138036
  }
@@ -137941,10 +138127,12 @@ function ChartSymbolList()
137941
138127
  this.IsDrawBorder=false; //是否绘制单元格边框
137942
138128
 
137943
138129
  this.ShowSymbol=[]; //显示的股票列表 { Index:序号(排序用), Symbol:股票代码 }
138130
+
138131
+ this.VScrollbar; //竖向滚动条
137944
138132
 
137945
138133
  this.BorderColor=g_JSChartResource.Keyboard.BorderColor; //边框线
137946
138134
  this.SelectedColor=g_JSChartResource.Keyboard.SelectedColor; //选中行
137947
- this.TextColor=g_JSChartResource.Keyboard.TextColor; //文字颜色
138135
+ this.TextColor=g_JSChartResource.Keyboard.TextColor; //文字颜色
137948
138136
 
137949
138137
  //表格内容配置
137950
138138
  this.ItemFontConfig={ Size:g_JSChartResource.Keyboard.Item.Font.Size, Name:g_JSChartResource.Keyboard.Item.Font.Name };
@@ -137977,7 +138165,11 @@ function ChartSymbolList()
137977
138165
 
137978
138166
  this.ReloadResource=function(resource)
137979
138167
  {
137980
-
138168
+ this.BorderColor=g_JSChartResource.Keyboard.BorderColor; //边框线
138169
+ this.SelectedColor=g_JSChartResource.Keyboard.SelectedColor; //选中行
138170
+ this.TextColor=g_JSChartResource.Keyboard.TextColor; //文字颜色
138171
+
138172
+ if (this.VScrollbar) this.VScrollbar.ReloadResource(resource);
137981
138173
  }
137982
138174
 
137983
138175
  this.SetColumn=function(aryColumn)
@@ -137992,6 +138184,7 @@ function ChartSymbolList()
137992
138184
  if (this.SizeChange) this.CalculateSize();
137993
138185
  else this.UpdateCacheData();
137994
138186
 
138187
+ var bShowVScrollbar=this.IsShowVScrollbar();
137995
138188
  this.Canvas.save();
137996
138189
 
137997
138190
  this.Canvas.beginPath();
@@ -138004,6 +138197,12 @@ function ChartSymbolList()
138004
138197
 
138005
138198
  this.DrawBorder();
138006
138199
 
138200
+ if (this.VScrollbar && bShowVScrollbar)
138201
+ {
138202
+ var bottom=this.ChartBorder.GetBottom();
138203
+ this.VScrollbar.DrawScrollbar(this.RectClient.Left,this.RectClient.Top+2, this.RectClient.Right+this.VScrollbar.ButtonSize+2, bottom-2);
138204
+ }
138205
+
138007
138206
  this.SizeChange=false;
138008
138207
  }
138009
138208
 
@@ -138014,6 +138213,12 @@ function ChartSymbolList()
138014
138213
  this.RectClient.Right=this.ChartBorder.GetRight();
138015
138214
  this.RectClient.Top=this.ChartBorder.GetTop();
138016
138215
  this.RectClient.Bottom=this.ChartBorder.GetBottom();
138216
+
138217
+ var bShowVScrollbar=this.IsShowVScrollbar();
138218
+ if (bShowVScrollbar && this.VScrollbar && this.VScrollbar.Enable)
138219
+ {
138220
+ this.RectClient.Right-=(this.VScrollbar.ButtonSize+2);
138221
+ }
138017
138222
  }
138018
138223
 
138019
138224
  this.GetPageSize=function(recalculate) //recalculate 是否重新计算
@@ -138047,6 +138252,8 @@ function ChartSymbolList()
138047
138252
 
138048
138253
  this.CalculateSize=function() //计算大小
138049
138254
  {
138255
+ if (this.VScrollbar && this.VScrollbar.Enable) this.VScrollbar.CalculateSize();
138256
+
138050
138257
  this.UpdateCacheData();
138051
138258
 
138052
138259
  var pixelRatio=GetDevicePixelRatio();
@@ -138241,6 +138448,7 @@ function ChartSymbolList()
138241
138448
  else if (textAlign=='right')
138242
138449
  {
138243
138450
  x=left+width-2;
138451
+ if (left+width-2>this.RectClient.Right) x=this.RectClient.Right-2;
138244
138452
  this.Canvas.textAlign="right";
138245
138453
  }
138246
138454
  else
@@ -138295,6 +138503,12 @@ function ChartSymbolList()
138295
138503
  else
138296
138504
  var uiElement={Left:null, Top:null};
138297
138505
 
138506
+ if (this.VScrollbar)
138507
+ {
138508
+ var item=this.VScrollbar.OnMouseDown(x,y,e);
138509
+ if (item) return { Type:5, VScrollbar:item }; //右侧滚动条
138510
+ }
138511
+
138298
138512
  var row=this.PtInBody(x,y);
138299
138513
  if (row)
138300
138514
  {
@@ -138455,6 +138669,57 @@ function ChartSymbolList()
138455
138669
  event.Callback(event,data,this);
138456
138670
  }
138457
138671
  }
138672
+
138673
+ this.GetYScrollRange=function()
138674
+ {
138675
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return 0;
138676
+
138677
+ var maxOffset=this.Data.Data.length-this.RowCount;
138678
+
138679
+ return maxOffset;
138680
+ }
138681
+
138682
+ //大于1屏数据 显示滚动条
138683
+ this.IsShowVScrollbar=function()
138684
+ {
138685
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return false;
138686
+
138687
+ return this.Data.Data.length>this.RowCount;
138688
+ }
138689
+ }
138690
+
138691
+ //纵向滚动条
138692
+ function ChartKeyboardVScrollbar()
138693
+ {
138694
+ this.newMethod=ChartVScrollbar; //派生
138695
+ this.newMethod();
138696
+ delete this.newMethod;
138697
+
138698
+ this.ClassName='ChartKeyboardVScrollbar';
138699
+ this.Enable=true;
138700
+
138701
+ this.ScrollBarHeight=g_JSChartResource.Keyboard.VScrollbar.ScrollBarHeight;
138702
+ this.ButtonColor=g_JSChartResource.Keyboard.VScrollbar.ButtonColor;
138703
+ this.BarColor=g_JSChartResource.Keyboard.VScrollbar.BarColor;
138704
+ this.BorderColor=g_JSChartResource.Keyboard.VScrollbar.BorderColor;
138705
+ this.BGColor=g_JSChartResource.Keyboard.VScrollbar.BGColor;
138706
+ this.Mergin={ Left:2, Right:2, Top:2, Bottom:2 };
138707
+ this.BarWithConfig={ Size:g_JSChartResource.Keyboard.VScrollbar.BarWidth.Size };
138708
+
138709
+ this.ReloadResource=function(resource)
138710
+ {
138711
+ this.ScrollBarHeight=g_JSChartResource.Keyboard.VScrollbar.ScrollBarHeight;
138712
+ this.ButtonColor=g_JSChartResource.Keyboard.VScrollbar.ButtonColor;
138713
+ this.BarColor=g_JSChartResource.Keyboard.VScrollbar.BarColor;
138714
+ this.BorderColor=g_JSChartResource.Keyboard.VScrollbar.BorderColor;
138715
+ this.BGColor=g_JSChartResource.Keyboard.VScrollbar.BGColor;
138716
+ this.BarWithConfig={ Size:g_JSChartResource.Keyboard.VScrollbar.BarWidth.Size };
138717
+ }
138718
+
138719
+ this.IsShowCallback=function()
138720
+ {
138721
+ return true;
138722
+ }
138458
138723
  }
138459
138724
 
138460
138725
  /*
@@ -142001,7 +142266,7 @@ function HQChartScriptWorker()
142001
142266
 
142002
142267
 
142003
142268
 
142004
- var HQCHART_VERSION="1.1.13677";
142269
+ var HQCHART_VERSION="1.1.13688";
142005
142270
 
142006
142271
  function PrintHQChartVersion()
142007
142272
  {