hqchart 1.1.14473 → 1.1.14482

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.14473",
3
+ "version": "1.1.14482",
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,105 @@ 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
+ };
58355
+
58356
+ var aryDate=[];
58357
+ var aryTime=[];
58358
+ for(var i=100;i<kData.Data.length-100;++i)
58359
+ {
58360
+ var kItem=kData.Data[i];
58361
+ var newItem=
58362
+ {
58363
+ YClose:kItem.YClose,
58364
+ Open:kItem.Open,
58365
+ High:kItem.High,
58366
+ Low:kItem.Low,
58367
+ Close:kItem.Close,
58368
+ Date:kItem.Date,
58369
+ Time:kItem.Time,
58370
+ Vol:kItem.Vol,
58371
+ };
58372
+
58373
+ klineData.Draw.DrawData.push(newItem);
58374
+
58375
+ aryDate.push(kItem.Date);
58376
+ aryTime.push(kItem.Time)
58377
+ }
58378
+
58379
+ var apiData=
58380
+ {
58381
+ code:0,
58382
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
58383
+ outdata: { date:aryDate, time:aryTime, outvar:[klineData] }
58384
+ };
58385
+
58386
+ console.log('[HQData.APIIndex_DRAWKLINE] apiData ', apiData);
58387
+ callback(apiData);
58388
+ }
58389
+
58390
+
@@ -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,15 @@ 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
+
21328
21339
  this.SetChartIndexName(chart);
21329
21340
  hqChart.ChartPaint.push(chart);
21330
21341
  }
@@ -22013,12 +22024,10 @@ function ScriptIndex(name,script,args,option)
22013
22024
  this.SetChartIndexName(chart);
22014
22025
  hqChart.ChartPaint.push(chart);
22015
22026
 
22016
- var titleIndex=windowIndex+1;
22017
- if (varItem.IsShowTitle===false)
22018
- {
22019
-
22020
- }
22021
- else
22027
+ var titleIndex=windowIndex+1;
22028
+ var bShowTitle=true;
22029
+ if (varItem.IsShowTitle===false) bShowTitle=false;
22030
+ if (bShowTitle)
22022
22031
  {
22023
22032
  var titleData=new DynamicTitleData(chart.Data,chart.Name, null);
22024
22033
  titleData.DataType="ChartMultiLine";
@@ -22044,10 +22053,15 @@ function ScriptIndex(name,script,args,option)
22044
22053
  hqChart.ChartPaint.push(chart);
22045
22054
 
22046
22055
  var titleIndex=windowIndex+1;
22047
- var titleData=new DynamicTitleData(chart.Data,chart.Name, null);
22048
- titleData.DataType="ChartMultiPoint";
22049
- titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
22050
- hqChart.TitlePaint[titleIndex].Data[i]=titleData;
22056
+ var bShowTitle=true;
22057
+ if (varItem.IsShowTitle===false) bShowTitle=false;
22058
+ if (bShowTitle)
22059
+ {
22060
+ var titleData=new DynamicTitleData(chart.Data,chart.Name, null);
22061
+ titleData.DataType="ChartMultiPoint";
22062
+ titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
22063
+ hqChart.TitlePaint[titleIndex].Data[i]=titleData;
22064
+ }
22051
22065
  }
22052
22066
 
22053
22067
  this.CreateMultiBar=function(hqChart,windowIndex,varItem,id)
@@ -22066,10 +22080,17 @@ function ScriptIndex(name,script,args,option)
22066
22080
  hqChart.ChartPaint.push(chart);
22067
22081
 
22068
22082
  var titleIndex=windowIndex+1;
22069
- var titleData=new DynamicTitleData(chart.Data,varItem.Name,null);
22070
- titleData.DataType="ChartMultiBar";
22071
- titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
22072
- hqChart.TitlePaint[titleIndex].Data[id]=titleData;
22083
+
22084
+ var bShowTitle=true;
22085
+ if (varItem.IsShowTitle===false) bShowTitle=false;
22086
+ if (bShowTitle)
22087
+ {
22088
+ var titleData=new DynamicTitleData(chart.Data,varItem.Name,null);
22089
+ titleData.DataType="ChartMultiBar";
22090
+ titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
22091
+ hqChart.TitlePaint[titleIndex].Data[id]=titleData;
22092
+ }
22093
+
22073
22094
  }
22074
22095
 
22075
22096
  this.CreateMultiText=function(hqChart,windowIndex,varItem,i)
@@ -23783,11 +23804,16 @@ function OverlayScriptIndex(name,script,args,option)
23783
23804
  chart.BuildCacheData();
23784
23805
 
23785
23806
  var titleIndex=windowIndex+1;
23786
- var titlePaint=hqChart.TitlePaint[titleIndex];
23787
- var titleData=new DynamicTitleData(chart.Data,varItem.Name,null);
23788
- titleData.DataType="ChartMultiPoint";
23789
- titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
23790
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;
23807
+ var bShowTitle=true;
23808
+ if (varItem.IsShowTitle===false) bShowTitle=false;
23809
+ if (bShowTitle)
23810
+ {
23811
+ var titlePaint=hqChart.TitlePaint[titleIndex];
23812
+ var titleData=new DynamicTitleData(chart.Data,varItem.Name,null);
23813
+ titleData.DataType="ChartMultiPoint";
23814
+ titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
23815
+ titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;
23816
+ }
23791
23817
 
23792
23818
  this.SetChartIndexName(chart);
23793
23819
 
@@ -23833,12 +23859,16 @@ function OverlayScriptIndex(name,script,args,option)
23833
23859
  chart.BuildCacheData();
23834
23860
 
23835
23861
  var titleIndex=windowIndex+1;
23836
- var titlePaint=hqChart.TitlePaint[titleIndex];
23837
- var titleData=new DynamicTitleData(chart.Data,varItem.Name,null);
23838
- titleData.DataType="ChartMultiBar";
23839
- titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
23840
-
23841
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;
23862
+ var bShowTitle=true;
23863
+ if (varItem.IsShowTitle===false) bShowTitle=false;
23864
+ if (bShowTitle)
23865
+ {
23866
+ var titlePaint=hqChart.TitlePaint[titleIndex];
23867
+ var titleData=new DynamicTitleData(chart.Data,varItem.Name,null);
23868
+ titleData.DataType="ChartMultiBar";
23869
+ titleData.GetItemCallback=(kItem)=>{ return chart.GetItem(kItem); }
23870
+ titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;
23871
+ }
23842
23872
 
23843
23873
  this.SetChartIndexName(chart);
23844
23874
  frame.ChartPaint.push(chart);
@@ -25265,6 +25295,17 @@ function APIScriptIndex(name,script,args,option, isOverlay)
25265
25295
  outVarItem.Draw=drawItem;
25266
25296
  result.push(outVarItem);
25267
25297
  }
25298
+ else if (draw.DrawType==SCRIPT_CHART_NAME.DRAW_KLINE)
25299
+ {
25300
+ drawItem.Name=draw.Name;
25301
+ drawItem.Type=draw.Type;
25302
+ drawItem.DrawType=draw.DrawType;
25303
+
25304
+ drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);
25305
+ drawItem.Config=draw.Config;
25306
+ outVarItem.Draw=drawItem;
25307
+ result.push(outVarItem);
25308
+ }
25268
25309
  else
25269
25310
  {
25270
25311
  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,10 +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); //上下滚动消息
332
+
333
+ this.UIElement.onmousedown=(e)=> { this.UIOnMouseDown(e); }
334
+ this.UIElement.ondblclick=(e)=>{ this.UIOnDblClick(e); }
335
+ this.UIElement.oncontextmenu=(e)=> { this.UIOnContextMenu(e); }
318
336
  }
319
337
 
320
338
  this.Draw=function()
@@ -688,6 +706,40 @@ function JSDealChartContainer(uielement)
688
706
  else e.returnValue = false;
689
707
  }
690
708
 
709
+ this.UIOnMouseDown=function(e)
710
+ {
711
+ var pixelTatio = GetDevicePixelRatio();
712
+ var x = (e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;
713
+ var y = (e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;
714
+
715
+
716
+ var chart=this.ChartPaint[0];
717
+ if (!chart) return;
718
+
719
+ var clickData=chart.OnMouseDown(x,y,e);
720
+ if (!clickData) return;
721
+
722
+ if ((clickData.Type==1) && (e.button==0 || e.button==2)) //点击行
723
+ {
724
+ if (clickData.Redraw==true) this.Draw();
725
+ }
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();
741
+ }
742
+
691
743
  this.GotoNextPage=function()
692
744
  {
693
745
  if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return false;
@@ -781,7 +833,7 @@ JSDealChartContainer.JsonDataToDealData=function(data)
781
833
  {
782
834
  var item=data.detail[i];
783
835
 
784
- var dealItem={ Time:item[0], Price:item[1], Vol:item[2], BS:item[4], Amount:item[3] };
836
+ var dealItem={ Time:item[0], Price:item[1], Vol:item[2], BS:item[4], Amount:item[3], Guid:Guid() };
785
837
  dealItem.Source=item;
786
838
 
787
839
  if (item[5]) dealItem.StrTime=item[5];
@@ -907,6 +959,7 @@ function ChartDealList()
907
959
  this.IsSingleTable=false; //单表模式
908
960
  this.IsShowHeader=true; //是否显示表头
909
961
  this.ShowOrder=1; //0=顺序 1=倒序
962
+ this.SelectedData={ Index:null, Guid:null, Enable:false }; //{ Index:序号, Guid, Enable:是否启动 }
910
963
 
911
964
  this.SizeChange=true;
912
965
 
@@ -917,6 +970,8 @@ function ChartDealList()
917
970
 
918
971
  this.BorderColor=g_JSChartResource.DealList.BorderColor; //边框线
919
972
 
973
+ this.SelectedConfig={ BGColor:g_JSChartResource.DealList.Selected.BGColor };
974
+
920
975
  //表头配置
921
976
  this.HeaderFontConfig={ Size:g_JSChartResource.DealList.Header.Font.Size, Name:g_JSChartResource.DealList.Header.Font.Name };
922
977
  this.HeaderColor=g_JSChartResource.DealList.Header.Color;
@@ -956,6 +1011,7 @@ function ChartDealList()
956
1011
  ];
957
1012
 
958
1013
  this.RectClient={};
1014
+ this.AryCellRect=[]; //{ Rect:, Type: 1=单行 }
959
1015
 
960
1016
  this.ReloadResource=function(resource)
961
1017
  {
@@ -1056,6 +1112,7 @@ function ChartDealList()
1056
1112
 
1057
1113
  this.Draw=function()
1058
1114
  {
1115
+ this.AryCellRect=[];
1059
1116
  if (this.SizeChange) this.CalculateSize();
1060
1117
  else this.UpdateCacheData();
1061
1118
 
@@ -1211,6 +1268,7 @@ function ChartDealList()
1211
1268
  for(j=0;j<this.RowCount && index>=0;++j, --index)
1212
1269
  {
1213
1270
  var dataItem=this.Data.Data[index];
1271
+ this.DrawSelectedRow(dataItem, index, rtRow);
1214
1272
 
1215
1273
  this.DrawRow(dataItem, textLeft, textTop, index);
1216
1274
 
@@ -1228,8 +1286,15 @@ function ChartDealList()
1228
1286
  for(j=0;j<this.RowCount && index<dataCount;++j, ++index)
1229
1287
  {
1230
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;
1292
+
1293
+ this.DrawSelectedRow(dataItem, index, rtRow);
1231
1294
 
1232
1295
  this.DrawRow(dataItem, textLeft, textTop, index);
1296
+
1297
+ this.AryCellRect.push({ Rect:rtRow, Type:1, DataIndex:index });
1233
1298
 
1234
1299
  textTop+=this.RowHeight;
1235
1300
  }
@@ -1335,6 +1400,16 @@ function ChartDealList()
1335
1400
  }
1336
1401
  }
1337
1402
 
1403
+ this.DrawSelectedRow=function(data, index, rtRow)
1404
+ {
1405
+ if (!this.SelectedData) return;
1406
+ if (!this.SelectedData.Enable) return;
1407
+ if (!this.SelectedData.Guid || this.SelectedData.Guid!=data.Guid) return;
1408
+
1409
+ this.Canvas.fillStyle=this.SelectedConfig.BGColor;
1410
+ this.Canvas.fillRect(rtRow.Left,rtRow.Top, rtRow.Width, rtRow.Height);
1411
+ }
1412
+
1338
1413
  this.DrawItemText=function(text, textColor, textAlign, left, top, width)
1339
1414
  {
1340
1415
  var x=left;
@@ -1461,4 +1536,79 @@ function ChartDealList()
1461
1536
  {
1462
1537
  return GetFontHeight(this.Canvas, font, word);
1463
1538
  }
1539
+
1540
+ this.OnMouseDown=function(x,y,e) //Type: 1=行
1541
+ {
1542
+ if (!this.Data) return null;
1543
+
1544
+ var pixelTatio = GetDevicePixelRatio();
1545
+ var insidePoint={X:x/pixelTatio, Y:y/pixelTatio};
1546
+ var uiElement;
1547
+ if (this.UIElement) uiElement={Left:this.UIElement.getBoundingClientRect().left, Top:this.UIElement.getBoundingClientRect().top};
1548
+ else uiElement={Left:null, Top:null};
1549
+
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;
1584
+ }
1585
+
1586
+ this.PtInBody=function(x,y)
1587
+ {
1588
+ if (!this.Data) return null;
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
+ }
1613
+ }
1464
1614
  }