hqchart 1.1.13773 → 1.1.13778

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.
@@ -6749,6 +6749,8 @@ var JSCHART_MENU_ID=
6749
6749
  CMD_SHOW_CORSS_LINE_ID:39, //显示十字光标线
6750
6750
  CMD_ENABLE_POP_MINUTE_CHART_ID:40, //双击弹分时图
6751
6751
 
6752
+ CMD_CHANGE_INFO_POSITION_ID:41, //修改信息地雷位置
6753
+
6752
6754
 
6753
6755
  CMD_REPORT_CHANGE_BLOCK_ID:60, //报价列表 切换板块ID
6754
6756
  CMD_REPORT_COLUMN_SORT_ID:61, //报价列表 表头排序 Arg[列序号, 排序方向]
@@ -13576,6 +13578,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13576
13578
  }
13577
13579
  }
13578
13580
  break;
13581
+ case JSCHART_MENU_ID.CMD_CHANGE_INFO_POSITION_ID:
13582
+ if (param==null) return false;
13583
+ var klineChart=this.ChartPaint[0];
13584
+ if (!klineChart) return false;
13585
+ klineChart.InfoPosition=param;
13586
+ this.Draw();
13587
+ break;
13579
13588
  }
13580
13589
  }
13581
13590
 
@@ -16209,7 +16218,66 @@ function AverageWidthFrame()
16209
16218
 
16210
16219
  if (item.Message[0] && borderLeft>=10)
16211
16220
  {
16221
+ if (item.Font != null) this.Canvas.font = item.Font;
16222
+ var textInfo=this.GetCustomItemTextInfo(item,true,pixelTatio);
16223
+ var textWidth=textInfo.MaxWidth;
16224
+ var itemLeft=left-textWidth;
16225
+ var fontHeight=this.GetFontHeight();
16226
+ var textHeight=fontHeight>defaultTextHeight? fontHeight:defaultTextHeight;
16227
+ this.Canvas.textAlign = "right";
16228
+ this.Canvas.textBaseline = "middle";
16229
+
16230
+ var yText=null;
16231
+ if (position==1)
16232
+ {
16233
+ yText=border.TopEx;
16234
+ if (IFrameSplitOperator.IsNumber(outRange.TopYOffset)) yText+=outRange.TopYOffset;
16235
+ }
16236
+ else if (position==2)
16237
+ {
16238
+ yText=border.BottomEx+textHeight;
16239
+ if (IFrameSplitOperator.IsNumber(outRange.BottomYOffset)) yText+=outRange.BottomYOffset;
16240
+ }
16212
16241
 
16242
+ for(var i=0;i<textInfo.Text.length;++i)
16243
+ {
16244
+ var itemText=textInfo.Text[i];
16245
+ var rtBG={ Left:itemLeft, Width:itemText.Width, Bottom:yText, Height:textHeight };
16246
+ rtBG.Top=rtBG.Bottom-rtBG.Height;
16247
+ rtBG.Right=rtBG.Left+rtBG.Width;
16248
+
16249
+ if (item.ExtendLine && item.ExtendLine[0]) //右侧延长线
16250
+ {
16251
+ var exLine=item.ExtendLine[0];
16252
+ if (IFrameSplitOperator.IsNumber(exLine.Width))
16253
+ {
16254
+ var yLine=rtBG.Bottom;
16255
+ if (position==2) yLine=rtBG.Top;
16256
+ var lineType=item.LineType;
16257
+ if (IFrameSplitOperator.IsNumber(outRange.ExtendLine.Type)) lineType=outRange.ExtendLine.Type;
16258
+ if (i==0) this.DrawLine(left,left-exLine.Width,yLine,item.LineColor,lineType,item);
16259
+
16260
+ rtBG.Left-=exLine.Width;
16261
+ rtBG.Right-=exLine.Width;
16262
+ }
16263
+
16264
+ this.Canvas.fillStyle=outRange.BGColor;
16265
+ this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
16266
+ if (outRange.Border && outRange.Border.Color)
16267
+ {
16268
+ if (IFrameSplitOperator.IsNonEmptyArray(outRange.Border.LineDash))
16269
+ this.Canvas.setLineDash(outRange.Border.LineDash); //虚线
16270
+
16271
+ this.Canvas.strokeStyle = outRange.Border.Color;
16272
+ this.Canvas.strokeRect(ToFixedPoint(rtBG.Left), ToFixedPoint(rtBG.Top), ToFixedRect(rtBG.Width), ToFixedRect(rtBG.Height));
16273
+ }
16274
+
16275
+ this.Canvas.fillStyle = outRange.TextColor;
16276
+ this.Canvas.fillText(itemText.Text, rtBG.Right - 1*pixelTatio, rtBG.Top+rtBG.Height/2+1*pixelTatio);
16277
+
16278
+ yText+=textHeight+1;
16279
+ }
16280
+ }
16213
16281
  }
16214
16282
  else if (item.Message[1] && borderRight>=10)
16215
16283
  {
@@ -16420,6 +16488,18 @@ function AverageWidthFrame()
16420
16488
  var textLeft=left-(textWidth-itemText.Width);
16421
16489
  }
16422
16490
 
16491
+
16492
+ if (item.ExtendLine && item.ExtendLine[0]) //右侧延长线
16493
+ {
16494
+ var exLine=item.ExtendLine[0];
16495
+ if (IFrameSplitOperator.IsNumber(exLine.Width))
16496
+ {
16497
+ if (i==0) this.DrawLine(left,left-exLine.Width,y,item.LineColor,item.LineType,item);
16498
+ textLeft-=exLine.Width;
16499
+ rectLeft-=exLine.Width
16500
+ }
16501
+ }
16502
+
16423
16503
  if (emptyBGColor)
16424
16504
  {
16425
16505
  this.Canvas.fillStyle=emptyBGColor;
@@ -80695,6 +80775,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
80695
80775
  var klineType=klineChart.DrawType;
80696
80776
  var bThinAKBar=klineChart.IsThinAKBar;
80697
80777
  var priceGap=klineChart.PriceGap; //缺口配置信息
80778
+ var infoPosition=klineChart.InfoPosition;
80698
80779
  var coordinateType=null, yCoordinateType=null; //坐标类型
80699
80780
  var mainFrame=null;
80700
80781
  if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
@@ -80804,6 +80885,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
80804
80885
  { Name:"大宗交易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["大宗交易", !aryKLineInfo.includes("BlockTrading")]}, Checked:aryKLineInfo.includes("BlockTrading") },
80805
80886
  { Name:"龙虎榜", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["龙虎榜", !aryKLineInfo.includes("TradeDetail")]}, Checked:aryKLineInfo.includes("TradeDetail") },
80806
80887
  { Name:"互动易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["互动易", !aryKLineInfo.includes("InvestorInfo")]}, Checked:aryKLineInfo.includes("InvestorInfo") },
80888
+ { Name:JSPopMenu.SEPARATOR_LINE_NAME },
80889
+ {
80890
+ Name:"显示位置",
80891
+ SubMenu:
80892
+ [
80893
+ { Name:"底部", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INFO_POSITION_ID, Args:[1]}, Checked:infoPosition===1 },
80894
+ { Name:"K线上", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INFO_POSITION_ID, Args:[0]}, Checked:infoPosition===0 },
80895
+ ]
80896
+ },
80897
+
80807
80898
  ]
80808
80899
  },
80809
80900
  {
@@ -92451,56 +92542,29 @@ function PforecastInfo()
92451
92542
 
92452
92543
  if (this.NetworkFilter(hqChart, obj)) return; //已被上层替换,不调用默认的网络请求
92453
92544
 
92454
- //请求数据
92455
- JSNetwork.HttpRequest({
92456
- url: url,
92457
- data:
92458
- {
92459
- "field": ["pforecast.type","pforecast.reportdate","fweek"],
92460
- "condition":
92461
- [
92462
- {"item":["pforecast.reportdate","int32","gte",this.StartDate]}
92463
- ],
92464
- "symbol": [param.HQChart.Symbol],
92465
- "start":0,
92466
- "end":this.MaxRequestDataCount,
92467
- },
92468
- type:"post",
92469
- dataType: "json",
92470
- async:true,
92471
- success: function (recvData)
92472
- {
92473
- self.RecvData(recvData,param);
92474
- }
92475
- });
92476
-
92545
+ console.warn("[PforecastInfo::RequestData] NetworkFilter error.");
92477
92546
  return true;
92478
92547
  }
92479
92548
 
92480
92549
  this.RecvData=function(recvData,param)
92481
92550
  {
92482
- if (recvData.stock.length!=1) return;
92483
- if (recvData.stock[0].stockday.length<=0) return;
92551
+ if (!IFrameSplitOperator.IsNonEmptyArray(recvData.report)) return;
92484
92552
 
92485
- for(var i in recvData.stock[0].stockday)
92553
+ for(var i=0; i<recvData.report.length; ++i)
92486
92554
  {
92487
- var item=recvData.stock[0].stockday[i];
92488
- if (item.pforecast.length>0)
92555
+ var item=recvData.report[i];
92556
+ var infoData=new KLineInfoData();
92557
+ infoData.Date= item.date;
92558
+ infoData.Title=item.title;
92559
+ infoData.InfoType=KLINE_INFO_TYPE.PFORECAST;
92560
+ infoData.ExtendData={ Type:item.title, ReportDate:item.reportdate}
92561
+ if(item.fweek) //未来周涨幅
92489
92562
  {
92490
- var dataItem=item.pforecast[0];
92491
- var infoData=new KLineInfoData();
92492
- infoData.Date= item.date;
92493
- infoData.Title=dataItem.type;
92494
- infoData.InfoType=KLINE_INFO_TYPE.PFORECAST;
92495
- infoData.ExtendData={ Type:dataItem.type, ReportDate:dataItem.reportdate}
92496
- if(item.fweek) //未来周涨幅
92497
- {
92498
- infoData.ExtendData.FWeek={};
92499
- if (item.fweek.week1!=null) infoData.ExtendData.FWeek.Week1=item.fweek.week1;
92500
- if (item.fweek.week4!=null) infoData.ExtendData.FWeek.Week4=item.fweek.week4;
92501
- }
92502
- this.Data.push(infoData);
92563
+ infoData.ExtendData.FWeek={};
92564
+ if (item.fweek.week1!=null) infoData.ExtendData.FWeek.Week1=item.fweek.week1;
92565
+ if (item.fweek.week4!=null) infoData.ExtendData.FWeek.Week4=item.fweek.week4;
92503
92566
  }
92567
+ this.Data.push(infoData);
92504
92568
  }
92505
92569
 
92506
92570
  param.HQChart.UpdataChartInfo();
@@ -92532,34 +92596,15 @@ function ResearchInfo()
92532
92596
 
92533
92597
  if (this.NetworkFilter(hqChart, obj)) return; //已被上层替换,不调用默认的网络请求
92534
92598
 
92535
- //请求数据
92536
- JSNetwork.HttpRequest({
92537
- url: url,
92538
- data:
92539
- {
92540
- "filed": ["releasedate","researchdate","level","symbol","id",'type'],
92541
- "querydate":{"StartDate":this.StartDate,"EndDate":this.GetToday()},
92542
- "symbol": [param.HQChart.Symbol],
92543
- "start":0,
92544
- "end":this.MaxRequestDataCount,
92545
- },
92546
- type:"post",
92547
- dataType: "json",
92548
- async:true,
92549
- success: function (recvData)
92550
- {
92551
- self.RecvData(recvData,param);
92552
- }
92553
- });
92554
-
92599
+ console.warn("[ResearchInfo::RequestData] NetworkFilter error.");
92555
92600
  return true;
92556
92601
  }
92557
92602
 
92558
92603
  this.RecvData=function(recvData,param)
92559
92604
  {
92560
- if (recvData.list.length<=0) return;
92605
+ if (!IFrameSplitOperator.IsNonEmptyArray(recvData.list)) return;
92561
92606
 
92562
- for(var i in recvData.list)
92607
+ for(var i=0;i<recvData.list.length; ++i)
92563
92608
  {
92564
92609
  var item=recvData.list[i];
92565
92610
  var infoData=new KLineInfoData();
@@ -93453,203 +93498,6 @@ function ChangeIndexDialog(divElement)
93453
93498
  }
93454
93499
  }
93455
93500
 
93456
- //信息地理tooltip
93457
- function KLineInfoTooltip(divElement)
93458
- {
93459
- this.newMethod=IDivDialog; //派生
93460
- this.newMethod(divElement);
93461
- delete this.newMethod;
93462
-
93463
- this.UpColor=g_JSChartResource.UpTextColor;
93464
- this.DownColor=g_JSChartResource.DownTextColor;
93465
- this.UnchagneColor=g_JSChartResource.UnchagneTextColor;
93466
-
93467
- this.Create=function()
93468
- {
93469
- this.ID=Guid();
93470
-
93471
- var div=document.createElement('div');
93472
- div.className='jchart-klineinfo-tooltip';
93473
- div.id=this.ID;
93474
- div.innerHTML="<div class='title-length'></div>";
93475
- this.DivElement.appendChild(div);
93476
- }
93477
-
93478
-
93479
- this.BindInfoList=function(infoType,infoList)
93480
- {
93481
- var strBox="<div class='total-list'>共"+infoList.length+"条</div>";
93482
- var strText=[];
93483
- for(var i in infoList)
93484
- {
93485
- var item=infoList[i];
93486
- var strOld=item.Date;
93487
- if(infoType==KLINE_INFO_TYPE.PFORECAST)
93488
- {
93489
- var reportDate=item.ExtendData.ReportDate;
93490
- var year=parseInt(reportDate/10000); //年份
93491
- var day=reportDate%10000; //比较 这个去掉年份的日期
93492
- var reportType;
93493
- if(day == 1231){
93494
- reportType = "年报"
93495
- }else if(day == 331){
93496
- reportType = "一季度报"
93497
- }else if(day == 630){
93498
- reportType = "半年度报"
93499
- }else if(day == 930){
93500
- reportType = "三季度报"
93501
- }
93502
-
93503
- var weekData="";
93504
- if (item.ExtendData.FWeek)
93505
- {
93506
- if (item.ExtendData.FWeek.Week1!=null) weekData+="一周后涨幅:<i class='increase' style='color:"+this.GetColor(item.ExtendData.FWeek.Week1.toFixed(2))+"'>"+ item.ExtendData.FWeek.Week1.toFixed(2)+"%</i>";
93507
- if (item.ExtendData.FWeek.Week4!=null) weekData+="&nbsp;四周后涨幅:<i class='increase' style='color:"+this.GetColor(item.ExtendData.FWeek.Week4.toFixed(2))+"'>"+ item.ExtendData.FWeek.Week4.toFixed(2)+"%</i>";
93508
- if (weekData.length>0) weekData="<br/>&nbsp;&nbsp;<i class='prorecast-week'>"+weekData+"</i>";
93509
- }
93510
- var strDate=item.Date.toString();
93511
- var strNew=strDate.substring(0,4)+"-"+strDate.substring(4,6)+"-"+strDate.substring(6,8); //转换时间格式
93512
- strText+="<span>"+strNew+"&nbsp;&nbsp;"+year+reportType+item.Title+"&nbsp;"+weekData+"</span>";
93513
-
93514
- }
93515
- else if (infoType==KLINE_INFO_TYPE.RESEARCH) //调研单独处理
93516
- {
93517
- var levels=item.ExtendData.Level;
93518
- var recPerson=[];
93519
- if(levels.length==0){
93520
- recPerson = "<i>无</i>"
93521
- }else{
93522
- for(var j in levels)
93523
- {
93524
- if(levels[j]==0){
93525
- recPerson+="<i style='color:#00a0e9'>证券代表&nbsp;&nbsp;&nbsp;</i>";
93526
- }else if(levels[j]==1){
93527
- recPerson+="<i>董秘&nbsp;&nbsp;&nbsp;</i>";
93528
- }else if(levels[j]==2){
93529
- recPerson+="<i style='color:#00a0e9'>总经理&nbsp;&nbsp;&nbsp;</i>";
93530
- }else if(levels[j]==3){
93531
- recPerson+="<i style='color:#00a0e9'>董事长&nbsp;&nbsp;&nbsp;</i>";
93532
- }
93533
- }
93534
- }
93535
- var strDate=item.Date.toString();
93536
- var strNew=strDate.substring(0,4)+"-"+strDate.substring(4,6)+"-"+strDate.substring(6,8); //转换时间格式
93537
- strText+="<span>"+strNew+"&nbsp;&nbsp;&nbsp;接待:&nbsp;&nbsp;&nbsp;"+recPerson+"</span>";
93538
- }else if(infoType==KLINE_INFO_TYPE.BLOCKTRADING)
93539
- {
93540
- var showPriceInfo = item.ExtendData;
93541
- var strDate=item.Date.toString();
93542
- var strNew=strDate.substring(0,4)+"-"+strDate.substring(4,6)+"-"+strDate.substring(6,8); //转换时间格式
93543
- strText+="<span><i class='date-tipbox'>"+strNew+"</i>&nbsp;&nbsp;<i class='tipBoxTitle'>成交价:&nbsp;"+showPriceInfo.Price.toFixed(2)+"</i><i class='tipBoxTitle'>收盘价:&nbsp;"+showPriceInfo.ClosePrice.toFixed(2)+
93544
- "</i><br/><i class='rate-discount tipBoxTitle'>溢折价率:&nbsp;<strong style='color:"+ this.GetColor(showPriceInfo.Premium.toFixed(2))+"'>"+
93545
- showPriceInfo.Premium.toFixed(2)+"%</strong></i><i class='tipBoxTitle'>成交量(万股):&nbsp;"+showPriceInfo.Vol.toFixed(2)+"</i></span>";
93546
- }
93547
- else if (infoType==KLINE_INFO_TYPE.TRADEDETAIL) //龙虎榜
93548
- {
93549
- /*var detail=[
93550
- "日价格涨幅偏离值达到9.89%",
93551
- "日价格涨幅偏离值达格涨幅偏离值达格涨幅偏离值达到9.89%"
93552
- ]*/
93553
- var detail=item.ExtendData.Detail;
93554
- //格式:日期 上榜原因: detail[0].TypeExplain
93555
- // detail[1].TypeExplain
93556
- // 一周后涨幅: xx 四周后涨幅: xx
93557
- var str=strOld.toString();
93558
- var strNew=str.substring(0,4)+"-"+str.substring(4,6)+"-"+str.substring(6,8); //转换时间格式
93559
- var reasons = [];
93560
- for(var i in detail){
93561
- reasons += "<i>"+detail[i].TypeExplain+"</i><br/>"
93562
- // reasons += detail[i] + "<br/>"
93563
- }
93564
-
93565
- strText = "<span><i class='trade-time'>"+strNew+"&nbsp;&nbsp;&nbsp;上榜原因:&nbsp;&nbsp;</i><i class='reason-list'>"+reasons+"</i><br/><i class='trade-detall'>一周后涨幅:&nbsp;<strong style='color:"+
93566
- this.GetColor(item.ExtendData.FWeek.Week1.toFixed(2))+"'>"+ item.ExtendData.FWeek.Week1.toFixed(2)+
93567
- "%</strong>&nbsp;&nbsp;&nbsp;四周后涨幅:&nbsp;<strong style='color:"+this.GetColor(item.ExtendData.FWeek.Week4.toFixed(2))+";'>"+
93568
- item.ExtendData.FWeek.Week4.toFixed(2)+"%</strong></i></span>";
93569
- }
93570
- else
93571
- {
93572
- var str=strOld.toString();
93573
- var strNew=str.substring(0,4)+"-"+str.substring(4,6)+"-"+str.substring(6,8); //转换时间格式
93574
- strText+="<span>"+strNew+"&nbsp;&nbsp;&nbsp;"+item.Title+"</span>";
93575
- }
93576
- }
93577
- var titleInnerBox = $(".title-length").html(strText);
93578
-
93579
- $("#"+this.ID).html(titleInnerBox);
93580
-
93581
- //当信息超过8条时,添加“共XX条”统计总数
93582
- if(infoList.length > 8){
93583
- $("#"+this.ID).append(strBox);
93584
- }
93585
- }
93586
-
93587
-
93588
- this.GetColor=function(price)
93589
- {
93590
- if(price>0) return this.UpColor;
93591
- else if (price<0) return this.DownColor;
93592
- else return this.UnchagneColor;
93593
- }
93594
-
93595
- //显示窗口,改函数仅为KLineInfoTooltip使用
93596
- this.Show=function(left,top,width,height,tooltip,times)
93597
- {
93598
- //显示位置
93599
- $("#"+this.ID).css({'display':'block','top':top+'px', "left":left+'px', "width":width+'px', "height":height+'px' });
93600
-
93601
- function toolHide() {
93602
- tooltip.Hide();
93603
- }
93604
-
93605
- if (this.TimeOut!=null)
93606
- clearTimeout(this.TimeOut); //清空上一次的定时器,防止定时器不停的被调用
93607
-
93608
- //设置窗口定时隐藏
93609
- this.TimeOut=setTimeout(toolHide,times);
93610
-
93611
- }
93612
-
93613
-
93614
- this.DoModal=function(event)
93615
- {
93616
- var chart=event.data.Chart;
93617
- var infoType=event.data.InfoType; //信息地雷类型
93618
- var infoList=event.data.InfoList; //信息数据列表
93619
- var tooltip=chart.KLineInfoTooltip;
93620
-
93621
- if(!tooltip) return;
93622
- if (tooltip.ID==null) tooltip.Create(); //第1次 需要创建div
93623
-
93624
- tooltip.BindInfoList(infoType,infoList);
93625
-
93626
- var left=event.pageX;
93627
- var top=event.pageY+10;
93628
- var widthTool=380;
93629
- var heightTool=$("#"+tooltip.ID).height();
93630
-
93631
- if((left + widthTool) > chart.UIElement.getBoundingClientRect().width){
93632
- left = left - widthTool;
93633
- }
93634
- /*if(top+heightTool>chart.UIElement.getBoundingClientRect().height){
93635
- top=top-heightTool-45;
93636
- }*/
93637
-
93638
- tooltip.Show(left,top,widthTool,"auto",tooltip,8000);
93639
- }
93640
-
93641
- //鼠标离开
93642
- this.Leave=function(event)
93643
- {
93644
- var chart=event.data.Chart;
93645
- var tooltip=chart.KLineInfoTooltip;
93646
-
93647
- if(!tooltip || tooltip.ID==null) return;
93648
-
93649
- tooltip.Hide();
93650
- }
93651
- }
93652
-
93653
93501
  function MinuteSelectRectDialog(divElement)
93654
93502
  {
93655
93503
  this.newMethod=IDivDialog; //派生
@@ -143387,7 +143235,7 @@ function HQChartScriptWorker()
143387
143235
 
143388
143236
 
143389
143237
 
143390
- var HQCHART_VERSION="1.1.13770";
143238
+ var HQCHART_VERSION="1.1.13777";
143391
143239
 
143392
143240
  function PrintHQChartVersion()
143393
143241
  {