hqchart 1.1.14084 → 1.1.14097

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.
@@ -4022,9 +4022,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4022
4022
  this.CacheCanvasElement=null;
4023
4023
  if (bCacheCanvas) this.CacheCanvasElement=document.createElement("canvas");
4024
4024
 
4025
- //改参数div
4026
- this.ModifyIndexDialog=new ModifyIndexDialog(divElement);
4027
-
4028
4025
  //额外的画布
4029
4026
  this.MapExtraCanvasElement=new Map(); //key=画布名字, value={ Element:, Canvas:}
4030
4027
 
@@ -4257,9 +4254,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4257
4254
  if (option.EventCallback) this.SetEventCallback(chart, option.EventCallback);
4258
4255
  if (option.NetworkFilter) chart.NetworkFilter=option.NetworkFilter;
4259
4256
 
4260
- //创建改参数div
4261
- chart.ModifyIndexDialog=this.ModifyIndexDialog;
4262
-
4263
4257
  var pixelRatio=GetDevicePixelRatio();
4264
4258
 
4265
4259
  //右键菜单
@@ -4709,9 +4703,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4709
4703
  {
4710
4704
  var chart=new CustomKLineChartContainer(this.CanvasElement);
4711
4705
 
4712
- //创建改参数div
4713
- chart.ModifyIndexDialog=this.ModifyIndexDialog;
4714
-
4715
4706
  //右键菜单
4716
4707
  if (IFrameSplitOperator.IsBool(option.IsShowRightMenu)) chart.IsShowRightMenu=option.IsShowRightMenu;
4717
4708
 
@@ -4812,8 +4803,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4812
4803
  if (option.EventCallback) this.SetEventCallback(chart, option.EventCallback);
4813
4804
  if (option.NetworkFilter) chart.NetworkFilter=option.NetworkFilter;
4814
4805
 
4815
- chart.ModifyIndexDialog=this.ModifyIndexDialog;
4816
-
4817
4806
  var pixelRatio=GetDevicePixelRatio();
4818
4807
 
4819
4808
  var windowsCount=2;
@@ -5392,9 +5381,6 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5392
5381
  if (option.NetworkFilter) chart.NetworkFilter=option.NetworkFilter;
5393
5382
  if (option.IsApiPeriod==true) chart.IsApiPeriod=option.IsApiPeriod;
5394
5383
 
5395
- //创建改参数div
5396
- chart.ModifyIndexDialog=this.ModifyIndexDialog;
5397
-
5398
5384
  if (option.ScriptError) chart.ScriptErrorCallback=option.ScriptError;
5399
5385
 
5400
5386
  if (option.KLine) //k线图的属性设置
@@ -5692,6 +5678,9 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5692
5678
  if (option.SelectRectDialog && option.SelectRectDialog.Enable)
5693
5679
  chart.InitalSelectRectDialog(option.SelectRectDialog);
5694
5680
 
5681
+ if (option.ModifyIndexParamDialog && option.ModifyIndexParamDialog.Enable)
5682
+ chart.InitalModifyIndexParamDialog(option.ModifyIndexParamDialog);
5683
+
5695
5684
  if (option.SearchIndexDialog && option.SearchIndexDialog.Enable)
5696
5685
  chart.InitalSearchIndexDialog(option.SearchIndexDialog);
5697
5686
 
@@ -6790,6 +6779,9 @@ var JSCHART_MENU_ID=
6790
6779
 
6791
6780
  CMD_DIALOG_TOOLTIP_ATTRIBUTE:65, //修改K线信息框属性 Ary:[{ Enable:, Style:}, ]
6792
6781
  CMD_KLINE_TOOLTIP_ATTRIBUTE:66, //修改K线提示框属性 Ary:[{ Enable:true/false, EnableKeyDown:true/false}]
6782
+
6783
+ CMD_MODIFY_INDEX_PARAM:67, //指标删除修改 [windowIndex, ]
6784
+ CMD_MODIFY_OVERLAY_INDEX_PARAM:68, //叠加指标修改 [windowIndex, ID ]
6793
6785
  }
6794
6786
 
6795
6787
 
@@ -7018,6 +7010,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7018
7010
  this.DialogSelectRect; //区间统计
7019
7011
  this.FloatTooltip; //浮动tooltip信息
7020
7012
  this.DialogSearchIndex; //指标搜索
7013
+ this.DialogModifyIndexParam; //指标参数修改
7021
7014
 
7022
7015
 
7023
7016
  this.ClearStockCache=function()
@@ -7087,6 +7080,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7087
7080
  this.DialogSearchIndex.Create();
7088
7081
  }
7089
7082
 
7083
+ this.InitalModifyIndexParamDialog=function(option)
7084
+ {
7085
+ if (this.DialogModifyIndexParam) return;
7086
+
7087
+ this.DialogModifyIndexParam=new JSDialogModifyIndexParam();
7088
+ this.DialogModifyIndexParam.Inital(this, option);
7089
+ this.DialogModifyIndexParam.Create();
7090
+ }
7091
+
7090
7092
  this.ShowChangeIndexDialog=function(data)
7091
7093
  {
7092
7094
  if (!data) return;
@@ -7106,6 +7108,46 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
7106
7108
  this.DialogSearchIndex.SetOpData(data);
7107
7109
  this.DialogSearchIndex.Show();
7108
7110
  }
7111
+
7112
+ //添加指标窗口
7113
+ this.ShowAddIndexWindowDialog=function(option)
7114
+ {
7115
+ if (!this.DialogSearchIndex) return;
7116
+ var data=option;
7117
+ if (!data) data={ };
7118
+
7119
+ data.OpType=3;
7120
+
7121
+ data.Title=`增加指标窗口`;
7122
+ this.DialogSearchIndex.SetOpData(data);
7123
+ this.DialogSearchIndex.Show();
7124
+ }
7125
+
7126
+ this.ShowModifyIndexParamDialog=function(data)
7127
+ {
7128
+ if (!this.DialogModifyIndexParam) return;
7129
+
7130
+ if (data.Type==1)
7131
+ {
7132
+ var indexScript=this.WindowIndex[data.WindowIndex];
7133
+ if (!indexScript) return;
7134
+
7135
+ data.IndexScript=indexScript;
7136
+ data.Title=`[${indexScript.Name}]参数修改 窗口[${data.WindowIndex+1}]`;
7137
+ }
7138
+ else if (data.Type==2)
7139
+ {
7140
+ var overlayIndex=this.GetOverlayIndexByIdentify(data.Identify);
7141
+ if (!overlayIndex || !overlayIndex.OverlayItem.Script) return;
7142
+ var indexScript=overlayIndex.OverlayItem.Script;
7143
+
7144
+ data.IndexScript=indexScript;
7145
+ data.Title=`[${indexScript.Name}]参数修改 叠加窗口[${data.WindowIndex+1}]`;
7146
+ }
7147
+
7148
+ this.DialogModifyIndexParam.SetIndexData(data);
7149
+ this.DialogModifyIndexParam.Show();
7150
+ }
7109
7151
 
7110
7152
 
7111
7153
  this.DrawSelectRectDialog=function()
@@ -12742,6 +12784,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12742
12784
  if (IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace)) frame.IndexParamSpace=windowItem.IndexParamSpace;
12743
12785
  if (IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace)) frame.IndexTitleSpace=windowItem.IndexTitleSpace;
12744
12786
  if (!IFrameSplitOperator.IsUndefined(windowItem.HorizontalReserved)) frame.HorizontalReserved=windowItem.HorizontalReserved; //Y轴上下预留
12787
+ if (IFrameSplitOperator.IsBool(windowItem.IsShowNameArrow)) frame.IsShowNameArrow=windowItem.IsShowNameArrow;
12745
12788
  }
12746
12789
 
12747
12790
  if (frameItem)
@@ -13981,6 +14024,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13981
14024
  if (IFrameSplitOperator.IsBool(option.Enable)) this.KLineTooltipConfig.Enable=option.Enable;
13982
14025
  if (IFrameSplitOperator.IsBool(option.EnableKeyDown)) this.KLineTooltipConfig.EnableKeyDown=option.EnableKeyDown;
13983
14026
  break;
14027
+ case JSCHART_MENU_ID.CMD_MODIFY_INDEX_PARAM:
14028
+ if (param==null) return false;
14029
+ var sendData={ e:null, WindowIndex:param, Type:1 }
14030
+ this.ShowModifyIndexParamDialog(sendData);
14031
+ break;
14032
+ case JSCHART_MENU_ID.CMD_MODIFY_OVERLAY_INDEX_PARAM:
14033
+ if (param==null) return false;
14034
+ if (!aryArgs[1]) return false;
14035
+ var sendData={ e:null, WindowIndex:param, Type:2, Identify:aryArgs[1] };
14036
+ this.ShowModifyIndexParamDialog(sendData);
14037
+ break;
13984
14038
  }
13985
14039
  }
13986
14040
 
@@ -13994,6 +14048,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13994
14048
  return data;
13995
14049
  }
13996
14050
 
14051
+ this.GetModifyIndexMenuData=function(windowIndex)
14052
+ {
14053
+ var data= { Name:"参数修改", Data:{ ID: JSCHART_MENU_ID.CMD_MODIFY_INDEX_PARAM, Args:[windowIndex] } };
14054
+ return data;
14055
+ }
14056
+
13997
14057
  this.GetShowOverlayIndexMenuData=function(indexGuid, showType)
13998
14058
  {
13999
14059
  var overlay=this.GetOverlayIndexByIdentify(indexGuid);
@@ -14005,6 +14065,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
14005
14065
  return data;
14006
14066
  }
14007
14067
 
14068
+ this.GetModifyOverlayIndexMenuData=function(indexGuid)
14069
+ {
14070
+ var overlay=this.GetOverlayIndexByIdentify(indexGuid);
14071
+ if (!overlay) return null;
14072
+
14073
+ var data= { Name:"参数修改", Data:{ ID: JSCHART_MENU_ID.CMD_MODIFY_OVERLAY_INDEX_PARAM, Args:[overlay.WindowIndex,indexGuid] } };
14074
+ return data;
14075
+ }
14076
+
14008
14077
  this.GetShowOverlayIndexYAxisMenuData=function(indexGuid, showType)
14009
14078
  {
14010
14079
  var overlay=this.GetOverlayIndexByIdentify(indexGuid);
@@ -17881,7 +17950,6 @@ function MinuteFrame()
17881
17950
  this.ExportData=g_JSChartResource.MinuteToolbar.ExportData; //是否显示'导出数据'菜单
17882
17951
  this.OverlayIndex=g_JSChartResource.MinuteToolbar.OverlayIndex; //是否显示叠加指标
17883
17952
 
17884
- this.ModifyIndexEvent; //改参数 点击事件
17885
17953
  this.ToolbarRect=null; //保存工具条的位置
17886
17954
  this.IsShowPositionTitle=false; //是否显示持仓标题
17887
17955
 
@@ -20310,7 +20378,6 @@ function KLineFrame()
20310
20378
 
20311
20379
  this.SelBorderColor=g_JSChartResource.SelFrameBorderColor;
20312
20380
 
20313
- this.ModifyIndexEvent; //改参数 点击事件
20314
20381
  this.ToolbarRect=null; //保存工具条的位置
20315
20382
  this.ReDrawToolbar=false;
20316
20383
 
@@ -38030,6 +38097,13 @@ function ChartStickLine()
38030
38097
  return (this.BarType==1 || this.BarType==-1);
38031
38098
  }
38032
38099
 
38100
+ this.CalculateBarHeight=function(y,y2)
38101
+ {
38102
+ var barHeight=Math.abs(y-y2);
38103
+ if (barHeight<=0) barHeight=1;
38104
+ return barHeight;
38105
+ }
38106
+
38033
38107
  this.Draw=function()
38034
38108
  {
38035
38109
  if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
@@ -38169,7 +38243,7 @@ function ChartStickLine()
38169
38243
  }
38170
38244
  else
38171
38245
  {
38172
- this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(Math.min(y,y2)),ToFixedRect(width),ToFixedRect(Math.abs(y-y2)));
38246
+ this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(Math.min(y,y2)),ToFixedRect(width),ToFixedRect(this.CalculateBarHeight(y,y2)));
38173
38247
  }
38174
38248
  }
38175
38249
  }
@@ -38196,9 +38270,14 @@ function ChartStickLine()
38196
38270
  else
38197
38271
  {
38198
38272
  if (isHScreen)
38273
+ {
38199
38274
  this.Canvas.fillRect(ToFixedRect(Math.min(y,y2)),ToFixedRect(xOffset),ToFixedRect(Math.abs(y-y2)),ToFixedRect(dataWidth));
38275
+ }
38200
38276
  else
38201
- this.Canvas.fillRect(ToFixedRect(xOffset),ToFixedRect(Math.min(y,y2)),ToFixedRect(dataWidth),ToFixedRect(Math.abs(y-y2)));
38277
+ {
38278
+ this.Canvas.fillRect(ToFixedRect(xOffset),ToFixedRect(Math.min(y,y2)),ToFixedRect(dataWidth),ToFixedRect(this.CalculateBarHeight(y,y2)));
38279
+ }
38280
+
38202
38281
  }
38203
38282
  }
38204
38283
  else
@@ -38214,8 +38293,9 @@ function ChartStickLine()
38214
38293
  {
38215
38294
  var xFix=parseInt(x.toString())+0.5;
38216
38295
  this.Canvas.beginPath();
38217
- this.Canvas.moveTo(xFix,y);
38218
- this.Canvas.lineTo(xFix,y2);
38296
+ this.Canvas.moveTo(xFix,y);
38297
+ if (Math.abs(y-y2)>0) this.Canvas.lineTo(xFix,y2);
38298
+ else this.Canvas.lineTo(xFix,y+1); //太窄了,就画一个像素的宽度
38219
38299
  this.Canvas.stroke();
38220
38300
  }
38221
38301
  }
@@ -52301,6 +52381,17 @@ IFrameSplitOperator.RemoveZero=function(strValue)
52301
52381
  return strValue;
52302
52382
  }
52303
52383
 
52384
+ //移除代码市场后缀
52385
+ IFrameSplitOperator.RemoveMarketSuffix=function(symbol)
52386
+ {
52387
+ if (!symbol) return symbol;
52388
+
52389
+ var pos=symbol.lastIndexOf(".");
52390
+ if (pos>0) return symbol.substring(0,pos);
52391
+
52392
+ return symbol;
52393
+ }
52394
+
52304
52395
  function FrameSplitKLinePriceY()
52305
52396
  {
52306
52397
  this.newMethod=IFrameSplitOperator; //派生
@@ -73284,6 +73375,17 @@ function JSChartResource()
73284
73375
  InputTextColor:"rgb(0,0,0)"
73285
73376
  };
73286
73377
 
73378
+ this.DialogModifyIndexParam=
73379
+ {
73380
+ BGColor:'rgb(250,250,250)', //背景色
73381
+ BorderColor:'rgb(20,20,20)', //边框颜色
73382
+ TitleColor:'rgb(250,250,250)', //标题颜色
73383
+ TitleBGColor:"rgb(200, 66, 69)", //标题背景颜色
73384
+
73385
+ ParamNameColor:"rgb(0,0,0)", //数值名称
73386
+ InputTextColor:"rgb(0,0,0)"
73387
+ };
73388
+
73287
73389
  //弹幕
73288
73390
  this.Barrage= {
73289
73391
  Font:16*GetDevicePixelRatio() +'px 微软雅黑', //字体
@@ -73698,7 +73800,7 @@ function JSChartResource()
73698
73800
  SortIcon:
73699
73801
  {
73700
73802
  Size:12, Family:"iconfont",
73701
- Arrow:[null, "\ue6b2", "\ue6b1"],
73803
+ Arrow:[null, "\ue6b2", "\ue6b1"], //[0]=默认排序的图标背景色
73702
73804
  Color:[null, "rgb(255,0,0)", "rgb(255,0,0)"],
73703
73805
  Margin:{ Left:0, Bottom:6 }
73704
73806
  },
@@ -77446,8 +77548,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
77446
77548
  frame.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
77447
77549
  frame.GlobalOption=this.GlobalOption;
77448
77550
 
77449
- if (this.ModifyIndexDialog) frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal; //绑定菜单事件
77450
-
77451
77551
  frame.HorizontalMax=20;
77452
77552
  frame.HorizontalMin=10;
77453
77553
 
@@ -77530,8 +77630,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
77530
77630
  frame.GetEventCallback=(id)=> { return this.GetEventCallback(id); };
77531
77631
  frame.GlobalOption=this.GlobalOption;
77532
77632
 
77533
- if (this.ModifyIndexDialog) frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal; //绑定菜单事件
77534
-
77535
77633
  frame.HorizontalMax=20;
77536
77634
  frame.HorizontalMin=10;
77537
77635
  frame.YSplitOperator=new FrameSplitY();
@@ -83516,9 +83614,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
83516
83614
  {
83517
83615
  var id=button.IndexID;
83518
83616
  var frame=button.Frame;
83519
- e.data={ Chart:this, Identify:id, IsOverlay:true };
83520
- if (frame.ModifyIndexEvent)
83521
- frame.ModifyIndexEvent(e);
83617
+ var sendData={ e:e, WindowIndex:frame.Identify, Type:2, Identify:id };
83618
+ this.ShowModifyIndexParamDialog(sendData);
83522
83619
  }
83523
83620
  else if (button.ID==JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW)
83524
83621
  {
@@ -83539,9 +83636,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
83539
83636
  else if (button.ID==JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM)
83540
83637
  {
83541
83638
  var frame=button.Frame;
83542
- e.data={ Chart:this, Identify:frame.Identify, IsOverlay:false };
83543
- if (frame.ModifyIndexEvent)
83544
- frame.ModifyIndexEvent(e);
83639
+ var sendData={ e:e, WindowIndex:frame.Identify, Type:1 }
83640
+ this.ShowModifyIndexParamDialog(sendData);
83545
83641
  }
83546
83642
  else if (button.ID==JSCHART_BUTTON_ID.OVERLAY_INDEX)
83547
83643
  {
@@ -84353,9 +84449,9 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
84353
84449
  {
84354
84450
  var id=button.IndexID;
84355
84451
  var frame=button.Frame;
84356
- e.data={ Chart:this, Identify:id, IsOverlay:true };
84357
- if (frame.ModifyIndexEvent)
84358
- frame.ModifyIndexEvent(e);
84452
+ var sendData={ e:e, WindowIndex:frame.Identify, Type:2, Identify:id };
84453
+ this.ShowModifyIndexParamDialog(sendData);
84454
+
84359
84455
  }
84360
84456
  else if (button.ID==JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW)
84361
84457
  {
@@ -84371,9 +84467,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
84371
84467
  else if (button.ID==JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM)
84372
84468
  {
84373
84469
  var frame=button.Frame;
84374
- e.data={ Chart:this, Identify:frame.Identify, IsOverlay:false };
84375
- if (frame.ModifyIndexEvent)
84376
- frame.ModifyIndexEvent(e);
84470
+ var sendData={ e:e, WindowIndex:frame.Identify, Type:1 }
84471
+ this.ShowModifyIndexParamDialog(sendData);
84377
84472
  }
84378
84473
  else if (button.ID==JSCHART_BUTTON_ID.OVERLAY_INDEX)
84379
84474
  {
@@ -86140,7 +86235,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86140
86235
 
86141
86236
  if (i>=2)
86142
86237
  {
86143
- if (this.ModifyIndexDialog) frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal; //绑定菜单事件
86238
+
86144
86239
  }
86145
86240
 
86146
86241
  var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];
@@ -86227,12 +86322,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
86227
86322
  frame.GlobalOption=this.GlobalOption;
86228
86323
  frame.HQChart=this;
86229
86324
  frame.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
86230
-
86231
-
86232
- if (id>=2)
86233
- {
86234
- if (this.ModifyIndexDialog) frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal; //绑定菜单事件
86235
- }
86236
86325
 
86237
86326
  var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];
86238
86327
  frame.HorizontalMax=DEFAULT_HORIZONTAL[0];
@@ -91805,8 +91894,6 @@ function KLineChartHScreenContainer(uielement)
91805
91894
  frame.Identify=i; //窗口序号
91806
91895
  frame.RightSpaceCount=this.RightSpaceCount; //右边
91807
91896
 
91808
- if (this.ModifyIndexDialog) frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal; //绑定菜单事件
91809
-
91810
91897
  frame.HorizontalMax=20;
91811
91898
  frame.HorizontalMin=10;
91812
91899
 
@@ -94411,230 +94498,6 @@ function IDivDialog(divElement)
94411
94498
  }
94412
94499
  }
94413
94500
 
94414
-
94415
- //修改指标
94416
- function ModifyIndexDialog(divElement)
94417
- {
94418
- this.newMethod=IDivDialog; //派生
94419
- this.newMethod(divElement);
94420
- delete this.newMethod;
94421
-
94422
- this.Title={ ID:Guid() }; //标题
94423
- this.ParamList={ID:Guid() }; //参数列表 class='parameter-content'
94424
- this.ParamData=[]; //{ ID:参数ID, Value:参数值}
94425
- this.Identify;
94426
- this.HQChart;
94427
- this.IsOverlay=false; //是否是叠加指标
94428
-
94429
- this.IndexScript;
94430
-
94431
- //创建
94432
- this.Create=function()
94433
- {
94434
- this.ID=Guid();
94435
-
94436
- var div=document.createElement('div');
94437
- div.className='jchart-modifyindex-box';
94438
- div.id=this.ID;
94439
- div.innerHTML=
94440
- "<div class='parameter'>\
94441
- <div class='parameter-header'>\
94442
- <span></span>\
94443
- <strong id='close' class='icon iconfont icon-close'></strong>\
94444
- </div>\
94445
- <div class='parameter-content'><input/>MA</div>\
94446
- <div class='parameter-footer'>\
94447
- <button class='submit' >确定</button>\
94448
- <button class='cancel' >取消</button>\
94449
- </div>\
94450
- </div>";
94451
-
94452
- this.DivElement.appendChild(div);
94453
-
94454
- //确定按钮
94455
- $("#"+this.ID+" .submit").click(
94456
- {
94457
- divBox:this,
94458
- },
94459
- function(event)
94460
- {
94461
- event.data.divBox.Hide();
94462
- });
94463
-
94464
- //给一个id 后面查找方便
94465
- var titleElement=div.getElementsByTagName('span')[0];
94466
- titleElement.id=this.Title.ID;
94467
-
94468
- var paramListElement=div.getElementsByClassName('parameter-content')[0];
94469
- paramListElement.id=this.ParamList.ID;
94470
- }
94471
-
94472
- //设置标题
94473
- this.SetTitle=function(title)
94474
- {
94475
- $("#"+this.Title.ID).html(title);
94476
- }
94477
-
94478
- //清空参数
94479
- this.ClearParamList=function()
94480
- {
94481
- $("#"+this.ParamList.ID).empty();
94482
- this.ParamData=[];
94483
- }
94484
-
94485
- this.BindParam=function()
94486
- {
94487
- for(var i=0; i<this.IndexScript.Arguments.length; ++i)
94488
- {
94489
- var item=this.IndexScript.Arguments[i];
94490
- if (item.Name==null || isNaN(item.Value)) break;
94491
-
94492
- var guid=Guid();
94493
- var param = '<input class="row-line" id="'+guid+'" value="'+item.Value+'" type="number" step="1"/>'+ item.Name +'<br>';
94494
- $("#"+this.ParamList.ID).append(param);
94495
-
94496
- this.ParamData.push({ID:guid,Value:item.Value});
94497
- }
94498
-
94499
- //绑定参数修改事件
94500
- var self=this;
94501
- for(var i=0; i<this.ParamData.length; ++i)
94502
- {
94503
- var item=this.ParamData[i];
94504
- $("#"+item.ID).mouseup(
94505
- {
94506
- ParamIndex:i //参数序号
94507
- },
94508
- function(event)
94509
- {
94510
- var value = parseInt($(this).val()); //获取当前操作的input属性值,转化为整型
94511
- if (!IFrameSplitOperator.IsNumber(value))
94512
- {
94513
- alert("参数不能为空");
94514
- return;
94515
- }
94516
- var chart=self.HQChart;
94517
- var identify=self.Identify;
94518
- var paramIndex=event.data.ParamIndex;
94519
- var script=self.IndexScript;
94520
- var isOverlay=self.IsOverlay;
94521
-
94522
- script.Arguments[paramIndex].Value = value; //为参数属性重新赋值
94523
- if (isOverlay) chart.UpdateOverlayIndex(identify);
94524
- else chart.UpdateWindowIndex(identify); //调用更新窗口指标函数,参数用来定位窗口
94525
- }
94526
- )
94527
-
94528
- $("#"+item.ID).keyup(
94529
- {
94530
- ParamIndex:i //参数序号
94531
- },
94532
- function(event)
94533
- {
94534
- var value = parseInt($(this).val()); //获取当前操作的input属性值,转化为整型
94535
- if (!IFrameSplitOperator.IsNumber(value))
94536
- {
94537
- alert("参数不能为空");
94538
- return;
94539
- }
94540
- var chart=self.HQChart;
94541
- var identify=self.Identify;
94542
- var paramIndex=event.data.ParamIndex;
94543
- var script=self.IndexScript;
94544
- var isOverlay=self.IsOverlay;
94545
-
94546
- script.Arguments[paramIndex].Value = value; //为参数属性重新赋值
94547
- if (isOverlay) chart.UpdateOverlayIndex(identify);
94548
- else chart.UpdateWindowIndex(identify); //调用更新窗口指标函数,参数用来定位窗口
94549
- }
94550
- )
94551
- }
94552
- }
94553
-
94554
- //绑定取消事件
94555
- this.BindCancel=function()
94556
- {
94557
- //取消按钮事件
94558
- var self=this;
94559
- var test=$("#"+this.ID+" .cancel");
94560
- $("#"+this.ID+" .cancel").unbind("click").click(
94561
- function(event)
94562
- {
94563
- var chart=self.HQChart;
94564
- var identify=self.Identify;
94565
- self.RestoreParam();
94566
- var isOverlay=self.IsOverlay;
94567
- if (isOverlay) chart.UpdateOverlayIndex(identify);
94568
- else chart.UpdateWindowIndex(identify);
94569
- self.IndexScript=null;
94570
- self.Hide();
94571
- }
94572
- );
94573
-
94574
- //关闭和取消是一样的
94575
- $("#"+this.ID+" #close").unbind("click").click(
94576
- function(event)
94577
- {
94578
- var chart=self.HQChart;
94579
- var identify=self.Identify;
94580
- var isOverlay=self.IsOverlay;
94581
- self.RestoreParam();
94582
- if (isOverlay) chart.UpdateOverlayIndex(identify);
94583
- else chart.UpdateWindowIndex(identify);
94584
- self.IndexScript=null;
94585
- self.Hide();
94586
- }
94587
- );
94588
- }
94589
-
94590
- //还原参数
94591
- this.RestoreParam=function()
94592
- {
94593
- if (!this.IndexScript) return;
94594
-
94595
- for(var i=0; i<this.ParamData.length; ++i)
94596
- {
94597
- var item=this.ParamData[i];
94598
- this.IndexScript.Arguments[i].Value=item.Value;
94599
- }
94600
- }
94601
-
94602
- //显示
94603
- this.DoModal=function(event)
94604
- {
94605
- var chart=event.data.Chart;
94606
- var identify=event.data.Identify;
94607
- var dialog=chart.ModifyIndexDialog;
94608
- var isOverlay=event.data.IsOverlay===true;
94609
-
94610
- if(!dialog) return;
94611
-
94612
- if (dialog.ID==null) dialog.Create(); //第1次 需要创建div
94613
- dialog.Identify=identify;
94614
- dialog.HQChart=chart;
94615
- dialog.IsOverlay=isOverlay
94616
-
94617
- if (isOverlay)
94618
- {
94619
- var overlayIndex=chart.GetOverlayIndexByIdentify(identify);
94620
- if (!overlayIndex || !overlayIndex.OverlayItem.Script) return;
94621
- dialog.IndexScript=overlayIndex.OverlayItem.Script;
94622
- dialog.SetTitle(dialog.IndexScript.Name+" 叠加指标参数设置"); //设置标题
94623
- }
94624
- else
94625
- {
94626
- dialog.IndexScript=chart.WindowIndex[identify];
94627
- dialog.SetTitle(dialog.IndexScript.Name+" 指标参数设置"); //设置标题
94628
- }
94629
-
94630
- dialog.ClearParamList(); //清空参数
94631
- dialog.BindParam(chart,identify); //绑定参数
94632
- dialog.BindCancel(); //绑定取消和关闭事件
94633
-
94634
- dialog.Show();//显示, 在css里调整居中
94635
- }
94636
- }
94637
-
94638
94501
  //等待动画窗口
94639
94502
  function WaitDialog(divElement)
94640
94503
  {
@@ -132210,6 +132073,7 @@ function ChartReport()
132210
132073
  var top=this.RectClient.Top;
132211
132074
  var y=top+this.HeaderMergin.Top+(this.HeaderHeight-this.HeaderMergin.Top-this.HeaderMergin.Bottom)/2;
132212
132075
  var yBottom=top+this.HeaderHeight;
132076
+ var bDrawSortBG=this.IsDrawSortBGIcon();
132213
132077
 
132214
132078
  this.Canvas.font=this.HeaderFont;
132215
132079
 
@@ -132251,6 +132115,10 @@ function ChartReport()
132251
132115
  {
132252
132116
  this.DrawSortHeader(item.Title,item.TextAlign,x,yBottom,textWidth,this.SortInfo.Sort, textSize);
132253
132117
  }
132118
+ else if (item.Sort>0 && bDrawSortBG)
132119
+ {
132120
+ this.DrawSortHeader(item.Title,item.TextAlign,x,yBottom,textWidth,0,textSize);
132121
+ }
132254
132122
  else
132255
132123
  {
132256
132124
  this.DrawText(item.Title,item.TextAlign,x,yBottom,textWidth,textSize);
@@ -132304,6 +132172,10 @@ function ChartReport()
132304
132172
  {
132305
132173
  this.DrawSortHeader(item.Title,item.TextAlign,x,yBottom,textWidth,this.SortInfo.Sort,textSize);
132306
132174
  }
132175
+ else if (item.Sort>0)
132176
+ {
132177
+ this.DrawSortHeader(item.Title,item.TextAlign,x,yBottom,textWidth,0, textSize);
132178
+ }
132307
132179
  else
132308
132180
  {
132309
132181
  this.DrawText(item.Title,item.TextAlign,x,yBottom,textWidth,textSize);
@@ -132366,10 +132238,24 @@ function ChartReport()
132366
132238
  }
132367
132239
  }
132368
132240
 
132241
+ //是否绘制排序背景图标
132242
+ this.IsDrawSortBGIcon=function()
132243
+ {
132244
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.SortConfig.Arrow)) return false;
132245
+ if (!this.SortConfig.Arrow[0]) return false;
132246
+
132247
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.SortConfig.Color)) return false;
132248
+ if (!this.SortConfig.Color[0]) return false;
132249
+
132250
+ return true;
132251
+ }
132252
+
132369
132253
  this.DrawSortHeader=function(text, textAlign, x, yBottom, width, sortType,textSize)
132370
132254
  {
132371
132255
  var pixelRatio=GetDevicePixelRatio();
132372
132256
  var sortText=this.SortConfig.Arrow[sortType];
132257
+ var sortBGText=this.SortConfig.Arrow[0];
132258
+ var sortBGColor=this.SortConfig.Color[0];
132373
132259
  this.Canvas.font=this.HeaderFont;
132374
132260
  var textWidth=this.Canvas.measureText(text).width;
132375
132261
  var sortTextWidth=this.SortConfig.Size*pixelRatio+this.SortConfig.Margin.Left;
@@ -132393,8 +132279,17 @@ function ChartReport()
132393
132279
 
132394
132280
  xText+=(textWidth+this.SortConfig.Margin.Left);
132395
132281
  this.Canvas.font=this.SortFont;
132396
- this.Canvas.fillStyle=this.SortConfig.Color[sortType];
132397
- this.Canvas.fillText(sortText,xText,yBottom-this.SortConfig.Margin.Bottom);
132282
+ if (sortBGText && sortBGColor)
132283
+ {
132284
+ this.Canvas.fillStyle=sortBGColor;
132285
+ this.Canvas.fillText(sortBGText,xText,yBottom-this.SortConfig.Margin.Bottom);
132286
+ }
132287
+
132288
+ if (sortType>0)
132289
+ {
132290
+ this.Canvas.fillStyle=this.SortConfig.Color[sortType];
132291
+ this.Canvas.fillText(sortText,xText,yBottom-this.SortConfig.Margin.Bottom);
132292
+ }
132398
132293
 
132399
132294
  this.Canvas.font=this.HeaderFont;
132400
132295
  this.Canvas.fillStyle=this.HeaderColor;
@@ -132406,7 +132301,6 @@ function ChartReport()
132406
132301
  }
132407
132302
  }
132408
132303
 
132409
-
132410
132304
  this.DrawBorder=function()
132411
132305
  {
132412
132306
  if (!this.IsDrawBorder) return;
@@ -133185,7 +133079,7 @@ function ChartReport()
133185
133079
  this.DrawSymbolName=function(data, column, left, top, rowType)
133186
133080
  {
133187
133081
  var stock=data.Stock;
133188
- var symbol=data.Symbol;
133082
+ var symbol=IFrameSplitOperator.RemoveMarketSuffix(data.Symbol);
133189
133083
  var name;
133190
133084
  if (stock)
133191
133085
  {
@@ -133242,7 +133136,7 @@ function ChartReport()
133242
133136
  this.DrawSymbolNameV2=function(data, column, left, top, rowType)
133243
133137
  {
133244
133138
  var stock=data.Stock;
133245
- var symbol=data.Symbol;
133139
+ var symbol=IFrameSplitOperator.RemoveMarketSuffix(data.Symbol);
133246
133140
  var name;
133247
133141
  if (stock)
133248
133142
  {
@@ -147110,7 +147004,7 @@ function JSDialogSelectRect()
147110
147004
 
147111
147005
  jones_2000@163.com
147112
147006
 
147113
- 内置指标搜索对话框
147007
+ 内置指标搜索对话框 修改指标参数对话框
147114
147008
  */
147115
147009
 
147116
147010
 
@@ -147124,7 +147018,7 @@ function JSDialogSearchIndex()
147124
147018
 
147125
147019
  this.HQChart=null;
147126
147020
 
147127
- //{ WindowIndex:窗口索引, OpType:1=切换主图指标 2=添加叠加指标, Title: };
147021
+ //{ WindowIndex:窗口索引, OpType:1=切换主图指标 2=添加叠加指标 3=新增指标窗口, Title: };
147128
147022
  this.OpData=null;
147129
147023
 
147130
147024
  this.TitleColor=g_JSChartResource.DialogSearchIndex.TitleColor;
@@ -147150,6 +147044,7 @@ function JSDialogSearchIndex()
147150
147044
  {
147151
147045
  if (IFrameSplitOperator.IsNumber(option.Style)) this.Style=option.Style;
147152
147046
  if (option.IndexData) this.IndexData=option.IndexData;
147047
+ if (IFrameSplitOperator.IsNumber(option.MaxRowCount)) this.MaxRowCount=option.MaxRowCount;
147153
147048
  }
147154
147049
  }
147155
147050
 
@@ -147159,7 +147054,8 @@ function JSDialogSearchIndex()
147159
147054
  this.AryGroup=[];
147160
147055
  this.IndexData=null;
147161
147056
  this.InputDom=null;
147162
-
147057
+ this.HQChart=null;
147058
+
147163
147059
  if (this.DivDialog)
147164
147060
  {
147165
147061
  document.body.removeChild(this.DivDialog);
@@ -147426,6 +147322,24 @@ function JSDialogSearchIndex()
147426
147322
  this.HQChart.AddOverlayIndex(obj);
147427
147323
  }
147428
147324
  }
147325
+ else if (this.OpData.OpType==3) //新增加指标窗口
147326
+ {
147327
+ var indexItem=cellItem.IndexItem;
147328
+ if (indexItem.Type==0) //系统指标
147329
+ {
147330
+ this.HQChart.AddIndexWindow(indexItem.ID, this.OpData);
147331
+ }
147332
+ else if (indexItem.Type==1) //自定义脚本指标
147333
+ {
147334
+ var indexData={ ID:indexItem.ID, Name:indexItem.Name, Script:indexItem.Script, Args:indexItem.Args };
147335
+ this.HQChart.AddScriptIndexWindow(indexData, this.OpData);
147336
+ }
147337
+ else if (indexItem.Type==2) //api指标
147338
+ {
147339
+ var indexData={ API: { ID:indexItem.ID, Name:indexItem.Name, Args:indexItem.Args, Url:'local'} };
147340
+ this.HQChart.AddAPIIndexWindow(indexData, this.OpData);
147341
+ }
147342
+ }
147429
147343
 
147430
147344
  }
147431
147345
 
@@ -147698,7 +147612,7 @@ JSDialogSearchIndex.GetDefaultIndexData=function()
147698
147612
  ]
147699
147613
  },
147700
147614
 
147701
- /*
147615
+
147702
147616
  {
147703
147617
  Group:{ ID:"自定义", Name:"自定义"} ,
147704
147618
  AryIndex:
@@ -147707,7 +147621,7 @@ JSDialogSearchIndex.GetDefaultIndexData=function()
147707
147621
  { Name:"高低均价(自定义脚本)", ID:"HIGH_LOW_AV", Type:1, Args:null , Script:"均价:(H+L)/2;高:H;低:L;", Args:[ { Name:'N', Value:20}, { Name:'M', Value:6}]},
147708
147622
  ]
147709
147623
  }
147710
- */
147624
+
147711
147625
  ]
147712
147626
 
147713
147627
  }
@@ -147717,6 +147631,410 @@ JSDialogSearchIndex.GetDefaultIndexData=function()
147717
147631
 
147718
147632
 
147719
147633
 
147634
+ function JSDialogModifyIndexParam()
147635
+ {
147636
+ this.DivDialog=null;
147637
+ this.DragTitle=null;
147638
+ this.TitleBox=null; //{ DivTitle, DivName, DivName }
147639
+ this.Style=0; //样式 预留
147640
+
147641
+ this.TitleColor=g_JSChartResource.DialogModifyIndexParam.TitleColor;
147642
+ this.TitleBGColor=g_JSChartResource.DialogModifyIndexParam.TitleBGColor;
147643
+ this.BGColor=g_JSChartResource.DialogModifyIndexParam.BGColor;
147644
+ this.BorderColor=g_JSChartResource.DialogModifyIndexParam.BorderColor;
147645
+ this.ParamNameColor=g_JSChartResource.DialogModifyIndexParam.ParamNameColor;
147646
+ this.InputTextColor=g_JSChartResource.DialogModifyIndexParam.InputTextColor;
147647
+
147648
+ this.MaxRowCount=30; //行
147649
+
147650
+ this.HQChart=null;
147651
+
147652
+ this.AryData=[];
147653
+ this.IndexData=null; //指标数据 { WindowsIndex:, Type:1=主图 2=叠加, Identify, IndexScript: }
147654
+ this.Arguments=[]; //参数备份
147655
+
147656
+ this.Inital=function(hqchart, option)
147657
+ {
147658
+ this.HQChart=hqchart;
147659
+ if (option)
147660
+ {
147661
+ if (IFrameSplitOperator.IsNumber(option.Style)) this.Style=option.Style;
147662
+ if (IFrameSplitOperator.IsNumber(option.MaxRowCount)) this.MaxRowCount=option.MaxRowCount;
147663
+ }
147664
+ }
147665
+
147666
+
147667
+ this.Destroy=function()
147668
+ {
147669
+ this.AryData=[];
147670
+ this.HQChart=null;
147671
+
147672
+ if (this.DivDialog)
147673
+ {
147674
+ document.body.removeChild(this.DivDialog);
147675
+ this.DivDialog=null;
147676
+ }
147677
+ }
147678
+
147679
+ this.Show=function(x,y)
147680
+ {
147681
+ if (!this.DivDialog) return;
147682
+ //if (!this.HQChart) return;
147683
+
147684
+ this.UpdateParam();
147685
+
147686
+ if (this.IndexData && this.IndexData.Title) this.TitleBox.DivName.innerText=this.IndexData.Title;
147687
+
147688
+ if (!IFrameSplitOperator.IsNumber(x) || !IFrameSplitOperator.IsNumber(y)) //默认居中显示
147689
+ {
147690
+ var rtClient=this.HQChart.UIElement.getBoundingClientRect();
147691
+ x=rtClient.left+(rtClient.right-rtClient.left-this.DivDialog.offsetWidth)/2;
147692
+ y=rtClient.top+(rtClient.bottom-rtClient.top-this.DivDialog.offsetHeight)/2;
147693
+ }
147694
+
147695
+ this.DivDialog.style.visibility='visible';
147696
+ this.DivDialog.style.top = y + "px";
147697
+ this.DivDialog.style.left = x + "px";
147698
+ }
147699
+
147700
+ this.OnClickColseButton=function(e)
147701
+ {
147702
+ this.RestoreParam(); //还原参数
147703
+ this.Close(e);
147704
+ }
147705
+
147706
+ this.OnClickRestoreButton=function(e)
147707
+ {
147708
+ var aryText=this.Arguments;
147709
+ if (!aryText) aryText=[];
147710
+ this.UpdateParamTable(aryText);
147711
+ this.RestoreParam();
147712
+ }
147713
+
147714
+ this.OnClickOkButton=function(e)
147715
+ {
147716
+ this.Close(e);
147717
+ }
147718
+
147719
+ this.Close=function(e)
147720
+ {
147721
+ this.IndexData=null;
147722
+ this.Arguments=[];
147723
+ if (!this.DivDialog) return;
147724
+
147725
+ this.DivDialog.style.visibility='hidden';
147726
+ }
147727
+
147728
+ this.SetIndexData=function(data)
147729
+ {
147730
+ this.IndexData=data;
147731
+ this.BackupParam();
147732
+ }
147733
+
147734
+ this.OnMouseDownTitle=function(e)
147735
+ {
147736
+ if (!this.DivDialog) return;
147737
+
147738
+ var dragData={ X:e.clientX, Y:e.clientY };
147739
+ dragData.YOffset=e.clientX - this.DivDialog.offsetLeft;
147740
+ dragData.XOffset=e.clientY - this.DivDialog.offsetTop;
147741
+ this.DragTitle=dragData;
147742
+
147743
+ document.onmousemove=(e)=>{ this.DocOnMouseMoveTitle(e); }
147744
+ document.onmouseup=(e)=>{ this.DocOnMouseUpTitle(e); }
147745
+ }
147746
+
147747
+ this.DocOnMouseMoveTitle=function(e)
147748
+ {
147749
+ if (!this.DragTitle) return;
147750
+
147751
+ var left = e.clientX - this.DragTitle.YOffset;
147752
+ var top = e.clientY - this.DragTitle.XOffset;
147753
+
147754
+ var right=left+this.DivDialog.offsetWidth;
147755
+ var bottom=top+ this.DivDialog.offsetHeight;
147756
+
147757
+ if ((right+5)>=window.innerWidth) left=window.innerWidth-this.DivDialog.offsetWidth-5;
147758
+ if ((bottom+5)>=window.innerHeight) top=window.innerHeight-this.DivDialog.offsetHeight-5;
147759
+
147760
+ this.DivDialog.style.left = left + 'px';
147761
+ this.DivDialog.style.top = top + 'px';
147762
+
147763
+ if(e.preventDefault) e.preventDefault();
147764
+ }
147765
+
147766
+ this.DocOnMouseUpTitle=function(e)
147767
+ {
147768
+ this.DragTitle=null;
147769
+ this.onmousemove = null;
147770
+ this.onmouseup = null;
147771
+ }
147772
+
147773
+ this.Create=function()
147774
+ {
147775
+ var divDom=document.createElement("div");
147776
+ divDom.className='UMyChart_ModifyIndexParam_Dialog_Div';
147777
+
147778
+ //对话框标题栏
147779
+ var divTitle=document.createElement("div");
147780
+ divTitle.className='UMyChart_ModifyIndexParam_Title_Div';
147781
+ divTitle.onmousedown=(e)=>{ this.OnMouseDownTitle(e);}
147782
+ divDom.appendChild(divTitle);
147783
+
147784
+ var divName=document.createElement("div");
147785
+ divName.className='UMyChart_ModifyIndexParam_Name_Div';
147786
+ divName.innerText="指标参数修改";
147787
+ divTitle.appendChild(divName);
147788
+
147789
+ var divClose=document.createElement("div");
147790
+ divClose.className='UMyChart_ModifyIndexParam_Close_Div';
147791
+ divClose.innerText="x";
147792
+ divClose.onmousedown=(e)=>{ this.OnClickColseButton(e); }
147793
+ divTitle.appendChild(divClose);
147794
+
147795
+ //整个框子
147796
+ var divFrame=document.createElement("div");
147797
+ divFrame.className="UMyChart_ModifyIndexParam_Frome_Div";
147798
+ divDom.appendChild(divFrame);
147799
+
147800
+ //表格
147801
+ var divTable=document.createElement("div");
147802
+ divTable.className='UMyChart_ModifyIndexParam_Table_Div';
147803
+ divFrame.appendChild(divTable);
147804
+
147805
+ var table=document.createElement("table");
147806
+ table.className="UMyChart_ModifyIndexParam_Table";
147807
+ divTable.appendChild(table);
147808
+
147809
+ /*
147810
+ var thead=document.createElement("thead");
147811
+ table.appendChild(thead);
147812
+
147813
+ var trDom=document.createElement("tr");
147814
+ trDom.className='UMyChart_ModifyIndexParam_head_Tr';
147815
+ thead.appendChild(trDom);
147816
+
147817
+ var thDom=document.createElement("th");
147818
+ thDom.className="UMyChart_ModifyIndexParam_Th";
147819
+ thDom.innerText="变量";
147820
+ trDom.appendChild(thDom);
147821
+
147822
+ var thDom=document.createElement("th");
147823
+ thDom.className="UMyChart_ModifyIndexParam_Th";
147824
+ thDom.innerText="数值";
147825
+ trDom.appendChild(thDom);
147826
+
147827
+ var thDom=document.createElement("th");
147828
+ thDom.className="UMyChart_ModifyIndexParam_Th";
147829
+ thDom.innerText="说明";
147830
+ trDom.appendChild(thDom);
147831
+ */
147832
+
147833
+
147834
+ var tbody=document.createElement("tbody");
147835
+ tbody.className="UMyChart_ModifyIndexParam_Tbody";
147836
+ table.appendChild(tbody);
147837
+
147838
+ this.AryData=[];
147839
+ for(var i=0;i<this.MaxRowCount;++i)
147840
+ {
147841
+ var rowItem=this.CreateRowDOM(i, tbody)
147842
+
147843
+ this.AryData.push(rowItem);
147844
+ }
147845
+
147846
+ var divButton=document.createElement("div");
147847
+ divButton.className='UMyChart_ModifyIndexParam_Button_Div';
147848
+ divFrame.appendChild(divButton);
147849
+
147850
+ var btnRestore=document.createElement("button");
147851
+ //btnRestore.className="UMyChart_ModifyIndexParam_button";
147852
+ btnRestore.innerText="恢复默认";
147853
+ btnRestore.addEventListener("mousedown", (e)=>{ this.OnClickRestoreButton(e); });
147854
+ divButton.appendChild(btnRestore);
147855
+
147856
+ var btnOk=document.createElement("button");
147857
+ //btnOk.className="UMyChart_ModifyIndexParam_button";
147858
+ btnOk.innerText="确认";
147859
+ btnOk.addEventListener("mousedown", (e)=>{ this.OnClickOkButton(e); })
147860
+ divButton.appendChild(btnOk);
147861
+
147862
+ document.body.appendChild(divDom);
147863
+
147864
+ this.DivName=divName;
147865
+ this.DivDialog=divDom;
147866
+ this.TitleBox={ DivTitle:divTitle, DivName:divName, DivColor:divClose };
147867
+
147868
+ this.UpdateStyle();
147869
+ }
147870
+
147871
+ this.CreateRowDOM=function(index, tbody)
147872
+ {
147873
+ var rowItem={ Tr:null, TdName:null, SpanName:null, TdValue:null, Input:null, ParamItem:null };
147874
+
147875
+ var trDom=document.createElement("tr");
147876
+ trDom.className='UMyChart_ModifyIndexParam_Tr';
147877
+ tbody.appendChild(trDom);
147878
+ rowItem.Tr=trDom;
147879
+
147880
+ var tdDom=document.createElement("td");
147881
+ tdDom.className="UMyChart_ModifyIndexParam_Name_Td"; //指标名称
147882
+ trDom.appendChild(tdDom);
147883
+ rowItem.TdName=tdDom;
147884
+
147885
+ var spanDom=document.createElement("span");
147886
+ spanDom.className='UMyChart_ModifyIndexParam_Name_Span';
147887
+ spanDom.innerText='参数';
147888
+ tdDom.appendChild(spanDom);
147889
+ rowItem.SpanName=spanDom;
147890
+
147891
+ var tdDom=document.createElement("td");
147892
+ tdDom.className="UMyChart_ModifyIndexParam_Value_Td"; //指标名称
147893
+ trDom.appendChild(tdDom);
147894
+ rowItem.TdValue=tdDom;
147895
+
147896
+ var input=document.createElement("input");
147897
+ input.className='UMyChart_ModifyIndexParam_Input';
147898
+ input.type="number";
147899
+ input.step=1;
147900
+ input.addEventListener("mouseup", (e)=>{ this.OnParamMouseUp(e)});
147901
+ input.addEventListener("keyup", (e)=>{ this.OnParamKeyUp(e)})
147902
+ tdDom.appendChild(input);
147903
+ rowItem.Input=input;
147904
+
147905
+ return rowItem;
147906
+ }
147907
+
147908
+ this.UpdateStyle=function()
147909
+ {
147910
+ if (!this.DivDialog) return;
147911
+
147912
+ if (this.BGColor) this.DivDialog.style['background-color']=this.BGColor;
147913
+ if (this.BorderColor) this.DivDialog.style['border-color']=this.BorderColor;
147914
+
147915
+ if (this.TitleBGColor) this.TitleBox.DivTitle.style['background-color']=this.TitleBGColor;
147916
+ if (this.TitleColor) this.TitleBox.DivName.style['color']=this.TitleColor;
147917
+ };
147918
+
147919
+ this.UpdateParamTable=function(aryText)
147920
+ {
147921
+ var index=0;
147922
+ for(index=0; index<aryText.length && index<this.AryData.length; ++index)
147923
+ {
147924
+ var item=aryText[index];
147925
+ var row=this.AryData[index];
147926
+ row.SpanName.innerText=`${item.Name}: `;
147927
+ row.SpanName.style.color=this.ParamNameColor;
147928
+
147929
+ row.Input.value=item.Value;
147930
+ row.Input.style.color=this.InputTextColor;
147931
+ row.Input.dataset.paramid=item.Index;
147932
+
147933
+ if (row.Tr.style.display=="none") row.Tr.style.display="";
147934
+ }
147935
+
147936
+ for(; index<this.AryData.length; ++index)
147937
+ {
147938
+ var row=this.AryData[index];
147939
+ row.Tr.style.display="none";
147940
+ row.Input.dataset.paramid=-1;
147941
+ }
147942
+ }
147943
+
147944
+ this.UpdateParam=function()
147945
+ {
147946
+ var aryText=[];
147947
+ var indexScript=this.IndexData.IndexScript;
147948
+ if (indexScript && IFrameSplitOperator.IsNonEmptyArray(indexScript.Arguments))
147949
+ {
147950
+ for(var i=0;i<indexScript.Arguments.length;++i)
147951
+ {
147952
+ var item=indexScript.Arguments[i];
147953
+ aryText.push({ Name:item.Name, Value:item.Value, Index:i });
147954
+ }
147955
+ }
147956
+
147957
+ this.UpdateParamTable(aryText);
147958
+ }
147959
+
147960
+ this.RestoreParam=function()
147961
+ {
147962
+ if (!this.IndexData || !this.IndexData.IndexScript) return;
147963
+ var indexScript=this.IndexData.IndexScript;
147964
+
147965
+ if (!IFrameSplitOperator.IsNonEmptyArray(indexScript.Arguments)) return;
147966
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.Arguments)) return;
147967
+
147968
+ var bUpdate=false;
147969
+ for(var i=0;i<this.Arguments.length;++i)
147970
+ {
147971
+ var oldItem=this.Arguments[i];
147972
+ var item=indexScript.Arguments[i];
147973
+ if (oldItem.Value!=item.Value)
147974
+ {
147975
+ item.Value=oldItem.Value;
147976
+ bUpdate=true;
147977
+ }
147978
+ }
147979
+
147980
+ if (!bUpdate) return;
147981
+
147982
+ if (this.IndexData.Type==1) this.HQChart.UpdateWindowIndex(this.IndexData.WindowIndex);
147983
+ else if (this.IndexData.Type==2) this.HQChart.UpdateOverlayIndex(this.IndexData.Identify);
147984
+ }
147985
+
147986
+ this.BackupParam=function()
147987
+ {
147988
+ this.Arguments=[];
147989
+
147990
+ if (!this.IndexData || !this.IndexData.IndexScript) return;
147991
+ var indexScript=this.IndexData.IndexScript;
147992
+ if (IFrameSplitOperator.IsNonEmptyArray(indexScript.Arguments))
147993
+ {
147994
+ for(var i=0;i<indexScript.Arguments.length;++i)
147995
+ {
147996
+ var item=indexScript.Arguments[i];
147997
+ this.Arguments.push({Name:item.Name, Value:item.Value, Index:i});
147998
+ }
147999
+ }
148000
+ }
148001
+
148002
+ this.OnParamMouseUp=function(e)
148003
+ {
148004
+ var input=e.target;
148005
+ var value=input.value;
148006
+ var id=input.dataset.paramid;
148007
+
148008
+ this.ModifyParam(id, parseInt(value));
148009
+ }
148010
+
148011
+ this.OnParamKeyUp=function(e)
148012
+ {
148013
+ var input=e.target;
148014
+ var value=input.value;
148015
+ var id=input.dataset.paramid;
148016
+
148017
+ this.ModifyParam(id, parseInt(value));
148018
+ }
148019
+
148020
+ this.ModifyParam=function(id, value)
148021
+ {
148022
+ if (!this.IndexData || !this.IndexData.IndexScript) return;
148023
+
148024
+ var indexScript=this.IndexData.IndexScript;
148025
+ var item=indexScript.Arguments[id];
148026
+ if (!item) return;
148027
+ if (item.Value==value) return;
148028
+
148029
+ item.Value=value;
148030
+
148031
+ if (this.IndexData.Type==1) this.HQChart.UpdateWindowIndex(this.IndexData.WindowIndex);
148032
+ else if (this.IndexData.Type==2) this.HQChart.UpdateOverlayIndex(this.IndexData.Identify);
148033
+ }
148034
+ }
148035
+
148036
+
148037
+
147720
148038
 
147721
148039
  ///////////////////////////////////////////////////////////////////////////////////
147722
148040
  // 工作线程计算指标示例
@@ -147839,7 +148157,7 @@ function HQChartScriptWorker()
147839
148157
 
147840
148158
 
147841
148159
 
147842
- var HQCHART_VERSION="1.1.14083";
148160
+ var HQCHART_VERSION="1.1.14096";
147843
148161
 
147844
148162
  function PrintHQChartVersion()
147845
148163
  {