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.
@@ -72171,6 +72171,16 @@ function JSChartResource()
72171
72171
  NameFont:{ Size:14, Name:"微软雅黑" },
72172
72172
  SymbolFont:{ Size:12, Name:"微软雅黑" }
72173
72173
  },
72174
+
72175
+ VScrollbar:
72176
+ {
72177
+ ScrollBarHeight:50,
72178
+ ButtonColor:"rgba(252,252,252,0.8)",
72179
+ BarColor:"rgba(168,168,168,0.9)",
72180
+ BorderColor:'rgba(180,180,180,0.9)',
72181
+ BGColor:"rgba(234,239,248,0.9)",
72182
+ BarWidth:{ Size:8 }
72183
+ },
72174
72184
  },
72175
72185
 
72176
72186
  //滚动条
@@ -98081,6 +98091,38 @@ var g_JSComplierResource=
98081
98091
  Data:new Map() //自定义函数 key=变量名, Value:{ Name:变量名, Description:描述信息 }
98082
98092
  },
98083
98093
 
98094
+ CustomDataFunction: //自定义数据函数
98095
+ {
98096
+ //自定义函数 key=变量名, Value:{ Name:变量名, Description:描述信息, ArgCount:参数个数 }
98097
+ Data:new Map(
98098
+ [
98099
+ [
98100
+ "L2_VOLNUM",
98101
+ {
98102
+ Name:"L2_VOLNUM",
98103
+ Description:"单数分档,按: N(0--1):(超大+大)/(中+小),M(0--1):买/卖二类,沪深京品种的资金流向,仅日线以上周期,用于特定版本",
98104
+ ArgCount:2
98105
+ }
98106
+ ],
98107
+ [
98108
+ "L2_VOL",
98109
+ {
98110
+ Name:"L2_VOL",
98111
+ Description:"成交量分档,按: N(0--3):超大/大/中/小四档处理,M(0--3):买入/卖出/主买/主卖四类,沪深京品种的资金流向,仅日线以上周期,用于特定版本",
98112
+ ArgCount:2
98113
+ }
98114
+ ],
98115
+ [
98116
+ "L2_AMO",
98117
+ {
98118
+ Name:"L2_AMO",
98119
+ Description:"成交额分档,按: N(0--3):超大/大/中/小四档处理,M(0--3):买入/卖出/主买/主卖四类,沪深京品种的资金流向,仅日线以上周期,用于特定版本",
98120
+ ArgCount:2
98121
+ }
98122
+ ]
98123
+ ])
98124
+ },
98125
+
98084
98126
  GetDrawIcon:function(id)
98085
98127
  {
98086
98128
  var icon;
@@ -98133,6 +98175,12 @@ var g_JSComplierResource=
98133
98175
  {
98134
98176
  if (g_JSComplierResource.CustomVariant.Data.has(name)) return true;
98135
98177
  return false;
98178
+ },
98179
+
98180
+ IsCustomDataFunction:function(name)
98181
+ {
98182
+ if (g_JSComplierResource.CustomDataFunction.Data.has(name)) return true;
98183
+ return false;
98136
98184
  }
98137
98185
  }
98138
98186
 
@@ -99039,7 +99087,15 @@ function Node(ErrorHandler)
99039
99087
  "CAPITAL","TOTALCAPITAL","EXCHANGE",
99040
99088
  "HYBLOCK","DYBLOCK","GNBLOCK","FGBLOCK","ZSBLOCK","ZHBLOCK","ZDBLOCK","HYZSCODE",
99041
99089
  "GNBLOCKNUM","FGBLOCKNUM","ZSBLOCKNUM","ZHBLOCKNUM","ZDBLOCKNUM",
99042
- "HYSYL","HYSJL","FROMOPEN"
99090
+ "HYSYL","HYSJL","FROMOPEN",
99091
+ //资金流向
99092
+ "LARGEINTRDVOL","LARGEOUTTRDVOL",
99093
+ "TRADENUM","TRADEINNUM","TRADEOUTNUM",
99094
+ "LARGETRDINNUM","LARGETRDOUTNUM",
99095
+ "CUR_BUYORDER","CUR_SELLORDER",
99096
+ "ACTINVOL","ACTOUTVOL",
99097
+ "BIDORDERVOL","BIDCANCELVOL","AVGBIDPX",
99098
+ "OFFERORDERVOL","OFFERCANCELVOL","AVGOFFERPX",
99043
99099
  ]);
99044
99100
 
99045
99101
  if (setVariantName.has(varName))
@@ -99132,6 +99188,15 @@ function Node(ErrorHandler)
99132
99188
  return;
99133
99189
  }
99134
99190
 
99191
+ //自定义数据函数
99192
+ if (g_JSComplierResource.IsCustomDataFunction(callee.Name))
99193
+ {
99194
+ var item={FunctionName:callee.Name, ID:JS_EXECUTE_JOB_ID.JOB_CUSTOM_DATA_FUNCTION, Args:args}
99195
+ if (token) item.Token={ Index:token.Start, Line:token.LineNumber};
99196
+ this.FunctionData.push(item);
99197
+ return;
99198
+ }
99199
+
99135
99200
  if (callee.Name=='DYNAINFO')
99136
99201
  {
99137
99202
  var item={ ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA, Args:args, FunctionName:callee.Name };
@@ -112558,7 +112623,7 @@ function JSSymbolData(ast,option,jsExecute)
112558
112623
  Request:
112559
112624
  {
112560
112625
  Url:"数据地址", Type:'POST',
112561
- Data:{ VariantName:jobItem.VariantName, symbol: this.Symbol, daterange:dateRange, period:this.Period }
112626
+ Data:{ VariantName:jobItem.VariantName, symbol: this.Symbol, daterange:dateRange, period:this.Period, right:this.Right }
112562
112627
  },
112563
112628
  Self:this,
112564
112629
  VariantInfo:variantInfo,
@@ -112601,7 +112666,61 @@ function JSSymbolData(ast,option,jsExecute)
112601
112666
  {
112602
112667
  FunctionName:jobItem.FunctionName,
112603
112668
  symbol: this.Symbol, daterange:dateRange,
112604
- JobItem:jobItem //函数编译信息
112669
+ JobItem:jobItem, //函数编译信息
112670
+ period:this.Period,
112671
+ right:this.Right,
112672
+ }
112673
+ },
112674
+ Self:this,
112675
+ FunctionInfo:functionInfo,
112676
+ PreventDefault:false
112677
+ };
112678
+ this.NetworkFilter(obj, function(recvData)
112679
+ {
112680
+ if (recvData.Error) self.AddStockValueError(key,recvData.Error);
112681
+ else self.RecvStockValue(recvData.Data,jobItem,key,recvData.DataType);
112682
+ self.Execute.RunNextJob();
112683
+ });
112684
+ }
112685
+ else
112686
+ {
112687
+ this.AddStockValueError(key, `自定义函数${key}下载失败`);
112688
+ this.Execute.RunNextJob();
112689
+ }
112690
+ }
112691
+
112692
+
112693
+ this.GetCustomFunctionDataV2=function(jobItem)
112694
+ {
112695
+ var funcName=jobItem.FunctionName;
112696
+ var functionInfo=g_JSComplierResource.CustomDataFunction.Data.get(funcName);
112697
+ if (!functionInfo) return;
112698
+
112699
+ var aryArgs=this.JobArgumentsToArray(jobItem, functionInfo.ArgCount);
112700
+ var key=this.GetStockDataKey(jobItem,aryArgs);
112701
+
112702
+ if (this.StockData.has(key)) return this.Execute.RunNextJob(); //一个函数只能缓存一个数据, 保存多个外部自己保存
112703
+
112704
+ var self=this;
112705
+ if (this.NetworkFilter)
112706
+ {
112707
+ var dateRange=this.Data.GetDateRange();
112708
+ var obj=
112709
+ {
112710
+ Name:'JSSymbolData::GetCustomFunctionData', //类名::函数名
112711
+ Explain:'自定义函数数据下载',
112712
+ JobID:jobItem.ID,
112713
+ Request:
112714
+ {
112715
+ Url:"数据地址", Type:'POST',
112716
+ Data:
112717
+ {
112718
+ FunctionName:jobItem.FunctionName,
112719
+ symbol: this.Symbol, daterange:dateRange,
112720
+ JobItem:jobItem, //函数编译信息
112721
+ Key:key,
112722
+ period:this.Period,
112723
+ right:this.Right,
112605
112724
  }
112606
112725
  },
112607
112726
  Self:this,
@@ -114418,6 +114537,7 @@ var JS_EXECUTE_JOB_ID=
114418
114537
 
114419
114538
  JOB_CUSTOM_FUNCTION_DATA:6000, //自定义函数
114420
114539
  JOB_CUSTOM_VARIANT_DATA:6001, //自定义变量
114540
+ JOB_CUSTOM_DATA_FUNCTION:6002, //自定义数据函数
114421
114541
  //截面数据
114422
114542
  //财务数据 SF(公告期,数据名称) 如: SF(201901,"流动资产");
114423
114543
  JOB_DOWNLOAD_SECTION_SF:20000,
@@ -114658,8 +114778,26 @@ function JSExecute(ast,option)
114658
114778
  ["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null],
114659
114779
 
114660
114780
  ["TR", null], //真实波幅
114661
- ["AUTOFILTER", null]
114662
-
114781
+ ["AUTOFILTER", null],
114782
+
114783
+ ['LARGEINTRDVOL', null], //逐笔买入大单成交量,相当于L2_VOL(0,0)+L2_VOL(1,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114784
+ ['LARGEOUTTRDVOL', null], //逐笔卖出大单成交量,相当于L2_VOL(0,1)+L2_VOL(1,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114785
+ ["TRADENUM", null], //逐笔成交总单数,沪深京品种的资金流向,仅日线以上周期,用于特定版本
114786
+ ["TRADEINNUM", null], //逐笔买入成交单数,相当于L2_VOLNUM(0,0)+L2_VOLNUM(1,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114787
+ ["TRADEOUTNUM", null], //逐笔卖出成交单数,相当于L2_VOLNUM(0,1)+L2_VOLNUM(1,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114788
+ ["LARGETRDINNUM", null], //逐笔买入大单成交单数,相当于L2_VOLNUM(0,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114789
+ ["LARGETRDOUTNUM", null], //逐笔卖出大单成交单数,相当于L2_VOLNUM(0,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114790
+ ["CUR_BUYORDER", null], //总委买量,序列数据,专业版等(资金流向功能)沪深京品种行情专用
114791
+ ["CUR_SELLORDER", null], //总委卖量,序列数据,专业版等(资金流向功能)沪深京品种行情专用
114792
+ ["ACTINVOL", null], //主动买成交量,相当于L2_VOL(0,2)+L2_VOL(1,2)+L2_VOL(2,2)+L2_VOL(3,2),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114793
+ ["ACTOUTVOL", null], //主动卖成交量,相当于L2_VOL(0,3)+L2_VOL(1,3)+L2_VOL(2,3)+L2_VOL(3,3),沪深京品种的资金流向,仅日线以上周期,用于特定版本
114794
+ ["BIDORDERVOL", null], //累计总有效委买量,专业版等(资金流向功能)沪深京品种行情专用 累计总有效委买量-累计总有效撤买量=总买+总成交量
114795
+ ["BIDCANCELVOL", null], //累计总有效撤买量,专业版等(资金流向功能)沪深京品种行情专用 累计总有效委买量-累计总有效撤买量=总买+总成交量
114796
+ ["AVGBIDPX", null], //专业版等(资金流向功能)沪深京品种行情专用:最新委买均价
114797
+ ["OFFERORDERVOL", null], //累计总有效委卖量,专业版等(资金流向功能)沪深京品种行情专用 累计总有效委卖量-累计总有效撤卖量=总卖+总成交量
114798
+ ["OFFERCANCELVOL", null], //累计总有效撤卖量,专业版等(资金流向功能)沪深京品种行情专用 累计总有效委卖量-累计总有效撤卖量=总卖+总成交量
114799
+ ["AVGOFFERPX", null], //专业版等(资金流向功能)沪深京品种行情专用:最新委卖均价
114800
+ //["", null],
114663
114801
  ]);
114664
114802
 
114665
114803
  this.SymbolData=new JSSymbolData(this.AST,option,this);
@@ -114784,6 +114922,9 @@ function JSExecute(ast,option)
114784
114922
  case JS_EXECUTE_JOB_ID.JOB_CUSTOM_FUNCTION_DATA:
114785
114923
  return this.SymbolData.GetCustomFunctionData(jobItem);
114786
114924
 
114925
+ case JS_EXECUTE_JOB_ID.JOB_CUSTOM_DATA_FUNCTION:
114926
+ return this.SymbolData.GetCustomFunctionDataV2(jobItem);
114927
+
114787
114928
 
114788
114929
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_CUSTOM_API_DATA:
114789
114930
  return this.SymbolData.DownloadCustomAPIData(jobItem);
@@ -114876,6 +115017,24 @@ function JSExecute(ast,option)
114876
115017
  case "HYSJL":
114877
115018
 
114878
115019
  case 'FROMOPEN':
115020
+
115021
+ case "LARGEINTRDVOL":
115022
+ case "LARGEOUTTRDVOL":
115023
+ case "TRADENUM":
115024
+ case "TRADEINNUM":
115025
+ case "TRADEOUTNUM":
115026
+ case "LARGETRDINNUM":
115027
+ case "LARGETRDOUTNUM":
115028
+ case "CUR_BUYORDER":
115029
+ case "CUR_SELLORDER":
115030
+ case "ACTINVOL":
115031
+ case "ACTOUTVOL":
115032
+ case "BIDORDERVOL":
115033
+ case "BIDCANCELVOL":
115034
+ case "AVGBIDPX":
115035
+ case "OFFERORDERVOL":
115036
+ case "OFFERCANCELVOL":
115037
+ case "AVGOFFERPX":
114879
115038
  return this.SymbolData.GetStockCacheData({ VariantName:name, Node:node });
114880
115039
  case 'SETCODE':
114881
115040
  return this.SymbolData.SETCODE();
@@ -114939,8 +115098,9 @@ function JSExecute(ast,option)
114939
115098
  return this.SymbolData.WEEKOFYEAR();
114940
115099
  case "DAYSTOTODAY":
114941
115100
  return this.SymbolData.DAYSTOTODAY();
114942
-
114943
115101
  }
115102
+
115103
+ this.ThrowUnexpectedNode(node, '变量'+name+'不存在', name);
114944
115104
  }
114945
115105
 
114946
115106
  this.ReadCustomVariant=function(name,node)
@@ -115891,6 +116051,15 @@ function JSExecute(ast,option)
115891
116051
  return node.Out;
115892
116052
  }
115893
116053
 
116054
+ if (g_JSComplierResource.IsCustomDataFunction(funcName))
116055
+ {
116056
+ var functionInfo=g_JSComplierResource.CustomDataFunction.Data.get(funcName);
116057
+ node.Out=this.SymbolData.GetStockCacheData( {FunctionName:funcName, Args:args, ArgCount:functionInfo.ArgCount, Node:node } );
116058
+ node.Draw=null;
116059
+
116060
+ return node.Out;
116061
+ }
116062
+
115894
116063
  switch(funcName)
115895
116064
  {
115896
116065
  case 'DYNAINFO': //行情最新数据
@@ -116460,6 +116629,24 @@ function JSExplainer(ast,option)
116460
116629
  ['DRAWNULL',"无效数据"],
116461
116630
  ["TR", "求真实波幅"],
116462
116631
 
116632
+ ["LARGEINTRDVOL","逐笔买入大单成交量"],
116633
+ ["LARGEOUTTRDVOL","逐笔卖出大单成交量"],
116634
+ ["TRADENUM", "逐笔成交总单数"],
116635
+ ["TRADEINNUM", "逐笔买入成交单数"],
116636
+ ["TRADEOUTNUM", "逐笔卖出成交单数"],
116637
+ ["LARGETRDINNUM", "逐笔买入大单成交单数"],
116638
+ ["LARGETRDOUTNUM", "逐笔卖出大单成交单数"],
116639
+ ["CUR_BUYORDER", "总委买量"],
116640
+ ["CUR_SELLORDER", "总委卖量"],
116641
+ ["ACTINVOL", "主动买成交量"],
116642
+ ["ACTOUTVOL", "主动卖成交量"],
116643
+ ["BIDORDERVOL", "累计总有效委买量"],
116644
+ ["BIDCANCELVOL", "累计总有效撤买量"],
116645
+ ["AVGBIDPX", "最新委买均价"],
116646
+ ["OFFERORDERVOL", "累计总有效委卖量"],
116647
+ ["OFFERCANCELVOL", "累计总有效撤卖量"],
116648
+ ["AVGOFFERPX", "最新委卖均价"],
116649
+
116463
116650
  ]);
116464
116651
 
116465
116652
  if (option)
@@ -117051,7 +117238,9 @@ function JSExplainer(ast,option)
117051
117238
  }
117052
117239
  ],
117053
117240
 
117054
-
117241
+ ["L2_VOLNUM", { Name:"L2_VOLNUM", Param:{ Count:2 }, ToString:function(args) { return `单数分档`; } }],
117242
+ ["L2_VOL", { Name:"L2_VOL", Param:{ Count:2 }, ToString:function(args) { return `成交量分档`; } }],
117243
+ ["L2_AMO", { Name:"L2_AMO", Param:{ Count:2 }, ToString:function(args) { return `成交额分档`; } }],
117055
117244
 
117056
117245
  ]
117057
117246
  );
@@ -133993,7 +134182,7 @@ function ChartVScrollbar()
133993
134182
  this.ChartBorder; //边框信息
133994
134183
  this.ChartFrame; //框架画法
133995
134184
  this.Name; //名称
133996
- this.ClassName='ChartReportTab'; //类名
134185
+ this.ClassName='ChartVScrollbar'; //类名
133997
134186
  this.IsDrawFirst=false;
133998
134187
  this.GetEventCallback; //获取事件
133999
134188
  this.Report;
@@ -134570,6 +134759,7 @@ function JSKeyboardChartContainer(uielement)
134570
134759
 
134571
134760
  //拖拽滚动条
134572
134761
  this.DragYScroll=null; //{Start:{x,y}, End:{x, y}}
134762
+
134573
134763
  this.IsDestroy=false; //是否已经销毁了
134574
134764
 
134575
134765
  this.ChartDestory=function() //销毁
@@ -134610,6 +134800,7 @@ function JSKeyboardChartContainer(uielement)
134610
134800
  this.Data.Data=aryExactQuery.concat(aryFuzzyQuery);
134611
134801
 
134612
134802
  this.ChartPaint[0].SelectedRow=0;
134803
+ this.ChartPaint[0].SizeChange=true;
134613
134804
 
134614
134805
  JSConsole.Chart.Log(`[JSKeyboardChart:Search] search=${strSearch}, source=${this.SourceData.Data.length} match=${this.Data.Data.length}`);
134615
134806
 
@@ -134686,6 +134877,12 @@ function JSKeyboardChartContainer(uielement)
134686
134877
  chart.Data=this.Data;
134687
134878
  this.ChartPaint[0]=chart;
134688
134879
 
134880
+ chart.VScrollbar=new ChartKeyboardVScrollbar();
134881
+ chart.VScrollbar.Frame=this.Frame;
134882
+ chart.VScrollbar.Canvas=this.Canvas;
134883
+ chart.VScrollbar.ChartBorder=this.Frame.ChartBorder;
134884
+ chart.VScrollbar.Report=chart;
134885
+
134689
134886
  if (option)
134690
134887
  {
134691
134888
 
@@ -134937,7 +135134,7 @@ function JSKeyboardChartContainer(uielement)
134937
135134
 
134938
135135
  this.UIOnMouseDown=function(e)
134939
135136
  {
134940
- this.DragXScroll=null;
135137
+ this.DragYScroll=null;
134941
135138
  this.DragMove={ Click:{ X:e.clientX, Y:e.clientY }, Move:{X:e.clientX, Y:e.clientY}, PreMove:{X:e.clientX, Y:e.clientY } };
134942
135139
 
134943
135140
  var pixelTatio = GetDevicePixelRatio();
@@ -134956,6 +135153,29 @@ function JSKeyboardChartContainer(uielement)
134956
135153
  if (clickData.Redraw==true)
134957
135154
  this.Draw();
134958
135155
  }
135156
+ else if (clickData.Type==5 && e.button==0) //右侧滚动条
135157
+ {
135158
+ var scroll=clickData.VScrollbar;
135159
+ if (scroll.Type==1) //顶部按钮
135160
+ {
135161
+ if (this.MoveYOffset(-1))
135162
+ this.Draw();
135163
+ }
135164
+ else if (scroll.Type==2) //底部按钮
135165
+ {
135166
+ if (this.MoveYOffset(1))
135167
+ this.Draw();
135168
+ }
135169
+ else if (scroll.Type==3) //滚动条
135170
+ {
135171
+ this.DragYScroll={ Click:{X:x, Y:y}, LastMove:{X:x, Y:y} };
135172
+ }
135173
+ else if (scroll.Type==4) //滚动条内部
135174
+ {
135175
+ if (this.SetYOffset(scroll.Pos))
135176
+ this.Draw();
135177
+ }
135178
+ }
134959
135179
  }
134960
135180
 
134961
135181
  document.onmousemove=(e)=>{ this.DocOnMouseMove(e); }
@@ -135001,68 +135221,17 @@ function JSKeyboardChartContainer(uielement)
135001
135221
  var x = (e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;
135002
135222
  var y = (e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;
135003
135223
 
135004
- //JSConsole.Chart.Log(`[JSReportChartContainer::DocOnMouseMove] x=${x}, y=${y}`);
135005
-
135006
- if (this.DragRow)
135007
- {
135008
- var drag=this.DragRow;
135009
- var moveSetpY=drag.LastMove.Y-e.clientY;
135010
- if (Math.abs(moveSetpY)<2) return;
135011
- var reportChart=this.GetReportChart();
135012
- drag.LastMove.X=e.clientX;
135013
- drag.LastMove.Y=e.clientY;
135014
- drag.Inside={X:x, Y:y};
135015
-
135016
- if (reportChart)
135017
- {
135018
- var moveRow=reportChart.OnDrawgRow(x,y,e);
135019
- if (moveRow )
135020
- {
135021
- if (moveRow.Type==2)
135022
- {
135023
- if (moveRow.Data.DataIndex!=drag.Data.Row.DataIndex)
135024
- {
135025
- drag.MoveRow=moveRow;
135026
- }
135027
- }
135028
- else if (moveRow.Type==7)
135029
- {
135030
- var pageStatus=reportChart.GetCurrentPageStatus();
135031
- if (!pageStatus.IsEnd)
135032
- {
135033
- this.MoveYOffset(1, false);
135034
- drag.MoveRow=null;
135035
-
135036
- this.EnablePageScroll=true;
135037
- this.AutoScrollPage(2);
135038
- }
135039
- }
135040
- else if (moveRow.Type==5)
135041
- {
135042
- if (this.Data.YOffset>0)
135043
- {
135044
- this.MoveYOffset(-1, false);
135045
- drag.MoveRow=null;
135046
-
135047
- this.EnablePageScroll=true;
135048
- this.AutoScrollPage(-2);
135049
- }
135050
- }
135051
- }
135052
- reportChart.DragRow=drag;
135053
- }
135054
-
135055
- this.Draw();
135056
- }
135057
- else if (this.DragXScroll)
135224
+ if (this.DragYScroll)
135058
135225
  {
135059
135226
  var chart=this.ChartPaint[0];
135060
- if (!chart || !chart.Tab) return;
135227
+ if (!chart || !chart.VScrollbar) return;
135061
135228
 
135062
- this.DragXScroll.LastMove.X=x;
135063
- this.DragXScroll.LastMove.Y=y;
135064
- var pos=chart.Tab.GetScrollPostionByPoint(x,y);
135065
- if (this.SetXOffset(pos)) this.Draw();
135229
+ this.DragYScroll.LastMove.X=x;
135230
+ this.DragYScroll.LastMove.Y=y;
135231
+
135232
+ var pos=chart.VScrollbar.GetScrollPostionByPoint(x,y);
135233
+ if (this.SetYOffset(pos))
135234
+ this.Draw();
135066
135235
  }
135067
135236
  }
135068
135237
 
@@ -135072,6 +135241,8 @@ function JSKeyboardChartContainer(uielement)
135072
135241
  document.onmousemove=null;
135073
135242
  document.onmouseup=null;
135074
135243
 
135244
+ this.DragYScroll=null;
135245
+
135075
135246
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_MOUSEUP)
135076
135247
  if (event && event.Callback)
135077
135248
  {
@@ -135378,6 +135549,21 @@ function JSKeyboardChartContainer(uielement)
135378
135549
  return result;
135379
135550
  }
135380
135551
  }
135552
+
135553
+ this.SetYOffset=function(pos)
135554
+ {
135555
+ if (!IFrameSplitOperator.IsNumber(pos)) return false;
135556
+ var chart=this.ChartPaint[0];
135557
+ if (!chart) return false;
135558
+
135559
+ var maxOffset=chart.GetYScrollRange();
135560
+ if (pos<0) pos=0;
135561
+ if (pos>maxOffset) pos=maxOffset;
135562
+
135563
+ this.Data.YOffset=pos;
135564
+
135565
+ return true;
135566
+ }
135381
135567
  }
135382
135568
 
135383
135569
  function JSKeyboardFrame()
@@ -135387,14 +135573,14 @@ function JSKeyboardFrame()
135387
135573
 
135388
135574
  this.BorderLine=null; //1=上 2=下 4=左 8=右
135389
135575
 
135390
- this.BorderColor=g_JSChartResource.Report.BorderColor; //边框线
135576
+ this.BorderColor=g_JSChartResource.Keyboard.BorderColor; //边框线
135391
135577
 
135392
135578
  this.LogoTextColor=g_JSChartResource.FrameLogo.TextColor;
135393
135579
  this.LogoTextFont=g_JSChartResource.FrameLogo.Font;
135394
135580
 
135395
- this.ReloadResource=function(resource)
135581
+ this.ReloadResource=function(option)
135396
135582
  {
135397
- this.BorderColor=g_JSChartResource.Report.BorderColor; //边框线
135583
+ this.BorderColor=g_JSChartResource.Keyboard.BorderColor; //边框线
135398
135584
  this.LogoTextColor=g_JSChartResource.FrameLogo.TextColor;
135399
135585
  this.LogoTextFont=g_JSChartResource.FrameLogo.Font;
135400
135586
  }
@@ -135491,10 +135677,12 @@ function ChartSymbolList()
135491
135677
  this.IsDrawBorder=false; //是否绘制单元格边框
135492
135678
 
135493
135679
  this.ShowSymbol=[]; //显示的股票列表 { Index:序号(排序用), Symbol:股票代码 }
135680
+
135681
+ this.VScrollbar; //竖向滚动条
135494
135682
 
135495
135683
  this.BorderColor=g_JSChartResource.Keyboard.BorderColor; //边框线
135496
135684
  this.SelectedColor=g_JSChartResource.Keyboard.SelectedColor; //选中行
135497
- this.TextColor=g_JSChartResource.Keyboard.TextColor; //文字颜色
135685
+ this.TextColor=g_JSChartResource.Keyboard.TextColor; //文字颜色
135498
135686
 
135499
135687
  //表格内容配置
135500
135688
  this.ItemFontConfig={ Size:g_JSChartResource.Keyboard.Item.Font.Size, Name:g_JSChartResource.Keyboard.Item.Font.Name };
@@ -135527,7 +135715,11 @@ function ChartSymbolList()
135527
135715
 
135528
135716
  this.ReloadResource=function(resource)
135529
135717
  {
135530
-
135718
+ this.BorderColor=g_JSChartResource.Keyboard.BorderColor; //边框线
135719
+ this.SelectedColor=g_JSChartResource.Keyboard.SelectedColor; //选中行
135720
+ this.TextColor=g_JSChartResource.Keyboard.TextColor; //文字颜色
135721
+
135722
+ if (this.VScrollbar) this.VScrollbar.ReloadResource(resource);
135531
135723
  }
135532
135724
 
135533
135725
  this.SetColumn=function(aryColumn)
@@ -135542,6 +135734,7 @@ function ChartSymbolList()
135542
135734
  if (this.SizeChange) this.CalculateSize();
135543
135735
  else this.UpdateCacheData();
135544
135736
 
135737
+ var bShowVScrollbar=this.IsShowVScrollbar();
135545
135738
  this.Canvas.save();
135546
135739
 
135547
135740
  this.Canvas.beginPath();
@@ -135554,6 +135747,12 @@ function ChartSymbolList()
135554
135747
 
135555
135748
  this.DrawBorder();
135556
135749
 
135750
+ if (this.VScrollbar && bShowVScrollbar)
135751
+ {
135752
+ var bottom=this.ChartBorder.GetBottom();
135753
+ this.VScrollbar.DrawScrollbar(this.RectClient.Left,this.RectClient.Top+2, this.RectClient.Right+this.VScrollbar.ButtonSize+2, bottom-2);
135754
+ }
135755
+
135557
135756
  this.SizeChange=false;
135558
135757
  }
135559
135758
 
@@ -135564,6 +135763,12 @@ function ChartSymbolList()
135564
135763
  this.RectClient.Right=this.ChartBorder.GetRight();
135565
135764
  this.RectClient.Top=this.ChartBorder.GetTop();
135566
135765
  this.RectClient.Bottom=this.ChartBorder.GetBottom();
135766
+
135767
+ var bShowVScrollbar=this.IsShowVScrollbar();
135768
+ if (bShowVScrollbar && this.VScrollbar && this.VScrollbar.Enable)
135769
+ {
135770
+ this.RectClient.Right-=(this.VScrollbar.ButtonSize+2);
135771
+ }
135567
135772
  }
135568
135773
 
135569
135774
  this.GetPageSize=function(recalculate) //recalculate 是否重新计算
@@ -135597,6 +135802,8 @@ function ChartSymbolList()
135597
135802
 
135598
135803
  this.CalculateSize=function() //计算大小
135599
135804
  {
135805
+ if (this.VScrollbar && this.VScrollbar.Enable) this.VScrollbar.CalculateSize();
135806
+
135600
135807
  this.UpdateCacheData();
135601
135808
 
135602
135809
  var pixelRatio=GetDevicePixelRatio();
@@ -135791,6 +135998,7 @@ function ChartSymbolList()
135791
135998
  else if (textAlign=='right')
135792
135999
  {
135793
136000
  x=left+width-2;
136001
+ if (left+width-2>this.RectClient.Right) x=this.RectClient.Right-2;
135794
136002
  this.Canvas.textAlign="right";
135795
136003
  }
135796
136004
  else
@@ -135845,6 +136053,12 @@ function ChartSymbolList()
135845
136053
  else
135846
136054
  var uiElement={Left:null, Top:null};
135847
136055
 
136056
+ if (this.VScrollbar)
136057
+ {
136058
+ var item=this.VScrollbar.OnMouseDown(x,y,e);
136059
+ if (item) return { Type:5, VScrollbar:item }; //右侧滚动条
136060
+ }
136061
+
135848
136062
  var row=this.PtInBody(x,y);
135849
136063
  if (row)
135850
136064
  {
@@ -136005,6 +136219,57 @@ function ChartSymbolList()
136005
136219
  event.Callback(event,data,this);
136006
136220
  }
136007
136221
  }
136222
+
136223
+ this.GetYScrollRange=function()
136224
+ {
136225
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return 0;
136226
+
136227
+ var maxOffset=this.Data.Data.length-this.RowCount;
136228
+
136229
+ return maxOffset;
136230
+ }
136231
+
136232
+ //大于1屏数据 显示滚动条
136233
+ this.IsShowVScrollbar=function()
136234
+ {
136235
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return false;
136236
+
136237
+ return this.Data.Data.length>this.RowCount;
136238
+ }
136239
+ }
136240
+
136241
+ //纵向滚动条
136242
+ function ChartKeyboardVScrollbar()
136243
+ {
136244
+ this.newMethod=ChartVScrollbar; //派生
136245
+ this.newMethod();
136246
+ delete this.newMethod;
136247
+
136248
+ this.ClassName='ChartKeyboardVScrollbar';
136249
+ this.Enable=true;
136250
+
136251
+ this.ScrollBarHeight=g_JSChartResource.Keyboard.VScrollbar.ScrollBarHeight;
136252
+ this.ButtonColor=g_JSChartResource.Keyboard.VScrollbar.ButtonColor;
136253
+ this.BarColor=g_JSChartResource.Keyboard.VScrollbar.BarColor;
136254
+ this.BorderColor=g_JSChartResource.Keyboard.VScrollbar.BorderColor;
136255
+ this.BGColor=g_JSChartResource.Keyboard.VScrollbar.BGColor;
136256
+ this.Mergin={ Left:2, Right:2, Top:2, Bottom:2 };
136257
+ this.BarWithConfig={ Size:g_JSChartResource.Keyboard.VScrollbar.BarWidth.Size };
136258
+
136259
+ this.ReloadResource=function(resource)
136260
+ {
136261
+ this.ScrollBarHeight=g_JSChartResource.Keyboard.VScrollbar.ScrollBarHeight;
136262
+ this.ButtonColor=g_JSChartResource.Keyboard.VScrollbar.ButtonColor;
136263
+ this.BarColor=g_JSChartResource.Keyboard.VScrollbar.BarColor;
136264
+ this.BorderColor=g_JSChartResource.Keyboard.VScrollbar.BorderColor;
136265
+ this.BGColor=g_JSChartResource.Keyboard.VScrollbar.BGColor;
136266
+ this.BarWithConfig={ Size:g_JSChartResource.Keyboard.VScrollbar.BarWidth.Size };
136267
+ }
136268
+
136269
+ this.IsShowCallback=function()
136270
+ {
136271
+ return true;
136272
+ }
136008
136273
  }
136009
136274
 
136010
136275
  /*
@@ -137485,7 +137750,7 @@ function ScrollBarBGChart()
137485
137750
 
137486
137751
 
137487
137752
 
137488
- var HQCHART_VERSION="1.1.13677";
137753
+ var HQCHART_VERSION="1.1.13688";
137489
137754
 
137490
137755
  function PrintHQChartVersion()
137491
137756
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13677";
8
+ var HQCHART_VERSION="1.1.13688";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {