hqchart 1.1.14478 → 1.1.14484

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14478",
3
+ "version": "1.1.14484",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -1252,14 +1252,21 @@ function JSFloatTooltip()
1252
1252
  var symbol=data.Symbol;
1253
1253
  var name=data.Name;
1254
1254
  var bOverlay=false; //是否是叠加指标
1255
+ var bIndexKLine=false;
1255
1256
  if (tooltipData.ChartPaint.Name=="Overlay-KLine")
1256
1257
  {
1257
1258
  symbol=tooltipData.ChartPaint.Symbol;
1258
1259
  name=tooltipData.ChartPaint.Title;
1259
1260
  bOverlay=true;
1260
1261
  }
1262
+ else if (tooltipData.ChartPaint.Name=="DRAWKLINE")
1263
+ {
1264
+ symbol=tooltipData.ChartPaint.Symbol;
1265
+ name=tooltipData.ChartPaint.Title;
1266
+ bIndexKLine=true;
1267
+ }
1261
1268
 
1262
- var kItem={ Symbol:symbol, Name:name, Item:CloneData(tooltipData.Data), IsOverlay:bOverlay };
1269
+ var kItem={ Symbol:symbol, Name:name, Item:CloneData(tooltipData.Data), IsOverlay:bOverlay, IsIndexKLine:bIndexKLine };
1263
1270
  var strKItem=JSON.stringify(kItem);
1264
1271
  var bUpdata=false;
1265
1272
  if (this.KItemCacheID!=strKItem) //数据变动的才更新
@@ -1560,10 +1567,11 @@ function JSFloatTooltip()
1560
1567
  if (IFrameSplitOperator.IsNumber(data.Time)) timeItem=this.FormatTime(data.Time, this.HQChart.Period, null, 'FloatTooltip-Time');
1561
1568
 
1562
1569
  var overlayItem=null;
1563
- if (kItem.IsOverlay)
1570
+ if (kItem.IsOverlay || (kItem.IsIndexKLine && kItem.Name))
1564
1571
  overlayItem={ Title:"", Text:kItem.Name, Color:this.TextColor, ClassName:this.ValueAlign.Left };
1565
1572
 
1566
1573
 
1574
+
1567
1575
  var yClose=data.YClose; //昨收价|昨结算价
1568
1576
  var aryText=
1569
1577
  [
@@ -55882,6 +55882,8 @@ HQData.Minute_RequestHistoryMinuteData=function(data, callback)
55882
55882
 
55883
55883
  var hqchartData={code:0, data:aryDay, name:symbol, symbol: symbol};
55884
55884
 
55885
+ //hqchartData.data[0].minute.length=45;
55886
+
55885
55887
  callback(hqchartData);
55886
55888
  }
55887
55889
 
@@ -57280,17 +57282,22 @@ HQData.GetKLineDataByDate=function(fullData, startDate, endDate)
57280
57282
  HQData.GetDayMinuteDataBySymbol=function(symbol)
57281
57283
  {
57282
57284
  var data=null;
57283
- switch(symbol)
57285
+ var upperSymbol=null;
57286
+ if (symbol) upperSymbol=symbol.toUpperCase();
57287
+ switch(upperSymbol)
57284
57288
  {
57285
- case "000001.sz":
57289
+ case "000001.SZ":
57286
57290
  data=SZ_000001_1DAY_MINUTE;
57287
57291
  break;
57288
- case "600000.sh":
57292
+ case "600000.SH":
57289
57293
  data=SH_600000_1DAY_MINUTE;
57290
57294
  break;
57291
- case "000151.sz":
57295
+ case "000151.SZ":
57292
57296
  data=SZ_000151_1DAY_MINUTE;
57293
57297
  break;
57298
+ case "IM2503.CF":
57299
+ data=CF_IM2503_1DAY_MINUTE;
57300
+ break;
57294
57301
  default:
57295
57302
  data=SZ_000151_1DAY_MINUTE;
57296
57303
  break;
@@ -57426,7 +57433,10 @@ HQData.Report_APIIndex=function(data, callback)
57426
57433
  HQData.APIIndex_MULTI_TEXT(data, callback);
57427
57434
  else if (request.Data.indexname=="API_PARTLINE")
57428
57435
  HQData.APIIndex_PARTLINE(data, callback);
57429
-
57436
+ else if (request.Data.indexname=="API_CHANNELV2")
57437
+ HQData.APIIndex_CHANNEL_V2(data, callback);
57438
+ else if (request.Data.indexname=="API_DRAWKLINE")
57439
+ HQData.APIIndex_DRAWKLINE(data, callback);
57430
57440
  }
57431
57441
 
57432
57442
 
@@ -58123,7 +58133,8 @@ HQData.APIIndex_MULTI_BAR=function(data, callback)
58123
58133
  {
58124
58134
  DrawType:'MULTI_BAR',
58125
58135
  DrawData:[]
58126
- } //绘制柱子数组
58136
+ }, //绘制柱子数组\
58137
+ IsShowTitle:false,
58127
58138
  };
58128
58139
 
58129
58140
  //第一组柱子
@@ -58141,14 +58152,15 @@ HQData.APIIndex_MULTI_BAR=function(data, callback)
58141
58152
 
58142
58153
  var point2=
58143
58154
  {
58144
- Color:'rgb(55,228,181)', //颜色
58145
- Type:1,
58155
+ Color:'rgb(55,228,181)', //颜色
58156
+ BorderColor:"rgb(255,165,0)", //边框景色
58157
+ Type:2,
58146
58158
  Name:"柱子下部",
58147
58159
  Point:
58148
58160
  [
58149
58161
  //{Date:20190916, Time: Value:15.5, Value2:0 },
58150
58162
  ],
58151
- Width:5
58163
+ Width:10
58152
58164
  };
58153
58165
 
58154
58166
  for(var i=0;i<kData.Data.length;++i)
@@ -58160,7 +58172,7 @@ HQData.APIIndex_MULTI_BAR=function(data, callback)
58160
58172
 
58161
58173
 
58162
58174
 
58163
- barData.Draw.DrawData.push(point);
58175
+ //barData.Draw.DrawData.push(point);
58164
58176
  barData.Draw.DrawData.push(point2);
58165
58177
 
58166
58178
  var apiData=
@@ -58274,3 +58286,106 @@ HQData.APIIndex_PARTLINE=function(data, callback)
58274
58286
  }
58275
58287
 
58276
58288
 
58289
+ HQData.APIIndex_CHANNEL_V2=function(data, callback)
58290
+ {
58291
+ data.PreventDefault=true;
58292
+ var hqchart=data.HQChart;
58293
+ var kData=hqchart.GetKData();
58294
+
58295
+ var channelData=
58296
+ {
58297
+ name:'通道示例', type:1,
58298
+ Draw:
58299
+ {
58300
+ DrawType:'JS_CHART_CHANNEL_V2',
58301
+ DrawData:
58302
+ {
58303
+ AryData:[]
58304
+ }
58305
+ }
58306
+ };
58307
+
58308
+ var aryTestData=kData.GetCloseMA(10);
58309
+ var ARRAY_COLOR=["rgb(0, 0 ,255)", "rgb(255,0,255)", "rgb(255,165,0)"];
58310
+ var colorIndex=0;
58311
+ for(var i=20;i<kData.Data.length;++i)
58312
+ {
58313
+ var index=i%15;
58314
+ var kItem=kData.Data[i];
58315
+ var value=aryTestData[i];
58316
+ var value2=value*1.03;
58317
+ var item={ Date:kItem.Date, Time:kItem.Time, Value: value, Value2:value2 };
58318
+ //var item={ Date:kItem.Date, Time:kItem.Time, Value: kItem.Close*(1.05), Value2:kItem.Close };
58319
+
58320
+ item.Color=ARRAY_COLOR[colorIndex%ARRAY_COLOR.length];
58321
+ channelData.Draw.DrawData.AryData.push(item);
58322
+
58323
+ if (index==0 && i>0) ++colorIndex;
58324
+ }
58325
+
58326
+ var apiData=
58327
+ {
58328
+ code:0,
58329
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
58330
+ outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[channelData] }
58331
+ };
58332
+
58333
+ console.log('[HQData.APIIndex_CHANNEL_V2] apiData ', apiData);
58334
+ callback(apiData);
58335
+ }
58336
+
58337
+
58338
+ HQData.APIIndex_DRAWKLINE=function(data, callback)
58339
+ {
58340
+ data.PreventDefault=true;
58341
+ var hqchart=data.HQChart;
58342
+ var kData=hqchart.GetKData();
58343
+
58344
+ var klineData=
58345
+ {
58346
+ name:"DRAWKLINE", type:1,
58347
+ Draw:
58348
+ {
58349
+ Name:"DRAWKLINE",
58350
+ DrawType:"DRAWKLINE",
58351
+ DrawData:[],
58352
+ Config:{ IsShowMaxMinPrice:true, IsShowKTooltip:true, Symbol:"000001.sh", Name:"上证指数11" }
58353
+ },
58354
+ IsShowTitle:true,
58355
+ };
58356
+
58357
+ var aryDate=[];
58358
+ var aryTime=[];
58359
+ for(var i=100;i<kData.Data.length-100;++i)
58360
+ {
58361
+ var kItem=kData.Data[i];
58362
+ var newItem=
58363
+ {
58364
+ YClose:kItem.YClose,
58365
+ Open:kItem.Open,
58366
+ High:kItem.High,
58367
+ Low:kItem.Low,
58368
+ Close:kItem.Close,
58369
+ Date:kItem.Date,
58370
+ Time:kItem.Time,
58371
+ Vol:kItem.Vol,
58372
+ };
58373
+
58374
+ klineData.Draw.DrawData.push(newItem);
58375
+
58376
+ aryDate.push(kItem.Date);
58377
+ aryTime.push(kItem.Time)
58378
+ }
58379
+
58380
+ var apiData=
58381
+ {
58382
+ code:0,
58383
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
58384
+ outdata: { date:aryDate, time:aryTime, outvar:[klineData] }
58385
+ };
58386
+
58387
+ console.log('[HQData.APIIndex_DRAWKLINE] apiData ', apiData);
58388
+ callback(apiData);
58389
+ }
58390
+
58391
+
@@ -20257,6 +20257,8 @@ var SCRIPT_CHART_NAME=
20257
20257
  SCATTER_PLOT:"SCATTER_PLOT", //散点图
20258
20258
 
20259
20259
  CLIP_COLOR_STICK:"CLIP_COLOR_STICK", //上下柱子 裁剪
20260
+
20261
+ DRAW_KLINE:"DRAWKLINE"
20260
20262
  }
20261
20263
 
20262
20264
 
@@ -21325,6 +21327,26 @@ function ScriptIndex(name,script,args,option)
21325
21327
  if (varItem.Color) //如果设置了颜色,使用外面设置的颜色
21326
21328
  chart.UnchagneColor=chart.DownColor=chart.UpColor=this.GetColor(varItem.Color);
21327
21329
 
21330
+ if (varItem.Draw.Config)
21331
+ {
21332
+ var config=varItem.Draw.Config;
21333
+ if (IFrameSplitOperator.IsBool(config.IsShowMaxMinPrice)) chart.IsShowMaxMinPrice=config.IsShowMaxMinPrice;
21334
+ if (IFrameSplitOperator.IsBool(config.IsShowKTooltip)) chart.IsShowKTooltip=config.IsShowKTooltip;
21335
+ if (config.Symbol) chart.Symbol=config.Symbol;
21336
+ if (config.Name) chart.Title=config.Name;
21337
+ }
21338
+
21339
+ var bShowTitle=false;
21340
+ if (IFrameSplitOperator.IsBool(varItem.IsShowTitle)) bShowTitle=varItem.IsShowTitle;
21341
+ if (bShowTitle)
21342
+ {
21343
+ let titleIndex=windowIndex+1;
21344
+ var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color); //标题
21345
+ titleData.DataType="DRAWKLINE";
21346
+ titleData.Symbol=chart.Symbol;
21347
+ hqChart.TitlePaint[titleIndex].Data[id]=titleData;
21348
+ }
21349
+
21328
21350
  this.SetChartIndexName(chart);
21329
21351
  hqChart.ChartPaint.push(chart);
21330
21352
  }
@@ -25284,6 +25306,17 @@ function APIScriptIndex(name,script,args,option, isOverlay)
25284
25306
  outVarItem.Draw=drawItem;
25285
25307
  result.push(outVarItem);
25286
25308
  }
25309
+ else if (draw.DrawType==SCRIPT_CHART_NAME.DRAW_KLINE)
25310
+ {
25311
+ drawItem.Name=draw.Name;
25312
+ drawItem.Type=draw.Type;
25313
+ drawItem.DrawType=draw.DrawType;
25314
+
25315
+ drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);
25316
+ drawItem.Config=draw.Config;
25317
+ outVarItem.Draw=drawItem;
25318
+ result.push(outVarItem);
25319
+ }
25287
25320
  else
25288
25321
  {
25289
25322
  var find=g_ScriptIndexChartFactory.Get(draw.DrawType); //外部挂接
@@ -60,6 +60,17 @@ function JSDealChart(divElement)
60
60
 
61
61
  this.JSChartContainer=chart;
62
62
  this.DivElement.JSChart=this; //div中保存一份
63
+
64
+ //注册事件
65
+ if (option.EventCallback)
66
+ {
67
+ for(var i=0;i<option.EventCallback.length;++i)
68
+ {
69
+ var item=option.EventCallback[i];
70
+ chart.AddEventCallback(item);
71
+ }
72
+ }
73
+
63
74
  if (!option.Symbol)
64
75
  {
65
76
  chart.Draw();
@@ -284,6 +295,7 @@ function JSDealChartContainer(uielement)
284
295
  chart.Frame=this.Frame;
285
296
  chart.ChartBorder=this.Frame.ChartBorder;
286
297
  chart.Canvas=this.Canvas;
298
+ chart.UIElement=this.UIElement;
287
299
  chart.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
288
300
  this.ChartPaint[0]=chart;
289
301
 
@@ -311,12 +323,16 @@ function JSDealChartContainer(uielement)
311
323
  bRegisterWheel=false;
312
324
  JSConsole.Chart.Log('[JSDealChartContainer::Create] not register wheel event.');
313
325
  }
326
+
327
+ if (IFrameSplitOperator.IsBool(option.EnableSelected)) chart.SelectedData.Enable=option.EnableSelected;
314
328
  }
315
329
 
316
330
  if (bRegisterKeydown) this.UIElement.addEventListener("keydown", (e)=>{ this.OnKeyDown(e); }, true); //键盘消息
317
331
  if (bRegisterWheel) this.UIElement.addEventListener("wheel", (e)=>{ this.OnWheel(e); }, true); //上下滚动消息
318
332
 
319
333
  this.UIElement.onmousedown=(e)=> { this.UIOnMouseDown(e); }
334
+ this.UIElement.ondblclick=(e)=>{ this.UIOnDblClick(e); }
335
+ this.UIElement.oncontextmenu=(e)=> { this.UIOnContextMenu(e); }
320
336
  }
321
337
 
322
338
  this.Draw=function()
@@ -700,20 +716,28 @@ function JSDealChartContainer(uielement)
700
716
  var chart=this.ChartPaint[0];
701
717
  if (!chart) return;
702
718
 
703
- /*
704
719
  var clickData=chart.OnMouseDown(x,y,e);
705
720
  if (!clickData) return;
706
721
 
707
- if ((clickData.Type==2) && (e.button==0 || e.button==2)) //点击行
722
+ if ((clickData.Type==1) && (e.button==0 || e.button==2)) //点击行
708
723
  {
709
724
  if (clickData.Redraw==true) this.Draw();
710
725
  }
711
- else if (clickData.Type==3 && e.button==0) //表头
712
- {
713
- this.OnClickHeader(clickData, e);
714
- }
715
- */
716
-
726
+ }
727
+
728
+ this.UIOnDblClick=function(e)
729
+ {
730
+ var pixelTatio = GetDevicePixelRatio();
731
+ var x = (e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;
732
+ var y = (e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;
733
+
734
+ var chart=this.ChartPaint[0];
735
+ if (chart) chart.OnDblClick(x,y,e);
736
+ }
737
+
738
+ this.UIOnContextMenu=function(e)
739
+ {
740
+ e.preventDefault();
717
741
  }
718
742
 
719
743
  this.GotoNextPage=function()
@@ -935,7 +959,7 @@ function ChartDealList()
935
959
  this.IsSingleTable=false; //单表模式
936
960
  this.IsShowHeader=true; //是否显示表头
937
961
  this.ShowOrder=1; //0=顺序 1=倒序
938
- this.SelectedData={ Index:10 }; //{ Index:序号 }
962
+ this.SelectedData={ Index:null, Guid:null, Enable:false }; //{ Index:序号, Guid, Enable:是否启动 }
939
963
 
940
964
  this.SizeChange=true;
941
965
 
@@ -946,7 +970,7 @@ function ChartDealList()
946
970
 
947
971
  this.BorderColor=g_JSChartResource.DealList.BorderColor; //边框线
948
972
 
949
- this.SelectedConfig={ BGColor:"rgb(100,0,100)"};
973
+ this.SelectedConfig={ BGColor:g_JSChartResource.DealList.Selected.BGColor };
950
974
 
951
975
  //表头配置
952
976
  this.HeaderFontConfig={ Size:g_JSChartResource.DealList.Header.Font.Size, Name:g_JSChartResource.DealList.Header.Font.Name };
@@ -987,6 +1011,7 @@ function ChartDealList()
987
1011
  ];
988
1012
 
989
1013
  this.RectClient={};
1014
+ this.AryCellRect=[]; //{ Rect:, Type: 1=单行 }
990
1015
 
991
1016
  this.ReloadResource=function(resource)
992
1017
  {
@@ -1087,6 +1112,7 @@ function ChartDealList()
1087
1112
 
1088
1113
  this.Draw=function()
1089
1114
  {
1115
+ this.AryCellRect=[];
1090
1116
  if (this.SizeChange) this.CalculateSize();
1091
1117
  else this.UpdateCacheData();
1092
1118
 
@@ -1242,7 +1268,7 @@ function ChartDealList()
1242
1268
  for(j=0;j<this.RowCount && index>=0;++j, --index)
1243
1269
  {
1244
1270
  var dataItem=this.Data.Data[index];
1245
- if (this.SelectedData && this.SelectedData.Index==index) this.DrawSelectedRow(dataItem, textLeft-this.HeaderMergin.Left, textTop, index);
1271
+ this.DrawSelectedRow(dataItem, index, rtRow);
1246
1272
 
1247
1273
  this.DrawRow(dataItem, textLeft, textTop, index);
1248
1274
 
@@ -1260,10 +1286,15 @@ function ChartDealList()
1260
1286
  for(j=0;j<this.RowCount && index<dataCount;++j, ++index)
1261
1287
  {
1262
1288
  var dataItem=this.Data.Data[index];
1289
+ var rtRow={ Left:textLeft-this.HeaderMergin.Left, Top:textTop, Height:this.RowHeight, Width:this.TableWidth };
1290
+ rtRow.Right=rtRow.Left+rtRow.Width;
1291
+ rtRow.Bottom=rtRow.Top+rtRow.Height;
1263
1292
 
1264
- if (this.SelectedData && this.SelectedData.Index==index) this.DrawSelectedRow(dataItem, textLeft-this.HeaderMergin.Left, textTop, index);
1293
+ this.DrawSelectedRow(dataItem, index, rtRow);
1265
1294
 
1266
1295
  this.DrawRow(dataItem, textLeft, textTop, index);
1296
+
1297
+ this.AryCellRect.push({ Rect:rtRow, Type:1, DataIndex:index });
1267
1298
 
1268
1299
  textTop+=this.RowHeight;
1269
1300
  }
@@ -1369,11 +1400,11 @@ function ChartDealList()
1369
1400
  }
1370
1401
  }
1371
1402
 
1372
- this.DrawSelectedRow=function(data, left, top, dataIndex, colIndex)
1403
+ this.DrawSelectedRow=function(data, index, rtRow)
1373
1404
  {
1374
- var rtRow={ Left:left, Top:top, Height:this.RowHeight, Width:this.TableWidth };
1375
- rtRow.Right=rtRow.Left+rtRow.Width;
1376
- rtRow.Bottom=rtRow.Top+rtRow.Bottom;
1405
+ if (!this.SelectedData) return;
1406
+ if (!this.SelectedData.Enable) return;
1407
+ if (!this.SelectedData.Guid || this.SelectedData.Guid!=data.Guid) return;
1377
1408
 
1378
1409
  this.Canvas.fillStyle=this.SelectedConfig.BGColor;
1379
1410
  this.Canvas.fillRect(rtRow.Left,rtRow.Top, rtRow.Width, rtRow.Height);
@@ -1506,7 +1537,7 @@ function ChartDealList()
1506
1537
  return GetFontHeight(this.Canvas, font, word);
1507
1538
  }
1508
1539
 
1509
- this.OnMouseDown=function(x,y,e) //Type: 2=行 3=表头
1540
+ this.OnMouseDown=function(x,y,e) //Type: 1=行
1510
1541
  {
1511
1542
  if (!this.Data) return null;
1512
1543
 
@@ -1517,11 +1548,67 @@ function ChartDealList()
1517
1548
  else uiElement={Left:null, Top:null};
1518
1549
 
1519
1550
  var row=this.PtInBody(x,y);
1551
+ if (row)
1552
+ {
1553
+ var bRedraw=true;
1554
+ var index=row.DataIndex;
1555
+ var id=row.Item.Guid
1556
+ if (this.SelectedData.Index==index && this.SelectedData.Guid==id) bRedraw=false;
1557
+
1558
+ this.SelectedData.Index=index;
1559
+ this.SelectedData.Guid=id;
1560
+
1561
+ var eventID=JSCHART_EVENT_ID.ON_CLICK_DEAL_ROW;
1562
+ if (e.button==2) eventID=JSCHART_EVENT_ID.ON_RCLICK_DEAL_ROW;
1563
+
1564
+ this.SendClickEvent(eventID, { Data:row, X:x, Y:y, e:e, Inside:insidePoint, UIElement:uiElement });
1565
+
1566
+ return { Type:row.Type, Redraw:bRedraw, Row:row };
1567
+ }
1568
+
1569
+ return null;
1570
+ }
1571
+
1572
+ this.OnDblClick=function(x,y,e)
1573
+ {
1574
+ if (!this.Data) return false;
1575
+
1576
+ var row=this.PtInBody(x,y);
1577
+ if (row)
1578
+ {
1579
+ this.SendClickEvent(JSCHART_EVENT_ID.ON_DBCLICK_DEAL_ROW, { Data:row, X:x, Y:y });
1580
+ return true;
1581
+ }
1582
+
1583
+ return false;
1520
1584
  }
1521
1585
 
1522
1586
  this.PtInBody=function(x,y)
1523
1587
  {
1524
1588
  if (!this.Data) return null;
1525
1589
  if (!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
1590
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryCellRect)) return null;
1591
+
1592
+ for(var i=0;i<this.AryCellRect.length;++i)
1593
+ {
1594
+ var item=this.AryCellRect[i];
1595
+ var rtRow=item.Rect;
1596
+ if (x>=rtRow.Left && x<=rtRow.Right && y>=rtRow.Top && y<=rtRow.Bottom)
1597
+ {
1598
+ var data={ Rect:rtRow, DataIndex:item.DataIndex, Item:this.Data.Data[item.DataIndex], Type:item.Type };
1599
+ return data;
1600
+ }
1601
+ }
1602
+
1603
+ return null;
1604
+ }
1605
+
1606
+ this.SendClickEvent=function(id, data)
1607
+ {
1608
+ var event=this.GetEventCallback(id);
1609
+ if (event && event.Callback)
1610
+ {
1611
+ event.Callback(event,data,this);
1612
+ }
1526
1613
  }
1527
1614
  }