hqchart 1.1.15455 → 1.1.15480

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.
@@ -6840,6 +6840,15 @@ JSChart.GetShortSymbol=function(symbol)
6840
6840
  return symbol.slice(0,pos);
6841
6841
  }
6842
6842
 
6843
+ JSChart.CancelEvent=function(e)
6844
+ {
6845
+ if (!e) return;
6846
+
6847
+ if (e.preventDefault) e.preventDefault();
6848
+ if (e.stopPropagation) e.stopPropagation();
6849
+ e.returnValue=false;
6850
+ }
6851
+
6843
6852
 
6844
6853
  var JSCHART_EVENT_ID=
6845
6854
  {
@@ -6928,9 +6937,6 @@ var JSCHART_EVENT_ID=
6928
6937
  ON_DRAG_SUB_SELECT_RECT:66, //拖拽区间选择子区域
6929
6938
  ON_DRAG_SUB_SELECT_RECT_MOUSEUP:67, //拖拽区间选择子区域鼠标松开
6930
6939
 
6931
- ON_KEYBOARD_SELECTED:68, //键盘精灵选中回车
6932
- ON_KEYBOARD_MOUSEUP:69,
6933
-
6934
6940
  ON_CLICK_DRAWPICTURE_BUTTON:70, //画图工具按钮
6935
6941
  ON_FINISH_MOVE_DRAWPICTURE:71, //画图工具移动完成
6936
6942
 
@@ -7076,6 +7082,15 @@ var JSCHART_EVENT_ID=
7076
7082
 
7077
7083
  //工具条
7078
7084
  ON_CLICK_STATUSBAR_ITEM:301,
7085
+ ON_RCLICK_STATUSBAR_ITEM:302,
7086
+
7087
+ //5档买卖
7088
+ ON_CLICK_STOCKINFO_ITEM:350,
7089
+ ON_RCLICK_STOCKINFO_ITEM:351,
7090
+
7091
+ ON_KEYBOARD_SHOW:350, //显示键盘精灵
7092
+ ON_KEYBOARD_SELECTED:351, //键盘精灵选中回车
7093
+ ON_KEYBOARD_MOUSEUP:352,
7079
7094
  }
7080
7095
 
7081
7096
  var JSCHART_OPERATOR_ID=
@@ -31518,6 +31533,7 @@ function IChartPainting()
31518
31533
  if (!this.IsShow || this.ChartFrame.IsMinSize) return;
31519
31534
  var bHScreen=(this.ChartFrame.IsHScreen===true);
31520
31535
  if (bHScreen) return;
31536
+ if (!this.Data) return;
31521
31537
 
31522
31538
  var isMinute=this.IsMinuteFrame();
31523
31539
  var dataWidth=this.ChartFrame.DataWidth;
@@ -31658,6 +31674,7 @@ function IChartPainting()
31658
31674
  if (!this.IsShow || this.ChartFrame.IsMinSize) return null;
31659
31675
  var bHScreen=(this.ChartFrame.IsHScreen===true);
31660
31676
  if (bHScreen) return null;
31677
+ if (!this.Data) return null;
31661
31678
 
31662
31679
  var dataWidth=this.ChartFrame.DataWidth;
31663
31680
  var distanceWidth=this.ChartFrame.DistanceWidth;
@@ -107195,6 +107212,24 @@ var MARKET_SUFFIX_NAME=
107195
107212
  return false;
107196
107213
  },
107197
107214
 
107215
+ //是否包含前缀
107216
+ IsPrefixIncludes:function(symbol, aryPrefix)
107217
+ {
107218
+ if (!symbol) return false;
107219
+ var shortSymbol=this.GetShortSymbol(symbol);
107220
+ if (!shortSymbol) return false;
107221
+ shortSymbol=shortSymbol.toUpperCase();
107222
+
107223
+ for(var i=0;i<aryPrefix.length;++i)
107224
+ {
107225
+ var strValue=aryPrefix[i];
107226
+ if (!strValue) continue;
107227
+ if (shortSymbol.search(strValue)===0) return true;
107228
+ }
107229
+
107230
+ return false;
107231
+ },
107232
+
107198
107233
  IsChinaFutures:function(upperSymbol) //是否是国内期货 /期权
107199
107234
  {
107200
107235
  if (!upperSymbol) return false;
@@ -107309,15 +107344,26 @@ var MARKET_SUFFIX_NAME=
107309
107344
  return false;
107310
107345
  },
107311
107346
 
107347
+ //北交所股票代码全面启用“920”开头的六位数编码规则(如 920XXX),已于 2025 年 10 月 9 日完成存量与增量股票的统一切换,标志着其与新三板代码的脱钩。
107348
+ // 新代码通常将原 43、83、87 开头的旧代码前三位变更为 920,后三位保持不变
107312
107349
  IsBJStock:function(symbol) //北交所股票
107313
107350
  {
107314
107351
  if (!symbol) return false;
107315
107352
  var upperSymbol=symbol.toUpperCase();
107316
107353
  if (!this.IsBJ(upperSymbol)) return false;
107317
107354
 
107318
- var value=upperSymbol.charAt(0);
107355
+ if (upperSymbol.charAt(0)=='9' && upperSymbol.charAt(1)=='2' && upperSymbol.charAt(2)=='0') return true;
107356
+
107357
+ return false;
107358
+ },
107359
+
107360
+ IsBJIndex:function(symbol) //北交所指数 北交所指数代码通常以“899”开头,采用6位数字序列
107361
+ {
107362
+ if (!symbol) return false;
107363
+ var upperSymbol=symbol.toUpperCase();
107364
+ if (!this.IsBJ(upperSymbol)) return false;
107319
107365
 
107320
- if (value=='4' || value=='8') return true;
107366
+ if (upperSymbol.charAt(0)=='8' && upperSymbol.charAt(1)=='9' && upperSymbol.charAt(2)=='9') return true;
107321
107367
 
107322
107368
  return false;
107323
107369
  },
@@ -107333,11 +107379,11 @@ var MARKET_SUFFIX_NAME=
107333
107379
  return false;
107334
107380
  },
107335
107381
 
107336
- IsSHGEM:function(symbol) //创业板(growth enterprise market) 30开头
107382
+ IsSZGEM:function(symbol) //创业板(growth enterprise market) 30开头
107337
107383
  {
107338
107384
  if (!symbol) return false;
107339
107385
  var upperSymbol=symbol.toUpperCase();
107340
- if (!this.IsSH(upperSymbol)) return false;
107386
+ if (!this.IsSZ(upperSymbol)) return false;
107341
107387
  if (upperSymbol.charAt(0)=='3' && upperSymbol.charAt(1)=='0')
107342
107388
  return true;
107343
107389
 
@@ -107481,7 +107527,7 @@ var MARKET_SUFFIX_NAME=
107481
107527
  {
107482
107528
  if (!this.IsSHSZStockA(symbol)) return null;
107483
107529
  if (this.IsSHStockSTAR(symbol)) return {Max:0.2 , Min:-0.2}; //科创板 [20% - -20%]
107484
- if (this.IsSHGEM(symbol)) return { Max:0.2 , Min:-0.2}; //创业板 [20% - -20%]
107530
+ if (this.IsSZGEM(symbol)) return { Max:0.2 , Min:-0.2}; //创业板 [20% - -20%]
107485
107531
 
107486
107532
  if (!name) return null;
107487
107533
  if (name.indexOf('ST')>=0) return { Max:0.05, Min:-0.05 }; //ST 股票 [5% - -5%]
@@ -109398,6 +109444,7 @@ function FuturesTimeData()
109398
109444
  [MARKET_SUFFIX_NAME.SHFE + '-AO', {Time:4,Decimal:0,Name:'氧化铝'}],
109399
109445
  [MARKET_SUFFIX_NAME.SHFE + '-BR', {Time:6,Decimal:0,Name:'合成橡胶'}],
109400
109446
  [MARKET_SUFFIX_NAME.SHFE + '-AD', {Time:4,Decimal:0,Name:"铝合金"}],
109447
+ [MARKET_SUFFIX_NAME.SHFE + '-OP', {Time:6,Decimal:0,Name:"胶版印刷纸"}],
109401
109448
 
109402
109449
  //上期所-能源
109403
109450
  [MARKET_SUFFIX_NAME.SHFE + '-NR', {Time:6,Decimal:1,Name:'20号胶'}],
@@ -110959,59 +111006,6 @@ function GetfloatPrecision(symbol) //获取小数位数
110959
111006
  return defaultfloatPrecision;
110960
111007
  }
110961
111008
 
110962
- //把不连续的分时数据转成连续的分时数据
110963
- function GenerateMinuteStockJsonData(data)
110964
- {
110965
- var stock =
110966
- {
110967
- symbol:data.symbol, name:data.name,time:data.time, date:data.date,
110968
- price:data.price, open:data.open, yclose:data.yclose, high:data.high, low:data.low, vol:data.vol,amount:data.amount,
110969
- minute:[]
110970
- };
110971
-
110972
- var mapMinute=new Map();
110973
- for(var i in data.minute)
110974
- {
110975
- var item=data.minute[i];
110976
- mapMinute.set(item.time,item);
110977
- }
110978
-
110979
- var timeData=g_MinuteTimeStringData.GetTimeData(stock.symbol);
110980
- for(var i in timeData) //根据交易时间产生数据
110981
- {
110982
- var time=timeData[i];
110983
- var minuteItem={ time:time, vaild:false };
110984
- if (mapMinute.has(time))
110985
- {
110986
- var find=mapMinute.get(time);
110987
- minuteItem.vaild=true;
110988
- minuteItem.price=find.price;
110989
- minuteItem.open=find.open;
110990
- minuteItem.high=find.high;
110991
- minuteItem.low=find.low;
110992
- minuteItem.avprice=find.avprice;
110993
- minuteItem.vol=find.vol;
110994
- minuteItem.amount=find.amount;
110995
- if (IFrameSplitOperator.IsNumber(find.increase)) minuteItem.increase=find.increase;
110996
- if (IFrameSplitOperator.IsNumber(find.risefall)) minuteItem.risefall=find.risefall;
110997
- if (IFrameSplitOperator.IsNumber(find.position)) minuteItem.position=find.position;
110998
- }
110999
- stock.minute.push(minuteItem);
111000
- }
111001
-
111002
- var vaildCount=0;
111003
- for(var i=stock.minute.length-1;i>=0;--i)
111004
- {
111005
- vaildCount=i+1;
111006
- var item=stock.minute[i];
111007
- if (item.vaild==true) break;
111008
- }
111009
-
111010
- stock.minute=stock.minute.slice(0,vaildCount); //去掉最后无用的数据
111011
-
111012
- return stock;
111013
- }
111014
-
111015
111009
  function GetLocalTime(i) //得到标准时区的时间的函数
111016
111010
  {
111017
111011
  if (typeof i !== 'number') return;
@@ -111859,8 +111853,8 @@ var Character =
111859
111853
  (cp >= 0x41 && cp <= 0x5A) ||
111860
111854
  (cp >= 0x61 && cp <= 0x7A) ||
111861
111855
  (cp === 0x5C) ||
111862
- //【】▲▼
111863
- (cp===0x3010 || cp===0x3011 || cp===0x25B2 || cp===0x25BC) ||
111856
+ //【】▲▼ ↓↑←→
111857
+ (cp===0x3010 || cp===0x3011 || cp===0x25B2 || cp===0x25BC) || (cp>=0x2190 && cp<=0x2193) ||
111864
111858
  ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(Character.FromCodePoint(cp)));
111865
111859
  },
111866
111860
 
@@ -111871,8 +111865,8 @@ var Character =
111871
111865
  (cp >= 0x61 && cp <= 0x7A) ||
111872
111866
  (cp >= 0x30 && cp <= 0x39) ||
111873
111867
  (cp === 0x5C) || (cp===0x23) ||
111874
- //【】▲▼
111875
- (cp===0x3010 || cp===0x3011 || cp===0x25B2 || cp===0x25BC) ||
111868
+ //【】▲▼ ↓↑←→
111869
+ (cp===0x3010 || cp===0x3011 || cp===0x25B2 || cp===0x25BC) || (cp>=0x2190 && cp<=0x2193) ||
111876
111870
  ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(Character.FromCodePoint(cp)));
111877
111871
  },
111878
111872
 
@@ -143122,6 +143116,7 @@ function JSReportChartContainer(uielement)
143122
143116
  this.DestroyMinuteChartTooltip();
143123
143117
  this.DestroyKLineChartTooltip();
143124
143118
  this.DestroyFloatTooltip();
143119
+ this.DestroyPopMenu();
143125
143120
  }
143126
143121
 
143127
143122
  this.StopAutoDragScrollTimer=function()
@@ -143143,6 +143138,14 @@ function JSReportChartContainer(uielement)
143143
143138
  this.JSPopMenu.Inital();
143144
143139
  }
143145
143140
 
143141
+ this.DestroyPopMenu=function()
143142
+ {
143143
+ if (!this.JSPopMenu) return;
143144
+
143145
+ this.JSPopMenu.Destroy();
143146
+ this.JSPopMenu=null;
143147
+ }
143148
+
143146
143149
  this.InitalMinuteChartTooltip=function(option)
143147
143150
  {
143148
143151
  if (this.TooltipMinuteChart) return;
@@ -144454,61 +144457,75 @@ function JSReportChartContainer(uielement)
144454
144457
  if (item[80] || item[80]===null) stock.BGColor=item[80]; //整行背景色
144455
144458
  if (item[JSCHART_DATA_FIELD_ID.REPORT_EXTENDDATA]) stock.ExtendDataV2=item[JSCHART_DATA_FIELD_ID.REPORT_EXTENDDATA]; //扩展数据2
144456
144459
 
144460
+ function __Temp_IsNumberOrObject(value)
144461
+ {
144462
+ if (IFrameSplitOperator.IsNumber(value)) return true;
144463
+ if (IFrameSplitOperator.IsObject(value)) return true;
144464
+ return false;
144465
+ }
144466
+
144467
+ function __Temp_IsStringOrObject(value)
144468
+ {
144469
+ if (IFrameSplitOperator.IsString(value)) return true;
144470
+ if (IFrameSplitOperator.IsObject(value)) return true;
144471
+ return false;
144472
+ }
144473
+
144457
144474
  //10个数值型 101-199
144458
- if (IFrameSplitOperator.IsNumber(item[101])) stock.ReserveNumber1=item[101];
144459
- if (IFrameSplitOperator.IsNumber(item[102])) stock.ReserveNumber2=item[102];
144460
- if (IFrameSplitOperator.IsNumber(item[103])) stock.ReserveNumber3=item[103];
144461
- if (IFrameSplitOperator.IsNumber(item[104])) stock.ReserveNumber4=item[104];
144462
- if (IFrameSplitOperator.IsNumber(item[105])) stock.ReserveNumber5=item[105];
144463
- if (IFrameSplitOperator.IsNumber(item[106])) stock.ReserveNumber6=item[106];
144464
- if (IFrameSplitOperator.IsNumber(item[107])) stock.ReserveNumber7=item[107];
144465
- if (IFrameSplitOperator.IsNumber(item[108])) stock.ReserveNumber8=item[108];
144466
- if (IFrameSplitOperator.IsNumber(item[109])) stock.ReserveNumber9=item[109];
144467
- if (IFrameSplitOperator.IsNumber(item[110])) stock.ReserveNumber10=item[110];
144468
- if (IFrameSplitOperator.IsNumber(item[111])) stock.ReserveNumber11=item[111];
144469
- if (IFrameSplitOperator.IsNumber(item[112])) stock.ReserveNumber12=item[112];
144470
- if (IFrameSplitOperator.IsNumber(item[113])) stock.ReserveNumber13=item[113];
144471
- if (IFrameSplitOperator.IsNumber(item[114])) stock.ReserveNumber14=item[114];
144472
- if (IFrameSplitOperator.IsNumber(item[115])) stock.ReserveNumber15=item[115];
144473
- if (IFrameSplitOperator.IsNumber(item[116])) stock.ReserveNumber16=item[116];
144474
- if (IFrameSplitOperator.IsNumber(item[117])) stock.ReserveNumber17=item[117];
144475
- if (IFrameSplitOperator.IsNumber(item[118])) stock.ReserveNumber18=item[118];
144476
- if (IFrameSplitOperator.IsNumber(item[119])) stock.ReserveNumber19=item[119];
144477
- if (IFrameSplitOperator.IsNumber(item[120])) stock.ReserveNumber20=item[120];
144475
+ if (__Temp_IsNumberOrObject(item[101])) stock.ReserveNumber1=item[101];
144476
+ if (__Temp_IsNumberOrObject(item[102])) stock.ReserveNumber2=item[102];
144477
+ if (__Temp_IsNumberOrObject(item[103])) stock.ReserveNumber3=item[103];
144478
+ if (__Temp_IsNumberOrObject(item[104])) stock.ReserveNumber4=item[104];
144479
+ if (__Temp_IsNumberOrObject(item[105])) stock.ReserveNumber5=item[105];
144480
+ if (__Temp_IsNumberOrObject(item[106])) stock.ReserveNumber6=item[106];
144481
+ if (__Temp_IsNumberOrObject(item[107])) stock.ReserveNumber7=item[107];
144482
+ if (__Temp_IsNumberOrObject(item[108])) stock.ReserveNumber8=item[108];
144483
+ if (__Temp_IsNumberOrObject(item[109])) stock.ReserveNumber9=item[109];
144484
+ if (__Temp_IsNumberOrObject(item[110])) stock.ReserveNumber10=item[110];
144485
+ if (__Temp_IsNumberOrObject(item[111])) stock.ReserveNumber11=item[111];
144486
+ if (__Temp_IsNumberOrObject(item[112])) stock.ReserveNumber12=item[112];
144487
+ if (__Temp_IsNumberOrObject(item[113])) stock.ReserveNumber13=item[113];
144488
+ if (__Temp_IsNumberOrObject(item[114])) stock.ReserveNumber14=item[114];
144489
+ if (__Temp_IsNumberOrObject(item[115])) stock.ReserveNumber15=item[115];
144490
+ if (__Temp_IsNumberOrObject(item[116])) stock.ReserveNumber16=item[116];
144491
+ if (__Temp_IsNumberOrObject(item[117])) stock.ReserveNumber17=item[117];
144492
+ if (__Temp_IsNumberOrObject(item[118])) stock.ReserveNumber18=item[118];
144493
+ if (__Temp_IsNumberOrObject(item[119])) stock.ReserveNumber19=item[119];
144494
+ if (__Temp_IsNumberOrObject(item[120])) stock.ReserveNumber20=item[120];
144478
144495
 
144479
144496
  //10个字符型 201-299
144480
- if (IFrameSplitOperator.IsString(item[201]) || IFrameSplitOperator.IsObject(item[201])) stock.ReserveString1=item[201];
144481
- if (IFrameSplitOperator.IsString(item[202]) || IFrameSplitOperator.IsObject(item[202])) stock.ReserveString2=item[202];
144482
- if (IFrameSplitOperator.IsString(item[203]) || IFrameSplitOperator.IsObject(item[203])) stock.ReserveString3=item[203];
144483
- if (IFrameSplitOperator.IsString(item[204]) || IFrameSplitOperator.IsObject(item[204])) stock.ReserveString4=item[204];
144484
- if (IFrameSplitOperator.IsString(item[205]) || IFrameSplitOperator.IsObject(item[205])) stock.ReserveString5=item[205];
144485
- if (IFrameSplitOperator.IsString(item[206]) || IFrameSplitOperator.IsObject(item[206])) stock.ReserveString6=item[206];
144486
- if (IFrameSplitOperator.IsString(item[207]) || IFrameSplitOperator.IsObject(item[207])) stock.ReserveString7=item[207];
144487
- if (IFrameSplitOperator.IsString(item[208]) || IFrameSplitOperator.IsObject(item[208])) stock.ReserveString8=item[208];
144488
- if (IFrameSplitOperator.IsString(item[209]) || IFrameSplitOperator.IsObject(item[209])) stock.ReserveString9=item[209];
144489
- if (IFrameSplitOperator.IsString(item[210]) || IFrameSplitOperator.IsObject(item[210])) stock.ReserveString10=item[210];
144490
- if (IFrameSplitOperator.IsString(item[211]) || IFrameSplitOperator.IsObject(item[211])) stock.ReserveString11=item[211];
144491
- if (IFrameSplitOperator.IsString(item[212]) || IFrameSplitOperator.IsObject(item[212])) stock.ReserveString12=item[212];
144492
- if (IFrameSplitOperator.IsString(item[213]) || IFrameSplitOperator.IsObject(item[213])) stock.ReserveString13=item[213];
144493
- if (IFrameSplitOperator.IsString(item[214]) || IFrameSplitOperator.IsObject(item[214])) stock.ReserveString14=item[214];
144494
- if (IFrameSplitOperator.IsString(item[215]) || IFrameSplitOperator.IsObject(item[215])) stock.ReserveString15=item[215];
144495
- if (IFrameSplitOperator.IsString(item[216]) || IFrameSplitOperator.IsObject(item[216])) stock.ReserveString16=item[216];
144496
- if (IFrameSplitOperator.IsString(item[217]) || IFrameSplitOperator.IsObject(item[217])) stock.ReserveString17=item[217];
144497
- if (IFrameSplitOperator.IsString(item[218]) || IFrameSplitOperator.IsObject(item[218])) stock.ReserveString18=item[218];
144498
- if (IFrameSplitOperator.IsString(item[219]) || IFrameSplitOperator.IsObject(item[219])) stock.ReserveString19=item[219];
144499
- if (IFrameSplitOperator.IsString(item[220]) || IFrameSplitOperator.IsObject(item[220])) stock.ReserveString20=item[220];
144497
+ if (__Temp_IsStringOrObject(item[201])) stock.ReserveString1=item[201];
144498
+ if (__Temp_IsStringOrObject(item[202])) stock.ReserveString2=item[202];
144499
+ if (__Temp_IsStringOrObject(item[203])) stock.ReserveString3=item[203];
144500
+ if (__Temp_IsStringOrObject(item[204])) stock.ReserveString4=item[204];
144501
+ if (__Temp_IsStringOrObject(item[205])) stock.ReserveString5=item[205];
144502
+ if (__Temp_IsStringOrObject(item[206])) stock.ReserveString6=item[206];
144503
+ if (__Temp_IsStringOrObject(item[207])) stock.ReserveString7=item[207];
144504
+ if (__Temp_IsStringOrObject(item[208])) stock.ReserveString8=item[208];
144505
+ if (__Temp_IsStringOrObject(item[209])) stock.ReserveString9=item[209];
144506
+ if (__Temp_IsStringOrObject(item[210])) stock.ReserveString10=item[210];
144507
+ if (__Temp_IsStringOrObject(item[211])) stock.ReserveString11=item[211];
144508
+ if (__Temp_IsStringOrObject(item[212])) stock.ReserveString12=item[212];
144509
+ if (__Temp_IsStringOrObject(item[213])) stock.ReserveString13=item[213];
144510
+ if (__Temp_IsStringOrObject(item[214])) stock.ReserveString14=item[214];
144511
+ if (__Temp_IsStringOrObject(item[215])) stock.ReserveString15=item[215];
144512
+ if (__Temp_IsStringOrObject(item[216])) stock.ReserveString16=item[216];
144513
+ if (__Temp_IsStringOrObject(item[217])) stock.ReserveString17=item[217];
144514
+ if (__Temp_IsStringOrObject(item[218])) stock.ReserveString18=item[218];
144515
+ if (__Temp_IsStringOrObject(item[219])) stock.ReserveString19=item[219];
144516
+ if (__Temp_IsStringOrObject(item[220])) stock.ReserveString20=item[220];
144500
144517
 
144501
144518
  //10个进度条 301-350 { Value:, BGColor: }
144502
- if (IFrameSplitOperator.IsNumber(item[301]) || IFrameSplitOperator.IsObject(item[301])) stock.ReserveProgressBar1=item[301];
144503
- if (IFrameSplitOperator.IsNumber(item[302]) || IFrameSplitOperator.IsObject(item[302])) stock.ReserveProgressBar2=item[302];
144504
- if (IFrameSplitOperator.IsNumber(item[303]) || IFrameSplitOperator.IsObject(item[303])) stock.ReserveProgressBar3=item[303];
144505
- if (IFrameSplitOperator.IsNumber(item[304]) || IFrameSplitOperator.IsObject(item[304])) stock.ReserveProgressBar4=item[304];
144506
- if (IFrameSplitOperator.IsNumber(item[305]) || IFrameSplitOperator.IsObject(item[305])) stock.ReserveProgressBar5=item[305];
144507
- if (IFrameSplitOperator.IsNumber(item[306]) || IFrameSplitOperator.IsObject(item[306])) stock.ReserveProgressBar6=item[306];
144508
- if (IFrameSplitOperator.IsNumber(item[307]) || IFrameSplitOperator.IsObject(item[307])) stock.ReserveProgressBar7=item[307];
144509
- if (IFrameSplitOperator.IsNumber(item[308]) || IFrameSplitOperator.IsObject(item[308])) stock.ReserveProgressBar8=item[308];
144510
- if (IFrameSplitOperator.IsNumber(item[309]) || IFrameSplitOperator.IsObject(item[309])) stock.ReserveProgressBar9=item[309];
144511
- if (IFrameSplitOperator.IsNumber(item[310]) || IFrameSplitOperator.IsObject(item[310])) stock.ReserveProgressBar10=item[310];
144519
+ if (__Temp_IsNumberOrObject(item[301])) stock.ReserveProgressBar1=item[301];
144520
+ if (__Temp_IsNumberOrObject(item[302])) stock.ReserveProgressBar2=item[302];
144521
+ if (__Temp_IsNumberOrObject(item[303])) stock.ReserveProgressBar3=item[303];
144522
+ if (__Temp_IsNumberOrObject(item[304])) stock.ReserveProgressBar4=item[304];
144523
+ if (__Temp_IsNumberOrObject(item[305])) stock.ReserveProgressBar5=item[305];
144524
+ if (__Temp_IsNumberOrObject(item[306])) stock.ReserveProgressBar6=item[306];
144525
+ if (__Temp_IsNumberOrObject(item[307])) stock.ReserveProgressBar7=item[307];
144526
+ if (__Temp_IsNumberOrObject(item[308])) stock.ReserveProgressBar8=item[308];
144527
+ if (__Temp_IsNumberOrObject(item[309])) stock.ReserveProgressBar9=item[309];
144528
+ if (__Temp_IsNumberOrObject(item[310])) stock.ReserveProgressBar10=item[310];
144512
144529
 
144513
144530
  //10个按钮 351-400 { Title, Enable:, BGColor, TextColor: }
144514
144531
  if (IFrameSplitOperator.IsObject(item[351])) stock.ReserveButton1=item[351];
@@ -150478,6 +150495,14 @@ function ChartReport()
150478
150495
  if (!data || !fieldName) return;
150479
150496
 
150480
150497
  var value=data[fieldName];
150498
+ var compareValue=null;
150499
+ if (IFrameSplitOperator.IsObject(data[fieldName]))
150500
+ {
150501
+ var item=data[fieldName];
150502
+ if (IFrameSplitOperator.IsNumber(item.Value)) value=item.Value;
150503
+ if (IFrameSplitOperator.IsNumber(item.CompareValue)) compareValue=item.CompareValue;
150504
+ }
150505
+
150481
150506
  if (!IFrameSplitOperator.IsNumber(value)) return;
150482
150507
 
150483
150508
  if (IFrameSplitOperator.IsNumber(column.ColorType))
@@ -150494,6 +150519,11 @@ function ChartReport()
150494
150519
  {
150495
150520
  drawInfo.TextColor=this.GetUpDownColor(value,data.YClose);
150496
150521
  }
150522
+ else if (column.ColorType==4)
150523
+ {
150524
+ if (IFrameSplitOperator.IsNumber(compareValue))
150525
+ drawInfo.TextColor=this.GetUpDownColor(value,compareValue);
150526
+ }
150497
150527
  }
150498
150528
 
150499
150529
  var text=value.toFixed(column.FloatPrecision);
@@ -160818,6 +160848,7 @@ function JSDialogDrawTool()
160818
160848
  this.Close=function(e)
160819
160849
  {
160820
160850
  if (!this.DivDialog) return;
160851
+ if (!this.IsShow()) return;
160821
160852
 
160822
160853
  this.DivDialog.style.visibility='hidden';
160823
160854
 
@@ -161163,6 +161194,8 @@ function JSDialogModifyDraw()
161163
161194
  if (!this.DivDialog) return;
161164
161195
 
161165
161196
  this.ChartPicture=null;
161197
+ if (!this.IsShow()) return;
161198
+
161166
161199
  this.DivDialog.style.visibility='hidden';
161167
161200
 
161168
161201
  if (this.HQChart) this.HQChart.RestoreFocus(this.RestoreFocusDelay);
@@ -163308,6 +163341,21 @@ function JSPopKeyboard()
163308
163341
  var x=xRight-width;
163309
163342
  var y=ybottom-height;
163310
163343
 
163344
+ if (this.Keyboard.JSChart && this.Keyboard.JSChart.JSChartContainer)
163345
+ {
163346
+ var event=this.Keyboard.JSChart.JSChartContainer.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SHOW);
163347
+ if (event && event.Callback)
163348
+ {
163349
+ var data={ PreventDefault:false, Y:y, X:x, Height:height, Width:width };
163350
+ event.Callback(event, data, this);
163351
+ if (data.PreventDefault) return;
163352
+
163353
+ //修改显示位置
163354
+ x=data.X;
163355
+ y=data.Y;
163356
+ }
163357
+ }
163358
+
163311
163359
  this.DivDialog.style.visibility='visible';
163312
163360
  this.DivDialog.style.top = y + "px";
163313
163361
  this.DivDialog.style.left = x + "px";
@@ -163333,6 +163381,19 @@ function JSPopKeyboard()
163333
163381
  return this.DivDialog.style.visibility==='visible';
163334
163382
  }
163335
163383
 
163384
+ this.PopKeyboard=function(search)
163385
+ {
163386
+ if (!this.DivDialog) return;
163387
+ if (this.IsShow()) return;
163388
+
163389
+ this.Show();
163390
+ this.InputDOM.focus();
163391
+ if (this.InputDOM.value=="")
163392
+ {
163393
+ if (search) this.InputDOM.value=search;
163394
+ }
163395
+ }
163396
+
163336
163397
  this.OnGlobalKeydown=function(event)
163337
163398
  {
163338
163399
  if (!this.DivDialog) return;
@@ -169094,10 +169155,19 @@ function JSStatusBarChartContainer(uielement)
169094
169155
  var x = (e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;
169095
169156
  var y = (e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;
169096
169157
 
169097
- if (e && e.button==0) //左键点击
169158
+ if (e)
169098
169159
  {
169099
- var ptClick={ X:this.ClickDownPoint.X, Y:this.ClickDownPoint.Y };
169100
- this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_CLICK_STATUSBAR_ITEM, ptClick, e);
169160
+ if (e.button==0) //左键点击
169161
+ {
169162
+ var ptClick={ X:this.ClickDownPoint.X, Y:this.ClickDownPoint.Y };
169163
+ this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_CLICK_STATUSBAR_ITEM, ptClick, e);
169164
+ }
169165
+ else if (e.button==2) //右键点击
169166
+ {
169167
+ this.HideAllTooltip();
169168
+ var ptClick={ X:this.ClickDownPoint.X, Y:this.ClickDownPoint.Y };
169169
+ this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_RCLICK_STATUSBAR_ITEM, ptClick, e);
169170
+ }
169101
169171
  }
169102
169172
  }
169103
169173
 
@@ -169183,7 +169253,7 @@ function JSStatusBarChartContainer(uielement)
169183
169253
  {
169184
169254
  if (toolTip.Data)
169185
169255
  {
169186
- var data= { X:e.clientX, Y:e.clientY, Tooltip:toolTip };
169256
+ var data= { X:e.clientX, Y:e.clientY, Tooltip:toolTip, e:e };
169187
169257
  event.Callback(event, data, this);
169188
169258
  return true;
169189
169259
  }
@@ -169912,6 +169982,7 @@ function JSStockInfoChart(divElement)
169912
169982
  this.DivElement.JSChart=this; //div中保存一份
169913
169983
 
169914
169984
  if (option.EnableResize==true) this.CreateResizeListener();
169985
+ if (option.EnablePopMenuV2===true) chart.InitalPopMenu();
169915
169986
 
169916
169987
  if (option.Symbol)
169917
169988
  {
@@ -170113,6 +170184,8 @@ function JSStockInfoChartContainer(uielement)
170113
170184
  this.AutoUpdateTimer=null;
170114
170185
  this.AutoUpdateFrequency=15000; //15秒更新一次数据
170115
170186
 
170187
+ this.JSPopMenu; //内置菜单
170188
+
170116
170189
  this.UIElement=uielement;
170117
170190
 
170118
170191
  this.IsDestroy=false; //是否已经销毁了
@@ -170121,6 +170194,8 @@ function JSStockInfoChartContainer(uielement)
170121
170194
  {
170122
170195
  this.IsDestroy=true;
170123
170196
  this.StopAutoUpdate();
170197
+
170198
+ this.DestroyPopMenu();
170124
170199
  }
170125
170200
 
170126
170201
  //设置事件回调
@@ -170133,6 +170208,37 @@ function JSStockInfoChartContainer(uielement)
170133
170208
  this.mapEvent.set(object.event,data);
170134
170209
  }
170135
170210
 
170211
+ this.RemoveEventCallback=function(eventid)
170212
+ {
170213
+ if (!this.mapEvent.has(eventid)) return;
170214
+
170215
+ this.mapEvent.delete(eventid);
170216
+ }
170217
+
170218
+ this.GetEventCallback=function(id) //获取事件回调
170219
+ {
170220
+ if (!this.mapEvent.has(id)) return null;
170221
+ var item=this.mapEvent.get(id);
170222
+ return item;
170223
+ }
170224
+
170225
+ this.InitalPopMenu=function() //初始化弹出窗口
170226
+ {
170227
+ if (this.JSPopMenu) return;
170228
+
170229
+ this.JSPopMenu=new JSPopMenu(); //内置菜单
170230
+ this.JSPopMenu.Inital();
170231
+ }
170232
+
170233
+ this.DestroyPopMenu=function()
170234
+ {
170235
+ if (!this.JSPopMenu) return;
170236
+
170237
+ this.JSPopMenu.Destroy();
170238
+ this.JSPopMenu=null;
170239
+ }
170240
+
170241
+
170136
170242
  this.ClearData=function()
170137
170243
  {
170138
170244
  this.Data.Name=null;
@@ -170174,14 +170280,15 @@ function JSStockInfoChartContainer(uielement)
170174
170280
  {
170175
170281
  this.CancelAutoUpdate();
170176
170282
  this.ClearData();
170283
+ this.ChartClearMouseOnData();
170177
170284
  this.Symbol=symbol;
170178
170285
  this.Data.Symbol=symbol;
170179
170286
 
170180
170287
  if (option)
170181
170288
  {
170182
- if (IFrameSplitOperator.IsNonEmptyArray(option.Column)) this.SetColumn(option.Column);
170289
+ if (IFrameSplitOperator.IsArray(option.Column)) this.SetColumn(option.Column);
170183
170290
  if (IFrameSplitOperator.IsNumber(option.BuySellCount)) this.SetBuySellCount(option.BuySellCount);
170184
- if (IFrameSplitOperator.IsNonEmptyArray(option.MouseOnKey)) this.SetMouseOnKey(option.MouseOnKey);
170291
+ if (IFrameSplitOperator.IsArray(option.MouseOnKey)) this.SetMouseOnKey(option.MouseOnKey);
170185
170292
  }
170186
170293
 
170187
170294
  this.Draw();
@@ -170346,6 +170453,20 @@ function JSStockInfoChartContainer(uielement)
170346
170453
  this.ClickDownPoint={ X:e.clientX, Y:e.clientY };
170347
170454
  var x = (e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;
170348
170455
  var y = (e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;
170456
+
170457
+ if (e)
170458
+ {
170459
+ if (e.button==0) //左键点击
170460
+ {
170461
+ var ptClick={ X:this.ClickDownPoint.X, Y:this.ClickDownPoint.Y };
170462
+ this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_CLICK_STOCKINFO_ITEM, ptClick, e);
170463
+ }
170464
+ else if (e.button==2) //右键点击
170465
+ {
170466
+ var ptClick={ X:this.ClickDownPoint.X, Y:this.ClickDownPoint.Y };
170467
+ this.TryClickPaintEvent(JSCHART_EVENT_ID.ON_RCLICK_STOCKINFO_ITEM, ptClick, e);
170468
+ }
170469
+ }
170349
170470
  }
170350
170471
 
170351
170472
  this.UIOnContextMenu=function(e)
@@ -170356,6 +170477,87 @@ function JSStockInfoChartContainer(uielement)
170356
170477
  if (e.stopPropagation) e.stopPropagation();
170357
170478
  e.returnValue=false;
170358
170479
  }
170480
+
170481
+ var x = e.clientX-this.UIElement.getBoundingClientRect().left;
170482
+ var y = e.clientY-this.UIElement.getBoundingClientRect().top;
170483
+
170484
+ this.OnRightMenu(x, y, e);
170485
+ }
170486
+
170487
+ this.OnRightMenu=function(x,y,e)
170488
+ {
170489
+ if (!this.JSPopMenu) return;
170490
+
170491
+ var pixelTatio = GetDevicePixelRatio();
170492
+ var toolTip=new TooltipData();
170493
+ var data=null;
170494
+ for(var i=0;i<this.ChartPaint.length;++i)
170495
+ {
170496
+ var item=this.ChartPaint[i];
170497
+ if (item.GetTooltipData(x*pixelTatio,y*pixelTatio,toolTip))
170498
+ {
170499
+ if (toolTip.Data)
170500
+ {
170501
+ data= { Cell:toolTip.Data};
170502
+ break;
170503
+ }
170504
+ }
170505
+ }
170506
+
170507
+ if (!data) return;
170508
+
170509
+ data.e=e;
170510
+ var menuData={ Menu:null, Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID };
170511
+ menuData.ClickCallback=(data)=>{ this.OnClickRightMenu(data); }
170512
+
170513
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_RIGHT_MENU);
170514
+ if (event && event.Callback)
170515
+ {
170516
+ var sendData={ MenuData:menuData, Data:data };
170517
+ event.Callback(event, sendData, this);
170518
+ }
170519
+
170520
+ if (menuData.Menu) this.PopupMenuByRClick(menuData, x, y);
170521
+ }
170522
+
170523
+ //右键菜单
170524
+ this.PopupMenuByRClick=function(menuData, x, y)
170525
+ {
170526
+ if (!this.JSPopMenu) return;
170527
+
170528
+ var rtClient=this.UIElement.getBoundingClientRect();
170529
+ var rtScroll=GetScrollPosition();
170530
+
170531
+ x+=rtClient.left+rtScroll.Left;
170532
+ y+=rtClient.top+rtScroll.Top;
170533
+
170534
+ this.JSPopMenu.CreatePopMenu(menuData);
170535
+ this.JSPopMenu.PopupMenuByRight(x,y);
170536
+ }
170537
+
170538
+ //点击右键菜单
170539
+ this.OnClickRightMenu=function(data)
170540
+ {
170541
+ JSConsole.Chart.Log('[JSStockInfoChartContainer::OnClickRightMenu] ',data);
170542
+ if (!data || !data.Data) return;
170543
+
170544
+ var cmdID=data.Data.ID; //命令ID
170545
+ var aryArgs=data.Data.Args; //参数
170546
+
170547
+ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MENU_COMMAND); //回调通知外部
170548
+ if (event && event.Callback)
170549
+ {
170550
+ var data={ PreventDefault:false, CommandID:cmdID, Args:aryArgs, SrcData:data };
170551
+ event.Callback(event,data,this);
170552
+ if (data.PreventDefault) return;
170553
+ }
170554
+
170555
+ this.ExecuteMenuCommand(cmdID, aryArgs);
170556
+ }
170557
+
170558
+ this.ExecuteMenuCommand=function(cmdID, aryArgs)
170559
+ {
170560
+
170359
170561
  }
170360
170562
 
170361
170563
  this.UIOnMouseMove=function(e)
@@ -170385,6 +170587,36 @@ function JSStockInfoChartContainer(uielement)
170385
170587
  return false;
170386
170588
  }
170387
170589
 
170590
+ this.TryClickPaintEvent=function(eventID, ptClick, e)
170591
+ {
170592
+ var event=this.GetEventCallback(eventID);
170593
+ if (!event) return false;
170594
+
170595
+ if (ptClick.X==e.clientX && ptClick.Y==e.clientY)
170596
+ {
170597
+ var pixelTatio = GetDevicePixelRatio();
170598
+ var x = (e.clientX-uielement.getBoundingClientRect().left)*pixelTatio;
170599
+ var y = (e.clientY-uielement.getBoundingClientRect().top)*pixelTatio;
170600
+
170601
+ var toolTip=new TooltipData();
170602
+ for(var i=0;i<this.ChartPaint.length;++i)
170603
+ {
170604
+ var item=this.ChartPaint[i];
170605
+ if (item.GetTooltipData(x,y,toolTip))
170606
+ {
170607
+ if (toolTip.Data)
170608
+ {
170609
+ var data= { X:e.clientX, Y:e.clientY, Tooltip:toolTip };
170610
+ event.Callback(event, data, this);
170611
+ return true;
170612
+ }
170613
+ }
170614
+ }
170615
+ }
170616
+
170617
+ return false;
170618
+ }
170619
+
170388
170620
  this.UIOnMouseleave=function(e)
170389
170621
  {
170390
170622
  var option={ Update:false }
@@ -170670,7 +170902,7 @@ function ChartStockData()
170670
170902
 
170671
170903
  this.ClearMouseOnData=function(option)
170672
170904
  {
170673
- if (!this.MouseOnItem)
170905
+ if (this.MouseOnItem)
170674
170906
  {
170675
170907
  this.MouseOnItem=null;
170676
170908
  if (option) option.Update=true; //需要更新
@@ -170749,6 +170981,26 @@ function ChartStockData()
170749
170981
  return false;
170750
170982
  }
170751
170983
 
170984
+ this.GetTooltipData=function(x,y,tooltip)
170985
+ {
170986
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryCellRect)) return false;
170987
+
170988
+ for(var i=0;i<this.AryCellRect.length;++i)
170989
+ {
170990
+ var item=this.AryCellRect[i];
170991
+ var rect=item.Rect;
170992
+ if (Path2DHelper.PtInRect(x,y, rect))
170993
+ {
170994
+ tooltip.Data=item;
170995
+ tooltip.ChartPaint=this;
170996
+ tooltip.Type=151;
170997
+ return true;
170998
+ }
170999
+ }
171000
+
171001
+ return false;
171002
+ }
171003
+
170752
171004
  this.Draw=function()
170753
171005
  {
170754
171006
  this.AryCellRect=[];
@@ -171250,7 +171502,7 @@ function ChartStockData()
171250
171502
 
171251
171503
 
171252
171504
 
171253
- var HQCHART_VERSION="1.1.15454";
171505
+ var HQCHART_VERSION="1.1.15479";
171254
171506
 
171255
171507
  function PrintHQChartVersion()
171256
171508
  {